{"version":3,"file":"zyzgroup_core_web.umd.cjs","sources":["../../core-common/dist/zyzgroup_core_common.js","../../../node_modules/.pnpm/spark-md5@3.0.2/node_modules/spark-md5/spark-md5.js","../src/file.ts","../src/ajax.ts","../src/dom/style.ts","../src/dom/attribute.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/config.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Scheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/empty.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/args.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/of.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isDate.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/map.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createObject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/concat.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/fromEventPattern.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/timer.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/race.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/startWith.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/switchAll.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/tap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/windowToggle.js","../src/dom/createEventListener.ts","../src/image/image.ts","../src/image/image-gif.ts","../src/image/qrcode.ts","../src/math/Vector.ts","../src/canvas/CustomCanvasContext.ts","../src/canvas/YZCanvasContext.ts","../src/math/line/L.ts","../src/math/line/Arc.ts","../src/math/line/QuadraticBezier.ts","../src/math/line/CubicBezier.ts","../src/svg/line2c.ts","../src/svg/SVGUtil.ts","../src/math/line/PathD.ts","../src/animate/tween/Sequence.ts","../src/animate/tween/Easing.ts","../src/animate/tween/BezierEasing.ts","../src/animate/tween/Interpolation.ts","../src/animate/tween/Group.ts","../src/animate/tween/mainGroup.ts","../src/animate/tween/Tween.ts","../src/animate/tween/index.ts","../src/animate/Clock.ts","../src/animate/Timeline.ts","../src/math/Shape.ts","../src/math/shapes/Point3D.ts","../src/math/Matrix.ts","../src/image/bitmap.ts","../src/dom/dom.ts","../src/dom/DOMVideo.ts","../src/dom/DOMParse.ts","../src/dom/parseCSS.js","../src/dom/resize.ts","../src/dom/loadHammer.ts","../src/dom/elementEvents.ts","../src/dom/createElementEventBus.ts","../src/dom/dataset.ts","../src/dom/mutation.ts","../src/dom/intersection.ts","../src/dom/visible.ts","../src/createSessionStorage.ts","../src/dom/feRouteChange.ts","../src/dom/matchMedia.ts","../src/dom/safeArea.ts","../src/dom/coords.ts","../src/svg/SVGParse.ts","../src/components/vnode.ts","../src/components/component-core.ts","../../../node_modules/.pnpm/react@19.2.5/node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/.pnpm/react@19.2.5/node_modules/react/cjs/react.production.js","../../../node_modules/.pnpm/react@19.2.5/node_modules/react/cjs/react.development.js","../../../node_modules/.pnpm/react@19.2.5/node_modules/react/index.js","../../../node_modules/.pnpm/react@19.2.5/node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/.pnpm/react@19.2.5/node_modules/react/jsx-runtime.js","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/array.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/clamp.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/format-error-message.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/errors.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/global-config.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/is-numerical-string.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/is-object.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/is-zero-value-string.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/memo.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/noop.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/pipe.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/progress.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/subscription-manager.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/time-conversion.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/velocity-per-second.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/warn-once.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/wrap.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/easing/cubic-bezier.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/easing/modifiers/mirror.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/easing/modifiers/reverse.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/easing/back.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/easing/anticipate.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/easing/circ.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/easing/ease.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/easing/utils/get-easing-for-segment.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.mjs","../../../node_modules/.pnpm/motion-utils@12.39.0/node_modules/motion-utils/dist/es/easing/utils/map.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/context/LazyContext.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/frameloop/order.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/frameloop/render-step.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/frameloop/batcher.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/frameloop/frame.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/frameloop/sync-time.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/numbers/index.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/utils/sanitize.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/utils/float-regex.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/color/utils.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/color/rgba.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/color/hex.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/numbers/units.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/color/hsla.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/color/index.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/utils/color-regex.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/complex/index.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/mix/immediate.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/mix/number.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/mix/color.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/mix/visibility.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/mix/complex.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/mix/index.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/drivers/frame.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/generators/spring.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/generators/inertia.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/interpolate.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/WithPromise.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/dom/parse-transform.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/keys-transform.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/dom/is-css-var.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/dom/style-set.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/supports/flags.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/supports/memo.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/is-animatable.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/can-animate.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/GroupAnimation.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/GroupAnimationWithThen.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/index.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/default-transitions.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/resolve-variants.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/keys-position.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/setters.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/utils/is-motion-value.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/will-change/is.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/will-change/add-will-change.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/auto.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/test.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/dimensions.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/complex/filter.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/complex/mask.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/int.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/maps/number.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/maps/transform.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/maps/defaults.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/resolve-elements.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/is-html-element.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/frameloop/microtask.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/gestures/utils/setup.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/gestures/hover.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/gestures/press/utils/state.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/gestures/press/index.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/is-svg-element.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/resize/handle-element.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/resize/handle-window.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/resize/index.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/scroll/observe.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/transform.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/follow-value.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/types/utils/find.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/geometry/models.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/store.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/is-variant-label.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/variant-props.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/motion-values.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/VisualElement.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/Feature.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/geometry/conversion.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/utils/has-transform.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/utils/measure.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/html/utils/build-transform.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/html/utils/build-styles.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/html/utils/render.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/styles/scale-correction.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/object/ObjectVisualElement.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/svg/utils/path.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/svg/utils/render.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/get-variant-context.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/shallow-compare.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/geometry/copy.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/geometry/utils.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/utils/each-axis.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/styles/transform.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/animation/mix-values.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/animation/animate/single-value.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/events/add-dom-event.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/utils/flat-tree.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/utils/delay.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/shared/stack.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/node/state.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.mjs","../../../node_modules/.pnpm/motion-dom@12.41.0/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/html/use-props.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/utils/use-constant.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/html/use-html-visual-state.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/svg/use-svg-visual-state.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/features/load-features.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/utils/is-browser.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/index.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/features/animations.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/events/event-info.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/utils/get-context-window.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/utils/distance.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/gestures/drag/index.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/gestures/pan/index.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/features/drag.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/gestures/hover.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/gestures/focus.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/gestures/press.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/features/gestures.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/motion/features/layout.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/components/motion/create.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/components/motion/elements.mjs","../../../node_modules/.pnpm/@vue+shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../node_modules/.pnpm/@vue+reactivity@3.5.13/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../node_modules/.pnpm/@vue+runtime-core@3.5.13/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../node_modules/.pnpm/vue@3.5.13_typescript@5.8.3/node_modules/vue/dist/vue.runtime.esm-bundler.js","../src/hooks/core/stateStore.ts","../src/hooks/vue/useAppState.ts","../src/hooks/vue/useControllableState.ts","../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.5/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.5/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.5/node_modules/use-sync-external-store/shim/index.js","../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.5/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.5/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.5/node_modules/use-sync-external-store/shim/with-selector.js","../src/hooks/react/useAppState.tsx","../src/hooks/react/useControllableState.ts","../../../node_modules/.pnpm/immer@11.1.8/node_modules/immer/dist/immer.mjs","../src/hooks/react/useImmer.ts","../src/hooks/react/useDimensions.ts","../src/hooks/react/useSelection.ts","../src/hooks/react/useScrollProgress.ts","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/utils/use-motion-value-event.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/utils/can-use-native-timeline.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/utils/offset-to-range.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/utils/get-timeline.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/attach-animation.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/utils/is-element-tracking.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/attach-function.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/value/use-scroll.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/value/use-motion-value.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/value/use-combine-values.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/value/use-computed.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/value/use-transform.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/value/use-follow-value.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/value/use-spring.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/animate/resolve-subjects.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/sequence/utils/calc-repeat-duration.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/sequence/utils/normalize-times.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/sequence/create.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/utils/create-visual-element.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/animate/subject.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/animate/sequence.mjs","../../../node_modules/.pnpm/framer-motion@12.41.0_react-dom@19.2.7_react@19.2.5__react@19.2.5/node_modules/framer-motion/dist/es/animation/animate/index.mjs","../src/hooks/react/useScrollXOverflowMaskImage.ts","../src/hooks/react/useFollowPointer.tsx","../../../node_modules/.pnpm/d3-polygon@1.0.6/node_modules/d3-polygon/src/area.js","../../../node_modules/.pnpm/d3-polygon@1.0.6/node_modules/d3-polygon/src/length.js","../../../node_modules/.pnpm/svgpath@2.6.0/node_modules/svgpath/lib/path_parse.js","../../../node_modules/.pnpm/svgpath@2.6.0/node_modules/svgpath/lib/matrix.js","../../../node_modules/.pnpm/svgpath@2.6.0/node_modules/svgpath/lib/transform_parse.js","../../../node_modules/.pnpm/svgpath@2.6.0/node_modules/svgpath/lib/a2c.js","../../../node_modules/.pnpm/svgpath@2.6.0/node_modules/svgpath/lib/ellipse.js","../../../node_modules/.pnpm/svgpath@2.6.0/node_modules/svgpath/lib/svgpath.js","../../../node_modules/.pnpm/svgpath@2.6.0/node_modules/svgpath/index.js","../../../node_modules/.pnpm/svg-path-properties@0.2.2/node_modules/svg-path-properties/src/parse.js","../../../node_modules/.pnpm/svg-path-properties@0.2.2/node_modules/svg-path-properties/src/bezier.js","../../../node_modules/.pnpm/svg-path-properties@0.2.2/node_modules/svg-path-properties/src/a2c.js","../../../node_modules/.pnpm/svg-path-properties@0.2.2/node_modules/svg-path-properties/src/arc.js","../../../node_modules/.pnpm/svg-path-properties@0.2.2/node_modules/svg-path-properties/src/linear.js","../../../node_modules/.pnpm/svg-path-properties@0.2.2/node_modules/svg-path-properties/src/path-properties.js","../../../node_modules/.pnpm/flubber@0.4.2/node_modules/flubber/src/math.js","../../../node_modules/.pnpm/flubber@0.4.2/node_modules/flubber/src/errors.js","../../../node_modules/.pnpm/flubber@0.4.2/node_modules/flubber/src/svg.js","../../../node_modules/.pnpm/flubber@0.4.2/node_modules/flubber/src/add.js","../../../node_modules/.pnpm/flubber@0.4.2/node_modules/flubber/src/normalize.js","../../../node_modules/.pnpm/flubber@0.4.2/node_modules/flubber/src/rotate.js","../../../node_modules/.pnpm/flubber@0.4.2/node_modules/flubber/src/interpolate.js","../../../node_modules/.pnpm/earcut@2.2.4/node_modules/earcut/src/earcut.js","../../../node_modules/.pnpm/d3-array@1.2.4/node_modules/d3-array/src/ascending.js","../../../node_modules/.pnpm/d3-array@1.2.4/node_modules/d3-array/src/bisector.js","../../../node_modules/.pnpm/d3-array@1.2.4/node_modules/d3-array/src/bisect.js","../src/hooks/react/useFlubber.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/subscribable.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/focusManager.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/timeoutManager.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/utils.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/environmentManager.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/thenable.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/retryer.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/query.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/mutation.js","../../../node_modules/.pnpm/@tanstack+query-core@5.101.2/node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../node_modules/.pnpm/@tanstack+react-query@5.101.2_react@19.2.5/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../../../node_modules/.pnpm/@tanstack+react-query@5.101.2_react@19.2.5/node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js","../../../node_modules/.pnpm/@tanstack+react-query@5.101.2_react@19.2.5/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../../node_modules/.pnpm/@tanstack+react-query@5.101.2_react@19.2.5/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../../node_modules/.pnpm/@tanstack+react-query@5.101.2_react@19.2.5/node_modules/@tanstack/react-query/build/modern/suspense.js","../../../node_modules/.pnpm/@tanstack+react-query@5.101.2_react@19.2.5/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../../node_modules/.pnpm/@tanstack+react-query@5.101.2_react@19.2.5/node_modules/@tanstack/react-query/build/modern/useQuery.js","../../../node_modules/.pnpm/@tanstack+react-query@5.101.2_react@19.2.5/node_modules/@tanstack/react-query/build/modern/useMutation.js","../../../node_modules/.pnpm/@tanstack+query-devtools@5.101.2/node_modules/@tanstack/query-devtools/build/chunk/ZCXR2IAF.js","../../../node_modules/.pnpm/@tanstack+query-devtools@5.101.2/node_modules/@tanstack/query-devtools/build/index.js","../../../node_modules/.pnpm/@tanstack+react-query-devtools@5.101.2_@tanstack+react-query@5.101.2_react@19.2.5__react@19.2.5/node_modules/@tanstack/react-query-devtools/build/modern/ReactQueryDevtools.js","../../../node_modules/.pnpm/@tanstack+react-query-devtools@5.101.2_@tanstack+react-query@5.101.2_react@19.2.5__react@19.2.5/node_modules/@tanstack/react-query-devtools/build/modern/index.js","../src/hooks/react/createTanStackQueryReact.tsx","../src/hooks/useDraw/line/L.ts","../src/hooks/useDraw/line/Arc.ts","../src/hooks/useDraw/line/QuadraticBezier.ts","../src/hooks/useDraw/line/CubicBezier.ts","../src/hooks/useDraw/line/PathD.ts","../src/hooks/useDraw/canvas/CustomCanvasContext.ts","../src/hooks/useDraw/canvas/YZCanvasContext.ts","../src/hooks/useDraw/Shape.ts","../src/hooks/useDraw/DrawContext.ts","../src/hooks/useDraw/shapes/LineShape.ts","../src/hooks/useDraw/shapes/CurveShape.ts","../src/hooks/useDraw/shapes/PointsShape.ts","../src/hooks/useDraw/shapes/TreeShapeCombo.ts","../src/hooks/useDraw/shapes/BallShape.ts","../src/hooks/useDraw/shapes/ArrowShape.ts","../src/hooks/useDraw/shapes/RectShape.ts","../src/hooks/useDraw/shapes/HeartShape.ts","../src/hooks/useDraw/shapes/HeartVariantShape.ts","../src/hooks/useDraw/shapes/StarShape.ts","../src/hooks/useDraw/shapes/FoxShape.ts","../src/hooks/useDraw/shapes/RabbitShape.ts","../src/hooks/useDraw/shapes/CrossShape.ts","../src/hooks/useDraw/shapes/EllipseShape.ts","../src/hooks/useDraw/shapes/ShipShapeCombo.ts","../src/hooks/useDraw/shapes/SegmentShapeCombo.ts","../src/hooks/useDraw/shapes/SliderShapeCombo.ts","../src/hooks/useDraw/shapes/RingShape.ts","../src/hooks/useDraw/shapes/RingIndicatorShapeCombo.ts","../src/hooks/useDraw/shapes/TextShape.ts","../src/hooks/useDraw/shapes/ConfettiShapeCombo.ts","../src/hooks/useLocale/locales/zh-cn.ts","../src/hooks/useLocale/locales/en.ts","../src/hooks/useLocale/useLocale.ts","../src/components/react/shape/Ball.tsx","../src/components/react/shape/Cube.tsx","../src/components/react/RefreshBtn.tsx","../src/components/react/ProgressCircle.tsx","../src/components/react/ProgressTick.tsx","../src/components/react/ProgressCross.tsx","../src/components/react/Scroll.tsx","../src/components/react/ScrollYIndicator.tsx","../src/components/react/ScrollXContainer.tsx","../src/components/react/PathMorphing.tsx","../src/WebSocketClient.ts","../src/rem.js","../src/webrtc/index.ts","../src/webgl/index.ts","../src/wxJSSDK.ts","../src/aliJSSDK.ts","../src/mapTDTJSSDK.ts","../src/WebMonitor.ts","../src/createLocalStorage.ts","../src/createCookie.ts","../src/createIndexDB.ts","../src/theme.ts","../../../node_modules/.pnpm/outvariant@1.4.3/node_modules/outvariant/lib/index.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/devUtils.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/checkGlobals.mjs","../../../node_modules/.pnpm/rettime@0.11.11/node_modules/rettime/build/lens-list.mjs","../../../node_modules/.pnpm/rettime@0.11.11/node_modules/rettime/build/index.mjs","../../../node_modules/.pnpm/set-cookie-parser@3.1.1/node_modules/set-cookie-parser/lib/set-cookie.js","../../../node_modules/.pnpm/headers-polyfill@5.0.1/node_modules/headers-polyfill/lib/index.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/getCallFrame.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/isIterable.mjs","../../../node_modules/.pnpm/is-node-process@1.2.0/node_modules/is-node-process/lib/index.mjs","../../../node_modules/.pnpm/@open-draft+logger@0.3.0/node_modules/@open-draft/logger/lib/index.mjs","../../../node_modules/.pnpm/strict-event-emitter@0.5.1/node_modules/strict-event-emitter/lib/index.mjs","../../../node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/createRequestId-DYCsFHOi.mjs","../../../node_modules/.pnpm/@open-draft+deferred-promise@2.2.0/node_modules/@open-draft/deferred-promise/build/index.mjs","../../../node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/getRawRequest-B1BqgWG6.mjs","../../../node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/bufferUtils-BiiO6HZv.mjs","../../../node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/resolveWebSocketUrl-C83-x9iE.mjs","../../../node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/index.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/shims/statuses.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/HttpResponse/decorators.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/HttpResponse.mjs","../../../node_modules/.pnpm/@open-draft+deferred-promise@3.0.0/node_modules/@open-draft/deferred-promise/build/index.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/observe-response-body-stream.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/handlers/RequestHandler.mjs","../../../node_modules/.pnpm/path-to-regexp@6.3.0/node_modules/path-to-regexp/dist.es2015/index.js","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/url/cleanUrl.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/url/isAbsoluteUrl.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/url/getAbsoluteUrl.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/matching/normalizePath.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/matching/matchRequestUrl.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/logging/getTimestamp.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/request/toPublicUrl.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/isObject.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/handlers/WebSocketHandler.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/attachSiblingHandlers.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/experimental/handlers-controller.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/Disposable.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/toReadonlyArray.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/executeHandlers.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/isStringEqual.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/logging/getStatusCodeColor.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/logging/serializeRequest.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/logging/serializeResponse.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/shims/cookie.mjs","../../../node_modules/.pnpm/tldts-core@7.4.7/node_modules/tldts-core/dist/es6/src/domain.js","../../../node_modules/.pnpm/tldts-core@7.4.7/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js","../../../node_modules/.pnpm/tldts-core@7.4.7/node_modules/tldts-core/dist/es6/src/extract-hostname.js","../../../node_modules/.pnpm/tldts-core@7.4.7/node_modules/tldts-core/dist/es6/src/is-ip.js","../../../node_modules/.pnpm/tldts-core@7.4.7/node_modules/tldts-core/dist/es6/src/is-special-use.js","../../../node_modules/.pnpm/tldts-core@7.4.7/node_modules/tldts-core/dist/es6/src/is-valid.js","../../../node_modules/.pnpm/tldts-core@7.4.7/node_modules/tldts-core/dist/es6/src/options.js","../../../node_modules/.pnpm/tldts-core@7.4.7/node_modules/tldts-core/dist/es6/src/subdomain.js","../../../node_modules/.pnpm/tldts-core@7.4.7/node_modules/tldts-core/dist/es6/src/factory.js","../../../node_modules/.pnpm/tldts-core@7.4.7/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js","../../../node_modules/.pnpm/tldts@7.4.7/node_modules/tldts/dist/es6/src/data/trie.js","../../../node_modules/.pnpm/tldts@7.4.7/node_modules/tldts/dist/es6/src/suffix-trie.js","../../../node_modules/.pnpm/tldts@7.4.7/node_modules/tldts/dist/es6/index.js","../../../node_modules/.pnpm/tough-cookie@6.0.2/node_modules/tough-cookie/dist/index.js","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/jsonParse.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/cookieStore.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/request/getRequestCookies.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/handlers/HttpHandler.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/http.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/internal/hasRefCounted.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/delay.mjs","../../../node_modules/.pnpm/until-async@3.0.2/node_modules/until-async/lib/index.js","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/isCommonAssetRequest.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/request/storeResponseCookies.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/passthrough.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/index.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/experimental/frames/network-frame.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/experimental/sources/network-source.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/experimental/request-utils.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/experimental/frames/http-frame.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/experimental/on-unhandled-frame.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/experimental/define-network.mjs","../../../node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/hasConfigurableGlobal-C8zq1MCg.mjs","../../../node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/interceptors/WebSocket/index.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/experimental/frames/websocket-frame.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/experimental/sources/interceptor-source.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/experimental/compat.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/core/utils/toResponseInit.mjs","../../../node_modules/.pnpm/msw@2.15.0_@types+node@20.17.30_typescript@5.8.3/node_modules/msw/lib/browser/index.mjs","../src/mock/mock_service_worker_handlers/movieHandlers.ts","../src/mock/startMockServiceWorker.ts","../../../node_modules/.pnpm/hammerjs@2.0.8/node_modules/hammerjs/hammer.js","../../../node_modules/.pnpm/@tanstack+query-devtools@5.101.2/node_modules/@tanstack/query-devtools/build/chunk/RQBHRHJL.js","../../../node_modules/.pnpm/@tanstack+query-devtools@5.101.2/node_modules/@tanstack/query-devtools/build/DevtoolsComponent/ZXV6FBN7.js"],"sourcesContent":["const Wc = Function(\"return this\")();\nfunction Gc() {\n  const e = typeof globalThis == \"object\" && globalThis && globalThis.Object === Object && globalThis, t = typeof window == \"object\" && window && window.Object === Object && window, n = typeof global == \"object\" && global && global.Object === Object && global, r = typeof self == \"object\" && self && self.Object === Object && self;\n  return e || t || n || r || this || Wc;\n}\nconst _ = Gc(), cn = {\n  env: {\n    NODE_ENV: \"\",\n    // production development test\n    terminal: \"\"\n  },\n  argv: [],\n  execPath: \"\",\n  // process.execPath || process.argv[0] || ''\n  platform: \"\",\n  // macos windows darwin linux wsl\n  versions: {\n    node: void 0,\n    bun: void 0\n  },\n  ...typeof process == \"object\" && process ? process : {}\n}, Tg = {\n  // 私密配置: {}.*\n  ...cn.env,\n  BASE_URL: \"/\",\n  MODE: \"production\",\n  DEV: !1,\n  PROD: !0,\n  SSR: !1,\n  YZ_PUBLIC_PATH: \"/public\",\n  YZ_IMAGE_PATH: \"/public/images\"\n}, mo = \"@YZ/\";\nfunction Vc(e, t = mo) {\n  return e.startsWith(t);\n}\nfunction Kc(e, t = mo) {\n  return Vc(e, t) ? e : `${t}${e}`;\n}\nfunction Qc(e) {\n  return typeof e == \"string\" && e.startsWith(\"Symbol(\") && e.endsWith(\")\");\n}\nfunction Jc(e) {\n  return Qc(e) && (e = e.slice(7, -1)), e;\n}\nfunction Hc(e) {\n  return e = Jc(e), e = Kc(e), typeof Symbol == \"function\" ? Symbol(e) : `Symbol(${e})`;\n}\nconst Dt = Hc(\"META\");\nclass Xc {\n}\nfunction Qr(e) {\n  e || (e = _), Object.prototype.hasOwnProperty.call(e, Dt) === !1 && Object.defineProperty(e, Dt, {\n    value: new Xc()\n  });\n  const t = {\n    set: (n, r) => e[Dt][n] = r,\n    get: (n, r) => {\n      const i = e[Dt][n];\n      return i === void 0 && r !== void 0 ? (t.set(n, r), r) : i;\n    },\n    delete: (n) => {\n      delete e[Dt][n];\n    }\n  };\n  return t;\n}\nconst Jr = NaN, Er = Symbol(\"NO_VALUE\"), Rg = 16, xg = 5, ln = {\n  immediate: 0,\n  // 建议全局只有一个\n  high: 100,\n  normal: 200,\n  low: 300,\n  idle: 400\n};\nfunction kg(e, t) {\n  return { type: e, payload: t ?? {} };\n}\nfunction Ng(e) {\n  return \"dispatch\" in e;\n}\nconst Ig = {\n  UNKNOWN: \"UNKNOWN\",\n  // 未知\n  // ** 扫码 **\n  SCAN_QR_LOT: \"SCAN_QR_LOT\",\n  // 扫「车位二维码 /l?n=${lottag}」而来\n  SCAN_QR_PARK: \"SCAN_QR_PARK\",\n  // 扫「停车场二维码 /l?p=${pktag} 或 /p?t=${pktag}」而来\n  SCAN_QR_TICKET: \"SCAN_QR_TICKET\",\n  // 扫「小票码 /h?o=${ordersn}」而来\n  SCAN_QR_NEED_PAY: \"SCAN_QR_NEED_PAY\",\n  // 扫「支付码 /h?o=${ordersn} & uo.ctype!==L 」而来\n  SCAN_QR_OWED_ORDER: \"SCAN_QR_OWED_ORDER\",\n  // 扫「原补缴订单码/包月支付码 /l?o=${ordersn} 」而来\n  SCAN_QR_GATE: \"SCAN_QR_GATE\",\n  // 扫「道闸码 /o?d=${doorid} 」而来\n  SCAN_QR_COUPON: \"SCAN_QR_COUPON\",\n  // 扫「领取优惠券 /c?c=${couponid} 」而来\n  SCAN_QR_CHARGE: \"SCAN_QR_CHARGE\",\n  // 扫「充电枪码 /e?n=${chargeconnsn} 」而来\n  // ** 点击 **\n  TAP_SUBSCRIPTION_CHARGE_END: \"TAP_SUBSCRIPTION_CHARGE_END\",\n  // 点击「结束充电提醒-订阅消息链接」而来\n  TAP_SUBSCRIPTION_NONSENSE_END: \"TAP_SUBSCRIPTION_NONSENSE_END\",\n  // 点击「信用停-停车缴费通知-订阅消息链接」而来\n  TAP_SUBSCRIPTION_BOARD_RAISED: \"TAP_SUBSCRIPTION_BOARD_RAISED\",\n  // 点击「车位翻板升起提醒-订阅消息链接」而来\n  // ** 成功支付 **\n  PAID_INPROGRESS_ORDER: \"PAID_INPROGRESS_ORDER\",\n  // 成功支付「仅当前在停订单」而来\n  PAID_OWED_ORDER: \"PAID_OWED_ORDER\",\n  // 成功支付「仅单个历史欠费订单」而来\n  PAID_OWED_ORDER_NONSENSE: \"PAID_OWED_ORDER_NONSENSE\",\n  // 成功支付「信用停-历史欠费订单（单个）」而来\n  PAID_OWED_ORDERS_ONLY: \"PAID_OWED_ORDERS_ONLY\",\n  // 成功支付「仅历史欠费订单列表（可能多个历史欠费）」而来\n  PAID_OWED_ORDERS_MERGE_INPROGRESS_ORDER: \"PAID_OWED_ORDERS_MERGE_INPROGRESS_ORDER\",\n  // 成功支付「历史欠费订单列表（可能多个历史欠费）+ 当前在停订单」而来\n  PAID_MONTH: \"PAID_MONTH\",\n  // 成功支付「包月」而来\n  PAID_MONTH_CLEAR_OWED_ORDERS_BEFORE: \"PAID_MONTH_CLEAR_OWED_ORDERS_BEFORE\"\n  // 成功支付「包月清缴」而来\n}, Pg = {\n  CRLF: \"CRLF\",\n  // \\r\\n\n  LF: \"LF\"\n  // \\n\n};\nvar be = /* @__PURE__ */ ((e) => (e[e[\"text/plain\"] = 0] = \"text/plain\", e[e[\"text/html\"] = 1] = \"text/html\", e[e[\"text/xml\"] = 2] = \"text/xml\", e[e[\"text/css\"] = 3] = \"text/css\", e[e[\"image/jpeg\"] = 4] = \"image/jpeg\", e[e[\"image/png\"] = 5] = \"image/png\", e[e[\"image/gif\"] = 6] = \"image/gif\", e[e[\"image/bmp\"] = 7] = \"image/bmp\", e[e[\"image/webp\"] = 8] = \"image/webp\", e[e[\"image/svg+xml\"] = 9] = \"image/svg+xml\", e[e[\"image/x-icon\"] = 10] = \"image/x-icon\", e[e[\"image/vnd.microsoft.icon\"] = 11] = \"image/vnd.microsoft.icon\", e[e[\"image/octet-stream\"] = 12] = \"image/octet-stream\", e[e[\"audio/mpeg\"] = 13] = \"audio/mpeg\", e[e[\"video/mp4\"] = 14] = \"video/mp4\", e[e[\"audio/ogg\"] = 15] = \"audio/ogg\", e[e[\"audio/wav\"] = 16] = \"audio/wav\", e[e[\"audio/midi\"] = 17] = \"audio/midi\", e[e[\"video/webm\"] = 18] = \"video/webm\", e[e[\"video/ogg\"] = 19] = \"video/ogg\", e[e[\"application/octet-stream\"] = 20] = \"application/octet-stream\", e[e[\"application/javascript\"] = 21] = \"application/javascript\", e[e[\"application/ecmascript\"] = 22] = \"application/ecmascript\", e[e[\"application/json\"] = 23] = \"application/json\", e[e[\"application/xml\"] = 24] = \"application/xml\", e[e[\"application/xhtml+xml\"] = 25] = \"application/xhtml+xml\", e[e[\"application/x-www-form-urlencoded\"] = 26] = \"application/x-www-form-urlencoded\", e[e[\"application/msword\"] = 27] = \"application/msword\", e[e[\"application/x-csv\"] = 28] = \"application/x-csv\", e[e[\"application/vnb.ms-excel\"] = 29] = \"application/vnb.ms-excel\", e[e[\"application/vnb.mspowerpoint\"] = 30] = \"application/vnb.mspowerpoint\", e[e[\"application/pdf\"] = 31] = \"application/pdf\", e[e[\"application/zip\"] = 32] = \"application/zip\", e[e[\"application/x-gtar\"] = 33] = \"application/x-gtar\", e[e[\"application/x-gzip\"] = 34] = \"application/x-gzip\", e[e[\"appliaction/vnd.ms-fontobject\"] = 35] = \"appliaction/vnd.ms-fontobject\", e[e[\"aplication/font-sfnt\"] = 36] = \"aplication/font-sfnt\", e[e[\"aplication/pkcs12\"] = 37] = \"aplication/pkcs12\", e))(be || {}), Yc = /* @__PURE__ */ ((e) => (e[e.text = 0] = \"text\", e[e.dataURL = 1] = \"dataURL\", e[e.binaryString = 2] = \"binaryString\", e[e.arraybuffer = 3] = \"arraybuffer\", e))(Yc || {});\nconst gt = {\n  arraybuffer: \"arraybuffer\",\n  text: \"text\",\n  json: \"json\",\n  blob: \"blob\",\n  stream: \"stream\",\n  formdata: \"formdata\",\n  document: \"document\"\n}, tt = {\n  ascii: \"ascii\",\n  /**\n   * UTF-8 是一种可变长度的 Unicode 编码格式，使用一至四个字节为每个字符编码\n   *\n   * 000000 - 00007F(128个代码)      0zzzzzzz(00-7F)                             一个字节\n   * 000080 - 0007FF(1920个代码)     110yyyyy(C0-DF) 10zzzzzz(80-BF)             两个字节\n   * 000800 - 00D7FF\n   * 00E000 - 00FFFF(61440个代码)    1110xxxx(E0-EF) 10yyyyyy 10zzzzzz           三个字节\n   * 010000 - 10FFFF(1048576个代码)  11110www(F0-F7) 10xxxxxx 10yyyyyy 10zzzzzz  四个字节\n   *\n   * 注: Unicode在范围 D800-DFFF 中不存在任何字符\n   * http://zh.wikipedia.org/wiki/UTF-8\n   */\n  utf8: \"utf8\",\n  \"utf-8\": \"utf-8\",\n  /**\n   * UTF-16 大部分使用两个字节编码，编码超出 65535 的使用四个字节\n   * 000000 - 00FFFF  两个字节\n   * 010000 - 10FFFF  四个字节\n   *\n   * http://zh.wikipedia.org/wiki/UTF-16\n   *\n   * 小字节序编码的 Unicode 字符，支持代理（U+10000至 U+10FFFF）\n   */\n  utf16le: \"utf16le\",\n  \"utf-16le\": \"utf-16le\",\n  ucs2: \"ucs2\",\n  //  utf16le 的别名\n  \"ucs-2\": \"ucs-2\",\n  base64: \"base64\",\n  base64url: \"base64url\",\n  latin1: \"latin1\",\n  // 编码成一字节编码的字符串的方式\n  binary: \"binary\",\n  // latin1 的别名\n  hex: \"hex\"\n  // 将一个字节编码为两个十六进制字符\n  // ansi: \"ansi\"\n}, zn = {\n  md5: \"md5\",\n  sha1: \"sha1\",\n  sha256: \"sha256\",\n  \"SHA-256\": \"SHA-256\",\n  sha512: \"sha512\",\n  \"SHA-512\": \"SHA-512\",\n  \"AES-GCM\": \"AES-GCM\",\n  ECDSA: \"ECDSA\"\n}, zg = {\n  \"aes-128-cbc\": \"aes-128-cbc\",\n  \"aes-128-ecb\": \"aes-128-ecb\",\n  \"aes-192-cbc\": \"aes-192-cbc\",\n  \"aes-192-ecb\": \"aes-192-ecb\",\n  \"aes-256-cbc\": \"aes-256-cbc\",\n  \"aes-256-ecb\": \"aes-256-ecb\",\n  base64: \"base64\"\n}, Bg = [\n  \"jelly\",\n  \"bounce\",\n  \"flash\",\n  \"pulse\",\n  \"rubberBand\",\n  \"shakeX\",\n  \"shakeY\",\n  \"headShake\",\n  \"swing\",\n  \"tada\",\n  \"wobble\",\n  \"jello\",\n  \"heartBeat\",\n  \"backInLeft\",\n  \"backInRight\",\n  \"backInUp\",\n  \"backInDown\",\n  \"backOutLeft\",\n  \"backOutRight\",\n  \"backOutUp\",\n  \"backOutDown\",\n  \"bounceIn\",\n  \"bounceInLeft\",\n  \"bounceInRight\",\n  \"bounceInUp\",\n  \"bounceInDown\",\n  \"bounceOut\",\n  \"bounceOutLeft\",\n  \"bounceOutRight\",\n  \"bounceOutUp\",\n  \"bounceOutDown\",\n  \"fadeIn\",\n  \"fadeInLeft\",\n  \"fadeInLeftBig\",\n  \"fadeInRight\",\n  \"fadeInRightBig\",\n  \"fadeInUp\",\n  \"fadeInUpBig\",\n  \"fadeInDown\",\n  \"fadeInDownBig\",\n  \"fadeInTopLeft\",\n  \"fadeInTopRight\",\n  \"fadeInBottomLeft\",\n  \"fadeInBottomRight\",\n  \"fadeOut\",\n  \"fadeOutLeft\",\n  \"fadeOutLeftBig\",\n  \"fadeOutRight\",\n  \"fadeOutRightBig\",\n  \"fadeOutUp\",\n  \"fadeOutUpBig\",\n  \"fadeOutDown\",\n  \"fadeOutDownBig\",\n  \"fadeOutTopLeft\",\n  \"fadeOutTopRight\",\n  \"fadeOutBottomRight\",\n  \"fadeOutBottomLeft\",\n  \"flip\",\n  \"flipInX\",\n  \"flipInY\",\n  \"flipOutX\",\n  \"flipOutY\",\n  \"flipOutRight\",\n  \"flipInLeft\",\n  \"flipOutLeft\",\n  \"flipInRight\",\n  \"flipOutTop\",\n  \"flipInBottom\",\n  \"flipOutBottom\",\n  \"flipInTop\",\n  \"lightSpeedInLeft\",\n  \"lightSpeedInRight\",\n  \"lightSpeedOutLeft\",\n  \"lightSpeedOutRight\",\n  \"rotateIn\",\n  \"rotateInUpLeft\",\n  \"rotateInUpRight\",\n  \"rotateInDownLeft\",\n  \"rotateInDownRight\",\n  \"rotateOut\",\n  \"rotateOutUpLeft\",\n  \"rotateOutUpRight\",\n  \"rotateOutDownLeft\",\n  \"rotateOutDownRight\",\n  \"hinge\",\n  \"rotateFall\",\n  \"rotateOutNewspaper\",\n  \"rotateInNewspaper\",\n  \"jackInTheBox\",\n  \"rollIn\",\n  \"rollOut\",\n  \"zoomIn\",\n  \"zoomInLeft\",\n  \"zoomInRight\",\n  \"zoomInUp\",\n  \"zoomInDown\",\n  \"zoomOut\",\n  \"zoomOutLeft\",\n  \"zoomOutRight\",\n  \"zoomOutUp\",\n  \"zoomOutDown\",\n  \"fade\",\n  \"moveFromLeft\",\n  \"moveToLeft\",\n  \"moveFromRight\",\n  \"moveToRight\",\n  \"moveFromTop\",\n  \"moveToTop\",\n  \"moveFromBottom\",\n  \"moveToBottom\",\n  \"moveFromLeftFade\",\n  \"moveToLeftFade\",\n  \"moveFromRightFade\",\n  \"moveToRightFade\",\n  \"moveFromTopFade\",\n  \"moveToTopFade\",\n  \"moveFromBottomFade\",\n  \"moveToBottomFade\",\n  \"scaleFromSmall\",\n  \"scaleToSmall\",\n  \"scaleFromLarge\",\n  \"scaleToLarge\",\n  \"scaleFromSmallCenter\",\n  \"scaleToSmallCenter\",\n  \"slideInLeft\",\n  \"slideInRight\",\n  \"slideInUp\",\n  \"slideInDown\",\n  \"slideOutLeft\",\n  \"slideOutRight\",\n  \"slideOutUp\",\n  \"slideOutDown\",\n  \"rotateRightSideFirst\",\n  \"rotateLeftSideFirst\",\n  \"rotateTopSideFirst\",\n  \"rotateBottomSideFirst\",\n  \"rotatePushLeft\",\n  \"rotatePushRight\",\n  \"rotatePushTop\",\n  \"rotatePushBottom\",\n  \"rotatePullRight\",\n  \"rotatePullLeft\",\n  \"rotatePullTop\",\n  \"rotatePullBottom\",\n  \"rotateFoldRight\",\n  \"rotateFoldLeft\",\n  \"rotateFoldTop\",\n  \"rotateFoldBottom\",\n  \"rotateUnfoldLeft\",\n  \"rotateUnfoldRight\",\n  \"rotateUnfoldTop\",\n  \"rotateUnfoldBottom\",\n  \"rotateRoomLeftOut\",\n  \"rotateRoomLeftIn\",\n  \"rotateRoomRightOut\",\n  \"rotateRoomRightIn\",\n  \"rotateRoomTopOut\",\n  \"rotateRoomTopIn\",\n  \"rotateRoomBottomOut\",\n  \"rotateRoomBottomIn\",\n  \"rotateCubeLeftOut\",\n  \"rotateCubeLeftIn\",\n  \"rotateCubeRightOut\",\n  \"rotateCubeRightIn\",\n  \"rotateCubeTopOut\",\n  \"rotateCubeTopIn\",\n  \"rotateCubeBottomOut\",\n  \"rotateCubeBottomIn\",\n  \"rotateCarouselLeftOut\",\n  \"rotateCarouselLeftIn\",\n  \"rotateCarouselRightOut\",\n  \"rotateCarouselRightIn\",\n  \"rotateCarouselTopOut\",\n  \"rotateCarouselTopIn\",\n  \"rotateCarouselBottomOut\",\n  \"rotateCarouselBottomIn\",\n  \"rotateSidesOut\",\n  \"rotateSidesIn\",\n  \"rotateSlideOut\",\n  \"rotateSlideIn\",\n  \"superRainbow\",\n  \"statusProcessing\"\n];\nvar e0 = /* @__PURE__ */ ((e) => (e[e.Continue = 100] = \"Continue\", e[e.SwitchingProtocols = 101] = \"SwitchingProtocols\", e[e.Processing = 102] = \"Processing\", e[e.EarlyHints = 103] = \"EarlyHints\", e[e.Ok = 200] = \"Ok\", e[e.Created = 201] = \"Created\", e[e.Accepted = 202] = \"Accepted\", e[e.NonAuthoritativeInformation = 203] = \"NonAuthoritativeInformation\", e[e.NoContent = 204] = \"NoContent\", e[e.ResetContent = 205] = \"ResetContent\", e[e.PartialContent = 206] = \"PartialContent\", e[e.MultiStatus = 207] = \"MultiStatus\", e[e.AlreadyReported = 208] = \"AlreadyReported\", e[e.ImUsed = 226] = \"ImUsed\", e[e.MultipleChoices = 300] = \"MultipleChoices\", e[e.MovedPermanently = 301] = \"MovedPermanently\", e[e.Found = 302] = \"Found\", e[e.SeeOther = 303] = \"SeeOther\", e[e.NotModified = 304] = \"NotModified\", e[e.UseProxy = 305] = \"UseProxy\", e[e.Unused = 306] = \"Unused\", e[e.TemporaryRedirect = 307] = \"TemporaryRedirect\", e[e.PermanentRedirect = 308] = \"PermanentRedirect\", e[e.BadRequest = 400] = \"BadRequest\", e[e.Unauthorized = 401] = \"Unauthorized\", e[e.PaymentRequired = 402] = \"PaymentRequired\", e[e.Forbidden = 403] = \"Forbidden\", e[e.NotFound = 404] = \"NotFound\", e[e.MethodNotAllowed = 405] = \"MethodNotAllowed\", e[e.NotAcceptable = 406] = \"NotAcceptable\", e[e.ProxyAuthenticationRequired = 407] = \"ProxyAuthenticationRequired\", e[e.RequestTimeout = 408] = \"RequestTimeout\", e[e.Conflict = 409] = \"Conflict\", e[e.Gone = 410] = \"Gone\", e[e.LengthRequired = 411] = \"LengthRequired\", e[e.PreconditionFailed = 412] = \"PreconditionFailed\", e[e.PayloadTooLarge = 413] = \"PayloadTooLarge\", e[e.UriTooLong = 414] = \"UriTooLong\", e[e.UnsupportedMediaType = 415] = \"UnsupportedMediaType\", e[e.RangeNotSatisfiable = 416] = \"RangeNotSatisfiable\", e[e.ExpectationFailed = 417] = \"ExpectationFailed\", e[e.ImATeapot = 418] = \"ImATeapot\", e[e.MisdirectedRequest = 421] = \"MisdirectedRequest\", e[e.UnprocessableEntity = 422] = \"UnprocessableEntity\", e[e.Locked = 423] = \"Locked\", e[e.FailedDependency = 424] = \"FailedDependency\", e[e.TooEarly = 425] = \"TooEarly\", e[e.UpgradeRequired = 426] = \"UpgradeRequired\", e[e.PreconditionRequired = 428] = \"PreconditionRequired\", e[e.TooManyRequests = 429] = \"TooManyRequests\", e[e.RequestHeaderFieldsTooLarge = 431] = \"RequestHeaderFieldsTooLarge\", e[e.UnavailableForLegalReasons = 451] = \"UnavailableForLegalReasons\", e[e.InternalServerError = 500] = \"InternalServerError\", e[e.NotImplemented = 501] = \"NotImplemented\", e[e.BadGateway = 502] = \"BadGateway\", e[e.ServiceUnavailable = 503] = \"ServiceUnavailable\", e[e.GatewayTimeout = 504] = \"GatewayTimeout\", e[e.HttpVersionNotSupported = 505] = \"HttpVersionNotSupported\", e[e.VariantAlsoNegotiates = 506] = \"VariantAlsoNegotiates\", e[e.InsufficientStorage = 507] = \"InsufficientStorage\", e[e.LoopDetected = 508] = \"LoopDetected\", e[e.NotExtended = 510] = \"NotExtended\", e[e.NetworkAuthenticationRequired = 511] = \"NetworkAuthenticationRequired\", e))(e0 || {});\nconst We = (e) => {\n  let t = null;\n  switch (e) {\n    case \"any-character\":\n      t = /[^]/;\n      break;\n    case \"bin\":\n      t = /^(0b)?[0-1]+$/i;\n      break;\n    case \"oct\":\n      t = /^(0o)?[0-7]+$/i;\n      break;\n    case \"hex\":\n      t = /^(0x)?[0-9a-fA-F]+$/i;\n      break;\n    case \"ascii\":\n      t = /^[\\x00-\\xFF]+$/i;\n      break;\n    case \"int\":\n      t = /^[-+]?[0-9]+$/;\n      break;\n    case \"number\":\n      t = /[-+]?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/gi;\n      break;\n    case \"number-single\":\n      t = /[-+]?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/i;\n      break;\n    case \"split\":\n      t = /\\s*,\\s*/gi;\n      break;\n    case \"trim\":\n      t = /^\\s+|\\s+$/g;\n      break;\n    case \"regexp\":\n      t = /[\\\\^$.*+?()[\\]{}|]/g;\n      break;\n    case \"regexp-flags\":\n      t = /\\w*$/;\n      break;\n    case \"native-method\":\n      t = RegExp(\n        \"^\" + Function.prototype.toString.call(Object.prototype.hasOwnProperty).replace(We(\"regexp\"), \"\\\\$&\").replace(\n          /hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\n          \"$1.*?\"\n        ) + \"$\"\n      );\n      break;\n    case \"svg-segment\":\n      t = /([mlhvzaqtcs])([^mlhvzaqtcs]*)/gi;\n      break;\n    case \"mobile-china\":\n      t = /^[1]{1}[0-9]{10}$/;\n      break;\n    case \"email\":\n      t = /^[A-Za-z0-9_!#$%&'*+/=?`{|}~^.-]+\\@[A-Za-z0-9._-]+\\.[A-Za-z0-9]+$/gm;\n      break;\n    case \"ip\":\n      t = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n      break;\n    case \"url\":\n      t = /^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$/;\n      break;\n    case \"element-url\":\n      t = /^url\\(['\"]?(.+?)['\"]?\\)$/i;\n      break;\n    case \"date\":\n      t = /^\\d{4}(\\-|\\/|\\.)(\\d{1,2})(\\-|\\/|\\.)(\\d{1,2})$/;\n      break;\n    case \"time\":\n      t = /^(\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;\n      break;\n    case \"datetime\":\n      t = /^\\d{4}(\\-|\\/|\\.)(\\d{1,2})(\\-|\\/|\\.)(\\d{1,2})\\s+(\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;\n      break;\n    case \"base64-data\":\n      t = /^\\s*data:(?:[a-z]+\\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\\-._~:@/?%\\s]*?)\\s*$/i;\n      break;\n    case \"hex-color\":\n      t = /^#([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;\n      break;\n    case \"color\":\n      t = /^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|rgba?\\(\\s*([\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?(?:\\s*,\\s*[\\d\\.]+%?)?)\\s*\\)|hsba?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\)|hsla?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\))\\s*$/i;\n      break;\n    case \"whitespace\":\n      t = /[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]/g;\n      break;\n    case \"commaSpaces\":\n      t = /[\\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]*,[\\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]*/;\n      break;\n    case \"var-name\":\n      t = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\n      break;\n    case \"bezier\":\n      t = /^(?:cubic-)?bezier\\(([^,]+),([^,]+),([^,]+),([^\\)]+)\\)/;\n      break;\n    case \"chinese-name\":\n      t = /^(?:[\\u4e00-\\u9fa5·]{2,16})$/;\n      break;\n    case \"chinese\":\n      t = new RegExp(\n        String.raw`\n          [\\u{FA0E}\\u{FA0F}\\u{FA11}\\u{FA13}\\u{FA14}\\u{FA1F}\\u{FA21}\\u{FA23}\\u{FA24}\\u{FA27}-\\u{FA29}]\n          |[\\u{4E00}-\\u{9FCC}]\n          |[\\u{3400}-\\u{4DB5}]\n          |[\\u{20000}-\\u{2A6D6}]\n          |[\\u{2A700}-\\u{2B734}]\n          |[\\u{2B740}-\\u{2B81D}]\n          |[\\u{2B820}-\\u{2CEAF}]\n          |[\\u{2CEB0}-\\u{2EBEF}]\n        `.replace(/\\s+/g, \"\"),\n        \"u\"\n      );\n      break;\n    case \"mime-image\":\n      t = /^image\\//;\n      break;\n    case \"mime-video\":\n      t = /^video\\//;\n      break;\n    case \"mime-audio\":\n      t = /^audio\\//;\n      break;\n    case \"mime-document-word\":\n      t = /^application\\/(?:vnd\\.openxmlformats-officedocument\\.wordprocessingml\\.document|msword|vnd\\.ms-word\\.document\\.macroenabled\\.12|vnd\\.openxmlformats-officedocument\\.wordprocessingml\\.template|vnd\\.ms-word\\.template\\.macroenabled\\.12)$/;\n      break;\n    case \"mime-document-excel\":\n      t = /^application\\/(?:vnd\\.openxmlformats-officedocument\\.spreadsheetml\\.sheet|vnd\\.ms-excel|vnd\\.ms-excel\\.sheet\\.macroenabled\\.12|vnd\\.openxmlformats-officedocument\\.spreadsheetml\\.template|vnd\\.ms-excel\\.template\\.macroenabled\\.12)$/;\n      break;\n    case \"mime-document-ppt\":\n      t = /^application\\/(?:vnd\\.ms-powerpoint|vnd\\.openxmlformats-officedocument\\.presentationml\\.presentation|vnd\\.ms-powerpoint\\.presentation\\.macroenabled\\.12|vnd\\.openxmlformats-officedocument\\.presentationml\\.template|vnd\\.ms-powerpoint\\.template\\.macroenabled\\.12)$/;\n      break;\n    case \"mime-document-json\":\n      t = /^application\\/json$/;\n      break;\n    case \"mime-document-xml\":\n      t = /^(?:application|text)\\/(?:xml|xhtml\\+xml)$/;\n      break;\n  }\n  return t;\n};\nfunction t0(e) {\n  if (e.flags)\n    return e.flags;\n  const t = [];\n  return e.global && t.push(\"g\"), e.ignoreCase && t.push(\"i\"), e.multiline && t.push(\"m\"), e.sticky && t.push(\"y\"), e.unicode && t.push(\"u\"), t.join(\"\");\n}\nfunction n0(e) {\n  const t = new RegExp(e.source, t0(e));\n  return t.lastIndex = e.lastIndex, t;\n}\nconst Nt = (e, t) => (typeof e == \"string\" && (e = We(e) || new RegExp(e)), e.test(t)), $g = (e, t) => (typeof e == \"string\" && (e = We(e) || new RegExp(e)), t.search(e)), Lg = (e, t) => (typeof e == \"string\" && (e = We(e) || new RegExp(e)), t.split(e)), Hr = (e, t) => {\n  typeof e == \"string\" && (e = We(e) || new RegExp(e));\n  const n = t.match(e);\n  return n ? e.flags.toLowerCase().indexOf(\"g\") >= 0 ? n.map(\n    (r) => ({\n      matchIndex: -1,\n      fullMatch: r,\n      groupMatchs: []\n    })\n  ) : {\n    matchIndex: typeof n.index == \"number\" ? n.index : -1,\n    fullMatch: n[0],\n    groupMatchs: n.slice(1)\n  } : null;\n}, Mg = (e, t) => {\n  typeof e == \"string\" && (e = We(e) || new RegExp(e));\n  const n = [], r = t.matchAll(e);\n  for (const i of r)\n    n.push({\n      matchIndex: typeof i.index == \"number\" ? i.index : -1,\n      fullMatch: i[0],\n      groupMatchs: i.slice(1)\n    });\n  return n;\n}, jg = (e, t) => {\n  if (typeof e == \"string\" && (e = We(e) || new RegExp(e)), e.flags.toLowerCase().indexOf(\"g\") < 0)\n    return Hr(e, t);\n  const n = [];\n  let r;\n  for (; r = e.exec(t); )\n    n.push({\n      matchIndex: typeof r.index == \"number\" ? r.index : -1,\n      fullMatch: r[0],\n      groupMatchs: r.slice(1)\n    });\n  return n;\n};\nfunction at(e) {\n  const t = e.match(/[\\s\\S]/gu);\n  return t ? t.length : 0;\n}\nfunction Ug(e) {\n  return [...e].length;\n}\nfunction Zg(e) {\n  return Array.from(e).length;\n}\nfunction qg(e) {\n  const t = e.length;\n  let n = 0, r = 0;\n  for (; n < t; ) {\n    const i = e.charCodeAt(n);\n    if (i >= 55296 && i <= 56319) {\n      const s = e.charCodeAt(n + 1);\n      s >= 56320 && s <= 57343 && n++;\n    }\n    r++, n++;\n  }\n  return r;\n}\nfunction Wg(e, t) {\n  return Array.from(e).slice(0, t).join(\"\");\n}\nfunction Gg(e, t) {\n  const n = e.codePointAt(t);\n  return n ? String.fromCodePoint(n) : void 0;\n}\nfunction Vg(e) {\n  if (!/^\\s*[0-9A-Z]+\\s*$/i.test(e))\n    throw new Error(\"纳税人识别号只能由数字和大写字母组成\");\n  const t = e.trim().toUpperCase(), n = at(t);\n  if (n !== 15 && n !== 17 && n !== 18 && n !== 20)\n    throw new Error(\"税号应为15/17/18/20位数字或大写字母组合，请检查。\");\n  return t;\n}\nfunction Kg(e) {\n  if (!/^\\s*[0-9A-Z（）\\u{FA0E}\\u{FA0F}\\u{FA11}\\u{FA13}\\u{FA14}\\u{FA1F}\\u{FA21}\\u{FA23}\\u{FA24}\\u{FA27}-\\u{FA29}\\u{4E00}-\\u{9FCC}\\u{3400}-\\u{4DB5}\\u{20000}-\\u{2A6D6}\\u{2A700}-\\u{2B734}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEAF}\\u{2CEB0}-\\u{2EBEF}]+\\s*$/iu.test(\n    e\n  ))\n    throw new Error(\"名称只能包含：中文+英文+数字+全角括号\");\n  const t = e.trim(), n = at(t);\n  if (n == 0)\n    throw new Error(\"请输入名称\");\n  if (n > 100)\n    throw new Error(\"名称过长，请修改 (不超过100个字符)\");\n  return t;\n}\nfunction Qg(e) {\n  if (!/^\\s*([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}\\s*$/i.test(\n    e\n  ))\n    throw new Error(\"请输入正确的邮箱\");\n  return e.trim();\n}\nconst r0 = \"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghijklmnopqrstuvwxyz0123456789\", i0 = \"0123456789\";\nfunction Do(e = 12, t = r0) {\n  let n = \"\";\n  for (let r = 0; r < e; r++)\n    n += t[Math.floor(Math.random() * t.length)];\n  return n;\n}\nfunction Jg(e = 12) {\n  return Do(e, i0);\n}\nconst Hg = () => String.fromCharCode(\n  Math.random() * (\"z\".charCodeAt(0) - \"a\".charCodeAt(0)) + \"a\".charCodeAt(0)\n);\nfunction Xg(e, t) {\n  const n = Object.keys(t);\n  for (let r = 0, i = n.length; r < i; r++)\n    e = e.replace(new RegExp(\"{\" + n[r] + \"}\", \"gi\"), t[n[r]]);\n  return e;\n}\nfunction Yg(e, ...t) {\n  let n = \"\", r;\n  for (r = 0; r < t.length; r++)\n    n += e.raw[r] + t[r];\n  return n += e.raw[r] || \"\", n;\n}\nfunction ey(e) {\n  return e.charAt(0).toUpperCase() + e.slice(1);\n}\nfunction s0(e) {\n  return e.replace(/(^\\w)/g, (t) => t.toLowerCase());\n}\nconst ty = (e, t = \"-\") => {\n  let n = e.replace(new RegExp(\"[_-]?([A-Z])\", \"g\"), t + \"$1\").toLowerCase();\n  const r = new RegExp(`^${t}`);\n  return r.test(e) || (n = n.replace(r, \"\")), n;\n};\nfunction o0(e) {\n  return e.replace(/(^\\w|[_-]\\w)/g, (t) => t.slice(-1).toUpperCase());\n}\nfunction ny(e) {\n  return s0(o0(e));\n}\nfunction ry(e) {\n  return e ? e.replaceAll(/^\\s+|\\s+$/g, \"\").replaceAll(/\\r?\\n/g, \"\") : \"\";\n}\nfunction iy(e = \"\") {\n  const t = /[`~!@#$^\\-&*()=|{}':;',\\\\\\[\\]\\.<>\\/?~！@#￥……&*（）——|{}【】'；：\"\"'。，、？\\s]/g;\n  return e.replaceAll(t, \"\");\n}\nfunction sy(e, t = \"\", n = /\\[data-v-[0-9a-zA-Z]*\\]/g) {\n  return e = e.replaceAll(n, t), e;\n}\nfunction oy(e, t, n = \"0\", r = \"left\") {\n  const i = at(e);\n  if (t > i) {\n    const s = t - i;\n    let o, u;\n    switch (r) {\n      case \"left\":\n        e = Array(s + 1).join(n) + e;\n        break;\n      case \"right\":\n        e = e + Array(s + 1).join(n);\n        break;\n      default:\n        o = Math.ceil(s / 2), u = s - o, e = Array(u + 1).join(n) + e + Array(o + 1).join(n);\n        break;\n    }\n  }\n  return e;\n}\nconst uy = (e, t) => e.repeat(t), ay = (e, t, n = \"...\") => at(e) < t ? e : `${e.slice(0, t - 3)}${n}`, cy = (e, t, n, r = \"...\") => {\n  const i = at(e);\n  return i < t || n - t >= i ? e : `${e.slice(0, t)}${r}${e.slice(i - n)}`;\n}, ly = (e) => e.split(\"\").reverse().join(\"\");\nfunction hy(e) {\n  const t = e.codePointAt(0);\n  return typeof t < \"u\" && t > 65535;\n}\nfunction fy(e) {\n  let t = \"\";\n  for (let n = 0, r = e.length; n < r; n++) {\n    const i = e.charCodeAt(n);\n    i >= 1 && i <= 127 ? t += e.charAt(n) : i > 2047 ? (t += String.fromCharCode(224 | i >> 12 & 15), t += String.fromCharCode(128 | i >> 6 & 63), t += String.fromCharCode(128 | i >> 0 & 63)) : (t += String.fromCharCode(192 | i >> 6 & 31), t += String.fromCharCode(128 | i >> 0 & 63));\n  }\n  return t;\n}\nfunction dy(e) {\n  const t = e.length;\n  let n = \"\", r = 0, i, s;\n  for (; r < t; ) {\n    const o = e.charCodeAt(r++);\n    switch (o >> 4) {\n      case 0:\n      case 1:\n      case 2:\n      case 3:\n      case 4:\n      case 5:\n      case 6:\n      case 7:\n        n += e.charAt(r - 1);\n        break;\n      case 12:\n      case 13:\n        i = e.charCodeAt(r++), n += String.fromCharCode((o & 31) << 6 | i & 63);\n        break;\n      case 14:\n        i = e.charCodeAt(r++), s = e.charCodeAt(r++), n += String.fromCharCode(\n          (o & 15) << 12 | (i & 63) << 6 | (s & 63) << 0\n        );\n        break;\n    }\n  }\n  return n;\n}\nfunction py(e, t = \"utf-8\") {\n  t = t.toLowerCase();\n  let n = 0;\n  if (t === \"utf-16\" || t === \"utf16\")\n    for (let r = 0, i = e.length; r < i; r++)\n      e.charCodeAt(r) <= 65535 ? n += 2 : n += 4;\n  else\n    for (let r = 0, i = e.length; r < i; r++) {\n      const s = e.charCodeAt(r);\n      s <= 127 ? n += 1 : s <= 2047 ? n += 2 : s <= 65535 ? n += 3 : n += 4;\n    }\n  return n;\n}\nfunction my(e) {\n  return e.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction u0(e) {\n  return e.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\nfunction Dy(e) {\n  return u0(e).replace(/\"/g, \"&quot;\").replace(/'/g, \"&apos;\");\n}\nfunction gy(e, t, n = t + \"s\") {\n  return e === 1 ? t : n;\n}\nfunction yy(e) {\n  const t = e.indexOf(`\n`);\n  return t === -1 ? e : e.slice(0, t);\n}\nfunction by(e, t, n = 0) {\n  let r = 0, i = e.indexOf(t, n);\n  for (; i !== -1; )\n    r++, i = e.indexOf(t, i + 1);\n  return r;\n}\nfunction wy(e) {\n  return e.replace(\n    /[０-９]/g,\n    (t) => String.fromCharCode(t.charCodeAt(0) - 65248)\n  );\n}\nfunction Fy(e) {\n  return e.replace(/\\u3000/g, \" \");\n}\nconst go = 2 ** 25;\nfunction Ey(e, t = \",\", n = go) {\n  const r = \"...[truncated]\";\n  let i = \"\";\n  for (const s of e) {\n    const o = i ? t : \"\", u = o + s;\n    if (i.length + u.length <= n)\n      i += u;\n    else {\n      const a = n - i.length - o.length - r.length;\n      return a > 0 ? i += o + s.slice(0, a) + r : i += r, i;\n    }\n  }\n  return i;\n}\nfunction vy(e, t) {\n  const n = e.split(`\n`);\n  return n.length <= t ? e : n.slice(0, t).join(`\n`) + \"…\";\n}\nclass _y {\n  /**\n   * Creates a new EndTruncatingAccumulator\n   * @param maxSize Maximum size in characters before truncation occurs\n   */\n  constructor(t = go) {\n    this.maxSize = t;\n  }\n  content = \"\";\n  isTruncated = !1;\n  totalBytesReceived = 0;\n  /**\n   * Appends data to the accumulator. If the total size exceeds maxSize,\n   * the end is truncated to maintain the size limit.\n   * @param data The string data to append\n   */\n  append(t) {\n    const n = typeof t == \"string\" ? t : t.toString();\n    if (this.totalBytesReceived += n.length, !(this.isTruncated && this.content.length >= this.maxSize))\n      if (this.content.length + n.length > this.maxSize) {\n        const r = this.maxSize - this.content.length;\n        r > 0 && (this.content += n.slice(0, r)), this.isTruncated = !0;\n      } else\n        this.content += n;\n  }\n  /**\n   * Returns the accumulated string, with truncation marker if truncated\n   */\n  toString() {\n    if (!this.isTruncated)\n      return this.content;\n    const t = this.totalBytesReceived - this.maxSize, n = Math.round(t / 1024);\n    return this.content + `\n... [output truncated - ${n}KB removed]`;\n  }\n  /**\n   * Clears all accumulated data\n   */\n  clear() {\n    this.content = \"\", this.isTruncated = !1, this.totalBytesReceived = 0;\n  }\n  /**\n   * Returns the current size of accumulated data\n   */\n  get length() {\n    return this.content.length;\n  }\n  /**\n   * Returns whether truncation has occurred\n   */\n  get truncated() {\n    return this.isTruncated;\n  }\n  /**\n   * Returns total bytes received (before truncation)\n   */\n  get totalBytes() {\n    return this.totalBytesReceived;\n  }\n}\nfunction Sy(e) {\n  let t = 0, n = 0;\n  for (let r = 0, i = e.length; r < i; r++)\n    e[r] === `\n` && (r > 0 && e[r - 1] === \"\\r\" ? t++ : n++);\n  return t > n ? \"CRLF\" : \"LF\";\n}\nfunction Ay(e) {\n  return e.includes(\"\t\") ? e.replace(/^\\t+/gm, (t) => \"  \".repeat(t.length)) : e;\n}\nfunction a0(e) {\n  const t = new ArrayBuffer(e.length), n = new Uint8Array(t);\n  for (let r = 0, i = e.length; r < i; r++)\n    n[r] = e[r];\n  return t;\n}\nfunction c0(e) {\n  return ArrayBuffer.isView(e);\n}\nfunction l0(e) {\n  return c0(e) && !(e instanceof DataView);\n}\nfunction Oy(e) {\n  return l0(e) ? e.constructor.name : \"\";\n}\nfunction Cy(e) {\n  return new DataView(e);\n}\nfunction Ty(e, t) {\n  return new t(e);\n}\nfunction Ry(e, ...t) {\n  let n = 0;\n  for (const s of t)\n    n += s.length;\n  const r = new e(n);\n  let i = 0;\n  for (const s of t)\n    r.set(s, i), i += s.length;\n  return r;\n}\nfunction Xr(e) {\n  return e.slice(0);\n}\nfunction xy(e, t = !0) {\n  const n = t ? Xr(e.buffer) : e.buffer;\n  return new DataView(n, e.byteOffset, e.byteLength);\n}\nfunction h0(e, t = !0) {\n  const n = t ? Xr(e.buffer) : e.buffer;\n  return new e.constructor(\n    n,\n    e.byteOffset,\n    e.length\n  );\n}\nfunction Yr() {\n  const e = Uint32Array.of(305419896), t = new Uint8Array(e.buffer);\n  switch (t[0] * 16777216 + t[1] * 65536 + t[2] * 256 + t[3]) {\n    case 305419896:\n      return !1;\n    case 2018915346:\n    default:\n      return !0;\n  }\n}\nconst f0 = (e, t = 16) => e.toString(t), d0 = (e, t = 16) => {\n  let n = e.toLowerCase();\n  const r = n.indexOf(\"0b\") == 0, i = n.indexOf(\"0o\") == 0, s = n.indexOf(\"0x\") == 0;\n  (r || i || s) && (n = n.slice(2)), r && (t = 2), i && (t = 8), s && (t = 16);\n  const o = parseInt(n, t);\n  if (Number.isNaN(o) || n.length == 0)\n    throw new Error(`radixStringToNumber(${e}, ${t}) 无法解析！`);\n  return o;\n};\nfunction Y(e, t) {\n  switch (t.constructor) {\n    case Float32Array:\n      return e;\n    case Uint32Array:\n      return Math.round(e * 4294967295);\n    case Uint16Array:\n      return Math.round(e * 65535);\n    case Uint8Array:\n      return Math.round(e * 255);\n    case Int32Array:\n      return Math.round(e * 2147483647);\n    case Int16Array:\n      return Math.round(e * 32767);\n    case Int8Array:\n      return Math.round(e * 127);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nfunction yt(e, t) {\n  switch (t.constructor) {\n    case Float32Array:\n      return e;\n    case Uint32Array:\n      return e / 4294967295;\n    case Uint16Array:\n      return e / 65535;\n    case Uint8Array:\n      return e / 255;\n    case Int32Array:\n      return Math.max(e / 2147483647, -1);\n    case Int16Array:\n      return Math.max(e / 32767, -1);\n    case Int8Array:\n      return Math.max(e / 127, -1);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nfunction ky(e, t, n = Yr()) {\n  const r = e.getUint32(t, n), i = e.getUint32(t + 4, n), s = n ? r + 2 ** 32 * i : 2 ** 32 * r + i;\n  return Number.isSafeInteger(s) || console.warn(s, \"exceeds MAX_SAFE_INTEGER. Precision may be lost\"), s;\n}\nfunction Ny(e, t, n = Yr()) {\n  const r = BigInt(32);\n  BigInt(0);\n  const i = BigInt(e.getUint32(t | 0, !!n) >>> 0), s = BigInt(\n    e.getUint32((t | 0) + 4 | 0, !!n) >>> 0\n  );\n  return n ? s << r | i : i << r | s;\n}\nfunction p0(e) {\n  return Array.from(new Uint8Array(e));\n}\nfunction Iy(e) {\n  const t = [];\n  for (; e > 0; ) {\n    const n = e & 255;\n    t.unshift(n), e = (e - n) / 256;\n  }\n  return t;\n}\nfunction Py(e) {\n  const t = [];\n  for (let n = 0, r = e.length; n < r; n += 2)\n    try {\n      t.push(d0(e.slice(n, n + 2), 16));\n    } catch {\n      continue;\n    }\n  return t;\n}\nfunction m0(e) {\n  const t = [];\n  for (let n = 0, r = e.length; n < r; n++) {\n    const i = e.charCodeAt(n);\n    i && t.push(i);\n  }\n  return t;\n}\nfunction zy(e) {\n  const t = [];\n  for (const n of e) {\n    const r = n.codePointAt(0);\n    r && t.push(r);\n  }\n  return t;\n}\nfunction ei(e) {\n  return new TextEncoder().encode(e);\n}\nfunction By(e) {\n  let t = 0;\n  for (let n = 0, r = e.length; n < r; n++)\n    t = t * 256 + e[n];\n  return t;\n}\nfunction D0(e) {\n  let t = \"\";\n  for (let n = 0, r = e.length; n < r; n++)\n    t += f0(e[n], 16).padStart(2, \"0\");\n  return t;\n}\nfunction g0(e) {\n  return String.fromCodePoint.apply(null, e);\n}\nfunction yo(e) {\n  return String.fromCharCode.apply(\n    null,\n    new Uint16Array(e)\n  );\n}\nfunction $y(e, t = tt.utf8) {\n  return new TextDecoder(t).decode(e);\n}\nfunction Ly(e, t) {\n  let n = t?.type;\n  const r = t?.mime, i = t?.encode;\n  if (!n && r)\n    switch (i) {\n      case tt.utf8:\n      case tt[\"utf-8\"]:\n        n = `${r};charset=${i}`;\n        break;\n      case tt.base64:\n        n = `${r};${i}`;\n        break;\n      default:\n        n = `${r}`;\n        break;\n    }\n  return new Blob([e], {\n    type: n\n  });\n}\nfunction My(e) {\n  let t = be[\"text/plain\"];\n  switch (new DataView(e).getUint32(0, Yr()).toString(16).toUpperCase()) {\n    case \"FFD8FFDB\":\n      t = be[\"image/jpeg\"];\n      break;\n    case \"FFD8FFE0\":\n    case \"FFD8FFE1\":\n    case \"FFD8FFE2\":\n    case \"FFD8FFE3\":\n      t = be[\"image/jpeg\"];\n      break;\n    case \"89504E47\":\n      t = be[\"image/png\"];\n      break;\n    case \"47494638\":\n      t = be[\"image/gif\"];\n      break;\n    case \"52494646\":\n      t = be[\"image/webp\"];\n      break;\n    case \"25504446\":\n      t = be[\"application/pdf\"];\n      break;\n    case \"504B0304\":\n      t = be[\"application/zip\"];\n      break;\n  }\n  return t;\n}\nfunction jy(e) {\n  let t;\n  return e instanceof File ? t = e.name : t = e, t.match(/\\.([0-9a-z]+)(?:[\\\\?#]|$)/i)?.[1] || \"\";\n}\nclass ve {\n  array;\n  itemSize;\n  // 组成每一个的 item 在 array 中占的个数\n  itemCount;\n  normalized;\n  updateRanges;\n  version;\n  _onChangeCallback() {\n  }\n  constructor(t, n, r = !1) {\n    if (Array.isArray(t))\n      throw new TypeError(\"BufferAttribute: array should be a Typed Array.\");\n    this.array = t, this.itemSize = n, this.itemCount = t.length / n, this.normalized = r, this.updateRanges = [], this.version = 0;\n  }\n  set needsUpdate(t) {\n    t === !0 && this.version++;\n  }\n  addUpdateRange(t, n) {\n    this.updateRanges.push({ start: t, count: n });\n  }\n  clearUpdateRanges() {\n    this.updateRanges.length = 0;\n  }\n  copy(t) {\n    return this.array = h0(t.array), this.itemSize = t.itemSize, this.itemCount = t.itemCount, this.normalized = t.normalized, this;\n  }\n  copyAt(t, n, r) {\n    t *= this.itemSize, r *= n.itemSize;\n    for (let i = 0, s = this.itemSize; i < s; i++)\n      this.array[t + i] = n.array[r + i];\n    return this;\n  }\n  copyArray(t) {\n    return this.array.set(t), this;\n  }\n  set(t, n = 0) {\n    return this.array.set(t, n), this;\n  }\n  getComponent(t, n) {\n    let r = this.array[t * this.itemSize + n];\n    return this.normalized && (r = yt(r, this.array)), r;\n  }\n  setComponent(t, n, r) {\n    return this.normalized && (r = Y(r, this.array)), this.array[t * this.itemSize + n] = r, this;\n  }\n  getX(t) {\n    let n = this.array[t * this.itemSize];\n    return this.normalized && (n = yt(n, this.array)), n;\n  }\n  setX(t, n) {\n    return this.normalized && (n = Y(n, this.array)), this.array[t * this.itemSize] = n, this;\n  }\n  getY(t) {\n    let n = this.array[t * this.itemSize + 1];\n    return this.normalized && (n = yt(n, this.array)), n;\n  }\n  setY(t, n) {\n    return this.normalized && (n = Y(n, this.array)), this.array[t * this.itemSize + 1] = n, this;\n  }\n  getZ(t) {\n    let n = this.array[t * this.itemSize + 2];\n    return this.normalized && (n = yt(n, this.array)), n;\n  }\n  setZ(t, n) {\n    return this.normalized && (n = Y(n, this.array)), this.array[t * this.itemSize + 2] = n, this;\n  }\n  getW(t) {\n    let n = this.array[t * this.itemSize + 3];\n    return this.normalized && (n = yt(n, this.array)), n;\n  }\n  setW(t, n) {\n    return this.normalized && (n = Y(n, this.array)), this.array[t * this.itemSize + 3] = n, this;\n  }\n  setXY(t, n, r) {\n    return t *= this.itemSize, this.normalized && (n = Y(n, this.array), r = Y(r, this.array)), this.array[t + 0] = n, this.array[t + 1] = r, this;\n  }\n  setXYZ(t, n, r, i) {\n    return t *= this.itemSize, this.normalized && (n = Y(n, this.array), r = Y(r, this.array), i = Y(i, this.array)), this.array[t + 0] = n, this.array[t + 1] = r, this.array[t + 2] = i, this;\n  }\n  setXYZW(t, n, r, i, s) {\n    return t *= this.itemSize, this.normalized && (n = Y(n, this.array), r = Y(r, this.array), i = Y(i, this.array), s = Y(s, this.array)), this.array[t + 0] = n, this.array[t + 1] = r, this.array[t + 2] = i, this.array[t + 3] = s, this;\n  }\n  onChange(t) {\n    return this._onChangeCallback = t, this;\n  }\n  clone() {\n    return R0(\n      this,\n      this.array,\n      this.itemSize,\n      this.normalized\n    ).copy(this);\n  }\n  toJSON() {\n    return {\n      itemSize: this.itemSize,\n      type: this.array.constructor.name,\n      array: Array.from(this.array),\n      normalized: this.normalized\n    };\n  }\n}\nclass Uy extends ve {\n  constructor(t, n, r = !1) {\n    super(new Int8Array(t), n, r);\n  }\n}\nclass Zy extends ve {\n  constructor(t, n, r = !1) {\n    super(new Uint8Array(t), n, r);\n  }\n}\nclass qy extends ve {\n  constructor(t, n, r = !1) {\n    super(new Uint8ClampedArray(t), n, r);\n  }\n}\nclass Wy extends ve {\n  constructor(t, n, r = !1) {\n    super(new Int16Array(t), n, r);\n  }\n}\nclass Gy extends ve {\n  constructor(t, n, r = !1) {\n    super(new Uint16Array(t), n, r);\n  }\n}\nclass Vy extends ve {\n  constructor(t, n, r = !1) {\n    super(new Int32Array(t), n, r);\n  }\n}\nclass Ky extends ve {\n  constructor(t, n, r = !1) {\n    super(new Uint32Array(t), n, r);\n  }\n}\nclass Qy extends ve {\n  isFloat16BufferAttribute = !0;\n  constructor(t, n, r = !1) {\n    super(new Uint16Array(t), n, r);\n  }\n}\nclass Jy extends ve {\n  constructor(t, n, r = !1) {\n    super(new Float32Array(t), n, r);\n  }\n}\nconst bo = \"[object Undefined]\", wo = \"[object Null]\", Fo = \"[object Boolean]\", y0 = \"[object Number]\", b0 = \"[object BigInt]\", Eo = \"[object String]\", vo = \"[object Symbol]\", w0 = \"[object Function]\", F0 = \"[object GeneratorFunction]\", E0 = \"[object Array]\", v0 = \"[object Map]\", _0 = \"[object Set]\", S0 = \"[object Date]\";\nfunction ue(e) {\n  return Object.prototype.toString.call(e);\n}\nfunction Hy(e, t) {\n  return t != null && e instanceof t;\n}\nfunction Xy(e) {\n  const t = typeof e;\n  return t !== \"object\" ? t : ue(e).replace(/^\\[object (\\S+)\\]$/, \"$1\").toLowerCase();\n}\nfunction Yy(e) {\n  return ue(e) === bo;\n}\nfunction e5(e) {\n  return ue(e) === wo;\n}\nfunction t5(e) {\n  return ue(e) === Fo;\n}\nfunction n5(e) {\n  return ue(e) === Eo;\n}\nfunction r5(e) {\n  return e === e + 0;\n}\nfunction A0(e) {\n  return ue(e) === vo;\n}\nfunction i5(e) {\n  const t = e ? Symbol.prototype : void 0, n = t ? t.valueOf : void 0;\n  return n ? Object(n.call(e)) : {};\n}\nfunction ti(e) {\n  const t = ue(e);\n  return t === bo || t === wo || t === Fo || t === y0 || t === Eo || t === vo || t === b0;\n}\nfunction Oe(e) {\n  const t = ue(e);\n  return t == w0 || t == F0;\n}\nfunction s5(e) {\n  return Oe(e) && Object.prototype.hasOwnProperty.call(e, \"toString\");\n}\nfunction o5(e) {\n  return /^function\\s+\\w*\\s*\\(\\s*\\)\\s*{\\s+\\[native code\\]\\s+}$/i.exec(\n    Oo(e)\n  ) != null;\n}\nfunction hn(e) {\n  if (!ct(e))\n    return !1;\n  const t = /[\\\\^$.*+?()[\\]{}|]/g, n = /^\\[object .+?Constructor\\]$/, r = RegExp(\n    \"^\" + Function.prototype.toString.call(Object.prototype.hasOwnProperty).replace(t, \"\\\\$&\").replace(\n      /hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\n      \"$1.*?\"\n    ) + \"$\"\n  );\n  return (Oe(e) ? r : n).test(Oo(e));\n}\nfunction O0(e, t) {\n  return e?.[t];\n}\nfunction ni(e, t) {\n  const n = O0(e, t);\n  return hn(n) ? n : void 0;\n}\nfunction u5() {\n  return ni(Object, \"create\");\n}\nconst er = ni(_, \"Map\"), _o = ni(_, \"WeakMap\");\nfunction Ge(e) {\n  return ue(e) === E0;\n}\nfunction a5(e) {\n  return e != null && typeof e.length == \"number\" && e.length > -1 && e.length % 1 == 0 && e.length <= Number.MAX_SAFE_INTEGER && !Oe(e);\n}\nfunction ct(e) {\n  const t = typeof e;\n  return !!e && (t == \"object\" || t == \"function\");\n}\nfunction ri(e) {\n  return !!e && typeof e == \"object\";\n}\nfunction Ee(e) {\n  if (Object.prototype.toString.call(e) !== \"[object Object]\")\n    return !1;\n  const t = Object.getPrototypeOf(e);\n  return t === null || t === Object.prototype;\n}\nfunction c5(e) {\n  const t = typeof e;\n  return t == \"string\" || t == \"number\" || t == \"symbol\" || t == \"boolean\" ? e !== \"__proto__\" : e === null;\n}\nfunction l5(e) {\n  const t = e && e.constructor, n = typeof t == \"function\" && t.prototype || Object.prototype;\n  return e === n;\n}\nconst h5 = wl(Object.getPrototypeOf, Object);\nfunction f5(e) {\n  if (!e || !e.hasOwnProperty)\n    return !1;\n  const t = [\"value\", \"initializer\", \"get\", \"set\"];\n  for (let n = 0, r = t.length; n < r; n++)\n    if (Object.hasOwnProperty.call(e, t[n]))\n      return !0;\n  return !1;\n}\nconst De = (e) => {\n  for (const t in e)\n    if (Object.prototype.hasOwnProperty.call(e, t))\n      return !1;\n  return !0;\n};\nfunction So(e) {\n  return typeof Promise < \"u\" && e instanceof Promise || ct(e) && typeof e.then == \"function\" && typeof e.catch == \"function\";\n}\nfunction C0(e) {\n  return ct(e) && typeof e.next == \"function\";\n}\nfunction d5(e) {\n  const t = e.constructor;\n  return t ? (t.name || t.displayName) === \"GeneratorFunction\" : !1;\n}\nfunction p5(e) {\n  return e && Oe(Symbol) ? Oe(e[Symbol.iterator]) : Ge(e);\n}\nfunction m5(e) {\n  return ri(e) && ue(e) == v0;\n}\nfunction D5(e) {\n  return ri(e) && ue(e) == _0;\n}\nfunction g5(e) {\n  return ri(e) && ue(e) == S0;\n}\nfunction y5(e) {\n  return e === e && !ct(e);\n}\nfunction ii(e) {\n  const t = [];\n  for (const n in e)\n    Object.prototype.hasOwnProperty.call(e, n) && t.push(n);\n  return t;\n}\nfunction b5(e) {\n  const t = [];\n  for (const n in e)\n    Object.prototype.hasOwnProperty.call(e, n) && t.push(e[n]);\n  return t;\n}\nfunction w5(e) {\n  const t = [];\n  for (const n in e)\n    Object.prototype.hasOwnProperty.call(e, n) && t.push([n, e[n]]);\n  return t;\n}\nfunction F5(e) {\n  const t = {};\n  return ii(e).forEach(\n    (n) => t[n] = Object.getOwnPropertyDescriptor(e, n)\n  ), t;\n}\nfunction E5(e, t) {\n  if (A0(e)) {\n    do {\n      if (t === Object.prototype)\n        return typeof t[e] < \"u\";\n      if (Object.prototype.hasOwnProperty.call(t, e))\n        return !0;\n    } while (t = Object.getPrototypeOf(t));\n    return !1;\n  } else\n    return e in t;\n}\nfunction At(e, t, n = !0) {\n  if (Ee(e) && Ee(t))\n    for (const r of ii(t))\n      Ee(e[r]) && Ee(t[r]) ? At(e[r], t[r], n) : (n || typeof e[r] > \"u\") && (e[r] = t[r]);\n  return e;\n}\nfunction T0(e) {\n  Object.freeze(e), Object.keys(e).forEach((t) => {\n    ct(e[t]) && T0(e[t]);\n  });\n}\nfunction v5(e) {\n  const t = Object.entries(e).slice(0), n = t.length;\n  let r = -1;\n  const i = n - 1;\n  for (; ++r < n; ) {\n    const s = r + Math.floor(Math.random() * (i - r + 1)), o = t[s];\n    t[s] = t[r], t[r] = o;\n  }\n  return Object.fromEntries(t);\n}\nfunction _5(e, t = {}) {\n  const n = Symbol(\"isa\");\n  function r(i) {\n    for (const s of Reflect.ownKeys(e))\n      Object.defineProperty(i.prototype, s, {\n        value: e[s],\n        writable: !0\n      });\n    return Object.defineProperty(i.prototype, n, { value: !0 }), i;\n  }\n  for (const i of Reflect.ownKeys(t))\n    Object.defineProperty(r, i, {\n      value: t[i],\n      enumerable: Object.propertyIsEnumerable.call(t, i)\n    });\n  return Object.defineProperty(r, Symbol.hasInstance, {\n    value: (i) => !!i[n]\n  }), r;\n}\nfunction S5(...e) {\n  class t {\n    constructor() {\n      for (const r of e)\n        At(this, new r());\n    }\n  }\n  for (const n of e)\n    At(t, n), At(t.prototype, n.prototype);\n  return t;\n}\nfunction A5(e) {\n  try {\n    postMessage(e, \"*\");\n  } catch (t) {\n    if (t?.code === 25)\n      return !1;\n  }\n  return !0;\n}\nfunction O5(e, t) {\n  return ti(e) || Oe(e) ? t = e : Ge(e) ? t = [...e] : t ? (Object.setPrototypeOf(t, e), Object.assign(t, e)) : t = Object.create(\n    Object.getPrototypeOf(e),\n    Object.getOwnPropertyDescriptors(e)\n  ), t;\n}\nfunction R0(e, ...t) {\n  return new e.constructor(...t);\n}\nfunction Ne(e, t = new _o()) {\n  if (!ct(e))\n    return e;\n  if (t.has(e))\n    return t.get(e);\n  let n;\n  const r = e.constructor;\n  if (Oe(e) ? n = e : r === Array ? n = [] : r === er ? n = new er() : r === Set ? n = /* @__PURE__ */ new Set() : r === RegExp ? n = n0(e) : r === Date ? n = new Date(e.getTime()) : typeof ArrayBuffer < \"u\" && r === ArrayBuffer ? n = Xr(e) : r === Promise ? n = new Promise((i, s) => {\n    e.then(\n      (o) => {\n        i(Ne(o, t));\n      },\n      (o) => {\n        s(Ne(o, t));\n      }\n    );\n  }) : r === Error ? n = Object.create(e) : n = Object.create(\n    Object.getPrototypeOf(e)\n    // Object.getOwnPropertyDescriptors(from)\n  ), e instanceof er)\n    e.forEach((i, s) => {\n      n.set(Ne(s, t), Ne(i, t));\n    });\n  else if (e instanceof Set)\n    e.forEach((i) => {\n      n.add(Ne(i, t));\n    });\n  else\n    for (const i in e)\n      try {\n        Object.getOwnPropertyDescriptor(e, i) && (n[i] = Ne(e[i], t));\n      } catch (s) {\n        if (s instanceof TypeError)\n          continue;\n        if (s instanceof ReferenceError)\n          continue;\n      }\n  if (Object.getOwnPropertySymbols) {\n    const i = Object.getOwnPropertySymbols(e);\n    for (let s = 0, o = i.length; s < o; s++) {\n      const u = i[s], a = Object.getOwnPropertyDescriptor(e, u);\n      a && (n[u] = Ne(e[u], t), Object.defineProperty(n, u, a));\n    }\n  }\n  return t.set(e, n), n;\n}\nfunction C5(e) {\n  if (e === null)\n    return null;\n  class t {\n  }\n  return t.prototype = e, new t();\n}\nfunction T5(e, t) {\n  e.prototype = Object.create(t.prototype), e.prototype.constructor = e;\n}\nfunction R5(e, t) {\n  return e.__proto__ = t, e;\n}\nfunction x0(e, t) {\n  return e === t || e !== e && t !== t;\n}\nfunction Ao(e, t) {\n  if (e === t)\n    return !0;\n  if (typeof e != \"object\" || e === null || typeof t != \"object\" || t === null)\n    return !1;\n  const n = Object.keys(e), r = Object.keys(t);\n  if (n.length !== r.length)\n    return !1;\n  for (const i of n)\n    if (!r.includes(i) || !Ao(e[i], t[i]))\n      return !1;\n  return !0;\n}\nfunction x5(e, t) {\n  return e.bind ? e.bind(t) : function(...r) {\n    return e.apply(t, r);\n  };\n}\nfunction k5(e) {\n  const t = new _o();\n  return new Proxy(e, {\n    get(n, r) {\n      const i = Reflect.get(n, r);\n      return typeof i != \"function\" ? i : (t.has(i) || t.set(i, i.bind(n)), t.get(i));\n    }\n  });\n}\nfunction N5(e, t, n) {\n  return Object.assign({}, n, { [e]: t });\n}\nfunction I5(e, t) {\n  if (!Ee(e))\n    return e;\n  for (const n in t)\n    Object.prototype.hasOwnProperty.call(t, n) && delete e[n];\n  return e;\n}\nfunction P5(e, t) {\n  if (!Ee(e))\n    return e;\n  for (const n in e)\n    Object.prototype.hasOwnProperty.call(e, n) && !t(n, e[n]) && delete e[n];\n  return e;\n}\nfunction z5(e, t) {\n  const n = {};\n  return Ee(e) && t.forEach((r) => {\n    Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]);\n  }), n;\n}\nfunction B5(e) {\n  return Ee(e) && ii(e).forEach((t) => {\n    delete e[t];\n  }), e;\n}\nfunction Oo(e) {\n  if (e != null) {\n    try {\n      return Function.prototype.toString.call(e);\n    } catch {\n    }\n    try {\n      return \"\" + e;\n    } catch {\n    }\n  }\n  return \"\";\n}\nfunction k0(e, t = [\"\", \"sign\", \"key\"]) {\n  return Ee(e) ? Object.keys(e).filter((n) => {\n    for (let r = 0, i = t.length; r < i; r++)\n      if (e[n] == t[r])\n        return !1;\n    return !0;\n  }).sort().map((n) => `${n}=${e[n]}`).join(\"&\") : String(e);\n}\nfunction N0(e, t, n = \"\") {\n  let r = [];\n  return !(typeof e == \"object\" && e !== null) || !(typeof t == \"object\" && t !== null) ? (e === t || r.push({\n    path: n,\n    oldValue: e,\n    newValue: t\n  }), r) : ((/* @__PURE__ */ new Set([...Object.keys(e), ...Object.keys(t)])).forEach((u) => {\n    const a = n ? `${n}.${u}` : u;\n    r = r.concat(N0(e[u], t[u], a));\n  }), r);\n}\nfunction $5(e) {\n  return e.join(\".\");\n}\nfunction vr(e, t) {\n  let n;\n  return typeof t == \"string\" ? n = t.split(\".\") : n = t, n.reduce(\n    (r, i) => r != null && r != null ? r[i] : r,\n    e\n  );\n}\nfunction L5(e, t) {\n  try {\n    return vr(e, t);\n  } catch {\n    return;\n  }\n}\nfunction M5(e, t, n) {\n  if (!e || !t)\n    return e;\n  let r;\n  typeof t == \"string\" ? r = t.split(\".\") : r = t;\n  let i = e;\n  for (let s = 0, o = r.length - 1; s < o; s++) {\n    const u = r[s];\n    (!(u in i) || typeof i[u] != \"object\" || i[u] === null) && (i[u] = Number.isNaN(Number(r[s + 1])) ? {} : []), i = i[u];\n  }\n  return i[r[r.length - 1]] = n, e;\n}\nfunction j5(e, t, n, r = !1) {\n  try {\n    const i = vr(e, n), s = vr(t, n);\n    return r ? !Ao(i, s) : i !== s;\n  } catch {\n    return !0;\n  }\n}\nfunction U5(e, t) {\n  const n = /* @__PURE__ */ Object.create(null);\n  let r = 0;\n  for (const i of e) {\n    const s = t(i, r++);\n    n[s] === void 0 && (n[s] = []), n[s].push(i);\n  }\n  return n;\n}\nfunction I0(e) {\n  return e != null;\n}\nfunction Co(e) {\n  return I0(e) && e !== Er && e !== Jr;\n}\nfunction Ve(e) {\n  return Co(e) && ti(e);\n}\nfunction P0(e, t) {\n  return It(t) && t >= e;\n}\nfunction z0(e, t) {\n  return It(t) && t <= e;\n}\nfunction B0(e, t) {\n  return at(String(t)) == e;\n}\nfunction $0(e) {\n  return Nt(\"email\", e);\n}\nfunction L0(e) {\n  return Nt(\"mobile-china\", e);\n}\nfunction M0(e) {\n  return Nt(\"date\", e);\n}\nfunction j0(e) {\n  return Nt(\"time\", e);\n}\nfunction U0(e) {\n  return Nt(\"datetime\", e);\n}\nfunction Z5(e, t) {\n  if (!$(e) || !$(t))\n    throw new Error(\"Invalid Date\");\n  return t.getTime() < e.getTime();\n}\nfunction q5(e, t) {\n  if (!$(e) || !$(t))\n    throw new Error(\"Invalid Date\");\n  return t.getTime() > e.getTime();\n}\nfunction W5(e, t, n) {\n  if (!$(e) || !$(t) || !$(n))\n    throw new Error(\"Invalid Date\");\n  return e.getTime() <= n.getTime() && n.getTime() <= t.getTime();\n}\nfunction Z0(e, t) {\n  return e.some((n) => n === t);\n}\nfunction Te(e, t) {\n  const n = t.reduce((r, i) => {\n    try {\n      const { predicate: s, message: o } = i;\n      s(e) || r.push(o);\n    } catch (s) {\n      r.push(String(s));\n    }\n    return r;\n  }, []);\n  return {\n    valid: n.length === 0,\n    errors: n\n  };\n}\nfunction G5(e) {\n  return (t) => {\n    const n = Te(t, [\n      {\n        predicate: Ve,\n        message: e?.emptyError || e?.error || \"邮箱不能为空\"\n      },\n      {\n        predicate: $0,\n        message: e?.error || \"邮箱格式不正确\"\n      }\n    ]);\n    if (!n.valid && e?.throw)\n      throw new Error(n.errors[0]);\n    return n;\n  };\n}\nfunction V5(e) {\n  return (t) => {\n    const n = Te(t, [\n      {\n        predicate: Ve,\n        message: e?.emptyError || e?.error || \"手机号不能为空\"\n      },\n      {\n        predicate: L0,\n        message: e?.error || \"手机号格式不正确\"\n      }\n    ]);\n    if (!n.valid && e?.throw)\n      throw new Error(n.errors[0]);\n    return n;\n  };\n}\nfunction K5(e) {\n  return (t) => {\n    const n = Te(t, [\n      {\n        predicate: Ve,\n        message: e?.emptyError || e?.error || \"日期不能为空\"\n      },\n      {\n        predicate: M0,\n        message: e?.error || \"日期格式不正确\"\n      }\n    ]);\n    if (!n.valid && e?.throw)\n      throw new Error(n.errors[0]);\n    return n;\n  };\n}\nfunction Q5(e) {\n  return (t) => {\n    const n = Te(t, [\n      {\n        predicate: Ve,\n        message: e?.emptyError || e?.error || \"时间不能为空\"\n      },\n      {\n        predicate: j0,\n        message: e?.error || \"时间格式不正确\"\n      }\n    ]);\n    if (!n.valid && e?.throw)\n      throw new Error(n.errors[0]);\n    return n;\n  };\n}\nfunction J5(e) {\n  return (t) => {\n    const n = Te(t, [\n      {\n        predicate: Ve,\n        message: e?.emptyError || e?.error || \"时间不能为空\"\n      },\n      {\n        predicate: U0,\n        message: e?.error || \"时间格式不正确\"\n      }\n    ]);\n    if (!n.valid && e?.throw)\n      throw new Error(n.errors[0]);\n    return n;\n  };\n}\nfunction H5(e) {\n  return (t) => {\n    const n = [\n      {\n        predicate: Ve,\n        message: e?.emptyError || e?.error || `${t} 不能为空`\n      }\n    ];\n    typeof e?.min == \"number\" && n.push({\n      predicate: Ct(P0, e.min),\n      message: e?.minError || e?.error || `${t} 应该大于等于 ${e.min}`\n    }), typeof e?.max == \"number\" && n.push({\n      predicate: Ct(z0, e.max),\n      message: e?.maxError || e?.error || `${t} 应该小于等于 ${e.max}`\n    });\n    const r = Te(t, n);\n    if (!r.valid && e?.throw)\n      throw new Error(r.errors[0]);\n    return r;\n  };\n}\nfunction X5(e, t) {\n  return (n) => {\n    const r = Te(n, [\n      {\n        predicate: Ve,\n        message: t?.emptyError || t?.error || \"不能为空\"\n      },\n      {\n        predicate: Ct(B0, e),\n        message: t?.error || \"长度不正确\"\n      }\n    ]);\n    if (!r.valid && t?.throw)\n      throw new Error(r.errors[0]);\n    return r;\n  };\n}\nfunction Y5(e, t) {\n  return (n) => {\n    const r = Te(n, [\n      {\n        predicate: Ct(Z0, e),\n        message: t?.error || \"不能为空\"\n      }\n    ]);\n    if (!r.valid && t?.throw)\n      throw new Error(r.errors[0]);\n    return r;\n  };\n}\nfunction It(e) {\n  return typeof e == \"number\" && !Number.isNaN(e);\n}\nfunction eb(e) {\n  return It(e) && Number.isFinite(e);\n}\nconst q0 = 2 ** 53 - 1, tb = -q0, W0 = 2 ** 31 - 1, nb = Math.pow(2, -52);\nfunction X(e, t) {\n  const n = parseFloat(e);\n  return Number.isNaN(n) ? typeof t == \"number\" ? t : NaN : n;\n}\nconst To = (e) => typeof e == \"number\" && e >= 0 && Number.isFinite(e), Ro = (e) => To(e) && e > 0, we = (e) => Ro(e) && e === Math.floor(e), rb = (e) => e === 1 / 0 || Ro(e), ib = (e) => e === 1 / 0 || To(e), tr = (e) => e === 1 / 0 || we(e), sb = (e) => e % 2 === 0;\nfunction G0(e) {\n  if (e <= 1)\n    return !1;\n  for (let t = 2; t <= Math.sqrt(e); t++)\n    if (e % t === 0)\n      return !1;\n  return !0;\n}\nfunction V0(e) {\n  for (; !G0(e); )\n    e++;\n  return e;\n}\nconst ob = (...e) => e.reduce((t, n) => t + n) / e.length;\nfunction ub(e, t, n) {\n  return typeof e == \"string\" ? (e = e.trim().toLowerCase(), e.indexOf(\"%\") > 0 ? X(e, t) / 100 * n : e.indexOf(\"vw\") > 0 ? X(e, t) / 100 * window.innerWidth : e.indexOf(\"vh\") > 0 ? X(e, t) / 100 * window.innerHeight : e.indexOf(\"vm\") > 0 ? X(e, t) / 100 * Math.min(window.innerWidth, window.innerHeight) : e == \"top\" || e == \"left\" ? 0 : e == \"center\" || e == \"middle\" ? n * 0.5 : e == \"bottom\" || e == \"right\" ? n : X(e, t)) : X(e, t);\n}\nfunction K0(e = 1e-6) {\n  return function(t, n) {\n    return Math.abs(t - n) < e;\n  };\n}\nfunction ab(e, t) {\n  const n = (e.toString().split(\".\")[1] || \"\").length, r = (t.toString().split(\".\")[1] || \"\").length, i = Math.pow(10, Math.max(n, r));\n  return (e * i + t * i) / i;\n}\nfunction N(e, t, n) {\n  const r = Math.min(t, n), i = Math.max(t, n);\n  return e < r ? r : e > i ? i : e;\n}\nfunction cb(e, t = 0) {\n  const n = Math.pow(10, t);\n  return Math.round(n * e) / n;\n}\nfunction Q0(e, t) {\n  return (e % t + t) % t;\n}\nfunction Xt(e, t, n) {\n  return typeof e == \"number\" && typeof t == \"number\" ? (1 - n) * e + n * t : typeof e == \"number\" ? e : typeof t == \"number\" ? t : 0;\n}\nfunction lb(e, t, n) {\n  const r = Math.max(e.length, t.length), i = new Array(r);\n  for (let s = 0; s < r; s++)\n    i[s] = Xt(e[s], t[s], n);\n  return i;\n}\nfunction hb(e, t, n, r) {\n  return (i) => n + (r - n) * ((i - e) / (t - e));\n}\nfunction fb(e, t, n) {\n  return (r) => {\n    const i = N(r, e, t);\n    return n == 0 ? i : t - i < n ? t : Math.round(i / n) * n;\n  };\n}\nfunction db(e, t = 12) {\n  return X(e, 0).toPrecision(t);\n}\nfunction xo(e, t = 2) {\n  return X(e, 0).toFixed(t);\n}\nfunction Fe(e, t = 2) {\n  return +xo(e, t);\n}\nfunction J0(e, t = 2) {\n  return String(Fe(e, t));\n}\nfunction pb(e, t = 2) {\n  const n = X(e, 0);\n  let r = 1;\n  for (let i = 0; i < t; i++)\n    r *= 10;\n  return Math.round(n * r) / r;\n}\nfunction H0(e) {\n  const [t, n] = String(e).split(\".\");\n  return Number(t);\n}\nfunction mb(e) {\n  const [t, n] = String(e).split(\".\");\n  return Number(n);\n}\nfunction Db(e, t = 4, n = \",\") {\n  const r = new RegExp(`\\\\d{1,${t}}(?=(\\\\d{${t}})+$)`, \"g\");\n  return String(e).replace(r, `$&${n}`);\n}\nfunction gb(e, t = \",\") {\n  const [n, r] = String(e).split(\".\"), i = n.replace(/\\B(?=(\\d{3})+(?!\\d))/g, t);\n  return r ? `${i}.${r}` : i;\n}\nfunction yb(e, t) {\n  const n = Hr(\"number-single\", String(e));\n  return {\n    hasNumber: !!n,\n    number: n && !Array.isArray(n) && n.fullMatch ? parseFloat(n.fullMatch) : Co(t) ? t : NaN,\n    prefix: n && !Array.isArray(n) && n.fullMatch ? e.substring(0, n.matchIndex) : \"\",\n    suffix: n && !Array.isArray(n) && n.fullMatch ? e.substring(n.matchIndex + n.fullMatch.length) : \"\"\n  };\n}\nfunction X0(e) {\n  const t = Hr(\"number\", e);\n  return t ? Array.isArray(t) ? t.map((n) => Number(n.fullMatch)) : [Number(t.fullMatch)] : [];\n}\nfunction bb() {\n  return Math.random() > 0.5 ? 1 : -1;\n}\nfunction Y0(e = 0, t = 100) {\n  return Math.random() * (t - e) + e;\n}\nfunction wb(e = 0, t = 100) {\n  return Math.floor(Y0(e, t));\n}\nfunction Fb(e = 0) {\n  return () => ++e;\n}\nconst Eb = (e) => new Array(e).fill(void 0);\nfunction vb(e, t = void 0) {\n  return Array.from({ length: e }, (n, r) => t);\n}\nfunction _b(e, t) {\n  const n = new Array(e);\n  let r = -1;\n  for (; ++r < e; )\n    n[r] = t(r);\n  return n;\n}\nfunction el(e, t, n = void 0) {\n  return Array.from(\n    { length: e },\n    () => new Array(t).fill(n)\n  );\n}\nfunction Sb(e, t) {\n  return [...e[t]];\n}\nfunction Ab(e, t) {\n  return e.map((n) => n.filter((r, i) => i === t)[0]);\n}\nfunction Ob(e) {\n  const t = e.length, n = new e.constructor(t);\n  return t && typeof e[0] == \"string\" && Object.prototype.hasOwnProperty.call(e, \"index\") && (n.index = e.index, n.input = e.input), n;\n}\nfunction Cb(e) {\n  return e[0].length ? el(e.length, e[0].length) : new Error(\"Illegal, Array must be any[][]!\");\n}\nfunction tl(e, t, n) {\n  [e[t], e[n]] = [e[n], e[t]];\n}\nfunction Tb(e, t) {\n  return tl(e, 0, t);\n}\nfunction Rb(e, t, n) {\n  e.splice(N(t, 0, e.length), 0, n);\n}\nfunction nl(e, t) {\n  const n = e.findIndex((r) => r === t);\n  n >= 0 && e.splice(n, 1);\n}\nfunction xb(e, t) {\n  return e.includes(t) ? e.filter((n) => n !== t) : [...e, t];\n}\nfunction kb(e) {\n  if (e.length)\n    return e[0];\n}\nfunction Nb(e) {\n  if (e.length)\n    return e[e.length - 1];\n}\nfunction Ib(e) {\n  const t = [...e];\n  t.sort((r, i) => r - i);\n  const n = Math.floor(t.length / 2);\n  return t[n];\n}\nfunction Pb(e, t) {\n  const n = e.length ?? 0;\n  let r = -1;\n  for (; ++r < n; )\n    t(e[r], r, e);\n}\nfunction zb(e, t) {\n  let n = 0;\n  for (const r of e)\n    n += +!!t(r);\n  return n;\n}\nfunction Bb(e, t) {\n  const n = e.length ?? 0;\n  let r = -1;\n  for (; ++r < n; )\n    if (t(e[r], r, e) === !1)\n      return !1;\n  return !0;\n}\nfunction $b(e, t) {\n  const n = e.length ?? 0;\n  let r = -1;\n  for (; ++r < n; )\n    if (t(e[r], r, e) === !0)\n      return !0;\n  return !1;\n}\nfunction rl(e, t) {\n  for (let n = 0, r = e.length; n < r; n++)\n    if (e[n] == t)\n      return !0;\n  return !1;\n}\nfunction il(e, t = 1) {\n  return e.splice(0, t);\n}\nfunction Lb(e) {\n  return Array.isArray(e) && e.length > 0 && Object.keys(e).length > 0;\n}\nconst Mb = (e, t) => e.length === t.length && e.every((n, r) => n === t[r]);\nfunction sl(e = [], t = []) {\n  const n = e.length ?? 0, r = t.length ?? 0;\n  for (let s = 0; s < r; s++)\n    e[s] = t[s];\n  let i = Math.max(0, n - r);\n  for (; i > 0; )\n    e.pop(), i--;\n  return e;\n}\nfunction jb(e) {\n  for (; e.length; )\n    e.pop();\n}\nconst Ub = ([...e]) => e.sort(() => Math.random() - 0.5);\nfunction Zb(e, t) {\n  return e.flatMap((n, r) => r ? [t(r), n] : [n]);\n}\nfunction* ko(e) {\n  for (const t of e)\n    Ge(t) ? yield* ko(t) : yield t;\n}\nfunction qb(e) {\n  if (Ge(e))\n    return [...ko(e)];\n}\nfunction ol(e) {\n  let t = [];\n  return e.forEach((n) => {\n    Ge(n) ? t = t.concat(ol(n)) : t.push(n);\n  }), t;\n}\nfunction ul(e) {\n  return e.reduce((t, n) => t.concat(Ge(n) ? ul(n) : n), []);\n}\nfunction Wb(e) {\n  return e.flat(1 / 0);\n}\nfunction Gb(e) {\n  let t = JSON.stringify(e);\n  return t = t.replace(/(\\[|\\])/g, \"\"), t = \"[\" + t + \"]\", JSON.parse(t);\n}\nfunction Vb(e) {\n  return [...new Set(e)];\n}\nfunction Kb(e, ...t) {\n  return t.forEach((n) => {\n    rl(e, n) || e.push(n);\n  }), e;\n}\nfunction Qb(e, t) {\n  return [.../* @__PURE__ */ new Set([...e, ...t])];\n}\nfunction Jb(e, t) {\n  const n = /* @__PURE__ */ new Set();\n  for (const r of e)\n    n.add(r);\n  for (const r of t)\n    n.add(r);\n  return n;\n}\nfunction Hb(e, t) {\n  return [...new Set(e.filter((n) => t.includes(n)))];\n}\nfunction Xb(e, t) {\n  const n = /* @__PURE__ */ new Map();\n  e.forEach((i) => {\n    n.set(i, !0);\n  });\n  const r = [];\n  return t.forEach((i) => {\n    n.has(i) && (r.push(i), n.delete(i));\n  }), r;\n}\nfunction Yb(e, t) {\n  return new Set([...e].filter((n) => t.has(n)));\n}\nfunction e6(e, t) {\n  if (e.size === 0 || t.size === 0)\n    return !1;\n  for (const n of e)\n    if (t.has(n))\n      return !0;\n  return !1;\n}\nfunction t6(e, t) {\n  return [...new Set(e.filter((n) => !t.includes(n)))];\n}\nfunction n6(e, t) {\n  const n = /* @__PURE__ */ new Set();\n  for (const r of e)\n    t.has(r) || n.add(r);\n  return n;\n}\nfunction r6(e) {\n  for (let t = e.length - 1; t >= 0; --t)\n    if (e[t] >= 65535)\n      return !0;\n  return !1;\n}\nclass Yt extends Array {\n  constructor(t) {\n    super(t), this.fill(0);\n  }\n}\nconst No = (e) => we(e) ? e <= Math.pow(2, 8) ? Uint8Array : e <= Math.pow(2, 16) ? Uint16Array : e <= Math.pow(2, 32) ? Uint32Array : e <= Number.MAX_SAFE_INTEGER ? Yt : null : null;\nfunction Ut(e, t) {\n  let n = e.length;\n  for (; n--; )\n    if (x0(e[n][0], t))\n      return n;\n  return -1;\n}\nfunction ji(e) {\n  const t = Array(e.size);\n  return e.forEach(function(n, r) {\n    t.push([r, n]);\n  }), t;\n}\nfunction al(e, t) {\n  return e.set(t[0], t[1]), e;\n}\nfunction i6(e, t) {\n  return (t ? t(ji(e), !0) : ji(e)).reduce(al, /* @__PURE__ */ new Map());\n}\nfunction Ui(e) {\n  const t = Array(e.size);\n  return e.forEach((n, r) => {\n    t[r] = n;\n  }), t;\n}\nfunction cl(e, t) {\n  return e.add(t), e;\n}\nfunction s6(e, t) {\n  return (t ? t(Ui(e), !0) : Ui(e)).reduce(cl, /* @__PURE__ */ new Set());\n}\nfunction o6(e, t = \"Asia/Shanghai\") {\n  const n = (/* @__PURE__ */ new Date()).getTimezoneOffset() * 60 * 1e3;\n  return new Date(e.getTime() - n);\n}\nfunction M() {\n  return (typeof performance == \"object\" && performance && typeof performance.now == \"function\" ? performance : Date).now();\n}\nfunction u6(e) {\n  return e.getTime() - Date.now();\n}\nfunction Zt(e = /* @__PURE__ */ new Date()) {\n  return e.getTime();\n}\nfunction a6(e = /* @__PURE__ */ new Date(), t = \"yyyy-mm-dd hh:ii:ss.SSS\") {\n  return Pt(e, t);\n}\nfunction $(e) {\n  const t = e.valueOf();\n  return !Number.isNaN(t);\n}\nconst si = 864e5;\nfunction Io(e) {\n  return e > 1e12;\n}\nfunction ll(e) {\n  return e > 1e9 && !Io(e);\n}\nfunction Le(e) {\n  if (e == null)\n    return /* @__PURE__ */ new Date(NaN);\n  if (e instanceof Date)\n    return new Date(e);\n  if (typeof e == \"string\") {\n    const t = e.match(\n      /^(\\d{4})[-/.]?(\\d{1,2})?[-/.]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?[zZ]?$/\n    );\n    if (t && t[1]) {\n      const n = parseInt(t[1]), r = t[2] ? Math.max(parseInt(t[2]) - 1, 0) : 0, i = t[3] ? parseInt(t[3]) : 1, s = t[4] ? parseInt(t[4]) : 0, o = t[5] ? parseInt(t[5]) : 0, u = t[6] ? parseInt(t[6]) : 0, a = t[7] ? parseInt(t[7].substring(0, 3)) : 0;\n      return /Z$/i.test(e) ? new Date(Date.UTC(n, r, i, s, o, u, a)) : new Date(n, r, i, s, o, u, a);\n    } else\n      return /* @__PURE__ */ new Date(NaN);\n  }\n  return Array.isArray(e) ? new Date(\n    e[0],\n    Math.max(e[1] - 1, 0),\n    e[2] || 1,\n    e[3] || 0,\n    e[4] || 0,\n    e[5] || 0,\n    e[6] || 0\n  ) : ll(e) ? new Date(Io(e) ? e : e * 1e3) : /* @__PURE__ */ new Date(NaN);\n}\nfunction c6(e, t = 3, n = \":\") {\n  const r = Math.max(e.length, 6);\n  let i = \"\";\n  for (let o = 0; o < r - 4; o++)\n    i += e[o] || \"0\";\n  const s = [\n    i,\n    // 小时\n    \"\" + (e[r - 4] || \"0\") + (e[r - 3] || \"0\"),\n    // 分钟\n    \"\" + (e[r - 2] || \"0\") + (e[r - 1] || \"0\")\n    // 秒\n  ];\n  switch (t) {\n    case 1:\n      return s[0];\n    case 2:\n      return s[0] + n + s[1];\n    case 3:\n      return s[0] + n + s[1] + n + s[2];\n  }\n}\nfunction hl(e, t = 3) {\n  const n = Math.max(e.length, 6);\n  let r = 0;\n  for (let o = 0; o < n - 4; o++)\n    r = r * 10 + (e[o] || 0);\n  const i = [\n    Math.floor(r),\n    // 小时\n    Math.floor((e[n - 4] || 0) * 10 + (e[n - 3] || 0)),\n    // 分钟\n    Math.floor((e[n - 2] || 0) * 10 + (e[n - 1] || 0))\n    // 秒\n  ];\n  let s = \"\";\n  switch (t) {\n    case 1:\n      i[0] ? s += i[0] + \"小时\" : (i[1] || i[2]) && (s += \"1小时\");\n      break;\n    case 2:\n      i[0] && (s += i[0] + \"小时\"), i[1] ? s += i[1] + \"分钟\" : i[2] && (s += \"1分钟\");\n      break;\n    case 3:\n    default:\n      i[0] && (s += i[0] + \"小时\"), (i[1] || i[2]) && (s += i[1] + \"分钟\"), i[2] && (s += i[2] + \"秒\");\n      break;\n  }\n  return s || \"0秒\";\n}\nfunction en(e) {\n  const t = Math.max(e.length, 6);\n  let n = 0;\n  n += (e[t - 2] || 0) * 10 + (e[t - 1] || 0), n += ((e[t - 4] || 0) * 10 + (e[t - 3] || 0)) * 60;\n  let r = 0;\n  for (let i = 0; i < t - 4; i++)\n    r = r * 10 + (e[i] || 0);\n  return n += r * 60 * 60, Math.floor(Math.max(0, n));\n}\nfunction it(e, t = !1) {\n  let n = 0;\n  if (typeof e == \"number\" ? n = e : n = en(e), n <= 0)\n    return [0, 0, 0, 0, 0, 0];\n  const r = [], i = n % 60;\n  r.unshift(i % 10), r.unshift(Math.floor(i / 10)), n = Math.floor(n / 60);\n  const s = n % 60;\n  if (r.unshift(s % 10), r.unshift(Math.floor(s / 10)), n = Math.floor(n / 60), t) {\n    const o = n % 100;\n    for (r.unshift(o % 10), r.unshift(Math.floor(o / 10)), n = Math.floor(n / 100); n; )\n      r.unshift(n % 10), n = Math.floor(n / 10);\n  } else {\n    const o = n % 24;\n    r.unshift(o % 10), r.unshift(Math.floor(o / 10));\n  }\n  return r;\n}\nfunction l6(e, t = !1) {\n  if (e instanceof Date) {\n    const o = e.getHours(), u = e.getMinutes(), a = e.getSeconds();\n    return it(o * 60 * 60 + u * 60 + a, !1);\n  }\n  const n = X0(e);\n  let r = 0, i = 0, s = 0;\n  for (let o = 0, u = Math.max(n.length, 3); o < u; o++) {\n    const a = Math.floor(Math.abs(n[o] || 0));\n    o == 0 ? t ? r = a : r = a % 24 : o == 1 ? i = a : o == 2 && (s = a);\n  }\n  return it(r * 60 * 60 + i * 60 + s, t);\n}\nfunction Zi(e, t = !1) {\n  const n = e[0] || 0, r = e[1] || 0, i = e[2] || 0;\n  return it(n * 60 * 60 + r * 60 + i, t);\n}\nfunction fl(e, t, n = !1) {\n  const r = ($(e) && $(t) ? Math.abs(t.getTime() - e.getTime()) : 0) / 1e3;\n  return it(r, n);\n}\nfunction h6(e, t = 1, n = !1) {\n  return e[e.length - 1] += t, it(e, n);\n}\nfunction f6(e, t = 1, n = !1) {\n  return e[e.length - 1] -= t, it(e, n);\n}\nfunction d6(e, t) {\n  sl(t, e);\n}\nfunction p6(e, t, n) {\n  const r = en(e), i = en(t), s = en(n);\n  return i >= r ? s >= r && s <= i : s >= r || s <= i;\n}\nfunction qi(e, t) {\n  if (!$(e))\n    throw new Error(`Date(${e}) is Invalid !`);\n  if (!$(t))\n    throw new Error(`Date(${t}) is Invalid !`);\n  return Math.ceil((t.getTime() - e.getTime()) / si);\n}\nfunction m6(e, t, n) {\n  return !(!$(e) || !$(t) || !$(n) || qi(e, n) < 0 || qi(n, t) < 0);\n}\nfunction Pt(e, t = \"yyyy-mm-dd hh:ii:ss\") {\n  if (!$(e))\n    return \"\";\n  const n = /(y+)/.exec(t);\n  if (n && n[1]) {\n    const i = n[1];\n    t = t.replace(\n      i,\n      // (date.getFullYear() + \"\").substring(Math.max(4 - year.length, 0))\n      (e.getFullYear() + \"\").substring(4 - i.length)\n    );\n  }\n  const r = {\n    \"m+\": e.getMonth() + 1,\n    //月份\n    \"d+\": e.getDate(),\n    //日\n    \"h+\": e.getHours(),\n    //小时\n    \"i+\": e.getMinutes(),\n    //分\n    \"s+\": e.getSeconds(),\n    //秒\n    \"q+\": Math.floor((e.getMonth() + 3) / 3),\n    // 季度\n    \"S+\": e.getMilliseconds()\n    //毫秒\n  };\n  for (const i in r) {\n    const s = new RegExp(\"(\" + i + \")\").exec(t);\n    if (s && s[1]) {\n      const o = s[1];\n      t = t.replace(\n        o,\n        // d.length == 1 ? \"\" + o[k] : (\"00\" + o[k]).substring((\"\" + o[k]).length)\n        // d.length == 1\n        //   ? \"\" + o[k]\n        //   : (\"00\" + o[k]).substring((\"\" + o[k]).length - d.length + 2)\n        o.length === 1 ? \"\" + r[i] : (\"00\" + r[i]).slice(-o.length)\n      );\n    }\n  }\n  return t;\n}\nfunction D6(e = \"yyyy-mm-dd hh:ii:ss\") {\n  return (t) => Pt(t, e);\n}\nfunction g6(e, t = \"-\") {\n  return Pt(e, `yyyy${t}mm${t}dd`);\n}\nfunction y6(e, t = \":\") {\n  return Pt(e, `hh${t}ii${t}ss`);\n}\nfunction b6(e) {\n  return $(e) ? e.toTimeString().slice(0, 8) : \"\";\n}\nfunction _r(e, t = \"-\", n = \":\") {\n  return Pt(\n    e,\n    `yyyy${t}mm${t}dd hh${n}ii${n}ss`\n  );\n}\nfunction w6(e) {\n  return $(e) ? [0, 6].indexOf(e.getDay()) !== -1 : !1;\n}\nfunction F6(e) {\n  return $(e) ? Math.floor(\n    (e.getTime() - new Date(e.getFullYear(), 0, 0).getTime()) / si\n  ) : -1;\n}\nfunction dl(e, t) {\n  return new Date(e, t, 0).getDate();\n}\nfunction pl(e, t) {\n  const n = new Date(e, t, 1);\n  return n.setHours(0, 0, 0, 0), n.getTime() - 1;\n}\nfunction E6(e, t) {\n  return pl(e, t) + 1;\n}\nfunction ml(e, t) {\n  const n = new Date(e, t - 1, 1);\n  return n.setHours(0, 0, 0, 0), n.getTime();\n}\nfunction v6(e, t) {\n  return ml(e, t) - 1;\n}\nfunction _6(e, t = 1) {\n  const n = typeof e == \"string\" ? Le(e) : new Date(e);\n  n.setHours(0, 0, 0, 0);\n  const r = new Date(n);\n  return n.setMonth(n.getMonth() + t), n.getDate() < r.getDate() && n.setDate(0), new Date(n.getTime() - 1);\n}\nfunction S6(e, t = 1, n = !1) {\n  const r = typeof e == \"string\" ? Le(e) : new Date(e);\n  r.setHours(0, 0, 0, 0);\n  const i = new Date(r);\n  return r.setMonth(r.getMonth() + t), r.getDate() < i.getDate() ? (r.setDate(0), r) : n ? r : new Date(r.getTime() - 1);\n}\nfunction qt(e, t = 1) {\n  const n = typeof e == \"string\" ? Le(e) : e;\n  return new Date(n.getTime() + t * si);\n}\nfunction bt(e) {\n  const t = e.getFullYear(), n = e.getMonth() + 1, r = e.getDate();\n  let i = e.getDay();\n  return i == 0 && (i = 7), {\n    year: t,\n    month: n,\n    day: r,\n    weekday: i,\n    monthDays: dl(t, n),\n    date: new Date(e)\n  };\n}\nfunction A6(e = \"\") {\n  const t = [], n = bt(\n    typeof e == \"string\" ? e != \"\" ? Le(e) : /* @__PURE__ */ new Date() : e\n  );\n  function r(i, s) {\n    if (i.month !== n.month)\n      return;\n    const o = [];\n    s == \"forward\" ? t.unshift(o) : t.push(o), o.push(i);\n    let u = i;\n    for (let a = i.weekday - 1; a >= 1; a--)\n      u = bt(qt(u.date, -1)), o.unshift(u);\n    u = i;\n    for (let a = i.weekday + 1; a <= 7; a++)\n      u = bt(qt(u.date, 1)), o.push(u);\n    o[0].day > 1 && (s == \"both\" || s == \"forward\") && r(bt(qt(o[0].date, -1)), \"forward\"), o[6].day < n.monthDays && (s == \"both\" || s == \"backward\") && r(bt(qt(o[6].date, 1)), \"backward\");\n  }\n  return r(n, \"both\"), t;\n}\nconst Dl = () => {\n}, O6 = (e) => e, Po = (e) => () => e, C6 = Po(!0), T6 = Po(!1), R6 = (e) => ({ value: e, done: !0 });\nfunction x6(e, t, n) {\n  switch (n.length) {\n    case 0:\n      return e.call(t);\n    case 1:\n      return e.call(t, n[0]);\n    case 2:\n      return e.call(t, n[0], n[1]);\n    case 3:\n      return e.call(t, n[0], n[1], n[2]);\n  }\n  return e.apply(t, n);\n}\nfunction gl(e, t = 300, n) {\n  const r = typeof n?.leading == \"boolean\" ? n.leading : !0, i = typeof n?.trailing == \"boolean\" ? n.trailing : !1;\n  let s = !0, o;\n  return function(...a) {\n    if (!s) {\n      o = a;\n      return;\n    }\n    s = !1, r && e.apply(n?.thisArg || this, a), i && (o = a), setTimeout(() => {\n      i && e.apply(n?.thisArg || this, o), o = void 0, s = !0;\n    }, t);\n  };\n}\nfunction yl(e, t = 300, n) {\n  let r, i = 0;\n  return function(...o) {\n    i || (i = M()), r && (clearTimeout(r), r = void 0);\n    let u = !1;\n    n?.throttle && (u = M() - i >= t), u ? (e.apply(n?.thisArg || this, o), i = M()) : r = setTimeout(() => {\n      e.apply(n?.thisArg || this, o), n?.throttle && (i = M()), r = void 0;\n    }, t);\n  };\n}\nfunction k6(e, t) {\n  let n;\n  return function(...r) {\n    return n || (n = e.apply(t || this, r)), n;\n  };\n}\nfunction Ct(e, ...t) {\n  const n = e.length;\n  return t = t || [], function(...r) {\n    const i = t.concat(Array.prototype.slice.call(r));\n    return i.length < n ? Ct.call(this, e, ...i) : e.apply(this, i);\n  };\n}\nfunction bl(...e) {\n  return e.length === 0 ? (...t) => t : e.length === 1 ? e[0] : e.reduce(\n    (t, n) => (...r) => t(n(...r))\n  );\n}\nfunction N6(...e) {\n  return e.length === 0 ? (...t) => t : e.length === 1 ? e[0] : e.reduceRight(\n    (t, n) => (...r) => t(n(...r))\n  );\n}\nfunction I6(...e) {\n  return e.length === 0 ? (...t) => t : e.length === 1 ? e[0] : e.reduceRight(\n    (t, n) => (...r) => n(...r, t),\n    Dl\n  );\n}\nfunction P6(e) {\n  for (; e && e instanceof Function; )\n    e = e();\n  return e;\n}\nfunction z6(e) {\n  let t, n = !1;\n  const r = [];\n  return function(...s) {\n    if (r.push(s), !n) {\n      for (n = !0; r.length; )\n        t = e.apply(this, r.shift());\n      return n = !1, t;\n    }\n  };\n}\nfunction B6(e, t) {\n  return function(...n) {\n    return e.apply(t || this, n.reverse());\n  };\n}\nfunction wl(e, t) {\n  return function(n) {\n    return e(t(n));\n  };\n}\nfunction $6(e, t, n) {\n  return n = Math.max(n === void 0 ? e.length - 1 : n, 0), function(...r) {\n    const i = Math.max(r.length - n, 0), s = Array(i);\n    let o = -1;\n    for (; ++o < i; )\n      s[o] = r[n + o];\n    o = -1;\n    const u = Array(n + 1);\n    for (; ++o < n; )\n      u[o] = r[o];\n    return u[n] = t(s), e.apply(this, u);\n  };\n}\nfunction Fl(e = 0, t) {\n  const n = t?.min ?? 300, r = t?.max ?? 6e4, i = t?.exponent ?? 2, s = t?.factor ?? 0.5;\n  let o = n * Math.pow(i, e);\n  if (s) {\n    const u = Math.random(), a = Math.floor(u * s * o);\n    o = Math.floor(u * 10) & 1 ? o + a : o - a;\n  }\n  return Math.min(o, r) | 0;\n}\nfunction zt(e, t) {\n  const n = t?.maxRetries ?? 0;\n  return async function(...i) {\n    const s = t?.thisArg || this;\n    let o;\n    for (let u = 0; u <= n; u++)\n      try {\n        return await e.call(s, ...i);\n      } catch (a) {\n        if (o = a, t?.shouldRetry && !t.shouldRetry(o))\n          throw o;\n        if (u === n)\n          break;\n        const c = typeof t?.retryDelay == \"function\" ? t.retryDelay(u) : t?.retryDelay ?? Fl(u);\n        await new Promise((l) => setTimeout(l, c));\n      }\n    throw o;\n  };\n}\nfunction Ke(e, t = {\n  // createCache: () => new Map()\n  // createCache: () => new MapCache()\n  // createCache: () => new TTLCache({ max: 500 })\n  // createCache: () => new TTLCache({ ttl: 60 * 1000 })\n  // createCache: () =>\n  //   new TTLCache({ max: 500, ttl: 60 * 1000 }, new MapCache())\n  // createCache: () => new LRUCache({ max: 500 })\n}) {\n  if (typeof e != \"function\")\n    throw new TypeError(\"Expected a function\");\n  const n = function(...r) {\n    const i = t?.thisArg || this, s = t?.cacheKeyResolver ? t.cacheKeyResolver.apply(i, r) : r[0], o = n.cache;\n    if (o.has(s))\n      return o.get(s);\n    const u = e.apply(i, r);\n    return u instanceof Promise && u.catch(() => o.delete(s)), n.cache = o.set(s, u) || o, u;\n  };\n  return n.cache = t?.createCache ? t.createCache() : /* @__PURE__ */ new Map(), n;\n}\nfunction L6(e, t) {\n  if (typeof e != \"function\")\n    throw new TypeError(\"Expected a function\");\n  let n = null, r;\n  return function(...s) {\n    const o = t?.thisArg || this;\n    return (!n || s.length !== n.length || s.some((a, c) => !Object.is(a, n?.[c]))) && (n = [...s], r = e.call(o, ...s), So(r) && r.catch(() => {\n      n = null;\n    })), r;\n  };\n}\nfunction M6(e, t) {\n  return e = zt(e, t), e = Ke(e, t), e;\n}\nfunction j6(e, t) {\n  const { ignoreResult: n = () => !1 } = t || {};\n  return async (...r) => {\n    for (let i = 0, s = e.length; i < s; i++)\n      try {\n        const o = await e[i](...r);\n        if (!n(o))\n          return o;\n      } catch (o) {\n        t?.onError?.(o);\n      }\n    throw new Error(\"tryEach failed. No function returned a value\");\n  };\n}\nfunction U6(e) {\n  return (t) => (console.log(e + \": \" + t), t);\n}\nfunction Z6(e) {\n  return (t) => t.map(e);\n}\nfunction q6(e) {\n  return (t, n) => t.reduce(e, n);\n}\nArray.prototype.ap = function(e) {\n  return this.reduce((t, n) => t.concat(e.map(n)), []);\n};\nfunction W6(e) {\n  return (...t) => (\n    // thunk 函数签名\n    (n) => {\n      let r;\n      try {\n        e.apply(this, [\n          ...t,\n          (i, ...s) => {\n            r || (r = !0, n(i, ...s));\n          }\n        ]);\n      } catch (i) {\n        n(i);\n      }\n    }\n  );\n}\nfunction G6(e) {\n  return new Promise((t, n) => {\n    e.call(this, (r, ...i) => r ? n(r) : t(i));\n  });\n}\nasync function* V6(e) {\n  for (const t of e)\n    yield t;\n}\nasync function K6(e) {\n  const t = [];\n  for await (const n of e)\n    t.push(n);\n  return t;\n}\nasync function Q6(e) {\n  let t = Er;\n  for await (const n of e)\n    t = n;\n  if (t === Er)\n    throw new Error(\"No items in generator\");\n  return t;\n}\nasync function J6(e) {\n  let t;\n  do\n    t = await e.next();\n  while (!t.done);\n  return t.value;\n}\nasync function H6(e, t) {\n  const n = C0(e) ? e : e(), r = async (i) => {\n    i.value && i.value.then ? i.value.then(async (s) => {\n      await t?.(s), i.done || await r(await n.next(s));\n    }).catch(async (s) => {\n      if (i.done || !n.throw)\n        throw new Error(s);\n      await r(await n.throw(s));\n    }) : typeof i.value == \"function\" ? i.value(async (s, o) => {\n      if (s) {\n        if (i.done || !n.throw)\n          throw new Error(s);\n        return await r(await n.throw(s));\n      }\n      await t?.(o), i.done || await r(await n.next(o));\n    }) : (await t?.(i.value), i.done || await r(await n.next(i.value)));\n  };\n  await r(await n.next());\n}\nasync function* X6(e, t = 1 / 0) {\n  const n = (s) => {\n    const o = s.next().then(({ done: u, value: a }) => ({\n      done: u,\n      value: a,\n      generator: s,\n      promise: o\n    }));\n    return o;\n  }, r = [...e], i = /* @__PURE__ */ new Set();\n  for (; i.size < t && r.length > 0; ) {\n    const s = r.shift();\n    i.add(n(s));\n  }\n  for (; i.size > 0; ) {\n    const { done: s, value: o, generator: u, promise: a } = await Promise.race(i);\n    if (i.delete(a), !s)\n      i.add(n(u)), o !== void 0 && (yield o);\n    else if (r.length > 0) {\n      const c = r.shift();\n      i.add(n(c));\n    }\n  }\n}\nfunction El() {\n  let e, t;\n  return { promise: new Promise((r, i) => {\n    e = r, t = i;\n  }), resolve: e, reject: t };\n}\nfunction Y6(e, t) {\n  Promise.resolve().then(e).then((n) => {\n    t(null, n);\n  }).catch((n) => {\n    t(n);\n  });\n}\nfunction Sr(e, t = (n) => console.error(n)) {\n  try {\n    const n = e();\n    return So(n) ? Promise.resolve(n).catch((r) => {\n      t(r);\n    }) : n;\n  } catch (n) {\n    t(n);\n  }\n}\nconst vl = 2147483647;\nfunction zo(e, t, n) {\n  if (typeof t != \"number\" || t <= 0)\n    return e;\n  let r;\n  const i = new Promise((s, o) => {\n    r = setTimeout(\n      (u, a) => {\n        u(new Error(a || `Timeout of ${t}ms!`));\n      },\n      Math.min(t, vl),\n      o,\n      n\n    );\n  });\n  return Promise.race([e, i]).finally(() => {\n    r !== void 0 && (clearTimeout(r), r = void 0);\n  });\n}\nfunction _l(e, t, n) {\n  if (!t)\n    return e;\n  const r = n || \"Aborted!\";\n  return t.aborted ? Promise.reject(new Error(r)) : new Promise((i, s) => {\n    const o = () => {\n      s(new Error(r));\n    };\n    t.addEventListener(\"abort\", o, { once: !0 }), e.finally(() => {\n      t.removeEventListener(\"abort\", o);\n    }), e.then(i, s);\n  });\n}\nasync function ew(e, t, n) {\n  return new Promise((r, i) => {\n    const s = () => {\n      n?.throwOnAbort || n?.abortError ? i(n.abortError?.() ?? new Error(\"aborted\")) : r();\n    };\n    if (t?.aborted) {\n      s();\n      return;\n    }\n    const o = setTimeout(\n      (a, c, l) => {\n        a?.removeEventListener(\"abort\", c), l();\n      },\n      e,\n      t,\n      u,\n      r\n    );\n    function u() {\n      t?.removeEventListener(\"abort\", u), clearTimeout(o), s();\n    }\n    t?.addEventListener(\"abort\", u, { once: !0 });\n  });\n}\nfunction tw(e) {\n}\nasync function nw(e = []) {\n  return await e.reduce(async (t, n) => {\n    const r = await t;\n    return await n(r);\n  }, Promise.resolve(void 0));\n}\nasync function rw(e) {\n  let t = null, n = Promise.resolve();\n  for (const r of e)\n    n = n.then((i) => (t = i, r));\n  return n.catch((r) => {\n    throw r;\n  }).then(() => t);\n}\nasync function iw(e) {\n  return await Promise.allSettled(\n    e\n  );\n}\nasync function sw(e, t, n = 1 / 0) {\n  const r = new Array(e.length);\n  let i = 0;\n  async function s() {\n    for (; i < e.length; ) {\n      const a = i++, c = e[a];\n      c !== void 0 && (r[a] = await t(c, a));\n    }\n  }\n  const o = [], u = Math.min(n, e.length);\n  for (let a = 0; a < u; a++)\n    o.push(s());\n  return await Promise.all(o), r;\n}\nclass ow {\n  constructor(t) {\n    this.returned = t;\n  }\n  queue = [];\n  readResolve;\n  readReject;\n  started = !1;\n  isDone = !1;\n  hasError;\n  // subscribe\n  [Symbol.asyncIterator]() {\n    if (this.started)\n      throw new Error(\"Stream can only be iterated once\");\n    return this.started = !0, this;\n  }\n  // for await (const { value } of stream) {\n  //   console.log(`start`);\n  //   await sleep(1000);\n  //   console.log(`end`);\n  // }\n  // async *[Symbol.asyncIterator](): AsyncIterator<IteratorResult<T, unknown>> {\n  //   if (this.started) {\n  //     throw new Error(\"Stream can only be iterated once\");\n  //   }\n  //   this.started = true;\n  //   while (true) {\n  //     const item = await this.next();\n  //     if (!item || item.done) {\n  //       return;\n  //     }\n  //     yield item;\n  //   }\n  // }\n  next() {\n    return this.queue.length > 0 ? Promise.resolve({\n      done: !1,\n      value: this.queue.shift()\n    }) : this.isDone ? Promise.resolve({ done: !0, value: void 0 }) : this.hasError ? Promise.reject(this.hasError) : new Promise((t, n) => {\n      this.readResolve = t, this.readReject = n;\n    });\n  }\n  enqueue(t) {\n    if (this.readResolve) {\n      const n = this.readResolve;\n      this.readResolve = void 0, this.readReject = void 0, n({ done: !1, value: t });\n    } else\n      this.queue.push(t);\n  }\n  done() {\n    if (this.isDone = !0, this.readResolve) {\n      const t = this.readResolve;\n      this.readResolve = void 0, this.readReject = void 0, t({ done: !0, value: void 0 });\n    }\n  }\n  error(t) {\n    if (this.hasError = t, this.readReject) {\n      const n = this.readReject;\n      this.readResolve = void 0, this.readReject = void 0, n(t);\n    }\n  }\n  return() {\n    return this.isDone = !0, this.returned && this.returned(), Promise.resolve({ done: !0, value: void 0 });\n  }\n}\nfunction uw(e, t) {\n  const n = e.getReader();\n  n.read().then(function r({ done: i, value: s }) {\n    return t(s), i ? Promise.resolve(i) : n.read().then(r);\n  });\n}\nclass Ot {\n  value;\n  left;\n  right;\n  constructor(t, n) {\n    this.value = t, this.left = n?.left, this.right = n?.right;\n  }\n  clone() {\n    return new Ot(this.value, {\n      left: this.left,\n      right: this.right\n    });\n  }\n}\nclass aw {\n  root;\n  constructor() {\n  }\n  add(t) {\n    if (!this.root)\n      this.root = new Ot(t);\n    else {\n      let n = this.root;\n      for (; n; )\n        if (t === n.value) {\n          console.log(\"Duplicates cannot be added\");\n          break;\n        } else if (t < n.value)\n          if (n.left)\n            n = n.left;\n          else {\n            n.left = new Ot(t);\n            break;\n          }\n        else if (t > n.value)\n          if (n.right)\n            n = n.right;\n          else {\n            n.right = new Ot(t);\n            break;\n          }\n    }\n  }\n  remove(t) {\n    let n = this.root, r, i;\n    for (; n; )\n      if (t < n.value)\n        r = n, n = n.left;\n      else if (t > n.value)\n        r = n, n = n.right;\n      else {\n        i = n;\n        break;\n      }\n    if (!i) {\n      console.log(\"The node was not found\");\n      return;\n    }\n    if (r) {\n      const s = r.left === i;\n      if (!i.left && !i.right)\n        s ? r.left = void 0 : r.right = void 0;\n      else if (i.left && !i.right)\n        s ? r.left = i.left : r.right = i.left;\n      else if (i.right && !i.left)\n        s ? r.left = i.right : r.right = i.right;\n      else {\n        const o = i.right, u = i.left;\n        s ? r.left = o : r.right = o;\n        let a = o, c;\n        for (; a; )\n          c = a, a = a.left;\n        c && (c.left = u), console.log(\"The node was successfully deleted\");\n      }\n    } else if (!i.left && !i.right)\n      this.root = void 0;\n    else if (i.left && !i.right)\n      this.root = i.left;\n    else if (i.right && !i.left)\n      this.root = i.right;\n    else {\n      const s = i.right, o = i.left;\n      this.root = s;\n      let u = s, a;\n      for (; u; )\n        a = u, u = u.left;\n      a && (a.left = o), console.log(\"The node was successfully deleted\");\n    }\n    return i;\n  }\n  // 树的高度\n  // 最大深度： root 到 叶子节点\n  maxDepth(t = this.root) {\n    let n = 0;\n    const r = (i, s = 1) => {\n      i && (!i.left && !i.right && (n = Math.max(n, s)), r(i.left, s + 1), r(i.right, s + 1));\n    };\n    return r(t), n;\n  }\n  // 最小深度： root 到 叶子节点\n  minDepth(t = this.root) {\n    if (!t)\n      return 0;\n    const n = [[t, 1]];\n    for (; n.length; ) {\n      const [r, i] = n.shift();\n      if (!r.left && !r.right)\n        return i;\n      r.left && n.push([r.left, i + 1]), r.right && n.push([r.right, i + 1]);\n    }\n  }\n  // 如果某二叉树中任意节点的左右子树的深度相差不超过 1，那么它就是一棵平衡二叉树\n  // 该方法最坏的情况是每个父节点都只有一个子节点，这样树的高度时间复杂度为 O(n)，即“链表”的长度。而第 d 层调用 height 函数的时间复杂度是 O(d)，所以整体的时间复杂度为 高度时间复杂度 * 调用height函数的时间复杂度，即 O(n^2)。\n  isBalance(t = this.root) {\n    return t ? Math.abs(this.maxDepth(t.left) - this.maxDepth(t.right)) <= 1 && this.isBalance(t.left) && this.isBalance(t.right) : !0;\n  }\n  // 广度优先遍历\n  bfs(t = this.root, n) {\n    if (!t)\n      return;\n    const r = [t];\n    for (; r.length; ) {\n      const i = r.shift();\n      if (!n?.(i))\n        break;\n      i.left && r.push(i.left), i.right && r.push(i.right);\n    }\n  }\n  // 深度优先遍历\n  dfs(t = this.root, n) {\n    t && n?.(t) && (this.dfs(t.left, n), this.dfs(t.right, n));\n  }\n  // 递归遍历 - 先序遍历 current, left, right\n  preOrderRecursive(t = this.root, n) {\n    t && n?.(t) && (this.preOrderRecursive(t.left, n), this.preOrderRecursive(t.right, n));\n  }\n  // 递归遍历 - 中序遍历 left, current, right\n  // 中序遍历：递增序列\n  // 中序遍历倒序：递减序列\n  inOrderRecursive(t = this.root, n) {\n    t && (this.inOrderRecursive(t.left, n), n?.(t) && this.inOrderRecursive(t.right, n));\n  }\n  // 递归遍历 - 后序遍历 left, right, current\n  postOrderRecursive(t = this.root, n) {\n    t && (this.postOrderRecursive(t.left, n), this.postOrderRecursive(t.right, n), n?.(t));\n  }\n  // 非递归遍历 - 先序遍历 current, left, right\n  preOrder(t = this.root, n) {\n    const r = [];\n    for (t && r.push(t); r.length && (t = r.pop(), !!n?.(t)); )\n      t.right && r.push(t.right), t.left && r.push(t.left);\n  }\n  // 中序遍历：递增序列\n  // 非递归遍历 - 中序遍历 left, current, right\n  inOrder(t = this.root, n) {\n    const r = [];\n    for (; r.length || t; ) {\n      for (; t; )\n        r.push(t), t = t.left;\n      if (t = r.pop(), !n?.(t))\n        break;\n      t = t.right;\n    }\n  }\n  // 中序遍历倒序：递减序列 right, current, left\n  inOrderReverse(t = this.root, n) {\n    const r = [];\n    for (; r.length || t; ) {\n      for (; t; )\n        r.push(t), t = t.right;\n      if (t = r.pop(), !n?.(t))\n        break;\n      t = t.left;\n    }\n  }\n  // 非递归遍历 - 后序遍历 left, right, current\n  postOrder(t = this.root, n) {\n    const r = [], i = [];\n    for (t && r.push(t); r.length; )\n      t = r.pop(), i.push(t), t.left && r.push(t.left), t.right && r.push(t.right);\n    n && i.reverse().map(n);\n  }\n  // 获得第K大的节点, K从1开始\n  kthLargest(t) {\n    let n = 0, r;\n    return this.inOrderReverse(this.root, (i) => (n++, n == t ? (r = i.value, !1) : !0)), r;\n  }\n  // 反转二叉树\n  // 寻找递归公式\n  // 解题要采用自上而下的思考方式，那我们取前面的 1， 2，3 结点来看，对于根节点 1 来说，假设 2, 3 结点下的节点都已经翻转，那么只要翻转 2， 3 节点即满足需求\n  // 对于 2， 3 结点来说，也是翻转其左右节点即可,依此类推,对每一个根节点，依次翻转其左右节点，\n  // 所以我们可知问题与子问题的关系是 翻转(根节点) = 翻转(根节点的左节点) + 翻转(根节点的右节点)\n  // 即 invert(root) = invert(root->left) + invert(root->right),\n  // 而显然递归的终止条件是当结点为叶子结点时终止（因为叶子节点没有左右结点）\n  // 时间复杂度分析: 由于会对每一个节点都去做翻转，所以时间复杂度是 O(n)\n  // 空间复杂度分析: 由于每次调用 invertTree 函数都相当于一次压栈操作，\n  //   那最多压了几次栈呢，从根节点出发不断对左结果调用翻转函数, 直到叶子节点，每调用一次都会压栈，左节点调用完后，出栈，再对右节点压栈 ...,\n  //   可知栈的大小为3， 即树的高度，如果是完全二叉树 ，则树的高度为logn, 即空间复杂度为O(logn)\n  //   最坏情况，如果此二叉树是只有左节点，没有右节点，则树的高度即结点的个数 n，此时空间复杂度为 O(n)\n  //   总的来看，空间复杂度为O(n)\n  invertTree(t = this.root) {\n    if (!t)\n      return;\n    const n = this.invertTree(t.left), r = this.invertTree(t.right);\n    return t.right = n, t.left = r, t;\n  }\n}\nclass oi {\n  value;\n  toEdges;\n  constructor(t, n = []) {\n    this.value = t, this.toEdges = n;\n  }\n  clone() {\n    return new oi(this.value, this.toEdges);\n  }\n}\nclass fn {\n  fromNode;\n  toNode;\n  // 权重\n  weight;\n  constructor(t, n, r = 1) {\n    this.fromNode = t, this.toNode = n, this.weight = r;\n  }\n  clone() {\n    return new fn(this.fromNode, this.toNode, this.weight);\n  }\n}\nclass cw {\n  // 有无方向\n  isdirected;\n  nodes = [];\n  visitFn;\n  constructor(t = !1, n) {\n    this.isdirected = t, this.visitFn = n || ((r) => console.log(r.value + \",\"));\n  }\n  addNode(t) {\n    this.nodes.push(new oi(t));\n  }\n  removeNode(t) {\n    this.nodes = this.nodes.filter((n) => n.value !== t), this.nodes.forEach((n) => {\n      n.toEdges = n.toEdges.filter((r) => r.toNode.value !== t);\n    });\n  }\n  findNode(t) {\n    return this.nodes.find((n) => n.value === t);\n  }\n  addEdge(t, n, r = 1) {\n    const i = this.findNode(t), s = this.findNode(n);\n    i && s && (i.toEdges.push(new fn(i, s, r)), this.isdirected && s.toEdges.push(new fn(s, i, r)));\n  }\n  // 邻接矩阵\n  toMatrixArray() {\n    const t = this.nodes.length, n = Array.from(\n      { length: t },\n      () => Array(t).fill(0)\n    );\n    return this.nodes.forEach((r, i) => {\n      r.toEdges.forEach((s) => {\n        const o = this.nodes.indexOf(s.toNode);\n        n[i][o] = 1;\n      });\n    }), n;\n  }\n  // 邻接表\n  toLinkedArrayObject() {\n    const t = this.nodes.length, n = {};\n    for (let r = 0; r < t; r++) {\n      const i = [];\n      this.nodes[r].toEdges.forEach((s) => {\n        i.push(this.nodes.indexOf(s.toNode));\n      }), n[String(this.nodes[r].value)] = i;\n    }\n    return n;\n  }\n  // 深度优先遍历\n  dfs(t, n = /* @__PURE__ */ new Set()) {\n    this.visitFn(t), n.add(t), t.toEdges.forEach((r) => {\n      n.has(r.toNode) || this.dfs(r.toNode, n);\n    });\n  }\n  // 广度优先遍历\n  wfs(t) {\n    const n = /* @__PURE__ */ new Set(), r = [t];\n    for (; r.length; ) {\n      const i = r.shift();\n      this.visitFn(i), n.add(i), i.toEdges.forEach((s) => {\n        n.has(s.toNode) || r.push(s.toNode);\n      });\n    }\n  }\n}\nclass Bn {\n  heap = [];\n  compareFn;\n  constructor(t, n) {\n    if (this.compareFn = t, n) {\n      this.heap = n;\n      const r = this.size() - 1, i = this.getParentIndex(r);\n      for (let s = i; s >= 0; s--)\n        this.shiftDown(s);\n    }\n  }\n  size() {\n    return this.heap.length;\n  }\n  isEmpty() {\n    return this.size() === 0;\n  }\n  // 获取父元素坐标\n  getParentIndex(t) {\n    return t - 1 >> 1;\n  }\n  // 获取左子节点元素坐标\n  getLeftChildIndex(t) {\n    const n = t * 2 + 1;\n    return n < this.size() ? n : null;\n  }\n  // 获取右子节点元素坐标\n  getRightChildIndex(t) {\n    const n = t * 2 + 2;\n    return n < this.size() ? n : null;\n  }\n  // 交换元素\n  swap(t, n) {\n    t >= 0 && t < this.size() && n >= 0 && n < this.size() && ([this.heap[t], this.heap[n]] = [this.heap[n], this.heap[t]]);\n  }\n  // 查看堆顶元素\n  peek() {\n    return this.heap[0];\n  }\n  // 尾部插入元素\n  // 时间复杂度O(logN)\n  push(t) {\n    this.heap.push(t), this.shiftUp(this.size() - 1);\n  }\n  // 上移操作\n  shiftUp(t) {\n    if (t === 0)\n      return;\n    const n = this.getParentIndex(t);\n    this.compareFn(this.heap[n], this.heap[t]) || (this.swap(n, t), this.shiftUp(n));\n  }\n  // 堆顶删除元素\n  // 时间复杂度O(logN)\n  pop() {\n    if (this.isEmpty())\n      return null;\n    {\n      const t = this.heap[0], n = this.heap.pop();\n      return n !== void 0 && !this.isEmpty() && (this.heap[0] = n, this.shiftDown(0)), t;\n    }\n  }\n  // 下移操作\n  shiftDown(t) {\n    if (t >= this.size() - 1)\n      return;\n    const n = this.getLeftChildIndex(t), r = this.getRightChildIndex(t);\n    n && !this.compareFn(this.heap[t], this.heap[n]) && (this.swap(n, t), this.shiftDown(n)), r && !this.compareFn(this.heap[t], this.heap[r]) && (this.swap(r, t), this.shiftDown(r));\n  }\n}\nconst lw = Bn;\nclass hw extends Bn {\n  constructor(t, n) {\n    const r = (i, s) => i > s;\n    super(t ?? r, n);\n  }\n}\nclass fw extends Bn {\n  constructor(t, n) {\n    const r = (i, s) => i < s;\n    super(t ?? r, n);\n  }\n}\nclass ui {\n  value;\n  next;\n  constructor(t, n) {\n    this.value = t, this.next = n;\n  }\n  clone() {\n    return new ui(this.value, this.next);\n  }\n}\nclass dw {\n  head;\n  tail;\n  length = 0;\n  constructor() {\n  }\n  size() {\n    return this.length;\n  }\n  isEmpty() {\n    return this.size() === 0;\n  }\n  insert(t, n) {\n    const r = new ui(n);\n    if (t == 0)\n      return r.next = this.head, this.head = r, this.isEmpty() && (this.tail = this.head), this.length++, !0;\n    {\n      let i = this.head, s = this.head?.next, o = 1;\n      for (; o++ < t; )\n        i = s, s = s?.next;\n      return i ? (i.next = r, r.next = s, s || (this.tail = r), this.length++, !0) : !1;\n    }\n  }\n  delete(t) {\n    if (!this.isEmpty())\n      if (t == 0) {\n        const n = this.head;\n        return this.size() == 1 ? this.head = this.tail = void 0 : this.head = this.head?.next, this.length--, n;\n      } else {\n        let n = this.head, r = this.head?.next, i = 1;\n        for (; i++ < t && r; )\n          n = r, r = r?.next;\n        return n ? (n.next = r?.next, (!r || !r.next) && (this.tail = n), r && this.length--, r) : void 0;\n      }\n  }\n  deleteNode(t) {\n    t.next ? (t.value = t.next.value, t.next = t.next.next, t.next || (this.tail = t), this.length--) : this.pop();\n  }\n  // 尾部加入\n  push(t) {\n    return this.insert(this.size(), t);\n  }\n  // 尾部删除\n  pop() {\n    return this.delete(this.size() - 1);\n  }\n  // 头部加入\n  unshift(t) {\n    return this.insert(0, t);\n  }\n  // 头部删除\n  shift() {\n    return this.delete(0);\n  }\n  // 遍历\n  // visitFn 返回 true 继续遍历， 返回 false 中断遍历\n  traverse(t) {\n    let n = this.head, r = 0;\n    for (; n && t?.(n, r++); )\n      n = n.next;\n  }\n  at(t) {\n    if (t < 0 || t >= this.size() || this.isEmpty())\n      return;\n    if (t === 0)\n      return this.head;\n    if (t === this.size() - 1)\n      return this.tail;\n    let n = this.head;\n    for (; --t >= 0 && n; )\n      n = n.next;\n    return n;\n  }\n  getIndex(t) {\n    let n = -1;\n    return this.traverse((r, i) => (r.value == t && (n = i), n == -1)), n;\n  }\n  toArray() {\n    const t = [];\n    return this.traverse((n) => (t.push(n.value), !0)), t;\n  }\n  // 列表反转\n  // 时间复杂度 O(N)\n  reverse() {\n    this.tail = this.head;\n    let t, n;\n    for (; this.head && this.head.next; )\n      t = n, n = this.head, this.head = this.head.next, n.next = t;\n    return this.head && (this.head.next = n), this;\n  }\n  // 快慢指针: 判断链表中是否有环\n  hasCycle(t = this.head) {\n    if (!t || !t.next)\n      return !1;\n    let n = t, r = t.next;\n    for (; n !== r; ) {\n      if (!n || !r || !r.next)\n        return !1;\n      n = n.next, r = r.next.next;\n    }\n    return !0;\n  }\n}\nconst me = {\n  THROW: 1,\n  DROP: 2,\n  SLIDE: 3,\n  EXPAND: 4\n};\nclass Bt {\n  queue;\n  limit;\n  overflow;\n  constructor(t = 10, n = me.EXPAND) {\n    this.queue = [], this.limit = t, this.overflow = n;\n  }\n  length() {\n    return this.queue.length;\n  }\n  isEmpty() {\n    return this.length() === 0;\n  }\n  findIndex(t) {\n    return this.queue.findIndex(t);\n  }\n  deleteIndex(t) {\n    return !!this.queue.splice(t, 1).length;\n  }\n  delete(t) {\n    const n = this.findIndex(t);\n    return n > -1 ? this.deleteIndex(n) : !1;\n  }\n  // 入队\n  enqueue(t) {\n    if (this.length() < this.limit) {\n      this.queue.push(t);\n      return;\n    }\n    switch (this.overflow) {\n      case me.EXPAND:\n        this.limit *= 2, this.queue.push(t);\n        break;\n      case me.SLIDE:\n        this.deleteIndex(0), this.queue.push(t);\n        break;\n      case me.THROW:\n        throw new Error(`Queue limit(${this.limit}) overflow!`);\n      case me.DROP:\n    }\n  }\n  push(t) {\n    this.enqueue(t);\n  }\n  put(t) {\n    this.enqueue(t);\n  }\n  // 出队\n  dequeue() {\n    return this.queue.shift();\n  }\n  pop() {\n    return this.dequeue();\n  }\n  take() {\n    return this.dequeue();\n  }\n  // 获取队顶对象\n  peek() {\n    return this.queue[0];\n  }\n  // 获取对象\n  index(t) {\n    return this.queue[t];\n  }\n  // 全部出队\n  clear() {\n    this.queue = [];\n  }\n  // 全部出队\n  flush() {\n    const t = [];\n    let n;\n    for (; n = this.dequeue(); )\n      t.push(n);\n    return t;\n  }\n}\nconst pw = () => new Bt(0, me.DROP), mw = (e) => new Bt(e, me.THROW), Dw = (e) => new Bt(e, me.DROP), gw = (e) => new Bt(e, me.SLIDE), yw = (e) => new Bt(e, me.EXPAND), Wi = {\n  SLIDE: 1,\n  EXPAND: 2\n};\nclass bw {\n  size;\n  table;\n  objectSignature;\n  overflow;\n  ttl;\n  constructor(t) {\n    this.table = new Array(t?.size || 137), this.size = this.table.length, this.objectSignature = t?.objectSignature || ((n) => String(n)), this.overflow = t?.overflow || Wi.EXPAND, this.ttl = t?.ttl || 6e4;\n  }\n  // 散列函数，纯函数\n  hash(t) {\n    if (t == null || t == null)\n      throw new Error(\"HashTable can't put undefined or null\");\n    const n = this.objectSignature(t), r = 31;\n    let i = 0;\n    for (let s = 0, o = n.length; s < o; s++)\n      i += r * i + n.charCodeAt(s);\n    return i % this.size;\n  }\n  // 扩展散列表大小至一个更大的质数\n  resize() {\n    const t = this.size, n = V0(this.size * 2), r = new Array(n), i = this.table;\n    this.table = r, this.size = n;\n    for (let s = 0, o = t; s < o; s++)\n      if (i[s] !== void 0 && !this.isOutdated(i[s])) {\n        let u = this.hash(i[s].value);\n        for (; r[u] !== void 0; )\n          u = (u + 1) % n;\n        r[u] = i[s];\n      }\n    i.length = 0;\n  }\n  put(t) {\n    this.size > 200 && Math.random() < 0.1 && this.clean();\n    let n = this.hash(t);\n    const r = n;\n    for (; this.table[n] !== void 0 && !this.isOutdated(this.table[n]); )\n      if (n = (n + 1) % this.size, r == n) {\n        if (this.overflow == Wi.EXPAND)\n          return this.resize(), this.put(t);\n        break;\n      }\n    return this.table[n] = { value: t, timestamp: Date.now() }, n;\n  }\n  // 性能瓶颈\n  // visitFn : return false to break loop\n  traverse(t) {\n    for (let n = 0, r = this.size; n < r; n++)\n      if (this.table[n] !== void 0 && !t(this.table[n].value, n))\n        return n;\n    return -1;\n  }\n  // filter : return false 删除\n  update(t) {\n    this.traverse((n, r) => (t(n) === !1 && this.deleteIndex(r), !0));\n  }\n  getIndex(t) {\n    let n = this.hash(t);\n    const r = n;\n    for (; this.table[n]?.value !== t; )\n      if (this.table[n] === void 0 || (this.isOutdated(this.table[n]) && (this.table[n] = void 0), n = (n + 1) % this.size, r == n))\n        return -1;\n    return this.isOutdated(this.table[n]) ? (this.table[n] = void 0, -1) : n;\n  }\n  has(t) {\n    return this.getIndex(t) >= 0;\n  }\n  // 性能瓶颈\n  find(t) {\n    const n = this.traverse((r) => !t(r));\n    return n >= 0 ? this.table[n]?.value : void 0;\n  }\n  deleteIndex(t) {\n    return t >= 0 && t < this.size && this.table[t] !== void 0 ? (this.table[t] = void 0, !0) : !1;\n  }\n  delete(t) {\n    return this.deleteIndex(this.getIndex(t));\n  }\n  clear() {\n    this.table = [];\n  }\n  // 数据是否过期\n  isOutdated(t) {\n    return Date.now() - t.timestamp > this.ttl;\n  }\n  // 性能瓶颈\n  // 供外部使用：主动清理过期数据\n  clean() {\n    for (let t = 0, n = this.size; t < n; t++)\n      this.table[t] !== void 0 && this.isOutdated(this.table[t]) && (this.table[t] = void 0);\n  }\n}\nclass ww {\n  obj = {};\n  constructor() {\n  }\n  put(t, n) {\n    this.obj[t] = this.obj[t] || [], this.obj[t].push(n);\n  }\n  get(t) {\n    return this.obj[t] || [];\n  }\n  has(t) {\n    let n = !1;\n    return this.traverse((r) => r == t ? (n = !0, !1) : !0), n;\n  }\n  keys() {\n    const t = [];\n    for (const n in this.obj)\n      t.push(n);\n    return t;\n  }\n  // visitFn : return false to break loop\n  traverse(t) {\n    for (const n in this.obj)\n      for (let r = 0, i = this.obj[n].length; r < i && t(this.obj[n][r]); r++)\n        ;\n  }\n}\nclass Fw {\n  constructor(t) {\n    this.capacity = t, this.buffer = new Array(t);\n  }\n  buffer;\n  head = 0;\n  size = 0;\n  /**\n   * Add an item to the buffer. If the buffer is full,\n   * the oldest item will be evicted.\n   */\n  add(t) {\n    this.buffer[this.head] = t, this.head = (this.head + 1) % this.capacity, this.size < this.capacity && this.size++;\n  }\n  /**\n   * Add multiple items to the buffer at once.\n   */\n  addAll(t) {\n    for (const n of t)\n      this.add(n);\n  }\n  /**\n   * Get the most recent N items from the buffer.\n   * Returns fewer items if the buffer contains less than N items.\n   */\n  getRecent(t) {\n    const n = [], r = this.size < this.capacity ? 0 : this.head, i = Math.min(t, this.size);\n    for (let s = 0; s < i; s++) {\n      const o = (r + this.size - i + s) % this.capacity;\n      n.push(this.buffer[o]);\n    }\n    return n;\n  }\n  /**\n   * Get all items currently in the buffer, in order from oldest to newest.\n   */\n  toArray() {\n    if (this.size === 0)\n      return [];\n    const t = [], n = this.size < this.capacity ? 0 : this.head;\n    for (let r = 0; r < this.size; r++) {\n      const i = (n + r) % this.capacity;\n      t.push(this.buffer[i]);\n    }\n    return t;\n  }\n  /**\n   * Clear all items from the buffer.\n   */\n  clear() {\n    this.buffer.length = 0, this.head = 0, this.size = 0;\n  }\n  /**\n   * Get the current number of items in the buffer.\n   */\n  length() {\n    return this.size;\n  }\n}\nfunction Sl(e) {\n  return typeof e.set == \"function\";\n}\nfunction Al(e) {\n  return typeof e.add == \"function\";\n}\nfunction Ew(e) {\n  if (e && typeof e == \"object\") {\n    if (Sl(e))\n      return \"map\";\n    if (Al(e))\n      return \"set\";\n  }\n  return \"unknown\";\n}\nclass vw {\n  __data__ = {};\n  size = 0;\n  constructor(t) {\n    t = t || [];\n    const n = t.length;\n    let r = -1;\n    for (; ++r < n; ) {\n      const i = t[r];\n      this.set(i[0], i[1]);\n    }\n  }\n  set(t, n) {\n    const r = this.__data__;\n    return this.size += this.has(t) ? 0 : 1, r[t] = n, this;\n  }\n  get(t) {\n    const n = this.__data__;\n    return this.has(t) ? n[t] : void 0;\n  }\n  has(t) {\n    const n = this.__data__;\n    return Object.prototype.hasOwnProperty.call(n, t);\n  }\n  delete(t) {\n    const n = this.has(t) && delete this.__data__[t];\n    return this.size -= n ? 1 : 0, n;\n  }\n  clear() {\n    this.__data__ = {}, this.size = 0;\n  }\n  *entries() {\n    for (const t in this.__data__)\n      yield [t, this.__data__[t]];\n  }\n  *keys() {\n    for (const t in this.__data__)\n      yield t;\n  }\n  *values() {\n    for (const t in this.__data__)\n      yield this.__data__[t];\n  }\n  [Symbol.iterator]() {\n    return this.entries();\n  }\n}\nclass Ol {\n  __data__ = [];\n  size = 0;\n  constructor(t) {\n    t = t || [];\n    const n = t.length;\n    let r = -1;\n    for (; ++r < n; ) {\n      const i = t[r];\n      this.set(i[0], i[1]);\n    }\n  }\n  set(t, n) {\n    const r = this.__data__, i = Ut(r, t);\n    return i < 0 ? (++this.size, r.push([t, n])) : r[i][1] = n, this;\n  }\n  get(t) {\n    const n = this.__data__, r = Ut(n, t);\n    return r < 0 ? void 0 : n[r][1];\n  }\n  has(t) {\n    return Ut(this.__data__, t) > -1;\n  }\n  delete(t) {\n    const n = this.__data__, r = Ut(n, t);\n    if (r < 0)\n      return !1;\n    const i = n.length - 1;\n    return r == i ? n.pop() : Array.prototype.splice.call(n, r, 1), --this.size, !0;\n  }\n  clear() {\n    this.__data__ = [], this.size = 0;\n  }\n  *entries() {\n    for (const t of this.__data__)\n      yield t;\n  }\n  *keys() {\n    for (const t of this.__data__)\n      yield t[0];\n  }\n  *values() {\n    for (const t of this.__data__)\n      yield t[1];\n  }\n  [Symbol.iterator]() {\n    return this.entries();\n  }\n}\nconst Cl = typeof performance == \"object\" && performance && typeof performance.now == \"function\" ? performance : Date, Bo = /* @__PURE__ */ new Set(), Tl = (e, t, n, r) => {\n  typeof cn.emitWarning == \"function\" ? cn.emitWarning(e, t, n, r) : console.error(`[${n}] ${t}: ${e}`);\n}, Rl = (e) => !Bo.has(e);\nclass Xe {\n  heap;\n  length;\n  // private constructor\n  static #e = !1;\n  static create(t) {\n    const n = No(t);\n    if (!n)\n      return [];\n    Xe.#e = !0;\n    const r = new Xe(t, n);\n    return Xe.#e = !1, r;\n  }\n  constructor(t, n) {\n    if (!Xe.#e)\n      throw new TypeError(\"instantiate Stack using Stack.create(n)\");\n    this.heap = new n(t), this.length = 0;\n  }\n  push(t) {\n    this.heap[this.length++] = t;\n  }\n  pop() {\n    return this.heap[--this.length];\n  }\n}\nclass ai {\n  // options that cannot be changed without disaster\n  /**\n   * An integer greater than 0, reflecting a number of items\n   */\n  #e;\n  /**\n   * An integer greater than 0, reflecting the calculated size of items\n   */\n  #t;\n  #n;\n  #i;\n  #s;\n  #o;\n  #g;\n  #c;\n  /**\n   * {@link LRUCache.OptionsBase.perf}\n   */\n  get perf() {\n    return this.#c;\n  }\n  /**\n   * {@link LRUCache.OptionsBase.ttl}\n   */\n  ttl;\n  /**\n   * {@link LRUCache.OptionsBase.ttlResolution}\n   */\n  ttlResolution;\n  /**\n   * {@link LRUCache.OptionsBase.ttlAutopurge}\n   */\n  ttlAutopurge;\n  /**\n   * {@link LRUCache.OptionsBase.updateAgeOnGet}\n   */\n  updateAgeOnGet;\n  /**\n   * {@link LRUCache.OptionsBase.updateAgeOnHas}\n   */\n  updateAgeOnHas;\n  /**\n   * {@link LRUCache.OptionsBase.allowStale}\n   */\n  allowStale;\n  /**\n   * {@link LRUCache.OptionsBase.noDisposeOnSet}\n   */\n  noDisposeOnSet;\n  /**\n   * {@link LRUCache.OptionsBase.noUpdateTTL}\n   */\n  noUpdateTTL;\n  /**\n   * {@link LRUCache.OptionsBase.maxEntrySize}\n   */\n  maxEntrySize;\n  /**\n   * {@link LRUCache.OptionsBase.sizeCalculation}\n   */\n  sizeCalculation;\n  /**\n   * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n   */\n  noDeleteOnFetchRejection;\n  /**\n   * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n   */\n  noDeleteOnStaleGet;\n  /**\n   * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n   */\n  allowStaleOnFetchAbort;\n  /**\n   * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n   */\n  allowStaleOnFetchRejection;\n  /**\n   * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n   */\n  ignoreFetchAbort;\n  // computed properties\n  #l;\n  #h;\n  #f;\n  #u;\n  #r;\n  #d;\n  #y;\n  #p;\n  #m;\n  #E;\n  #D;\n  #v;\n  #_;\n  #b;\n  #w;\n  #S;\n  #x;\n  #F;\n  #B;\n  /**\n   * Do not call this method unless you need to inspect the\n   * inner workings of the cache.  If anything returned by this\n   * object is modified in any way, strange breakage may occur.\n   *\n   * These fields are private for a reason!\n   *\n   * @internal\n   */\n  static unsafeExposeInternals(t) {\n    return {\n      // properties\n      starts: t.#_,\n      ttls: t.#b,\n      autopurgeTimers: t.#w,\n      sizes: t.#v,\n      keyMap: t.#f,\n      keyList: t.#u,\n      valList: t.#r,\n      next: t.#d,\n      prev: t.#y,\n      get head() {\n        return t.#p;\n      },\n      get tail() {\n        return t.#m;\n      },\n      free: t.#E,\n      // methods\n      isBackgroundFetch: (n) => t.#a(n),\n      backgroundFetch: (n, r, i, s) => t.#M(\n        n,\n        r,\n        i,\n        s\n      ),\n      moveToTail: (n) => t.#z(n),\n      indexes: (n) => t.#O(n),\n      rindexes: (n) => t.#C(n),\n      isStale: (n) => t.#A(n)\n    };\n  }\n  // Protected read-only members\n  /**\n   * {@link LRUCache.OptionsBase.max} (read-only)\n   */\n  get max() {\n    return this.#e;\n  }\n  /**\n   * {@link LRUCache.OptionsBase.maxSize} (read-only)\n   */\n  get maxSize() {\n    return this.#t;\n  }\n  /**\n   * The total computed size of items in the cache (read-only)\n   */\n  get calculatedSize() {\n    return this.#h;\n  }\n  /**\n   * The number of items stored in the cache (read-only)\n   */\n  get size() {\n    return this.#l;\n  }\n  /**\n   * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n   */\n  get fetchMethod() {\n    return this.#o;\n  }\n  get memoMethod() {\n    return this.#g;\n  }\n  /**\n   * {@link LRUCache.OptionsBase.dispose} (read-only)\n   */\n  get dispose() {\n    return this.#n;\n  }\n  /**\n   * {@link LRUCache.OptionsBase.onInsert} (read-only)\n   */\n  get onInsert() {\n    return this.#i;\n  }\n  /**\n   * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n   */\n  get disposeAfter() {\n    return this.#s;\n  }\n  constructor(t) {\n    const {\n      max: n = 0,\n      ttl: r,\n      ttlResolution: i = 1,\n      ttlAutopurge: s,\n      updateAgeOnGet: o,\n      updateAgeOnHas: u,\n      allowStale: a,\n      dispose: c,\n      onInsert: l,\n      disposeAfter: f,\n      noDisposeOnSet: d,\n      noUpdateTTL: h,\n      maxSize: p = 0,\n      maxEntrySize: m = 0,\n      sizeCalculation: D,\n      fetchMethod: y,\n      memoMethod: F,\n      noDeleteOnFetchRejection: S,\n      noDeleteOnStaleGet: v,\n      allowStaleOnFetchRejection: E,\n      allowStaleOnFetchAbort: R,\n      ignoreFetchAbort: A,\n      perf: k\n    } = t;\n    if (k !== void 0 && typeof k?.now != \"function\")\n      throw new TypeError(\n        \"perf option must have a now() method if specified\"\n      );\n    if (this.#c = k ?? Cl, n !== 0 && !we(n))\n      throw new TypeError(\"max option must be a nonnegative integer\");\n    const w = n ? No(n) : Array;\n    if (!w)\n      throw new Error(\"invalid max value: \" + n);\n    if (this.#e = n, this.#t = p, this.maxEntrySize = m || this.#t, this.sizeCalculation = D, this.sizeCalculation) {\n      if (!this.#t && !this.maxEntrySize)\n        throw new TypeError(\n          \"cannot set sizeCalculation without setting maxSize or maxEntrySize\"\n        );\n      if (typeof this.sizeCalculation != \"function\")\n        throw new TypeError(\"sizeCalculation set to non-function\");\n    }\n    if (F !== void 0 && typeof F != \"function\")\n      throw new TypeError(\"memoMethod must be a function if defined\");\n    if (this.#g = F, y !== void 0 && typeof y != \"function\")\n      throw new TypeError(\"fetchMethod must be a function if specified\");\n    if (this.#o = y, this.#x = !!y, this.#f = /* @__PURE__ */ new Map(), this.#u = Array.from({ length: n }).fill(void 0), this.#r = Array.from({ length: n }).fill(void 0), this.#d = new w(n), this.#y = new w(n), this.#p = 0, this.#m = 0, this.#E = Xe.create(n), this.#l = 0, this.#h = 0, typeof c == \"function\" && (this.#n = c), typeof l == \"function\" && (this.#i = l), typeof f == \"function\" ? (this.#s = f, this.#D = []) : (this.#s = void 0, this.#D = void 0), this.#S = !!this.#n, this.#B = !!this.#i, this.#F = !!this.#s, this.noDisposeOnSet = !!d, this.noUpdateTTL = !!h, this.noDeleteOnFetchRejection = !!S, this.allowStaleOnFetchRejection = !!E, this.allowStaleOnFetchAbort = !!R, this.ignoreFetchAbort = !!A, this.maxEntrySize !== 0) {\n      if (this.#t !== 0 && !we(this.#t))\n        throw new TypeError(\n          \"maxSize must be a positive integer if specified\"\n        );\n      if (!we(this.maxEntrySize))\n        throw new TypeError(\n          \"maxEntrySize must be a positive integer if specified\"\n        );\n      this.#K();\n    }\n    if (this.allowStale = !!a, this.noDeleteOnStaleGet = !!v, this.updateAgeOnGet = !!o, this.updateAgeOnHas = !!u, this.ttlResolution = we(i) || i === 0 ? i : 1, this.ttlAutopurge = !!s, this.ttl = r || 0, this.ttl) {\n      if (!we(this.ttl))\n        throw new TypeError(\"ttl must be a positive integer if specified\");\n      this.#j();\n    }\n    if (this.#e === 0 && this.ttl === 0 && this.#t === 0)\n      throw new TypeError(\"At least one of max, maxSize, or ttl is required\");\n    if (!this.ttlAutopurge && !this.#e && !this.#t) {\n      const T = \"LRU_CACHE_UNBOUNDED\";\n      Rl(T) && (Bo.add(T), Tl(\"TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.\", \"UnboundedCacheWarning\", T, ai));\n    }\n  }\n  /**\n   * Return the number of ms left in the item's TTL. If item is not in cache,\n   * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n   */\n  getRemainingTTL(t) {\n    return this.#f.has(t) ? 1 / 0 : 0;\n  }\n  #j() {\n    const t = new Yt(this.#e), n = new Yt(this.#e);\n    this.#b = t, this.#_ = n;\n    const r = this.ttlAutopurge ? Array.from({\n      length: this.#e\n    }) : void 0;\n    this.#w = r, this.#U = (u, a, c = this.#c.now()) => {\n      n[u] = a !== 0 ? c : 0, t[u] = a, i(u, a);\n    }, this.#N = (u) => {\n      n[u] = t[u] !== 0 ? this.#c.now() : 0, i(u, t[u]);\n    };\n    const i = this.ttlAutopurge ? (u, a) => {\n      if (r?.[u] && (clearTimeout(r[u]), r[u] = void 0), a && a !== 0 && r) {\n        const c = setTimeout(() => {\n          this.#A(u) && this.#T(this.#u[u], \"expire\");\n        }, a + 1);\n        c.unref && c.unref(), r[u] = c;\n      }\n    } : () => {\n    };\n    this.#R = (u, a) => {\n      if (t[a]) {\n        const c = t[a], l = n[a];\n        if (!c || !l)\n          return;\n        u.ttl = c, u.start = l, u.now = s || o();\n        const f = u.now - l;\n        u.remainingTTL = c - f;\n      }\n    };\n    let s = 0;\n    const o = () => {\n      const u = this.#c.now();\n      if (this.ttlResolution > 0) {\n        s = u;\n        const a = setTimeout(() => s = 0, this.ttlResolution);\n        a.unref && a.unref();\n      }\n      return u;\n    };\n    this.getRemainingTTL = (u) => {\n      const a = this.#f.get(u);\n      if (a === void 0)\n        return 0;\n      const c = t[a], l = n[a];\n      if (!c || !l)\n        return 1 / 0;\n      const f = (s || o()) - l;\n      return c - f;\n    }, this.#A = (u) => {\n      const a = n[u], c = t[u];\n      return !!c && !!a && (s || o()) - a > c;\n    };\n  }\n  // conditionally set private methods related to TTL\n  #N = () => {\n  };\n  #R = () => {\n  };\n  #U = () => {\n  };\n  #A = () => !1;\n  #K() {\n    const t = new Yt(this.#e);\n    this.#h = 0, this.#v = t, this.#I = (n) => {\n      this.#h -= t[n], t[n] = 0;\n    }, this.#Z = (n, r, i, s) => {\n      if (this.#a(r))\n        return 0;\n      if (!we(i))\n        if (s) {\n          if (typeof s != \"function\")\n            throw new TypeError(\"sizeCalculation must be a function\");\n          if (i = s(r, n), !we(i))\n            throw new TypeError(\n              \"sizeCalculation return invalid (expect positive integer)\"\n            );\n        } else\n          throw new TypeError(\n            \"invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.\"\n          );\n      return i || 0;\n    }, this.#$ = (n, r, i) => {\n      if (t[n] = r, this.#t) {\n        const s = this.#t - t[n];\n        for (; this.#h > s; )\n          this.#L(!0);\n      }\n      this.#h += t[n], i && (i.entrySize = r, i.totalCalculatedSize = this.#h);\n    };\n  }\n  #I = (t) => {\n  };\n  #$ = (t, n, r) => {\n  };\n  #Z = (t, n, r, i) => {\n    if (r || i)\n      throw new TypeError(\n        \"cannot set size without setting maxSize or maxEntrySize on cache\"\n      );\n    return 0;\n  };\n  *#O({ allowStale: t = this.allowStale } = {}) {\n    if (this.#l)\n      for (let n = this.#m; this.#q(n) && ((t || !this.#A(n)) && (yield n), n !== this.#p); )\n        n = this.#y[n];\n  }\n  *#C({ allowStale: t = this.allowStale } = {}) {\n    if (this.#l)\n      for (let n = this.#p; this.#q(n) && ((t || !this.#A(n)) && (yield n), n !== this.#m); )\n        n = this.#d[n];\n  }\n  #q(t) {\n    return t !== void 0 && this.#f.get(this.#u[t]) === t;\n  }\n  /**\n   * Return a generator yielding `[key, value]` pairs,\n   * in order from most recently used to least recently used.\n   */\n  *entries() {\n    for (const t of this.#O())\n      this.#r[t] !== void 0 && this.#u[t] !== void 0 && !this.#a(this.#r[t]) && (yield [this.#u[t], this.#r[t]]);\n  }\n  /**\n   * Inverse order version of {@link LRUCache.entries}\n   *\n   * Return a generator yielding `[key, value]` pairs,\n   * in order from least recently used to most recently used.\n   */\n  *rentries() {\n    for (const t of this.#C())\n      this.#r[t] !== void 0 && this.#u[t] !== void 0 && !this.#a(this.#r[t]) && (yield [this.#u[t], this.#r[t]]);\n  }\n  /**\n   * Return a generator yielding the keys in the cache,\n   * in order from most recently used to least recently used.\n   */\n  *keys() {\n    for (const t of this.#O()) {\n      const n = this.#u[t];\n      n !== void 0 && !this.#a(this.#r[t]) && (yield n);\n    }\n  }\n  /**\n   * Inverse order version of {@link LRUCache.keys}\n   *\n   * Return a generator yielding the keys in the cache,\n   * in order from least recently used to most recently used.\n   */\n  *rkeys() {\n    for (const t of this.#C()) {\n      const n = this.#u[t];\n      n !== void 0 && !this.#a(this.#r[t]) && (yield n);\n    }\n  }\n  /**\n   * Return a generator yielding the values in the cache,\n   * in order from most recently used to least recently used.\n   */\n  *values() {\n    for (const t of this.#O())\n      this.#r[t] !== void 0 && !this.#a(this.#r[t]) && (yield this.#r[t]);\n  }\n  /**\n   * Inverse order version of {@link LRUCache.values}\n   *\n   * Return a generator yielding the values in the cache,\n   * in order from least recently used to most recently used.\n   */\n  *rvalues() {\n    for (const t of this.#C())\n      this.#r[t] !== void 0 && !this.#a(this.#r[t]) && (yield this.#r[t]);\n  }\n  /**\n   * Iterating over the cache itself yields the same results as\n   * {@link LRUCache.entries}\n   */\n  [Symbol.iterator]() {\n    return this.entries();\n  }\n  /**\n   * A String value that is used in the creation of the default string\n   * description of an object. Called by the built-in method\n   * `Object.prototype.toString`.\n   */\n  [Symbol.toStringTag] = \"LRUCache\";\n  /**\n   * Find a value for which the supplied fn method returns a truthy value,\n   * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n   */\n  find(t, n = {}) {\n    for (const r of this.#O()) {\n      const i = this.#r[r], s = this.#a(i) ? i.__staleWhileFetching : i;\n      if (s !== void 0 && t(s, this.#u[r], this))\n        return this.#P(this.#u[r], n);\n    }\n  }\n  /**\n   * Call the supplied function on each item in the cache, in order from most\n   * recently used to least recently used.\n   *\n   * `fn` is called as `fn(value, key, cache)`.\n   *\n   * If `thisp` is provided, function will be called in the `this`-context of\n   * the provided object, or the cache if no `thisp` object is provided.\n   *\n   * Does not update age or recenty of use, or iterate over stale values.\n   */\n  forEach(t, n = this) {\n    for (const r of this.#O()) {\n      const i = this.#r[r], s = this.#a(i) ? i.__staleWhileFetching : i;\n      s !== void 0 && t.call(n, s, this.#u[r], this);\n    }\n  }\n  /**\n   * The same as {@link LRUCache.forEach} but items are iterated over in\n   * reverse order.  (ie, less recently used items are iterated over first.)\n   */\n  rforEach(t, n = this) {\n    for (const r of this.#C()) {\n      const i = this.#r[r], s = this.#a(i) ? i.__staleWhileFetching : i;\n      s !== void 0 && t.call(n, s, this.#u[r], this);\n    }\n  }\n  /**\n   * Delete any stale entries. Returns true if anything was removed,\n   * false otherwise.\n   */\n  purgeStale() {\n    let t = !1;\n    for (const n of this.#C({ allowStale: !0 }))\n      this.#A(n) && (this.#T(this.#u[n], \"expire\"), t = !0);\n    return t;\n  }\n  /**\n   * Get the extended info about a given entry, to get its value, size, and\n   * TTL info simultaneously. Returns `undefined` if the key is not present.\n   *\n   * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n   * serialization, the `start` value is always the current timestamp, and the\n   * `ttl` is a calculated remaining time to live (negative if expired).\n   *\n   * Always returns stale values, if their info is found in the cache, so be\n   * sure to check for expirations (ie, a negative {@link Entry#ttl})\n   * if relevant.\n   */\n  info(t) {\n    const n = this.#f.get(t);\n    if (n === void 0)\n      return;\n    const r = this.#r[n], i = this.#a(r) ? r.__staleWhileFetching : r;\n    if (i === void 0)\n      return;\n    const s = { value: i };\n    if (this.#b && this.#_) {\n      const o = this.#b[n], u = this.#_[n];\n      if (o && u) {\n        const a = o - (this.#c.now() - u);\n        s.ttl = a, s.start = Date.now();\n      }\n    }\n    return this.#v && (s.size = this.#v[n]), s;\n  }\n  /**\n   * Return an array of [key, {@link Entry}] tuples which can be\n   * passed to {@link LRUCache#load}.\n   *\n   * The `start` fields are calculated relative to a portable `Date.now()`\n   * timestamp, even if `performance.now()` is available.\n   *\n   * Stale entries are always included in the `dump`, even if\n   * {@link LRUCache.OptionsBase.allowStale} is false.\n   *\n   * Note: this returns an actual array, not a generator, so it can be more\n   * easily passed around.\n   */\n  dump() {\n    const t = [];\n    for (const n of this.#O({ allowStale: !0 })) {\n      const r = this.#u[n], i = this.#r[n], s = this.#a(i) ? i.__staleWhileFetching : i;\n      if (s === void 0 || r === void 0)\n        continue;\n      const o = { value: s };\n      if (this.#b && this.#_) {\n        o.ttl = this.#b[n];\n        const u = this.#c.now() - this.#_[n];\n        o.start = Math.floor(Date.now() - u);\n      }\n      this.#v && (o.size = this.#v[n]), t.unshift([r, o]);\n    }\n    return t;\n  }\n  /**\n   * Reset the cache and load in the items in entries in the order listed.\n   *\n   * The shape of the resulting cache may be different if the same options are\n   * not used in both caches.\n   *\n   * The `start` fields are assumed to be calculated relative to a portable\n   * `Date.now()` timestamp, even if `performance.now()` is available.\n   */\n  load(t) {\n    this.clear();\n    for (const [n, r] of t) {\n      if (r.start) {\n        const i = Date.now() - r.start;\n        r.start = this.#c.now() - i;\n      }\n      this.#k(n, r.value, r);\n    }\n  }\n  /**\n   * Add a value to the cache.\n   *\n   * Note: if `undefined` is specified as a value, this is an alias for\n   * {@link LRUCache#delete}\n   *\n   * Fields on the {@link SetOptions} options param will override\n   * their corresponding values in the constructor options for the scope\n   * of this single `set()` operation.\n   *\n   * If `start` is provided, then that will set the effective start\n   * time for the TTL calculation. Note that this must be a previous\n   * value of `performance.now()` if supported, or a previous value of\n   * `Date.now()` if not.\n   *\n   * Options object may also include `size`, which will prevent\n   * calling the `sizeCalculation` function and just use the specified\n   * number if it is a positive integer, and `noDisposeOnSet` which\n   * will prevent calling a `dispose` function in the case of\n   * overwrites.\n   *\n   * If the `size` (or return value of `sizeCalculation`) for a given\n   * entry is greater than `maxEntrySize`, then the item will not be\n   * added to the cache.\n   *\n   * Will update the recency of the entry.\n   *\n   * If the value is `undefined`, then this is an alias for\n   * `cache.delete(key)`. `undefined` is never stored in the cache.\n   */\n  set(t, n, r = {}) {\n    const { status: i = void 0 } = r;\n    return r.status = i, i && (i.op = \"set\", i.key = t, n !== void 0 && (i.value = n)), this.#k(t, n, r);\n  }\n  #k(t, n, r = {}) {\n    const {\n      ttl: i = this.ttl,\n      start: s,\n      noDisposeOnSet: o = this.noDisposeOnSet,\n      sizeCalculation: u = this.sizeCalculation,\n      status: a\n    } = r;\n    if (n === void 0)\n      return a && (a.set = \"deleted\"), this.delete(t), this;\n    let { noUpdateTTL: c = this.noUpdateTTL } = r;\n    a && !this.#a(n) && (a.value = n);\n    const l = this.#Z(\n      t,\n      n,\n      r.size || 0,\n      u,\n      a\n    );\n    if (this.maxEntrySize && l > this.maxEntrySize)\n      return this.#T(t, \"set\"), a && (a.set = \"miss\", a.maxEntrySizeExceeded = !0), this;\n    let f = this.#l === 0 ? void 0 : this.#f.get(t);\n    if (f === void 0)\n      f = this.#l === 0 ? this.#m : this.#E.length !== 0 ? this.#E.pop() : this.#l === this.#e ? this.#L(!1) : this.#l, this.#u[f] = t, this.#r[f] = n, this.#f.set(t, f), this.#d[this.#m] = f, this.#y[f] = this.#m, this.#m = f, this.#l++, this.#$(f, l, a), a && (a.set = \"add\"), c = !1, this.#B && this.#i?.(n, t, \"add\");\n    else {\n      this.#z(f);\n      const d = this.#r[f];\n      if (n !== d) {\n        if (this.#x && this.#a(d)) {\n          d.__abortController.abort(new Error(\"replaced\"));\n          const { __staleWhileFetching: h } = d;\n          h !== void 0 && !o && (this.#S && this.#n?.(h, t, \"set\"), this.#F && this.#D?.push([h, t, \"set\"]));\n        } else\n          o || (this.#S && this.#n?.(d, t, \"set\"), this.#F && this.#D?.push([d, t, \"set\"]));\n        if (this.#I(f), this.#$(f, l, a), this.#r[f] = n, a) {\n          a.set = \"replace\";\n          const h = d && this.#a(d) ? d.__staleWhileFetching : d;\n          h !== void 0 && (a.oldValue = h);\n        }\n      } else\n        a && (a.set = \"update\");\n      this.#B && this.onInsert?.(n, t, n === d ? \"update\" : \"replace\");\n    }\n    if (i !== 0 && !this.#b && this.#j(), this.#b && (c || this.#U(f, i, s), a && this.#R(a, f)), !o && this.#F && this.#D) {\n      const d = this.#D;\n      let h;\n      for (; h = d?.shift(); )\n        this.#s?.(...h);\n    }\n    return this;\n  }\n  /**\n   * Evict the least recently used item, returning its value or\n   * `undefined` if cache is empty.\n   */\n  pop() {\n    try {\n      for (; this.#l; ) {\n        const t = this.#r[this.#p];\n        if (this.#L(!0), this.#a(t)) {\n          if (t.__staleWhileFetching)\n            return t.__staleWhileFetching;\n        } else if (t !== void 0)\n          return t;\n      }\n    } finally {\n      if (this.#F && this.#D) {\n        const t = this.#D;\n        let n;\n        for (; n = t?.shift(); )\n          this.#s?.(...n);\n      }\n    }\n  }\n  #L(t) {\n    const n = this.#p, r = this.#u[n], i = this.#r[n];\n    return this.#x && this.#a(i) ? i.__abortController.abort(new Error(\"evicted\")) : (this.#S || this.#F) && (this.#S && this.#n?.(i, r, \"evict\"), this.#F && this.#D?.push([i, r, \"evict\"])), this.#I(n), this.#w?.[n] && (clearTimeout(this.#w[n]), this.#w[n] = void 0), t && (this.#u[n] = void 0, this.#r[n] = void 0, this.#E.push(n)), this.#l === 1 ? (this.#p = this.#m = 0, this.#E.length = 0) : this.#p = this.#d[n], this.#f.delete(r), this.#l--, n;\n  }\n  /**\n   * Check if a key is in the cache, without updating the recency of use.\n   * Will return false if the item is stale, even though it is technically\n   * in the cache.\n   *\n   * Check if a key is in the cache, without updating the recency of\n   * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n   * to `true` in either the options or the constructor.\n   *\n   * Will return `false` if the item is stale, even though it is technically in\n   * the cache. The difference can be determined (if it matters) by using a\n   * `status` argument, and inspecting the `has` field.\n   *\n   * Will not update item age unless\n   * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n   */\n  has(t, n = {}) {\n    const { status: r = void 0 } = n;\n    return n.status = r, r && (r.op = \"has\", r.key = t), this.#Q(t, n);\n  }\n  #Q(t, n = {}) {\n    const { updateAgeOnHas: r = this.updateAgeOnHas, status: i } = n, s = this.#f.get(t);\n    if (s !== void 0) {\n      const o = this.#r[s];\n      if (this.#a(o) && o.__staleWhileFetching === void 0)\n        return !1;\n      if (this.#A(s))\n        i && (i.has = \"stale\", this.#R(i, s));\n      else\n        return r && this.#N(s), i && (i.has = \"hit\", this.#R(i, s)), !0;\n    } else\n      i && (i.has = \"miss\");\n    return !1;\n  }\n  /**\n   * Like {@link LRUCache#get} but doesn't update recency or delete stale\n   * items.\n   *\n   * Returns `undefined` if the item is stale, unless\n   * {@link LRUCache.OptionsBase.allowStale} is set.\n   */\n  peek(t, n = {}) {\n    const { status: r = void 0 } = n;\n    return r && (r.op = \"peek\", r.key = t), n.status = r, this.#J(t, n);\n  }\n  #J(t, n) {\n    const { status: r, allowStale: i = this.allowStale } = n, s = this.#f.get(t);\n    if (s === void 0 || !i && this.#A(s)) {\n      r && (r.peek = s === void 0 ? \"miss\" : \"stale\");\n      return;\n    }\n    const o = this.#r[s], u = this.#a(o) ? o.__staleWhileFetching : o;\n    return r && (u !== void 0 ? (r.peek = \"hit\", r.value = u) : r.peek = \"miss\"), u;\n  }\n  #M(t, n, r, i) {\n    const s = n === void 0 ? void 0 : this.#r[n];\n    if (this.#a(s))\n      return s;\n    const o = new AbortController(), { signal: u } = r;\n    u?.addEventListener(\"abort\", () => o.abort(u.reason), {\n      signal: o.signal\n    });\n    const a = {\n      signal: o.signal,\n      options: r,\n      context: i\n    }, c = (m, D = !1) => {\n      const { aborted: y } = o.signal, F = r.ignoreFetchAbort && m !== void 0, S = r.ignoreFetchAbort || !!(r.allowStaleOnFetchAbort && m !== void 0);\n      if (r.status && (y && !D ? (r.status.fetchAborted = !0, r.status.fetchError = o.signal.reason, F && (r.status.fetchAbortIgnored = !0)) : r.status.fetchResolved = !0), y && !F && !D)\n        return f(o.signal.reason, S);\n      const v = h, E = this.#r[n];\n      return (E === h || E === void 0 && F && D) && (m === void 0 ? v.__staleWhileFetching !== void 0 ? this.#r[n] = v.__staleWhileFetching : this.#T(t, \"fetch\") : (r.status && (r.status.fetchUpdated = !0), this.#k(t, m, a.options))), m;\n    }, l = (m) => (r.status && (r.status.fetchRejected = !0, r.status.fetchError = m), f(m, !1)), f = (m, D) => {\n      const { aborted: y } = o.signal, F = y && r.allowStaleOnFetchAbort, S = F || r.allowStaleOnFetchRejection, v = S || r.noDeleteOnFetchRejection, E = h;\n      if (this.#r[n] === h && (!v || !D && E.__staleWhileFetching === void 0 ? this.#T(t, \"fetch\") : F || (this.#r[n] = E.__staleWhileFetching)), S)\n        return r.status && E.__staleWhileFetching !== void 0 && (r.status.returnedStale = !0), E.__staleWhileFetching;\n      if (E.__returned === E)\n        throw m;\n    }, d = (m, D) => {\n      const y = this.#o?.(t, s, a);\n      y && y instanceof Promise && y.then((F) => m(F === void 0 ? void 0 : F), D), o.signal.addEventListener(\"abort\", () => {\n        (!r.ignoreFetchAbort || r.allowStaleOnFetchAbort) && (m(void 0), r.allowStaleOnFetchAbort && (m = (F) => c(F, !0)));\n      });\n    };\n    r.status && (r.status.fetchDispatched = !0);\n    const h = new Promise(d).then(c, l), p = Object.assign(h, {\n      __abortController: o,\n      __staleWhileFetching: s,\n      __returned: void 0\n    });\n    return n === void 0 ? (this.#k(t, p, { ...a.options, status: void 0 }), n = this.#f.get(t)) : this.#r[n] = p, p;\n  }\n  #a(t) {\n    if (!this.#x)\n      return !1;\n    const n = t;\n    return !!n && n instanceof Promise && Object.prototype.hasOwnProperty.call(n, \"__staleWhileFetching\") && n.__abortController instanceof AbortController;\n  }\n  fetch(t, n = {}) {\n    const { status: r = void 0 } = n;\n    return n.status = r, r && n.context && (r.context = n.context), this.#W(t, n);\n  }\n  async #W(t, n = {}) {\n    const {\n      // get options\n      allowStale: r = this.allowStale,\n      updateAgeOnGet: i = this.updateAgeOnGet,\n      noDeleteOnStaleGet: s = this.noDeleteOnStaleGet,\n      // set options\n      ttl: o = this.ttl,\n      noDisposeOnSet: u = this.noDisposeOnSet,\n      size: a = 0,\n      sizeCalculation: c = this.sizeCalculation,\n      noUpdateTTL: l = this.noUpdateTTL,\n      // fetch exclusive options\n      noDeleteOnFetchRejection: f = this.noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection: d = this.allowStaleOnFetchRejection,\n      ignoreFetchAbort: h = this.ignoreFetchAbort,\n      allowStaleOnFetchAbort: p = this.allowStaleOnFetchAbort,\n      context: m,\n      forceRefresh: D = !1,\n      status: y,\n      signal: F\n    } = n;\n    if (y && (y.op = \"fetch\", y.key = t, D && (y.forceRefresh = !0)), !this.#x)\n      return y && (y.fetch = \"get\"), this.#P(t, {\n        allowStale: r,\n        updateAgeOnGet: i,\n        noDeleteOnStaleGet: s,\n        status: y\n      });\n    const S = {\n      allowStale: r,\n      updateAgeOnGet: i,\n      noDeleteOnStaleGet: s,\n      ttl: o,\n      noDisposeOnSet: u,\n      size: a,\n      sizeCalculation: c,\n      noUpdateTTL: l,\n      noDeleteOnFetchRejection: f,\n      allowStaleOnFetchRejection: d,\n      allowStaleOnFetchAbort: p,\n      ignoreFetchAbort: h,\n      status: y,\n      signal: F\n    }, v = this.#f.get(t);\n    if (v === void 0) {\n      y && (y.fetch = \"miss\");\n      const E = this.#M(t, v, S, m);\n      return E.__returned = E;\n    } else {\n      const E = this.#r[v];\n      if (this.#a(E)) {\n        const T = r && E.__staleWhileFetching !== void 0;\n        return y && (y.fetch = \"inflight\", T && (y.returnedStale = !0)), T ? E.__staleWhileFetching : E.__returned = E;\n      }\n      const R = this.#A(v);\n      if (!D && !R)\n        return y && (y.fetch = \"hit\"), this.#z(v), i && this.#N(v), y && this.#R(y, v), E;\n      const A = this.#M(t, v, S, m), w = A.__staleWhileFetching !== void 0 && r;\n      return y && (y.fetch = R ? \"stale\" : \"refresh\", w && R && (y.returnedStale = !0)), w ? A.__staleWhileFetching : A.__returned = A;\n    }\n  }\n  forceFetch(t, n = {}) {\n    const { status: r = void 0 } = n;\n    return n.status = r, r && n.context && (r.context = n.context), this.#H(t, n);\n  }\n  async #H(t, n = {}) {\n    const r = await this.#W(\n      t,\n      n\n    );\n    if (r === void 0)\n      throw new Error(\"fetch() returned undefined\");\n    return r;\n  }\n  memo(t, n = {}) {\n    const { status: r = void 0 } = n;\n    n.status = r, r && (r.op = \"memo\", r.key = t, n.context && (r.context = n.context));\n    const i = this.#X(t, n);\n    return r && (r.value = i), i;\n  }\n  #X(t, n = {}) {\n    const r = this.#g;\n    if (!r)\n      throw new Error(\"no memoMethod provided to constructor\");\n    const { context: i, status: s, forceRefresh: o, ...u } = n;\n    s && o && (s.forceRefresh = !0);\n    const a = this.#P(t, u), c = o || a === void 0;\n    if (s && (s.memo = c ? \"miss\" : \"hit\", c || (s.value = a)), !c)\n      return a;\n    const l = r(t, a, {\n      options: u,\n      context: i\n    });\n    return s && (s.value = l), this.#k(t, l, u), l;\n  }\n  /**\n   * Return a value from the cache. Will update the recency of the cache\n   * entry found.\n   *\n   * If the key is not found, get() will return `undefined`.\n   */\n  get(t, n = {}) {\n    const { status: r = void 0 } = n;\n    n.status = r, r && (r.op = \"get\", r.key = t);\n    const i = this.#P(t, n);\n    return r && i !== void 0 && (r.value = i), i;\n  }\n  #P(t, n = {}) {\n    const {\n      allowStale: r = this.allowStale,\n      updateAgeOnGet: i = this.updateAgeOnGet,\n      noDeleteOnStaleGet: s = this.noDeleteOnStaleGet,\n      status: o\n    } = n, u = this.#f.get(t);\n    if (u === void 0) {\n      o && (o.get = \"miss\");\n      return;\n    }\n    const a = this.#r[u], c = this.#a(a);\n    return o && this.#R(o, u), this.#A(u) ? c ? (o && (o.get = \"stale-fetching\"), r && a.__staleWhileFetching !== void 0 ? (o && (o.returnedStale = !0), a.__staleWhileFetching) : void 0) : (s || this.#T(t, \"expire\"), o && (o.get = \"stale\"), r ? (o && (o.returnedStale = !0), a) : void 0) : (o && (o.get = c ? \"fetching\" : \"hit\"), this.#z(u), i && this.#N(u), c ? a.__staleWhileFetching : a);\n  }\n  #G(t, n) {\n    this.#y[n] = t, this.#d[t] = n;\n  }\n  #z(t) {\n    t !== this.#m && (t === this.#p ? this.#p = this.#d[t] : this.#G(this.#y[t], this.#d[t]), this.#G(this.#m, t), this.#m = t);\n  }\n  /**\n   * Deletes a key out of the cache.\n   *\n   * Returns true if the key was deleted, false otherwise.\n   */\n  delete(t) {\n    return this.#T(t, \"delete\");\n  }\n  #T(t, n) {\n    let r = !1;\n    if (this.#l !== 0) {\n      const i = this.#f.get(t);\n      if (i !== void 0)\n        if (this.#w?.[i] && (clearTimeout(this.#w?.[i]), this.#w[i] = void 0), r = !0, this.#l === 1)\n          this.#V(n);\n        else {\n          this.#I(i);\n          const s = this.#r[i];\n          if (this.#a(s) ? s.__abortController.abort(new Error(\"deleted\")) : (this.#S || this.#F) && (this.#S && this.#n?.(s, t, n), this.#F && this.#D?.push([s, t, n])), this.#f.delete(t), this.#u[i] = void 0, this.#r[i] = void 0, i === this.#m)\n            this.#m = this.#y[i];\n          else if (i === this.#p)\n            this.#p = this.#d[i];\n          else {\n            const o = this.#y[i];\n            this.#d[o] = this.#d[i];\n            const u = this.#d[i];\n            this.#y[u] = this.#y[i];\n          }\n          this.#l--, this.#E.push(i);\n        }\n    }\n    if (this.#F && this.#D?.length) {\n      const i = this.#D;\n      let s;\n      for (; s = i?.shift(); )\n        this.#s?.(...s);\n    }\n    return r;\n  }\n  /**\n   * Clear the cache entirely, throwing away all values.\n   */\n  clear() {\n    return this.#V(\"delete\");\n  }\n  #V(t) {\n    for (const n of this.#C({ allowStale: !0 })) {\n      const r = this.#r[n];\n      if (this.#a(r))\n        r.__abortController.abort(new Error(\"deleted\"));\n      else {\n        const i = this.#u[n];\n        this.#S && this.#n?.(r, i, t), this.#F && this.#D?.push([r, i, t]);\n      }\n    }\n    if (this.#f.clear(), this.#r.fill(void 0), this.#u.fill(void 0), this.#b && this.#_) {\n      this.#b.fill(0), this.#_.fill(0);\n      for (const n of this.#w ?? [])\n        n !== void 0 && clearTimeout(n);\n      this.#w?.fill(void 0);\n    }\n    if (this.#v && this.#v.fill(0), this.#p = 0, this.#m = 0, this.#E.length = 0, this.#h = 0, this.#l = 0, this.#F && this.#D) {\n      const n = this.#D;\n      let r;\n      for (; r = n?.shift(); )\n        this.#s?.(...r);\n    }\n  }\n}\nclass ci {\n  // 内部数据库 data = expirationMap\n  data;\n  // <key, expiration>\n  expirationMap = /* @__PURE__ */ new Map();\n  // 永不过期的（ttl=Infinity） keys[]\n  immortalKeys = /* @__PURE__ */ new Set();\n  // <expiration, keys[]> = 默认字典序 = 默认按 expiration 过期时间 排序\n  // 未进入 expirations 的 key 无法删除\n  expirations = /* @__PURE__ */ Object.create(null);\n  ttl;\n  max;\n  // private calculatedSize = 0;\n  // private maxSize: number;\n  // private maxEntrySize: number;\n  // private sizeCalculation: SizeCalculator<K, V> | undefined;\n  updateAgeOnGet;\n  checkAgeOnGet;\n  updateAgeOnHas;\n  checkAgeOnHas;\n  noUpdateTTL;\n  dispose;\n  noDisposeOnSet;\n  timer;\n  timerExpiration;\n  constructor({\n    ttl: t = 1 / 0,\n    max: n = 1 / 0,\n    // maxSize,\n    // maxEntrySize,\n    // sizeCalculation,\n    updateAgeOnGet: r = !1,\n    checkAgeOnGet: i = !1,\n    updateAgeOnHas: s = !1,\n    checkAgeOnHas: o = !1,\n    noUpdateTTL: u = !1,\n    dispose: a,\n    noDisposeOnSet: c = !1\n  } = {}, l = /* @__PURE__ */ new Map()) {\n    if (t !== void 0 && !tr(t))\n      throw new TypeError(\"ttl must be positive integer or Infinity if set\");\n    if (!tr(n))\n      throw new TypeError(\"max must be positive integer or Infinity\");\n    if (this.data = l, this.ttl = t, this.max = n, this.updateAgeOnGet = !!r, this.checkAgeOnGet = !!i, this.updateAgeOnHas = !!s, this.checkAgeOnHas = !!o, this.noUpdateTTL = !!u, this.noDisposeOnSet = !!c, a !== void 0) {\n      if (typeof a != \"function\")\n        throw new TypeError(\"dispose must be function if set\");\n      this.dispose = a;\n    } else\n      this.dispose = (f, d, h) => {\n      };\n    this.timer = void 0, this.timerExpiration = void 0;\n  }\n  get size() {\n    return this.data.size;\n  }\n  // 设置下一个检查时间点\n  // expiration = now() + ttl\n  setTimer(t, n) {\n    if (this.timerExpiration && this.timerExpiration < t)\n      return;\n    this.timer && clearTimeout(this.timer);\n    const r = setTimeout(() => {\n      this.timer = void 0, this.timerExpiration = void 0, this.purgeStale();\n      for (const i in this.expirations) {\n        const s = Number(i);\n        this.setTimer(s, s - M());\n        break;\n      }\n    }, Math.min(W0, Math.max(0, n)));\n    r.unref && r.unref(), this.timerExpiration = t, this.timer = r;\n  }\n  // hang onto the timer so we can clearTimeout if all items\n  // are deleted.  Deno doesn't have Timer.unref(), so it\n  // hangs otherwise.\n  cancelTimer() {\n    this.timer && (clearTimeout(this.timer), this.timerExpiration = void 0, this.timer = void 0);\n  }\n  clear() {\n    const t = this.dispose !== ci.prototype.dispose ? [...this] : [];\n    this.data.clear(), this.expirationMap.clear(), this.cancelTimer(), this.expirations = /* @__PURE__ */ Object.create(null);\n    for (const [n, r] of t)\n      this.dispose(r, n, \"delete\");\n  }\n  setTTL(t, n = this.ttl) {\n    const r = this.expirationMap.get(t);\n    if (r !== void 0) {\n      const i = this.expirations[r];\n      !i || i.length <= 1 ? delete this.expirations[r] : this.expirations[r] = i.filter((s) => s !== t);\n    }\n    if (n && n !== 1 / 0) {\n      this.immortalKeys.delete(t);\n      const i = Math.floor(M() + n);\n      this.expirationMap.set(t, i), this.expirations[i] || (this.expirations[i] = [], this.setTimer(i, n)), this.expirations[i].push(t);\n    } else\n      this.immortalKeys.add(t), this.expirationMap.set(t, 1 / 0);\n  }\n  set(t, n, {\n    ttl: r = this.ttl,\n    noUpdateTTL: i = this.noUpdateTTL,\n    noDisposeOnSet: s = this.noDisposeOnSet\n  } = {}) {\n    if (!tr(r))\n      throw new TypeError(\"ttl must be positive integer or Infinity\");\n    if (this.expirationMap.has(t)) {\n      i || this.setTTL(t, r);\n      const o = this.data.get(t), u = !s && this.data.has(t);\n      o !== n && (this.data.set(t, n), u && this.dispose(o, t, \"set\"));\n    } else\n      this.setTTL(t, r), this.data.set(t, n);\n    for (; this.size > this.max; )\n      this.purgeToCapacity();\n    return this;\n  }\n  has(t, {\n    checkAgeOnHas: n = this.checkAgeOnHas,\n    ttl: r = this.ttl,\n    updateAgeOnHas: i = this.updateAgeOnHas\n  } = {}) {\n    return this.data.has(t) ? n && this.getRemainingTTL(t) === 0 ? (this.delete(t), !1) : (i && this.setTTL(t, r), !0) : !1;\n  }\n  getRemainingTTL(t) {\n    const n = this.expirationMap.get(t);\n    return n === 1 / 0 ? 1 / 0 : n !== void 0 ? Math.max(0, Math.ceil(n - M())) : 0;\n  }\n  get(t, {\n    updateAgeOnGet: n = this.updateAgeOnGet,\n    ttl: r = this.ttl,\n    checkAgeOnGet: i = this.checkAgeOnGet\n  } = {}) {\n    const s = this.data.get(t);\n    if (i && this.getRemainingTTL(t) === 0) {\n      this.delete(t);\n      return;\n    }\n    return n && this.setTTL(t, r), s;\n  }\n  delete(t) {\n    const n = this.expirationMap.get(t);\n    if (n !== void 0) {\n      const r = this.data.get(t);\n      this.data.delete(t), this.expirationMap.delete(t), this.immortalKeys.delete(t);\n      const i = this.expirations[n];\n      return i && (i.length <= 1 ? delete this.expirations[n] : this.expirations[n] = i.filter(\n        (s) => s !== t\n      )), this.dispose(r, t, \"delete\"), this.size === 0 && this.cancelTimer(), !0;\n    }\n    return !1;\n  }\n  // 清除超限数据 when cache is full\n  purgeToCapacity() {\n    if (!(this.size <= this.max))\n      for (const t in this.expirations) {\n        const n = this.expirations[t];\n        if (this.size - n.length >= this.max) {\n          delete this.expirations[t];\n          const r = [];\n          for (const i of n)\n            r.push([i, this.data.get(i)]), this.data.delete(i), this.expirationMap.delete(i);\n          for (const [i, s] of r)\n            this.dispose(s, i, \"evict\");\n        } else {\n          const r = this.size - this.max, i = [];\n          for (const s of n.splice(0, r))\n            i.push([s, this.data.get(s)]), this.data.delete(s), this.expirationMap.delete(s);\n          for (const [s, o] of i)\n            this.dispose(o, s, \"evict\");\n        }\n      }\n  }\n  // 清除陈旧数据\n  purgeStale() {\n    const t = Math.ceil(M());\n    for (const n in this.expirations) {\n      if (n === \"Infinity\" || Number(n) > t)\n        return;\n      const r = [...this.expirations[n] || []], i = [];\n      delete this.expirations[n];\n      for (const s of r)\n        i.push([s, this.data.get(s)]), this.data.delete(s), this.expirationMap.delete(s);\n      for (const [s, o] of i)\n        this.dispose(o, s, \"expire\");\n    }\n    this.size === 0 && this.cancelTimer();\n  }\n  *entries() {\n    for (const t in this.expirations)\n      for (const n of this.expirations[t])\n        yield [n, this.data.get(n)];\n    for (const t of this.immortalKeys)\n      yield [t, this.data.get(t)];\n  }\n  *keys() {\n    for (const t in this.expirations)\n      for (const n of this.expirations[t])\n        yield n;\n    for (const t of this.immortalKeys)\n      yield t;\n  }\n  *values() {\n    for (const t in this.expirations)\n      for (const n of this.expirations[t])\n        yield this.data.get(n);\n    for (const t of this.immortalKeys)\n      yield this.data.get(t);\n  }\n  [Symbol.iterator]() {\n    return this.entries();\n  }\n  firstKey() {\n    return this.keys().next().value;\n  }\n}\nconst xl = \"__yz_set_cache_undefined__\";\nclass _w {\n  __data__;\n  get size() {\n    return this.__data__.size;\n  }\n  constructor(t, n = new Ol()) {\n    this.__data__ = n, t = t || [];\n    const r = t.length;\n    let i = -1;\n    for (; ++i < r; )\n      this.add(t[i]);\n  }\n  add(t) {\n    return this.__data__.set(t, xl), this;\n  }\n  has(t) {\n    return this.__data__.has(t);\n  }\n  delete(t) {\n    return this.__data__.delete(t);\n  }\n  clear() {\n    this.__data__.clear();\n  }\n  *values() {\n    for (const t of this.__data__.keys())\n      yield { value: t };\n  }\n  [Symbol.iterator]() {\n    return this.values();\n  }\n}\nclass kl {\n  cache;\n  cacheKeyResolver;\n  constructor(t) {\n    if (typeof AbortController > \"u\")\n      throw new Error(\"AbortController not supported!\");\n    this.cache = t?.createCache ? t.createCache() : /* @__PURE__ */ new Map(), this.cacheKeyResolver = t?.cacheKeyResolver || ((...n) => String(n[0]));\n  }\n  set(...t) {\n    const n = this.cacheKeyResolver(...t), r = new AbortController();\n    return this.cache.set(n, r), r;\n  }\n  get(...t) {\n    const n = this.cacheKeyResolver(...t);\n    return this.cache.get(n);\n  }\n  delete(...t) {\n    const n = this.cacheKeyResolver(...t);\n    return this.cache.delete(n);\n  }\n  clear() {\n    this.cache.clear();\n  }\n  abort(...t) {\n    this.get(...t)?.abort(), this.delete(...t);\n  }\n}\nconst Ie = {\n  branch: \"├\",\n  lastBranch: \"└\",\n  line: \"│\",\n  empty: \" \"\n};\nfunction nr(e, t = {}) {\n  const {\n    showValues: n = !0,\n    hideFunctions: r = !1,\n    lineBreak: i = `\\r\n`,\n    maxDeep: s\n  } = t, o = [], u = /* @__PURE__ */ new WeakSet();\n  function a(l, f = \"\", d = 0) {\n    if (typeof l == \"string\") {\n      o.push(f + '\"' + l + '\"');\n      return;\n    }\n    if (typeof l != \"object\" || l === null) {\n      n && o.push(f + String(l));\n      return;\n    }\n    if (s && d >= s) {\n      Array.isArray(e) ? o.push(\"[...OverMaxDeep]\") : o.push(\"{...OverMaxDeep}\");\n      return;\n    }\n    if (u.has(l)) {\n      o.push(f + \"[Circular]\");\n      return;\n    }\n    u.add(l);\n    const h = Object.keys(l).filter((p) => !(r && typeof l[p] == \"function\"));\n    h.forEach((p, m) => {\n      const D = l[p], y = m === h.length - 1, F = d === 0 && m === 0 ? \"\" : f, S = y ? Ie.lastBranch : Ie.branch, v = p.trim() === \"\" ? \"\" : p;\n      let E = F + S + (v ? \" \" + v : \"\");\n      const R = p.trim() !== \"\";\n      if (D && typeof D == \"object\" && u.has(D))\n        o.push(\n          E + (R ? \": \" : E ? \" \" : \"\") + \"[Circular]\"\n        );\n      else if (D && typeof D == \"object\" && !Array.isArray(D)) {\n        o.push(E);\n        const A = y ? Ie.empty : Ie.line, k = F + A + \" \";\n        a(D, k, d + 1);\n      } else if (Array.isArray(D)) {\n        o.push(\n          E + (R ? \": \" : E ? \" \" : \"\") + \"[Array(\" + D.length + \")]\"\n        );\n        const A = y ? Ie.empty : Ie.line, k = F + A + \" \";\n        a(D, k, d + 1);\n      } else if (n) {\n        const A = typeof D == \"function\" ? \"[Function]\" : typeof D == \"string\" ? '\"' + String(D) + '\"' : String(D);\n        E += (R ? \": \" : E ? \" \" : \"\") + A, o.push(E);\n      } else\n        o.push(E);\n    });\n  }\n  const c = Object.keys(e);\n  if (c.length === 0)\n    return \"(empty)\";\n  if (c.length === 1 && c[0] !== void 0 && c[0].trim() === \"\" && typeof e[c[0]] == \"string\") {\n    const l = c[0], f = Ie.lastBranch, d = e[l], h = typeof d == \"function\" ? \"[Function]\" : typeof d == \"string\" ? '\"' + d + '\"' : String(d);\n    return f + \" \" + h;\n  }\n  return a(e), i + o.join(i);\n}\nfunction $o(e = \"verbose\") {\n  let t = -1;\n  switch (e) {\n    case \"verbose\":\n      t = 0;\n      break;\n    case \"debug\":\n      t = 1;\n      break;\n    case \"info\":\n      t = 2;\n      break;\n    case \"warn\":\n      t = 3;\n      break;\n    case \"error\":\n      t = 4;\n      break;\n  }\n  return t;\n}\nfunction Sw(e = \"verbose\") {\n  _.OPEN_LOG_LEVEL = $o(e);\n}\nfunction Nl() {\n  _.OPEN_LOG_LEVEL = -1;\n}\nfunction Aw(e) {\n  _.LOG_UPLOAD_FN = e;\n}\nNl();\nfunction lt(e = \"verbose\") {\n  return _.OPEN_LOG_LEVEL <= $o(e);\n}\nfunction li(e) {\n  _.LOG_UPLOAD_FN && _.LOG_UPLOAD_FN(e);\n}\nfunction $e(e, t = \"\") {\n  try {\n    if (li({ level: \"info\", msg: e, type: t }), !lt(\"info\"))\n      return;\n    console.log(e);\n  } catch {\n  }\n}\nfunction _e(e, t = \"\") {\n  try {\n    if (li({ level: \"warn\", msg: e, type: t }), !lt(\"warn\"))\n      return;\n    console.warn(e);\n  } catch {\n  }\n}\nfunction Il(e, t = \"\") {\n  try {\n    if (li({ level: \"error\", msg: e, type: t }), !lt(\"error\"))\n      return;\n    console.error(e);\n  } catch {\n  }\n}\nconst Gi = {\n  start: (e) => {\n    lt(\"verbose\") && (!console || typeof console != \"object\" || // typeof console.group !== \"function\"\n    typeof console.groupCollapsed != \"function\" || console.groupCollapsed(e));\n  },\n  end: () => {\n    !console || typeof console != \"object\" || typeof console.groupEnd != \"function\" || console.groupEnd();\n  }\n}, dn = {\n  start: (e) => {\n    lt(\"verbose\") && (!console || typeof console != \"object\" || typeof console.time != \"function\" || console.time(e));\n  },\n  end: (e) => {\n    !console || typeof console != \"object\" || typeof console.timeEnd != \"function\" || console.timeEnd(e);\n  }\n}, Vi = {\n  start: (e) => {\n    lt(\"verbose\") && (!console || typeof console != \"object\" || typeof console.profile != \"function\" || console.profile(e));\n  },\n  end: (e) => {\n    !console || typeof console != \"object\" || typeof console.profileEnd != \"function\" || console.profileEnd(e);\n  }\n};\nfunction Ow(e) {\n  const t = /* @__PURE__ */ new WeakMap();\n  return new Proxy(e, {\n    construct(n, r) {\n      return t.has(n) || t.set(n, new n(...r)), t.get(n);\n    }\n  });\n}\nfunction Cw(e) {\n  return class extends e {\n    constructor(...t) {\n      super(...t), this.currentUser = null;\n    }\n    login(t) {\n      $e(`User ${t.name} logged in with role ${t.role}`), this.currentUser = t;\n    }\n    logout() {\n      $e(`User ${this.currentUser.name} logged out`), this.currentUser = null;\n    }\n  };\n}\nfunction Tw(e) {\n  return function(t, n, r) {\n    const i = r.value;\n    return r.value = function(...s) {\n      if (!this.currentUser)\n        throw new Error(\"Authentication required\");\n      if (this.currentUser.role !== e)\n        throw new Error(`Requires ${e} role`);\n      return i.apply(this, s);\n    }, r;\n  };\n}\nfunction Rw(e) {\n  return function(t, n) {\n    let r;\n    Object.defineProperty(t, n, {\n      get() {\n        return r;\n      },\n      set(i) {\n        if (i.length < e)\n          throw new Error(`${String(n)} must be at least ${e} long`);\n        r = i;\n      }\n    });\n  };\n}\nfunction xw(e) {\n  return function(t, n) {\n    let r;\n    Object.defineProperty(t, n, {\n      get() {\n        return r;\n      },\n      set(i) {\n        if (i.length < e)\n          throw new Error(`${String(n)} must be at most ${e} long`);\n        r = i;\n      }\n    });\n  };\n}\nfunction kw(e) {\n  return function(t, n, r) {\n    const i = e || `${t.constructor.name}.${String(n)}`, s = r.value;\n    if (typeof s != \"function\")\n      throw new SyntaxError(\n        `@LogExecuteResultDecorator() can only be used on functions, not: ${i}`\n      );\n    return {\n      ...r,\n      value(...o) {\n        const u = s.apply(this, o);\n        return $e(`${i} ( ${o} ) = ${u}`), u;\n      }\n    };\n  };\n}\nfunction Nw(e, t, n) {\n  const r = `${e.constructor.name}.${String(t)}`, i = n.value;\n  if (typeof i != \"function\")\n    throw new SyntaxError(\n      `@LogExecuteTimeDecorator can only be used on functions, not: ${r}`\n    );\n  let s = 0;\n  return {\n    ...n,\n    value(...o) {\n      const u = `${r}-${s++}`;\n      dn.start(u);\n      try {\n        return i.apply(this, o);\n      } finally {\n        dn.end(u);\n      }\n    }\n  };\n}\nfunction Iw(e, t, n) {\n  const r = `${e.constructor.name}.${String(t)}`, i = n.value;\n  if (typeof i != \"function\")\n    throw new SyntaxError(\n      `@ProfileDecorator can only be used on functions, not: ${r}`\n    );\n  return {\n    ...n,\n    value(...s) {\n      Vi.start(r);\n      try {\n        return i.apply(this, s);\n      } finally {\n        Vi.end(r);\n      }\n    }\n  };\n}\nfunction Pw(e = 300, t) {\n  return function(n, r, i) {\n    const s = `${n.constructor.name}.${String(r)}`, o = i.value;\n    if (typeof o != \"function\")\n      throw new SyntaxError(\n        `@ThrottleDecorator() can only be used on functions, not: ${s}`\n      );\n    return {\n      ...i,\n      value(...u) {\n        Qr(this).get(`__@ThrottleDecorator_${s}__`, gl(o, e, t)).apply(this, u);\n      }\n    };\n  };\n}\nfunction zw(e = 300) {\n  return function(t, n, r) {\n    const i = `${t.constructor.name}.${String(n)}`, s = r.value;\n    if (typeof s != \"function\")\n      throw new SyntaxError(\n        `@DebounceDecorator() can only be used on functions, not: ${i}`\n      );\n    return {\n      ...r,\n      value(...o) {\n        Qr(this).get(`__@DebounceDecorator_${i}__`, yl(s, e)).apply(this, o);\n      }\n    };\n  };\n}\nfunction Bw(e = 3, t) {\n  return function(n, r, i) {\n    const s = `${n.constructor.name}.${String(r)}`, o = i.value;\n    if (typeof o != \"function\")\n      throw new SyntaxError(\n        `@RetryDecoratorDecorator() can only be used on functions, not: ${s}`\n      );\n    const u = zt(o, { maxRetries: e, retryDelay: t });\n    return {\n      ...i,\n      async value(...a) {\n        return await u.apply(this, a);\n      }\n    };\n  };\n}\nfunction $w(e = { ttl: 6e4 }) {\n  return function(t, n, r) {\n    const i = `${t.constructor.name}.${String(n)}`, s = r.value;\n    if (typeof s != \"function\")\n      throw new SyntaxError(\n        `@MemoizeDecorator() can only be used on functions, not: ${i}`\n      );\n    return {\n      ...r,\n      async value(...o) {\n        return await Qr(this).get(\n          `__@MemorizeDecorator_${i}__`,\n          Ke(s, {\n            cacheKeyResolver: (...a) => a.join(\"_\"),\n            createCache: () => new ci(e)\n          })\n        ).apply(this, o);\n      }\n    };\n  };\n}\nfunction Lw(e, t, n) {\n  if (n)\n    return n.writable = !1, n;\n  let r;\n  Object.defineProperty(e, t, {\n    get() {\n      return r;\n    },\n    set(i) {\n      if (r === void 0)\n        r = i;\n      else\n        throw new Error(`${e}.${String(t)} is Readonly!`);\n    }\n  });\n}\nfunction Mw(e = !0) {\n  return (t, n, r) => {\n    if (r)\n      return r.configurable = e, r;\n    Object.defineProperty(t, n, {\n      configurable: e\n    });\n  };\n}\nfunction jw(e = !0) {\n  return (t, n, r) => {\n    if (r)\n      return r.enumerable = e, r;\n    Object.defineProperty(t, n, {\n      enumerable: e\n    });\n  };\n}\nfunction Pl(e) {\n  return typeof setImmediate < \"u\" && hn(setImmediate) ? (setImmediate(e), !0) : typeof queueMicrotask == \"function\" ? (queueMicrotask(e), !0) : typeof Promise < \"u\" && hn(Promise) ? (Promise.resolve().then(e), !0) : !1;\n}\nfunction $t(e) {\n  if (typeof MessageChannel < \"u\" && (hn(MessageChannel) || MessageChannel.toString() === \"[object MessageChannelConstructor]\")) {\n    const { port1: t, port2: n } = new MessageChannel();\n    t.onmessage = () => {\n      t.onmessage = null, e();\n    }, n.postMessage(null);\n  } else\n    setTimeout(e, 0);\n}\nfunction Uw(e) {\n  Pl(e) || $t(e);\n}\nasync function zl() {\n  return new Promise((e) => {\n    $t(e);\n  });\n}\n_.requestAnimationFrame = _.requestAnimationFrame || _.webkitRequestAnimationFrame || _.mozRequestAnimationFrame || _.oRequestAnimationFrame || _.msRequestAnimationFrame;\n_.cancelAnimationFrame = _.cancelAnimationFrame || _.webkitCancelAnimationFrame || _.mozCancelAnimationFrame || _.oCancelAnimationFrame || _.msCancelAnimationFrame;\nif (!_.requestAnimationFrame) {\n  let e = M();\n  _.requestAnimationFrame = (t) => {\n    const n = M(), r = Math.max(0, 16 - (n - e)), i = _.setTimeout(() => {\n      t(n + r);\n    }, r);\n    return e = n + r, i;\n  };\n}\n_.cancelAnimationFrame || (_.cancelAnimationFrame = (e) => {\n  _.clearTimeout(e);\n});\nconst pn = _.requestAnimationFrame, Lo = _.cancelAnimationFrame;\nfunction Bl(e) {\n  let t = !0, n = pn(function r(i) {\n    t && e(i) && (n = pn(r));\n  });\n  return () => {\n    t = !1, Lo(n);\n  };\n}\nfunction Ki(e, t = 0) {\n  if (t <= 0) {\n    const n = pn(e);\n    return () => Lo(n);\n  } else {\n    const n = M();\n    return Bl((r) => r - n >= t ? (e(r), !1) : !0);\n  }\n}\nfunction Zw(e, t = 0) {\n  let n = !0, r = 0;\n  const i = M();\n  let s = Ki(function o(u) {\n    if (!n)\n      return;\n    r = Math.floor((u - i) / t);\n    const a = u - i - r * t;\n    e(u, r, t <= a), s = Ki(o, Math.max(0, t - a));\n  }, t);\n  return () => {\n    n = !1, s();\n  };\n}\n_.requestIdleCallback = _.requestIdleCallback || function(e, t) {\n  const n = M();\n  return setTimeout(() => {\n    const r = M() - n, i = {\n      didTimeout: typeof t?.timeout != \"number\" ? !1 : r > t.timeout,\n      // 是否已到设置的超时时间\n      // 本帧剩余可执行时间，毫秒\n      // timeRemaining 最大不超过 50ms，50ms = 1000 / 20fps\n      // 注意：timeRemaining 最大为 50毫秒 ，是根据研究 https://w3c.github.io/requestidlecallback/#bib-responsetime 得出的\n      // 该研究表明，对用户输入的 100毫秒 以内的响应通常被认为对人类是瞬时的，就是人类不会有察觉\n      // 将闲置截止期限设置为 50ms 意味着即使在闲置任务开始后立即发生用户输入，用户代理仍然有剩余的 50ms 可以在其中响应用户输入而不会产生用户可察觉的滞后\n      timeRemaining: () => Math.max(0, 50 - r)\n    };\n    e(i);\n  }, t?.timeout);\n};\n_.cancelIdleCallback = _.cancelIdleCallback || function(e) {\n  clearTimeout(e);\n};\nconst qw = _.requestIdleCallback, Ww = _.cancelIdleCallback;\nlet wt = 33, ge = 33, Wt = 0, Ft = 0, rr = !1;\nfunction Mo(e) {\n  rr || (rr = !0, pn((t) => {\n    rr = !1, Wt = t, Ft === 0 && (Ft = Wt + ge);\n    let n = ge + Wt - Ft;\n    n < ge && wt < ge ? (n < 8 && (n = 8), ge = Math.max(\n      n,\n      wt\n    )) : n > ge && wt > ge && (ge = Math.min(\n      n,\n      wt\n    )), wt = n, Ft = Wt + ge, $t(() => {\n      e(Ft), Mo(e);\n    });\n  }));\n}\nfunction jo(e) {\n  const t = e?.maxIterations || 1e4, n = !!e?.tracing, r = e?.onTrace || ((h) => {\n    const p = \"  \".repeat(h.depth);\n    console.log(\n      `${p}emit#${h.id} parent=${h.parentId} source=${h.source}`\n    );\n  }), i = [];\n  let s = 0, o = 0;\n  const u = /* @__PURE__ */ new Set(), a = (h) => (u.add(h), () => {\n    u.delete(h);\n  });\n  let c;\n  function l(h, p) {\n    const m = c, D = {\n      id: String(++s),\n      dataset: h,\n      source: p,\n      createdAt: M(),\n      parentId: m?.id,\n      depth: m ? m.depth + 1 : 0\n    };\n    i.push(D);\n  }\n  let f = !1;\n  function d() {\n    if (f)\n      return;\n    f = !0;\n    let h = 0;\n    try {\n      for (; o < i.length; ) {\n        if (++h > t)\n          throw new Error(\"Possible infinite signal loop detected\");\n        const p = i[o], m = c;\n        c = p, n && r(p);\n        const D = Array.from(u);\n        for (const y of D)\n          try {\n            y(...p.dataset);\n          } catch (F) {\n            $t(() => {\n              throw F;\n            });\n          }\n        c = m, o++;\n      }\n    } finally {\n      f = !1, o >= i.length && (i.length = 0, o = 0);\n    }\n  }\n  return {\n    subscribe: a,\n    once(h) {\n      const p = a((...m) => {\n        p(), h(...m);\n      });\n      return p;\n    },\n    emit(...h) {\n      l(h), d();\n    },\n    emitFrom(h, ...p) {\n      l(p, h), d();\n    },\n    clear() {\n      u.clear();\n    }\n  };\n}\nfunction $l(e = {}) {\n  const { concurrency: t = 1 / 0, maxWorkerRunTime: n = 6e4 } = e;\n  let r = 1 / 0;\n  const i = () => r === 1 / 0 || M() < r, s = (w) => {\n    r = M() + w, c();\n  };\n  let o = i() ? 0 : 1;\n  const u = () => o > 0, a = () => {\n    o++;\n  }, c = () => {\n    o > 0 && o--, A();\n  }, l = () => !u() && !i(), f = async () => {\n    l() && await zl();\n  };\n  let d = 0, h = [];\n  const p = /* @__PURE__ */ new Set(), m = /* @__PURE__ */ new Set();\n  let D = 0, y = [], F = [];\n  const S = () => {\n    D === 0 && (y.forEach((w) => w()), y = [], h.length === 0 && (F.forEach((w) => w()), F = []));\n  }, v = (w) => {\n    if (w.signal) {\n      if (w.signal.aborted)\n        return w.resultReject(\"Cancel by Aborted!\"), w;\n      w.abortHandler = () => {\n        w.resultReject(\"Cancel by Abort!\"), h = h.filter((T) => T.id !== w.id), S();\n      }, w.signal.addEventListener(\"abort\", w.abortHandler, {\n        once: !0\n      });\n    }\n    if (h.filter((T) => w.invalidates?.includes(T.id)).forEach((T) => {\n      T.resultReject(\"Cancel by invalidates!\");\n    }), h = h.filter((T) => !w.invalidates?.includes(T.id)), w.fold) {\n      const T = h.findIndex((P) => P.id === w.id);\n      if (T !== -1) {\n        const P = h[T], V = w.fold(P, w);\n        return P.dataset = V.dataset, P;\n      } else\n        return h.push(w), w;\n    } else\n      return h.push(w), w;\n  }, E = () => {\n    if (h.length === 0)\n      return;\n    let w = -1, T;\n    for (let P = 0, V = h.length; P < V; P++) {\n      const ne = h[P];\n      (!T || ne.niceness < T.niceness) && (w = P, T = ne);\n    }\n    return h.splice(w, 1), T;\n  };\n  let R = !1;\n  const A = () => {\n    R || u() || (R = !0, $t(() => {\n      for (R = !1; h.length > 0 && m.size > 0 && D < t && !u(); ) {\n        const w = E(), T = It(w.deadline) && M() >= w.deadline, P = w.niceness == ln.immediate;\n        if (!i() && !T && !P) {\n          v(w), A();\n          break;\n        }\n        if (w.signal?.aborted) {\n          w.resultReject(\"Cancel by Aborted!\"), S();\n          continue;\n        }\n        D++;\n        const V = m.values().next().value;\n        m.delete(V), _l(\n          zo(\n            Promise.resolve(V(...w.dataset)),\n            // 只是调度 async，还不能抢占 sync CPU\n            n\n          ),\n          w.signal\n        ).then((ne) => {\n          w.resultResolve(ne);\n        }).catch((ne) => {\n          w.retry > 0 ? (w.retry--, v(w)) : w.resultReject(ne);\n        }).finally(async () => {\n          p.has(V) && m.add(V), w.signal && w.abortHandler && w.signal.removeEventListener(\"abort\", w.abortHandler), D--, S(), A();\n        });\n      }\n    }));\n  }, k = (w) => (p.add(w), m.add(w), A(), () => {\n    p.delete(w), m.delete(w);\n  });\n  return {\n    // dispatch\n    put(...w) {\n      const T = w[w.length - 1] || {};\n      let P = {};\n      (\"niceness\" in T || \"deadline\" in T || \"retry\" in T || \"signal\" in T || \"invalidates\" in T || \"fold\" in T) && (P = w.pop());\n      const V = El(), ne = v({\n        id: String(++d),\n        dataset: w,\n        createdAt: M(),\n        result: V.promise,\n        resultResolve: V.resolve,\n        resultReject: V.reject,\n        niceness: P.niceness ?? ln.normal,\n        deadline: P.deadline ?? Jr,\n        retry: P.retry ?? 0,\n        signal: P.signal\n      });\n      return A(), ne;\n    },\n    cancel(w) {\n      h = h.filter((T) => T.id !== w.id), w.signal && w.abortHandler && w.signal.removeEventListener(\"abort\", w.abortHandler), S();\n    },\n    clear() {\n      for (const w of h)\n        w.signal && w.abortHandler && w.signal.removeEventListener(\"abort\", w.abortHandler), w.resultReject(new Error(\"Cleared\"));\n      h.length = 0, S();\n    },\n    run: k,\n    once(w) {\n      const T = k((...P) => {\n        try {\n          return w(...P);\n        } finally {\n          T();\n        }\n      });\n      return T;\n    },\n    async onDrain() {\n      if (!(D === 0 && h.length === 0))\n        return new Promise((w) => {\n          F.push(w);\n        });\n    },\n    async onIdle() {\n      if (D !== 0)\n        return new Promise((w) => {\n          y.push(w);\n        });\n    },\n    pause: a,\n    resume: c,\n    get paused() {\n      return u();\n    },\n    startFrame: s,\n    yieldIfNeeded: f\n  };\n}\nclass Uo {\n  pool;\n  concurrency;\n  maxWorkerRunTime;\n  constructor(t = { concurrency: 1 }) {\n    this.concurrency = t.concurrency ?? 1, this.maxWorkerRunTime = t.maxWorkerRunTime ?? 6e4, this.pool = $l({\n      concurrency: this.concurrency,\n      maxWorkerRunTime: this.maxWorkerRunTime\n    });\n    for (let n = 0; n < this.concurrency; n++)\n      this.pool.run(async function(i) {\n        return await i();\n      });\n  }\n  cancel(t) {\n    this.pool.cancel(t);\n  }\n  clear() {\n    this.pool.clear();\n  }\n  get paused() {\n    return this.pool.paused;\n  }\n  startFrame(t) {\n    this.pool.startFrame(t);\n  }\n  // 立即执行\n  async immediate(t) {\n    try {\n      return this.pool.pause(), await this.pool.onIdle(), await zo(Promise.resolve(t()), this.maxWorkerRunTime);\n    } finally {\n      this.pool.resume();\n    }\n  }\n  // 立即执行\n  // public immediate(fn: TinyFn): TaskEvent<[TinyFn], void> {\n  //   const event = this.pool.put(fn, { niceness: PRIORITIES.immediate });\n  //   return event;\n  // }\n  // as soon as possible\n  asap(t, n) {\n    return this.pool.put(t, {\n      niceness: n?.niceness ?? ln.normal,\n      deadline: typeof n?.timeout == \"number\" ? M() + n?.timeout : Jr\n    });\n  }\n}\nclass Gw {\n  pool;\n  closes = [];\n  constructor(t = { concurrency: 1 }) {\n    this.pool = new Uo({ ...t, maxWorkerRunTime: 1 / 0 });\n  }\n  // 强制关闭\n  close(t = !0) {\n    const n = t ? this.closes.length : Math.max(0, this.closes.length - this.pool.concurrency + 1), r = il(this.closes, n);\n    for (const i of r)\n      i();\n  }\n  clear() {\n    this.pool.clear(), this.close();\n  }\n  createNotifyTask(t, n, r = !0) {\n    return () => new Promise((i, s) => {\n      try {\n        this.close(r);\n        const o = t({\n          ...n,\n          onClose: () => {\n            n?.onClose?.(), i(), nl(this.closes, u);\n          }\n        }), u = () => {\n          o(), i();\n        };\n        this.closes.push(u);\n      } catch (o) {\n        s(o);\n      }\n    });\n  }\n  // 强制显示\n  exclusive(t, n) {\n    return this.pool.immediate(\n      this.createNotifyTask(t, n, !0)\n    );\n  }\n  // 放入队列，依次关闭后显示\n  enqueue(t, n) {\n    const r = this.pool.asap(\n      this.createNotifyTask(t, n, !1)\n    );\n    return () => {\n      this.pool.cancel(r);\n    };\n  }\n}\nclass Ll {\n  pool;\n  started = !1;\n  constructor(t = { concurrency: 1 }) {\n    this.pool = new Uo(t), this.pool.startFrame(0);\n  }\n  clear() {\n    this.pool.clear();\n  }\n  // 懒启动\n  start() {\n    this.started || (this.started = !0, Mo((t) => {\n      this.pool.startFrame(t - M());\n    }));\n  }\n  async idle(t, n) {\n    return this.start(), await this.pool.asap(t, { niceness: ln.idle, timeout: n }).result;\n  }\n}\nconst Qi = new Ll(), Ji = Qi.idle.bind(Qi);\nfunction Vw(e) {\n  let t = !0;\n  return Ji(function n() {\n    t && e() && Ji(n);\n  }), () => {\n    t = !1;\n  };\n}\nclass Kw {\n  queue = [];\n  waiters = [];\n  changed = jo();\n  _revision = 0;\n  get length() {\n    return this.queue.length;\n  }\n  get revision() {\n    return this._revision;\n  }\n  send(t) {\n    this._revision++;\n    const n = this.waiters.findIndex((r) => r.fn(t));\n    if (n !== -1) {\n      const r = this.waiters.splice(n, 1)[0];\n      if (r) {\n        r.resolve(t), this.notify();\n        return;\n      }\n    }\n    this.queue.push(t), this.notify();\n  }\n  poll(t = () => !0) {\n    const n = this.queue.findIndex(t);\n    if (n !== -1)\n      return this.queue.splice(n, 1)[0];\n  }\n  receive(t = () => !0) {\n    const n = this.queue.findIndex(t);\n    if (n !== -1) {\n      const r = this.queue.splice(n, 1)[0];\n      if (r)\n        return this.notify(), Promise.resolve(r);\n    }\n    return new Promise((r) => {\n      this.waiters.push({ fn: t, resolve: r });\n    });\n  }\n  subscribe = this.changed.subscribe;\n  notify() {\n    this.changed.emit();\n  }\n}\nfunction Qw(e) {\n  let t = new AbortController();\n  function n() {\n    t.abort(), t = new AbortController();\n  }\n  function r() {\n    const i = new AbortController(), s = () => i.abort();\n    if (e.aborted || t.signal.aborted)\n      return i.abort(), { signal: i.signal, cleanup: () => {\n      } };\n    e.addEventListener(\"abort\", s, { once: !0 });\n    const o = t.signal;\n    return o.addEventListener(\"abort\", s, { once: !0 }), {\n      signal: i.signal,\n      cleanup: () => {\n        e.removeEventListener(\"abort\", s), o.removeEventListener(\"abort\", s);\n      }\n    };\n  }\n  return { signal: r, wake: n };\n}\nfunction Ml(e) {\n  try {\n    return AbortSignal.any(e);\n  } catch {\n    const n = new AbortController(), r = () => n.abort();\n    for (const i of e)\n      if (i) {\n        if (i.aborted) {\n          n.abort();\n          break;\n        }\n        i.addEventListener(\"abort\", r, { once: !0 });\n      }\n    return n.signal;\n  }\n}\nclass Jw {\n  events;\n  constructor() {\n    this.events = {};\n  }\n  isEmpty(t) {\n    return this.events[t] == null || this.events[t].length == 0;\n  }\n  has(t, n) {\n    return this.events[t] !== void 0 && this.events[t].indexOf(n) !== -1;\n  }\n  prependListener(t, n, r) {\n    return this.events[t] || (this.events[t] = []), this.events[t].unshift(\n      r ? n.bind(r) : n\n    ), this;\n  }\n  addListener(t, n, r) {\n    return this.events[t] || (this.events[t] = []), this.events[t].push(\n      r ? n.bind(r) : n\n    ), this;\n  }\n  on(t, n, r) {\n    return this.addListener(t, n, r), this;\n  }\n  removeListener(t, n) {\n    return this.events[t] && (this.events[t] = this.events[t].filter((r) => r !== n)), this;\n  }\n  off(t, n) {\n    return this.removeListener(t, n), this;\n  }\n  removeAllListeners(t) {\n    return t ? this.events[t] = [] : this.events = {}, this;\n  }\n  // 注意：handler 自己绑定 this\n  emit(t, ...n) {\n    return this.events[t] && this.events[t].slice(0).forEach((i) => {\n      i(...n);\n    }), this;\n  }\n  once(t, n, r) {\n    const i = (...s) => {\n      r ? n.apply(r, s) : n(...s), this.off(t, i);\n    };\n    return this.on(t, i), this;\n  }\n}\nvar Ar = function(e, t) {\n  return Ar = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n, r) {\n    n.__proto__ = r;\n  } || function(n, r) {\n    for (var i in r)\n      Object.prototype.hasOwnProperty.call(r, i) && (n[i] = r[i]);\n  }, Ar(e, t);\n};\nfunction ht(e, t) {\n  if (typeof t != \"function\" && t !== null)\n    throw new TypeError(\"Class extends value \" + String(t) + \" is not a constructor or null\");\n  Ar(e, t);\n  function n() {\n    this.constructor = e;\n  }\n  e.prototype = t === null ? Object.create(t) : (n.prototype = t.prototype, new n());\n}\nfunction jl(e, t, n, r) {\n  function i(s) {\n    return s instanceof n ? s : new n(function(o) {\n      o(s);\n    });\n  }\n  return new (n || (n = Promise))(function(s, o) {\n    function u(l) {\n      try {\n        c(r.next(l));\n      } catch (f) {\n        o(f);\n      }\n    }\n    function a(l) {\n      try {\n        c(r.throw(l));\n      } catch (f) {\n        o(f);\n      }\n    }\n    function c(l) {\n      l.done ? s(l.value) : i(l.value).then(u, a);\n    }\n    c((r = r.apply(e, t || [])).next());\n  });\n}\nfunction Zo(e, t) {\n  var n = { label: 0, sent: function() {\n    if (s[0] & 1)\n      throw s[1];\n    return s[1];\n  }, trys: [], ops: [] }, r, i, s, o = Object.create((typeof Iterator == \"function\" ? Iterator : Object).prototype);\n  return o.next = u(0), o.throw = u(1), o.return = u(2), typeof Symbol == \"function\" && (o[Symbol.iterator] = function() {\n    return this;\n  }), o;\n  function u(c) {\n    return function(l) {\n      return a([c, l]);\n    };\n  }\n  function a(c) {\n    if (r)\n      throw new TypeError(\"Generator is already executing.\");\n    for (; o && (o = 0, c[0] && (n = 0)), n; )\n      try {\n        if (r = 1, i && (s = c[0] & 2 ? i.return : c[0] ? i.throw || ((s = i.return) && s.call(i), 0) : i.next) && !(s = s.call(i, c[1])).done)\n          return s;\n        switch (i = 0, s && (c = [c[0] & 2, s.value]), c[0]) {\n          case 0:\n          case 1:\n            s = c;\n            break;\n          case 4:\n            return n.label++, { value: c[1], done: !1 };\n          case 5:\n            n.label++, i = c[1], c = [0];\n            continue;\n          case 7:\n            c = n.ops.pop(), n.trys.pop();\n            continue;\n          default:\n            if (s = n.trys, !(s = s.length > 0 && s[s.length - 1]) && (c[0] === 6 || c[0] === 2)) {\n              n = 0;\n              continue;\n            }\n            if (c[0] === 3 && (!s || c[1] > s[0] && c[1] < s[3])) {\n              n.label = c[1];\n              break;\n            }\n            if (c[0] === 6 && n.label < s[1]) {\n              n.label = s[1], s = c;\n              break;\n            }\n            if (s && n.label < s[2]) {\n              n.label = s[2], n.ops.push(c);\n              break;\n            }\n            s[2] && n.ops.pop(), n.trys.pop();\n            continue;\n        }\n        c = t.call(e, n);\n      } catch (l) {\n        c = [6, l], i = 0;\n      } finally {\n        r = s = 0;\n      }\n    if (c[0] & 5)\n      throw c[1];\n    return { value: c[0] ? c[1] : void 0, done: !0 };\n  }\n}\nfunction st(e) {\n  var t = typeof Symbol == \"function\" && Symbol.iterator, n = t && e[t], r = 0;\n  if (n)\n    return n.call(e);\n  if (e && typeof e.length == \"number\")\n    return {\n      next: function() {\n        return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e };\n      }\n    };\n  throw new TypeError(t ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction mn(e, t) {\n  var n = typeof Symbol == \"function\" && e[Symbol.iterator];\n  if (!n)\n    return e;\n  var r = n.call(e), i, s = [], o;\n  try {\n    for (; (t === void 0 || t-- > 0) && !(i = r.next()).done; )\n      s.push(i.value);\n  } catch (u) {\n    o = { error: u };\n  } finally {\n    try {\n      i && !i.done && (n = r.return) && n.call(r);\n    } finally {\n      if (o)\n        throw o.error;\n    }\n  }\n  return s;\n}\nfunction Dn(e, t, n) {\n  if (n || arguments.length === 2)\n    for (var r = 0, i = t.length, s; r < i; r++)\n      (s || !(r in t)) && (s || (s = Array.prototype.slice.call(t, 0, r)), s[r] = t[r]);\n  return e.concat(s || Array.prototype.slice.call(t));\n}\nfunction nt(e) {\n  return this instanceof nt ? (this.v = e, this) : new nt(e);\n}\nfunction Ul(e, t, n) {\n  if (!Symbol.asyncIterator)\n    throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var r = n.apply(e, t || []), i, s = [];\n  return i = Object.create((typeof AsyncIterator == \"function\" ? AsyncIterator : Object).prototype), u(\"next\"), u(\"throw\"), u(\"return\", o), i[Symbol.asyncIterator] = function() {\n    return this;\n  }, i;\n  function o(h) {\n    return function(p) {\n      return Promise.resolve(p).then(h, f);\n    };\n  }\n  function u(h, p) {\n    r[h] && (i[h] = function(m) {\n      return new Promise(function(D, y) {\n        s.push([h, m, D, y]) > 1 || a(h, m);\n      });\n    }, p && (i[h] = p(i[h])));\n  }\n  function a(h, p) {\n    try {\n      c(r[h](p));\n    } catch (m) {\n      d(s[0][3], m);\n    }\n  }\n  function c(h) {\n    h.value instanceof nt ? Promise.resolve(h.value.v).then(l, f) : d(s[0][2], h);\n  }\n  function l(h) {\n    a(\"next\", h);\n  }\n  function f(h) {\n    a(\"throw\", h);\n  }\n  function d(h, p) {\n    h(p), s.shift(), s.length && a(s[0][0], s[0][1]);\n  }\n}\nfunction Zl(e) {\n  if (!Symbol.asyncIterator)\n    throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var t = e[Symbol.asyncIterator], n;\n  return t ? t.call(e) : (e = typeof st == \"function\" ? st(e) : e[Symbol.iterator](), n = {}, r(\"next\"), r(\"throw\"), r(\"return\"), n[Symbol.asyncIterator] = function() {\n    return this;\n  }, n);\n  function r(s) {\n    n[s] = e[s] && function(o) {\n      return new Promise(function(u, a) {\n        o = e[s](o), i(u, a, o.done, o.value);\n      });\n    };\n  }\n  function i(s, o, u, a) {\n    Promise.resolve(a).then(function(c) {\n      s({ value: c, done: u });\n    }, o);\n  }\n}\nfunction W(e) {\n  return typeof e == \"function\";\n}\nfunction qo(e) {\n  var t = function(r) {\n    Error.call(r), r.stack = new Error().stack;\n  }, n = e(t);\n  return n.prototype = Object.create(Error.prototype), n.prototype.constructor = n, n;\n}\nvar ir = qo(function(e) {\n  return function(n) {\n    e(this), this.message = n ? n.length + ` errors occurred during unsubscription:\n` + n.map(function(r, i) {\n      return i + 1 + \") \" + r.toString();\n    }).join(`\n  `) : \"\", this.name = \"UnsubscriptionError\", this.errors = n;\n  };\n});\nfunction Or(e, t) {\n  if (e) {\n    var n = e.indexOf(t);\n    0 <= n && e.splice(n, 1);\n  }\n}\nvar $n = function() {\n  function e(t) {\n    this.initialTeardown = t, this.closed = !1, this._parentage = null, this._finalizers = null;\n  }\n  return e.prototype.unsubscribe = function() {\n    var t, n, r, i, s;\n    if (!this.closed) {\n      this.closed = !0;\n      var o = this._parentage;\n      if (o)\n        if (this._parentage = null, Array.isArray(o))\n          try {\n            for (var u = st(o), a = u.next(); !a.done; a = u.next()) {\n              var c = a.value;\n              c.remove(this);\n            }\n          } catch (m) {\n            t = { error: m };\n          } finally {\n            try {\n              a && !a.done && (n = u.return) && n.call(u);\n            } finally {\n              if (t)\n                throw t.error;\n            }\n          }\n        else\n          o.remove(this);\n      var l = this.initialTeardown;\n      if (W(l))\n        try {\n          l();\n        } catch (m) {\n          s = m instanceof ir ? m.errors : [m];\n        }\n      var f = this._finalizers;\n      if (f) {\n        this._finalizers = null;\n        try {\n          for (var d = st(f), h = d.next(); !h.done; h = d.next()) {\n            var p = h.value;\n            try {\n              Hi(p);\n            } catch (m) {\n              s = s ?? [], m instanceof ir ? s = Dn(Dn([], mn(s)), mn(m.errors)) : s.push(m);\n            }\n          }\n        } catch (m) {\n          r = { error: m };\n        } finally {\n          try {\n            h && !h.done && (i = d.return) && i.call(d);\n          } finally {\n            if (r)\n              throw r.error;\n          }\n        }\n      }\n      if (s)\n        throw new ir(s);\n    }\n  }, e.prototype.add = function(t) {\n    var n;\n    if (t && t !== this)\n      if (this.closed)\n        Hi(t);\n      else {\n        if (t instanceof e) {\n          if (t.closed || t._hasParent(this))\n            return;\n          t._addParent(this);\n        }\n        (this._finalizers = (n = this._finalizers) !== null && n !== void 0 ? n : []).push(t);\n      }\n  }, e.prototype._hasParent = function(t) {\n    var n = this._parentage;\n    return n === t || Array.isArray(n) && n.includes(t);\n  }, e.prototype._addParent = function(t) {\n    var n = this._parentage;\n    this._parentage = Array.isArray(n) ? (n.push(t), n) : n ? [n, t] : t;\n  }, e.prototype._removeParent = function(t) {\n    var n = this._parentage;\n    n === t ? this._parentage = null : Array.isArray(n) && Or(n, t);\n  }, e.prototype.remove = function(t) {\n    var n = this._finalizers;\n    n && Or(n, t), t instanceof e && t._removeParent(this);\n  }, e.EMPTY = function() {\n    var t = new e();\n    return t.closed = !0, t;\n  }(), e;\n}(), Wo = $n.EMPTY;\nfunction Go(e) {\n  return e instanceof $n || e && \"closed\" in e && W(e.remove) && W(e.add) && W(e.unsubscribe);\n}\nfunction Hi(e) {\n  W(e) ? e() : e.unsubscribe();\n}\nvar Vo = {\n  onUnhandledError: null,\n  onStoppedNotification: null,\n  Promise: void 0,\n  useDeprecatedSynchronousErrorHandling: !1,\n  useDeprecatedNextContext: !1\n}, Cr = {\n  setTimeout: function(e, t) {\n    for (var n = [], r = 2; r < arguments.length; r++)\n      n[r - 2] = arguments[r];\n    var i = Cr.delegate;\n    return i?.setTimeout ? i.setTimeout.apply(i, Dn([e, t], mn(n))) : setTimeout.apply(void 0, Dn([e, t], mn(n)));\n  },\n  clearTimeout: function(e) {\n    var t = Cr.delegate;\n    return (t?.clearTimeout || clearTimeout)(e);\n  },\n  delegate: void 0\n};\nfunction Ko(e) {\n  Cr.setTimeout(function() {\n    throw e;\n  });\n}\nfunction Tr() {\n}\nfunction tn(e) {\n  e();\n}\nvar hi = function(e) {\n  ht(t, e);\n  function t(n) {\n    var r = e.call(this) || this;\n    return r.isStopped = !1, n ? (r.destination = n, Go(n) && n.add(r)) : r.destination = Vl, r;\n  }\n  return t.create = function(n, r, i) {\n    return new Rr(n, r, i);\n  }, t.prototype.next = function(n) {\n    this.isStopped || this._next(n);\n  }, t.prototype.error = function(n) {\n    this.isStopped || (this.isStopped = !0, this._error(n));\n  }, t.prototype.complete = function() {\n    this.isStopped || (this.isStopped = !0, this._complete());\n  }, t.prototype.unsubscribe = function() {\n    this.closed || (this.isStopped = !0, e.prototype.unsubscribe.call(this), this.destination = null);\n  }, t.prototype._next = function(n) {\n    this.destination.next(n);\n  }, t.prototype._error = function(n) {\n    try {\n      this.destination.error(n);\n    } finally {\n      this.unsubscribe();\n    }\n  }, t.prototype._complete = function() {\n    try {\n      this.destination.complete();\n    } finally {\n      this.unsubscribe();\n    }\n  }, t;\n}($n), ql = Function.prototype.bind;\nfunction sr(e, t) {\n  return ql.call(e, t);\n}\nvar Wl = function() {\n  function e(t) {\n    this.partialObserver = t;\n  }\n  return e.prototype.next = function(t) {\n    var n = this.partialObserver;\n    if (n.next)\n      try {\n        n.next(t);\n      } catch (r) {\n        Gt(r);\n      }\n  }, e.prototype.error = function(t) {\n    var n = this.partialObserver;\n    if (n.error)\n      try {\n        n.error(t);\n      } catch (r) {\n        Gt(r);\n      }\n    else\n      Gt(t);\n  }, e.prototype.complete = function() {\n    var t = this.partialObserver;\n    if (t.complete)\n      try {\n        t.complete();\n      } catch (n) {\n        Gt(n);\n      }\n  }, e;\n}(), Rr = function(e) {\n  ht(t, e);\n  function t(n, r, i) {\n    var s = e.call(this) || this, o;\n    if (W(n) || !n)\n      o = {\n        next: n ?? void 0,\n        error: r ?? void 0,\n        complete: i ?? void 0\n      };\n    else {\n      var u;\n      s && Vo.useDeprecatedNextContext ? (u = Object.create(n), u.unsubscribe = function() {\n        return s.unsubscribe();\n      }, o = {\n        next: n.next && sr(n.next, u),\n        error: n.error && sr(n.error, u),\n        complete: n.complete && sr(n.complete, u)\n      }) : o = n;\n    }\n    return s.destination = new Wl(o), s;\n  }\n  return t;\n}(hi);\nfunction Gt(e) {\n  Ko(e);\n}\nfunction Gl(e) {\n  throw e;\n}\nvar Vl = {\n  closed: !0,\n  next: Tr,\n  error: Gl,\n  complete: Tr\n}, fi = function() {\n  return typeof Symbol == \"function\" && Symbol.observable || \"@@observable\";\n}();\nfunction Qo(e) {\n  return e;\n}\nfunction Kl() {\n  for (var e = [], t = 0; t < arguments.length; t++)\n    e[t] = arguments[t];\n  return Jo(e);\n}\nfunction Jo(e) {\n  return e.length === 0 ? Qo : e.length === 1 ? e[0] : function(n) {\n    return e.reduce(function(r, i) {\n      return i(r);\n    }, n);\n  };\n}\nvar ee = function() {\n  function e(t) {\n    t && (this._subscribe = t);\n  }\n  return e.prototype.lift = function(t) {\n    var n = new e();\n    return n.source = this, n.operator = t, n;\n  }, e.prototype.subscribe = function(t, n, r) {\n    var i = this, s = Jl(t) ? t : new Rr(t, n, r);\n    return tn(function() {\n      var o = i, u = o.operator, a = o.source;\n      s.add(u ? u.call(s, a) : a ? i._subscribe(s) : i._trySubscribe(s));\n    }), s;\n  }, e.prototype._trySubscribe = function(t) {\n    try {\n      return this._subscribe(t);\n    } catch (n) {\n      t.error(n);\n    }\n  }, e.prototype.forEach = function(t, n) {\n    var r = this;\n    return n = Xi(n), new n(function(i, s) {\n      var o = new Rr({\n        next: function(u) {\n          try {\n            t(u);\n          } catch (a) {\n            s(a), o.unsubscribe();\n          }\n        },\n        error: s,\n        complete: i\n      });\n      r.subscribe(o);\n    });\n  }, e.prototype._subscribe = function(t) {\n    var n;\n    return (n = this.source) === null || n === void 0 ? void 0 : n.subscribe(t);\n  }, e.prototype[fi] = function() {\n    return this;\n  }, e.prototype.pipe = function() {\n    for (var t = [], n = 0; n < arguments.length; n++)\n      t[n] = arguments[n];\n    return Jo(t)(this);\n  }, e.prototype.toPromise = function(t) {\n    var n = this;\n    return t = Xi(t), new t(function(r, i) {\n      var s;\n      n.subscribe(function(o) {\n        return s = o;\n      }, function(o) {\n        return i(o);\n      }, function() {\n        return r(s);\n      });\n    });\n  }, e.create = function(t) {\n    return new e(t);\n  }, e;\n}();\nfunction Xi(e) {\n  var t;\n  return (t = e ?? Vo.Promise) !== null && t !== void 0 ? t : Promise;\n}\nfunction Ql(e) {\n  return e && W(e.next) && W(e.error) && W(e.complete);\n}\nfunction Jl(e) {\n  return e && e instanceof hi || Ql(e) && Go(e);\n}\nfunction Hl(e) {\n  return W(e?.lift);\n}\nfunction Qe(e) {\n  return function(t) {\n    if (Hl(t))\n      return t.lift(function(n) {\n        try {\n          return e(n, this);\n        } catch (r) {\n          this.error(r);\n        }\n      });\n    throw new TypeError(\"Unable to lift unknown Observable type\");\n  };\n}\nfunction Ce(e, t, n, r, i) {\n  return new Xl(e, t, n, r, i);\n}\nvar Xl = function(e) {\n  ht(t, e);\n  function t(n, r, i, s, o, u) {\n    var a = e.call(this, n) || this;\n    return a.onFinalize = o, a.shouldUnsubscribe = u, a._next = r ? function(c) {\n      try {\n        r(c);\n      } catch (l) {\n        n.error(l);\n      }\n    } : e.prototype._next, a._error = s ? function(c) {\n      try {\n        s(c);\n      } catch (l) {\n        n.error(l);\n      } finally {\n        this.unsubscribe();\n      }\n    } : e.prototype._error, a._complete = i ? function() {\n      try {\n        i();\n      } catch (c) {\n        n.error(c);\n      } finally {\n        this.unsubscribe();\n      }\n    } : e.prototype._complete, a;\n  }\n  return t.prototype.unsubscribe = function() {\n    var n;\n    if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n      var r = this.closed;\n      e.prototype.unsubscribe.call(this), !r && ((n = this.onFinalize) === null || n === void 0 || n.call(this));\n    }\n  }, t;\n}(hi), Yl = qo(function(e) {\n  return function() {\n    e(this), this.name = \"ObjectUnsubscribedError\", this.message = \"object unsubscribed\";\n  };\n}), di = function(e) {\n  ht(t, e);\n  function t() {\n    var n = e.call(this) || this;\n    return n.closed = !1, n.currentObservers = null, n.observers = [], n.isStopped = !1, n.hasError = !1, n.thrownError = null, n;\n  }\n  return t.prototype.lift = function(n) {\n    var r = new Yi(this, this);\n    return r.operator = n, r;\n  }, t.prototype._throwIfClosed = function() {\n    if (this.closed)\n      throw new Yl();\n  }, t.prototype.next = function(n) {\n    var r = this;\n    tn(function() {\n      var i, s;\n      if (r._throwIfClosed(), !r.isStopped) {\n        r.currentObservers || (r.currentObservers = Array.from(r.observers));\n        try {\n          for (var o = st(r.currentObservers), u = o.next(); !u.done; u = o.next()) {\n            var a = u.value;\n            a.next(n);\n          }\n        } catch (c) {\n          i = { error: c };\n        } finally {\n          try {\n            u && !u.done && (s = o.return) && s.call(o);\n          } finally {\n            if (i)\n              throw i.error;\n          }\n        }\n      }\n    });\n  }, t.prototype.error = function(n) {\n    var r = this;\n    tn(function() {\n      if (r._throwIfClosed(), !r.isStopped) {\n        r.hasError = r.isStopped = !0, r.thrownError = n;\n        for (var i = r.observers; i.length; )\n          i.shift().error(n);\n      }\n    });\n  }, t.prototype.complete = function() {\n    var n = this;\n    tn(function() {\n      if (n._throwIfClosed(), !n.isStopped) {\n        n.isStopped = !0;\n        for (var r = n.observers; r.length; )\n          r.shift().complete();\n      }\n    });\n  }, t.prototype.unsubscribe = function() {\n    this.isStopped = this.closed = !0, this.observers = this.currentObservers = null;\n  }, Object.defineProperty(t.prototype, \"observed\", {\n    get: function() {\n      var n;\n      return ((n = this.observers) === null || n === void 0 ? void 0 : n.length) > 0;\n    },\n    enumerable: !1,\n    configurable: !0\n  }), t.prototype._trySubscribe = function(n) {\n    return this._throwIfClosed(), e.prototype._trySubscribe.call(this, n);\n  }, t.prototype._subscribe = function(n) {\n    return this._throwIfClosed(), this._checkFinalizedStatuses(n), this._innerSubscribe(n);\n  }, t.prototype._innerSubscribe = function(n) {\n    var r = this, i = this, s = i.hasError, o = i.isStopped, u = i.observers;\n    return s || o ? Wo : (this.currentObservers = null, u.push(n), new $n(function() {\n      r.currentObservers = null, Or(u, n);\n    }));\n  }, t.prototype._checkFinalizedStatuses = function(n) {\n    var r = this, i = r.hasError, s = r.thrownError, o = r.isStopped;\n    i ? n.error(s) : o && n.complete();\n  }, t.prototype.asObservable = function() {\n    var n = new ee();\n    return n.source = this, n;\n  }, t.create = function(n, r) {\n    return new Yi(n, r);\n  }, t;\n}(ee), Yi = function(e) {\n  ht(t, e);\n  function t(n, r) {\n    var i = e.call(this) || this;\n    return i.destination = n, i.source = r, i;\n  }\n  return t.prototype.next = function(n) {\n    var r, i;\n    (i = (r = this.destination) === null || r === void 0 ? void 0 : r.next) === null || i === void 0 || i.call(r, n);\n  }, t.prototype.error = function(n) {\n    var r, i;\n    (i = (r = this.destination) === null || r === void 0 ? void 0 : r.error) === null || i === void 0 || i.call(r, n);\n  }, t.prototype.complete = function() {\n    var n, r;\n    (r = (n = this.destination) === null || n === void 0 ? void 0 : n.complete) === null || r === void 0 || r.call(n);\n  }, t.prototype._subscribe = function(n) {\n    var r, i;\n    return (i = (r = this.source) === null || r === void 0 ? void 0 : r.subscribe(n)) !== null && i !== void 0 ? i : Wo;\n  }, t;\n}(di), Ho = function(e) {\n  ht(t, e);\n  function t(n) {\n    var r = e.call(this) || this;\n    return r._value = n, r;\n  }\n  return Object.defineProperty(t.prototype, \"value\", {\n    get: function() {\n      return this.getValue();\n    },\n    enumerable: !1,\n    configurable: !0\n  }), t.prototype._subscribe = function(n) {\n    var r = e.prototype._subscribe.call(this, n);\n    return !r.closed && n.next(this._value), r;\n  }, t.prototype.getValue = function() {\n    var n = this, r = n.hasError, i = n.thrownError, s = n._value;\n    if (r)\n      throw i;\n    return this._throwIfClosed(), s;\n  }, t.prototype.next = function(n) {\n    e.prototype.next.call(this, this._value = n);\n  }, t;\n}(di), eh = new ee(function(e) {\n  return e.complete();\n});\nfunction th(e) {\n  return e && W(e.schedule);\n}\nfunction Xo(e) {\n  return e[e.length - 1];\n}\nfunction nh(e) {\n  return th(Xo(e)) ? e.pop() : void 0;\n}\nfunction rh(e, t) {\n  return typeof Xo(e) == \"number\" ? e.pop() : t;\n}\nvar Yo = function(e) {\n  return e && typeof e.length == \"number\" && typeof e != \"function\";\n};\nfunction eu(e) {\n  return W(e?.then);\n}\nfunction tu(e) {\n  return W(e[fi]);\n}\nfunction nu(e) {\n  return Symbol.asyncIterator && W(e?.[Symbol.asyncIterator]);\n}\nfunction ru(e) {\n  return new TypeError(\"You provided \" + (e !== null && typeof e == \"object\" ? \"an invalid object\" : \"'\" + e + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\nfunction ih() {\n  return typeof Symbol != \"function\" || !Symbol.iterator ? \"@@iterator\" : Symbol.iterator;\n}\nvar iu = ih();\nfunction su(e) {\n  return W(e?.[iu]);\n}\nfunction ou(e) {\n  return Ul(this, arguments, function() {\n    var n, r, i, s;\n    return Zo(this, function(o) {\n      switch (o.label) {\n        case 0:\n          n = e.getReader(), o.label = 1;\n        case 1:\n          o.trys.push([1, , 9, 10]), o.label = 2;\n        case 2:\n          return [4, nt(n.read())];\n        case 3:\n          return r = o.sent(), i = r.value, s = r.done, s ? [4, nt(void 0)] : [3, 5];\n        case 4:\n          return [2, o.sent()];\n        case 5:\n          return [4, nt(i)];\n        case 6:\n          return [4, o.sent()];\n        case 7:\n          return o.sent(), [3, 2];\n        case 8:\n          return [3, 10];\n        case 9:\n          return n.releaseLock(), [7];\n        case 10:\n          return [2];\n      }\n    });\n  });\n}\nfunction uu(e) {\n  return W(e?.getReader);\n}\nfunction Re(e) {\n  if (e instanceof ee)\n    return e;\n  if (e != null) {\n    if (tu(e))\n      return sh(e);\n    if (Yo(e))\n      return oh(e);\n    if (eu(e))\n      return uh(e);\n    if (nu(e))\n      return au(e);\n    if (su(e))\n      return ah(e);\n    if (uu(e))\n      return ch(e);\n  }\n  throw ru(e);\n}\nfunction sh(e) {\n  return new ee(function(t) {\n    var n = e[fi]();\n    if (W(n.subscribe))\n      return n.subscribe(t);\n    throw new TypeError(\"Provided object does not correctly implement Symbol.observable\");\n  });\n}\nfunction oh(e) {\n  return new ee(function(t) {\n    for (var n = 0; n < e.length && !t.closed; n++)\n      t.next(e[n]);\n    t.complete();\n  });\n}\nfunction uh(e) {\n  return new ee(function(t) {\n    e.then(function(n) {\n      t.closed || (t.next(n), t.complete());\n    }, function(n) {\n      return t.error(n);\n    }).then(null, Ko);\n  });\n}\nfunction ah(e) {\n  return new ee(function(t) {\n    var n, r;\n    try {\n      for (var i = st(e), s = i.next(); !s.done; s = i.next()) {\n        var o = s.value;\n        if (t.next(o), t.closed)\n          return;\n      }\n    } catch (u) {\n      n = { error: u };\n    } finally {\n      try {\n        s && !s.done && (r = i.return) && r.call(i);\n      } finally {\n        if (n)\n          throw n.error;\n      }\n    }\n    t.complete();\n  });\n}\nfunction au(e) {\n  return new ee(function(t) {\n    lh(e, t).catch(function(n) {\n      return t.error(n);\n    });\n  });\n}\nfunction ch(e) {\n  return au(ou(e));\n}\nfunction lh(e, t) {\n  var n, r, i, s;\n  return jl(this, void 0, void 0, function() {\n    var o, u;\n    return Zo(this, function(a) {\n      switch (a.label) {\n        case 0:\n          a.trys.push([0, 5, 6, 11]), n = Zl(e), a.label = 1;\n        case 1:\n          return [4, n.next()];\n        case 2:\n          if (r = a.sent(), !!r.done)\n            return [3, 4];\n          if (o = r.value, t.next(o), t.closed)\n            return [2];\n          a.label = 3;\n        case 3:\n          return [3, 1];\n        case 4:\n          return [3, 11];\n        case 5:\n          return u = a.sent(), i = { error: u }, [3, 11];\n        case 6:\n          return a.trys.push([6, , 9, 10]), r && !r.done && (s = n.return) ? [4, s.call(n)] : [3, 8];\n        case 7:\n          a.sent(), a.label = 8;\n        case 8:\n          return [3, 10];\n        case 9:\n          if (i)\n            throw i.error;\n          return [7];\n        case 10:\n          return [7];\n        case 11:\n          return t.complete(), [2];\n      }\n    });\n  });\n}\nfunction Se(e, t, n, r, i) {\n  r === void 0 && (r = 0), i === void 0 && (i = !1);\n  var s = t.schedule(function() {\n    n(), i ? e.add(this.schedule(null, r)) : this.unsubscribe();\n  }, r);\n  if (e.add(s), !i)\n    return s;\n}\nfunction cu(e, t) {\n  return t === void 0 && (t = 0), Qe(function(n, r) {\n    n.subscribe(Ce(r, function(i) {\n      return Se(r, e, function() {\n        return r.next(i);\n      }, t);\n    }, function() {\n      return Se(r, e, function() {\n        return r.complete();\n      }, t);\n    }, function(i) {\n      return Se(r, e, function() {\n        return r.error(i);\n      }, t);\n    }));\n  });\n}\nfunction lu(e, t) {\n  return t === void 0 && (t = 0), Qe(function(n, r) {\n    r.add(e.schedule(function() {\n      return n.subscribe(r);\n    }, t));\n  });\n}\nfunction hh(e, t) {\n  return Re(e).pipe(lu(t), cu(t));\n}\nfunction fh(e, t) {\n  return Re(e).pipe(lu(t), cu(t));\n}\nfunction dh(e, t) {\n  return new ee(function(n) {\n    var r = 0;\n    return t.schedule(function() {\n      r === e.length ? n.complete() : (n.next(e[r++]), n.closed || this.schedule());\n    });\n  });\n}\nfunction ph(e, t) {\n  return new ee(function(n) {\n    var r;\n    return Se(n, t, function() {\n      r = e[iu](), Se(n, t, function() {\n        var i, s, o;\n        try {\n          i = r.next(), s = i.value, o = i.done;\n        } catch (u) {\n          n.error(u);\n          return;\n        }\n        o ? n.complete() : n.next(s);\n      }, 0, !0);\n    }), function() {\n      return W(r?.return) && r.return();\n    };\n  });\n}\nfunction hu(e, t) {\n  if (!e)\n    throw new Error(\"Iterable cannot be null\");\n  return new ee(function(n) {\n    Se(n, t, function() {\n      var r = e[Symbol.asyncIterator]();\n      Se(n, t, function() {\n        r.next().then(function(i) {\n          i.done ? n.complete() : n.next(i.value);\n        });\n      }, 0, !0);\n    });\n  });\n}\nfunction mh(e, t) {\n  return hu(ou(e), t);\n}\nfunction Dh(e, t) {\n  if (e != null) {\n    if (tu(e))\n      return hh(e, t);\n    if (Yo(e))\n      return dh(e, t);\n    if (eu(e))\n      return fh(e, t);\n    if (nu(e))\n      return hu(e, t);\n    if (su(e))\n      return ph(e, t);\n    if (uu(e))\n      return mh(e, t);\n  }\n  throw ru(e);\n}\nfunction gh(e, t) {\n  return t ? Dh(e, t) : Re(e);\n}\nfunction pi(e, t) {\n  return Qe(function(n, r) {\n    var i = 0;\n    n.subscribe(Ce(r, function(s) {\n      r.next(e.call(t, s, i++));\n    }));\n  });\n}\nfunction yh(e, t, n, r, i, s, o, u) {\n  var a = [], c = 0, l = 0, f = !1, d = function() {\n    f && !a.length && !c && t.complete();\n  }, h = function(m) {\n    return c < r ? p(m) : a.push(m);\n  }, p = function(m) {\n    s && t.next(m), c++;\n    var D = !1;\n    Re(n(m, l++)).subscribe(Ce(t, function(y) {\n      i?.(y), s ? h(y) : t.next(y);\n    }, function() {\n      D = !0;\n    }, void 0, function() {\n      if (D)\n        try {\n          c--;\n          for (var y = function() {\n            var F = a.shift();\n            o ? Se(t, o, function() {\n              return p(F);\n            }) : p(F);\n          }; a.length && c < r; )\n            y();\n          d();\n        } catch (F) {\n          t.error(F);\n        }\n    }));\n  };\n  return e.subscribe(Ce(t, h, function() {\n    f = !0, d();\n  })), function() {\n    u?.();\n  };\n}\nfunction fu(e, t, n) {\n  return n === void 0 && (n = 1 / 0), W(t) ? fu(function(r, i) {\n    return pi(function(s, o) {\n      return t(r, s, i, o);\n    })(Re(e(r, i)));\n  }, n) : (typeof t == \"number\" && (n = t), Qe(function(r, i) {\n    return yh(r, i, e, n);\n  }));\n}\nfunction bh(e) {\n  return e === void 0 && (e = 1 / 0), fu(Qo, e);\n}\nfunction wh() {\n  for (var e = [], t = 0; t < arguments.length; t++)\n    e[t] = arguments[t];\n  var n = nh(e), r = rh(e, 1 / 0), i = e;\n  return i.length ? i.length === 1 ? Re(i[0]) : bh(r)(gh(i, n)) : eh;\n}\nvar Fh = new ee(Tr);\nfunction du(e, t) {\n  return Qe(function(n, r) {\n    var i = 0;\n    n.subscribe(Ce(r, function(s) {\n      return e.call(t, s, i++) && r.next(s);\n    }));\n  });\n}\nfunction pu(e) {\n  return Qe(function(t, n) {\n    var r = null, i = !1, s;\n    r = t.subscribe(Ce(n, void 0, void 0, function(o) {\n      s = Re(e(o, pu(e)(t))), r ? (r.unsubscribe(), r = null, s.subscribe(n)) : i = !0;\n    })), i && (r.unsubscribe(), r = null, s.subscribe(n));\n  });\n}\nfunction Eh(e, t) {\n  return Qe(function(n, r) {\n    var i = null, s = 0, o = !1, u = function() {\n      return o && !i && r.complete();\n    };\n    n.subscribe(Ce(r, function(a) {\n      i?.unsubscribe();\n      var c = 0, l = s++;\n      Re(e(a, l)).subscribe(i = Ce(r, function(f) {\n        return r.next(t ? t(a, f, l, c++) : f);\n      }, function() {\n        i = null, u();\n      }));\n    }, function() {\n      o = !0, u();\n    }));\n  });\n}\nfunction Hw() {\n  return Kl(\n    du((e) => !(e % 2)),\n    pi((e) => e + e)\n  );\n}\nfunction Xw(e) {\n  return (t) => new ee((n) => {\n    const r = /* @__PURE__ */ new Set();\n    let i = !1;\n    const s = t.subscribe({\n      next(o) {\n        const u = setTimeout(() => {\n          n.next(o), r.delete(u), i && r.size === 0 && n.complete();\n        }, e);\n        r.add(u);\n      },\n      error(o) {\n        n.error(o);\n      },\n      complete() {\n        i = !0, r.size === 0 && n.complete();\n      }\n    });\n    return () => {\n      s.unsubscribe();\n      for (const o of r)\n        clearTimeout(o);\n    };\n  });\n}\nfunction Yw(e, t) {\n  return e.pipe(Eh((n) => n ? t : Fh));\n}\nfunction eF(e, t) {\n  return e.pipe(pi((n) => n[t]));\n}\nconst vh = () => typeof window == \"object\" && typeof document == \"object\", tF = () => !vh(), nF = () => !!cn.versions.node;\nfunction rF(e, t) {\n  const n = e.split(\".\"), r = t.split(\".\");\n  for (let i = 0, s = n.length; i < s; i++) {\n    if (r.length == i)\n      return 1;\n    if (n[i] != r[i])\n      return n[i] > r[i] ? 1 : -1;\n  }\n  return n.length != r.length ? -1 : 0;\n}\nfunction mi() {\n  const e = _.navigator?.userAgent?.toLowerCase();\n  let t = \"Unknown\";\n  return /iphone|ipad|ipod/i.test(e) ? t = \"iOS\" : /android/i.test(e) ? t = \"Android\" : /BlackBerry/i.test(e) ? t = \"BlackBerry\" : /mac/i.test(e) ? t = \"macOS\" : /win/i.test(e) ? t = \"Windows\" : /linux/i.test(e) ? t = \"Linux\" : /bsd/i.test(e) && (t = \"BSD\"), t.toLowerCase();\n}\nfunction iF(e = _.navigator?.userAgent) {\n  let t = \"Unknown\";\n  if (/iPhone|iPad|iPod/i.test(e)) {\n    const n = e.match(/OS (\\d+_\\d+)/i);\n    n && (t = n[1].replace(\"_\", \".\"));\n  } else if (/Android/i.test(e)) {\n    const n = e.match(/Android (\\d+\\.\\d+)/i);\n    n && (t = n[1]);\n  } else if (/Mac OS X/i.test(e)) {\n    const n = e.match(/Mac OS X (\\d+_\\d+)/i);\n    n && (t = n[1].replace(\"_\", \".\"));\n  } else if (/Windows NT/i.test(e)) {\n    const n = e.match(/Windows NT (\\d+\\.\\d+)/i);\n    n && (t = n[1]);\n  }\n  return t.toLowerCase();\n}\nfunction Di() {\n  const e = _.navigator?.userAgent?.toLowerCase();\n  let t = \"Unknown\";\n  return /opr/i.test(e) || /opera/i.test(e) ? t = \"Opera\" : /chrome/i.test(e) ? t = \"Chrome\" : /firefox/i.test(e) ? t = \"Firefox\" : /safari/i.test(e) ? t = \"Safari\" : /edge/i.test(e) ? t = \"Edge\" : /msie|trident/i.test(e) ? t = \"IE\" : /MicroMessenger/i.test(e) ? t = \"Wechat\" : /alipay/i.test(e) && (t = \"Ali\"), t.toLowerCase();\n}\nfunction sF() {\n  const e = _.navigator?.userAgent;\n  let t = \"Unknown\";\n  if (/Chrome/.test(e)) {\n    const n = e.match(/Chrome\\/(\\d+\\.\\d+)/);\n    n && (t = n[1]);\n  } else if (/Firefox/.test(e)) {\n    const n = e.match(/Firefox\\/(\\d+\\.\\d+)/);\n    n && (t = n[1]);\n  } else if (/Safari/.test(e)) {\n    const n = e.match(/Version\\/(\\d+\\.\\d+)/);\n    n && (t = n[1]);\n  } else if (/Edge/.test(e)) {\n    const n = e.match(/Edge\\/(\\d+\\.\\d+)/);\n    n && (t = n[1]);\n  } else if (/MSIE|Trident/.test(e)) {\n    const n = e.match(/(?:MSIE|rv:)(\\d+\\.\\d+)/);\n    n && (t = n[1]);\n  }\n  return t;\n}\nfunction oF() {\n  return (_.navigator?.browserLanguage || _.navigator?.language || \"\").toLowerCase();\n}\nfunction uF() {\n  return _.Intl?.DateTimeFormat()?.resolvedOptions()?.timeZone?.toLowerCase();\n}\nfunction aF() {\n  return Di() == \"safari\";\n}\nfunction mu() {\n  return mi() === \"ios\";\n}\nfunction _h() {\n  return mi() === \"macos\";\n}\nfunction cF() {\n  return mu() || _h();\n}\nfunction Sh() {\n  return mi() === \"android\";\n}\nfunction lF() {\n  const e = _.navigator?.appVersion;\n  if (/Android/.test(e) && !/Chrome\\/\\d/.test(e)) {\n    const t = e.match(/Safari\\/(\\d+.\\d)/);\n    return t && typeof t == \"object\" && t.length >= 2 ? parseFloat(t[1]) < 535.19 : !0;\n  } else\n    return !1;\n}\nfunction hF() {\n  return mu() || Sh();\n}\nfunction Ah() {\n  const e = _.navigator?.userAgent, t = e.indexOf(\"MSIE \");\n  if (t > 0)\n    return parseInt(e.substring(t + 5, e.indexOf(\".\", t)), 10);\n  if (e.indexOf(\"Trident/\") > 0) {\n    const i = e.indexOf(\"rv:\");\n    return parseInt(e.substring(i + 3, e.indexOf(\".\", i)), 10);\n  }\n  const r = e.indexOf(\"Edge/\");\n  return r > 0 ? parseInt(e.substring(r + 5, e.indexOf(\".\", r)), 10) : -1;\n}\nconst fF = Ah() !== -1, dF = _.document && _.document.documentMode && _.document.documentMode === 9, pF = _.document && _.document.documentMode && _.document.documentMode === 10, mF = _.document && _.document.documentMode && _.document.documentMode === 11;\nfunction Oh() {\n  return Di() === \"wechat\";\n}\nfunction Ch() {\n  return Di() === \"ali\";\n}\nfunction DF() {\n  return Oh() && _.navigator?.userAgent?.match(/miniprogram/i) || _.__wxjs_environment === \"miniprogram\";\n}\nfunction gF() {\n  return Ch() && _.navigator?.userAgent?.match(/miniprogram/i);\n}\nconst Th = (() => !!(_.Worker && _.Blob && _.Promise && _.OffscreenCanvas && _.OffscreenCanvasRenderingContext2D && _.HTMLCanvasElement && _.HTMLCanvasElement.prototype.transferControlToOffscreen && _.URL && _.URL.createObjectURL))(), yF = (() => {\n  if (!_.OffscreenCanvas)\n    return !1;\n  const e = new OffscreenCanvas(1, 1), t = e.getContext(\"2d\");\n  if (!t)\n    return !1;\n  t.fillRect(0, 0, 1, 1);\n  const n = e.transferToImageBitmap();\n  try {\n    t.createPattern(n, \"no-repeat\");\n  } catch {\n    return !1;\n  }\n  return !0;\n})();\nfunction bF(e, t) {\n  return e.name == t.name || e.constructor.name == t.name || e instanceof t;\n}\nfunction wF(e, t) {\n  return e instanceof Error && e.message === t;\n}\nfunction FF(e) {\n  return e instanceof Error ? e : new Error(String(e));\n}\nfunction Rh(e) {\n  return e instanceof Error ? e.message : String(e);\n}\nfunction Du(e) {\n  if (e && typeof e == \"object\" && \"code\" in e && typeof e.code == \"string\")\n    return e.code;\n}\nfunction EF(e) {\n  return Du(e) === \"ENOENT\";\n}\nfunction vF(e) {\n  const t = Du(e);\n  return t === \"ENOENT\" || t === \"EACCES\" || t === \"EPERM\" || t === \"ENOTDIR\" || t === \"ELOOP\";\n}\nfunction _F(e) {\n  if (e && typeof e == \"object\" && \"path\" in e && typeof e.path == \"string\")\n    return e.path;\n}\nfunction SF(e, t = 5) {\n  if (!(e instanceof Error))\n    return String(e);\n  if (!e.stack)\n    return e.message;\n  const n = e.stack.split(`\n`), r = n[0] ?? e.message, i = n.slice(1).filter((s) => s.trim().startsWith(\"at \"));\n  return i.length <= t ? e.stack : [r, ...i.slice(0, t)].join(`\n`);\n}\nclass AF extends Error {\n  name;\n  response;\n  statusCode;\n  constructor(t, n) {\n    super(t), this.name = this.constructor.name, this.response = n, this.statusCode = n.status;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      stack: this.stack,\n      response: this.response,\n      statusCode: this.statusCode\n    };\n  }\n}\nclass xh extends Error {\n  constructor(t) {\n    super(t), this.name = \"AbortError\";\n  }\n}\nfunction OF(e) {\n  return e instanceof xh || e instanceof Error && e.name === \"AbortError\";\n}\nclass CF extends Error {\n  constructor(t, n, r, i) {\n    super(\"Shell command failed\"), this.stdout = t, this.stderr = n, this.code = r, this.interrupted = i, this.name = \"ShellError\";\n  }\n}\nfunction TF(e) {\n  const t = Rh(e);\n  if (!e || typeof e != \"object\" || !(\"isAxiosError\" in e) || !e.isAxiosError)\n    return { kind: \"other\", message: t };\n  const n = e, r = n.response?.status;\n  return r === 401 || r === 403 ? { kind: \"auth\", status: r, message: t } : n.code === \"ECONNABORTED\" ? { kind: \"timeout\", status: r, message: t } : n.code === \"ECONNREFUSED\" || n.code === \"ENOTFOUND\" ? { kind: \"network\", status: r, message: t } : { kind: \"http\", status: r, message: t };\n}\nclass gu extends Error {\n  constructor(t) {\n    super(t);\n  }\n}\nfunction kh(e) {\n  return Ih(encodeURIComponent(e)).replaceAll(\"+\", \"*\").replaceAll(\"/\", \"-\").replaceAll(\"=\", \"\");\n}\nfunction Nh(e) {\n  let t = e.replaceAll(\"*\", \"+\").replaceAll(\"-\", \"/\");\n  const n = t.length % 4;\n  return n && (t = t.padEnd(t.length + (4 - n), \"=\")), decodeURIComponent(Ph(t));\n}\nfunction RF(e) {\n  return kh(\n    g0(p0(e))\n  );\n}\nfunction xF(e) {\n  return a0(\n    m0(Nh(e))\n  );\n}\nconst yu = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Ih(e) {\n  const t = String(e);\n  let n = \"\";\n  for (\n    let r = 0, i, s = 0, o = yu;\n    // if the next str index does not exist:\n    //   change the mapping table to \"=\"\n    //   check if d has no fractional digits\n    t.charAt(s | 0) || (o = \"=\", s % 1);\n    // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n    n += o.charAt(63 & r >> 8 - s % 1 * 8)\n  ) {\n    if (i = t.charCodeAt(s += 3 / 4), i > 255)\n      throw new gu(\n        \"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\"\n      );\n    r = r << 8 | i;\n  }\n  return n;\n}\nfunction Ph(e) {\n  const t = String(e).replace(/[=]+$/, \"\");\n  if (t.length % 4 === 1)\n    throw new gu(\n      \"'atob' failed: The string to be decoded is not correctly encoded.\"\n    );\n  let n = \"\";\n  for (\n    let r = 0, i = 0, s, o = 0;\n    // get next character\n    s = t.charAt(o++);\n    // eslint-disable-line no-cond-assign\n    // character found in table? initialize bit storage and add its ascii value;\n    ~s && (i = r % 4 ? i * 64 + s : s, // and if not first of each 4 characters,\n    // convert the first 8 bits to one ascii character\n    r++ % 4) ? n += String.fromCharCode(255 & i >> (-2 * r & 6)) : 0\n  )\n    s = yu.indexOf(s);\n  return n;\n}\nconst or = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\", es = 22;\nfunction zh(e) {\n  const t = BigInt(or.length), n = new Array(es).fill(or[0]);\n  let r = es - 1, i = e;\n  for (; i > 0n; ) {\n    const s = Number(i % t);\n    n[r] = or[s], i = i / t, r--;\n  }\n  return n.join(\"\");\n}\nfunction kF(e) {\n  let t = 0;\n  for (let n = 0; n < e.length; n++)\n    t = (t << 5) - t + e.charCodeAt(n) | 0;\n  return t;\n}\nconst Lt = _.crypto, ce = Lt?.subtle;\nfunction Bh(e) {\n  if (!Number.isInteger(e) || e < 0)\n    throw new TypeError(\"size must be a non-negative integer\");\n  try {\n    return Lt.randomBytes(e);\n  } catch {\n    const n = new Uint8Array(e);\n    for (let r = 0; r < e; r++)\n      n[r] = Math.floor(Math.random() * 256);\n    return n;\n  }\n}\nfunction NF() {\n  try {\n    return Lt.randomUUID();\n  } catch {\n    let t = (/* @__PURE__ */ new Date()).getTime();\n    return \"xxxxxxxx-xxxx-xxxx-yxxx-xxxxxxxxxxxx\".replace(\n      /[xy]/g,\n      function(r) {\n        const i = (t + Math.random() * 16) % 16 | 0;\n        return t = Math.floor(t / 16), (r == \"x\" ? i : i & 3 | 8).toString(16);\n      }\n    );\n  }\n}\nfunction IF(e) {\n  return typeof e != \"string\" ? !1 : /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(\n    e\n  );\n}\nfunction $h(e) {\n  const t = e.replace(/-/g, \"\");\n  if (t.length !== 32)\n    throw new Error(`Invalid UUID hex length: ${t.length}`);\n  return BigInt(\"0x\" + t);\n}\nfunction PF(e, t) {\n  const n = $h(t);\n  return `${e}_${zh(n)}`;\n}\nasync function zF(e = \"\") {\n  return e ? Lh(e, {\n    algorithm: zn.sha256,\n    encoding: tt.hex,\n    slice: 16\n  }) : D0(Bh(8));\n}\nfunction BF() {\n  return Math.random().toString(36).slice(2, 8);\n}\nasync function Lh(e, t) {\n  const n = t?.algorithm || zn.sha256, r = t?.encoding || tt.hex, i = t?.slice || 0;\n  try {\n    let s = Lt.createHash(n).update(e).digest(r);\n    return i && (s = s.slice(0, i)), s;\n  } catch {\n    try {\n      const o = await ce.digest(\n        n,\n        ei(e)\n      );\n      let u = yo(o);\n      return i && (u = u.slice(0, i)), u;\n    } catch {\n      return i ? e.slice(0, i) : e;\n    }\n  }\n}\nfunction Mh(e, t) {\n  return JSON.stringify(k0(e));\n}\nasync function $F(e, t = zn[\"AES-GCM\"]) {\n  if (!ce)\n    throw new Error(\"Crypto API not supported\");\n  const n = Lt.getRandomValues(new Uint8Array(12)), r = await ce.generateKey(\n    { name: t, length: 256 },\n    !1,\n    // defines key as extractable, use false b/c we do not need to store it\n    [\"encrypt\", \"decrypt\"]\n  ), i = await ce.encrypt(\n    { name: t, iv: n },\n    r,\n    ei(e)\n  );\n  return { algorithm: t, iv: n, key: r, encryptedData: i };\n}\nasync function LF(e) {\n  if (!ce)\n    throw new Error(\"Crypto API not supported\");\n  const t = await ce.decrypt(\n    {\n      name: e.algorithm,\n      iv: e.iv\n    },\n    e.key,\n    e.encryptedData\n  );\n  return yo(t);\n}\nasync function MF(e, t = zn.ECDSA, n = \"SHA-384\") {\n  if (!ce)\n    throw new Error(\"Crypto API not supported\");\n  const { privateKey: r, publicKey: i } = await ce.generateKey(\n    {\n      name: t,\n      namedCurve: \"P-384\"\n    },\n    !1,\n    // defines key as extractable, use false b/c we do not need to store it\n    [\"sign\", \"verify\"]\n  ), s = ei(\n    JSON.stringify(e)\n  ), o = await ce.sign(\n    {\n      name: t,\n      hash: { name: n }\n    },\n    r,\n    s\n  );\n  return {\n    algorithm: t,\n    hash: n,\n    publicKey: i,\n    signature: o,\n    encodedData: s\n  };\n}\nasync function jF(e) {\n  if (!ce)\n    throw new Error(\"Crypto API not supported\");\n  return await ce.verify(\n    {\n      name: e.algorithm,\n      hash: { name: e.hash }\n    },\n    e.publicKey,\n    e.signature,\n    e.encodedData\n  );\n}\nconst jh = \"\\uFEFF\";\nfunction bu(e) {\n  return e.startsWith(jh) ? e.slice(1) : e;\n}\nfunction Uh(e) {\n  try {\n    return { ok: !0, value: JSON.parse(bu(e)) };\n  } catch {\n    return { ok: !1 };\n  }\n}\nKe(Uh, {\n  createCache: () => new ai({ max: 50 }),\n  cacheKeyResolver: (e) => e\n});\nfunction Zh(e) {\n  const t = e.length;\n  let n = 0;\n  e[0] === 239 && e[1] === 187 && e[2] === 191 && (n = 3);\n  const r = [];\n  for (; n < t; ) {\n    let i = e.indexOf(10, n);\n    i === -1 && (i = t);\n    const s = e.toString(\"utf8\", n, i).trim();\n    if (n = i + 1, !!s)\n      try {\n        r.push(JSON.parse(s));\n      } catch {\n      }\n  }\n  return r;\n}\nfunction qh(e) {\n  const t = bu(e), n = t.length;\n  let r = 0;\n  const i = [];\n  for (; r < n; ) {\n    let s = t.indexOf(`\n`, r);\n    s === -1 && (s = n);\n    const o = t.substring(r, s).trim();\n    if (r = s + 1, !!o)\n      try {\n        i.push(JSON.parse(o));\n      } catch {\n      }\n  }\n  return i;\n}\nfunction UF(e) {\n  return typeof e == \"string\" ? qh(e) : Zh(e);\n}\nconst Wh = () => /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E-\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED8\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC2\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF]|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g, Gh = 161, Vh = 1114109, Kh = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109], Qh = 12288, Jh = 65510, Hh = [12288, 12288, 65281, 65376, 65504, 65510], Xh = 4352, Yh = 262141, wu = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141], gi = (e, t) => {\n  let n = 0, r = Math.floor(e.length / 2) - 1;\n  for (; n <= r; ) {\n    const i = Math.floor((n + r) / 2), s = i * 2;\n    if (t < e[s])\n      r = i - 1;\n    else if (t > e[s + 1])\n      n = i + 1;\n    else\n      return !0;\n  }\n  return !1;\n}, ts = 19968, [ef, tf] = /* @__PURE__ */ nf(wu);\nfunction nf(e) {\n  let t = e[0], n = e[1];\n  for (let r = 0; r < e.length; r += 2) {\n    const i = e[r], s = e[r + 1];\n    if (ts >= i && ts <= s)\n      return [i, s];\n    s - i > n - t && (t = i, n = s);\n  }\n  return [t, n];\n}\nconst rf = (e) => e < Gh || e > Vh ? !1 : gi(Kh, e), sf = (e) => e < Qh || e > Jh ? !1 : gi(Hh, e), of = (e) => e >= ef && e <= tf ? !0 : e < Xh || e > Yh ? !1 : gi(wu, e);\nfunction uf(e) {\n  if (!Number.isSafeInteger(e))\n    throw new TypeError(`Expected a code point, got \\`${typeof e}\\`.`);\n}\nfunction ot(e, { ambiguousAsWide: t = !1 } = {}) {\n  return uf(e), sf(e) || of(e) || t && rf(e) ? 2 : 1;\n}\nfunction af({ onlyFirst: e = !1 } = {}) {\n  const i = \"(?:\\\\u001B\\\\][\\\\s\\\\S]*?(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C))|[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]\";\n  return new RegExp(i, e ? void 0 : \"g\");\n}\nconst cf = af();\nfunction yi(e) {\n  if (typeof e != \"string\")\n    throw new TypeError(`Expected a \\`string\\`, got \\`${typeof e}\\``);\n  return !e.includes(\"\\x1B\") && !e.includes(\"\") ? e : e.replace(cf, \"\");\n}\nlet ur = null;\nfunction lf() {\n  return ur || (ur = new Intl.Segmenter(void 0, {\n    granularity: \"grapheme\"\n  })), ur;\n}\nconst ns = Wh();\nfunction hf(e) {\n  if (typeof e != \"string\" || e.length === 0)\n    return 0;\n  let t = !0;\n  for (let r = 0; r < e.length; r++) {\n    const i = e.charCodeAt(r);\n    if (i >= 127 || i === 27) {\n      t = !1;\n      break;\n    }\n  }\n  if (t) {\n    let r = 0;\n    for (let i = 0; i < e.length; i++)\n      e.charCodeAt(i) > 31 && r++;\n    return r;\n  }\n  if (e.includes(\"\\x1B\") && (e = yi(e), e.length === 0))\n    return 0;\n  if (!ff(e)) {\n    let r = 0;\n    for (const i of e) {\n      const s = i.codePointAt(0);\n      rs(s) || (r += ot(s, { ambiguousAsWide: !1 }));\n    }\n    return r;\n  }\n  let n = 0;\n  for (const { segment: r } of lf().segment(e)) {\n    if (ns.lastIndex = 0, ns.test(r)) {\n      n += df(r);\n      continue;\n    }\n    for (const i of r) {\n      const s = i.codePointAt(0);\n      if (!rs(s)) {\n        n += ot(s, { ambiguousAsWide: !1 });\n        break;\n      }\n    }\n  }\n  return n;\n}\nfunction ff(e) {\n  for (const t of e) {\n    const n = t.codePointAt(0);\n    if (n >= 127744 && n <= 129791 || n >= 9728 && n <= 10175 || n >= 127462 && n <= 127487 || n >= 65024 && n <= 65039 || n === 8205)\n      return !0;\n  }\n  return !1;\n}\nfunction df(e) {\n  const t = e.codePointAt(0);\n  if (t >= 127462 && t <= 127487) {\n    let n = 0;\n    for (const r of e)\n      n++;\n    return n === 1 ? 1 : 2;\n  }\n  return e.length === 2 && e.codePointAt(1) === 65039 && (t >= 48 && t <= 57 || t === 35 || t === 42) ? 1 : 2;\n}\nfunction rs(e) {\n  if (e >= 32 && e < 127)\n    return !1;\n  if (e >= 160 && e < 768)\n    return e === 173;\n  if (e <= 31 || e >= 127 && e <= 159 || e >= 8203 && e <= 8205 || // ZW space/joiner\n  e === 65279 || // BOM\n  e >= 8288 && e <= 8292 || e >= 65024 && e <= 65039 || e >= 917760 && e <= 917999 || e >= 768 && e <= 879 || e >= 6832 && e <= 6911 || e >= 7616 && e <= 7679 || e >= 8400 && e <= 8447 || e >= 65056 && e <= 65071)\n    return !0;\n  if (e >= 2304 && e <= 3407) {\n    const t = e & 127;\n    if (t <= 3 || t >= 58 && t <= 79 || t >= 81 && t <= 87 || t >= 98 && t <= 99)\n      return !0;\n  }\n  return e === 3633 || // Thai MAI HAN-AKAT\n  e >= 3636 && e <= 3642 || // Thai vowel signs (skip U+0E32, U+0E33)\n  e >= 3655 && e <= 3662 || // Thai vowel signs and marks\n  e === 3761 || // Lao MAI KAN\n  e >= 3764 && e <= 3772 || // Lao vowel signs (skip U+0EB2, U+0EB3)\n  e >= 3784 && e <= 3789 || e >= 1536 && e <= 1541 || e === 1757 || e === 1807 || e === 2274 || e >= 55296 && e <= 57343 || e >= 917504 && e <= 917631;\n}\nconst ZF = hf, pf = new Intl.Segmenter(), Fu = /^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Mark}|\\p{Surrogate})+$/v, mf = /^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Mark}\\p{Surrogate}]+/v, Df = /^\\p{RGI_Emoji}$/v, gf = /^[\\d#*]\\u20E3$/, yf = /\\p{Extended_Pictographic}/gu;\nfunction bf(e) {\n  if (e.length > 50)\n    return !1;\n  if (gf.test(e))\n    return !0;\n  if (e.includes(\"‍\")) {\n    const t = e.match(yf);\n    return t !== null && t.length >= 2;\n  }\n  return !1;\n}\nfunction wf(e) {\n  return e.replace(mf, \"\");\n}\nfunction Ff(e) {\n  return Fu.test(e);\n}\nfunction Eu(e) {\n  return e >= 4352 && e <= 4447 || e >= 43360 && e <= 43388;\n}\nfunction vu(e) {\n  return e >= 4448 && e <= 4519 || e >= 55216 && e <= 55238;\n}\nfunction _u(e) {\n  return e >= 4520 && e <= 4607 || e >= 55243 && e <= 55291;\n}\nfunction Ef(e) {\n  return Eu(e) || vu(e) || _u(e);\n}\nfunction vf(e, t) {\n  const n = [];\n  for (const i of e)\n    Fu.test(i) || n.push(i.codePointAt(0));\n  if (n.length === 0)\n    return;\n  let r = 0;\n  for (let i = 0; i < n.length; i++) {\n    const s = n[i];\n    if (!Ef(s)) {\n      if (r === 0)\n        return;\n      for (let o = i; o < n.length; o++)\n        r += ot(n[o], t);\n      return r;\n    }\n    if (Eu(s) && vu(n[i + 1])) {\n      r += 2, i += _u(n[i + 2]) ? 2 : 1;\n      continue;\n    }\n    r += ot(s, t);\n  }\n  return r;\n}\nfunction _f(e, t) {\n  let n = 0, r = !0;\n  for (const i of e) {\n    if (r) {\n      r = !1;\n      continue;\n    }\n    i >= \"＀\" && i <= \"￯\" && (n += ot(i.codePointAt(0), t));\n  }\n  return n;\n}\nfunction ut(e, t = {}) {\n  if (typeof e != \"string\" || e.length === 0)\n    return 0;\n  const {\n    ambiguousIsNarrow: n = !0,\n    countAnsiEscapeCodes: r = !1\n  } = t;\n  let i = e;\n  if (!r && (i.includes(\"\\x1B\") || i.includes(\"\")) && (i = yi(i)), i.length === 0)\n    return 0;\n  if (/^[\\u0020-\\u007E]*$/.test(i))\n    return i.length;\n  let s = 0;\n  const o = { ambiguousAsWide: !n };\n  for (const { segment: u } of pf.segment(i)) {\n    if (Ff(u))\n      continue;\n    if (Df.test(u) || bf(u)) {\n      s += 2;\n      continue;\n    }\n    const a = wf(u), c = vf(a, o);\n    if (c !== void 0) {\n      s += c;\n      continue;\n    }\n    const l = a.codePointAt(0);\n    s += ot(l, o), s += _f(a, o);\n  }\n  return s;\n}\nconst ar = 10, is = (e = 0) => (t) => `\\x1B[${t + e}m`, ss = (e = 0) => (t) => `\\x1B[${38 + e};5;${t}m`, os = (e = 0) => (t, n, r) => `\\x1B[${38 + e};2;${t};${n};${r}m`, z = {\n  modifier: {\n    reset: [0, 0],\n    // 21 isn't widely supported and 22 does the same thing\n    bold: [1, 22],\n    dim: [2, 22],\n    italic: [3, 23],\n    underline: [4, 24],\n    overline: [53, 55],\n    inverse: [7, 27],\n    hidden: [8, 28],\n    strikethrough: [9, 29]\n  },\n  color: {\n    black: [30, 39],\n    red: [31, 39],\n    green: [32, 39],\n    yellow: [33, 39],\n    blue: [34, 39],\n    magenta: [35, 39],\n    cyan: [36, 39],\n    white: [37, 39],\n    // Bright color\n    blackBright: [90, 39],\n    gray: [90, 39],\n    // Alias of `blackBright`\n    grey: [90, 39],\n    // Alias of `blackBright`\n    redBright: [91, 39],\n    greenBright: [92, 39],\n    yellowBright: [93, 39],\n    blueBright: [94, 39],\n    magentaBright: [95, 39],\n    cyanBright: [96, 39],\n    whiteBright: [97, 39]\n  },\n  bgColor: {\n    bgBlack: [40, 49],\n    bgRed: [41, 49],\n    bgGreen: [42, 49],\n    bgYellow: [43, 49],\n    bgBlue: [44, 49],\n    bgMagenta: [45, 49],\n    bgCyan: [46, 49],\n    bgWhite: [47, 49],\n    // Bright color\n    bgBlackBright: [100, 49],\n    bgGray: [100, 49],\n    // Alias of `bgBlackBright`\n    bgGrey: [100, 49],\n    // Alias of `bgBlackBright`\n    bgRedBright: [101, 49],\n    bgGreenBright: [102, 49],\n    bgYellowBright: [103, 49],\n    bgBlueBright: [104, 49],\n    bgMagentaBright: [105, 49],\n    bgCyanBright: [106, 49],\n    bgWhiteBright: [107, 49]\n  }\n};\nObject.keys(z.modifier);\nconst Sf = Object.keys(z.color), Af = Object.keys(z.bgColor);\n[...Sf, ...Af];\nfunction Of() {\n  const e = /* @__PURE__ */ new Map();\n  for (const [t, n] of Object.entries(z)) {\n    for (const [r, i] of Object.entries(n))\n      z[r] = {\n        open: `\\x1B[${i[0]}m`,\n        close: `\\x1B[${i[1]}m`\n      }, n[r] = z[r], e.set(i[0], i[1]);\n    Object.defineProperty(z, t, {\n      value: n,\n      enumerable: !1\n    });\n  }\n  return Object.defineProperty(z, \"codes\", {\n    value: e,\n    enumerable: !1\n  }), z.color.close = \"\\x1B[39m\", z.bgColor.close = \"\\x1B[49m\", z.color.ansi = is(), z.color.ansi256 = ss(), z.color.ansi16m = os(), z.bgColor.ansi = is(ar), z.bgColor.ansi256 = ss(ar), z.bgColor.ansi16m = os(ar), Object.defineProperties(z, {\n    rgbToAnsi256: {\n      value(t, n, r) {\n        return t === n && n === r ? t < 8 ? 16 : t > 248 ? 231 : Math.round((t - 8) / 247 * 24) + 232 : 16 + 36 * Math.round(t / 255 * 5) + 6 * Math.round(n / 255 * 5) + Math.round(r / 255 * 5);\n      },\n      enumerable: !1\n    },\n    hexToRgb: {\n      value(t) {\n        const n = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(t.toString(16));\n        if (!n)\n          return [0, 0, 0];\n        let [r] = n;\n        r.length === 3 && (r = [...r].map((s) => s + s).join(\"\"));\n        const i = Number.parseInt(r, 16);\n        return [\n          /* eslint-disable no-bitwise */\n          i >> 16 & 255,\n          i >> 8 & 255,\n          i & 255\n          /* eslint-enable no-bitwise */\n        ];\n      },\n      enumerable: !1\n    },\n    hexToAnsi256: {\n      value: (t) => z.rgbToAnsi256(...z.hexToRgb(t)),\n      enumerable: !1\n    },\n    ansi256ToAnsi: {\n      value(t) {\n        if (t < 8)\n          return 30 + t;\n        if (t < 16)\n          return 90 + (t - 8);\n        let n, r, i;\n        if (t >= 232)\n          n = ((t - 232) * 10 + 8) / 255, r = n, i = n;\n        else {\n          t -= 16;\n          const u = t % 36;\n          n = Math.floor(t / 36) / 5, r = Math.floor(u / 6) / 5, i = u % 6 / 5;\n        }\n        const s = Math.max(n, r, i) * 2;\n        if (s === 0)\n          return 30;\n        let o = 30 + (Math.round(i) << 2 | Math.round(r) << 1 | Math.round(n));\n        return s === 2 && (o += 60), o;\n      },\n      enumerable: !1\n    },\n    rgbToAnsi: {\n      value: (t, n, r) => z.ansi256ToAnsi(z.rgbToAnsi256(t, n, r)),\n      enumerable: !1\n    },\n    hexToAnsi: {\n      value: (t) => z.ansi256ToAnsi(z.hexToAnsi256(t)),\n      enumerable: !1\n    }\n  }), z;\n}\nconst Su = Of(), Me = \"\\x1B\", bi = \"\", Cf = /* @__PURE__ */ new Set([\n  Me,\n  bi\n]), Au = \"\\x07\", Ou = \"[\", Tf = \"]\", Ln = \"m\", Mn = 0, Cu = 39, Tu = 49, Ru = 59, xu = 38, ku = 48, Nu = 58, Rf = 5, xf = 2, gn = `${Tf}8;;`, Iu = new RegExp(`^\\\\u001B(?:\\\\${Ou}(?<sgr>[0-9;]*)${Ln}|${gn}(?<uri>[^\\\\u0007\\\\u001B]*)(?:\\\\u0007|\\\\u001B\\\\\\\\))`), Pu = new RegExp(`^\\\\u009B(?<sgr>[0-9;]*)${Ln}`), zu = new Set(Su.codes.values());\nzu.delete(Mn);\nconst kf = new Intl.Segmenter(), Bu = (e) => Array.from(kf.segment(e), ({ segment: t }) => t), us = 8, $u = (e) => `${Me}${Ou}${e}${Ln}`, as = (e) => `${Me}${gn}${e}${Au}`, Lu = (e) => {\n  const t = e.split(\";\").map((r) => r === \"\" ? Mn : Number.parseInt(r, 10)), n = [];\n  for (let r = 0; r < t.length; r++) {\n    const i = t[r];\n    if (Number.isFinite(i)) {\n      if (i === xu || i === ku || i === Nu) {\n        if (r + 1 >= t.length)\n          break;\n        const s = t[r + 1];\n        if (s === Rf && Number.isFinite(t[r + 2])) {\n          n.push([i, s, t[r + 2]]), r += 2;\n          continue;\n        }\n        const o = t[r + 2], u = t[r + 3], a = t[r + 4];\n        if (s === xf && Number.isFinite(o) && Number.isFinite(u) && Number.isFinite(a)) {\n          n.push([i, s, o, u, a]), r += 4;\n          continue;\n        }\n        break;\n      }\n      n.push([i]);\n    }\n  }\n  return n;\n}, nn = (e, t) => {\n  const n = e.findIndex((r) => r.family === t);\n  n !== -1 && e.splice(n, 1);\n}, cs = (e, t) => {\n  nn(e, t.family), e.push(t);\n}, Nf = (e, t) => {\n  for (let n = e.length - 1; n >= 0; n--) {\n    const r = e[n];\n    r.family.startsWith(\"modifier-\") && r.close === t && e.splice(n, 1);\n  }\n}, If = (e, t) => {\n  if (e >= 30 && e <= 37 || e >= 90 && e <= 97 || e === xu && t.length > 1)\n    return {\n      family: \"foreground\",\n      open: t.join(\";\"),\n      close: Cu\n    };\n  if (e >= 40 && e <= 47 || e >= 100 && e <= 107 || e === ku && t.length > 1)\n    return {\n      family: \"background\",\n      open: t.join(\";\"),\n      close: Tu\n    };\n  if (e === Nu && t.length > 1)\n    return {\n      family: \"underlineColor\",\n      open: t.join(\";\"),\n      close: Ru\n    };\n}, Mu = (e, t) => e === Mn ? (t.length = 0, !0) : e === Cu ? (nn(t, \"foreground\"), !0) : e === Tu ? (nn(t, \"background\"), !0) : e === Ru ? (nn(t, \"underlineColor\"), !0) : zu.has(e) ? (Nf(t, e), !0) : !1, Pf = (e, t) => {\n  const [n] = e;\n  if (Mu(n, t))\n    return;\n  const r = If(n, e);\n  if (r) {\n    cs(t, r);\n    return;\n  }\n  const i = Su.codes.get(n);\n  i !== void 0 && i !== Mn && cs(t, {\n    family: `modifier-${n}`,\n    open: e.join(\";\"),\n    close: i\n  });\n}, ls = (e, t) => {\n  for (const n of Lu(e))\n    Pf(n, t);\n}, hs = (e, t) => {\n  for (const n of Lu(e)) {\n    const [r] = n;\n    Mu(r, t);\n  }\n}, zf = (e, t) => {\n  let n = e;\n  for (; n.length > 0; ) {\n    if (n.startsWith(Me) && n[1] !== \"\\\\\") {\n      const r = Iu.exec(n);\n      if (!r)\n        break;\n      r.groups.sgr !== void 0 && hs(r.groups.sgr, t), n = n.slice(r[0].length);\n      continue;\n    }\n    if (n.startsWith(bi)) {\n      const r = Pu.exec(n);\n      if (!r || r.groups.sgr === void 0)\n        break;\n      hs(r.groups.sgr, t), n = n.slice(r[0].length);\n      continue;\n    }\n    break;\n  }\n}, Bf = (e) => [...e].reverse().map((t) => $u(t.close)).join(\"\"), $f = (e) => e.map((t) => $u(t.open)).join(\"\"), Lf = (e) => e.split(\" \").map((t) => ut(t)), cr = (e, t, n) => {\n  const r = Bu(t);\n  let i = !1, s = !1, o = ut(yi(e.at(-1)));\n  for (const [u, a] of r.entries()) {\n    const c = ut(a);\n    if (o + c <= n ? e[e.length - 1] += a : (e.push(a), o = 0), Cf.has(a) && !(s && a === Me && r[u + 1] === \"\\\\\") && (i = !0, s = r.slice(u + 1, u + 1 + gn.length).join(\"\") === gn), i) {\n      s ? (a === Au || a === \"\\\\\" && u > 0 && r[u - 1] === Me) && (i = !1, s = !1) : a === Ln && (i = !1);\n      continue;\n    }\n    o += c, o === n && u < r.length - 1 && (e.push(\"\"), o = 0);\n  }\n  !o && e.at(-1).length > 0 && e.length > 1 && (e[e.length - 2] += e.pop());\n}, Mf = (e) => {\n  const t = e.split(\" \");\n  let n = t.length;\n  for (; n > 0 && !(ut(t[n - 1]) > 0); )\n    n--;\n  return n === t.length ? e : t.slice(0, n).join(\" \") + t.slice(n).join(\"\");\n}, jf = (e) => {\n  if (!e.includes(\"\t\"))\n    return e;\n  const t = e.split(\"\t\");\n  let n = 0, r = \"\";\n  for (const [i, s] of t.entries())\n    if (r += s, n += ut(s), i < t.length - 1) {\n      const o = us - n % us;\n      r += \" \".repeat(o), n += o;\n    }\n  return r;\n}, Uf = (e, t, n = {}) => {\n  if (n.trim !== !1 && e.trim() === \"\")\n    return \"\";\n  let r = \"\", i;\n  const s = [], o = Lf(e);\n  let u = [\"\"];\n  for (const [f, d] of e.split(\" \").entries()) {\n    n.trim !== !1 && (u[u.length - 1] = u.at(-1).trimStart());\n    let h = ut(u.at(-1));\n    if (f !== 0 && (h >= t && (n.wordWrap === !1 || n.trim === !1) && (u.push(\"\"), h = 0), (h > 0 || n.trim === !1) && (u[u.length - 1] += \" \", h++)), n.hard && n.wordWrap !== !1 && o[f] > t) {\n      const p = t - h, m = 1 + Math.floor((o[f] - p - 1) / t);\n      Math.floor((o[f] - 1) / t) < m && u.push(\"\"), cr(u, d, t);\n      continue;\n    }\n    if (h + o[f] > t && h > 0 && o[f] > 0) {\n      if (n.wordWrap === !1 && h < t) {\n        cr(u, d, t);\n        continue;\n      }\n      u.push(\"\");\n    }\n    if (h + o[f] > t && n.wordWrap === !1) {\n      cr(u, d, t);\n      continue;\n    }\n    u[u.length - 1] += d;\n  }\n  n.trim !== !1 && (u = u.map((f) => Mf(f)));\n  const a = u.join(`\n`), c = Bu(a);\n  let l = 0;\n  for (const [f, d] of c.entries()) {\n    if (r += d, d === Me && c[f + 1] !== \"\\\\\") {\n      const { groups: h } = Iu.exec(a.slice(l)) || { groups: {} };\n      h.sgr !== void 0 ? ls(h.sgr, s) : h.uri !== void 0 && (i = h.uri.length === 0 ? void 0 : h.uri);\n    } else if (d === bi) {\n      const { groups: h } = Pu.exec(a.slice(l)) || { groups: {} };\n      h.sgr !== void 0 && ls(h.sgr, s);\n    }\n    if (c[f + 1] === `\n`)\n      i && (r += as(\"\")), r += Bf(s);\n    else if (d === `\n`) {\n      const h = [...s];\n      zf(a.slice(l + 1), h), r += $f(h), i && (r += as(i));\n    }\n    l += d.length;\n  }\n  return r;\n};\nfunction qF(e, t, n) {\n  return String(e).normalize().replaceAll(`\\r\n`, `\n`).split(`\n`).map((r) => Uf(jf(r), t, n)).join(`\n`);\n}\nclass Ye {\n  data = {\n    r: 0,\n    // 0 ~ 255\n    g: 0,\n    // 0 ~ 255\n    b: 0,\n    // 0 ~ 255\n    a: 1,\n    // 0 ~ 1\n    brightness: 0\n    // 0 ~ 1\n  };\n  constructor(t, n) {\n    t && (this.color = t), this.setAlpha(n);\n  }\n  get color() {\n    return this.data;\n  }\n  // parse color\n  set color(t) {\n    const n = `Color Set Unknown Error: color(${t}) type(${typeof t})`;\n    if (t instanceof Ye)\n      this.setRGB(t.r, t.g, t.b, t.a);\n    else if (typeof t == \"number\")\n      this.setHEX(t);\n    else if (typeof t == \"string\") {\n      let r;\n      if (r = /^(\\w+)\\(([^)]*)\\)/.exec(t)) {\n        const i = r[2];\n        let s;\n        switch (r[1]) {\n          case \"rgb\":\n          case \"rgba\":\n            (s = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(\n              i\n            )) ? (this.r = parseInt(s[1], 10), this.g = parseInt(s[2], 10), this.b = parseInt(s[3], 10), this.a = s[4] ? parseFloat(s[4]) : 1) : (s = /^\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(\n              i\n            )) ? (this.r = N(parseFloat(s[1]), 0, 100) * 255 / 100, this.g = N(parseFloat(s[2]), 0, 100) * 255 / 100, this.b = N(parseFloat(s[3]), 0, 100) * 255 / 100, this.a = s[4] ? parseFloat(s[4]) : 1) : _e(n);\n            break;\n          case \"hsl\":\n          case \"hsla\":\n            (s = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)%\\s*,\\s*(\\d*\\.?\\d+)%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(\n              i\n            )) ? this.setHSL(\n              parseFloat(s[1]) / 360,\n              parseFloat(s[2]) / 100,\n              parseFloat(s[3]) / 100,\n              s[4] ? parseFloat(s[4]) : 1\n            ) : _e(n);\n            break;\n          case \"hsv\":\n          case \"hsva\":\n          case \"hsb\":\n          case \"hsba\":\n            (s = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)%\\s*,\\s*(\\d*\\.?\\d+)%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(\n              i\n            )) ? this.setHSV(\n              parseFloat(s[1]) / 360,\n              parseFloat(s[2]) / 100,\n              parseFloat(s[3]) / 100,\n              s[4] ? parseFloat(s[4]) : 1\n            ) : _e(n);\n            break;\n          default:\n            _e(n);\n        }\n      } else if (r = /#([A-Fa-f0-9]+)/.exec(t)) {\n        const i = r[1], s = i.length;\n        s === 3 ? this.setRGB(\n          parseInt(i.charAt(0), 16),\n          parseInt(i.charAt(1), 16),\n          parseInt(i.charAt(2), 16),\n          1\n        ) : s === 4 ? this.setRGB(\n          parseInt(i.charAt(0), 16),\n          parseInt(i.charAt(1), 16),\n          parseInt(i.charAt(2), 16),\n          N(parseInt(i.charAt(3), 16) / 16, 0, 1)\n        ) : s === 6 || s === 8 ? this.setHEX(parseInt(i, 16)) : _e(n);\n      } else\n        _e(n);\n    } else\n      Object.prototype.hasOwnProperty.call(t, \"r\") && Object.prototype.hasOwnProperty.call(t, \"g\") && Object.prototype.hasOwnProperty.call(t, \"b\") ? this.setRGB(\n        t.r,\n        t.g,\n        t.b,\n        Object.prototype.hasOwnProperty.call(t, \"a\") ? t.a : 1\n      ) : Object.prototype.hasOwnProperty.call(t, \"h\") && Object.prototype.hasOwnProperty.call(t, \"s\") && Object.prototype.hasOwnProperty.call(t, \"l\") ? this.setHSL(\n        t.h,\n        t.s,\n        t.l,\n        Object.prototype.hasOwnProperty.call(t, \"a\") ? t.a : 1\n      ) : Object.prototype.hasOwnProperty.call(t, \"h\") && Object.prototype.hasOwnProperty.call(t, \"s\") && Object.prototype.hasOwnProperty.call(t, \"v\") ? this.setHSV(\n        t.h,\n        t.s,\n        t.v,\n        Object.prototype.hasOwnProperty.call(t, \"a\") ? t.a : 1\n      ) : Object.prototype.hasOwnProperty.call(t, \"h\") && Object.prototype.hasOwnProperty.call(t, \"s\") && Object.prototype.hasOwnProperty.call(t, \"b\") ? this.setHSV(\n        t.h,\n        t.s,\n        t.b,\n        Object.prototype.hasOwnProperty.call(t, \"a\") ? t.a : 1\n      ) : _e(n);\n    this.data.brightness = Zf(this.r, this.g, this.b);\n  }\n  set(t) {\n    return this.color = t, this;\n  }\n  get r() {\n    return this.data.r;\n  }\n  set r(t) {\n    this.data.r = N(Math.round(X(t, this.r)), 0, 255);\n  }\n  get g() {\n    return this.data.g;\n  }\n  set g(t) {\n    this.data.g = N(Math.round(X(t, this.g)), 0, 255);\n  }\n  get b() {\n    return this.data.b;\n  }\n  set b(t) {\n    this.data.b = N(Math.round(X(t, this.b)), 0, 255);\n  }\n  get a() {\n    return this.data.a;\n  }\n  set a(t) {\n    this.data.a = N(X(t, this.a), 0, 1);\n  }\n  setAlpha(t) {\n    return this.a = t, this;\n  }\n  get brightness() {\n    return this.data.brightness;\n  }\n  fromArray(t, n = 0) {\n    return this.r = t[n], this.g = t[n + 1], this.b = t[n + 2], this.a = t[n + 3], this;\n  }\n  toArray(t = [], n = 0) {\n    return t[n] = this.r, t[n + 1] = this.g, t[n + 2] = this.b, t[n + 3] = this.a, t;\n  }\n  toRGBString() {\n    return this.a === 1 ? `rgb(${this.r},${this.g},${this.b})` : `rgba(${this.r},${this.g},${this.b},${Fe(this.a, 6)})`;\n  }\n  toHexString() {\n    return this.a === 1 ? (\"000000\" + this.hex.toString(16)).slice(-6) : (\"00000000\" + this.hex.toString(16)).slice(-8);\n  }\n  toString() {\n    return this.a === 1 ? \"#\" + this.toHexString() : this.toRGBString();\n  }\n  *[Symbol.iterator]() {\n    yield this.r, yield this.g, yield this.b, yield this.a;\n  }\n  clone() {\n    return new Ye(this.color);\n  }\n  copy(t) {\n    return this.color = t.color, this;\n  }\n  equals(t) {\n    return t.r === this.r && t.g === this.g && t.b === this.b && t.a === this.a;\n  }\n  add(t) {\n    return this.r = this.r + t.r, this.g = this.g + t.g, this.b = this.b + t.b, this;\n  }\n  addColors(t, n) {\n    return this.r = t.r + n.r, this.g = t.g + n.g, this.b = t.b + n.b, this;\n  }\n  addScalar(t) {\n    return this.r = this.r + t, this.g = this.g + t, this.b = this.b + t, this;\n  }\n  setScalar(t) {\n    return this.r = t, this.g = t, this.b = t, this;\n  }\n  sub(t) {\n    return this.r = this.r - t.r, this.g = this.g - t.g, this.b = this.b - t.b, this;\n  }\n  multiply(t) {\n    return this.r = this.r * t.r, this.g = this.g * t.g, this.b = this.b * t.b, this;\n  }\n  multiplyScalar(t) {\n    return this.r = this.r * t, this.g = this.g * t, this.b = this.b * t, this;\n  }\n  opposite(t = !0, n = \"#000000\", r = \"#ffffff\") {\n    if (t)\n      return this.color = this.r * 0.299 + this.g * 0.587 + this.b * 0.114 > 186 ? n : r, this;\n    {\n      const { r: i, g: s, b: o } = this.color;\n      return this.r = 255 - i, this.g = 255 - s, this.b = 255 - o, this;\n    }\n  }\n  closet(t = \"#000000\", n = \"#ffffff\") {\n    return this.opposite(!0, t, n).opposite(\n      !0,\n      t,\n      n\n    );\n  }\n  // t: 0 ~ 1\n  lighten(t) {\n    t = N(t, 0, 1);\n    const { r: n, g: r, b: i, a: s } = this.color;\n    return s == 0 ? this.a = t : (this.r = n + (255 - n) * t, this.g = r + (255 - r) * t, this.b = i + (255 - i) * t), this;\n  }\n  // t: 0 ~ 1\n  darken(t) {\n    t = N(t, 0, 1);\n    const { r: n, g: r, b: i, a: s } = this.color;\n    return s == 0 ? this.a = t : (this.r = n * (1 - t), this.g = r * (1 - t), this.b = i * (1 - t)), this;\n  }\n  // 渐变色\n  // t: 0 ~ 1\n  lerp(t, n) {\n    n = N(n, 0, 1);\n    const { r, g: i, b: s } = this.color;\n    return this.r = r + (t.r - r) * n, this.g = i + (t.g - i) * n, this.b = s + (t.b - s) * n, this;\n  }\n  // 渐变色\n  // t: 0 ~ 1\n  lerpColors(t, n, r) {\n    return r = N(r, 0, 1), this.r = t.r + (n.r - t.r) * r, this.g = t.g + (n.g - t.g) * r, this.b = t.b + (n.b - t.b) * r, this;\n  }\n  // 渐变色\n  // t: 0 ~ 1\n  static gradient(t, n, r) {\n    try {\n      return fs.lerpColors(new Ye(t), new Ye(n), r).toString();\n    } catch {\n      return n;\n    }\n  }\n  static random() {\n    return fs.setHEX(Math.random() * 16777215).toString();\n  }\n  setRGB(t, n, r, i = 1) {\n    return this.r = N(t, 0, 255), this.g = N(n, 0, 255), this.b = N(r, 0, 255), this.a = N(i, 0, 1), this;\n  }\n  // RRGGBB(AA)\n  setHEX(t) {\n    return t = Math.floor(t), t < 16777216 ? (this.r = t >> 16 & 255, this.g = t >> 8 & 255, this.b = t & 255, this.a = 1) : (this.r = t >> 24 & 255, this.g = t >> 16 & 255, this.b = t >> 8 & 255, this.a = (t & 255) / 255), this;\n  }\n  get hex() {\n    let t = (this.r << 16) + (this.g << 8) + this.b;\n    return this.a !== 1 && (t = t << 8, t += Math.round(this.a * 255)), t;\n  }\n  // hsl(a) : hue 色相 + saturation 饱和度 + lightness luminosity 亮度\n  // h,s,l ranges are in 0.0 ~ 1.0\n  setHSL(t, n, r, i = 1) {\n    const s = Q0(t, 1), o = N(n, 0, 1), u = N(r, 0, 1);\n    if (o === 0)\n      this.r = u * 255, this.g = u * 255, this.b = u * 255;\n    else {\n      const a = u <= 0.5 ? u * (1 + o) : u + o - u * o, c = 2 * u - a;\n      this.r = lr(c, a, s + 1 / 3) * 255, this.g = lr(c, a, s) * 255, this.b = lr(c, a, s - 1 / 3) * 255;\n    }\n    return this.a = i, this;\n  }\n  getHSL(t) {\n    const n = this.r, r = this.g, i = this.b, s = Math.max(n, r, i) / 255, o = Math.min(n, r, i) / 255;\n    let u, a;\n    const c = (o + s) / 2;\n    if (o === s)\n      u = 0, a = 0;\n    else {\n      const l = s - o;\n      switch (a = c <= 0.5 ? l / (s + o) : l / (2 - s - o), s) {\n        case n:\n          u = (r - i) / l + (r < i ? 6 : 0);\n          break;\n        case r:\n          u = (i - n) / l + 2;\n          break;\n        case i:\n        default:\n          u = (n - r) / l + 4;\n          break;\n      }\n      u /= 6;\n    }\n    return t && t.setHSL(u, a, c, this.a), {\n      h: u,\n      s: a,\n      l: c,\n      a: this.a\n    };\n  }\n  offsetHSL(t, n, r) {\n    const i = this.getHSL();\n    return this.setHSL(i.h + t, i.s + n, i.l + r);\n  }\n  lerpHSL(t, n) {\n    const r = this.getHSL(), i = t.getHSL(), s = Xt(r.h, i.h, n), o = Xt(r.s, i.s, n), u = Xt(r.l, i.l, n);\n    return this.setHSL(s, o, u), this;\n  }\n  // hsv(a) / hsb(a) : hue 色相 + saturation 饱和度 + value or brightness 明度\n  // h,s,v ranges are in 0.0 ~ 1.0\n  setHSV(t, n, r, i = 1) {\n    const s = N(t, 0, 1) * 360, o = N(n, 0, 1), u = N(r, 0, 1), a = Math.floor(s / 60) % 6, c = s / 60 - Math.floor(s / 60), l = u * (1 - o), f = u * (1 - c * o), d = u * (1 - (1 - c) * o), h = [\n      [u, d, l],\n      [f, u, l],\n      [l, u, d],\n      [l, f, u],\n      [d, l, u],\n      [u, l, f]\n    ][a];\n    return this.r = h[0] * 255, this.g = h[1] * 255, this.b = h[2] * 255, this.a = i, this;\n  }\n  setHSB(t, n, r, i = 1) {\n    this.setHSV(t, n, r, i);\n  }\n  getHSV(t) {\n    const { r: n, g: r, b: i, a: s } = this.color, o = Math.max(n, r, i), u = Math.min(n, r, i), a = o - u;\n    let c;\n    n === o ? c = (r - i) / a : r === o ? c = 2 + (i - n) / a : c = 4 + (n - r) / a, c /= 6, c < 0 && (c += 1);\n    const l = a == 0 ? 0 : c, f = o === 0 ? 0 : a / o, d = o / 255;\n    return t && t.setHSV(l, f, d, s), {\n      h: l,\n      s: f,\n      v: d,\n      a: s\n    };\n  }\n  getHSB(t) {\n    const { h: n, s: r, v: i, a: s } = this.getHSV(t);\n    return {\n      h: n,\n      s: r,\n      b: i,\n      a: s\n    };\n  }\n}\nconst fs = new Ye();\nfunction lr(e, t, n) {\n  return n < 0 && (n += 1), n > 1 && (n -= 1), n < 1 / 6 ? e + (t - e) * 6 * n : n < 1 / 2 ? t : n < 2 / 3 ? e + (t - e) * 6 * (2 / 3 - n) : e;\n}\nfunction Zf(e, t, n) {\n  return 0.2126 * e + 0.7152 * t + 0.0722 * n;\n}\nfunction qf(e) {\n  const t = String(e).toLowerCase();\n  if (t.indexOf(\"km\") >= 0 || t.indexOf(\"m\") >= 0)\n    return t;\n  const n = parseFloat(t);\n  return !It(n) || n < 0 ? \"\" : n >= 1e3 ? Math.ceil(n / 1e3 * 10) / 10 + \"km\" : Math.ceil(n) + \"m\";\n}\nfunction wi(e, t = 2) {\n  return xo(e / 100, t);\n}\nfunction Wf(e, t = 2) {\n  return String(Number(wi(e, t)));\n}\nfunction WF(e) {\n  const t = e / 1024;\n  if (t < 1)\n    return `${e} bytes`;\n  if (t < 1024)\n    return `${t.toFixed(1).replace(/\\.0$/, \"\")}KB`;\n  const n = t / 1024;\n  return n < 1024 ? `${n.toFixed(1).replace(/\\.0$/, \"\")}MB` : `${(n / 1024).toFixed(1).replace(/\\.0$/, \"\")}GB`;\n}\nconst yn = 3.141592653589793 * 3e3 / 180, G = 3.141592653589793, bn = 6378245, wn = 0.006693421622965943;\nfunction ju(e, t) {\n  return e < 72.004 || e > 137.8347 || t < 0.8293 || t > 55.8271 || !1;\n}\nfunction Uu(e, t) {\n  let n = -100 + 2 * e + 3 * t + 0.2 * t * t + 0.1 * e * t + 0.2 * Math.sqrt(Math.abs(e));\n  return n += (20 * Math.sin(6 * e * G) + 20 * Math.sin(2 * e * G)) * 2 / 3, n += (20 * Math.sin(t * G) + 40 * Math.sin(t / 3 * G)) * 2 / 3, n += (160 * Math.sin(t / 12 * G) + 320 * Math.sin(t * G / 30)) * 2 / 3, n;\n}\nfunction Zu(e, t) {\n  let n = 300 + e + 2 * t + 0.1 * e * e + 0.1 * e * t + 0.1 * Math.sqrt(Math.abs(e));\n  return n += (20 * Math.sin(6 * e * G) + 20 * Math.sin(2 * e * G)) * 2 / 3, n += (20 * Math.sin(e * G) + 40 * Math.sin(e / 3 * G)) * 2 / 3, n += (150 * Math.sin(e / 12 * G) + 300 * Math.sin(e / 30 * G)) * 2 / 3, n;\n}\nfunction Gf(e, t) {\n  if (ju(e, t))\n    return [e, t];\n  {\n    let n = Zu(e - 105, t - 35), r = Uu(e - 105, t - 35);\n    const i = t / 180 * G;\n    let s = Math.sin(i);\n    s = 1 - wn * s * s;\n    const o = Math.sqrt(s);\n    n = n * 180 / (bn / o * Math.cos(i) * G), r = r * 180 / (bn * (1 - wn) / (s * o) * G);\n    const u = t + r;\n    return [e + n, u];\n  }\n}\nfunction Vf(e, t) {\n  if (ju(e, t))\n    return [e, t];\n  {\n    let n = Uu(e - 105, t - 35), r = Zu(e - 105, t - 35);\n    const i = t / 180 * G;\n    let s = Math.sin(i);\n    s = 1 - wn * s * s;\n    const o = Math.sqrt(s);\n    n = n * 180 / (bn * (1 - wn) / (s * o) * G), r = r * 180 / (bn / o * Math.cos(i) * G);\n    const u = t + n, a = e + r;\n    return [e * 2 - a, t * 2 - u];\n  }\n}\nfunction Kf(e, t) {\n  const n = Math.sqrt(e * e + t * t) + 2e-5 * Math.sin(t * yn), r = Math.atan2(t, e) + 3e-7 * Math.cos(e * yn), i = n * Math.cos(r) + 65e-4, s = n * Math.sin(r) + 6e-3;\n  return [i, s];\n}\nfunction Qf(e, t) {\n  const n = e - 65e-4, r = t - 6e-3, i = Math.sqrt(n * n + r * r) - 2e-5 * Math.sin(r * yn), s = Math.atan2(r, n) - 3e-6 * Math.cos(r * yn), o = i * Math.cos(s), u = i * Math.sin(s);\n  return [o, u];\n}\nfunction GF(e, t) {\n  const n = Gf(e, t);\n  return Kf(n[0], n[1]);\n}\nfunction VF(e, t) {\n  const n = Qf(e, t);\n  return Vf(n[0], n[1]);\n}\nconst Jf = {\n  11e4: \"北京市\",\n  110100: \"市辖区\",\n  110101: \"东城区\",\n  110102: \"西城区\",\n  110105: \"朝阳区\",\n  110106: \"丰台区\",\n  110107: \"石景山区\",\n  110108: \"海淀区\",\n  110109: \"门头沟区\",\n  110111: \"房山区\",\n  110112: \"通州区\",\n  110113: \"顺义区\",\n  110114: \"昌平区\",\n  110115: \"大兴区\",\n  110116: \"怀柔区\",\n  110117: \"平谷区\",\n  110118: \"密云区\",\n  110119: \"延庆区\",\n  12e4: \"天津市\",\n  120100: \"市辖区\",\n  120101: \"和平区\",\n  120102: \"河东区\",\n  120103: \"河西区\",\n  120104: \"南开区\",\n  120105: \"河北区\",\n  120106: \"红桥区\",\n  120110: \"东丽区\",\n  120111: \"西青区\",\n  120112: \"津南区\",\n  120113: \"北辰区\",\n  120114: \"武清区\",\n  120115: \"宝坻区\",\n  120116: \"滨海新区\",\n  120117: \"宁河区\",\n  120118: \"静海区\",\n  120119: \"蓟州区\",\n  13e4: \"河北省\",\n  130100: \"石家庄市\",\n  130101: \"市辖区\",\n  130102: \"长安区\",\n  130104: \"桥西区\",\n  130105: \"新华区\",\n  130107: \"井陉矿区\",\n  130108: \"裕华区\",\n  130109: \"藁城区\",\n  130110: \"鹿泉区\",\n  130111: \"栾城区\",\n  130121: \"井陉县\",\n  130123: \"正定县\",\n  130125: \"行唐县\",\n  130126: \"灵寿县\",\n  130127: \"高邑县\",\n  130128: \"深泽县\",\n  130129: \"赞皇县\",\n  130130: \"无极县\",\n  130131: \"平山县\",\n  130132: \"元氏县\",\n  130133: \"赵县\",\n  130183: \"晋州市\",\n  130184: \"新乐市\",\n  130200: \"唐山市\",\n  130201: \"市辖区\",\n  130202: \"路南区\",\n  130203: \"路北区\",\n  130204: \"古冶区\",\n  130205: \"开平区\",\n  130207: \"丰南区\",\n  130208: \"丰润区\",\n  130209: \"曹妃甸区\",\n  130223: \"滦县\",\n  130224: \"滦南县\",\n  130225: \"乐亭县\",\n  130227: \"迁西县\",\n  130229: \"玉田县\",\n  130281: \"遵化市\",\n  130283: \"迁安市\",\n  130300: \"秦皇岛市\",\n  130301: \"市辖区\",\n  130302: \"海港区\",\n  130303: \"山海关区\",\n  130304: \"北戴河区\",\n  130306: \"抚宁区\",\n  130321: \"青龙满族自治县\",\n  130322: \"昌黎县\",\n  130324: \"卢龙县\",\n  130400: \"邯郸市\",\n  130401: \"市辖区\",\n  130402: \"邯山区\",\n  130403: \"丛台区\",\n  130404: \"复兴区\",\n  130406: \"峰峰矿区\",\n  130421: \"邯郸县\",\n  130423: \"临漳县\",\n  130424: \"成安县\",\n  130425: \"大名县\",\n  130426: \"涉县\",\n  130427: \"磁县\",\n  130428: \"肥乡县\",\n  130429: \"永年县\",\n  130430: \"邱县\",\n  130431: \"鸡泽县\",\n  130432: \"广平县\",\n  130433: \"馆陶县\",\n  130434: \"魏县\",\n  130435: \"曲周县\",\n  130481: \"武安市\",\n  130500: \"邢台市\",\n  130501: \"市辖区\",\n  130502: \"桥东区\",\n  130503: \"桥西区\",\n  130521: \"邢台县\",\n  130522: \"临城县\",\n  130523: \"内丘县\",\n  130524: \"柏乡县\",\n  130525: \"隆尧县\",\n  130526: \"任县\",\n  130527: \"南和县\",\n  130528: \"宁晋县\",\n  130529: \"巨鹿县\",\n  130530: \"新河县\",\n  130531: \"广宗县\",\n  130532: \"平乡县\",\n  130533: \"威县\",\n  130534: \"清河县\",\n  130535: \"临西县\",\n  130581: \"南宫市\",\n  130582: \"沙河市\",\n  130600: \"保定市\",\n  130601: \"市辖区\",\n  130602: \"竞秀区\",\n  130606: \"莲池区\",\n  130607: \"满城区\",\n  130608: \"清苑区\",\n  130609: \"徐水区\",\n  130623: \"涞水县\",\n  130624: \"阜平县\",\n  130626: \"定兴县\",\n  130627: \"唐县\",\n  130628: \"高阳县\",\n  130629: \"容城县\",\n  130630: \"涞源县\",\n  130631: \"望都县\",\n  130632: \"安新县\",\n  130633: \"易县\",\n  130634: \"曲阳县\",\n  130635: \"蠡县\",\n  130636: \"顺平县\",\n  130637: \"博野县\",\n  130638: \"雄县\",\n  130681: \"涿州市\",\n  130683: \"安国市\",\n  130684: \"高碑店市\",\n  130700: \"张家口市\",\n  130701: \"市辖区\",\n  130702: \"桥东区\",\n  130703: \"桥西区\",\n  130705: \"宣化区\",\n  130706: \"下花园区\",\n  130708: \"万全区\",\n  130709: \"崇礼区\",\n  130722: \"张北县\",\n  130723: \"康保县\",\n  130724: \"沽源县\",\n  130725: \"尚义县\",\n  130726: \"蔚县\",\n  130727: \"阳原县\",\n  130728: \"怀安县\",\n  130730: \"怀来县\",\n  130731: \"涿鹿县\",\n  130732: \"赤城县\",\n  130800: \"承德市\",\n  130801: \"市辖区\",\n  130802: \"双桥区\",\n  130803: \"双滦区\",\n  130804: \"鹰手营子矿区\",\n  130821: \"承德县\",\n  130822: \"兴隆县\",\n  130823: \"平泉县\",\n  130824: \"滦平县\",\n  130825: \"隆化县\",\n  130826: \"丰宁满族自治县\",\n  130827: \"宽城满族自治县\",\n  130828: \"围场满族蒙古族自治县\",\n  130900: \"沧州市\",\n  130901: \"市辖区\",\n  130902: \"新华区\",\n  130903: \"运河区\",\n  130921: \"沧县\",\n  130922: \"青县\",\n  130923: \"东光县\",\n  130924: \"海兴县\",\n  130925: \"盐山县\",\n  130926: \"肃宁县\",\n  130927: \"南皮县\",\n  130928: \"吴桥县\",\n  130929: \"献县\",\n  130930: \"孟村回族自治县\",\n  130981: \"泊头市\",\n  130982: \"任丘市\",\n  130983: \"黄骅市\",\n  130984: \"河间市\",\n  131e3: \"廊坊市\",\n  131001: \"市辖区\",\n  131002: \"安次区\",\n  131003: \"广阳区\",\n  131022: \"固安县\",\n  131023: \"永清县\",\n  131024: \"香河县\",\n  131025: \"大城县\",\n  131026: \"文安县\",\n  131028: \"大厂回族自治县\",\n  131081: \"霸州市\",\n  131082: \"三河市\",\n  131100: \"衡水市\",\n  131101: \"市辖区\",\n  131102: \"桃城区\",\n  131103: \"冀州区\",\n  131121: \"枣强县\",\n  131122: \"武邑县\",\n  131123: \"武强县\",\n  131124: \"饶阳县\",\n  131125: \"安平县\",\n  131126: \"故城县\",\n  131127: \"景县\",\n  131128: \"阜城县\",\n  131182: \"深州市\",\n  139e3: \"省直辖县级行政区划\",\n  139001: \"定州市\",\n  139002: \"辛集市\",\n  14e4: \"山西省\",\n  140100: \"太原市\",\n  140101: \"市辖区\",\n  140105: \"小店区\",\n  140106: \"迎泽区\",\n  140107: \"杏花岭区\",\n  140108: \"尖草坪区\",\n  140109: \"万柏林区\",\n  140110: \"晋源区\",\n  140121: \"清徐县\",\n  140122: \"阳曲县\",\n  140123: \"娄烦县\",\n  140181: \"古交市\",\n  140200: \"大同市\",\n  140201: \"市辖区\",\n  140202: \"城区\",\n  140203: \"矿区\",\n  140211: \"南郊区\",\n  140212: \"新荣区\",\n  140221: \"阳高县\",\n  140222: \"天镇县\",\n  140223: \"广灵县\",\n  140224: \"灵丘县\",\n  140225: \"浑源县\",\n  140226: \"左云县\",\n  140227: \"大同县\",\n  140300: \"阳泉市\",\n  140301: \"市辖区\",\n  140302: \"城区\",\n  140303: \"矿区\",\n  140311: \"郊区\",\n  140321: \"平定县\",\n  140322: \"盂县\",\n  140400: \"长治市\",\n  140401: \"市辖区\",\n  140402: \"城区\",\n  140411: \"郊区\",\n  140421: \"长治县\",\n  140423: \"襄垣县\",\n  140424: \"屯留县\",\n  140425: \"平顺县\",\n  140426: \"黎城县\",\n  140427: \"壶关县\",\n  140428: \"长子县\",\n  140429: \"武乡县\",\n  140430: \"沁县\",\n  140431: \"沁源县\",\n  140481: \"潞城市\",\n  140500: \"晋城市\",\n  140501: \"市辖区\",\n  140502: \"城区\",\n  140521: \"沁水县\",\n  140522: \"阳城县\",\n  140524: \"陵川县\",\n  140525: \"泽州县\",\n  140581: \"高平市\",\n  140600: \"朔州市\",\n  140601: \"市辖区\",\n  140602: \"朔城区\",\n  140603: \"平鲁区\",\n  140621: \"山阴县\",\n  140622: \"应县\",\n  140623: \"右玉县\",\n  140624: \"怀仁县\",\n  140700: \"晋中市\",\n  140701: \"市辖区\",\n  140702: \"榆次区\",\n  140721: \"榆社县\",\n  140722: \"左权县\",\n  140723: \"和顺县\",\n  140724: \"昔阳县\",\n  140725: \"寿阳县\",\n  140726: \"太谷县\",\n  140727: \"祁县\",\n  140728: \"平遥县\",\n  140729: \"灵石县\",\n  140781: \"介休市\",\n  140800: \"运城市\",\n  140801: \"市辖区\",\n  140802: \"盐湖区\",\n  140821: \"临猗县\",\n  140822: \"万荣县\",\n  140823: \"闻喜县\",\n  140824: \"稷山县\",\n  140825: \"新绛县\",\n  140826: \"绛县\",\n  140827: \"垣曲县\",\n  140828: \"夏县\",\n  140829: \"平陆县\",\n  140830: \"芮城县\",\n  140881: \"永济市\",\n  140882: \"河津市\",\n  140900: \"忻州市\",\n  140901: \"市辖区\",\n  140902: \"忻府区\",\n  140921: \"定襄县\",\n  140922: \"五台县\",\n  140923: \"代县\",\n  140924: \"繁峙县\",\n  140925: \"宁武县\",\n  140926: \"静乐县\",\n  140927: \"神池县\",\n  140928: \"五寨县\",\n  140929: \"岢岚县\",\n  140930: \"河曲县\",\n  140931: \"保德县\",\n  140932: \"偏关县\",\n  140981: \"原平市\",\n  141e3: \"临汾市\",\n  141001: \"市辖区\",\n  141002: \"尧都区\",\n  141021: \"曲沃县\",\n  141022: \"翼城县\",\n  141023: \"襄汾县\",\n  141024: \"洪洞县\",\n  141025: \"古县\",\n  141026: \"安泽县\",\n  141027: \"浮山县\",\n  141028: \"吉县\",\n  141029: \"乡宁县\",\n  141030: \"大宁县\",\n  141031: \"隰县\",\n  141032: \"永和县\",\n  141033: \"蒲县\",\n  141034: \"汾西县\",\n  141081: \"侯马市\",\n  141082: \"霍州市\",\n  141100: \"吕梁市\",\n  141101: \"市辖区\",\n  141102: \"离石区\",\n  141121: \"文水县\",\n  141122: \"交城县\",\n  141123: \"兴县\",\n  141124: \"临县\",\n  141125: \"柳林县\",\n  141126: \"石楼县\",\n  141127: \"岚县\",\n  141128: \"方山县\",\n  141129: \"中阳县\",\n  141130: \"交口县\",\n  141181: \"孝义市\",\n  141182: \"汾阳市\",\n  15e4: \"内蒙古自治区\",\n  150100: \"呼和浩特市\",\n  150101: \"市辖区\",\n  150102: \"新城区\",\n  150103: \"回民区\",\n  150104: \"玉泉区\",\n  150105: \"赛罕区\",\n  150121: \"土默特左旗\",\n  150122: \"托克托县\",\n  150123: \"和林格尔县\",\n  150124: \"清水河县\",\n  150125: \"武川县\",\n  150200: \"包头市\",\n  150201: \"市辖区\",\n  150202: \"东河区\",\n  150203: \"昆都仑区\",\n  150204: \"青山区\",\n  150205: \"石拐区\",\n  150206: \"白云鄂博矿区\",\n  150207: \"九原区\",\n  150221: \"土默特右旗\",\n  150222: \"固阳县\",\n  150223: \"达尔罕茂明安联合旗\",\n  150300: \"乌海市\",\n  150301: \"市辖区\",\n  150302: \"海勃湾区\",\n  150303: \"海南区\",\n  150304: \"乌达区\",\n  150400: \"赤峰市\",\n  150401: \"市辖区\",\n  150402: \"红山区\",\n  150403: \"元宝山区\",\n  150404: \"松山区\",\n  150421: \"阿鲁科尔沁旗\",\n  150422: \"巴林左旗\",\n  150423: \"巴林右旗\",\n  150424: \"林西县\",\n  150425: \"克什克腾旗\",\n  150426: \"翁牛特旗\",\n  150428: \"喀喇沁旗\",\n  150429: \"宁城县\",\n  150430: \"敖汉旗\",\n  150500: \"通辽市\",\n  150501: \"市辖区\",\n  150502: \"科尔沁区\",\n  150521: \"科尔沁左翼中旗\",\n  150522: \"科尔沁左翼后旗\",\n  150523: \"开鲁县\",\n  150524: \"库伦旗\",\n  150525: \"奈曼旗\",\n  150526: \"扎鲁特旗\",\n  150581: \"霍林郭勒市\",\n  150600: \"鄂尔多斯市\",\n  150601: \"市辖区\",\n  150602: \"东胜区\",\n  150603: \"康巴什区\",\n  150621: \"达拉特旗\",\n  150622: \"准格尔旗\",\n  150623: \"鄂托克前旗\",\n  150624: \"鄂托克旗\",\n  150625: \"杭锦旗\",\n  150626: \"乌审旗\",\n  150627: \"伊金霍洛旗\",\n  150700: \"呼伦贝尔市\",\n  150701: \"市辖区\",\n  150702: \"海拉尔区\",\n  150703: \"扎赉诺尔区\",\n  150721: \"阿荣旗\",\n  150722: \"莫力达瓦达斡尔族自治旗\",\n  150723: \"鄂伦春自治旗\",\n  150724: \"鄂温克族自治旗\",\n  150725: \"陈巴尔虎旗\",\n  150726: \"新巴尔虎左旗\",\n  150727: \"新巴尔虎右旗\",\n  150781: \"满洲里市\",\n  150782: \"牙克石市\",\n  150783: \"扎兰屯市\",\n  150784: \"额尔古纳市\",\n  150785: \"根河市\",\n  150800: \"巴彦淖尔市\",\n  150801: \"市辖区\",\n  150802: \"临河区\",\n  150821: \"五原县\",\n  150822: \"磴口县\",\n  150823: \"乌拉特前旗\",\n  150824: \"乌拉特中旗\",\n  150825: \"乌拉特后旗\",\n  150826: \"杭锦后旗\",\n  150900: \"乌兰察布市\",\n  150901: \"市辖区\",\n  150902: \"集宁区\",\n  150921: \"卓资县\",\n  150922: \"化德县\",\n  150923: \"商都县\",\n  150924: \"兴和县\",\n  150925: \"凉城县\",\n  150926: \"察哈尔右翼前旗\",\n  150927: \"察哈尔右翼中旗\",\n  150928: \"察哈尔右翼后旗\",\n  150929: \"四子王旗\",\n  150981: \"丰镇市\",\n  152200: \"兴安盟\",\n  152201: \"乌兰浩特市\",\n  152202: \"阿尔山市\",\n  152221: \"科尔沁右翼前旗\",\n  152222: \"科尔沁右翼中旗\",\n  152223: \"扎赉特旗\",\n  152224: \"突泉县\",\n  152500: \"锡林郭勒盟\",\n  152501: \"二连浩特市\",\n  152502: \"锡林浩特市\",\n  152522: \"阿巴嘎旗\",\n  152523: \"苏尼特左旗\",\n  152524: \"苏尼特右旗\",\n  152525: \"东乌珠穆沁旗\",\n  152526: \"西乌珠穆沁旗\",\n  152527: \"太仆寺旗\",\n  152528: \"镶黄旗\",\n  152529: \"正镶白旗\",\n  152530: \"正蓝旗\",\n  152531: \"多伦县\",\n  152900: \"阿拉善盟\",\n  152921: \"阿拉善左旗\",\n  152922: \"阿拉善右旗\",\n  152923: \"额济纳旗\",\n  21e4: \"辽宁省\",\n  210100: \"沈阳市\",\n  210101: \"市辖区\",\n  210102: \"和平区\",\n  210103: \"沈河区\",\n  210104: \"大东区\",\n  210105: \"皇姑区\",\n  210106: \"铁西区\",\n  210111: \"苏家屯区\",\n  210112: \"浑南区\",\n  210113: \"沈北新区\",\n  210114: \"于洪区\",\n  210115: \"辽中区\",\n  210123: \"康平县\",\n  210124: \"法库县\",\n  210181: \"新民市\",\n  210200: \"大连市\",\n  210201: \"市辖区\",\n  210202: \"中山区\",\n  210203: \"西岗区\",\n  210204: \"沙河口区\",\n  210211: \"甘井子区\",\n  210212: \"旅顺口区\",\n  210213: \"金州区\",\n  210214: \"普兰店区\",\n  210224: \"长海县\",\n  210281: \"瓦房店市\",\n  210283: \"庄河市\",\n  210300: \"鞍山市\",\n  210301: \"市辖区\",\n  210302: \"铁东区\",\n  210303: \"铁西区\",\n  210304: \"立山区\",\n  210311: \"千山区\",\n  210321: \"台安县\",\n  210323: \"岫岩满族自治县\",\n  210381: \"海城市\",\n  210400: \"抚顺市\",\n  210401: \"市辖区\",\n  210402: \"新抚区\",\n  210403: \"东洲区\",\n  210404: \"望花区\",\n  210411: \"顺城区\",\n  210421: \"抚顺县\",\n  210422: \"新宾满族自治县\",\n  210423: \"清原满族自治县\",\n  210500: \"本溪市\",\n  210501: \"市辖区\",\n  210502: \"平山区\",\n  210503: \"溪湖区\",\n  210504: \"明山区\",\n  210505: \"南芬区\",\n  210521: \"本溪满族自治县\",\n  210522: \"桓仁满族自治县\",\n  210600: \"丹东市\",\n  210601: \"市辖区\",\n  210602: \"元宝区\",\n  210603: \"振兴区\",\n  210604: \"振安区\",\n  210624: \"宽甸满族自治县\",\n  210681: \"东港市\",\n  210682: \"凤城市\",\n  210700: \"锦州市\",\n  210701: \"市辖区\",\n  210702: \"古塔区\",\n  210703: \"凌河区\",\n  210711: \"太和区\",\n  210726: \"黑山县\",\n  210727: \"义县\",\n  210781: \"凌海市\",\n  210782: \"北镇市\",\n  210800: \"营口市\",\n  210801: \"市辖区\",\n  210802: \"站前区\",\n  210803: \"西市区\",\n  210804: \"鲅鱼圈区\",\n  210811: \"老边区\",\n  210881: \"盖州市\",\n  210882: \"大石桥市\",\n  210900: \"阜新市\",\n  210901: \"市辖区\",\n  210902: \"海州区\",\n  210903: \"新邱区\",\n  210904: \"太平区\",\n  210905: \"清河门区\",\n  210911: \"细河区\",\n  210921: \"阜新蒙古族自治县\",\n  210922: \"彰武县\",\n  211e3: \"辽阳市\",\n  211001: \"市辖区\",\n  211002: \"白塔区\",\n  211003: \"文圣区\",\n  211004: \"宏伟区\",\n  211005: \"弓长岭区\",\n  211011: \"太子河区\",\n  211021: \"辽阳县\",\n  211081: \"灯塔市\",\n  211100: \"盘锦市\",\n  211101: \"市辖区\",\n  211102: \"双台子区\",\n  211103: \"兴隆台区\",\n  211104: \"大洼区\",\n  211122: \"盘山县\",\n  211200: \"铁岭市\",\n  211201: \"市辖区\",\n  211202: \"银州区\",\n  211204: \"清河区\",\n  211221: \"铁岭县\",\n  211223: \"西丰县\",\n  211224: \"昌图县\",\n  211281: \"调兵山市\",\n  211282: \"开原市\",\n  211300: \"朝阳市\",\n  211301: \"市辖区\",\n  211302: \"双塔区\",\n  211303: \"龙城区\",\n  211321: \"朝阳县\",\n  211322: \"建平县\",\n  211324: \"喀喇沁左翼蒙古族自治县\",\n  211381: \"北票市\",\n  211382: \"凌源市\",\n  211400: \"葫芦岛市\",\n  211401: \"市辖区\",\n  211402: \"连山区\",\n  211403: \"龙港区\",\n  211404: \"南票区\",\n  211421: \"绥中县\",\n  211422: \"建昌县\",\n  211481: \"兴城市\",\n  22e4: \"吉林省\",\n  220100: \"长春市\",\n  220101: \"市辖区\",\n  220102: \"南关区\",\n  220103: \"宽城区\",\n  220104: \"朝阳区\",\n  220105: \"二道区\",\n  220106: \"绿园区\",\n  220112: \"双阳区\",\n  220113: \"九台区\",\n  220122: \"农安县\",\n  220182: \"榆树市\",\n  220183: \"德惠市\",\n  220200: \"吉林市\",\n  220201: \"市辖区\",\n  220202: \"昌邑区\",\n  220203: \"龙潭区\",\n  220204: \"船营区\",\n  220211: \"丰满区\",\n  220221: \"永吉县\",\n  220281: \"蛟河市\",\n  220282: \"桦甸市\",\n  220283: \"舒兰市\",\n  220284: \"磐石市\",\n  220300: \"四平市\",\n  220301: \"市辖区\",\n  220302: \"铁西区\",\n  220303: \"铁东区\",\n  220322: \"梨树县\",\n  220323: \"伊通满族自治县\",\n  220381: \"公主岭市\",\n  220382: \"双辽市\",\n  220400: \"辽源市\",\n  220401: \"市辖区\",\n  220402: \"龙山区\",\n  220403: \"西安区\",\n  220421: \"东丰县\",\n  220422: \"东辽县\",\n  220500: \"通化市\",\n  220501: \"市辖区\",\n  220502: \"东昌区\",\n  220503: \"二道江区\",\n  220521: \"通化县\",\n  220523: \"辉南县\",\n  220524: \"柳河县\",\n  220581: \"梅河口市\",\n  220582: \"集安市\",\n  220600: \"白山市\",\n  220601: \"市辖区\",\n  220602: \"浑江区\",\n  220605: \"江源区\",\n  220621: \"抚松县\",\n  220622: \"靖宇县\",\n  220623: \"长白朝鲜族自治县\",\n  220681: \"临江市\",\n  220700: \"松原市\",\n  220701: \"市辖区\",\n  220702: \"宁江区\",\n  220721: \"前郭尔罗斯蒙古族自治县\",\n  220722: \"长岭县\",\n  220723: \"乾安县\",\n  220781: \"扶余市\",\n  220800: \"白城市\",\n  220801: \"市辖区\",\n  220802: \"洮北区\",\n  220821: \"镇赉县\",\n  220822: \"通榆县\",\n  220881: \"洮南市\",\n  220882: \"大安市\",\n  222400: \"延边朝鲜族自治州\",\n  222401: \"延吉市\",\n  222402: \"图们市\",\n  222403: \"敦化市\",\n  222404: \"珲春市\",\n  222405: \"龙井市\",\n  222406: \"和龙市\",\n  222424: \"汪清县\",\n  222426: \"安图县\",\n  23e4: \"黑龙江省\",\n  230100: \"哈尔滨市\",\n  230101: \"市辖区\",\n  230102: \"道里区\",\n  230103: \"南岗区\",\n  230104: \"道外区\",\n  230108: \"平房区\",\n  230109: \"松北区\",\n  230110: \"香坊区\",\n  230111: \"呼兰区\",\n  230112: \"阿城区\",\n  230113: \"双城区\",\n  230123: \"依兰县\",\n  230124: \"方正县\",\n  230125: \"宾县\",\n  230126: \"巴彦县\",\n  230127: \"木兰县\",\n  230128: \"通河县\",\n  230129: \"延寿县\",\n  230183: \"尚志市\",\n  230184: \"五常市\",\n  230200: \"齐齐哈尔市\",\n  230201: \"市辖区\",\n  230202: \"龙沙区\",\n  230203: \"建华区\",\n  230204: \"铁锋区\",\n  230205: \"昂昂溪区\",\n  230206: \"富拉尔基区\",\n  230207: \"碾子山区\",\n  230208: \"梅里斯达斡尔族区\",\n  230221: \"龙江县\",\n  230223: \"依安县\",\n  230224: \"泰来县\",\n  230225: \"甘南县\",\n  230227: \"富裕县\",\n  230229: \"克山县\",\n  230230: \"克东县\",\n  230231: \"拜泉县\",\n  230281: \"讷河市\",\n  230300: \"鸡西市\",\n  230301: \"市辖区\",\n  230302: \"鸡冠区\",\n  230303: \"恒山区\",\n  230304: \"滴道区\",\n  230305: \"梨树区\",\n  230306: \"城子河区\",\n  230307: \"麻山区\",\n  230321: \"鸡东县\",\n  230381: \"虎林市\",\n  230382: \"密山市\",\n  230400: \"鹤岗市\",\n  230401: \"市辖区\",\n  230402: \"向阳区\",\n  230403: \"工农区\",\n  230404: \"南山区\",\n  230405: \"兴安区\",\n  230406: \"东山区\",\n  230407: \"兴山区\",\n  230421: \"萝北县\",\n  230422: \"绥滨县\",\n  230500: \"双鸭山市\",\n  230501: \"市辖区\",\n  230502: \"尖山区\",\n  230503: \"岭东区\",\n  230505: \"四方台区\",\n  230506: \"宝山区\",\n  230521: \"集贤县\",\n  230522: \"友谊县\",\n  230523: \"宝清县\",\n  230524: \"饶河县\",\n  230600: \"大庆市\",\n  230601: \"市辖区\",\n  230602: \"萨尔图区\",\n  230603: \"龙凤区\",\n  230604: \"让胡路区\",\n  230605: \"红岗区\",\n  230606: \"大同区\",\n  230621: \"肇州县\",\n  230622: \"肇源县\",\n  230623: \"林甸县\",\n  230624: \"杜尔伯特蒙古族自治县\",\n  230700: \"伊春市\",\n  230701: \"市辖区\",\n  230702: \"伊春区\",\n  230703: \"南岔区\",\n  230704: \"友好区\",\n  230705: \"西林区\",\n  230706: \"翠峦区\",\n  230707: \"新青区\",\n  230708: \"美溪区\",\n  230709: \"金山屯区\",\n  230710: \"五营区\",\n  230711: \"乌马河区\",\n  230712: \"汤旺河区\",\n  230713: \"带岭区\",\n  230714: \"乌伊岭区\",\n  230715: \"红星区\",\n  230716: \"上甘岭区\",\n  230722: \"嘉荫县\",\n  230781: \"铁力市\",\n  230800: \"佳木斯市\",\n  230801: \"市辖区\",\n  230803: \"向阳区\",\n  230804: \"前进区\",\n  230805: \"东风区\",\n  230811: \"郊区\",\n  230822: \"桦南县\",\n  230826: \"桦川县\",\n  230828: \"汤原县\",\n  230881: \"同江市\",\n  230882: \"富锦市\",\n  230883: \"抚远市\",\n  230900: \"七台河市\",\n  230901: \"市辖区\",\n  230902: \"新兴区\",\n  230903: \"桃山区\",\n  230904: \"茄子河区\",\n  230921: \"勃利县\",\n  231e3: \"牡丹江市\",\n  231001: \"市辖区\",\n  231002: \"东安区\",\n  231003: \"阳明区\",\n  231004: \"爱民区\",\n  231005: \"西安区\",\n  231025: \"林口县\",\n  231081: \"绥芬河市\",\n  231083: \"海林市\",\n  231084: \"宁安市\",\n  231085: \"穆棱市\",\n  231086: \"东宁市\",\n  231100: \"黑河市\",\n  231101: \"市辖区\",\n  231102: \"爱辉区\",\n  231121: \"嫩江县\",\n  231123: \"逊克县\",\n  231124: \"孙吴县\",\n  231181: \"北安市\",\n  231182: \"五大连池市\",\n  231200: \"绥化市\",\n  231201: \"市辖区\",\n  231202: \"北林区\",\n  231221: \"望奎县\",\n  231222: \"兰西县\",\n  231223: \"青冈县\",\n  231224: \"庆安县\",\n  231225: \"明水县\",\n  231226: \"绥棱县\",\n  231281: \"安达市\",\n  231282: \"肇东市\",\n  231283: \"海伦市\",\n  232700: \"大兴安岭地区\",\n  232721: \"呼玛县\",\n  232722: \"塔河县\",\n  232723: \"漠河县\",\n  31e4: \"上海市\",\n  310100: \"市辖区\",\n  310101: \"黄浦区\",\n  310104: \"徐汇区\",\n  310105: \"长宁区\",\n  310106: \"静安区\",\n  310107: \"普陀区\",\n  310109: \"虹口区\",\n  310110: \"杨浦区\",\n  310112: \"闵行区\",\n  310113: \"宝山区\",\n  310114: \"嘉定区\",\n  310115: \"浦东新区\",\n  310116: \"金山区\",\n  310117: \"松江区\",\n  310118: \"青浦区\",\n  310120: \"奉贤区\",\n  310151: \"崇明区\",\n  32e4: \"江苏省\",\n  320100: \"南京市\",\n  320101: \"市辖区\",\n  320102: \"玄武区\",\n  320104: \"秦淮区\",\n  320105: \"建邺区\",\n  320106: \"鼓楼区\",\n  320111: \"浦口区\",\n  320113: \"栖霞区\",\n  320114: \"雨花台区\",\n  320115: \"江宁区\",\n  320116: \"六合区\",\n  320117: \"溧水区\",\n  320118: \"高淳区\",\n  320200: \"无锡市\",\n  320201: \"市辖区\",\n  320205: \"锡山区\",\n  320206: \"惠山区\",\n  320211: \"滨湖区\",\n  320213: \"梁溪区\",\n  320214: \"新吴区\",\n  320281: \"江阴市\",\n  320282: \"宜兴市\",\n  320300: \"徐州市\",\n  320301: \"市辖区\",\n  320302: \"鼓楼区\",\n  320303: \"云龙区\",\n  320305: \"贾汪区\",\n  320311: \"泉山区\",\n  320312: \"铜山区\",\n  320321: \"丰县\",\n  320322: \"沛县\",\n  320324: \"睢宁县\",\n  320381: \"新沂市\",\n  320382: \"邳州市\",\n  320400: \"常州市\",\n  320401: \"市辖区\",\n  320402: \"天宁区\",\n  320404: \"钟楼区\",\n  320411: \"新北区\",\n  320412: \"武进区\",\n  320413: \"金坛区\",\n  320481: \"溧阳市\",\n  320500: \"苏州市\",\n  320501: \"市辖区\",\n  320505: \"虎丘区\",\n  320506: \"吴中区\",\n  320507: \"相城区\",\n  320508: \"姑苏区\",\n  320509: \"吴江区\",\n  320581: \"常熟市\",\n  320582: \"张家港市\",\n  320583: \"昆山市\",\n  320585: \"太仓市\",\n  320594: \"苏州工业园区\",\n  320600: \"南通市\",\n  320601: \"市辖区\",\n  320602: \"崇川区\",\n  320611: \"港闸区\",\n  320612: \"通州区\",\n  320621: \"海安县\",\n  320623: \"如东县\",\n  320681: \"启东市\",\n  320682: \"如皋市\",\n  320684: \"海门市\",\n  320700: \"连云港市\",\n  320701: \"市辖区\",\n  320703: \"连云区\",\n  320706: \"海州区\",\n  320707: \"赣榆区\",\n  320722: \"东海县\",\n  320723: \"灌云县\",\n  320724: \"灌南县\",\n  320800: \"淮安市\",\n  320801: \"市辖区\",\n  320803: \"淮安区\",\n  320804: \"淮阴区\",\n  320812: \"清江浦区\",\n  320813: \"洪泽区\",\n  320826: \"涟水县\",\n  320830: \"盱眙县\",\n  320831: \"金湖县\",\n  320900: \"盐城市\",\n  320901: \"市辖区\",\n  320902: \"亭湖区\",\n  320903: \"盐都区\",\n  320904: \"大丰区\",\n  320921: \"响水县\",\n  320922: \"滨海县\",\n  320923: \"阜宁县\",\n  320924: \"射阳县\",\n  320925: \"建湖县\",\n  320981: \"东台市\",\n  321e3: \"扬州市\",\n  321001: \"市辖区\",\n  321002: \"广陵区\",\n  321003: \"邗江区\",\n  321012: \"江都区\",\n  321023: \"宝应县\",\n  321081: \"仪征市\",\n  321084: \"高邮市\",\n  321100: \"镇江市\",\n  321101: \"市辖区\",\n  321102: \"京口区\",\n  321111: \"润州区\",\n  321112: \"丹徒区\",\n  321181: \"丹阳市\",\n  321182: \"扬中市\",\n  321183: \"句容市\",\n  321200: \"泰州市\",\n  321201: \"市辖区\",\n  321202: \"海陵区\",\n  321203: \"高港区\",\n  321204: \"姜堰区\",\n  321281: \"兴化市\",\n  321282: \"靖江市\",\n  321283: \"泰兴市\",\n  321300: \"宿迁市\",\n  321301: \"市辖区\",\n  321302: \"宿城区\",\n  321311: \"宿豫区\",\n  321322: \"沭阳县\",\n  321323: \"泗阳县\",\n  321324: \"泗洪县\",\n  33e4: \"浙江省\",\n  330100: \"杭州市\",\n  330101: \"市辖区\",\n  330102: \"上城区\",\n  330103: \"下城区\",\n  330104: \"江干区\",\n  330105: \"拱墅区\",\n  330106: \"西湖区\",\n  330108: \"滨江区\",\n  330109: \"萧山区\",\n  330110: \"余杭区\",\n  330111: \"富阳区\",\n  330122: \"桐庐县\",\n  330127: \"淳安县\",\n  330182: \"建德市\",\n  330185: \"临安市\",\n  330200: \"宁波市\",\n  330201: \"市辖区\",\n  330203: \"海曙区\",\n  330204: \"江东区\",\n  330205: \"江北区\",\n  330206: \"北仑区\",\n  330211: \"镇海区\",\n  330212: \"鄞州区\",\n  330225: \"象山县\",\n  330226: \"宁海县\",\n  330281: \"余姚市\",\n  330282: \"慈溪市\",\n  330283: \"奉化市\",\n  330300: \"温州市\",\n  330301: \"市辖区\",\n  330302: \"鹿城区\",\n  330303: \"龙湾区\",\n  330304: \"瓯海区\",\n  330305: \"洞头区\",\n  330324: \"永嘉县\",\n  330326: \"平阳县\",\n  330327: \"苍南县\",\n  330328: \"文成县\",\n  330329: \"泰顺县\",\n  330381: \"瑞安市\",\n  330382: \"乐清市\",\n  330400: \"嘉兴市\",\n  330401: \"市辖区\",\n  330402: \"南湖区\",\n  330411: \"秀洲区\",\n  330421: \"嘉善县\",\n  330424: \"海盐县\",\n  330481: \"海宁市\",\n  330482: \"平湖市\",\n  330483: \"桐乡市\",\n  330500: \"湖州市\",\n  330501: \"市辖区\",\n  330502: \"吴兴区\",\n  330503: \"南浔区\",\n  330521: \"德清县\",\n  330522: \"长兴县\",\n  330523: \"安吉县\",\n  330600: \"绍兴市\",\n  330601: \"市辖区\",\n  330602: \"越城区\",\n  330603: \"柯桥区\",\n  330604: \"上虞区\",\n  330624: \"新昌县\",\n  330681: \"诸暨市\",\n  330683: \"嵊州市\",\n  330700: \"金华市\",\n  330701: \"市辖区\",\n  330702: \"婺城区\",\n  330703: \"金东区\",\n  330723: \"武义县\",\n  330726: \"浦江县\",\n  330727: \"磐安县\",\n  330781: \"兰溪市\",\n  330782: \"义乌市\",\n  330783: \"东阳市\",\n  330784: \"永康市\",\n  330800: \"衢州市\",\n  330801: \"市辖区\",\n  330802: \"柯城区\",\n  330803: \"衢江区\",\n  330822: \"常山县\",\n  330824: \"开化县\",\n  330825: \"龙游县\",\n  330881: \"江山市\",\n  330900: \"舟山市\",\n  330901: \"市辖区\",\n  330902: \"定海区\",\n  330903: \"普陀区\",\n  330921: \"岱山县\",\n  330922: \"嵊泗县\",\n  331e3: \"台州市\",\n  331001: \"市辖区\",\n  331002: \"椒江区\",\n  331003: \"黄岩区\",\n  331004: \"路桥区\",\n  331021: \"玉环县\",\n  331022: \"三门县\",\n  331023: \"天台县\",\n  331024: \"仙居县\",\n  331081: \"温岭市\",\n  331082: \"临海市\",\n  331100: \"丽水市\",\n  331101: \"市辖区\",\n  331102: \"莲都区\",\n  331121: \"青田县\",\n  331122: \"缙云县\",\n  331123: \"遂昌县\",\n  331124: \"松阳县\",\n  331125: \"云和县\",\n  331126: \"庆元县\",\n  331127: \"景宁畲族自治县\",\n  331181: \"龙泉市\",\n  34e4: \"安徽省\",\n  340100: \"合肥市\",\n  340101: \"市辖区\",\n  340102: \"瑶海区\",\n  340103: \"庐阳区\",\n  340104: \"蜀山区\",\n  340111: \"包河区\",\n  340121: \"长丰县\",\n  340122: \"肥东县\",\n  340123: \"肥西县\",\n  340124: \"庐江县\",\n  340181: \"巢湖市\",\n  340200: \"芜湖市\",\n  340201: \"市辖区\",\n  340202: \"镜湖区\",\n  340203: \"弋江区\",\n  340207: \"鸠江区\",\n  340208: \"三山区\",\n  340221: \"芜湖县\",\n  340222: \"繁昌县\",\n  340223: \"南陵县\",\n  340225: \"无为县\",\n  340300: \"蚌埠市\",\n  340301: \"市辖区\",\n  340302: \"龙子湖区\",\n  340303: \"蚌山区\",\n  340304: \"禹会区\",\n  340311: \"淮上区\",\n  340321: \"怀远县\",\n  340322: \"五河县\",\n  340323: \"固镇县\",\n  340400: \"淮南市\",\n  340401: \"市辖区\",\n  340402: \"大通区\",\n  340403: \"田家庵区\",\n  340404: \"谢家集区\",\n  340405: \"八公山区\",\n  340406: \"潘集区\",\n  340421: \"凤台县\",\n  340422: \"寿县\",\n  340500: \"马鞍山市\",\n  340501: \"市辖区\",\n  340503: \"花山区\",\n  340504: \"雨山区\",\n  340506: \"博望区\",\n  340521: \"当涂县\",\n  340522: \"含山县\",\n  340523: \"和县\",\n  340600: \"淮北市\",\n  340601: \"市辖区\",\n  340602: \"杜集区\",\n  340603: \"相山区\",\n  340604: \"烈山区\",\n  340621: \"濉溪县\",\n  340700: \"铜陵市\",\n  340701: \"市辖区\",\n  340705: \"铜官区\",\n  340706: \"义安区\",\n  340711: \"郊区\",\n  340722: \"枞阳县\",\n  340800: \"安庆市\",\n  340801: \"市辖区\",\n  340802: \"迎江区\",\n  340803: \"大观区\",\n  340811: \"宜秀区\",\n  340822: \"怀宁县\",\n  340824: \"潜山县\",\n  340825: \"太湖县\",\n  340826: \"宿松县\",\n  340827: \"望江县\",\n  340828: \"岳西县\",\n  340881: \"桐城市\",\n  341e3: \"黄山市\",\n  341001: \"市辖区\",\n  341002: \"屯溪区\",\n  341003: \"黄山区\",\n  341004: \"徽州区\",\n  341021: \"歙县\",\n  341022: \"休宁县\",\n  341023: \"黟县\",\n  341024: \"祁门县\",\n  341100: \"滁州市\",\n  341101: \"市辖区\",\n  341102: \"琅琊区\",\n  341103: \"南谯区\",\n  341122: \"来安县\",\n  341124: \"全椒县\",\n  341125: \"定远县\",\n  341126: \"凤阳县\",\n  341181: \"天长市\",\n  341182: \"明光市\",\n  341200: \"阜阳市\",\n  341201: \"市辖区\",\n  341202: \"颍州区\",\n  341203: \"颍东区\",\n  341204: \"颍泉区\",\n  341221: \"临泉县\",\n  341222: \"太和县\",\n  341225: \"阜南县\",\n  341226: \"颍上县\",\n  341282: \"界首市\",\n  341300: \"宿州市\",\n  341301: \"市辖区\",\n  341302: \"埇桥区\",\n  341321: \"砀山县\",\n  341322: \"萧县\",\n  341323: \"灵璧县\",\n  341324: \"泗县\",\n  341500: \"六安市\",\n  341501: \"市辖区\",\n  341502: \"金安区\",\n  341503: \"裕安区\",\n  341504: \"叶集区\",\n  341522: \"霍邱县\",\n  341523: \"舒城县\",\n  341524: \"金寨县\",\n  341525: \"霍山县\",\n  341600: \"亳州市\",\n  341601: \"市辖区\",\n  341602: \"谯城区\",\n  341621: \"涡阳县\",\n  341622: \"蒙城县\",\n  341623: \"利辛县\",\n  341700: \"池州市\",\n  341701: \"市辖区\",\n  341702: \"贵池区\",\n  341721: \"东至县\",\n  341722: \"石台县\",\n  341723: \"青阳县\",\n  341800: \"宣城市\",\n  341801: \"市辖区\",\n  341802: \"宣州区\",\n  341821: \"郎溪县\",\n  341822: \"广德县\",\n  341823: \"泾县\",\n  341824: \"绩溪县\",\n  341825: \"旌德县\",\n  341881: \"宁国市\",\n  35e4: \"福建省\",\n  350100: \"福州市\",\n  350101: \"市辖区\",\n  350102: \"鼓楼区\",\n  350103: \"台江区\",\n  350104: \"仓山区\",\n  350105: \"马尾区\",\n  350111: \"晋安区\",\n  350121: \"闽侯县\",\n  350122: \"连江县\",\n  350123: \"罗源县\",\n  350124: \"闽清县\",\n  350125: \"永泰县\",\n  350128: \"平潭县\",\n  350181: \"福清市\",\n  350182: \"长乐市\",\n  350200: \"厦门市\",\n  350201: \"市辖区\",\n  350203: \"思明区\",\n  350205: \"海沧区\",\n  350206: \"湖里区\",\n  350211: \"集美区\",\n  350212: \"同安区\",\n  350213: \"翔安区\",\n  350300: \"莆田市\",\n  350301: \"市辖区\",\n  350302: \"城厢区\",\n  350303: \"涵江区\",\n  350304: \"荔城区\",\n  350305: \"秀屿区\",\n  350322: \"仙游县\",\n  350400: \"三明市\",\n  350401: \"市辖区\",\n  350402: \"梅列区\",\n  350403: \"三元区\",\n  350421: \"明溪县\",\n  350423: \"清流县\",\n  350424: \"宁化县\",\n  350425: \"大田县\",\n  350426: \"尤溪县\",\n  350427: \"沙县\",\n  350428: \"将乐县\",\n  350429: \"泰宁县\",\n  350430: \"建宁县\",\n  350481: \"永安市\",\n  350500: \"泉州市\",\n  350501: \"市辖区\",\n  350502: \"鲤城区\",\n  350503: \"丰泽区\",\n  350504: \"洛江区\",\n  350505: \"泉港区\",\n  350521: \"惠安县\",\n  350524: \"安溪县\",\n  350525: \"永春县\",\n  350526: \"德化县\",\n  350527: \"金门县\",\n  350581: \"石狮市\",\n  350582: \"晋江市\",\n  350583: \"南安市\",\n  350600: \"漳州市\",\n  350601: \"市辖区\",\n  350602: \"芗城区\",\n  350603: \"龙文区\",\n  350622: \"云霄县\",\n  350623: \"漳浦县\",\n  350624: \"诏安县\",\n  350625: \"长泰县\",\n  350626: \"东山县\",\n  350627: \"南靖县\",\n  350628: \"平和县\",\n  350629: \"华安县\",\n  350681: \"龙海市\",\n  350700: \"南平市\",\n  350701: \"市辖区\",\n  350702: \"延平区\",\n  350703: \"建阳区\",\n  350721: \"顺昌县\",\n  350722: \"浦城县\",\n  350723: \"光泽县\",\n  350724: \"松溪县\",\n  350725: \"政和县\",\n  350781: \"邵武市\",\n  350782: \"武夷山市\",\n  350783: \"建瓯市\",\n  350800: \"龙岩市\",\n  350801: \"市辖区\",\n  350802: \"新罗区\",\n  350803: \"永定区\",\n  350821: \"长汀县\",\n  350823: \"上杭县\",\n  350824: \"武平县\",\n  350825: \"连城县\",\n  350881: \"漳平市\",\n  350900: \"宁德市\",\n  350901: \"市辖区\",\n  350902: \"蕉城区\",\n  350921: \"霞浦县\",\n  350922: \"古田县\",\n  350923: \"屏南县\",\n  350924: \"寿宁县\",\n  350925: \"周宁县\",\n  350926: \"柘荣县\",\n  350981: \"福安市\",\n  350982: \"福鼎市\",\n  36e4: \"江西省\",\n  360100: \"南昌市\",\n  360101: \"市辖区\",\n  360102: \"东湖区\",\n  360103: \"西湖区\",\n  360104: \"青云谱区\",\n  360105: \"湾里区\",\n  360111: \"青山湖区\",\n  360112: \"新建区\",\n  360121: \"南昌县\",\n  360123: \"安义县\",\n  360124: \"进贤县\",\n  360200: \"景德镇市\",\n  360201: \"市辖区\",\n  360202: \"昌江区\",\n  360203: \"珠山区\",\n  360222: \"浮梁县\",\n  360281: \"乐平市\",\n  360300: \"萍乡市\",\n  360301: \"市辖区\",\n  360302: \"安源区\",\n  360313: \"湘东区\",\n  360321: \"莲花县\",\n  360322: \"上栗县\",\n  360323: \"芦溪县\",\n  360400: \"九江市\",\n  360401: \"市辖区\",\n  360402: \"濂溪区\",\n  360403: \"浔阳区\",\n  360421: \"九江县\",\n  360423: \"武宁县\",\n  360424: \"修水县\",\n  360425: \"永修县\",\n  360426: \"德安县\",\n  360428: \"都昌县\",\n  360429: \"湖口县\",\n  360430: \"彭泽县\",\n  360481: \"瑞昌市\",\n  360482: \"共青城市\",\n  360483: \"庐山市\",\n  360500: \"新余市\",\n  360501: \"市辖区\",\n  360502: \"渝水区\",\n  360521: \"分宜县\",\n  360600: \"鹰潭市\",\n  360601: \"市辖区\",\n  360602: \"月湖区\",\n  360622: \"余江县\",\n  360681: \"贵溪市\",\n  360700: \"赣州市\",\n  360701: \"市辖区\",\n  360702: \"章贡区\",\n  360703: \"南康区\",\n  360721: \"赣县\",\n  360722: \"信丰县\",\n  360723: \"大余县\",\n  360724: \"上犹县\",\n  360725: \"崇义县\",\n  360726: \"安远县\",\n  360727: \"龙南县\",\n  360728: \"定南县\",\n  360729: \"全南县\",\n  360730: \"宁都县\",\n  360731: \"于都县\",\n  360732: \"兴国县\",\n  360733: \"会昌县\",\n  360734: \"寻乌县\",\n  360735: \"石城县\",\n  360781: \"瑞金市\",\n  360800: \"吉安市\",\n  360801: \"市辖区\",\n  360802: \"吉州区\",\n  360803: \"青原区\",\n  360821: \"吉安县\",\n  360822: \"吉水县\",\n  360823: \"峡江县\",\n  360824: \"新干县\",\n  360825: \"永丰县\",\n  360826: \"泰和县\",\n  360827: \"遂川县\",\n  360828: \"万安县\",\n  360829: \"安福县\",\n  360830: \"永新县\",\n  360881: \"井冈山市\",\n  360900: \"宜春市\",\n  360901: \"市辖区\",\n  360902: \"袁州区\",\n  360921: \"奉新县\",\n  360922: \"万载县\",\n  360923: \"上高县\",\n  360924: \"宜丰县\",\n  360925: \"靖安县\",\n  360926: \"铜鼓县\",\n  360981: \"丰城市\",\n  360982: \"樟树市\",\n  360983: \"高安市\",\n  361e3: \"抚州市\",\n  361001: \"市辖区\",\n  361002: \"临川区\",\n  361021: \"南城县\",\n  361022: \"黎川县\",\n  361023: \"南丰县\",\n  361024: \"崇仁县\",\n  361025: \"乐安县\",\n  361026: \"宜黄县\",\n  361027: \"金溪县\",\n  361028: \"资溪县\",\n  361029: \"东乡县\",\n  361030: \"广昌县\",\n  361100: \"上饶市\",\n  361101: \"市辖区\",\n  361102: \"信州区\",\n  361103: \"广丰区\",\n  361121: \"上饶县\",\n  361123: \"玉山县\",\n  361124: \"铅山县\",\n  361125: \"横峰县\",\n  361126: \"弋阳县\",\n  361127: \"余干县\",\n  361128: \"鄱阳县\",\n  361129: \"万年县\",\n  361130: \"婺源县\",\n  361181: \"德兴市\",\n  37e4: \"山东省\",\n  370100: \"济南市\",\n  370101: \"市辖区\",\n  370102: \"历下区\",\n  370103: \"市中区\",\n  370104: \"槐荫区\",\n  370105: \"天桥区\",\n  370112: \"历城区\",\n  370113: \"长清区\",\n  370124: \"平阴县\",\n  370125: \"济阳县\",\n  370126: \"商河县\",\n  370181: \"章丘市\",\n  370200: \"青岛市\",\n  370201: \"市辖区\",\n  370202: \"市南区\",\n  370203: \"市北区\",\n  370211: \"黄岛区\",\n  370212: \"崂山区\",\n  370213: \"李沧区\",\n  370214: \"城阳区\",\n  370281: \"胶州市\",\n  370282: \"即墨市\",\n  370283: \"平度市\",\n  370285: \"莱西市\",\n  370300: \"淄博市\",\n  370301: \"市辖区\",\n  370302: \"淄川区\",\n  370303: \"张店区\",\n  370304: \"博山区\",\n  370305: \"临淄区\",\n  370306: \"周村区\",\n  370321: \"桓台县\",\n  370322: \"高青县\",\n  370323: \"沂源县\",\n  370400: \"枣庄市\",\n  370401: \"市辖区\",\n  370402: \"市中区\",\n  370403: \"薛城区\",\n  370404: \"峄城区\",\n  370405: \"台儿庄区\",\n  370406: \"山亭区\",\n  370481: \"滕州市\",\n  370500: \"东营市\",\n  370501: \"市辖区\",\n  370502: \"东营区\",\n  370503: \"河口区\",\n  370505: \"垦利区\",\n  370522: \"利津县\",\n  370523: \"广饶县\",\n  370600: \"烟台市\",\n  370601: \"市辖区\",\n  370602: \"芝罘区\",\n  370611: \"福山区\",\n  370612: \"牟平区\",\n  370613: \"莱山区\",\n  370634: \"长岛县\",\n  370681: \"龙口市\",\n  370682: \"莱阳市\",\n  370683: \"莱州市\",\n  370684: \"蓬莱市\",\n  370685: \"招远市\",\n  370686: \"栖霞市\",\n  370687: \"海阳市\",\n  370700: \"潍坊市\",\n  370701: \"市辖区\",\n  370702: \"潍城区\",\n  370703: \"寒亭区\",\n  370704: \"坊子区\",\n  370705: \"奎文区\",\n  370724: \"临朐县\",\n  370725: \"昌乐县\",\n  370781: \"青州市\",\n  370782: \"诸城市\",\n  370783: \"寿光市\",\n  370784: \"安丘市\",\n  370785: \"高密市\",\n  370786: \"昌邑市\",\n  370800: \"济宁市\",\n  370801: \"市辖区\",\n  370811: \"任城区\",\n  370812: \"兖州区\",\n  370826: \"微山县\",\n  370827: \"鱼台县\",\n  370828: \"金乡县\",\n  370829: \"嘉祥县\",\n  370830: \"汶上县\",\n  370831: \"泗水县\",\n  370832: \"梁山县\",\n  370881: \"曲阜市\",\n  370883: \"邹城市\",\n  370900: \"泰安市\",\n  370901: \"市辖区\",\n  370902: \"泰山区\",\n  370911: \"岱岳区\",\n  370921: \"宁阳县\",\n  370923: \"东平县\",\n  370982: \"新泰市\",\n  370983: \"肥城市\",\n  371e3: \"威海市\",\n  371001: \"市辖区\",\n  371002: \"环翠区\",\n  371003: \"文登区\",\n  371082: \"荣成市\",\n  371083: \"乳山市\",\n  371100: \"日照市\",\n  371101: \"市辖区\",\n  371102: \"东港区\",\n  371103: \"岚山区\",\n  371121: \"五莲县\",\n  371122: \"莒县\",\n  371200: \"莱芜市\",\n  371201: \"市辖区\",\n  371202: \"莱城区\",\n  371203: \"钢城区\",\n  371300: \"临沂市\",\n  371301: \"市辖区\",\n  371302: \"兰山区\",\n  371311: \"罗庄区\",\n  371312: \"河东区\",\n  371321: \"沂南县\",\n  371322: \"郯城县\",\n  371323: \"沂水县\",\n  371324: \"兰陵县\",\n  371325: \"费县\",\n  371326: \"平邑县\",\n  371327: \"莒南县\",\n  371328: \"蒙阴县\",\n  371329: \"临沭县\",\n  371400: \"德州市\",\n  371401: \"市辖区\",\n  371402: \"德城区\",\n  371403: \"陵城区\",\n  371422: \"宁津县\",\n  371423: \"庆云县\",\n  371424: \"临邑县\",\n  371425: \"齐河县\",\n  371426: \"平原县\",\n  371427: \"夏津县\",\n  371428: \"武城县\",\n  371481: \"乐陵市\",\n  371482: \"禹城市\",\n  371500: \"聊城市\",\n  371501: \"市辖区\",\n  371502: \"东昌府区\",\n  371521: \"阳谷县\",\n  371522: \"莘县\",\n  371523: \"茌平县\",\n  371524: \"东阿县\",\n  371525: \"冠县\",\n  371526: \"高唐县\",\n  371581: \"临清市\",\n  371600: \"滨州市\",\n  371601: \"市辖区\",\n  371602: \"滨城区\",\n  371603: \"沾化区\",\n  371621: \"惠民县\",\n  371622: \"阳信县\",\n  371623: \"无棣县\",\n  371625: \"博兴县\",\n  371626: \"邹平县\",\n  371700: \"菏泽市\",\n  371701: \"市辖区\",\n  371702: \"牡丹区\",\n  371703: \"定陶区\",\n  371721: \"曹县\",\n  371722: \"单县\",\n  371723: \"成武县\",\n  371724: \"巨野县\",\n  371725: \"郓城县\",\n  371726: \"鄄城县\",\n  371728: \"东明县\",\n  41e4: \"河南省\",\n  410100: \"郑州市\",\n  410101: \"市辖区\",\n  410102: \"中原区\",\n  410103: \"二七区\",\n  410104: \"管城回族区\",\n  410105: \"金水区\",\n  410106: \"上街区\",\n  410108: \"惠济区\",\n  410122: \"中牟县\",\n  410181: \"巩义市\",\n  410182: \"荥阳市\",\n  410183: \"新密市\",\n  410184: \"新郑市\",\n  410185: \"登封市\",\n  410200: \"开封市\",\n  410201: \"市辖区\",\n  410202: \"龙亭区\",\n  410203: \"顺河回族区\",\n  410204: \"鼓楼区\",\n  410205: \"禹王台区\",\n  410211: \"金明区\",\n  410212: \"祥符区\",\n  410221: \"杞县\",\n  410222: \"通许县\",\n  410223: \"尉氏县\",\n  410225: \"兰考县\",\n  410300: \"洛阳市\",\n  410301: \"市辖区\",\n  410302: \"老城区\",\n  410303: \"西工区\",\n  410304: \"瀍河回族区\",\n  410305: \"涧西区\",\n  410306: \"吉利区\",\n  410311: \"洛龙区\",\n  410322: \"孟津县\",\n  410323: \"新安县\",\n  410324: \"栾川县\",\n  410325: \"嵩县\",\n  410326: \"汝阳县\",\n  410327: \"宜阳县\",\n  410328: \"洛宁县\",\n  410329: \"伊川县\",\n  410381: \"偃师市\",\n  410400: \"平顶山市\",\n  410401: \"市辖区\",\n  410402: \"新华区\",\n  410403: \"卫东区\",\n  410404: \"石龙区\",\n  410411: \"湛河区\",\n  410421: \"宝丰县\",\n  410422: \"叶县\",\n  410423: \"鲁山县\",\n  410425: \"郏县\",\n  410481: \"舞钢市\",\n  410482: \"汝州市\",\n  410500: \"安阳市\",\n  410501: \"市辖区\",\n  410502: \"文峰区\",\n  410503: \"北关区\",\n  410505: \"殷都区\",\n  410506: \"龙安区\",\n  410522: \"安阳县\",\n  410523: \"汤阴县\",\n  410526: \"滑县\",\n  410527: \"内黄县\",\n  410581: \"林州市\",\n  410600: \"鹤壁市\",\n  410601: \"市辖区\",\n  410602: \"鹤山区\",\n  410603: \"山城区\",\n  410611: \"淇滨区\",\n  410621: \"浚县\",\n  410622: \"淇县\",\n  410700: \"新乡市\",\n  410701: \"市辖区\",\n  410702: \"红旗区\",\n  410703: \"卫滨区\",\n  410704: \"凤泉区\",\n  410711: \"牧野区\",\n  410721: \"新乡县\",\n  410724: \"获嘉县\",\n  410725: \"原阳县\",\n  410726: \"延津县\",\n  410727: \"封丘县\",\n  410728: \"长垣县\",\n  410781: \"卫辉市\",\n  410782: \"辉县市\",\n  410800: \"焦作市\",\n  410801: \"市辖区\",\n  410802: \"解放区\",\n  410803: \"中站区\",\n  410804: \"马村区\",\n  410811: \"山阳区\",\n  410821: \"修武县\",\n  410822: \"博爱县\",\n  410823: \"武陟县\",\n  410825: \"温县\",\n  410882: \"沁阳市\",\n  410883: \"孟州市\",\n  410900: \"濮阳市\",\n  410901: \"市辖区\",\n  410902: \"华龙区\",\n  410922: \"清丰县\",\n  410923: \"南乐县\",\n  410926: \"范县\",\n  410927: \"台前县\",\n  410928: \"濮阳县\",\n  411e3: \"许昌市\",\n  411001: \"市辖区\",\n  411002: \"魏都区\",\n  411023: \"许昌县\",\n  411024: \"鄢陵县\",\n  411025: \"襄城县\",\n  411081: \"禹州市\",\n  411082: \"长葛市\",\n  411100: \"漯河市\",\n  411101: \"市辖区\",\n  411102: \"源汇区\",\n  411103: \"郾城区\",\n  411104: \"召陵区\",\n  411121: \"舞阳县\",\n  411122: \"临颍县\",\n  411200: \"三门峡市\",\n  411201: \"市辖区\",\n  411202: \"湖滨区\",\n  411203: \"陕州区\",\n  411221: \"渑池县\",\n  411224: \"卢氏县\",\n  411281: \"义马市\",\n  411282: \"灵宝市\",\n  411300: \"南阳市\",\n  411301: \"市辖区\",\n  411302: \"宛城区\",\n  411303: \"卧龙区\",\n  411321: \"南召县\",\n  411322: \"方城县\",\n  411323: \"西峡县\",\n  411324: \"镇平县\",\n  411325: \"内乡县\",\n  411326: \"淅川县\",\n  411327: \"社旗县\",\n  411328: \"唐河县\",\n  411329: \"新野县\",\n  411330: \"桐柏县\",\n  411381: \"邓州市\",\n  411400: \"商丘市\",\n  411401: \"市辖区\",\n  411402: \"梁园区\",\n  411403: \"睢阳区\",\n  411421: \"民权县\",\n  411422: \"睢县\",\n  411423: \"宁陵县\",\n  411424: \"柘城县\",\n  411425: \"虞城县\",\n  411426: \"夏邑县\",\n  411481: \"永城市\",\n  411500: \"信阳市\",\n  411501: \"市辖区\",\n  411502: \"浉河区\",\n  411503: \"平桥区\",\n  411521: \"罗山县\",\n  411522: \"光山县\",\n  411523: \"新县\",\n  411524: \"商城县\",\n  411525: \"固始县\",\n  411526: \"潢川县\",\n  411527: \"淮滨县\",\n  411528: \"息县\",\n  411600: \"周口市\",\n  411601: \"市辖区\",\n  411602: \"川汇区\",\n  411621: \"扶沟县\",\n  411622: \"西华县\",\n  411623: \"商水县\",\n  411624: \"沈丘县\",\n  411625: \"郸城县\",\n  411626: \"淮阳县\",\n  411627: \"太康县\",\n  411628: \"鹿邑县\",\n  411681: \"项城市\",\n  411700: \"驻马店市\",\n  411701: \"市辖区\",\n  411702: \"驿城区\",\n  411721: \"西平县\",\n  411722: \"上蔡县\",\n  411723: \"平舆县\",\n  411724: \"正阳县\",\n  411725: \"确山县\",\n  411726: \"泌阳县\",\n  411727: \"汝南县\",\n  411728: \"遂平县\",\n  411729: \"新蔡县\",\n  419e3: \"省直辖县级行政区划\",\n  419001: \"济源市\",\n  42e4: \"湖北省\",\n  420100: \"武汉市\",\n  420101: \"市辖区\",\n  420102: \"江岸区\",\n  420103: \"江汉区\",\n  420104: \"硚口区\",\n  420105: \"汉阳区\",\n  420106: \"武昌区\",\n  420107: \"青山区\",\n  420111: \"洪山区\",\n  420112: \"东西湖区\",\n  420113: \"汉南区\",\n  420114: \"蔡甸区\",\n  420115: \"江夏区\",\n  420116: \"黄陂区\",\n  420117: \"新洲区\",\n  420200: \"黄石市\",\n  420201: \"市辖区\",\n  420202: \"黄石港区\",\n  420203: \"西塞山区\",\n  420204: \"下陆区\",\n  420205: \"铁山区\",\n  420222: \"阳新县\",\n  420281: \"大冶市\",\n  420300: \"十堰市\",\n  420301: \"市辖区\",\n  420302: \"茅箭区\",\n  420303: \"张湾区\",\n  420304: \"郧阳区\",\n  420322: \"郧西县\",\n  420323: \"竹山县\",\n  420324: \"竹溪县\",\n  420325: \"房县\",\n  420381: \"丹江口市\",\n  420500: \"宜昌市\",\n  420501: \"市辖区\",\n  420502: \"西陵区\",\n  420503: \"伍家岗区\",\n  420504: \"点军区\",\n  420505: \"猇亭区\",\n  420506: \"夷陵区\",\n  420525: \"远安县\",\n  420526: \"兴山县\",\n  420527: \"秭归县\",\n  420528: \"长阳土家族自治县\",\n  420529: \"五峰土家族自治县\",\n  420581: \"宜都市\",\n  420582: \"当阳市\",\n  420583: \"枝江市\",\n  420600: \"襄阳市\",\n  420601: \"市辖区\",\n  420602: \"襄城区\",\n  420606: \"樊城区\",\n  420607: \"襄州区\",\n  420624: \"南漳县\",\n  420625: \"谷城县\",\n  420626: \"保康县\",\n  420682: \"老河口市\",\n  420683: \"枣阳市\",\n  420684: \"宜城市\",\n  420700: \"鄂州市\",\n  420701: \"市辖区\",\n  420702: \"梁子湖区\",\n  420703: \"华容区\",\n  420704: \"鄂城区\",\n  420800: \"荆门市\",\n  420801: \"市辖区\",\n  420802: \"东宝区\",\n  420804: \"掇刀区\",\n  420821: \"京山县\",\n  420822: \"沙洋县\",\n  420881: \"钟祥市\",\n  420900: \"孝感市\",\n  420901: \"市辖区\",\n  420902: \"孝南区\",\n  420921: \"孝昌县\",\n  420922: \"大悟县\",\n  420923: \"云梦县\",\n  420981: \"应城市\",\n  420982: \"安陆市\",\n  420984: \"汉川市\",\n  421e3: \"荆州市\",\n  421001: \"市辖区\",\n  421002: \"沙市区\",\n  421003: \"荆州区\",\n  421022: \"公安县\",\n  421023: \"监利县\",\n  421024: \"江陵县\",\n  421081: \"石首市\",\n  421083: \"洪湖市\",\n  421087: \"松滋市\",\n  421100: \"黄冈市\",\n  421101: \"市辖区\",\n  421102: \"黄州区\",\n  421121: \"团风县\",\n  421122: \"红安县\",\n  421123: \"罗田县\",\n  421124: \"英山县\",\n  421125: \"浠水县\",\n  421126: \"蕲春县\",\n  421127: \"黄梅县\",\n  421181: \"麻城市\",\n  421182: \"武穴市\",\n  421200: \"咸宁市\",\n  421201: \"市辖区\",\n  421202: \"咸安区\",\n  421221: \"嘉鱼县\",\n  421222: \"通城县\",\n  421223: \"崇阳县\",\n  421224: \"通山县\",\n  421281: \"赤壁市\",\n  421300: \"随州市\",\n  421301: \"市辖区\",\n  421303: \"曾都区\",\n  421321: \"随县\",\n  421381: \"广水市\",\n  422800: \"恩施土家族苗族自治州\",\n  422801: \"恩施市\",\n  422802: \"利川市\",\n  422822: \"建始县\",\n  422823: \"巴东县\",\n  422825: \"宣恩县\",\n  422826: \"咸丰县\",\n  422827: \"来凤县\",\n  422828: \"鹤峰县\",\n  429e3: \"省直辖县级行政区划\",\n  429004: \"仙桃市\",\n  429005: \"潜江市\",\n  429006: \"天门市\",\n  429021: \"神农架林区\",\n  43e4: \"湖南省\",\n  430100: \"长沙市\",\n  430101: \"市辖区\",\n  430102: \"芙蓉区\",\n  430103: \"天心区\",\n  430104: \"岳麓区\",\n  430105: \"开福区\",\n  430111: \"雨花区\",\n  430112: \"望城区\",\n  430121: \"长沙县\",\n  430124: \"宁乡县\",\n  430181: \"浏阳市\",\n  430200: \"株洲市\",\n  430201: \"市辖区\",\n  430202: \"荷塘区\",\n  430203: \"芦淞区\",\n  430204: \"石峰区\",\n  430211: \"天元区\",\n  430221: \"株洲县\",\n  430223: \"攸县\",\n  430224: \"茶陵县\",\n  430225: \"炎陵县\",\n  430281: \"醴陵市\",\n  430300: \"湘潭市\",\n  430301: \"市辖区\",\n  430302: \"雨湖区\",\n  430304: \"岳塘区\",\n  430321: \"湘潭县\",\n  430381: \"湘乡市\",\n  430382: \"韶山市\",\n  430400: \"衡阳市\",\n  430401: \"市辖区\",\n  430405: \"珠晖区\",\n  430406: \"雁峰区\",\n  430407: \"石鼓区\",\n  430408: \"蒸湘区\",\n  430412: \"南岳区\",\n  430421: \"衡阳县\",\n  430422: \"衡南县\",\n  430423: \"衡山县\",\n  430424: \"衡东县\",\n  430426: \"祁东县\",\n  430481: \"耒阳市\",\n  430482: \"常宁市\",\n  430500: \"邵阳市\",\n  430501: \"市辖区\",\n  430502: \"双清区\",\n  430503: \"大祥区\",\n  430511: \"北塔区\",\n  430521: \"邵东县\",\n  430522: \"新邵县\",\n  430523: \"邵阳县\",\n  430524: \"隆回县\",\n  430525: \"洞口县\",\n  430527: \"绥宁县\",\n  430528: \"新宁县\",\n  430529: \"城步苗族自治县\",\n  430581: \"武冈市\",\n  430600: \"岳阳市\",\n  430601: \"市辖区\",\n  430602: \"岳阳楼区\",\n  430603: \"云溪区\",\n  430611: \"君山区\",\n  430621: \"岳阳县\",\n  430623: \"华容县\",\n  430624: \"湘阴县\",\n  430626: \"平江县\",\n  430681: \"汨罗市\",\n  430682: \"临湘市\",\n  430700: \"常德市\",\n  430701: \"市辖区\",\n  430702: \"武陵区\",\n  430703: \"鼎城区\",\n  430721: \"安乡县\",\n  430722: \"汉寿县\",\n  430723: \"澧县\",\n  430724: \"临澧县\",\n  430725: \"桃源县\",\n  430726: \"石门县\",\n  430781: \"津市市\",\n  430800: \"张家界市\",\n  430801: \"市辖区\",\n  430802: \"永定区\",\n  430811: \"武陵源区\",\n  430821: \"慈利县\",\n  430822: \"桑植县\",\n  430900: \"益阳市\",\n  430901: \"市辖区\",\n  430902: \"资阳区\",\n  430903: \"赫山区\",\n  430921: \"南县\",\n  430922: \"桃江县\",\n  430923: \"安化县\",\n  430981: \"沅江市\",\n  431e3: \"郴州市\",\n  431001: \"市辖区\",\n  431002: \"北湖区\",\n  431003: \"苏仙区\",\n  431021: \"桂阳县\",\n  431022: \"宜章县\",\n  431023: \"永兴县\",\n  431024: \"嘉禾县\",\n  431025: \"临武县\",\n  431026: \"汝城县\",\n  431027: \"桂东县\",\n  431028: \"安仁县\",\n  431081: \"资兴市\",\n  431100: \"永州市\",\n  431101: \"市辖区\",\n  431102: \"零陵区\",\n  431103: \"冷水滩区\",\n  431121: \"祁阳县\",\n  431122: \"东安县\",\n  431123: \"双牌县\",\n  431124: \"道县\",\n  431125: \"江永县\",\n  431126: \"宁远县\",\n  431127: \"蓝山县\",\n  431128: \"新田县\",\n  431129: \"江华瑶族自治县\",\n  431200: \"怀化市\",\n  431201: \"市辖区\",\n  431202: \"鹤城区\",\n  431221: \"中方县\",\n  431222: \"沅陵县\",\n  431223: \"辰溪县\",\n  431224: \"溆浦县\",\n  431225: \"会同县\",\n  431226: \"麻阳苗族自治县\",\n  431227: \"新晃侗族自治县\",\n  431228: \"芷江侗族自治县\",\n  431229: \"靖州苗族侗族自治县\",\n  431230: \"通道侗族自治县\",\n  431281: \"洪江市\",\n  431300: \"娄底市\",\n  431301: \"市辖区\",\n  431302: \"娄星区\",\n  431321: \"双峰县\",\n  431322: \"新化县\",\n  431381: \"冷水江市\",\n  431382: \"涟源市\",\n  433100: \"湘西土家族苗族自治州\",\n  433101: \"吉首市\",\n  433122: \"泸溪县\",\n  433123: \"凤凰县\",\n  433124: \"花垣县\",\n  433125: \"保靖县\",\n  433126: \"古丈县\",\n  433127: \"永顺县\",\n  433130: \"龙山县\",\n  44e4: \"广东省\",\n  440100: \"广州市\",\n  440101: \"市辖区\",\n  440103: \"荔湾区\",\n  440104: \"越秀区\",\n  440105: \"海珠区\",\n  440106: \"天河区\",\n  440111: \"白云区\",\n  440112: \"黄埔区\",\n  440113: \"番禺区\",\n  440114: \"花都区\",\n  440115: \"南沙区\",\n  440117: \"从化区\",\n  440118: \"增城区\",\n  440200: \"韶关市\",\n  440201: \"市辖区\",\n  440203: \"武江区\",\n  440204: \"浈江区\",\n  440205: \"曲江区\",\n  440222: \"始兴县\",\n  440224: \"仁化县\",\n  440229: \"翁源县\",\n  440232: \"乳源瑶族自治县\",\n  440233: \"新丰县\",\n  440281: \"乐昌市\",\n  440282: \"南雄市\",\n  440300: \"深圳市\",\n  440301: \"市辖区\",\n  440303: \"罗湖区\",\n  440304: \"福田区\",\n  440305: \"南山区\",\n  440306: \"宝安区\",\n  440307: \"龙岗区\",\n  440308: \"盐田区\",\n  440400: \"珠海市\",\n  440401: \"市辖区\",\n  440402: \"香洲区\",\n  440403: \"斗门区\",\n  440404: \"金湾区\",\n  440500: \"汕头市\",\n  440501: \"市辖区\",\n  440507: \"龙湖区\",\n  440511: \"金平区\",\n  440512: \"濠江区\",\n  440513: \"潮阳区\",\n  440514: \"潮南区\",\n  440515: \"澄海区\",\n  440523: \"南澳县\",\n  440600: \"佛山市\",\n  440601: \"市辖区\",\n  440604: \"禅城区\",\n  440605: \"南海区\",\n  440606: \"顺德区\",\n  440607: \"三水区\",\n  440608: \"高明区\",\n  440700: \"江门市\",\n  440701: \"市辖区\",\n  440703: \"蓬江区\",\n  440704: \"江海区\",\n  440705: \"新会区\",\n  440781: \"台山市\",\n  440783: \"开平市\",\n  440784: \"鹤山市\",\n  440785: \"恩平市\",\n  440800: \"湛江市\",\n  440801: \"市辖区\",\n  440802: \"赤坎区\",\n  440803: \"霞山区\",\n  440804: \"坡头区\",\n  440811: \"麻章区\",\n  440823: \"遂溪县\",\n  440825: \"徐闻县\",\n  440881: \"廉江市\",\n  440882: \"雷州市\",\n  440883: \"吴川市\",\n  440900: \"茂名市\",\n  440901: \"市辖区\",\n  440902: \"茂南区\",\n  440904: \"电白区\",\n  440981: \"高州市\",\n  440982: \"化州市\",\n  440983: \"信宜市\",\n  441200: \"肇庆市\",\n  441201: \"市辖区\",\n  441202: \"端州区\",\n  441203: \"鼎湖区\",\n  441204: \"高要区\",\n  441223: \"广宁县\",\n  441224: \"怀集县\",\n  441225: \"封开县\",\n  441226: \"德庆县\",\n  441284: \"四会市\",\n  441300: \"惠州市\",\n  441301: \"市辖区\",\n  441302: \"惠城区\",\n  441303: \"惠阳区\",\n  441322: \"博罗县\",\n  441323: \"惠东县\",\n  441324: \"龙门县\",\n  441400: \"梅州市\",\n  441401: \"市辖区\",\n  441402: \"梅江区\",\n  441403: \"梅县区\",\n  441422: \"大埔县\",\n  441423: \"丰顺县\",\n  441424: \"五华县\",\n  441426: \"平远县\",\n  441427: \"蕉岭县\",\n  441481: \"兴宁市\",\n  441500: \"汕尾市\",\n  441501: \"市辖区\",\n  441502: \"城区\",\n  441521: \"海丰县\",\n  441523: \"陆河县\",\n  441581: \"陆丰市\",\n  441600: \"河源市\",\n  441601: \"市辖区\",\n  441602: \"源城区\",\n  441621: \"紫金县\",\n  441622: \"龙川县\",\n  441623: \"连平县\",\n  441624: \"和平县\",\n  441625: \"东源县\",\n  441700: \"阳江市\",\n  441701: \"市辖区\",\n  441702: \"江城区\",\n  441704: \"阳东区\",\n  441721: \"阳西县\",\n  441781: \"阳春市\",\n  441800: \"清远市\",\n  441801: \"市辖区\",\n  441802: \"清城区\",\n  441803: \"清新区\",\n  441821: \"佛冈县\",\n  441823: \"阳山县\",\n  441825: \"连山壮族瑶族自治县\",\n  441826: \"连南瑶族自治县\",\n  441881: \"英德市\",\n  441882: \"连州市\",\n  441900: \"东莞市\",\n  442e3: \"中山市\",\n  445100: \"潮州市\",\n  445101: \"市辖区\",\n  445102: \"湘桥区\",\n  445103: \"潮安区\",\n  445122: \"饶平县\",\n  445200: \"揭阳市\",\n  445201: \"市辖区\",\n  445202: \"榕城区\",\n  445203: \"揭东区\",\n  445222: \"揭西县\",\n  445224: \"惠来县\",\n  445281: \"普宁市\",\n  445300: \"云浮市\",\n  445301: \"市辖区\",\n  445302: \"云城区\",\n  445303: \"云安区\",\n  445321: \"新兴县\",\n  445322: \"郁南县\",\n  445381: \"罗定市\",\n  45e4: \"广西壮族自治区\",\n  450100: \"南宁市\",\n  450101: \"市辖区\",\n  450102: \"兴宁区\",\n  450103: \"青秀区\",\n  450105: \"江南区\",\n  450107: \"西乡塘区\",\n  450108: \"良庆区\",\n  450109: \"邕宁区\",\n  450110: \"武鸣区\",\n  450123: \"隆安县\",\n  450124: \"马山县\",\n  450125: \"上林县\",\n  450126: \"宾阳县\",\n  450127: \"横县\",\n  450200: \"柳州市\",\n  450201: \"市辖区\",\n  450202: \"城中区\",\n  450203: \"鱼峰区\",\n  450204: \"柳南区\",\n  450205: \"柳北区\",\n  450206: \"柳江区\",\n  450222: \"柳城县\",\n  450223: \"鹿寨县\",\n  450224: \"融安县\",\n  450225: \"融水苗族自治县\",\n  450226: \"三江侗族自治县\",\n  450300: \"桂林市\",\n  450301: \"市辖区\",\n  450302: \"秀峰区\",\n  450303: \"叠彩区\",\n  450304: \"象山区\",\n  450305: \"七星区\",\n  450311: \"雁山区\",\n  450312: \"临桂区\",\n  450321: \"阳朔县\",\n  450323: \"灵川县\",\n  450324: \"全州县\",\n  450325: \"兴安县\",\n  450326: \"永福县\",\n  450327: \"灌阳县\",\n  450328: \"龙胜各族自治县\",\n  450329: \"资源县\",\n  450330: \"平乐县\",\n  450331: \"荔浦县\",\n  450332: \"恭城瑶族自治县\",\n  450400: \"梧州市\",\n  450401: \"市辖区\",\n  450403: \"万秀区\",\n  450405: \"长洲区\",\n  450406: \"龙圩区\",\n  450421: \"苍梧县\",\n  450422: \"藤县\",\n  450423: \"蒙山县\",\n  450481: \"岑溪市\",\n  450500: \"北海市\",\n  450501: \"市辖区\",\n  450502: \"海城区\",\n  450503: \"银海区\",\n  450512: \"铁山港区\",\n  450521: \"合浦县\",\n  450600: \"防城港市\",\n  450601: \"市辖区\",\n  450602: \"港口区\",\n  450603: \"防城区\",\n  450621: \"上思县\",\n  450681: \"东兴市\",\n  450700: \"钦州市\",\n  450701: \"市辖区\",\n  450702: \"钦南区\",\n  450703: \"钦北区\",\n  450721: \"灵山县\",\n  450722: \"浦北县\",\n  450800: \"贵港市\",\n  450801: \"市辖区\",\n  450802: \"港北区\",\n  450803: \"港南区\",\n  450804: \"覃塘区\",\n  450821: \"平南县\",\n  450881: \"桂平市\",\n  450900: \"玉林市\",\n  450901: \"市辖区\",\n  450902: \"玉州区\",\n  450903: \"福绵区\",\n  450921: \"容县\",\n  450922: \"陆川县\",\n  450923: \"博白县\",\n  450924: \"兴业县\",\n  450981: \"北流市\",\n  451e3: \"百色市\",\n  451001: \"市辖区\",\n  451002: \"右江区\",\n  451021: \"田阳县\",\n  451022: \"田东县\",\n  451023: \"平果县\",\n  451024: \"德保县\",\n  451026: \"那坡县\",\n  451027: \"凌云县\",\n  451028: \"乐业县\",\n  451029: \"田林县\",\n  451030: \"西林县\",\n  451031: \"隆林各族自治县\",\n  451081: \"靖西市\",\n  451100: \"贺州市\",\n  451101: \"市辖区\",\n  451102: \"八步区\",\n  451103: \"平桂区\",\n  451121: \"昭平县\",\n  451122: \"钟山县\",\n  451123: \"富川瑶族自治县\",\n  451200: \"河池市\",\n  451201: \"市辖区\",\n  451202: \"金城江区\",\n  451221: \"南丹县\",\n  451222: \"天峨县\",\n  451223: \"凤山县\",\n  451224: \"东兰县\",\n  451225: \"罗城仫佬族自治县\",\n  451226: \"环江毛南族自治县\",\n  451227: \"巴马瑶族自治县\",\n  451228: \"都安瑶族自治县\",\n  451229: \"大化瑶族自治县\",\n  451281: \"宜州市\",\n  451300: \"来宾市\",\n  451301: \"市辖区\",\n  451302: \"兴宾区\",\n  451321: \"忻城县\",\n  451322: \"象州县\",\n  451323: \"武宣县\",\n  451324: \"金秀瑶族自治县\",\n  451381: \"合山市\",\n  451400: \"崇左市\",\n  451401: \"市辖区\",\n  451402: \"江州区\",\n  451421: \"扶绥县\",\n  451422: \"宁明县\",\n  451423: \"龙州县\",\n  451424: \"大新县\",\n  451425: \"天等县\",\n  451481: \"凭祥市\",\n  46e4: \"海南省\",\n  460100: \"海口市\",\n  460101: \"市辖区\",\n  460105: \"秀英区\",\n  460106: \"龙华区\",\n  460107: \"琼山区\",\n  460108: \"美兰区\",\n  460200: \"三亚市\",\n  460201: \"市辖区\",\n  460202: \"海棠区\",\n  460203: \"吉阳区\",\n  460204: \"天涯区\",\n  460205: \"崖州区\",\n  460300: \"三沙市\",\n  460400: \"儋州市\",\n  469e3: \"省直辖县级行政区划\",\n  469001: \"五指山市\",\n  469002: \"琼海市\",\n  469005: \"文昌市\",\n  469006: \"万宁市\",\n  469007: \"东方市\",\n  469021: \"定安县\",\n  469022: \"屯昌县\",\n  469023: \"澄迈县\",\n  469024: \"临高县\",\n  469025: \"白沙黎族自治县\",\n  469026: \"昌江黎族自治县\",\n  469027: \"乐东黎族自治县\",\n  469028: \"陵水黎族自治县\",\n  469029: \"保亭黎族苗族自治县\",\n  469030: \"琼中黎族苗族自治县\",\n  5e5: \"重庆市\",\n  500100: \"市辖区\",\n  500101: \"万州区\",\n  500102: \"涪陵区\",\n  500103: \"渝中区\",\n  500104: \"大渡口区\",\n  500105: \"江北区\",\n  500106: \"沙坪坝区\",\n  500107: \"九龙坡区\",\n  500108: \"南岸区\",\n  500109: \"北碚区\",\n  500110: \"綦江区\",\n  500111: \"大足区\",\n  500112: \"渝北区\",\n  500113: \"巴南区\",\n  500114: \"黔江区\",\n  500115: \"长寿区\",\n  500116: \"江津区\",\n  500117: \"合川区\",\n  500118: \"永川区\",\n  500119: \"南川区\",\n  500120: \"璧山区\",\n  500151: \"铜梁区\",\n  500152: \"潼南区\",\n  500153: \"荣昌区\",\n  500154: \"开州区\",\n  500200: \"县\",\n  500228: \"梁平县\",\n  500229: \"城口县\",\n  500230: \"丰都县\",\n  500231: \"垫江县\",\n  500232: \"武隆县\",\n  500233: \"忠县\",\n  500235: \"云阳县\",\n  500236: \"奉节县\",\n  500237: \"巫山县\",\n  500238: \"巫溪县\",\n  500240: \"石柱土家族自治县\",\n  500241: \"秀山土家族苗族自治县\",\n  500242: \"酉阳土家族苗族自治县\",\n  500243: \"彭水苗族土家族自治县\",\n  51e4: \"四川省\",\n  510100: \"成都市\",\n  510101: \"市辖区\",\n  510104: \"锦江区\",\n  510105: \"青羊区\",\n  510106: \"金牛区\",\n  510107: \"武侯区\",\n  510108: \"成华区\",\n  510112: \"龙泉驿区\",\n  510113: \"青白江区\",\n  510114: \"新都区\",\n  510115: \"温江区\",\n  510116: \"双流区\",\n  510121: \"金堂县\",\n  510124: \"郫县\",\n  510129: \"大邑县\",\n  510131: \"蒲江县\",\n  510132: \"新津县\",\n  510181: \"都江堰市\",\n  510182: \"彭州市\",\n  510183: \"邛崃市\",\n  510184: \"崇州市\",\n  510185: \"简阳市\",\n  510300: \"自贡市\",\n  510301: \"市辖区\",\n  510302: \"自流井区\",\n  510303: \"贡井区\",\n  510304: \"大安区\",\n  510311: \"沿滩区\",\n  510321: \"荣县\",\n  510322: \"富顺县\",\n  510400: \"攀枝花市\",\n  510401: \"市辖区\",\n  510402: \"东区\",\n  510403: \"西区\",\n  510411: \"仁和区\",\n  510421: \"米易县\",\n  510422: \"盐边县\",\n  510500: \"泸州市\",\n  510501: \"市辖区\",\n  510502: \"江阳区\",\n  510503: \"纳溪区\",\n  510504: \"龙马潭区\",\n  510521: \"泸县\",\n  510522: \"合江县\",\n  510524: \"叙永县\",\n  510525: \"古蔺县\",\n  510600: \"德阳市\",\n  510601: \"市辖区\",\n  510603: \"旌阳区\",\n  510623: \"中江县\",\n  510626: \"罗江县\",\n  510681: \"广汉市\",\n  510682: \"什邡市\",\n  510683: \"绵竹市\",\n  510700: \"绵阳市\",\n  510701: \"市辖区\",\n  510703: \"涪城区\",\n  510704: \"游仙区\",\n  510705: \"安州区\",\n  510722: \"三台县\",\n  510723: \"盐亭县\",\n  510725: \"梓潼县\",\n  510726: \"北川羌族自治县\",\n  510727: \"平武县\",\n  510781: \"江油市\",\n  510800: \"广元市\",\n  510801: \"市辖区\",\n  510802: \"利州区\",\n  510811: \"昭化区\",\n  510812: \"朝天区\",\n  510821: \"旺苍县\",\n  510822: \"青川县\",\n  510823: \"剑阁县\",\n  510824: \"苍溪县\",\n  510900: \"遂宁市\",\n  510901: \"市辖区\",\n  510903: \"船山区\",\n  510904: \"安居区\",\n  510921: \"蓬溪县\",\n  510922: \"射洪县\",\n  510923: \"大英县\",\n  511e3: \"内江市\",\n  511001: \"市辖区\",\n  511002: \"市中区\",\n  511011: \"东兴区\",\n  511024: \"威远县\",\n  511025: \"资中县\",\n  511028: \"隆昌县\",\n  511100: \"乐山市\",\n  511101: \"市辖区\",\n  511102: \"市中区\",\n  511111: \"沙湾区\",\n  511112: \"五通桥区\",\n  511113: \"金口河区\",\n  511123: \"犍为县\",\n  511124: \"井研县\",\n  511126: \"夹江县\",\n  511129: \"沐川县\",\n  511132: \"峨边彝族自治县\",\n  511133: \"马边彝族自治县\",\n  511181: \"峨眉山市\",\n  511300: \"南充市\",\n  511301: \"市辖区\",\n  511302: \"顺庆区\",\n  511303: \"高坪区\",\n  511304: \"嘉陵区\",\n  511321: \"南部县\",\n  511322: \"营山县\",\n  511323: \"蓬安县\",\n  511324: \"仪陇县\",\n  511325: \"西充县\",\n  511381: \"阆中市\",\n  511400: \"眉山市\",\n  511401: \"市辖区\",\n  511402: \"东坡区\",\n  511403: \"彭山区\",\n  511421: \"仁寿县\",\n  511423: \"洪雅县\",\n  511424: \"丹棱县\",\n  511425: \"青神县\",\n  511500: \"宜宾市\",\n  511501: \"市辖区\",\n  511502: \"翠屏区\",\n  511503: \"南溪区\",\n  511521: \"宜宾县\",\n  511523: \"江安县\",\n  511524: \"长宁县\",\n  511525: \"高县\",\n  511526: \"珙县\",\n  511527: \"筠连县\",\n  511528: \"兴文县\",\n  511529: \"屏山县\",\n  511600: \"广安市\",\n  511601: \"市辖区\",\n  511602: \"广安区\",\n  511603: \"前锋区\",\n  511621: \"岳池县\",\n  511622: \"武胜县\",\n  511623: \"邻水县\",\n  511681: \"华蓥市\",\n  511700: \"达州市\",\n  511701: \"市辖区\",\n  511702: \"通川区\",\n  511703: \"达川区\",\n  511722: \"宣汉县\",\n  511723: \"开江县\",\n  511724: \"大竹县\",\n  511725: \"渠县\",\n  511781: \"万源市\",\n  511800: \"雅安市\",\n  511801: \"市辖区\",\n  511802: \"雨城区\",\n  511803: \"名山区\",\n  511822: \"荥经县\",\n  511823: \"汉源县\",\n  511824: \"石棉县\",\n  511825: \"天全县\",\n  511826: \"芦山县\",\n  511827: \"宝兴县\",\n  511900: \"巴中市\",\n  511901: \"市辖区\",\n  511902: \"巴州区\",\n  511903: \"恩阳区\",\n  511921: \"通江县\",\n  511922: \"南江县\",\n  511923: \"平昌县\",\n  512e3: \"资阳市\",\n  512001: \"市辖区\",\n  512002: \"雁江区\",\n  512021: \"安岳县\",\n  512022: \"乐至县\",\n  513200: \"阿坝藏族羌族自治州\",\n  513201: \"马尔康市\",\n  513221: \"汶川县\",\n  513222: \"理县\",\n  513223: \"茂县\",\n  513224: \"松潘县\",\n  513225: \"九寨沟县\",\n  513226: \"金川县\",\n  513227: \"小金县\",\n  513228: \"黑水县\",\n  513230: \"壤塘县\",\n  513231: \"阿坝县\",\n  513232: \"若尔盖县\",\n  513233: \"红原县\",\n  513300: \"甘孜藏族自治州\",\n  513301: \"康定市\",\n  513322: \"泸定县\",\n  513323: \"丹巴县\",\n  513324: \"九龙县\",\n  513325: \"雅江县\",\n  513326: \"道孚县\",\n  513327: \"炉霍县\",\n  513328: \"甘孜县\",\n  513329: \"新龙县\",\n  513330: \"德格县\",\n  513331: \"白玉县\",\n  513332: \"石渠县\",\n  513333: \"色达县\",\n  513334: \"理塘县\",\n  513335: \"巴塘县\",\n  513336: \"乡城县\",\n  513337: \"稻城县\",\n  513338: \"得荣县\",\n  513400: \"凉山彝族自治州\",\n  513401: \"西昌市\",\n  513422: \"木里藏族自治县\",\n  513423: \"盐源县\",\n  513424: \"德昌县\",\n  513425: \"会理县\",\n  513426: \"会东县\",\n  513427: \"宁南县\",\n  513428: \"普格县\",\n  513429: \"布拖县\",\n  513430: \"金阳县\",\n  513431: \"昭觉县\",\n  513432: \"喜德县\",\n  513433: \"冕宁县\",\n  513434: \"越西县\",\n  513435: \"甘洛县\",\n  513436: \"美姑县\",\n  513437: \"雷波县\",\n  52e4: \"贵州省\",\n  520100: \"贵阳市\",\n  520101: \"市辖区\",\n  520102: \"南明区\",\n  520103: \"云岩区\",\n  520111: \"花溪区\",\n  520112: \"乌当区\",\n  520113: \"白云区\",\n  520115: \"观山湖区\",\n  520121: \"开阳县\",\n  520122: \"息烽县\",\n  520123: \"修文县\",\n  520181: \"清镇市\",\n  520200: \"六盘水市\",\n  520201: \"钟山区\",\n  520203: \"六枝特区\",\n  520221: \"水城县\",\n  520222: \"盘县\",\n  520300: \"遵义市\",\n  520301: \"市辖区\",\n  520302: \"红花岗区\",\n  520303: \"汇川区\",\n  520304: \"播州区\",\n  520322: \"桐梓县\",\n  520323: \"绥阳县\",\n  520324: \"正安县\",\n  520325: \"道真仡佬族苗族自治县\",\n  520326: \"务川仡佬族苗族自治县\",\n  520327: \"凤冈县\",\n  520328: \"湄潭县\",\n  520329: \"余庆县\",\n  520330: \"习水县\",\n  520381: \"赤水市\",\n  520382: \"仁怀市\",\n  520400: \"安顺市\",\n  520401: \"市辖区\",\n  520402: \"西秀区\",\n  520403: \"平坝区\",\n  520422: \"普定县\",\n  520423: \"镇宁布依族苗族自治县\",\n  520424: \"关岭布依族苗族自治县\",\n  520425: \"紫云苗族布依族自治县\",\n  520500: \"毕节市\",\n  520501: \"市辖区\",\n  520502: \"七星关区\",\n  520521: \"大方县\",\n  520522: \"黔西县\",\n  520523: \"金沙县\",\n  520524: \"织金县\",\n  520525: \"纳雍县\",\n  520526: \"威宁彝族回族苗族自治县\",\n  520527: \"赫章县\",\n  520600: \"铜仁市\",\n  520601: \"市辖区\",\n  520602: \"碧江区\",\n  520603: \"万山区\",\n  520621: \"江口县\",\n  520622: \"玉屏侗族自治县\",\n  520623: \"石阡县\",\n  520624: \"思南县\",\n  520625: \"印江土家族苗族自治县\",\n  520626: \"德江县\",\n  520627: \"沿河土家族自治县\",\n  520628: \"松桃苗族自治县\",\n  522300: \"黔西南布依族苗族自治州\",\n  522301: \"兴义市\",\n  522322: \"兴仁县\",\n  522323: \"普安县\",\n  522324: \"晴隆县\",\n  522325: \"贞丰县\",\n  522326: \"望谟县\",\n  522327: \"册亨县\",\n  522328: \"安龙县\",\n  522600: \"黔东南苗族侗族自治州\",\n  522601: \"凯里市\",\n  522622: \"黄平县\",\n  522623: \"施秉县\",\n  522624: \"三穗县\",\n  522625: \"镇远县\",\n  522626: \"岑巩县\",\n  522627: \"天柱县\",\n  522628: \"锦屏县\",\n  522629: \"剑河县\",\n  522630: \"台江县\",\n  522631: \"黎平县\",\n  522632: \"榕江县\",\n  522633: \"从江县\",\n  522634: \"雷山县\",\n  522635: \"麻江县\",\n  522636: \"丹寨县\",\n  522700: \"黔南布依族苗族自治州\",\n  522701: \"都匀市\",\n  522702: \"福泉市\",\n  522722: \"荔波县\",\n  522723: \"贵定县\",\n  522725: \"瓮安县\",\n  522726: \"独山县\",\n  522727: \"平塘县\",\n  522728: \"罗甸县\",\n  522729: \"长顺县\",\n  522730: \"龙里县\",\n  522731: \"惠水县\",\n  522732: \"三都水族自治县\",\n  53e4: \"云南省\",\n  530100: \"昆明市\",\n  530101: \"市辖区\",\n  530102: \"五华区\",\n  530103: \"盘龙区\",\n  530111: \"官渡区\",\n  530112: \"西山区\",\n  530113: \"东川区\",\n  530114: \"呈贡区\",\n  530122: \"晋宁县\",\n  530124: \"富民县\",\n  530125: \"宜良县\",\n  530126: \"石林彝族自治县\",\n  530127: \"嵩明县\",\n  530128: \"禄劝彝族苗族自治县\",\n  530129: \"寻甸回族彝族自治县\",\n  530181: \"安宁市\",\n  530300: \"曲靖市\",\n  530301: \"市辖区\",\n  530302: \"麒麟区\",\n  530303: \"沾益区\",\n  530321: \"马龙县\",\n  530322: \"陆良县\",\n  530323: \"师宗县\",\n  530324: \"罗平县\",\n  530325: \"富源县\",\n  530326: \"会泽县\",\n  530381: \"宣威市\",\n  530400: \"玉溪市\",\n  530401: \"市辖区\",\n  530402: \"红塔区\",\n  530403: \"江川区\",\n  530422: \"澄江县\",\n  530423: \"通海县\",\n  530424: \"华宁县\",\n  530425: \"易门县\",\n  530426: \"峨山彝族自治县\",\n  530427: \"新平彝族傣族自治县\",\n  530428: \"元江哈尼族彝族傣族自治县\",\n  530500: \"保山市\",\n  530501: \"市辖区\",\n  530502: \"隆阳区\",\n  530521: \"施甸县\",\n  530523: \"龙陵县\",\n  530524: \"昌宁县\",\n  530581: \"腾冲市\",\n  530600: \"昭通市\",\n  530601: \"市辖区\",\n  530602: \"昭阳区\",\n  530621: \"鲁甸县\",\n  530622: \"巧家县\",\n  530623: \"盐津县\",\n  530624: \"大关县\",\n  530625: \"永善县\",\n  530626: \"绥江县\",\n  530627: \"镇雄县\",\n  530628: \"彝良县\",\n  530629: \"威信县\",\n  530630: \"水富县\",\n  530700: \"丽江市\",\n  530701: \"市辖区\",\n  530702: \"古城区\",\n  530721: \"玉龙纳西族自治县\",\n  530722: \"永胜县\",\n  530723: \"华坪县\",\n  530724: \"宁蒗彝族自治县\",\n  530800: \"普洱市\",\n  530801: \"市辖区\",\n  530802: \"思茅区\",\n  530821: \"宁洱哈尼族彝族自治县\",\n  530822: \"墨江哈尼族自治县\",\n  530823: \"景东彝族自治县\",\n  530824: \"景谷傣族彝族自治县\",\n  530825: \"镇沅彝族哈尼族拉祜族自治县\",\n  530826: \"江城哈尼族彝族自治县\",\n  530827: \"孟连傣族拉祜族佤族自治县\",\n  530828: \"澜沧拉祜族自治县\",\n  530829: \"西盟佤族自治县\",\n  530900: \"临沧市\",\n  530901: \"市辖区\",\n  530902: \"临翔区\",\n  530921: \"凤庆县\",\n  530922: \"云县\",\n  530923: \"永德县\",\n  530924: \"镇康县\",\n  530925: \"双江拉祜族佤族布朗族傣族自治县\",\n  530926: \"耿马傣族佤族自治县\",\n  530927: \"沧源佤族自治县\",\n  532300: \"楚雄彝族自治州\",\n  532301: \"楚雄市\",\n  532322: \"双柏县\",\n  532323: \"牟定县\",\n  532324: \"南华县\",\n  532325: \"姚安县\",\n  532326: \"大姚县\",\n  532327: \"永仁县\",\n  532328: \"元谋县\",\n  532329: \"武定县\",\n  532331: \"禄丰县\",\n  532500: \"红河哈尼族彝族自治州\",\n  532501: \"个旧市\",\n  532502: \"开远市\",\n  532503: \"蒙自市\",\n  532504: \"弥勒市\",\n  532523: \"屏边苗族自治县\",\n  532524: \"建水县\",\n  532525: \"石屏县\",\n  532527: \"泸西县\",\n  532528: \"元阳县\",\n  532529: \"红河县\",\n  532530: \"金平苗族瑶族傣族自治县\",\n  532531: \"绿春县\",\n  532532: \"河口瑶族自治县\",\n  532600: \"文山壮族苗族自治州\",\n  532601: \"文山市\",\n  532622: \"砚山县\",\n  532623: \"西畴县\",\n  532624: \"麻栗坡县\",\n  532625: \"马关县\",\n  532626: \"丘北县\",\n  532627: \"广南县\",\n  532628: \"富宁县\",\n  532800: \"西双版纳傣族自治州\",\n  532801: \"景洪市\",\n  532822: \"勐海县\",\n  532823: \"勐腊县\",\n  532900: \"大理白族自治州\",\n  532901: \"大理市\",\n  532922: \"漾濞彝族自治县\",\n  532923: \"祥云县\",\n  532924: \"宾川县\",\n  532925: \"弥渡县\",\n  532926: \"南涧彝族自治县\",\n  532927: \"巍山彝族回族自治县\",\n  532928: \"永平县\",\n  532929: \"云龙县\",\n  532930: \"洱源县\",\n  532931: \"剑川县\",\n  532932: \"鹤庆县\",\n  533100: \"德宏傣族景颇族自治州\",\n  533102: \"瑞丽市\",\n  533103: \"芒市\",\n  533122: \"梁河县\",\n  533123: \"盈江县\",\n  533124: \"陇川县\",\n  533300: \"怒江傈僳族自治州\",\n  533301: \"泸水市\",\n  533323: \"福贡县\",\n  533324: \"贡山独龙族怒族自治县\",\n  533325: \"兰坪白族普米族自治县\",\n  533400: \"迪庆藏族自治州\",\n  533401: \"香格里拉市\",\n  533422: \"德钦县\",\n  533423: \"维西傈僳族自治县\",\n  54e4: \"西藏自治区\",\n  540100: \"拉萨市\",\n  540101: \"市辖区\",\n  540102: \"城关区\",\n  540103: \"堆龙德庆区\",\n  540121: \"林周县\",\n  540122: \"当雄县\",\n  540123: \"尼木县\",\n  540124: \"曲水县\",\n  540126: \"达孜县\",\n  540127: \"墨竹工卡县\",\n  540200: \"日喀则市\",\n  540202: \"桑珠孜区\",\n  540221: \"南木林县\",\n  540222: \"江孜县\",\n  540223: \"定日县\",\n  540224: \"萨迦县\",\n  540225: \"拉孜县\",\n  540226: \"昂仁县\",\n  540227: \"谢通门县\",\n  540228: \"白朗县\",\n  540229: \"仁布县\",\n  540230: \"康马县\",\n  540231: \"定结县\",\n  540232: \"仲巴县\",\n  540233: \"亚东县\",\n  540234: \"吉隆县\",\n  540235: \"聂拉木县\",\n  540236: \"萨嘎县\",\n  540237: \"岗巴县\",\n  540300: \"昌都市\",\n  540302: \"卡若区\",\n  540321: \"江达县\",\n  540322: \"贡觉县\",\n  540323: \"类乌齐县\",\n  540324: \"丁青县\",\n  540325: \"察雅县\",\n  540326: \"八宿县\",\n  540327: \"左贡县\",\n  540328: \"芒康县\",\n  540329: \"洛隆县\",\n  540330: \"边坝县\",\n  540400: \"林芝市\",\n  540402: \"巴宜区\",\n  540421: \"工布江达县\",\n  540422: \"米林县\",\n  540423: \"墨脱县\",\n  540424: \"波密县\",\n  540425: \"察隅县\",\n  540426: \"朗县\",\n  540500: \"山南市\",\n  540501: \"市辖区\",\n  540502: \"乃东区\",\n  540521: \"扎囊县\",\n  540522: \"贡嘎县\",\n  540523: \"桑日县\",\n  540524: \"琼结县\",\n  540525: \"曲松县\",\n  540526: \"措美县\",\n  540527: \"洛扎县\",\n  540528: \"加查县\",\n  540529: \"隆子县\",\n  540530: \"错那县\",\n  540531: \"浪卡子县\",\n  542400: \"那曲地区\",\n  542421: \"那曲县\",\n  542422: \"嘉黎县\",\n  542423: \"比如县\",\n  542424: \"聂荣县\",\n  542425: \"安多县\",\n  542426: \"申扎县\",\n  542427: \"索县\",\n  542428: \"班戈县\",\n  542429: \"巴青县\",\n  542430: \"尼玛县\",\n  542431: \"双湖县\",\n  542500: \"阿里地区\",\n  542521: \"普兰县\",\n  542522: \"札达县\",\n  542523: \"噶尔县\",\n  542524: \"日土县\",\n  542525: \"革吉县\",\n  542526: \"改则县\",\n  542527: \"措勤县\",\n  61e4: \"陕西省\",\n  610100: \"西安市\",\n  610101: \"市辖区\",\n  610102: \"新城区\",\n  610103: \"碑林区\",\n  610104: \"莲湖区\",\n  610111: \"灞桥区\",\n  610112: \"未央区\",\n  610113: \"雁塔区\",\n  610114: \"阎良区\",\n  610115: \"临潼区\",\n  610116: \"长安区\",\n  610117: \"高陵区\",\n  610122: \"蓝田县\",\n  610124: \"周至县\",\n  610125: \"户县\",\n  610200: \"铜川市\",\n  610201: \"市辖区\",\n  610202: \"王益区\",\n  610203: \"印台区\",\n  610204: \"耀州区\",\n  610222: \"宜君县\",\n  610300: \"宝鸡市\",\n  610301: \"市辖区\",\n  610302: \"渭滨区\",\n  610303: \"金台区\",\n  610304: \"陈仓区\",\n  610322: \"凤翔县\",\n  610323: \"岐山县\",\n  610324: \"扶风县\",\n  610326: \"眉县\",\n  610327: \"陇县\",\n  610328: \"千阳县\",\n  610329: \"麟游县\",\n  610330: \"凤县\",\n  610331: \"太白县\",\n  610400: \"咸阳市\",\n  610401: \"市辖区\",\n  610402: \"秦都区\",\n  610403: \"杨陵区\",\n  610404: \"渭城区\",\n  610422: \"三原县\",\n  610423: \"泾阳县\",\n  610424: \"乾县\",\n  610425: \"礼泉县\",\n  610426: \"永寿县\",\n  610427: \"彬县\",\n  610428: \"长武县\",\n  610429: \"旬邑县\",\n  610430: \"淳化县\",\n  610431: \"武功县\",\n  610481: \"兴平市\",\n  610500: \"渭南市\",\n  610501: \"市辖区\",\n  610502: \"临渭区\",\n  610503: \"华州区\",\n  610522: \"潼关县\",\n  610523: \"大荔县\",\n  610524: \"合阳县\",\n  610525: \"澄城县\",\n  610526: \"蒲城县\",\n  610527: \"白水县\",\n  610528: \"富平县\",\n  610581: \"韩城市\",\n  610582: \"华阴市\",\n  610600: \"延安市\",\n  610601: \"市辖区\",\n  610602: \"宝塔区\",\n  610603: \"安塞区\",\n  610621: \"延长县\",\n  610622: \"延川县\",\n  610623: \"子长县\",\n  610625: \"志丹县\",\n  610626: \"吴起县\",\n  610627: \"甘泉县\",\n  610628: \"富县\",\n  610629: \"洛川县\",\n  610630: \"宜川县\",\n  610631: \"黄龙县\",\n  610632: \"黄陵县\",\n  610700: \"汉中市\",\n  610701: \"市辖区\",\n  610702: \"汉台区\",\n  610721: \"南郑县\",\n  610722: \"城固县\",\n  610723: \"洋县\",\n  610724: \"西乡县\",\n  610725: \"勉县\",\n  610726: \"宁强县\",\n  610727: \"略阳县\",\n  610728: \"镇巴县\",\n  610729: \"留坝县\",\n  610730: \"佛坪县\",\n  610800: \"榆林市\",\n  610801: \"市辖区\",\n  610802: \"榆阳区\",\n  610803: \"横山区\",\n  610821: \"神木县\",\n  610822: \"府谷县\",\n  610824: \"靖边县\",\n  610825: \"定边县\",\n  610826: \"绥德县\",\n  610827: \"米脂县\",\n  610828: \"佳县\",\n  610829: \"吴堡县\",\n  610830: \"清涧县\",\n  610831: \"子洲县\",\n  610900: \"安康市\",\n  610901: \"市辖区\",\n  610902: \"汉滨区\",\n  610921: \"汉阴县\",\n  610922: \"石泉县\",\n  610923: \"宁陕县\",\n  610924: \"紫阳县\",\n  610925: \"岚皋县\",\n  610926: \"平利县\",\n  610927: \"镇坪县\",\n  610928: \"旬阳县\",\n  610929: \"白河县\",\n  611e3: \"商洛市\",\n  611001: \"市辖区\",\n  611002: \"商州区\",\n  611021: \"洛南县\",\n  611022: \"丹凤县\",\n  611023: \"商南县\",\n  611024: \"山阳县\",\n  611025: \"镇安县\",\n  611026: \"柞水县\",\n  62e4: \"甘肃省\",\n  620100: \"兰州市\",\n  620101: \"市辖区\",\n  620102: \"城关区\",\n  620103: \"七里河区\",\n  620104: \"西固区\",\n  620105: \"安宁区\",\n  620111: \"红古区\",\n  620121: \"永登县\",\n  620122: \"皋兰县\",\n  620123: \"榆中县\",\n  620200: \"嘉峪关市\",\n  620201: \"市辖区\",\n  620300: \"金昌市\",\n  620301: \"市辖区\",\n  620302: \"金川区\",\n  620321: \"永昌县\",\n  620400: \"白银市\",\n  620401: \"市辖区\",\n  620402: \"白银区\",\n  620403: \"平川区\",\n  620421: \"靖远县\",\n  620422: \"会宁县\",\n  620423: \"景泰县\",\n  620500: \"天水市\",\n  620501: \"市辖区\",\n  620502: \"秦州区\",\n  620503: \"麦积区\",\n  620521: \"清水县\",\n  620522: \"秦安县\",\n  620523: \"甘谷县\",\n  620524: \"武山县\",\n  620525: \"张家川回族自治县\",\n  620600: \"武威市\",\n  620601: \"市辖区\",\n  620602: \"凉州区\",\n  620621: \"民勤县\",\n  620622: \"古浪县\",\n  620623: \"天祝藏族自治县\",\n  620700: \"张掖市\",\n  620701: \"市辖区\",\n  620702: \"甘州区\",\n  620721: \"肃南裕固族自治县\",\n  620722: \"民乐县\",\n  620723: \"临泽县\",\n  620724: \"高台县\",\n  620725: \"山丹县\",\n  620800: \"平凉市\",\n  620801: \"市辖区\",\n  620802: \"崆峒区\",\n  620821: \"泾川县\",\n  620822: \"灵台县\",\n  620823: \"崇信县\",\n  620824: \"华亭县\",\n  620825: \"庄浪县\",\n  620826: \"静宁县\",\n  620900: \"酒泉市\",\n  620901: \"市辖区\",\n  620902: \"肃州区\",\n  620921: \"金塔县\",\n  620922: \"瓜州县\",\n  620923: \"肃北蒙古族自治县\",\n  620924: \"阿克塞哈萨克族自治县\",\n  620981: \"玉门市\",\n  620982: \"敦煌市\",\n  621e3: \"庆阳市\",\n  621001: \"市辖区\",\n  621002: \"西峰区\",\n  621021: \"庆城县\",\n  621022: \"环县\",\n  621023: \"华池县\",\n  621024: \"合水县\",\n  621025: \"正宁县\",\n  621026: \"宁县\",\n  621027: \"镇原县\",\n  621100: \"定西市\",\n  621101: \"市辖区\",\n  621102: \"安定区\",\n  621121: \"通渭县\",\n  621122: \"陇西县\",\n  621123: \"渭源县\",\n  621124: \"临洮县\",\n  621125: \"漳县\",\n  621126: \"岷县\",\n  621200: \"陇南市\",\n  621201: \"市辖区\",\n  621202: \"武都区\",\n  621221: \"成县\",\n  621222: \"文县\",\n  621223: \"宕昌县\",\n  621224: \"康县\",\n  621225: \"西和县\",\n  621226: \"礼县\",\n  621227: \"徽县\",\n  621228: \"两当县\",\n  622900: \"临夏回族自治州\",\n  622901: \"临夏市\",\n  622921: \"临夏县\",\n  622922: \"康乐县\",\n  622923: \"永靖县\",\n  622924: \"广河县\",\n  622925: \"和政县\",\n  622926: \"东乡族自治县\",\n  622927: \"积石山保安族东乡族撒拉族自治县\",\n  623e3: \"甘南藏族自治州\",\n  623001: \"合作市\",\n  623021: \"临潭县\",\n  623022: \"卓尼县\",\n  623023: \"舟曲县\",\n  623024: \"迭部县\",\n  623025: \"玛曲县\",\n  623026: \"碌曲县\",\n  623027: \"夏河县\",\n  63e4: \"青海省\",\n  630100: \"西宁市\",\n  630101: \"市辖区\",\n  630102: \"城东区\",\n  630103: \"城中区\",\n  630104: \"城西区\",\n  630105: \"城北区\",\n  630121: \"大通回族土族自治县\",\n  630122: \"湟中县\",\n  630123: \"湟源县\",\n  630200: \"海东市\",\n  630202: \"乐都区\",\n  630203: \"平安区\",\n  630222: \"民和回族土族自治县\",\n  630223: \"互助土族自治县\",\n  630224: \"化隆回族自治县\",\n  630225: \"循化撒拉族自治县\",\n  632200: \"海北藏族自治州\",\n  632221: \"门源回族自治县\",\n  632222: \"祁连县\",\n  632223: \"海晏县\",\n  632224: \"刚察县\",\n  632300: \"黄南藏族自治州\",\n  632321: \"同仁县\",\n  632322: \"尖扎县\",\n  632323: \"泽库县\",\n  632324: \"河南蒙古族自治县\",\n  632500: \"海南藏族自治州\",\n  632521: \"共和县\",\n  632522: \"同德县\",\n  632523: \"贵德县\",\n  632524: \"兴海县\",\n  632525: \"贵南县\",\n  632600: \"果洛藏族自治州\",\n  632621: \"玛沁县\",\n  632622: \"班玛县\",\n  632623: \"甘德县\",\n  632624: \"达日县\",\n  632625: \"久治县\",\n  632626: \"玛多县\",\n  632700: \"玉树藏族自治州\",\n  632701: \"玉树市\",\n  632722: \"杂多县\",\n  632723: \"称多县\",\n  632724: \"治多县\",\n  632725: \"囊谦县\",\n  632726: \"曲麻莱县\",\n  632800: \"海西蒙古族藏族自治州\",\n  632801: \"格尔木市\",\n  632802: \"德令哈市\",\n  632821: \"乌兰县\",\n  632822: \"都兰县\",\n  632823: \"天峻县\",\n  64e4: \"宁夏回族自治区\",\n  640100: \"银川市\",\n  640101: \"市辖区\",\n  640104: \"兴庆区\",\n  640105: \"西夏区\",\n  640106: \"金凤区\",\n  640121: \"永宁县\",\n  640122: \"贺兰县\",\n  640181: \"灵武市\",\n  640200: \"石嘴山市\",\n  640201: \"市辖区\",\n  640202: \"大武口区\",\n  640205: \"惠农区\",\n  640221: \"平罗县\",\n  640300: \"吴忠市\",\n  640301: \"市辖区\",\n  640302: \"利通区\",\n  640303: \"红寺堡区\",\n  640323: \"盐池县\",\n  640324: \"同心县\",\n  640381: \"青铜峡市\",\n  640400: \"固原市\",\n  640401: \"市辖区\",\n  640402: \"原州区\",\n  640422: \"西吉县\",\n  640423: \"隆德县\",\n  640424: \"泾源县\",\n  640425: \"彭阳县\",\n  640500: \"中卫市\",\n  640501: \"市辖区\",\n  640502: \"沙坡头区\",\n  640521: \"中宁县\",\n  640522: \"海原县\",\n  65e4: \"新疆维吾尔自治区\",\n  650100: \"乌鲁木齐市\",\n  650101: \"市辖区\",\n  650102: \"天山区\",\n  650103: \"沙依巴克区\",\n  650104: \"新市区\",\n  650105: \"水磨沟区\",\n  650106: \"头屯河区\",\n  650107: \"达坂城区\",\n  650109: \"米东区\",\n  650121: \"乌鲁木齐县\",\n  650200: \"克拉玛依市\",\n  650201: \"市辖区\",\n  650202: \"独山子区\",\n  650203: \"克拉玛依区\",\n  650204: \"白碱滩区\",\n  650205: \"乌尔禾区\",\n  650400: \"吐鲁番市\",\n  650402: \"高昌区\",\n  650421: \"鄯善县\",\n  650422: \"托克逊县\",\n  650500: \"哈密市\",\n  650502: \"伊州区\",\n  650521: \"巴里坤哈萨克自治县\",\n  650522: \"伊吾县\",\n  652300: \"昌吉回族自治州\",\n  652301: \"昌吉市\",\n  652302: \"阜康市\",\n  652323: \"呼图壁县\",\n  652324: \"玛纳斯县\",\n  652325: \"奇台县\",\n  652327: \"吉木萨尔县\",\n  652328: \"木垒哈萨克自治县\",\n  652700: \"博尔塔拉蒙古自治州\",\n  652701: \"博乐市\",\n  652702: \"阿拉山口市\",\n  652722: \"精河县\",\n  652723: \"温泉县\",\n  652800: \"巴音郭楞蒙古自治州\",\n  652801: \"库尔勒市\",\n  652822: \"轮台县\",\n  652823: \"尉犁县\",\n  652824: \"若羌县\",\n  652825: \"且末县\",\n  652826: \"焉耆回族自治县\",\n  652827: \"和静县\",\n  652828: \"和硕县\",\n  652829: \"博湖县\",\n  652900: \"阿克苏地区\",\n  652901: \"阿克苏市\",\n  652922: \"温宿县\",\n  652923: \"库车县\",\n  652924: \"沙雅县\",\n  652925: \"新和县\",\n  652926: \"拜城县\",\n  652927: \"乌什县\",\n  652928: \"阿瓦提县\",\n  652929: \"柯坪县\",\n  653e3: \"克孜勒苏柯尔克孜自治州\",\n  653001: \"阿图什市\",\n  653022: \"阿克陶县\",\n  653023: \"阿合奇县\",\n  653024: \"乌恰县\",\n  653100: \"喀什地区\",\n  653101: \"喀什市\",\n  653121: \"疏附县\",\n  653122: \"疏勒县\",\n  653123: \"英吉沙县\",\n  653124: \"泽普县\",\n  653125: \"莎车县\",\n  653126: \"叶城县\",\n  653127: \"麦盖提县\",\n  653128: \"岳普湖县\",\n  653129: \"伽师县\",\n  653130: \"巴楚县\",\n  653131: \"塔什库尔干塔吉克自治县\",\n  653200: \"和田地区\",\n  653201: \"和田市\",\n  653221: \"和田县\",\n  653222: \"墨玉县\",\n  653223: \"皮山县\",\n  653224: \"洛浦县\",\n  653225: \"策勒县\",\n  653226: \"于田县\",\n  653227: \"民丰县\",\n  654e3: \"伊犁哈萨克自治州\",\n  654002: \"伊宁市\",\n  654003: \"奎屯市\",\n  654004: \"霍尔果斯市\",\n  654021: \"伊宁县\",\n  654022: \"察布查尔锡伯自治县\",\n  654023: \"霍城县\",\n  654024: \"巩留县\",\n  654025: \"新源县\",\n  654026: \"昭苏县\",\n  654027: \"特克斯县\",\n  654028: \"尼勒克县\",\n  654200: \"塔城地区\",\n  654201: \"塔城市\",\n  654202: \"乌苏市\",\n  654221: \"额敏县\",\n  654223: \"沙湾县\",\n  654224: \"托里县\",\n  654225: \"裕民县\",\n  654226: \"和布克赛尔蒙古自治县\",\n  654300: \"阿勒泰地区\",\n  654301: \"阿勒泰市\",\n  654321: \"布尔津县\",\n  654322: \"富蕴县\",\n  654323: \"福海县\",\n  654324: \"哈巴河县\",\n  654325: \"青河县\",\n  654326: \"吉木乃县\",\n  659e3: \"自治区直辖县级行政区划\",\n  659001: \"石河子市\",\n  659002: \"阿拉尔市\",\n  659003: \"图木舒克市\",\n  659004: \"五家渠市\",\n  659006: \"铁门关市\",\n  71e4: \"台湾省\",\n  81e4: \"香港特别行政区\",\n  82e4: \"澳门特别行政区\"\n};\nfunction qu(e, t, n) {\n  if (!e || e.length !== t || !/^[0-9A-Z]+$/.test(e))\n    throw new Error(n);\n}\nfunction re(e, t, n) {\n  if (t.findIndex((r) => r == e) < 0)\n    throw new Error(n);\n}\nfunction Hf(e, t, n) {\n  const r = Object.entries(t).find(([i]) => i == e);\n  if (!r)\n    throw new Error(n || `{ ${e} } 不在范围内！`);\n  return r[1];\n}\nfunction Xf(e, t, n) {\n  const r = Object.entries(t).find(([i, s]) => s == e);\n  if (!r)\n    throw new Error(n || `{ ${e} } 不在范围内！`);\n  return r[0];\n}\nfunction Wu(e, t, n, r) {\n  let i = 0;\n  for (let s = 0, o = n.length; s < o; s++) {\n    if (!(e[s] in r))\n      throw new Error(\n        `计算校验码失败: 参与校验的字符 { ${e[s]} } 不在代码字符集范围内！`\n      );\n    const u = r[e[s]];\n    i += u * n[s];\n  }\n  return i = (t - i % t) % t, Xf(\n    i,\n    r,\n    `计算校验码失败: 校验码 { ${i} } 不在代码字符集范围内！`\n  );\n}\nconst Yf = 11, e1 = [3, 7, 9, 10, 5, 8, 4, 2], t1 = {\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3,\n  4: 4,\n  5: 5,\n  6: 6,\n  7: 7,\n  8: 8,\n  9: 9,\n  A: 10,\n  B: 11,\n  C: 12,\n  D: 13,\n  E: 14,\n  F: 15,\n  G: 16,\n  H: 17,\n  I: 18,\n  J: 19,\n  K: 20,\n  L: 21,\n  M: 22,\n  N: 23,\n  O: 24,\n  P: 25,\n  Q: 26,\n  R: 27,\n  S: 28,\n  T: 29,\n  U: 30,\n  V: 31,\n  W: 32,\n  X: 33,\n  Y: 34,\n  Z: 35\n};\nfunction n1(e) {\n  if (qu(\n    e,\n    9,\n    \"不符合《GB 11714-1997》：组织机构代码只能 9 位 且 大写！\"\n  ), Wu(e, Yf, e1, t1) !== e[8])\n    throw new Error(\"不符合《GB 11714-1997》：校验码检验失败\");\n  return !0;\n}\nconst r1 = 31, i1 = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28], s1 = {\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3,\n  4: 4,\n  5: 5,\n  6: 6,\n  7: 7,\n  8: 8,\n  9: 9,\n  A: 10,\n  B: 11,\n  C: 12,\n  D: 13,\n  E: 14,\n  F: 15,\n  G: 16,\n  H: 17,\n  J: 18,\n  K: 19,\n  L: 20,\n  M: 21,\n  N: 22,\n  P: 23,\n  Q: 24,\n  R: 25,\n  T: 26,\n  U: 27,\n  W: 28,\n  X: 29,\n  Y: 30\n};\nfunction KF(e) {\n  qu(\n    e,\n    18,\n    \"不符合《GB 32100-2015》：税号只能 18 位 且 大写！\"\n  );\n  const t = e[0];\n  re(\n    t,\n    [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"A\", \"N\", \"Y\"],\n    \"不符合《GB 32100-2015》： { 第1位 : 登记管理部门代码 } \"\n  );\n  const n = e[1], r = \"不符合《GB 32100-2015》： { 第2位 : 机构类别代码 } \";\n  switch (t) {\n    case \"1\":\n      re(n, [\"1\", \"2\", \"3\", \"9\"], r);\n      break;\n    case \"2\":\n      re(n, [\"1\", \"9\"], r);\n      break;\n    case \"3\":\n      re(\n        n,\n        [\"1\", \"2\", \"3\", \"4\", \"5\", \"9\"],\n        r\n      );\n      break;\n    case \"4\":\n      re(n, [\"1\", \"9\"], r);\n      break;\n    case \"5\":\n      re(n, [\"1\", \"2\", \"3\", \"9\"], r);\n      break;\n    case \"6\":\n      re(n, [\"1\", \"2\", \"9\"], r);\n      break;\n    case \"7\":\n      re(n, [\"1\", \"2\", \"9\"], r);\n      break;\n    case \"8\":\n      re(n, [\"1\", \"9\"], r);\n      break;\n    case \"9\":\n      re(n, [\"1\", \"2\", \"3\"], r);\n      break;\n    case \"A\":\n      re(n, [\"1\", \"9\"], r);\n      break;\n    case \"N\":\n      re(n, [\"1\", \"2\", \"3\", \"9\"], r);\n      break;\n    case \"Y\":\n      re(n, [\"1\"], r);\n      break;\n  }\n  const i = e.substring(2, 8);\n  Hf(\n    i,\n    Jf,\n    \"不符合《GB 32100-2015》： { 第3位 ~ 第8位 : 登记管理机关行政区划码 } \"\n  );\n  const s = e.substring(8, 17);\n  try {\n    n1(s);\n  } catch {\n    throw new Error(\n      \"不符合《GB 32100-2015》： { 第9位 ~ 第17位 : 主体标识码 (组织机构代码) }\"\n    );\n  }\n  if (Wu(e, r1, i1, s1) !== e[17])\n    throw new Error(\"不符合《GB 32100-2015》：校验码检验失败\");\n  return !0;\n}\nfunction Gu(e = window.location.href, t) {\n  try {\n    return new URL(e, t);\n  } catch {\n    const r = \"(?<protocol>https?:)\", i = \"(?<host>(?<hostname>[^/#?:]+)(?::(?<port>\\\\d+))?)\", s = \"(?<pathname>(?:\\\\/[^/#?]+)*\\\\/?)\", o = \"(?<search>(?:\\\\?[^#]*)?)\", u = \"(?<hash>(?:#.*)?)\", c = new RegExp(`^${r}//${i}${s}${o}${u}$`).exec(e);\n    return {\n      href: e,\n      protocol: c?.groups?.protocol || \"\",\n      host: c?.groups?.host || \"\",\n      hostname: c?.groups?.hostname || \"\",\n      port: c?.groups?.port || \"\",\n      pathname: c?.groups?.pathname || \"\",\n      search: c?.groups?.search || \"\",\n      hash: c?.groups?.hash || \"\"\n    };\n  }\n}\nconst o1 = /https?|ftp|gopher|file/;\nfunction QF(e) {\n  let { auth: t } = e;\n  const { hostname: n } = e;\n  let r = e.protocol || \"\", i = e.pathname || \"\", s = e.hash || \"\", o = e.query || \"\", u = !1;\n  t = t ? encodeURIComponent(t).replace(/%3A/i, \":\") + \"@\" : \"\", e.host ? u = t + e.host : n && (u = t + (~n.indexOf(\":\") ? `[${n}]` : n), e.port && (u += \":\" + e.port)), o && typeof o == \"object\" && (o = String(u1(o)));\n  let a = e.search || o && `?${o}` || \"\";\n  return r && !r.endsWith(\":\") && (r += \":\"), e.slashes || (!r || o1.test(r)) && u !== !1 ? (u = \"//\" + (u || \"\"), i && i[0] !== \"/\" && (i = \"/\" + i)) : u || (u = \"\"), s && s[0] !== \"#\" && (s = \"#\" + s), a && a[0] !== \"?\" && (a = \"?\" + a), i = i.replace(/[?#]/g, encodeURIComponent), a = a.replace(\"#\", \"%23\"), `${r}${u}${i}${a}${s}`;\n}\nfunction JF(e) {\n  const t = Gu(e);\n  return t.protocol === \"http:\" || t.protocol === \"https:\";\n}\nfunction HF() {\n  return new URLSearchParams(window.location.search);\n}\nfunction ds(e) {\n  return typeof e == \"string\" || typeof e == \"number\" && !Number.isNaN(e) || typeof e == \"boolean\" ? String(e) : \"\";\n}\nfunction u1(e) {\n  const t = new URLSearchParams();\n  return Object.entries(e).forEach(([n, r]) => {\n    Array.isArray(r) ? r.forEach((i) => t.append(n, ds(i))) : t.set(n, ds(r));\n  }), t;\n}\nfunction a1(e) {\n  return !e.includes(\"://\") || e.includes(window.location.origin);\n}\nfunction XF(e = window.location.href) {\n  const t = Gu(e), n = t.href.indexOf(t.hash);\n  return t.hash && n >= 0 ? t.href.substring(0, n) : t.href;\n}\nfunction c1(e, t) {\n  return e.replace(/(?:\\?.*)?$/, t.replace(/^[&?]/, \"?\"));\n}\nfunction YF(e, t) {\n  return c1(e, Vu(t));\n}\nfunction l1(e, t) {\n  return e + t.replace(/^[&?]/, e.indexOf(\"?\") >= 0 ? \"&\" : \"?\");\n}\nfunction eE(e, t) {\n  return l1(e, Vu(t));\n}\nfunction tE(e = window.location.href) {\n  const t = {};\n  let n = decodeURIComponent(e).split(/[?]/)[1];\n  if (n || (n = e), n = n.replace(/^[#?&]/, \"\"), n = n.replace(/#\\/(([^?&=]*))$/, \"\"), n) {\n    const r = /(?:^|&)([^&=]*)=?([^&]*?)(?=&|$)/y;\n    let i = r.exec(n);\n    for (; i; )\n      t[i[1]] = i[2], i = r.exec(n);\n  }\n  return t;\n}\nfunction nE(e = window.location.href) {\n  return JSON.parse(\n    '{\"' + decodeURI(e.split(\"?\")[1]).replace(/\"/g, '\\\\\"').replace(/&/g, '\",\"').replace(/=/g, '\":\"') + '\"}'\n  );\n}\nfunction Vu(e) {\n  return \"?\" + Object.entries(e).map(([t, n]) => `${encodeURIComponent(t)}=${encodeURIComponent(n)}`).join(\"&\");\n}\nfunction rE(e) {\n  return \"?\" + [...e.entries()].map(\n    (t) => encodeURIComponent(t[0]) + \"=\" + encodeURIComponent(t[1] instanceof File ? t[1].name : t[1])\n  ).join(\"&\");\n}\nasync function h1(e, t) {\n  if (a1(e))\n    return e;\n  const r = await (await fetch(e)).text(), i = new URL(e).href.split(\"/\");\n  i.pop();\n  const s = `const _importScripts = importScripts;\nconst _fixImports = (url) => new URL(url, '${i.join(\"/\") + \"/\"}').href;\nimportScripts = (...urls) => _importScripts(...urls.map(_fixImports));\n`, o = \"application/javascript\";\n  let u = `data:${o},` + encodeURIComponent(s + r);\n  return (typeof t?.useBlob == \"boolean\" ? t?.useBlob : !0) && (u = URL.createObjectURL(\n    new Blob([`importScripts(\"${u}\")`], { type: o })\n  )), u;\n}\nclass iE {\n  worker;\n  constructor() {\n    if (!Th)\n      throw new Error(\"Your environment do not support Worker !\");\n  }\n  async createFromURL(t, n = !1) {\n    const r = await h1(t);\n    return n ? (this.worker = new SharedWorker(r, {\n      type: \"module\"\n      // 声明为 ES 模块，默认是 classic\n    }), this.worker.port.start()) : this.worker = new Worker(r, {\n      type: \"module\"\n      // 声明为 ES 模块，默认是 classic\n    }), this.worker;\n  }\n  async createFromCode(t, n = !1) {\n    const r = new Blob([t]), i = URL.createObjectURL(r);\n    return n ? (this.worker = new SharedWorker(i, {\n      type: \"module\"\n      // 声明为 ES 模块，默认是 classic\n    }), this.worker.port.start()) : this.worker = new Worker(i, {\n      type: \"module\"\n      // 声明为 ES 模块，默认是 classic\n    }), this.worker;\n  }\n  terminate() {\n    this.worker instanceof Worker && this.worker.terminate(), this.worker instanceof SharedWorker && this.worker.port.close();\n  }\n  // type Transferable = OffscreenCanvas | ImageBitmap | MessagePort | ReadableStream | WritableStream | TransformStream | ArrayBuffer;\n  postMessage(t, n = []) {\n    const r = Do();\n    return this.worker instanceof Worker && this.worker.postMessage({ id: r, message: t }, n), this.worker instanceof SharedWorker && this.worker.port.postMessage({ id: r, message: t }, n), r;\n  }\n  postCanvas(t) {\n    const n = t.transferControlToOffscreen();\n    this.postMessage({ canvas: n }, [n]);\n  }\n  postPort(t) {\n    this.postMessage({ port: t }, [t]);\n  }\n  onmessage(t) {\n    this.worker instanceof Worker && this.worker.addEventListener(\"message\", t), this.worker instanceof SharedWorker && this.worker.port.addEventListener(\"message\", t);\n  }\n  offmessage(t) {\n    this.worker instanceof Worker && this.worker.removeEventListener(\"message\", t), this.worker instanceof SharedWorker && this.worker.port.removeEventListener(\"message\", t);\n  }\n  onmessageerror(t) {\n    this.worker instanceof Worker && this.worker.addEventListener(\"messageerror\", t), this.worker instanceof SharedWorker && this.worker.port.addEventListener(\"messageerror\", t);\n  }\n  offmessageerror(t) {\n    this.worker instanceof Worker && this.worker.removeEventListener(\"messageerror\", t), this.worker instanceof SharedWorker && this.worker.port.removeEventListener(\"messageerror\", t);\n  }\n}\nfunction Ku(e) {\n  return e * Math.PI / 180;\n}\nconst sE = Ku;\nfunction oe(e) {\n  return e * 180 / Math.PI;\n}\nconst oE = oe;\nfunction xr(e, t, n = 0) {\n  return Math.sqrt(e * e + t * t + n * n);\n}\nfunction uE(e, t, n, r) {\n  return xr(n - e, r - t);\n}\nfunction f1(e, t, n, r) {\n  let i = Math.atan2(r - t, n - e);\n  return i < 0 && (i += Math.PI * 2), i;\n}\nfunction aE(e, t) {\n  return {\n    dx: Math.cos(e) * t,\n    dy: Math.sin(e) * t\n  };\n}\nfunction cE(e, t, n) {\n  if (typeof n == \"number\") {\n    const r = xr(e, t, n);\n    return {\n      x: e /= r,\n      y: t /= r,\n      z: n /= r\n    };\n  } else {\n    const r = xr(e, t);\n    return {\n      x: e /= r,\n      y: t /= r\n    };\n  }\n}\nfunction lE(e, t, n, r, i = 10) {\n  if (Math.abs(n - e) < i && Math.abs(r - t) < i)\n    return \"no\";\n  const s = oe(f1(e, t, n, r));\n  return s >= -135 && s <= -45 ? \"up\" : s > 45 && s < 135 ? \"down\" : s >= 135 && s <= 180 || s >= -180 && s < -135 ? \"left\" : \"right\";\n}\nfunction d1(e) {\n  const t = [];\n  return e.replace(\n    /([a-z0-9]+)\\s*\\(?\\s*((-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)*[a-z%]*\\s*,?\\s*)+)\\)?/gi,\n    (n, r, i) => {\n      const s = [];\n      return i.split(/\\s*[,\\s]+\\s*/).forEach((o) => {\n        o.trim() && s.push({\n          v: X(o, 0),\n          unit: o.match(/[a-z%]+$/)?.[0] || \"\"\n        });\n      }), t.push({\n        command: r,\n        values: s\n      }), \"\";\n    }\n  ), t;\n}\nfunction ye(e, t = 0) {\n  if (!e)\n    return t;\n  switch (e.unit) {\n    case \"turn\":\n      return e.v * 360;\n    case \"rad\":\n      return oe(e.v);\n    case \"deg\":\n    default:\n      return e.v;\n  }\n}\nfunction hE(e, t) {\n  if (!e || !t)\n    return !1;\n  const n = e.x !== t.x, r = e.y !== t.y;\n  return n || r;\n}\nclass Z {\n  precision = 1e-6;\n  x;\n  y;\n  z;\n  w;\n  // 齐次坐标 w = 1：表示 3D 点坐标  w = 0：作为一个向量或方向使用\n  constructor(t = 0, n = 0, r = 0, i = 1) {\n    this.x = t, this.y = n, this.z = r, this.w = i;\n  }\n  clone() {\n    return new Z(this.x, this.y, this.z, this.w);\n  }\n  add(t) {\n    return new Z(this.x + t.x, this.y + t.y, this.z + t.z, this.w);\n  }\n  sub(t) {\n    return new Z(this.x - t.x, this.y - t.y, this.z - t.z, this.w);\n  }\n  multiply(t) {\n    return new Z(this.x * t.x, this.y * t.y, this.z * t.z, this.w);\n  }\n  divide(t) {\n    return new Z(this.x / t.x, this.y / t.y, this.z / t.z, this.w);\n  }\n  min(t) {\n    return new Z(\n      Math.min(this.x, t.x),\n      Math.min(this.y, t.y),\n      Math.min(this.z, t.z),\n      this.w\n    );\n  }\n  max(t) {\n    return new Z(\n      Math.max(this.x, t.x),\n      Math.max(this.y, t.y),\n      Math.max(this.z, t.z),\n      this.w\n    );\n  }\n  clamp(t, n) {\n    return new Z(\n      N(this.x, t.x, n.x),\n      N(this.y, t.y, n.y),\n      N(this.z, t.z, n.z),\n      this.w\n    );\n  }\n  floor() {\n    return new Z(\n      Math.floor(this.x),\n      Math.floor(this.y),\n      Math.floor(this.z),\n      this.w\n    );\n  }\n  ceil() {\n    return new Z(\n      Math.ceil(this.x),\n      Math.ceil(this.y),\n      Math.ceil(this.z),\n      this.w\n    );\n  }\n  round() {\n    return new Z(\n      Math.round(this.x),\n      Math.round(this.y),\n      Math.round(this.z),\n      this.w\n    );\n  }\n  roundToZero() {\n    return new Z(\n      Math.trunc(this.x),\n      Math.trunc(this.y),\n      Math.trunc(this.z),\n      this.w\n    );\n  }\n  negate() {\n    return new Z(\n      this.x - this.x,\n      this.y - this.y,\n      this.z - this.z,\n      this.w\n    );\n  }\n  // Returns the scalar product of the vector with the argument\n  // Both vectors must have equal dimensionality\n  dot(t) {\n    const n = t.toArray(), r = this.toArray();\n    let i = 0, s = 3;\n    do\n      i += r[s - 1] * n[s - 1];\n    while (--s);\n    return i;\n  }\n  // Returns the vector product of the vector with the argument\n  // Both vectors must have dimensionality 3\n  cross(t) {\n    const n = t.toArray(), r = this.toArray();\n    return new Z(\n      r[1] * n[2] - r[2] * n[1],\n      r[2] * n[0] - r[0] * n[2],\n      r[0] * n[1] - r[1] * n[0]\n    );\n  }\n  length() {\n    return Math.sqrt(this.dot(this));\n  }\n  distance(t) {\n    return this.sub(t).length();\n  }\n  normalize() {\n    const t = this.length();\n    return t == 0 ? new Z() : new Z(this.x / t, this.y / t, this.z / t, this.w);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n  }\n  // Returns the angle between the vector and the argument (also a vector)\n  degreeFrom(t) {\n    const n = t.toArray();\n    let r = 0, i = 0, s = 0;\n    if (this.toArray().forEach((u, a) => {\n      r += u * n[a], i += u * u, s += n[a] * n[a];\n    }), i = Math.sqrt(i), s = Math.sqrt(s), i * s === 0)\n      return;\n    let o = r / (i * s);\n    return o < -1 && (o = -1), o > 1 && (o = 1), oe(Math.acos(o));\n  }\n  // Returns true iff the vector is parallel to the argument\n  isParallelTo(t) {\n    const n = this.degreeFrom(t);\n    return n === void 0 ? void 0 : n <= this.precision;\n  }\n  // 2D: 与 x 轴正方向之间的弧度值\n  radian() {\n    let t = Math.atan2(this.y, this.x);\n    return t < 0 && (t += Math.PI * 2), t;\n  }\n  // 2D: 与 x 轴正方向之间的角度值\n  degree() {\n    return oe(this.radian());\n  }\n  // 2D: 返回滑动方向\n  getDirection(t = 10) {\n    if (Math.abs(this.x) < t && Math.abs(this.y) < t)\n      return \"no\";\n    const n = this.degree();\n    return n >= -135 && n <= -45 ? \"up\" : n > 45 && n < 135 ? \"down\" : n >= 135 && n <= 180 || n >= -180 && n < -135 ? \"left\" : \"right\";\n  }\n  toArray() {\n    return [this.x, this.y, this.z, this.w];\n  }\n  *[Symbol.iterator]() {\n    yield this.x, yield this.y, yield this.z, yield this.w;\n  }\n}\nclass pe {\n  _elements;\n  _margin;\n  // protected isCoordinateChanged = false;\n  // private _is2D: boolean;\n  // 2D矩阵属性\n  get a() {\n    return this._elements[0];\n  }\n  set a(t) {\n    this._elements[0] = t;\n  }\n  get b() {\n    return this._elements[1];\n  }\n  set b(t) {\n    this._elements[1] = t;\n  }\n  get c() {\n    return this._elements[4];\n  }\n  set c(t) {\n    this._elements[4] = t;\n  }\n  get d() {\n    return this._elements[5];\n  }\n  set d(t) {\n    this._elements[5] = t;\n  }\n  get e() {\n    return this._elements[12];\n  }\n  set e(t) {\n    this._elements[12] = t;\n  }\n  get f() {\n    return this._elements[13];\n  }\n  set f(t) {\n    this._elements[13] = t;\n  }\n  // 3D矩阵属性\n  get m11() {\n    return this._elements[0];\n  }\n  set m11(t) {\n    this._elements[0] = t;\n  }\n  get m12() {\n    return this._elements[1];\n  }\n  set m12(t) {\n    this._elements[1] = t;\n  }\n  get m13() {\n    return this._elements[2];\n  }\n  set m13(t) {\n    this._elements[2] = t;\n  }\n  get m14() {\n    return this._elements[3];\n  }\n  set m14(t) {\n    this._elements[3] = t;\n  }\n  get m21() {\n    return this._elements[4];\n  }\n  set m21(t) {\n    this._elements[4] = t;\n  }\n  get m22() {\n    return this._elements[5];\n  }\n  set m22(t) {\n    this._elements[5] = t;\n  }\n  get m23() {\n    return this._elements[6];\n  }\n  set m23(t) {\n    this._elements[6] = t;\n  }\n  get m24() {\n    return this._elements[7];\n  }\n  set m24(t) {\n    this._elements[7] = t;\n  }\n  get m31() {\n    return this._elements[8];\n  }\n  set m31(t) {\n    this._elements[8] = t;\n  }\n  get m32() {\n    return this._elements[9];\n  }\n  set m32(t) {\n    this._elements[9] = t;\n  }\n  get m33() {\n    return this._elements[10];\n  }\n  set m33(t) {\n    this._elements[10] = t;\n  }\n  get m34() {\n    return this._elements[11];\n  }\n  set m34(t) {\n    this._elements[11] = t;\n  }\n  get m41() {\n    return this._elements[12];\n  }\n  set m41(t) {\n    this._elements[12] = t;\n  }\n  get m42() {\n    return this._elements[13];\n  }\n  set m42(t) {\n    this._elements[13] = t;\n  }\n  get m43() {\n    return this._elements[14];\n  }\n  set m43(t) {\n    this._elements[14] = t;\n  }\n  get m44() {\n    return this._elements[15];\n  }\n  set m44(t) {\n    this._elements[15] = t;\n  }\n  get elements() {\n    return Array.from(this._elements);\n  }\n  constructor(t, n) {\n    this._margin = K0(n), this._elements = new Float64Array(16), this.identity(), t && (typeof t == \"string\" ? this._parseTransformString(t) : Array.isArray(t) ? this._fromArray(t) : t instanceof pe && this._elements.set(t._elements));\n  }\n  identity() {\n    this._elements.fill(0), this.m11 = 1, this.m22 = 1, this.m33 = 1, this.m44 = 1;\n  }\n  get isIdentity() {\n    return this._margin(this.m11, 1) && this._margin(this.m12, 0) && this._margin(this.m13, 0) && this._margin(this.m14, 0) && this._margin(this.m21, 0) && this._margin(this.m22, 1) && this._margin(this.m23, 0) && this._margin(this.m24, 0) && this._margin(this.m31, 0) && this._margin(this.m32, 0) && this._margin(this.m33, 1) && this._margin(this.m34, 0) && this._margin(this.m41, 0) && this._margin(this.m42, 0) && this._margin(this.m43, 0) && this._margin(this.m44, 1);\n  }\n  get isCoordinateChanged() {\n    return !(this._margin(this.m11, 1) && this._margin(this.m12, 0) && this._margin(this.m13, 0) && this._margin(this.m14, 0) && this._margin(this.m21, 0) && this._margin(this.m22, 1) && this._margin(this.m23, 0) && this._margin(this.m24, 0) && this._margin(this.m31, 0) && this._margin(this.m32, 0) && this._margin(this.m33, 1) && this._margin(this.m34, 0) && // this._margin(this.m41, 0) &&\n    // this._margin(this.m42, 0) &&\n    // this._margin(this.m43, 0) &&\n    this._margin(this.m44, 1));\n  }\n  get is2D() {\n    return this._margin(this.m31, 0) && this._margin(this.m32, 0) && this._margin(this.m33, 1) && this._margin(this.m34, 0) && this._margin(this.m43, 0) && this._margin(this.m44, 1);\n  }\n  _fromArray(t) {\n    if (t.length === 6)\n      this._elements.set([\n        t[0],\n        t[1],\n        0,\n        0,\n        t[2],\n        t[3],\n        0,\n        0,\n        0,\n        0,\n        1,\n        0,\n        t[4],\n        t[5],\n        0,\n        1\n      ]);\n    else if (t.length === 16)\n      this._elements.set(t);\n    else\n      throw new TypeError(\n        \"Invalid matrix length (must be 6 for 2D or 16 for 3D)\"\n      );\n  }\n  // 矩阵不满足交换律，所以顺序很重要\n  _parseTransformString(t) {\n    return d1(t).forEach(({ command: n, values: r }) => {\n      switch (n) {\n        case \"m\":\n        case \"matrix\":\n        case \"matrix3d\":\n          this._fromArray(r.map((i) => i.v));\n          break;\n        case \"t\":\n        case \"translate\":\n        case \"translate3d\":\n          this.translateSelf(\n            r[0]?.v || 0,\n            r[1]?.v || 0,\n            r[2]?.v || 0\n          );\n          break;\n        case \"translateX\":\n          this.translateSelf(r[0]?.v || 0, 0, 0);\n          break;\n        case \"translateY\":\n          this.translateSelf(0, r[0]?.v || 0, 0);\n          break;\n        case \"translateZ\":\n          this.translateSelf(0, 0, r[0]?.v || 0);\n          break;\n        case \"r\":\n        case \"rotate\":\n        case \"rotateZ\":\n          this.rotateSelf(ye(r[0], 0), 0, 0, 1);\n          break;\n        case \"rotateX\":\n          this.rotateSelf(ye(r[0], 0), 1, 0, 0);\n          break;\n        case \"rotateY\":\n          this.rotateSelf(ye(r[0], 0), 0, 1, 0);\n          break;\n        case \"rotate3d\":\n          this.rotateSelf(\n            ye(r[3], 0),\n            ye(r[0], 0),\n            ye(r[1], 0),\n            ye(r[2], 0)\n          );\n          break;\n        case \"s\":\n        case \"scale\":\n        case \"scale3d\":\n          this.scaleSelf(\n            r[0]?.v || 1,\n            r[1]?.v || r[0]?.v || 1,\n            r[2]?.v || 1\n          );\n          break;\n        case \"scaleX\":\n          this.scaleSelf(r[0]?.v || 1, 1, 1);\n          break;\n        case \"scaleY\":\n          this.scaleSelf(1, r[0]?.v || 1, 1);\n          break;\n        case \"scaleZ\":\n          this.scaleSelf(1, 1, r[0]?.v || 1);\n          break;\n        case \"skewX\":\n          this.skewXSelf(ye(r[0], 0));\n          break;\n        case \"skewY\":\n          this.skewYSelf(ye(r[0], 0));\n          break;\n        case \"none\":\n        default:\n          _e(`Unsupported transform function: ${n}`);\n      }\n    }), this;\n  }\n  // other * this  =>  this first, then other\n  multiply(t) {\n    return this.clone().multiplySelf(t);\n  }\n  // other * this  =>  this first, then other\n  multiplySelf(t) {\n    const n = this.elements, r = t.elements, i = new Float64Array(16);\n    for (let s = 0; s < 4; s++)\n      for (let o = 0; o < 4; o++)\n        i[s * 4 + o] = n[s * 4 + 0] * r[0 * 4 + o] + n[s * 4 + 1] * r[1 * 4 + o] + n[s * 4 + 2] * r[2 * 4 + o] + n[s * 4 + 3] * r[3 * 4 + o];\n    return this._elements.set(i), this;\n  }\n  translate(t, n = 0, r = 0) {\n    return this.clone().translateSelf(t, n, r);\n  }\n  translateSelf(t, n = 0, r = 0) {\n    const i = new pe();\n    if (this.isCoordinateChanged) {\n      const s = this.transformPoint(new Z(t, n, r));\n      i.m41 = s.x, i.m42 = s.y, i.m43 = s.z;\n    } else\n      i.m41 = t, i.m42 = n, i.m43 = r;\n    return this.multiplySelf(i);\n  }\n  rotate(t, n = 0, r = 0, i = 1) {\n    return this.clone().rotateSelf(t, n, r, i);\n  }\n  // x, y, z 代表旋转轴的方向向量\n  // 对于多个旋转，通常是先绕 Z 轴旋转，然后绕 Y 轴，再绕 X 轴\n  rotateSelf(t, n = 0, r = 0, i = 1) {\n    if (this.isCoordinateChanged) {\n      const c = this.transformPoint(new Z(n, r, i));\n      n = c.x, r = c.y, i = c.z;\n    }\n    const s = t * Math.PI / 180, o = Math.cos(s), u = Math.sin(s), a = new pe();\n    if (n === 0 && r === 0 && i === 1)\n      a.m11 = o, a.m12 = u, a.m21 = -u, a.m22 = o;\n    else if (n === 1 && r === 0 && i === 0)\n      a.m22 = o, a.m23 = u, a.m32 = -u, a.m33 = o;\n    else if (n === 0 && r === 1 && i === 0)\n      a.m11 = o, a.m13 = -u, a.m31 = u, a.m33 = o;\n    else {\n      const c = Math.sqrt(n * n + r * r + i * i) || 1;\n      if (c == 0)\n        return this;\n      const l = n / c, f = r / c, d = i / c, h = 1 - o;\n      a.m11 = o + l * l * h, a.m12 = l * f * h + d * u, a.m13 = l * d * h - f * u, a.m21 = f * l * h - d * u, a.m22 = o + f * f * h, a.m23 = f * d * h + l * u, a.m31 = d * l * h + f * u, a.m32 = d * f * h - l * u, a.m33 = o + d * d * h;\n    }\n    return this.multiplySelf(a);\n  }\n  scale(t, n = t, r = 1) {\n    return this.clone().scaleSelf(t, n, r);\n  }\n  scaleSelf(t, n = t, r = 1) {\n    const i = new pe();\n    return i.m11 = t, i.m22 = n, i.m33 = r, this.multiplySelf(i);\n  }\n  skewX(t) {\n    return this.clone().skewXSelf(t);\n  }\n  skewXSelf(t) {\n    const n = t * Math.PI / 180, r = new pe();\n    return r.m21 = Math.tan(n), this.multiplySelf(r);\n  }\n  skewY(t) {\n    return this.clone().skewYSelf(t);\n  }\n  skewYSelf(t) {\n    const n = t * Math.PI / 180, r = new pe();\n    return r.m12 = Math.tan(n), this.multiplySelf(r);\n  }\n  // skewZ(degree: number): DomMatrix {\n  //   return this.clone().skewZSelf(degree);\n  // }\n  // skewZSelf(degree: number): this {\n  //   const rad = (degree * Math.PI) / 180;\n  //   const skew = new DomMatrix();\n  //   skew.m13 = Math.tan(rad); // c参数\n  //   // if (skew.m13 !== 0) {\n  //   //   this.isCoordinateChanged = true;\n  //   // }\n  //   return this.multiplySelf(skew);\n  // }\n  to2D() {\n    return new pe([\n      this.a,\n      this.b,\n      this.c,\n      this.d,\n      this.e,\n      this.f\n    ]);\n  }\n  // 正射投影\n  // | 2/(r-l)   0         0      -(r+l)/(r-l) |\n  // | 0         2/(t-b)   0      -(t+b)/(t-b) |\n  // | 0         0         -2/(f-n)  -(f+n)/(f-n) |\n  // | 0         0         0       1            |\n  // 透视投影\n  // | 2n/(r-l)  0        (r+l)/(r-l)   0       |\n  // | 0        2n/(t-b)  (t+b)/(t-b)   0       |\n  // | 0        0        -(f+n)/(f-n)   -2fn/(f-n) |\n  // | 0        0        -1             0       |\n  inverse() {\n    return this.clone().invertSelf();\n  }\n  /**\n   * Inverts the matrix\n   * -> based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n   * -> based on https://github.com/mrdoob/three.js/blob/master/src/math/Matrix4.js\n   */\n  invertSelf() {\n    if (this.is2D) {\n      const t = this.a * this.d - this.b * this.c;\n      if (t === 0)\n        throw new Error(\"Matrix is not invertible.\");\n      const n = 1 / t;\n      return this.multiplySelf(\n        new pe([\n          this.d * n,\n          -this.b * n,\n          -this.c * n,\n          this.a * n,\n          (this.c * this.f - this.d * this.e) * n,\n          (this.b * this.e - this.a * this.f) * n\n        ])\n      );\n    } else {\n      const t = Array.from(this.elements), n = t[0], r = t[1], i = t[2], s = t[3], o = t[4], u = t[5], a = t[6], c = t[7], l = t[8], f = t[9], d = t[10], h = t[11], p = t[12], m = t[13], D = t[14], y = t[15], F = f * D * c - m * d * c + m * a * h - u * D * h - f * a * y + u * d * y, S = p * d * c - l * D * c - p * a * h + o * D * h + l * a * y - o * d * y, v = l * m * c - p * f * c + p * u * h - o * m * h - l * u * y + o * f * y, E = p * f * a - l * m * a - p * u * d + o * m * d + l * u * D - o * f * D, R = n * F + r * S + i * v + s * E;\n      if (R === 0)\n        throw new Error(\"Matrix is not invertible.\");\n      const A = 1 / R;\n      return t[0] = F * A, t[1] = (m * d * s - f * D * s - m * i * h + r * D * h + f * i * y - r * d * y) * A, t[2] = (u * D * s - m * a * s + m * i * c - r * D * c - u * i * y + r * a * y) * A, t[3] = (f * a * s - u * d * s - f * i * c + r * d * c + u * i * h - r * a * h) * A, t[4] = S * A, t[5] = (l * D * s - p * d * s + p * i * h - n * D * h - l * i * y + n * d * y) * A, t[6] = (p * a * s - o * D * s - p * i * c + n * D * c + o * i * y - n * a * y) * A, t[7] = (o * d * s - l * a * s + l * i * c - n * d * c - o * i * h + n * a * h) * A, t[8] = v * A, t[9] = (p * f * s - l * m * s - p * r * h + n * m * h + l * r * y - n * f * y) * A, t[10] = (o * m * s - p * u * s + p * r * c - n * m * c - o * r * y + n * u * y) * A, t[11] = (l * u * s - o * f * s - l * r * c + n * f * c + o * r * h - n * u * h) * A, t[12] = E * A, t[13] = (l * m * i - p * f * i + p * r * d - n * m * d - l * r * D + n * f * D) * A, t[14] = (p * u * i - o * m * i - p * r * a + n * m * a + o * r * D - n * u * D) * A, t[15] = (o * f * i - l * u * i + l * r * a - n * f * a - o * r * d + n * u * d) * A, this._elements.set(t), this;\n    }\n  }\n  transformPoint(t) {\n    const { x: n = 0, y: r = 0, z: i = 0, w: s = 1 } = t, o = new Z(\n      this.m11 * n + this.m21 * r + this.m31 * i + this.m41 * s,\n      this.m12 * n + this.m22 * r + this.m32 * i + this.m42 * s,\n      this.m13 * n + this.m23 * r + this.m33 * i + this.m43 * s,\n      this.m14 * n + this.m24 * r + this.m34 * i + this.m44 * s\n    );\n    return o.w !== 1 && (o.x /= o.w, o.y /= o.w, o.z /= o.w), o;\n  }\n  toString(t = 6) {\n    return this.is2D ? `matrix(${[\n      Fe(this.a, t),\n      Fe(this.b, t),\n      Fe(this.c, t),\n      Fe(this.d, t),\n      Fe(this.e, t),\n      Fe(this.f, t)\n    ].join(\", \")})` : `matrix3d(${Array.from(this.elements).map((n) => Fe(n, t)).join(\", \")})`;\n  }\n  toArray() {\n    return this.is2D ? [this.a, this.b, this.c, this.d, this.e, this.f] : [\n      this.m11,\n      this.m12,\n      this.m13,\n      this.m14,\n      this.m21,\n      this.m22,\n      this.m23,\n      this.m24,\n      this.m31,\n      this.m32,\n      this.m33,\n      this.m34,\n      this.m41,\n      this.m42,\n      this.m43,\n      this.m44\n    ];\n  }\n  clone() {\n    return new pe(this);\n  }\n  split() {\n    const t = Math.sqrt(\n      this.m11 * this.m11 + this.m12 * this.m12 + this.m13 * this.m13\n    ), n = Math.sqrt(\n      this.m21 * this.m21 + this.m22 * this.m22 + this.m23 * this.m23\n    ), r = Math.sqrt(\n      this.m31 * this.m31 + this.m32 * this.m32 + this.m33 * this.m33\n    ), i = oe(N(Math.asin(-this.m13), -1, 1));\n    let s = oe(Math.atan2(this.m23, this.m33));\n    Math.cos(Ku(i)) === 0 && (s = oe(Math.atan2(-this.m31, this.m22)));\n    let o = oe(Math.atan2(this.m12, this.m11));\n    return this.m11 < 0 && this.m22 >= 0 && (o += 180), {\n      x: this.m41,\n      y: this.m42,\n      z: this.m43,\n      scalarX: t,\n      scalarY: n,\n      scalarZ: r,\n      degreeX: s,\n      degreeY: i,\n      degreeZ: o,\n      skewX: oe(this.m14),\n      skewY: oe(this.m24),\n      skewZ: oe(this.m34),\n      skewW: this.m44,\n      perspective: this.m34 ? -(1 / this.m34) : 0\n    };\n  }\n  // 行列式\n  determinant() {\n    if (this.is2D)\n      return this.a * this.d - this.b * this.c;\n    const t = this.elements, n = t[0], r = t[4], i = t[8], s = t[12], o = t[1], u = t[5], a = t[9], c = t[13], l = t[2], f = t[6], d = t[10], h = t[14], p = t[3], m = t[7], D = t[11], y = t[15];\n    return p * (+s * a * f - i * c * f - s * u * d + r * c * d + i * u * h - r * a * h) + m * (+n * a * h - n * c * d + s * o * d - i * o * h + i * c * l - s * a * l) + D * (+n * c * f - n * u * h - s * o * f + r * o * h + s * u * l - r * c * l) + y * (-i * u * l - n * a * f + n * u * d + i * o * f - r * o * d + r * a * l);\n  }\n}\nfunction Qu(e, t) {\n  return function() {\n    return e.apply(t, arguments);\n  };\n}\nconst { toString: p1 } = Object.prototype, { getPrototypeOf: Fi } = Object, jn = ((e) => (t) => {\n  const n = p1.call(t);\n  return e[n] || (e[n] = n.slice(8, -1).toLowerCase());\n})(/* @__PURE__ */ Object.create(null)), he = (e) => (e = e.toLowerCase(), (t) => jn(t) === e), Un = (e) => (t) => typeof t === e, { isArray: ft } = Array, Tt = Un(\"undefined\");\nfunction m1(e) {\n  return e !== null && !Tt(e) && e.constructor !== null && !Tt(e.constructor) && se(e.constructor.isBuffer) && e.constructor.isBuffer(e);\n}\nconst Ju = he(\"ArrayBuffer\");\nfunction D1(e) {\n  let t;\n  return typeof ArrayBuffer < \"u\" && ArrayBuffer.isView ? t = ArrayBuffer.isView(e) : t = e && e.buffer && Ju(e.buffer), t;\n}\nconst g1 = Un(\"string\"), se = Un(\"function\"), Hu = Un(\"number\"), Zn = (e) => e !== null && typeof e == \"object\", y1 = (e) => e === !0 || e === !1, rn = (e) => {\n  if (jn(e) !== \"object\")\n    return !1;\n  const t = Fi(e);\n  return (t === null || t === Object.prototype || Object.getPrototypeOf(t) === null) && !(Symbol.toStringTag in e) && !(Symbol.iterator in e);\n}, b1 = he(\"Date\"), w1 = he(\"File\"), F1 = he(\"Blob\"), E1 = he(\"FileList\"), v1 = (e) => Zn(e) && se(e.pipe), _1 = (e) => {\n  let t;\n  return e && (typeof FormData == \"function\" && e instanceof FormData || se(e.append) && ((t = jn(e)) === \"formdata\" || // detect form-data instance\n  t === \"object\" && se(e.toString) && e.toString() === \"[object FormData]\"));\n}, S1 = he(\"URLSearchParams\"), [A1, O1, C1, T1] = [\"ReadableStream\", \"Request\", \"Response\", \"Headers\"].map(he), R1 = (e) => e.trim ? e.trim() : e.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\nfunction Mt(e, t, { allOwnKeys: n = !1 } = {}) {\n  if (e === null || typeof e > \"u\")\n    return;\n  let r, i;\n  if (typeof e != \"object\" && (e = [e]), ft(e))\n    for (r = 0, i = e.length; r < i; r++)\n      t.call(null, e[r], r, e);\n  else {\n    const s = n ? Object.getOwnPropertyNames(e) : Object.keys(e), o = s.length;\n    let u;\n    for (r = 0; r < o; r++)\n      u = s[r], t.call(null, e[u], u, e);\n  }\n}\nfunction Xu(e, t) {\n  t = t.toLowerCase();\n  const n = Object.keys(e);\n  let r = n.length, i;\n  for (; r-- > 0; )\n    if (i = n[r], t === i.toLowerCase())\n      return i;\n  return null;\n}\nconst ze = (() => typeof globalThis < \"u\" ? globalThis : typeof self < \"u\" ? self : typeof window < \"u\" ? window : global)(), Yu = (e) => !Tt(e) && e !== ze;\nfunction kr() {\n  const { caseless: e } = Yu(this) && this || {}, t = {}, n = (r, i) => {\n    const s = e && Xu(t, i) || i;\n    rn(t[s]) && rn(r) ? t[s] = kr(t[s], r) : rn(r) ? t[s] = kr({}, r) : ft(r) ? t[s] = r.slice() : t[s] = r;\n  };\n  for (let r = 0, i = arguments.length; r < i; r++)\n    arguments[r] && Mt(arguments[r], n);\n  return t;\n}\nconst x1 = (e, t, n, { allOwnKeys: r } = {}) => (Mt(t, (i, s) => {\n  n && se(i) ? e[s] = Qu(i, n) : e[s] = i;\n}, { allOwnKeys: r }), e), k1 = (e) => (e.charCodeAt(0) === 65279 && (e = e.slice(1)), e), N1 = (e, t, n, r) => {\n  e.prototype = Object.create(t.prototype, r), e.prototype.constructor = e, Object.defineProperty(e, \"super\", {\n    value: t.prototype\n  }), n && Object.assign(e.prototype, n);\n}, I1 = (e, t, n, r) => {\n  let i, s, o;\n  const u = {};\n  if (t = t || {}, e == null)\n    return t;\n  do {\n    for (i = Object.getOwnPropertyNames(e), s = i.length; s-- > 0; )\n      o = i[s], (!r || r(o, e, t)) && !u[o] && (t[o] = e[o], u[o] = !0);\n    e = n !== !1 && Fi(e);\n  } while (e && (!n || n(e, t)) && e !== Object.prototype);\n  return t;\n}, P1 = (e, t, n) => {\n  e = String(e), (n === void 0 || n > e.length) && (n = e.length), n -= t.length;\n  const r = e.indexOf(t, n);\n  return r !== -1 && r === n;\n}, z1 = (e) => {\n  if (!e)\n    return null;\n  if (ft(e))\n    return e;\n  let t = e.length;\n  if (!Hu(t))\n    return null;\n  const n = new Array(t);\n  for (; t-- > 0; )\n    n[t] = e[t];\n  return n;\n}, B1 = ((e) => (t) => e && t instanceof e)(typeof Uint8Array < \"u\" && Fi(Uint8Array)), $1 = (e, t) => {\n  const r = (e && e[Symbol.iterator]).call(e);\n  let i;\n  for (; (i = r.next()) && !i.done; ) {\n    const s = i.value;\n    t.call(e, s[0], s[1]);\n  }\n}, L1 = (e, t) => {\n  let n;\n  const r = [];\n  for (; (n = e.exec(t)) !== null; )\n    r.push(n);\n  return r;\n}, M1 = he(\"HTMLFormElement\"), j1 = (e) => e.toLowerCase().replace(\n  /[-_\\s]([a-z\\d])(\\w*)/g,\n  function(n, r, i) {\n    return r.toUpperCase() + i;\n  }\n), ps = (({ hasOwnProperty: e }) => (t, n) => e.call(t, n))(Object.prototype), U1 = he(\"RegExp\"), ea = (e, t) => {\n  const n = Object.getOwnPropertyDescriptors(e), r = {};\n  Mt(n, (i, s) => {\n    let o;\n    (o = t(i, s, e)) !== !1 && (r[s] = o || i);\n  }), Object.defineProperties(e, r);\n}, Z1 = (e) => {\n  ea(e, (t, n) => {\n    if (se(e) && [\"arguments\", \"caller\", \"callee\"].indexOf(n) !== -1)\n      return !1;\n    const r = e[n];\n    if (se(r)) {\n      if (t.enumerable = !1, \"writable\" in t) {\n        t.writable = !1;\n        return;\n      }\n      t.set || (t.set = () => {\n        throw Error(\"Can not rewrite read-only method '\" + n + \"'\");\n      });\n    }\n  });\n}, q1 = (e, t) => {\n  const n = {}, r = (i) => {\n    i.forEach((s) => {\n      n[s] = !0;\n    });\n  };\n  return ft(e) ? r(e) : r(String(e).split(t)), n;\n}, W1 = () => {\n}, G1 = (e, t) => e != null && Number.isFinite(e = +e) ? e : t;\nfunction V1(e) {\n  return !!(e && se(e.append) && e[Symbol.toStringTag] === \"FormData\" && e[Symbol.iterator]);\n}\nconst K1 = (e) => {\n  const t = new Array(10), n = (r, i) => {\n    if (Zn(r)) {\n      if (t.indexOf(r) >= 0)\n        return;\n      if (!(\"toJSON\" in r)) {\n        t[i] = r;\n        const s = ft(r) ? [] : {};\n        return Mt(r, (o, u) => {\n          const a = n(o, i + 1);\n          !Tt(a) && (s[u] = a);\n        }), t[i] = void 0, s;\n      }\n    }\n    return r;\n  };\n  return n(e, 0);\n}, Q1 = he(\"AsyncFunction\"), J1 = (e) => e && (Zn(e) || se(e)) && se(e.then) && se(e.catch), ta = ((e, t) => e ? setImmediate : t ? ((n, r) => (ze.addEventListener(\"message\", ({ source: i, data: s }) => {\n  i === ze && s === n && r.length && r.shift()();\n}, !1), (i) => {\n  r.push(i), ze.postMessage(n, \"*\");\n}))(`axios@${Math.random()}`, []) : (n) => setTimeout(n))(\n  typeof setImmediate == \"function\",\n  se(ze.postMessage)\n), H1 = typeof queueMicrotask < \"u\" ? queueMicrotask.bind(ze) : typeof process < \"u\" && process.nextTick || ta, g = {\n  isArray: ft,\n  isArrayBuffer: Ju,\n  isBuffer: m1,\n  isFormData: _1,\n  isArrayBufferView: D1,\n  isString: g1,\n  isNumber: Hu,\n  isBoolean: y1,\n  isObject: Zn,\n  isPlainObject: rn,\n  isReadableStream: A1,\n  isRequest: O1,\n  isResponse: C1,\n  isHeaders: T1,\n  isUndefined: Tt,\n  isDate: b1,\n  isFile: w1,\n  isBlob: F1,\n  isRegExp: U1,\n  isFunction: se,\n  isStream: v1,\n  isURLSearchParams: S1,\n  isTypedArray: B1,\n  isFileList: E1,\n  forEach: Mt,\n  merge: kr,\n  extend: x1,\n  trim: R1,\n  stripBOM: k1,\n  inherits: N1,\n  toFlatObject: I1,\n  kindOf: jn,\n  kindOfTest: he,\n  endsWith: P1,\n  toArray: z1,\n  forEachEntry: $1,\n  matchAll: L1,\n  isHTMLForm: M1,\n  hasOwnProperty: ps,\n  hasOwnProp: ps,\n  // an alias to avoid ESLint no-prototype-builtins detection\n  reduceDescriptors: ea,\n  freezeMethods: Z1,\n  toObjectSet: q1,\n  toCamelCase: j1,\n  noop: W1,\n  toFiniteNumber: G1,\n  findKey: Xu,\n  global: ze,\n  isContextDefined: Yu,\n  isSpecCompliantForm: V1,\n  toJSONObject: K1,\n  isAsyncFn: Q1,\n  isThenable: J1,\n  setImmediate: ta,\n  asap: H1\n};\nfunction C(e, t, n, r, i) {\n  Error.call(this), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : this.stack = new Error().stack, this.message = e, this.name = \"AxiosError\", t && (this.code = t), n && (this.config = n), r && (this.request = r), i && (this.response = i, this.status = i.status ? i.status : null);\n}\ng.inherits(C, Error, {\n  toJSON: function() {\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: g.toJSONObject(this.config),\n      code: this.code,\n      status: this.status\n    };\n  }\n});\nconst na = C.prototype, ra = {};\n[\n  \"ERR_BAD_OPTION_VALUE\",\n  \"ERR_BAD_OPTION\",\n  \"ECONNABORTED\",\n  \"ETIMEDOUT\",\n  \"ERR_NETWORK\",\n  \"ERR_FR_TOO_MANY_REDIRECTS\",\n  \"ERR_DEPRECATED\",\n  \"ERR_BAD_RESPONSE\",\n  \"ERR_BAD_REQUEST\",\n  \"ERR_CANCELED\",\n  \"ERR_NOT_SUPPORT\",\n  \"ERR_INVALID_URL\"\n  // eslint-disable-next-line func-names\n].forEach((e) => {\n  ra[e] = { value: e };\n});\nObject.defineProperties(C, ra);\nObject.defineProperty(na, \"isAxiosError\", { value: !0 });\nC.from = (e, t, n, r, i, s) => {\n  const o = Object.create(na);\n  return g.toFlatObject(e, o, function(a) {\n    return a !== Error.prototype;\n  }, (u) => u !== \"isAxiosError\"), C.call(o, e.message, t, n, r, i), o.cause = e, o.name = e.name, s && Object.assign(o, s), o;\n};\nconst X1 = null;\nfunction Nr(e) {\n  return g.isPlainObject(e) || g.isArray(e);\n}\nfunction ia(e) {\n  return g.endsWith(e, \"[]\") ? e.slice(0, -2) : e;\n}\nfunction ms(e, t, n) {\n  return e ? e.concat(t).map(function(i, s) {\n    return i = ia(i), !n && s ? \"[\" + i + \"]\" : i;\n  }).join(n ? \".\" : \"\") : t;\n}\nfunction Y1(e) {\n  return g.isArray(e) && !e.some(Nr);\n}\nconst e2 = g.toFlatObject(g, {}, null, function(t) {\n  return /^is[A-Z]/.test(t);\n});\nfunction qn(e, t, n) {\n  if (!g.isObject(e))\n    throw new TypeError(\"target must be an object\");\n  t = t || new FormData(), n = g.toFlatObject(n, {\n    metaTokens: !0,\n    dots: !1,\n    indexes: !1\n  }, !1, function(m, D) {\n    return !g.isUndefined(D[m]);\n  });\n  const r = n.metaTokens, i = n.visitor || l, s = n.dots, o = n.indexes, a = (n.Blob || typeof Blob < \"u\" && Blob) && g.isSpecCompliantForm(t);\n  if (!g.isFunction(i))\n    throw new TypeError(\"visitor must be a function\");\n  function c(p) {\n    if (p === null)\n      return \"\";\n    if (g.isDate(p))\n      return p.toISOString();\n    if (!a && g.isBlob(p))\n      throw new C(\"Blob is not supported. Use a Buffer instead.\");\n    return g.isArrayBuffer(p) || g.isTypedArray(p) ? a && typeof Blob == \"function\" ? new Blob([p]) : Buffer.from(p) : p;\n  }\n  function l(p, m, D) {\n    let y = p;\n    if (p && !D && typeof p == \"object\") {\n      if (g.endsWith(m, \"{}\"))\n        m = r ? m : m.slice(0, -2), p = JSON.stringify(p);\n      else if (g.isArray(p) && Y1(p) || (g.isFileList(p) || g.endsWith(m, \"[]\")) && (y = g.toArray(p)))\n        return m = ia(m), y.forEach(function(S, v) {\n          !(g.isUndefined(S) || S === null) && t.append(\n            // eslint-disable-next-line no-nested-ternary\n            o === !0 ? ms([m], v, s) : o === null ? m : m + \"[]\",\n            c(S)\n          );\n        }), !1;\n    }\n    return Nr(p) ? !0 : (t.append(ms(D, m, s), c(p)), !1);\n  }\n  const f = [], d = Object.assign(e2, {\n    defaultVisitor: l,\n    convertValue: c,\n    isVisitable: Nr\n  });\n  function h(p, m) {\n    if (!g.isUndefined(p)) {\n      if (f.indexOf(p) !== -1)\n        throw Error(\"Circular reference detected in \" + m.join(\".\"));\n      f.push(p), g.forEach(p, function(y, F) {\n        (!(g.isUndefined(y) || y === null) && i.call(\n          t,\n          y,\n          g.isString(F) ? F.trim() : F,\n          m,\n          d\n        )) === !0 && h(y, m ? m.concat(F) : [F]);\n      }), f.pop();\n    }\n  }\n  if (!g.isObject(e))\n    throw new TypeError(\"data must be an object\");\n  return h(e), t;\n}\nfunction Ds(e) {\n  const t = {\n    \"!\": \"%21\",\n    \"'\": \"%27\",\n    \"(\": \"%28\",\n    \")\": \"%29\",\n    \"~\": \"%7E\",\n    \"%20\": \"+\",\n    \"%00\": \"\\0\"\n  };\n  return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g, function(r) {\n    return t[r];\n  });\n}\nfunction Ei(e, t) {\n  this._pairs = [], e && qn(e, this, t);\n}\nconst sa = Ei.prototype;\nsa.append = function(t, n) {\n  this._pairs.push([t, n]);\n};\nsa.toString = function(t) {\n  const n = t ? function(r) {\n    return t.call(this, r, Ds);\n  } : Ds;\n  return this._pairs.map(function(i) {\n    return n(i[0]) + \"=\" + n(i[1]);\n  }, \"\").join(\"&\");\n};\nfunction t2(e) {\n  return encodeURIComponent(e).replace(/%3A/gi, \":\").replace(/%24/g, \"$\").replace(/%2C/gi, \",\").replace(/%20/g, \"+\").replace(/%5B/gi, \"[\").replace(/%5D/gi, \"]\");\n}\nfunction oa(e, t, n) {\n  if (!t)\n    return e;\n  const r = n && n.encode || t2;\n  g.isFunction(n) && (n = {\n    serialize: n\n  });\n  const i = n && n.serialize;\n  let s;\n  if (i ? s = i(t, n) : s = g.isURLSearchParams(t) ? t.toString() : new Ei(t, n).toString(r), s) {\n    const o = e.indexOf(\"#\");\n    o !== -1 && (e = e.slice(0, o)), e += (e.indexOf(\"?\") === -1 ? \"?\" : \"&\") + s;\n  }\n  return e;\n}\nclass n2 {\n  constructor() {\n    this.handlers = [];\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   */\n  use(t, n, r) {\n    return this.handlers.push({\n      fulfilled: t,\n      rejected: n,\n      synchronous: r ? r.synchronous : !1,\n      runWhen: r ? r.runWhen : null\n    }), this.handlers.length - 1;\n  }\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n   */\n  eject(t) {\n    this.handlers[t] && (this.handlers[t] = null);\n  }\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    this.handlers && (this.handlers = []);\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   *\n   * @returns {void}\n   */\n  forEach(t) {\n    g.forEach(this.handlers, function(r) {\n      r !== null && t(r);\n    });\n  }\n}\nconst gs = n2, ua = {\n  silentJSONParsing: !0,\n  forcedJSONParsing: !0,\n  clarifyTimeoutError: !1\n}, r2 = typeof URLSearchParams < \"u\" ? URLSearchParams : Ei, i2 = typeof FormData < \"u\" ? FormData : null, s2 = typeof Blob < \"u\" ? Blob : null, o2 = {\n  isBrowser: !0,\n  classes: {\n    URLSearchParams: r2,\n    FormData: i2,\n    Blob: s2\n  },\n  protocols: [\"http\", \"https\", \"file\", \"blob\", \"url\", \"data\"]\n}, vi = typeof window < \"u\" && typeof document < \"u\", Ir = typeof navigator == \"object\" && navigator || void 0, u2 = vi && (!Ir || [\"ReactNative\", \"NativeScript\", \"NS\"].indexOf(Ir.product) < 0), a2 = (() => typeof WorkerGlobalScope < \"u\" && // eslint-disable-next-line no-undef\nself instanceof WorkerGlobalScope && typeof self.importScripts == \"function\")(), c2 = vi && window.location.href || \"http://localhost\", l2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  hasBrowserEnv: vi,\n  hasStandardBrowserEnv: u2,\n  hasStandardBrowserWebWorkerEnv: a2,\n  navigator: Ir,\n  origin: c2\n}, Symbol.toStringTag, { value: \"Module\" })), J = {\n  ...l2,\n  ...o2\n};\nfunction h2(e, t) {\n  return qn(e, new J.classes.URLSearchParams(), Object.assign({\n    visitor: function(n, r, i, s) {\n      return J.isNode && g.isBuffer(n) ? (this.append(r, n.toString(\"base64\")), !1) : s.defaultVisitor.apply(this, arguments);\n    }\n  }, t));\n}\nfunction f2(e) {\n  return g.matchAll(/\\w+|\\[(\\w*)]/g, e).map((t) => t[0] === \"[]\" ? \"\" : t[1] || t[0]);\n}\nfunction d2(e) {\n  const t = {}, n = Object.keys(e);\n  let r;\n  const i = n.length;\n  let s;\n  for (r = 0; r < i; r++)\n    s = n[r], t[s] = e[s];\n  return t;\n}\nfunction aa(e) {\n  function t(n, r, i, s) {\n    let o = n[s++];\n    if (o === \"__proto__\")\n      return !0;\n    const u = Number.isFinite(+o), a = s >= n.length;\n    return o = !o && g.isArray(i) ? i.length : o, a ? (g.hasOwnProp(i, o) ? i[o] = [i[o], r] : i[o] = r, !u) : ((!i[o] || !g.isObject(i[o])) && (i[o] = []), t(n, r, i[o], s) && g.isArray(i[o]) && (i[o] = d2(i[o])), !u);\n  }\n  if (g.isFormData(e) && g.isFunction(e.entries)) {\n    const n = {};\n    return g.forEachEntry(e, (r, i) => {\n      t(f2(r), i, n, 0);\n    }), n;\n  }\n  return null;\n}\nfunction p2(e, t, n) {\n  if (g.isString(e))\n    try {\n      return (t || JSON.parse)(e), g.trim(e);\n    } catch (r) {\n      if (r.name !== \"SyntaxError\")\n        throw r;\n    }\n  return (n || JSON.stringify)(e);\n}\nconst _i = {\n  transitional: ua,\n  adapter: [\"xhr\", \"http\", \"fetch\"],\n  transformRequest: [function(t, n) {\n    const r = n.getContentType() || \"\", i = r.indexOf(\"application/json\") > -1, s = g.isObject(t);\n    if (s && g.isHTMLForm(t) && (t = new FormData(t)), g.isFormData(t))\n      return i ? JSON.stringify(aa(t)) : t;\n    if (g.isArrayBuffer(t) || g.isBuffer(t) || g.isStream(t) || g.isFile(t) || g.isBlob(t) || g.isReadableStream(t))\n      return t;\n    if (g.isArrayBufferView(t))\n      return t.buffer;\n    if (g.isURLSearchParams(t))\n      return n.setContentType(\"application/x-www-form-urlencoded;charset=utf-8\", !1), t.toString();\n    let u;\n    if (s) {\n      if (r.indexOf(\"application/x-www-form-urlencoded\") > -1)\n        return h2(t, this.formSerializer).toString();\n      if ((u = g.isFileList(t)) || r.indexOf(\"multipart/form-data\") > -1) {\n        const a = this.env && this.env.FormData;\n        return qn(\n          u ? { \"files[]\": t } : t,\n          a && new a(),\n          this.formSerializer\n        );\n      }\n    }\n    return s || i ? (n.setContentType(\"application/json\", !1), p2(t)) : t;\n  }],\n  transformResponse: [function(t) {\n    const n = this.transitional || _i.transitional, r = n && n.forcedJSONParsing, i = this.responseType === \"json\";\n    if (g.isResponse(t) || g.isReadableStream(t))\n      return t;\n    if (t && g.isString(t) && (r && !this.responseType || i)) {\n      const o = !(n && n.silentJSONParsing) && i;\n      try {\n        return JSON.parse(t);\n      } catch (u) {\n        if (o)\n          throw u.name === \"SyntaxError\" ? C.from(u, C.ERR_BAD_RESPONSE, this, null, this.response) : u;\n      }\n    }\n    return t;\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  xsrfCookieName: \"XSRF-TOKEN\",\n  xsrfHeaderName: \"X-XSRF-TOKEN\",\n  maxContentLength: -1,\n  maxBodyLength: -1,\n  env: {\n    FormData: J.classes.FormData,\n    Blob: J.classes.Blob\n  },\n  validateStatus: function(t) {\n    return t >= 200 && t < 300;\n  },\n  headers: {\n    common: {\n      Accept: \"application/json, text/plain, */*\",\n      \"Content-Type\": void 0\n    }\n  }\n};\ng.forEach([\"delete\", \"get\", \"head\", \"post\", \"put\", \"patch\"], (e) => {\n  _i.headers[e] = {};\n});\nconst Si = _i, m2 = g.toObjectSet([\n  \"age\",\n  \"authorization\",\n  \"content-length\",\n  \"content-type\",\n  \"etag\",\n  \"expires\",\n  \"from\",\n  \"host\",\n  \"if-modified-since\",\n  \"if-unmodified-since\",\n  \"last-modified\",\n  \"location\",\n  \"max-forwards\",\n  \"proxy-authorization\",\n  \"referer\",\n  \"retry-after\",\n  \"user-agent\"\n]), D2 = (e) => {\n  const t = {};\n  let n, r, i;\n  return e && e.split(`\n`).forEach(function(o) {\n    i = o.indexOf(\":\"), n = o.substring(0, i).trim().toLowerCase(), r = o.substring(i + 1).trim(), !(!n || t[n] && m2[n]) && (n === \"set-cookie\" ? t[n] ? t[n].push(r) : t[n] = [r] : t[n] = t[n] ? t[n] + \", \" + r : r);\n  }), t;\n}, ys = Symbol(\"internals\");\nfunction Et(e) {\n  return e && String(e).trim().toLowerCase();\n}\nfunction sn(e) {\n  return e === !1 || e == null ? e : g.isArray(e) ? e.map(sn) : String(e);\n}\nfunction g2(e) {\n  const t = /* @__PURE__ */ Object.create(null), n = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let r;\n  for (; r = n.exec(e); )\n    t[r[1]] = r[2];\n  return t;\n}\nconst y2 = (e) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());\nfunction hr(e, t, n, r, i) {\n  if (g.isFunction(r))\n    return r.call(this, t, n);\n  if (i && (t = n), !!g.isString(t)) {\n    if (g.isString(r))\n      return t.indexOf(r) !== -1;\n    if (g.isRegExp(r))\n      return r.test(t);\n  }\n}\nfunction b2(e) {\n  return e.trim().toLowerCase().replace(/([a-z\\d])(\\w*)/g, (t, n, r) => n.toUpperCase() + r);\n}\nfunction w2(e, t) {\n  const n = g.toCamelCase(\" \" + t);\n  [\"get\", \"set\", \"has\"].forEach((r) => {\n    Object.defineProperty(e, r + n, {\n      value: function(i, s, o) {\n        return this[r].call(this, t, i, s, o);\n      },\n      configurable: !0\n    });\n  });\n}\nclass Wn {\n  constructor(t) {\n    t && this.set(t);\n  }\n  set(t, n, r) {\n    const i = this;\n    function s(u, a, c) {\n      const l = Et(a);\n      if (!l)\n        throw new Error(\"header name must be a non-empty string\");\n      const f = g.findKey(i, l);\n      (!f || i[f] === void 0 || c === !0 || c === void 0 && i[f] !== !1) && (i[f || a] = sn(u));\n    }\n    const o = (u, a) => g.forEach(u, (c, l) => s(c, l, a));\n    if (g.isPlainObject(t) || t instanceof this.constructor)\n      o(t, n);\n    else if (g.isString(t) && (t = t.trim()) && !y2(t))\n      o(D2(t), n);\n    else if (g.isHeaders(t))\n      for (const [u, a] of t.entries())\n        s(a, u, r);\n    else\n      t != null && s(n, t, r);\n    return this;\n  }\n  get(t, n) {\n    if (t = Et(t), t) {\n      const r = g.findKey(this, t);\n      if (r) {\n        const i = this[r];\n        if (!n)\n          return i;\n        if (n === !0)\n          return g2(i);\n        if (g.isFunction(n))\n          return n.call(this, i, r);\n        if (g.isRegExp(n))\n          return n.exec(i);\n        throw new TypeError(\"parser must be boolean|regexp|function\");\n      }\n    }\n  }\n  has(t, n) {\n    if (t = Et(t), t) {\n      const r = g.findKey(this, t);\n      return !!(r && this[r] !== void 0 && (!n || hr(this, this[r], r, n)));\n    }\n    return !1;\n  }\n  delete(t, n) {\n    const r = this;\n    let i = !1;\n    function s(o) {\n      if (o = Et(o), o) {\n        const u = g.findKey(r, o);\n        u && (!n || hr(r, r[u], u, n)) && (delete r[u], i = !0);\n      }\n    }\n    return g.isArray(t) ? t.forEach(s) : s(t), i;\n  }\n  clear(t) {\n    const n = Object.keys(this);\n    let r = n.length, i = !1;\n    for (; r--; ) {\n      const s = n[r];\n      (!t || hr(this, this[s], s, t, !0)) && (delete this[s], i = !0);\n    }\n    return i;\n  }\n  normalize(t) {\n    const n = this, r = {};\n    return g.forEach(this, (i, s) => {\n      const o = g.findKey(r, s);\n      if (o) {\n        n[o] = sn(i), delete n[s];\n        return;\n      }\n      const u = t ? b2(s) : String(s).trim();\n      u !== s && delete n[s], n[u] = sn(i), r[u] = !0;\n    }), this;\n  }\n  concat(...t) {\n    return this.constructor.concat(this, ...t);\n  }\n  toJSON(t) {\n    const n = /* @__PURE__ */ Object.create(null);\n    return g.forEach(this, (r, i) => {\n      r != null && r !== !1 && (n[i] = t && g.isArray(r) ? r.join(\", \") : r);\n    }), n;\n  }\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n  toString() {\n    return Object.entries(this.toJSON()).map(([t, n]) => t + \": \" + n).join(`\n`);\n  }\n  get [Symbol.toStringTag]() {\n    return \"AxiosHeaders\";\n  }\n  static from(t) {\n    return t instanceof this ? t : new this(t);\n  }\n  static concat(t, ...n) {\n    const r = new this(t);\n    return n.forEach((i) => r.set(i)), r;\n  }\n  static accessor(t) {\n    const r = (this[ys] = this[ys] = {\n      accessors: {}\n    }).accessors, i = this.prototype;\n    function s(o) {\n      const u = Et(o);\n      r[u] || (w2(i, o), r[u] = !0);\n    }\n    return g.isArray(t) ? t.forEach(s) : s(t), this;\n  }\n}\nWn.accessor([\"Content-Type\", \"Content-Length\", \"Accept\", \"Accept-Encoding\", \"User-Agent\", \"Authorization\"]);\ng.reduceDescriptors(Wn.prototype, ({ value: e }, t) => {\n  let n = t[0].toUpperCase() + t.slice(1);\n  return {\n    get: () => e,\n    set(r) {\n      this[n] = r;\n    }\n  };\n});\ng.freezeMethods(Wn);\nconst le = Wn;\nfunction fr(e, t) {\n  const n = this || Si, r = t || n, i = le.from(r.headers);\n  let s = r.data;\n  return g.forEach(e, function(u) {\n    s = u.call(n, s, i.normalize(), t ? t.status : void 0);\n  }), i.normalize(), s;\n}\nfunction ca(e) {\n  return !!(e && e.__CANCEL__);\n}\nfunction dt(e, t, n) {\n  C.call(this, e ?? \"canceled\", C.ERR_CANCELED, t, n), this.name = \"CanceledError\";\n}\ng.inherits(dt, C, {\n  __CANCEL__: !0\n});\nfunction la(e, t, n) {\n  const r = n.config.validateStatus;\n  !n.status || !r || r(n.status) ? e(n) : t(new C(\n    \"Request failed with status code \" + n.status,\n    [C.ERR_BAD_REQUEST, C.ERR_BAD_RESPONSE][Math.floor(n.status / 100) - 4],\n    n.config,\n    n.request,\n    n\n  ));\n}\nfunction F2(e) {\n  const t = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(e);\n  return t && t[1] || \"\";\n}\nfunction E2(e, t) {\n  e = e || 10;\n  const n = new Array(e), r = new Array(e);\n  let i = 0, s = 0, o;\n  return t = t !== void 0 ? t : 1e3, function(a) {\n    const c = Date.now(), l = r[s];\n    o || (o = c), n[i] = a, r[i] = c;\n    let f = s, d = 0;\n    for (; f !== i; )\n      d += n[f++], f = f % e;\n    if (i = (i + 1) % e, i === s && (s = (s + 1) % e), c - o < t)\n      return;\n    const h = l && c - l;\n    return h ? Math.round(d * 1e3 / h) : void 0;\n  };\n}\nfunction v2(e, t) {\n  let n = 0, r = 1e3 / t, i, s;\n  const o = (c, l = Date.now()) => {\n    n = l, i = null, s && (clearTimeout(s), s = null), e.apply(null, c);\n  };\n  return [(...c) => {\n    const l = Date.now(), f = l - n;\n    f >= r ? o(c, l) : (i = c, s || (s = setTimeout(() => {\n      s = null, o(i);\n    }, r - f)));\n  }, () => i && o(i)];\n}\nconst Fn = (e, t, n = 3) => {\n  let r = 0;\n  const i = E2(50, 250);\n  return v2((s) => {\n    const o = s.loaded, u = s.lengthComputable ? s.total : void 0, a = o - r, c = i(a), l = o <= u;\n    r = o;\n    const f = {\n      loaded: o,\n      total: u,\n      progress: u ? o / u : void 0,\n      bytes: a,\n      rate: c || void 0,\n      estimated: c && u && l ? (u - o) / c : void 0,\n      event: s,\n      lengthComputable: u != null,\n      [t ? \"download\" : \"upload\"]: !0\n    };\n    e(f);\n  }, n);\n}, bs = (e, t) => {\n  const n = e != null;\n  return [(r) => t[0]({\n    lengthComputable: n,\n    total: e,\n    loaded: r\n  }), t[1]];\n}, ws = (e) => (...t) => g.asap(() => e(...t)), _2 = J.hasStandardBrowserEnv ? ((e, t) => (n) => (n = new URL(n, J.origin), e.protocol === n.protocol && e.host === n.host && (t || e.port === n.port)))(\n  new URL(J.origin),\n  J.navigator && /(msie|trident)/i.test(J.navigator.userAgent)\n) : () => !0, S2 = J.hasStandardBrowserEnv ? (\n  // Standard browser envs support document.cookie\n  {\n    write(e, t, n, r, i, s) {\n      const o = [e + \"=\" + encodeURIComponent(t)];\n      g.isNumber(n) && o.push(\"expires=\" + new Date(n).toGMTString()), g.isString(r) && o.push(\"path=\" + r), g.isString(i) && o.push(\"domain=\" + i), s === !0 && o.push(\"secure\"), document.cookie = o.join(\"; \");\n    },\n    read(e) {\n      const t = document.cookie.match(new RegExp(\"(^|;\\\\s*)(\" + e + \")=([^;]*)\"));\n      return t ? decodeURIComponent(t[3]) : null;\n    },\n    remove(e) {\n      this.write(e, \"\", Date.now() - 864e5);\n    }\n  }\n) : (\n  // Non-standard browser env (web workers, react-native) lack needed support.\n  {\n    write() {\n    },\n    read() {\n      return null;\n    },\n    remove() {\n    }\n  }\n);\nfunction A2(e) {\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(e);\n}\nfunction O2(e, t) {\n  return t ? e.replace(/\\/?\\/$/, \"\") + \"/\" + t.replace(/^\\/+/, \"\") : e;\n}\nfunction ha(e, t, n) {\n  let r = !A2(t);\n  return e && (r || n == !1) ? O2(e, t) : t;\n}\nconst Fs = (e) => e instanceof le ? { ...e } : e;\nfunction je(e, t) {\n  t = t || {};\n  const n = {};\n  function r(c, l, f, d) {\n    return g.isPlainObject(c) && g.isPlainObject(l) ? g.merge.call({ caseless: d }, c, l) : g.isPlainObject(l) ? g.merge({}, l) : g.isArray(l) ? l.slice() : l;\n  }\n  function i(c, l, f, d) {\n    if (g.isUndefined(l)) {\n      if (!g.isUndefined(c))\n        return r(void 0, c, f, d);\n    } else\n      return r(c, l, f, d);\n  }\n  function s(c, l) {\n    if (!g.isUndefined(l))\n      return r(void 0, l);\n  }\n  function o(c, l) {\n    if (g.isUndefined(l)) {\n      if (!g.isUndefined(c))\n        return r(void 0, c);\n    } else\n      return r(void 0, l);\n  }\n  function u(c, l, f) {\n    if (f in t)\n      return r(c, l);\n    if (f in e)\n      return r(void 0, c);\n  }\n  const a = {\n    url: s,\n    method: s,\n    data: s,\n    baseURL: o,\n    transformRequest: o,\n    transformResponse: o,\n    paramsSerializer: o,\n    timeout: o,\n    timeoutMessage: o,\n    withCredentials: o,\n    withXSRFToken: o,\n    adapter: o,\n    responseType: o,\n    xsrfCookieName: o,\n    xsrfHeaderName: o,\n    onUploadProgress: o,\n    onDownloadProgress: o,\n    decompress: o,\n    maxContentLength: o,\n    maxBodyLength: o,\n    beforeRedirect: o,\n    transport: o,\n    httpAgent: o,\n    httpsAgent: o,\n    cancelToken: o,\n    socketPath: o,\n    responseEncoding: o,\n    validateStatus: u,\n    headers: (c, l, f) => i(Fs(c), Fs(l), f, !0)\n  };\n  return g.forEach(Object.keys(Object.assign({}, e, t)), function(l) {\n    const f = a[l] || i, d = f(e[l], t[l], l);\n    g.isUndefined(d) && f !== u || (n[l] = d);\n  }), n;\n}\nconst fa = (e) => {\n  const t = je({}, e);\n  let { data: n, withXSRFToken: r, xsrfHeaderName: i, xsrfCookieName: s, headers: o, auth: u } = t;\n  t.headers = o = le.from(o), t.url = oa(ha(t.baseURL, t.url, t.allowAbsoluteUrls), e.params, e.paramsSerializer), u && o.set(\n    \"Authorization\",\n    \"Basic \" + btoa((u.username || \"\") + \":\" + (u.password ? unescape(encodeURIComponent(u.password)) : \"\"))\n  );\n  let a;\n  if (g.isFormData(n)) {\n    if (J.hasStandardBrowserEnv || J.hasStandardBrowserWebWorkerEnv)\n      o.setContentType(void 0);\n    else if ((a = o.getContentType()) !== !1) {\n      const [c, ...l] = a ? a.split(\";\").map((f) => f.trim()).filter(Boolean) : [];\n      o.setContentType([c || \"multipart/form-data\", ...l].join(\"; \"));\n    }\n  }\n  if (J.hasStandardBrowserEnv && (r && g.isFunction(r) && (r = r(t)), r || r !== !1 && _2(t.url))) {\n    const c = i && s && S2.read(s);\n    c && o.set(i, c);\n  }\n  return t;\n}, C2 = typeof XMLHttpRequest < \"u\", T2 = C2 && function(e) {\n  return new Promise(function(n, r) {\n    const i = fa(e);\n    let s = i.data;\n    const o = le.from(i.headers).normalize();\n    let { responseType: u, onUploadProgress: a, onDownloadProgress: c } = i, l, f, d, h, p;\n    function m() {\n      h && h(), p && p(), i.cancelToken && i.cancelToken.unsubscribe(l), i.signal && i.signal.removeEventListener(\"abort\", l);\n    }\n    let D = new XMLHttpRequest();\n    D.open(i.method.toUpperCase(), i.url, !0), D.timeout = i.timeout;\n    function y() {\n      if (!D)\n        return;\n      const S = le.from(\n        \"getAllResponseHeaders\" in D && D.getAllResponseHeaders()\n      ), E = {\n        data: !u || u === \"text\" || u === \"json\" ? D.responseText : D.response,\n        status: D.status,\n        statusText: D.statusText,\n        headers: S,\n        config: e,\n        request: D\n      };\n      la(function(A) {\n        n(A), m();\n      }, function(A) {\n        r(A), m();\n      }, E), D = null;\n    }\n    \"onloadend\" in D ? D.onloadend = y : D.onreadystatechange = function() {\n      !D || D.readyState !== 4 || D.status === 0 && !(D.responseURL && D.responseURL.indexOf(\"file:\") === 0) || setTimeout(y);\n    }, D.onabort = function() {\n      D && (r(new C(\"Request aborted\", C.ECONNABORTED, e, D)), D = null);\n    }, D.onerror = function() {\n      r(new C(\"Network Error\", C.ERR_NETWORK, e, D)), D = null;\n    }, D.ontimeout = function() {\n      let v = i.timeout ? \"timeout of \" + i.timeout + \"ms exceeded\" : \"timeout exceeded\";\n      const E = i.transitional || ua;\n      i.timeoutErrorMessage && (v = i.timeoutErrorMessage), r(new C(\n        v,\n        E.clarifyTimeoutError ? C.ETIMEDOUT : C.ECONNABORTED,\n        e,\n        D\n      )), D = null;\n    }, s === void 0 && o.setContentType(null), \"setRequestHeader\" in D && g.forEach(o.toJSON(), function(v, E) {\n      D.setRequestHeader(E, v);\n    }), g.isUndefined(i.withCredentials) || (D.withCredentials = !!i.withCredentials), u && u !== \"json\" && (D.responseType = i.responseType), c && ([d, p] = Fn(c, !0), D.addEventListener(\"progress\", d)), a && D.upload && ([f, h] = Fn(a), D.upload.addEventListener(\"progress\", f), D.upload.addEventListener(\"loadend\", h)), (i.cancelToken || i.signal) && (l = (S) => {\n      D && (r(!S || S.type ? new dt(null, e, D) : S), D.abort(), D = null);\n    }, i.cancelToken && i.cancelToken.subscribe(l), i.signal && (i.signal.aborted ? l() : i.signal.addEventListener(\"abort\", l)));\n    const F = F2(i.url);\n    if (F && J.protocols.indexOf(F) === -1) {\n      r(new C(\"Unsupported protocol \" + F + \":\", C.ERR_BAD_REQUEST, e));\n      return;\n    }\n    D.send(s || null);\n  });\n}, R2 = (e, t) => {\n  const { length: n } = e = e ? e.filter(Boolean) : [];\n  if (t || n) {\n    let r = new AbortController(), i;\n    const s = function(c) {\n      if (!i) {\n        i = !0, u();\n        const l = c instanceof Error ? c : this.reason;\n        r.abort(l instanceof C ? l : new dt(l instanceof Error ? l.message : l));\n      }\n    };\n    let o = t && setTimeout(() => {\n      o = null, s(new C(`timeout ${t} of ms exceeded`, C.ETIMEDOUT));\n    }, t);\n    const u = () => {\n      e && (o && clearTimeout(o), o = null, e.forEach((c) => {\n        c.unsubscribe ? c.unsubscribe(s) : c.removeEventListener(\"abort\", s);\n      }), e = null);\n    };\n    e.forEach((c) => c.addEventListener(\"abort\", s));\n    const { signal: a } = r;\n    return a.unsubscribe = () => g.asap(u), a;\n  }\n}, x2 = R2, k2 = function* (e, t) {\n  let n = e.byteLength;\n  if (!t || n < t) {\n    yield e;\n    return;\n  }\n  let r = 0, i;\n  for (; r < n; )\n    i = r + t, yield e.slice(r, i), r = i;\n}, N2 = async function* (e, t) {\n  for await (const n of I2(e))\n    yield* k2(n, t);\n}, I2 = async function* (e) {\n  if (e[Symbol.asyncIterator]) {\n    yield* e;\n    return;\n  }\n  const t = e.getReader();\n  try {\n    for (; ; ) {\n      const { done: n, value: r } = await t.read();\n      if (n)\n        break;\n      yield r;\n    }\n  } finally {\n    await t.cancel();\n  }\n}, Es = (e, t, n, r) => {\n  const i = N2(e, t);\n  let s = 0, o, u = (a) => {\n    o || (o = !0, r && r(a));\n  };\n  return new ReadableStream({\n    async pull(a) {\n      try {\n        const { done: c, value: l } = await i.next();\n        if (c) {\n          u(), a.close();\n          return;\n        }\n        let f = l.byteLength;\n        if (n) {\n          let d = s += f;\n          n(d);\n        }\n        a.enqueue(new Uint8Array(l));\n      } catch (c) {\n        throw u(c), c;\n      }\n    },\n    cancel(a) {\n      return u(a), i.return();\n    }\n  }, {\n    highWaterMark: 2\n  });\n}, Gn = typeof fetch == \"function\" && typeof Request == \"function\" && typeof Response == \"function\", da = Gn && typeof ReadableStream == \"function\", P2 = Gn && (typeof TextEncoder == \"function\" ? ((e) => (t) => e.encode(t))(new TextEncoder()) : async (e) => new Uint8Array(await new Response(e).arrayBuffer())), pa = (e, ...t) => {\n  try {\n    return !!e(...t);\n  } catch {\n    return !1;\n  }\n}, z2 = da && pa(() => {\n  let e = !1;\n  const t = new Request(J.origin, {\n    body: new ReadableStream(),\n    method: \"POST\",\n    get duplex() {\n      return e = !0, \"half\";\n    }\n  }).headers.has(\"Content-Type\");\n  return e && !t;\n}), vs = 64 * 1024, Pr = da && pa(() => g.isReadableStream(new Response(\"\").body)), En = {\n  stream: Pr && ((e) => e.body)\n};\nGn && ((e) => {\n  [\"text\", \"arrayBuffer\", \"blob\", \"formData\", \"stream\"].forEach((t) => {\n    !En[t] && (En[t] = g.isFunction(e[t]) ? (n) => n[t]() : (n, r) => {\n      throw new C(`Response type '${t}' is not supported`, C.ERR_NOT_SUPPORT, r);\n    });\n  });\n})(new Response());\nconst B2 = async (e) => {\n  if (e == null)\n    return 0;\n  if (g.isBlob(e))\n    return e.size;\n  if (g.isSpecCompliantForm(e))\n    return (await new Request(J.origin, {\n      method: \"POST\",\n      body: e\n    }).arrayBuffer()).byteLength;\n  if (g.isArrayBufferView(e) || g.isArrayBuffer(e))\n    return e.byteLength;\n  if (g.isURLSearchParams(e) && (e = e + \"\"), g.isString(e))\n    return (await P2(e)).byteLength;\n}, $2 = async (e, t) => {\n  const n = g.toFiniteNumber(e.getContentLength());\n  return n ?? B2(t);\n}, L2 = Gn && (async (e) => {\n  let {\n    url: t,\n    method: n,\n    data: r,\n    signal: i,\n    cancelToken: s,\n    timeout: o,\n    onDownloadProgress: u,\n    onUploadProgress: a,\n    responseType: c,\n    headers: l,\n    withCredentials: f = \"same-origin\",\n    fetchOptions: d\n  } = fa(e);\n  c = c ? (c + \"\").toLowerCase() : \"text\";\n  let h = x2([i, s && s.toAbortSignal()], o), p;\n  const m = h && h.unsubscribe && (() => {\n    h.unsubscribe();\n  });\n  let D;\n  try {\n    if (a && z2 && n !== \"get\" && n !== \"head\" && (D = await $2(l, r)) !== 0) {\n      let E = new Request(t, {\n        method: \"POST\",\n        body: r,\n        duplex: \"half\"\n      }), R;\n      if (g.isFormData(r) && (R = E.headers.get(\"content-type\")) && l.setContentType(R), E.body) {\n        const [A, k] = bs(\n          D,\n          Fn(ws(a))\n        );\n        r = Es(E.body, vs, A, k);\n      }\n    }\n    g.isString(f) || (f = f ? \"include\" : \"omit\");\n    const y = \"credentials\" in Request.prototype;\n    p = new Request(t, {\n      ...d,\n      signal: h,\n      method: n.toUpperCase(),\n      headers: l.normalize().toJSON(),\n      body: r,\n      duplex: \"half\",\n      credentials: y ? f : void 0\n    });\n    let F = await fetch(p);\n    const S = Pr && (c === \"stream\" || c === \"response\");\n    if (Pr && (u || S && m)) {\n      const E = {};\n      [\"status\", \"statusText\", \"headers\"].forEach((w) => {\n        E[w] = F[w];\n      });\n      const R = g.toFiniteNumber(F.headers.get(\"content-length\")), [A, k] = u && bs(\n        R,\n        Fn(ws(u), !0)\n      ) || [];\n      F = new Response(\n        Es(F.body, vs, A, () => {\n          k && k(), m && m();\n        }),\n        E\n      );\n    }\n    c = c || \"text\";\n    let v = await En[g.findKey(En, c) || \"text\"](F, e);\n    return !S && m && m(), await new Promise((E, R) => {\n      la(E, R, {\n        data: v,\n        headers: le.from(F.headers),\n        status: F.status,\n        statusText: F.statusText,\n        config: e,\n        request: p\n      });\n    });\n  } catch (y) {\n    throw m && m(), y && y.name === \"TypeError\" && /fetch/i.test(y.message) ? Object.assign(\n      new C(\"Network Error\", C.ERR_NETWORK, e, p),\n      {\n        cause: y.cause || y\n      }\n    ) : C.from(y, y && y.code, e, p);\n  }\n}), zr = {\n  http: X1,\n  xhr: T2,\n  fetch: L2\n};\ng.forEach(zr, (e, t) => {\n  if (e) {\n    try {\n      Object.defineProperty(e, \"name\", { value: t });\n    } catch {\n    }\n    Object.defineProperty(e, \"adapterName\", { value: t });\n  }\n});\nconst _s = (e) => `- ${e}`, M2 = (e) => g.isFunction(e) || e === null || e === !1, ma = {\n  getAdapter: (e) => {\n    e = g.isArray(e) ? e : [e];\n    const { length: t } = e;\n    let n, r;\n    const i = {};\n    for (let s = 0; s < t; s++) {\n      n = e[s];\n      let o;\n      if (r = n, !M2(n) && (r = zr[(o = String(n)).toLowerCase()], r === void 0))\n        throw new C(`Unknown adapter '${o}'`);\n      if (r)\n        break;\n      i[o || \"#\" + s] = r;\n    }\n    if (!r) {\n      const s = Object.entries(i).map(\n        ([u, a]) => `adapter ${u} ` + (a === !1 ? \"is not supported by the environment\" : \"is not available in the build\")\n      );\n      let o = t ? s.length > 1 ? `since :\n` + s.map(_s).join(`\n`) : \" \" + _s(s[0]) : \"as no adapter specified\";\n      throw new C(\n        \"There is no suitable adapter to dispatch the request \" + o,\n        \"ERR_NOT_SUPPORT\"\n      );\n    }\n    return r;\n  },\n  adapters: zr\n};\nfunction dr(e) {\n  if (e.cancelToken && e.cancelToken.throwIfRequested(), e.signal && e.signal.aborted)\n    throw new dt(null, e);\n}\nfunction Ss(e) {\n  return dr(e), e.headers = le.from(e.headers), e.data = fr.call(\n    e,\n    e.transformRequest\n  ), [\"post\", \"put\", \"patch\"].indexOf(e.method) !== -1 && e.headers.setContentType(\"application/x-www-form-urlencoded\", !1), ma.getAdapter(e.adapter || Si.adapter)(e).then(function(r) {\n    return dr(e), r.data = fr.call(\n      e,\n      e.transformResponse,\n      r\n    ), r.headers = le.from(r.headers), r;\n  }, function(r) {\n    return ca(r) || (dr(e), r && r.response && (r.response.data = fr.call(\n      e,\n      e.transformResponse,\n      r.response\n    ), r.response.headers = le.from(r.response.headers))), Promise.reject(r);\n  });\n}\nconst Da = \"1.8.4\", Vn = {};\n[\"object\", \"boolean\", \"number\", \"function\", \"string\", \"symbol\"].forEach((e, t) => {\n  Vn[e] = function(r) {\n    return typeof r === e || \"a\" + (t < 1 ? \"n \" : \" \") + e;\n  };\n});\nconst As = {};\nVn.transitional = function(t, n, r) {\n  function i(s, o) {\n    return \"[Axios v\" + Da + \"] Transitional option '\" + s + \"'\" + o + (r ? \". \" + r : \"\");\n  }\n  return (s, o, u) => {\n    if (t === !1)\n      throw new C(\n        i(o, \" has been removed\" + (n ? \" in \" + n : \"\")),\n        C.ERR_DEPRECATED\n      );\n    return n && !As[o] && (As[o] = !0, console.warn(\n      i(\n        o,\n        \" has been deprecated since v\" + n + \" and will be removed in the near future\"\n      )\n    )), t ? t(s, o, u) : !0;\n  };\n};\nVn.spelling = function(t) {\n  return (n, r) => (console.warn(`${r} is likely a misspelling of ${t}`), !0);\n};\nfunction j2(e, t, n) {\n  if (typeof e != \"object\")\n    throw new C(\"options must be an object\", C.ERR_BAD_OPTION_VALUE);\n  const r = Object.keys(e);\n  let i = r.length;\n  for (; i-- > 0; ) {\n    const s = r[i], o = t[s];\n    if (o) {\n      const u = e[s], a = u === void 0 || o(u, s, e);\n      if (a !== !0)\n        throw new C(\"option \" + s + \" must be \" + a, C.ERR_BAD_OPTION_VALUE);\n      continue;\n    }\n    if (n !== !0)\n      throw new C(\"Unknown option \" + s, C.ERR_BAD_OPTION);\n  }\n}\nconst on = {\n  assertOptions: j2,\n  validators: Vn\n}, fe = on.validators;\nclass vn {\n  constructor(t) {\n    this.defaults = t, this.interceptors = {\n      request: new gs(),\n      response: new gs()\n    };\n  }\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(t, n) {\n    try {\n      return await this._request(t, n);\n    } catch (r) {\n      if (r instanceof Error) {\n        let i = {};\n        Error.captureStackTrace ? Error.captureStackTrace(i) : i = new Error();\n        const s = i.stack ? i.stack.replace(/^.+\\n/, \"\") : \"\";\n        try {\n          r.stack ? s && !String(r.stack).endsWith(s.replace(/^.+\\n.+\\n/, \"\")) && (r.stack += `\n` + s) : r.stack = s;\n        } catch {\n        }\n      }\n      throw r;\n    }\n  }\n  _request(t, n) {\n    typeof t == \"string\" ? (n = n || {}, n.url = t) : n = t || {}, n = je(this.defaults, n);\n    const { transitional: r, paramsSerializer: i, headers: s } = n;\n    r !== void 0 && on.assertOptions(r, {\n      silentJSONParsing: fe.transitional(fe.boolean),\n      forcedJSONParsing: fe.transitional(fe.boolean),\n      clarifyTimeoutError: fe.transitional(fe.boolean)\n    }, !1), i != null && (g.isFunction(i) ? n.paramsSerializer = {\n      serialize: i\n    } : on.assertOptions(i, {\n      encode: fe.function,\n      serialize: fe.function\n    }, !0)), n.allowAbsoluteUrls !== void 0 || (this.defaults.allowAbsoluteUrls !== void 0 ? n.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls : n.allowAbsoluteUrls = !0), on.assertOptions(n, {\n      baseUrl: fe.spelling(\"baseURL\"),\n      withXsrfToken: fe.spelling(\"withXSRFToken\")\n    }, !0), n.method = (n.method || this.defaults.method || \"get\").toLowerCase();\n    let o = s && g.merge(\n      s.common,\n      s[n.method]\n    );\n    s && g.forEach(\n      [\"delete\", \"get\", \"head\", \"post\", \"put\", \"patch\", \"common\"],\n      (p) => {\n        delete s[p];\n      }\n    ), n.headers = le.concat(o, s);\n    const u = [];\n    let a = !0;\n    this.interceptors.request.forEach(function(m) {\n      typeof m.runWhen == \"function\" && m.runWhen(n) === !1 || (a = a && m.synchronous, u.unshift(m.fulfilled, m.rejected));\n    });\n    const c = [];\n    this.interceptors.response.forEach(function(m) {\n      c.push(m.fulfilled, m.rejected);\n    });\n    let l, f = 0, d;\n    if (!a) {\n      const p = [Ss.bind(this), void 0];\n      for (p.unshift.apply(p, u), p.push.apply(p, c), d = p.length, l = Promise.resolve(n); f < d; )\n        l = l.then(p[f++], p[f++]);\n      return l;\n    }\n    d = u.length;\n    let h = n;\n    for (f = 0; f < d; ) {\n      const p = u[f++], m = u[f++];\n      try {\n        h = p(h);\n      } catch (D) {\n        m.call(this, D);\n        break;\n      }\n    }\n    try {\n      l = Ss.call(this, h);\n    } catch (p) {\n      return Promise.reject(p);\n    }\n    for (f = 0, d = c.length; f < d; )\n      l = l.then(c[f++], c[f++]);\n    return l;\n  }\n  getUri(t) {\n    t = je(this.defaults, t);\n    const n = ha(t.baseURL, t.url, t.allowAbsoluteUrls);\n    return oa(n, t.params, t.paramsSerializer);\n  }\n}\ng.forEach([\"delete\", \"get\", \"head\", \"options\"], function(t) {\n  vn.prototype[t] = function(n, r) {\n    return this.request(je(r || {}, {\n      method: t,\n      url: n,\n      data: (r || {}).data\n    }));\n  };\n});\ng.forEach([\"post\", \"put\", \"patch\"], function(t) {\n  function n(r) {\n    return function(s, o, u) {\n      return this.request(je(u || {}, {\n        method: t,\n        headers: r ? {\n          \"Content-Type\": \"multipart/form-data\"\n        } : {},\n        url: s,\n        data: o\n      }));\n    };\n  }\n  vn.prototype[t] = n(), vn.prototype[t + \"Form\"] = n(!0);\n});\nconst un = vn;\nclass Ai {\n  constructor(t) {\n    if (typeof t != \"function\")\n      throw new TypeError(\"executor must be a function.\");\n    let n;\n    this.promise = new Promise(function(s) {\n      n = s;\n    });\n    const r = this;\n    this.promise.then((i) => {\n      if (!r._listeners)\n        return;\n      let s = r._listeners.length;\n      for (; s-- > 0; )\n        r._listeners[s](i);\n      r._listeners = null;\n    }), this.promise.then = (i) => {\n      let s;\n      const o = new Promise((u) => {\n        r.subscribe(u), s = u;\n      }).then(i);\n      return o.cancel = function() {\n        r.unsubscribe(s);\n      }, o;\n    }, t(function(s, o, u) {\n      r.reason || (r.reason = new dt(s, o, u), n(r.reason));\n    });\n  }\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason)\n      throw this.reason;\n  }\n  /**\n   * Subscribe to the cancel signal\n   */\n  subscribe(t) {\n    if (this.reason) {\n      t(this.reason);\n      return;\n    }\n    this._listeners ? this._listeners.push(t) : this._listeners = [t];\n  }\n  /**\n   * Unsubscribe from the cancel signal\n   */\n  unsubscribe(t) {\n    if (!this._listeners)\n      return;\n    const n = this._listeners.indexOf(t);\n    n !== -1 && this._listeners.splice(n, 1);\n  }\n  toAbortSignal() {\n    const t = new AbortController(), n = (r) => {\n      t.abort(r);\n    };\n    return this.subscribe(n), t.signal.unsubscribe = () => this.unsubscribe(n), t.signal;\n  }\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let t;\n    return {\n      token: new Ai(function(i) {\n        t = i;\n      }),\n      cancel: t\n    };\n  }\n}\nconst U2 = Ai;\nfunction Z2(e) {\n  return function(n) {\n    return e.apply(null, n);\n  };\n}\nfunction q2(e) {\n  return g.isObject(e) && e.isAxiosError === !0;\n}\nconst Br = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511\n};\nObject.entries(Br).forEach(([e, t]) => {\n  Br[t] = e;\n});\nconst W2 = Br;\nfunction ga(e) {\n  const t = new un(e), n = Qu(un.prototype.request, t);\n  return g.extend(n, un.prototype, t, { allOwnKeys: !0 }), g.extend(n, t, null, { allOwnKeys: !0 }), n.create = function(i) {\n    return ga(je(e, i));\n  }, n;\n}\nconst q = ga(Si);\nq.Axios = un;\nq.CanceledError = dt;\nq.CancelToken = U2;\nq.isCancel = ca;\nq.VERSION = Da;\nq.toFormData = qn;\nq.AxiosError = C;\nq.Cancel = q.CanceledError;\nq.all = function(t) {\n  return Promise.all(t);\n};\nq.spread = Z2;\nq.isAxiosError = q2;\nq.mergeConfig = je;\nq.AxiosHeaders = le;\nq.formToJSON = (e) => aa(g.isHTMLForm(e) ? new FormData(e) : e);\nq.getAdapter = ma.getAdapter;\nq.HttpStatusCode = W2;\nq.default = q;\nconst ya = q;\nclass G2 {\n  instance;\n  constructor(t) {\n    this.instance = ya.create(t), this.instance.interceptors.request.use(\n      (n) => (t?.interceptors?.request?.(n), n),\n      (n) => (t?.interceptors?.requestError?.(n), Promise.reject(n))\n    ), this.instance.interceptors.response.use(\n      (n) => (t?.interceptors?.response?.(n), n.status == 200, Promise.resolve(n)),\n      (n) => (t?.interceptors?.responseError?.(n), Promise.reject(n))\n    );\n  }\n  request(t) {\n    let n = !1;\n    const r = this.instance.request(t);\n    return r.cancel = () => {\n      n = !0;\n    }, r.then((i) => {\n      if (n)\n        throw new Error(\"Canceled!\");\n      return i;\n    });\n  }\n  get(t, n) {\n    return this.request({ ...n, method: \"get\", url: t });\n  }\n  delete(t, n) {\n    return this.request({ ...n, method: \"delete\", url: t });\n  }\n  head(t, n) {\n    return this.request({ ...n, method: \"head\", url: t });\n  }\n  options(t, n) {\n    return this.request({ ...n, method: \"options\", url: t });\n  }\n  post(t, n, r) {\n    return this.request({ ...r, method: \"post\", url: t, data: n });\n  }\n  postFormData(t, n, r) {\n    return r = {\n      ...r,\n      headers: {\n        ...r?.headers,\n        \"Content-Type\": \"multipart/form-data\"\n      }\n      // onUploadProgress: (e) => {\n      //   console.log(Math.round((e.loaded / e.total) * 100) + \"%\");\n      // }\n    }, this.request({ ...r, method: \"post\", url: t, data: n });\n  }\n  // UNDO : application/octet-stream\n  postForm(t, n, r) {\n    return this.instance.postForm(t, n, {\n      ...r\n    });\n  }\n  put(t, n, r) {\n    return this.request({ ...r, method: \"put\", url: t, data: n });\n  }\n  patch(t, n, r) {\n    return this.request({ ...r, method: \"patch\", url: t, data: n });\n  }\n  getUri(t) {\n    return this.instance.getUri(t);\n  }\n}\nfunction V2(e) {\n  return ya.isAxiosError(e) ? !e.response : !1;\n}\nfunction K2(e, t) {\n  return zt(e.get, {\n    ...t,\n    shouldRetry: (n) => t?.shouldRetry ? t.shouldRetry(n) : V2(n)\n  });\n}\nfunction fE(e, t) {\n  return Ke(e.get, t);\n}\nfunction dE(e, t) {\n  let n = K2(e, t);\n  return n = Ke(n, t), n;\n}\nfunction pE(e, t, n = () => Date.now().toString(16)) {\n  const r = `----FormBoundary${n()}`, i = [];\n  i.push(\n    Buffer.from(\n      `--${r}\\r\nContent-Disposition: form-data; name=\"file\"; filename=\"${t}\"\\r\nContent-Type: application/octet-stream\\r\n\\r\n`\n    )\n  ), i.push(e), i.push(Buffer.from(`\\r\n`)), i.push(\n    Buffer.from(\n      `--${r}\\r\nContent-Disposition: form-data; name=\"purpose\"\\r\n\\r\nuser_data\\r\n`\n    )\n  ), i.push(Buffer.from(`--${r}--\\r\n`));\n  const s = Buffer.concat(i);\n  return {\n    body: s,\n    headers: {\n      \"Content-Type\": `multipart/form-data; boundary=${r}`,\n      \"Content-Length\": s.length.toString()\n    }\n  };\n}\nconst $r = new kl({\n  cacheKeyResolver: (e) => {\n    const { method: t, url: n, body: r } = e;\n    return Mh({ method: t, url: n, body: r });\n  }\n});\nasync function Oi(e, t) {\n  if (typeof fetch > \"u\")\n    throw new Error(\"fetch not supported!\");\n  const {\n    responseType: n = gt.json,\n    timeout: r = 6e4,\n    onProgress: i\n  } = t, s = { url: e, ...t }, o = $r.set(s), u = Ml([\n    o.signal,\n    // AbortError\n    AbortSignal.timeout(r)\n    // TimeoutError\n  ]);\n  let a = await fetch(\n    new Request(e, {\n      ...t,\n      signal: u\n      // headers: new Headers(headers),\n      // credentials: \"include\" || \"same-origin\"\n    })\n  );\n  if ($r.delete(s), !a.ok)\n    throw new Error(\n      `fetchWithFetch(${a.url}) failed: status(${a.status}) statusText(${a.statusText})`\n    );\n  if (i && typeof ReadableStream < \"u\" && a.body && a.body.getReader) {\n    const c = a.body.getReader(), l = a.headers.get(\"X-File-Size\") || a.headers.get(\"Content-Length\"), f = l ? parseInt(l) : 0, d = f !== 0;\n    let h = 0;\n    const p = new ReadableStream({\n      start(m) {\n        function D() {\n          c.read().then(({ done: y, value: F }) => {\n            y ? m.close() : (h += F.byteLength, i?.(\n              new ProgressEvent(\"progress\", {\n                lengthComputable: d,\n                loaded: h,\n                total: f\n              })\n            ), m.enqueue(F), D());\n          }).catch((y) => {\n            m.error(y);\n          });\n        }\n        D();\n      }\n    });\n    a = new Response(p);\n  }\n  switch (n) {\n    case gt.arraybuffer:\n      return await a.arrayBuffer();\n    case gt.blob:\n      return await a.blob();\n    case gt.json:\n      return await a.json();\n    case gt.text:\n    default:\n      return await a.text();\n  }\n}\nfunction mE(e, t) {\n  $r.abort({ url: e, ...t });\n}\nfunction DE(e) {\n  return zt(Oi, e);\n}\nfunction gE(e) {\n  return Ke(Oi, e);\n}\nfunction yE(e) {\n  return Ke(zt(Oi, e), e);\n}\nfunction bE(e, t = (n, r) => n <= r) {\n  for (let n = 1, r = e.length; n < r; n++) {\n    let i = !1;\n    for (let s = 0; s < r - n; s++)\n      t(e[s], e[s + 1]) || ([e[s], e[s + 1]] = [e[s + 1], e[s]], i = !0);\n    if (!i)\n      return;\n  }\n}\nfunction wE(e, t = (n, r) => n <= r) {\n  let n;\n  for (let r = 0, i = e.length; r < i - 1; r++) {\n    n = r;\n    for (let s = r + 1; s < i; s++)\n      t(e[n], e[s]) || (n = s);\n    n != r && ([e[n], e[r]] = [e[r], e[n]]);\n  }\n}\nfunction FE(e, t = (n, r) => n <= r) {\n  for (let n = 1, r = e.length; n < r; n++) {\n    const i = e[n];\n    let s = n - 1;\n    for (; s >= 0 && !t(e[s], i); )\n      e[s + 1] = e[s], s--;\n    e[s + 1] = i;\n  }\n}\nfunction Os(e, t = (n, r) => n <= r) {\n  const n = e.length;\n  if (n < 2)\n    return e;\n  const r = Math.floor(n / 2), i = Os(e.slice(0, r), t), s = Os(e.slice(r), t), o = [];\n  for (; i.length && s.length; )\n    t(i[0], s[0]) ? o.push(i.shift()) : o.push(s.shift());\n  for (; i.length; )\n    o.push(i.shift());\n  for (; s.length; )\n    o.push(s.shift());\n  return o;\n}\nfunction Cs(e, t = 0, n = e.length - 1, r = (i, s) => i <= s) {\n  if (t >= n)\n    return;\n  const i = t + n >> 1;\n  Cs(e, t, i, r), Cs(e, i + 1, n, r);\n  let s = t, o = i + 1;\n  const u = [];\n  for (; s <= i && o <= n; )\n    r(e[s], e[o]) ? u.push(e[s++]) : u.push(e[o++]);\n  for (; s <= i; )\n    u.push(e[s++]);\n  for (; o <= n; )\n    u.push(e[o++]);\n  for (s = t, o = 0; s <= n; ++s, ++o)\n    e[s] = u[o];\n}\nfunction Q2(e, t = 0, n = e.length - 1, r = (i, s) => i <= s) {\n  if (t >= n)\n    return t;\n  const i = n, s = e[i];\n  let o = t;\n  for (let u = t; u <= n; u++)\n    u != i && r(e[u], s) && ([e[o], e[u]] = [e[u], e[o]], o++);\n  return [e[o], e[i]] = [\n    e[i],\n    e[o]\n  ], o;\n}\nfunction Ts(e, t = 0, n = e.length - 1, r = (i, s) => i <= s) {\n  if (t >= n)\n    return;\n  const i = Q2(e, t, n, r);\n  Ts(e, t, i - 1, r), Ts(e, i + 1, n, r);\n}\nfunction Rs(e, t = 0, n = e.length - 1, r = (i, s) => i <= s) {\n  if (t >= n)\n    return;\n  const i = t, s = e[i];\n  let o = t, u = n;\n  for (; o < u; ) {\n    for (; o < n && r(e[o], s); )\n      o++;\n    for (; u > t && r(s, e[u]); )\n      u--;\n    o < u && ([e[o], e[u]] = [e[u], e[o]]);\n  }\n  [e[i], e[u]] = [e[u], e[i]], Rs(e, t, u - 1, r), Rs(e, u + 1, n, r);\n}\nfunction xs(e, t = 0, n = e.length - 1, r = (i, s) => i <= s) {\n  if (t >= n)\n    return;\n  const i = t, s = e[i];\n  let o = t, u = n, a = t;\n  for (; a <= u; )\n    r(e[a], s) ? ([e[o], e[a]] = [e[a], e[o]], o++, a++) : r(s, e[a]) ? ([e[a], e[u]] = [e[u], e[a]], u--) : a++;\n  [e[i], e[u]] = [e[u], e[i]], xs(e, t, u - 1, r), xs(e, u + 1, n, r);\n}\nfunction EE(e, t = (n, r) => n <= r) {\n  const n = e.length;\n  let r = Math.floor(n / 2);\n  for (; r > 0; ) {\n    for (let i = r; i < n; i++) {\n      const s = e[i];\n      let o = i;\n      for (; o >= r && !t(e[o - r], s); )\n        e[o] = e[o - r], o -= r;\n      e[o] = s;\n    }\n    r = Math.floor(r / 2);\n  }\n}\nfunction vE(e, t = (n, r) => n <= r) {\n  const n = new Bn(t, e), r = [];\n  let i;\n  for (; (i = n.pop()) !== null; )\n    r.push(i);\n  return r;\n}\nfunction _E(e, t) {\n  let n = 0, r = e.length - 1;\n  for (; n < r; ) {\n    const i = Math.floor((n + r) / 2), s = e[i];\n    if (s === t)\n      return i;\n    s < t ? n = i + 1 : r = i - 1;\n  }\n  return -1;\n}\nfunction SE(e, t) {\n  function n(i, s, o) {\n    const u = i[o];\n    let a = s - 1;\n    for (let c = s; c < o; c++)\n      i[c] >= u && (a++, [i[a], i[c]] = [i[c], i[a]]);\n    return [i[a + 1], i[o]] = [i[o], i[a + 1]], a + 1;\n  }\n  function r(i, s, o) {\n    if (i === s)\n      return e[i];\n    const u = n(e, i, s);\n    return u === o ? e[u] : u < o ? r(u + 1, s, o) : r(i, u - 1, o);\n  }\n  return r(0, e.length - 1, t - 1);\n}\nclass AE {\n  prefixSumArray;\n  constructor(t) {\n    const n = t.length + 1;\n    this.prefixSumArray = Array.from({ length: n }).fill(0);\n    for (let r = 1; r < n; r++)\n      this.prefixSumArray[r] = this.prefixSumArray[r - 1] + t[r - 1];\n  }\n  // 查询闭区间 [i, j] 的累加和\n  sum(t, n) {\n    return this.prefixSumArray[n + 1] - this.prefixSumArray[t];\n  }\n}\nclass OE {\n  diffArray;\n  constructor(t) {\n    const n = t.length;\n    this.diffArray = Array.from({ length: n }).fill(0), this.diffArray[0] = t[0];\n    for (let r = 1; r < n; r++)\n      this.diffArray[r] = t[r] - t[r - 1];\n  }\n  // 根据差分数组构造结果数组\n  result() {\n    const t = this.diffArray.length, n = Array.from({ length: t }).fill(0);\n    n[0] = this.diffArray[0];\n    for (let r = 1; r < t; r++)\n      n[r] = n[r - 1] + this.diffArray[r];\n    return n;\n  }\n  // 对闭区间 [i, j]进行增减的操作 ，num 可以为负数\n  // 原理很简单，根据 diffArray 数组反推 nums 数组的过程，diff[i] += 3 意味着给 nums[i..] 所有的元素都加了 3，然后 diffArray[j+1] -= 3 又意味着对于 nums[j+1..] 所有元素再减 3，那综合起来，是不是就是对 nums[i..j] 中的所有元素都加 3 了\n  // 只要花费 O(1) 的时间修改 diffArray 数组，就相当于给 原数组 的整个区间做了修改\n  operate(t, n, r) {\n    t >= 0 && t < this.diffArray.length && (this.diffArray[t] += r), n + 1 >= 0 && n + 1 < this.diffArray.length && (this.diffArray[n + 1] -= r);\n  }\n}\nclass J2 {\n  commands = [];\n  pushCommand(t) {\n    this.commands.push(t);\n  }\n  popCommand() {\n    this.commands.pop();\n  }\n  executeCommands(...t) {\n    this.commands.forEach((n) => this.executeCommand(n, ...t)), this.commands = [];\n  }\n  // 子类只需修改此方法\n  executeCommand(t, ...n) {\n    t.execute(...n);\n  }\n}\nclass H2 {\n  data;\n  constructor(t) {\n    this.data = t;\n  }\n  get() {\n    return this.data;\n  }\n}\nclass CE {\n  state;\n  saveState() {\n    if (this.state)\n      return new H2(this.state);\n  }\n  restoreState(t) {\n    this.state = t.get();\n  }\n}\nclass TE extends J2 {\n  originator;\n  mementos = [];\n  constructor(t) {\n    super(), this.originator = t;\n  }\n  pushMemento(t) {\n    this.mementos.push(t);\n  }\n  popMemento() {\n    return this.mementos.pop();\n  }\n  executeCommand(t) {\n    t.execute(this);\n  }\n}\nclass RE {\n  execute(t) {\n    const n = t.originator.saveState();\n    n && t.pushMemento(n);\n  }\n}\nclass xE {\n  execute(t) {\n    const n = t.popMemento();\n    n && t.originator.restoreState(n);\n  }\n}\nfunction kE(e, t) {\n  const n = typeof t?.aliveInSeconds == \"number\" ? Math.max(t.aliveInSeconds, 0) : -1, r = typeof t?.aliveUntilTimestamp == \"number\" ? Math.max(t.aliveUntilTimestamp, 0) : -1;\n  function i(a, c = !1) {\n    return ti(a) || Ge(a) || Oe(a) ? { value: a, timestamp: Zt() } : c && Object.prototype.hasOwnProperty.call(a, \"timestamp\") ? a : {\n      ...a,\n      timestamp: Zt()\n    };\n  }\n  let s = i(e, !0);\n  function o() {\n    let a = !1;\n    return (n >= 0 && Zt() > X(s.timestamp, 0) + n * 1e3 || r >= 0 && Zt() > r) && (a = !0), a && (s.value = void 0), s;\n  }\n  function u(a) {\n    return s = i(a, !1);\n  }\n  return {\n    get: o,\n    set: u\n  };\n}\nfunction NE(e) {\n  const t = new Ho(e);\n  return {\n    // getState: () => state$.value[0],\n    getState: () => t.value,\n    setState: (n) => {\n      const r = t.value, i = typeof n == \"function\" ? n(r) : n;\n      Object.is(r, i) || t.next(i);\n    },\n    subscribe: (n) => {\n      const r = t.subscribe((i) => {\n        Sr(() => n(i));\n      });\n      return () => r.unsubscribe();\n    }\n  };\n}\nfunction X2(e, t) {\n  let n = e;\n  const r = jo();\n  return {\n    getState: () => n,\n    setState: (i) => {\n      const s = typeof i == \"function\" ? i(n) : i;\n      Object.is(n, s) || t?.beforeChange && !t.beforeChange(s) || (n = s, r.emit(n));\n    },\n    subscribe: (i) => {\n      Sr(() => i(n));\n      const s = r.subscribe((o) => {\n        Sr(() => i(o));\n      });\n      return () => s();\n    }\n  };\n}\nfunction ba(e) {\n  const t = e.initState || {};\n  let n = e.reducer;\n  if (e.enhancer)\n    return e.enhancer(ba)({ reducer: n, initState: t });\n  const r = X2(t), i = (o) => {\n    const u = n(r.getState(), o);\n    r.setState(u);\n  }, s = (o) => {\n    n = o, i({ type: Symbol() });\n  };\n  return i({ type: Symbol() }), {\n    getState: r.getState,\n    dispatch: i,\n    subscribe: r.subscribe,\n    replaceReducer: s\n  };\n}\nfunction Y2(e, t = !0) {\n  const n = Object.keys(e);\n  return (r = {}, i) => {\n    const s = t ? { ...r } : r;\n    for (const o of n) {\n      const u = e[o](s[o] ?? {}, i);\n      if (u === void 0)\n        throw new Error(`Reducer \"${o}\" returned undefined`);\n      s[o] = u;\n    }\n    return s;\n  };\n}\nfunction ed(...e) {\n  return (t) => (n) => {\n    const r = t(n);\n    let i = r.dispatch;\n    const s = { getState: r.getState, dispatch: i }, o = e.map((u) => u(s));\n    return i = bl(...o)(i), r.dispatch = i, r;\n  };\n}\nfunction td(e) {\n  const t = new Ho(void 0), n = new di();\n  let r = null, i = !1, s = !1;\n  return {\n    middleware(o) {\n      return i ? (u) => u : (i = !0, t.next(o.getState()), (u) => (a) => {\n        const c = u(a);\n        return t.next(o.getState()), n.next(a), c;\n      });\n    },\n    // 延迟注入\n    run(o, u) {\n      if (!i)\n        throw new Error(\n          \"EpicMiddleware should applyMiddleware() to store before\"\n        );\n      if (s)\n        throw new Error(\"EpicMiddleware destroyed\");\n      return r || (r = o(n, t, {\n        ...e?.dependencies ?? {},\n        dispatch: u.dispatch\n        // 配合 框架 context, 注入 dispatch 给 epic 使用\n      }).pipe(\n        // Uncaught errors can bubble up to the root epic and cause the entire stream to terminate.\n        // As a consequence, epics registered in the middleware will no longer run in your application.\n        // To alleviate this issue, you can add a global error handler to the root epic that catches uncaught errors and resubscribes to the source stream.\n        pu((a, c) => (Il(\"[Epic Error]\", a), c))\n      ).subscribe({\n        next(a) {\n          u.dispatch(a);\n        },\n        error(a) {\n          console.error(\"[Epic Fatal Error]\", a);\n        }\n      }), r);\n    },\n    destroy() {\n      s = !0, r?.unsubscribe(), r = null, n.complete(), t.complete();\n    }\n  };\n}\nfunction IE(...e) {\n  return (t, n, r) => wh(...e.map((i) => i(t, n, r)));\n}\nfunction PE(...e) {\n  return du((t) => e.includes(t.type));\n}\nfunction zE() {\n  return {\n    middleware(e) {\n      return (t) => (n) => typeof n == \"function\" ? n(e.dispatch, e.getState) : t(n);\n    }\n  };\n}\nconst nd = (e) => {\n  let t = 0;\n  return (n) => (r) => {\n    Gi.start(`--- ${++t}: action(${String(r.type)}) ---`), $e(`action: ${nr(r)}`), $e(`old-state: ${nr(e.getState())}`), n(r), $e(`new-state: ${nr(e.getState())}`), Gi.end();\n  };\n}, rd = (e) => (t) => (n) => {\n  try {\n    t(n);\n  } catch (r) {\n    throw $e(`Reducer错误报告: ${r}`), r;\n  }\n}, BE = (e) => (t) => (n) => {\n  const r = `dispatch(${String(n.type)}) execute time`;\n  dn.start(r), t(n), dn.end(r);\n};\nfunction $E(e = \"\", t) {\n  const {\n    OPERATION_DELIMITER: n = \"/\",\n    KEY_DELIMITER: r = \",\",\n    KEY_VALUE_DELIMITER: i = \":\"\n  } = t || {};\n  return e.split(n).filter((s) => s !== \"\").reduce((s, o) => {\n    const [u, ...a] = o.split(r);\n    if (a.length === 0) {\n      const [c, l] = u.split(i);\n      s.push({\n        type: c,\n        payload: l !== void 0 ? decodeURIComponent(l) : !0\n      });\n    } else {\n      if (u.indexOf(i) !== -1)\n        throw new Error(`\"${u}\" is invalid`);\n      s.push(\n        a.reduce(\n          (c, l) => {\n            const [f, d] = l.split(i);\n            return c[f] = d !== void 0 ? decodeURIComponent(d) : !0, c;\n          },\n          {\n            type: u\n          }\n        )\n      );\n    }\n    return s;\n  }, []);\n}\nvar pt = class {\n  constructor() {\n    this.listeners = /* @__PURE__ */ new Set(), this.subscribe = this.subscribe.bind(this);\n  }\n  subscribe(e) {\n    return this.listeners.add(e), this.onSubscribe(), () => {\n      this.listeners.delete(e), this.onUnsubscribe();\n    };\n  }\n  hasListeners() {\n    return this.listeners.size > 0;\n  }\n  onSubscribe() {\n  }\n  onUnsubscribe() {\n  }\n}, id = class extends pt {\n  #e;\n  #t;\n  #n;\n  constructor() {\n    super(), this.#n = (e) => {\n      if (typeof window < \"u\" && window.addEventListener) {\n        const t = () => e();\n        return window.addEventListener(\"visibilitychange\", t, !1), () => {\n          window.removeEventListener(\"visibilitychange\", t);\n        };\n      }\n    };\n  }\n  onSubscribe() {\n    this.#t || this.setEventListener(this.#n);\n  }\n  onUnsubscribe() {\n    this.hasListeners() || (this.#t?.(), this.#t = void 0);\n  }\n  setEventListener(e) {\n    this.#n = e, this.#t?.(), this.#t = e((t) => {\n      typeof t == \"boolean\" ? this.setFocused(t) : this.onFocus();\n    });\n  }\n  setFocused(e) {\n    this.#e !== e && (this.#e = e, this.onFocus());\n  }\n  onFocus() {\n    const e = this.isFocused();\n    this.listeners.forEach((t) => {\n      t(e);\n    });\n  }\n  isFocused() {\n    return typeof this.#e == \"boolean\" ? this.#e : globalThis.document?.visibilityState !== \"hidden\";\n  }\n}, Ci = new id(), sd = {\n  // We need the wrapper function syntax below instead of direct references to\n  // global setTimeout etc.\n  //\n  // BAD: `setTimeout: setTimeout`\n  // GOOD: `setTimeout: (cb, delay) => setTimeout(cb, delay)`\n  //\n  // If we use direct references here, then anything that wants to spy on or\n  // replace the global setTimeout (like tests) won't work since we'll already\n  // have a hard reference to the original implementation at the time when this\n  // file was imported.\n  setTimeout: (e, t) => setTimeout(e, t),\n  clearTimeout: (e) => clearTimeout(e),\n  setInterval: (e, t) => setInterval(e, t),\n  clearInterval: (e) => clearInterval(e)\n}, od = class {\n  // We cannot have TimeoutManager<T> as we must instantiate it with a concrete\n  // type at app boot; and if we leave that type, then any new timer provider\n  // would need to support the default provider's concrete timer ID, which is\n  // infeasible across environments.\n  //\n  // We settle for type safety for the TimeoutProvider type, and accept that\n  // this class is unsafe internally to allow for extension.\n  #e = sd;\n  #t = !1;\n  setTimeoutProvider(e) {\n    ({}).NODE_ENV !== \"production\" && this.#t && e !== this.#e && console.error(\n      \"[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.\",\n      { previous: this.#e, provider: e }\n    ), this.#e = e, {}.NODE_ENV !== \"production\" && (this.#t = !1);\n  }\n  setTimeout(e, t) {\n    return {}.NODE_ENV !== \"production\" && (this.#t = !0), this.#e.setTimeout(e, t);\n  }\n  clearTimeout(e) {\n    this.#e.clearTimeout(e);\n  }\n  setInterval(e, t) {\n    return {}.NODE_ENV !== \"production\" && (this.#t = !0), this.#e.setInterval(e, t);\n  }\n  clearInterval(e) {\n    this.#e.clearInterval(e);\n  }\n}, Be = new od();\nfunction ud(e) {\n  setTimeout(e, 0);\n}\nvar ad = typeof window > \"u\" || \"Deno\" in globalThis;\nfunction Q() {\n}\nfunction cd(e, t) {\n  return typeof e == \"function\" ? e(t) : e;\n}\nfunction Lr(e) {\n  return typeof e == \"number\" && e >= 0 && e !== 1 / 0;\n}\nfunction wa(e, t) {\n  return Math.max(e + (t || 0) - Date.now(), 0);\n}\nfunction Ae(e, t) {\n  return typeof e == \"function\" ? e(t) : e;\n}\nfunction ie(e, t) {\n  return typeof e == \"function\" ? e(t) : e;\n}\nfunction ks(e, t) {\n  const {\n    type: n = \"all\",\n    exact: r,\n    fetchStatus: i,\n    predicate: s,\n    queryKey: o,\n    stale: u\n  } = e;\n  if (o) {\n    if (r) {\n      if (t.queryHash !== Ti(o, t.options))\n        return !1;\n    } else if (!Rt(t.queryKey, o))\n      return !1;\n  }\n  if (n !== \"all\") {\n    const a = t.isActive();\n    if (n === \"active\" && !a || n === \"inactive\" && a)\n      return !1;\n  }\n  return !(typeof u == \"boolean\" && t.isStale() !== u || i && i !== t.state.fetchStatus || s && !s(t));\n}\nfunction Ns(e, t) {\n  const { exact: n, status: r, predicate: i, mutationKey: s } = e;\n  if (s) {\n    if (!t.options.mutationKey)\n      return !1;\n    if (n) {\n      if (Ue(t.options.mutationKey) !== Ue(s))\n        return !1;\n    } else if (!Rt(t.options.mutationKey, s))\n      return !1;\n  }\n  return !(r && t.state.status !== r || i && !i(t));\n}\nfunction Ti(e, t) {\n  return (t?.queryKeyHashFn || Ue)(e);\n}\nfunction Ue(e) {\n  return JSON.stringify(\n    e,\n    (t, n) => jr(n) ? Object.keys(n).sort().reduce((r, i) => (r[i] = n[i], r), {}) : n\n  );\n}\nfunction Rt(e, t) {\n  return e === t ? !0 : typeof e != typeof t ? !1 : e && t && typeof e == \"object\" && typeof t == \"object\" ? Object.keys(t).every((n) => Rt(e[n], t[n])) : !1;\n}\nvar ld = Object.prototype.hasOwnProperty;\nfunction Mr(e, t, n = 0) {\n  if (e === t)\n    return e;\n  if (n > 500)\n    return t;\n  const r = Is(e) && Is(t);\n  if (!r && !(jr(e) && jr(t)))\n    return t;\n  const s = (r ? e : Object.keys(e)).length, o = r ? t : Object.keys(t), u = o.length, a = r ? new Array(u) : {};\n  let c = 0;\n  for (let l = 0; l < u; l++) {\n    const f = r ? l : o[l], d = e[f], h = t[f];\n    if (d === h) {\n      a[f] = d, (r ? l < s : ld.call(e, f)) && c++;\n      continue;\n    }\n    if (d === null || h === null || typeof d != \"object\" || typeof h != \"object\") {\n      a[f] = h;\n      continue;\n    }\n    const p = Mr(d, h, n + 1);\n    a[f] = p, p === d && c++;\n  }\n  return s === u && c === s ? e : a;\n}\nfunction _n(e, t) {\n  if (!t || Object.keys(e).length !== Object.keys(t).length)\n    return !1;\n  for (const n in e)\n    if (e[n] !== t[n])\n      return !1;\n  return !0;\n}\nfunction Is(e) {\n  return Array.isArray(e) && e.length === Object.keys(e).length;\n}\nfunction jr(e) {\n  if (!Ps(e))\n    return !1;\n  const t = e.constructor;\n  if (t === void 0)\n    return !0;\n  const n = t.prototype;\n  return !(!Ps(n) || !n.hasOwnProperty(\"isPrototypeOf\") || Object.getPrototypeOf(e) !== Object.prototype);\n}\nfunction Ps(e) {\n  return Object.prototype.toString.call(e) === \"[object Object]\";\n}\nfunction hd(e) {\n  return new Promise((t) => {\n    Be.setTimeout(t, e);\n  });\n}\nfunction Ur(e, t, n) {\n  if (typeof n.structuralSharing == \"function\")\n    return n.structuralSharing(e, t);\n  if (n.structuralSharing !== !1) {\n    if ({}.NODE_ENV !== \"production\")\n      try {\n        return Mr(e, t);\n      } catch (r) {\n        throw console.error(\n          `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${n.queryHash}]: ${r}`\n        ), r;\n      }\n    return Mr(e, t);\n  }\n  return t;\n}\nfunction fd(e, t, n = 0) {\n  const r = [...e, t];\n  return n && r.length > n ? r.slice(1) : r;\n}\nfunction dd(e, t, n = 0) {\n  const r = [t, ...e];\n  return n && r.length > n ? r.slice(0, -1) : r;\n}\nvar Sn = /* @__PURE__ */ Symbol();\nfunction Fa(e, t) {\n  return {}.NODE_ENV !== \"production\" && e.queryFn === Sn && console.error(\n    `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${e.queryHash}'`\n  ), !e.queryFn && t?.initialPromise ? () => t.initialPromise : !e.queryFn || e.queryFn === Sn ? () => Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)) : e.queryFn;\n}\nfunction pd(e, t, n) {\n  let r = !1, i;\n  return Object.defineProperty(e, \"signal\", {\n    enumerable: !0,\n    get: () => (i ??= t(), r || (r = !0, i.aborted ? n() : i.addEventListener(\"abort\", n, { once: !0 })), i)\n  }), e;\n}\nvar An = /* @__PURE__ */ (() => {\n  let e = () => ad;\n  return {\n    /**\n     * Returns whether the current runtime should be treated as a server environment.\n     */\n    isServer() {\n      return e();\n    },\n    /**\n     * Overrides the server check globally.\n     */\n    setIsServer(t) {\n      e = t;\n    }\n  };\n})();\nfunction Zr() {\n  let e, t;\n  const n = new Promise((i, s) => {\n    e = i, t = s;\n  });\n  n.status = \"pending\", n.catch(() => {\n  });\n  function r(i) {\n    Object.assign(n, i), delete n.resolve, delete n.reject;\n  }\n  return n.resolve = (i) => {\n    r({\n      status: \"fulfilled\",\n      value: i\n    }), e(i);\n  }, n.reject = (i) => {\n    r({\n      status: \"rejected\",\n      reason: i\n    }), t(i);\n  }, n;\n}\nfunction md(e) {\n  let t;\n  if (e.then((n) => (t = n, n), Q)?.catch(Q), t !== void 0)\n    return { data: t };\n}\nfunction Ea(e) {\n  return e;\n}\nfunction Dd(e) {\n  return {\n    mutationKey: e.options.mutationKey,\n    state: e.state,\n    ...e.options.scope && { scope: e.options.scope },\n    ...e.meta && { meta: e.meta }\n  };\n}\nfunction gd(e, t, n) {\n  const r = () => {\n    const i = e.promise?.then(t).catch((s) => n(s) ? ({}.NODE_ENV !== \"production\" && console.error(\n      `A query that was dehydrated as pending ended up rejecting. [${e.queryHash}]: ${s}; The error will be redacted in production builds`\n    ), Promise.reject(new Error(\"redacted\"))) : Promise.reject(s));\n    return i?.catch(Q), i;\n  };\n  return {\n    dehydratedAt: Date.now(),\n    state: {\n      ...e.state,\n      ...e.state.data !== void 0 && {\n        data: t(e.state.data)\n      }\n    },\n    queryKey: e.queryKey,\n    queryHash: e.queryHash,\n    ...e.state.status === \"pending\" && {\n      promise: r()\n    },\n    ...e.meta && { meta: e.meta },\n    ...e.queryType && { queryType: e.queryType }\n  };\n}\nfunction yd(e) {\n  return e.state.isPaused;\n}\nfunction bd(e) {\n  return e.state.status === \"success\";\n}\nfunction wd(e) {\n  return !0;\n}\nfunction Fd(e, t = {}) {\n  const n = t.shouldDehydrateMutation ?? e.getDefaultOptions().dehydrate?.shouldDehydrateMutation ?? yd, r = e.getMutationCache().getAll().flatMap(\n    (a) => n(a) ? [Dd(a)] : []\n  ), i = t.shouldDehydrateQuery ?? e.getDefaultOptions().dehydrate?.shouldDehydrateQuery ?? bd, s = t.shouldRedactErrors ?? e.getDefaultOptions().dehydrate?.shouldRedactErrors ?? wd, o = t.serializeData ?? e.getDefaultOptions().dehydrate?.serializeData ?? Ea, u = e.getQueryCache().getAll().flatMap(\n    (a) => i(a) ? [gd(a, o, s)] : []\n  );\n  return { mutations: r, queries: u };\n}\nfunction Ed(e, t, n) {\n  if (typeof t != \"object\" || t === null)\n    return;\n  const r = e.getMutationCache(), i = e.getQueryCache(), s = n?.defaultOptions?.deserializeData ?? e.getDefaultOptions().hydrate?.deserializeData ?? Ea, o = t.mutations || [], u = t.queries || [];\n  o.forEach(({ state: a, ...c }) => {\n    r.build(\n      e,\n      {\n        ...e.getDefaultOptions().hydrate?.mutations,\n        ...n?.defaultOptions?.mutations,\n        ...c\n      },\n      a\n    );\n  }), u.forEach(\n    ({\n      queryKey: a,\n      state: c,\n      queryHash: l,\n      meta: f,\n      promise: d,\n      dehydratedAt: h,\n      queryType: p\n    }) => {\n      const m = d ? md(d) : void 0, D = c.data === void 0 ? m?.data : c.data, y = D === void 0 ? D : s(D);\n      let F = i.get(l);\n      const S = F?.state.status === \"pending\", v = F?.state.fetchStatus === \"fetching\";\n      if (F) {\n        const E = m && // We only need this undefined check to handle older dehydration\n        // payloads that might not have dehydratedAt\n        h !== void 0 && h > F.state.dataUpdatedAt;\n        if (c.dataUpdatedAt > F.state.dataUpdatedAt || E) {\n          const { fetchStatus: R, ...A } = c;\n          F.setState({\n            ...A,\n            data: y,\n            // If the query was pending at the moment of dehydration, but resolved to have data\n            // before hydration, we can assume the query should be hydrated as successful.\n            //\n            // Since you can opt into dehydrating failed queries, and those can have data from\n            // previous successful fetches, we make sure we only do this for pending queries.\n            ...c.status === \"pending\" && y !== void 0 && {\n              status: \"success\",\n              dataUpdatedAt: h ?? Date.now(),\n              // Preserve existing fetchStatus if the existing query is actively fetching.\n              ...!v && {\n                fetchStatus: \"idle\"\n              }\n            }\n          });\n        }\n      } else\n        F = i.build(\n          e,\n          {\n            ...e.getDefaultOptions().hydrate?.queries,\n            ...n?.defaultOptions?.queries,\n            queryKey: a,\n            queryHash: l,\n            meta: f,\n            _type: p\n          },\n          // Reset fetch status to idle to avoid\n          // query being stuck in fetching state upon hydration\n          {\n            ...c,\n            data: y,\n            fetchStatus: \"idle\",\n            // Like above, if the query was pending at the moment of dehydration but has data,\n            // we can assume it should be hydrated as successful.\n            status: c.status === \"pending\" && y !== void 0 ? \"success\" : c.status,\n            ...c.status === \"pending\" && y !== void 0 && {\n              dataUpdatedAt: h ?? Date.now()\n            }\n          }\n        );\n      d && // If the data was synchronously available, there is no need to set up\n      // a retryer and thus no reason to call fetch\n      !m && !S && !v && // Only hydrate if dehydration is newer than any existing data,\n      // this is always true for new queries\n      (h === void 0 || h > F.state.dataUpdatedAt) && F.fetch(void 0, {\n        // RSC transformed promises are not thenable\n        initialPromise: Promise.resolve(d).then(s)\n      }).catch(Q);\n    }\n  );\n}\nvar vd = ud;\nfunction _d() {\n  let e = [], t = 0, n = (u) => {\n    u();\n  }, r = (u) => {\n    u();\n  }, i = vd;\n  const s = (u) => {\n    t ? e.push(u) : i(() => {\n      n(u);\n    });\n  }, o = () => {\n    const u = e;\n    e = [], u.length && i(() => {\n      r(() => {\n        u.forEach((a) => {\n          n(a);\n        });\n      });\n    });\n  };\n  return {\n    batch: (u) => {\n      let a;\n      t++;\n      try {\n        a = u();\n      } finally {\n        t--, t || o();\n      }\n      return a;\n    },\n    /**\n     * All calls to the wrapped function will be batched.\n     */\n    batchCalls: (u) => (...a) => {\n      s(() => {\n        u(...a);\n      });\n    },\n    schedule: s,\n    /**\n     * Use this method to set a custom notify function.\n     * This can be used to for example wrap notifications with `React.act` while running tests.\n     */\n    setNotifyFunction: (u) => {\n      n = u;\n    },\n    /**\n     * Use this method to set a custom function to batch notifications together into a single tick.\n     * By default React Query will use the batch function provided by ReactDOM or React Native.\n     */\n    setBatchNotifyFunction: (u) => {\n      r = u;\n    },\n    setScheduler: (u) => {\n      i = u;\n    }\n  };\n}\nvar K = _d(), Sd = class extends pt {\n  #e = !0;\n  #t;\n  #n;\n  constructor() {\n    super(), this.#n = (e) => {\n      if (typeof window < \"u\" && window.addEventListener) {\n        const t = () => e(!0), n = () => e(!1);\n        return window.addEventListener(\"online\", t, !1), window.addEventListener(\"offline\", n, !1), () => {\n          window.removeEventListener(\"online\", t), window.removeEventListener(\"offline\", n);\n        };\n      }\n    };\n  }\n  onSubscribe() {\n    this.#t || this.setEventListener(this.#n);\n  }\n  onUnsubscribe() {\n    this.hasListeners() || (this.#t?.(), this.#t = void 0);\n  }\n  setEventListener(e) {\n    this.#n = e, this.#t?.(), this.#t = e(this.setOnline.bind(this));\n  }\n  setOnline(e) {\n    this.#e !== e && (this.#e = e, this.listeners.forEach((n) => {\n      n(e);\n    }));\n  }\n  isOnline() {\n    return this.#e;\n  }\n}, On = new Sd();\nfunction Ad(e) {\n  return Math.min(1e3 * 2 ** e, 3e4);\n}\nfunction va(e) {\n  return (e ?? \"online\") === \"online\" ? On.isOnline() : !0;\n}\nvar qr = class extends Error {\n  constructor(e) {\n    super(\"CancelledError\"), this.revert = e?.revert, this.silent = e?.silent;\n  }\n};\nfunction _a(e) {\n  let t = !1, n = 0, r;\n  const i = Zr(), s = () => i.status !== \"pending\", o = (m) => {\n    if (!s()) {\n      const D = new qr(m);\n      d(D), e.onCancel?.(D);\n    }\n  }, u = () => {\n    t = !0;\n  }, a = () => {\n    t = !1;\n  }, c = () => Ci.isFocused() && (e.networkMode === \"always\" || On.isOnline()) && e.canRun(), l = () => va(e.networkMode) && e.canRun(), f = (m) => {\n    s() || (r?.(), i.resolve(m));\n  }, d = (m) => {\n    s() || (r?.(), i.reject(m));\n  }, h = () => new Promise((m) => {\n    r = (D) => {\n      (s() || c()) && m(D);\n    }, e.onPause?.();\n  }).then(() => {\n    r = void 0, s() || e.onContinue?.();\n  }), p = () => {\n    if (s())\n      return;\n    let m;\n    const D = n === 0 ? e.initialPromise : void 0;\n    try {\n      m = D ?? e.fn();\n    } catch (y) {\n      m = Promise.reject(y);\n    }\n    Promise.resolve(m).then(f).catch((y) => {\n      if (s())\n        return;\n      const F = e.retry ?? (An.isServer() ? 0 : 3), S = e.retryDelay ?? Ad, v = typeof S == \"function\" ? S(n, y) : S, E = F === !0 || typeof F == \"number\" && n < F || typeof F == \"function\" && F(n, y);\n      if (t || !E) {\n        d(y);\n        return;\n      }\n      n++, e.onFail?.(n, y), hd(v).then(() => c() ? void 0 : h()).then(() => {\n        t ? d(y) : p();\n      });\n    });\n  };\n  return {\n    promise: i,\n    status: () => i.status,\n    cancel: o,\n    continue: () => (r?.(), i),\n    cancelRetry: u,\n    continueRetry: a,\n    canStart: l,\n    start: () => (l() ? p() : h().then(p), i)\n  };\n}\nvar Sa = class {\n  #e;\n  destroy() {\n    this.clearGcTimeout();\n  }\n  scheduleGc() {\n    this.clearGcTimeout(), Lr(this.gcTime) && (this.#e = Be.setTimeout(() => {\n      this.optionalRemove();\n    }, this.gcTime));\n  }\n  updateGcTime(e) {\n    this.gcTime = Math.max(\n      this.gcTime || 0,\n      e ?? (An.isServer() ? 1 / 0 : 5 * 60 * 1e3)\n    );\n  }\n  clearGcTimeout() {\n    this.#e !== void 0 && (Be.clearTimeout(this.#e), this.#e = void 0);\n  }\n};\nfunction Od(e) {\n  return {\n    onFetch: (t, n) => {\n      const r = t.options, i = t.fetchOptions?.meta?.fetchMore?.direction, s = t.state.data?.pages || [], o = t.state.data?.pageParams || [];\n      let u = { pages: [], pageParams: [] }, a = 0;\n      const c = async () => {\n        let l = !1;\n        const f = (p) => {\n          pd(\n            p,\n            () => t.signal,\n            () => l = !0\n          );\n        }, d = Fa(t.options, t.fetchOptions), h = async (p, m, D) => {\n          if (l)\n            return Promise.reject(t.signal.reason);\n          if (m == null && p.pages.length)\n            return Promise.resolve(p);\n          const F = (() => {\n            const R = {\n              client: t.client,\n              queryKey: t.queryKey,\n              pageParam: m,\n              direction: D ? \"backward\" : \"forward\",\n              meta: t.options.meta\n            };\n            return f(R), R;\n          })(), S = await d(F), { maxPages: v } = t.options, E = D ? dd : fd;\n          return {\n            pages: E(p.pages, S, v),\n            pageParams: E(p.pageParams, m, v)\n          };\n        };\n        if (i && s.length) {\n          const p = i === \"backward\", m = p ? Cd : zs, D = {\n            pages: s,\n            pageParams: o\n          }, y = m(r, D);\n          u = await h(D, y, p);\n        } else {\n          const p = e ?? s.length;\n          do {\n            const m = a === 0 ? o[0] ?? r.initialPageParam : zs(r, u);\n            if (a > 0 && m == null)\n              break;\n            u = await h(u, m), a++;\n          } while (a < p);\n        }\n        return u;\n      };\n      t.options.persister ? t.fetchFn = () => t.options.persister?.(\n        c,\n        {\n          client: t.client,\n          queryKey: t.queryKey,\n          meta: t.options.meta,\n          signal: t.signal\n        },\n        n\n      ) : t.fetchFn = c;\n    }\n  };\n}\nfunction zs(e, { pages: t, pageParams: n }) {\n  const r = t.length - 1;\n  return t.length > 0 ? e.getNextPageParam(\n    t[r],\n    t,\n    n[r],\n    n\n  ) : void 0;\n}\nfunction Cd(e, { pages: t, pageParams: n }) {\n  return t.length > 0 ? e.getPreviousPageParam?.(t[0], t, n[0], n) : void 0;\n}\nvar Td = class extends Sa {\n  #e;\n  #t;\n  #n;\n  #i;\n  #s;\n  #o;\n  #g;\n  #c;\n  constructor(e) {\n    super(), this.#c = !1, this.#g = e.defaultOptions, this.setOptions(e.options), this.observers = [], this.#s = e.client, this.#i = this.#s.getQueryCache(), this.queryKey = e.queryKey, this.queryHash = e.queryHash, this.#t = $s(this.options), this.state = e.state ?? this.#t, this.scheduleGc();\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  get queryType() {\n    return this.#e;\n  }\n  get promise() {\n    return this.#o?.promise;\n  }\n  setOptions(e) {\n    if (this.options = { ...this.#g, ...e }, e?._type && (this.#e = e._type), this.updateGcTime(this.options.gcTime), this.state && this.state.data === void 0) {\n      const t = $s(this.options);\n      t.data !== void 0 && (this.setState(\n        Bs(t.data, t.dataUpdatedAt)\n      ), this.#t = t);\n    }\n  }\n  optionalRemove() {\n    !this.observers.length && this.state.fetchStatus === \"idle\" && this.#i.remove(this);\n  }\n  setData(e, t) {\n    const n = Ur(this.state.data, e, this.options);\n    return this.#h({\n      data: n,\n      type: \"success\",\n      dataUpdatedAt: t?.updatedAt,\n      manual: t?.manual\n    }), n;\n  }\n  setState(e) {\n    this.#h({ type: \"setState\", state: e });\n  }\n  cancel(e) {\n    const t = this.#o?.promise;\n    return this.#o?.cancel(e), t ? t.then(Q).catch(Q) : Promise.resolve();\n  }\n  destroy() {\n    super.destroy(), this.cancel({ silent: !0 });\n  }\n  get resetState() {\n    return this.#t;\n  }\n  reset() {\n    this.destroy(), this.setState(this.resetState);\n  }\n  isActive() {\n    return this.observers.some(\n      (e) => ie(e.options.enabled, this) !== !1\n    );\n  }\n  isDisabled() {\n    return this.getObserversCount() > 0 ? !this.isActive() : this.options.queryFn === Sn || !this.isFetched();\n  }\n  isFetched() {\n    return this.state.dataUpdateCount + this.state.errorUpdateCount > 0;\n  }\n  isStatic() {\n    return this.getObserversCount() > 0 ? this.observers.some(\n      (e) => Ae(e.options.staleTime, this) === \"static\"\n    ) : !1;\n  }\n  isStale() {\n    return this.getObserversCount() > 0 ? this.observers.some(\n      (e) => e.getCurrentResult().isStale\n    ) : this.state.data === void 0 || this.state.isInvalidated;\n  }\n  isStaleByTime(e = 0) {\n    return this.state.data === void 0 ? !0 : e === \"static\" ? !1 : this.state.isInvalidated ? !0 : !wa(this.state.dataUpdatedAt, e);\n  }\n  onFocus() {\n    this.observers.find((t) => t.shouldFetchOnWindowFocus())?.refetch({ cancelRefetch: !1 }), this.#o?.continue();\n  }\n  onOnline() {\n    this.observers.find((t) => t.shouldFetchOnReconnect())?.refetch({ cancelRefetch: !1 }), this.#o?.continue();\n  }\n  addObserver(e) {\n    this.observers.includes(e) || (this.observers.push(e), this.clearGcTimeout(), this.#i.notify({ type: \"observerAdded\", query: this, observer: e }));\n  }\n  removeObserver(e) {\n    this.observers.includes(e) && (this.observers = this.observers.filter((t) => t !== e), this.observers.length || (this.#o && (this.#c || this.#l() ? this.#o.cancel({ revert: !0 }) : this.#o.cancelRetry()), this.scheduleGc()), this.#i.notify({ type: \"observerRemoved\", query: this, observer: e }));\n  }\n  getObserversCount() {\n    return this.observers.length;\n  }\n  #l() {\n    return this.state.fetchStatus === \"paused\" && this.state.status === \"pending\";\n  }\n  invalidate() {\n    this.state.isInvalidated || this.#h({ type: \"invalidate\" });\n  }\n  async fetch(e, t) {\n    if (this.state.fetchStatus !== \"idle\" && // If the promise in the retryer is already rejected, we have to definitely\n    // re-start the fetch; there is a chance that the query is still in a\n    // pending state when that happens\n    this.#o?.status() !== \"rejected\") {\n      if (this.state.data !== void 0 && t?.cancelRefetch)\n        this.cancel({ silent: !0 });\n      else if (this.#o)\n        return this.#o.continueRetry(), this.#o.promise;\n    }\n    if (e && this.setOptions(e), !this.options.queryFn) {\n      const a = this.observers.find((c) => c.options.queryFn);\n      a && this.setOptions(a.options);\n    }\n    ({}).NODE_ENV !== \"production\" && (Array.isArray(this.options.queryKey) || console.error(\n      \"As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']\"\n    ));\n    const n = new AbortController(), r = (a) => {\n      Object.defineProperty(a, \"signal\", {\n        enumerable: !0,\n        get: () => (this.#c = !0, n.signal)\n      });\n    }, i = () => {\n      const a = Fa(this.options, t), l = (() => {\n        const f = {\n          client: this.#s,\n          queryKey: this.queryKey,\n          meta: this.meta\n        };\n        return r(f), f;\n      })();\n      return this.#c = !1, this.options.persister ? this.options.persister(\n        a,\n        l,\n        this\n      ) : a(l);\n    }, o = (() => {\n      const a = {\n        fetchOptions: t,\n        options: this.options,\n        queryKey: this.queryKey,\n        client: this.#s,\n        state: this.state,\n        fetchFn: i\n      };\n      return r(a), a;\n    })();\n    (this.#e === \"infinite\" ? Od(\n      this.options.pages\n    ) : this.options.behavior)?.onFetch(o, this), this.#n = this.state, (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== o.fetchOptions?.meta) && this.#h({ type: \"fetch\", meta: o.fetchOptions?.meta }), this.#o = _a({\n      initialPromise: t?.initialPromise,\n      fn: o.fetchFn,\n      onCancel: (a) => {\n        a instanceof qr && a.revert && this.setState({\n          ...this.#n,\n          fetchStatus: \"idle\"\n        }), n.abort();\n      },\n      onFail: (a, c) => {\n        this.#h({ type: \"failed\", failureCount: a, error: c });\n      },\n      onPause: () => {\n        this.#h({ type: \"pause\" });\n      },\n      onContinue: () => {\n        this.#h({ type: \"continue\" });\n      },\n      retry: o.options.retry,\n      retryDelay: o.options.retryDelay,\n      networkMode: o.options.networkMode,\n      canRun: () => !0\n    });\n    try {\n      const a = await this.#o.start();\n      if (a === void 0)\n        throw {}.NODE_ENV !== \"production\" && console.error(\n          `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n        ), new Error(`${this.queryHash} data is undefined`);\n      return this.setData(a), this.#i.config.onSuccess?.(a, this), this.#i.config.onSettled?.(\n        a,\n        this.state.error,\n        this\n      ), a;\n    } catch (a) {\n      if (a instanceof qr) {\n        if (a.silent)\n          return this.#o.promise;\n        if (a.revert) {\n          if (this.state.data === void 0)\n            throw a;\n          return this.state.data;\n        }\n      }\n      throw this.#h({\n        type: \"error\",\n        error: a\n      }), this.#i.config.onError?.(\n        a,\n        this\n      ), this.#i.config.onSettled?.(\n        this.state.data,\n        a,\n        this\n      ), a;\n    } finally {\n      this.scheduleGc();\n    }\n  }\n  #h(e) {\n    const t = (n) => {\n      switch (e.type) {\n        case \"failed\":\n          return {\n            ...n,\n            fetchFailureCount: e.failureCount,\n            fetchFailureReason: e.error\n          };\n        case \"pause\":\n          return {\n            ...n,\n            fetchStatus: \"paused\"\n          };\n        case \"continue\":\n          return {\n            ...n,\n            fetchStatus: \"fetching\"\n          };\n        case \"fetch\":\n          return {\n            ...n,\n            ...Aa(n.data, this.options),\n            fetchMeta: e.meta ?? null\n          };\n        case \"success\":\n          const r = {\n            ...n,\n            ...Bs(e.data, e.dataUpdatedAt),\n            dataUpdateCount: n.dataUpdateCount + 1,\n            ...!e.manual && {\n              fetchStatus: \"idle\",\n              fetchFailureCount: 0,\n              fetchFailureReason: null\n            }\n          };\n          return this.#n = e.manual ? r : void 0, r;\n        case \"error\":\n          const i = e.error;\n          return {\n            ...n,\n            error: i,\n            errorUpdateCount: n.errorUpdateCount + 1,\n            errorUpdatedAt: Date.now(),\n            fetchFailureCount: n.fetchFailureCount + 1,\n            fetchFailureReason: i,\n            fetchStatus: \"idle\",\n            status: \"error\",\n            // flag existing data as invalidated if we get a background error\n            // note that \"no data\" always means stale so we can set unconditionally here\n            isInvalidated: !0\n          };\n        case \"invalidate\":\n          return {\n            ...n,\n            isInvalidated: !0\n          };\n        case \"setState\":\n          return {\n            ...n,\n            ...e.state\n          };\n      }\n    };\n    this.state = t(this.state), K.batch(() => {\n      this.observers.forEach((n) => {\n        n.onQueryUpdate();\n      }), this.#i.notify({ query: this, type: \"updated\", action: e });\n    });\n  }\n};\nfunction Aa(e, t) {\n  return {\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchStatus: va(t.networkMode) ? \"fetching\" : \"paused\",\n    ...e === void 0 && {\n      error: null,\n      status: \"pending\"\n    }\n  };\n}\nfunction Bs(e, t) {\n  return {\n    data: e,\n    dataUpdatedAt: t ?? Date.now(),\n    error: null,\n    isInvalidated: !1,\n    status: \"success\"\n  };\n}\nfunction $s(e) {\n  const t = typeof e.initialData == \"function\" ? e.initialData() : e.initialData, n = t !== void 0, r = n ? typeof e.initialDataUpdatedAt == \"function\" ? e.initialDataUpdatedAt() : e.initialDataUpdatedAt : 0;\n  return {\n    data: t,\n    dataUpdateCount: 0,\n    dataUpdatedAt: n ? r ?? Date.now() : 0,\n    error: null,\n    errorUpdateCount: 0,\n    errorUpdatedAt: 0,\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchMeta: null,\n    isInvalidated: !1,\n    status: n ? \"success\" : \"pending\",\n    fetchStatus: \"idle\"\n  };\n}\nvar Rd = class extends pt {\n  constructor(e, t) {\n    super(), this.options = t, this.#e = e, this.#c = null, this.#g = Zr(), this.bindMethods(), this.setOptions(t);\n  }\n  #e;\n  #t = void 0;\n  #n = void 0;\n  #i = void 0;\n  #s;\n  #o;\n  #g;\n  #c;\n  #l;\n  #h;\n  // This property keeps track of the last query with defined data.\n  // It will be used to pass the previous data and query to the placeholder function between renders.\n  #f;\n  #u;\n  #r;\n  #d;\n  #y = /* @__PURE__ */ new Set();\n  bindMethods() {\n    this.refetch = this.refetch.bind(this);\n  }\n  onSubscribe() {\n    this.listeners.size === 1 && (this.#t.addObserver(this), Ls(this.#t, this.options) ? this.#p() : this.updateResult(), this.#v());\n  }\n  onUnsubscribe() {\n    this.hasListeners() || this.destroy();\n  }\n  shouldFetchOnReconnect() {\n    return Wr(\n      this.#t,\n      this.options,\n      this.options.refetchOnReconnect\n    );\n  }\n  shouldFetchOnWindowFocus() {\n    return Wr(\n      this.#t,\n      this.options,\n      this.options.refetchOnWindowFocus\n    );\n  }\n  destroy() {\n    this.listeners = /* @__PURE__ */ new Set(), this.#_(), this.#b(), this.#t.removeObserver(this);\n  }\n  setOptions(e) {\n    const t = this.options, n = this.#t;\n    if (this.options = this.#e.defaultQueryOptions(e), this.options.enabled !== void 0 && typeof this.options.enabled != \"boolean\" && typeof this.options.enabled != \"function\" && typeof ie(this.options.enabled, this.#t) != \"boolean\")\n      throw new Error(\n        \"Expected enabled to be a boolean or a callback that returns a boolean\"\n      );\n    this.#w(), this.#t.setOptions(this.options), t._defaulted && !_n(this.options, t) && this.#e.getQueryCache().notify({\n      type: \"observerOptionsUpdated\",\n      query: this.#t,\n      observer: this\n    });\n    const r = this.hasListeners();\n    r && Ms(\n      this.#t,\n      n,\n      this.options,\n      t\n    ) && this.#p(), this.updateResult(), r && (this.#t !== n || ie(this.options.enabled, this.#t) !== ie(t.enabled, this.#t) || Ae(this.options.staleTime, this.#t) !== Ae(t.staleTime, this.#t)) && this.#m();\n    const i = this.#E();\n    r && (this.#t !== n || ie(this.options.enabled, this.#t) !== ie(t.enabled, this.#t) || i !== this.#d) && this.#D(i);\n  }\n  getOptimisticResult(e) {\n    const t = this.#e.getQueryCache().build(this.#e, e), n = this.createResult(t, e);\n    return kd(this, n) && (this.#i = n, this.#o = this.options, this.#s = this.#t.state), n;\n  }\n  getCurrentResult() {\n    return this.#i;\n  }\n  trackResult(e, t) {\n    return new Proxy(e, {\n      get: (n, r) => (this.trackProp(r), t?.(r), r === \"promise\" && (this.trackProp(\"data\"), !this.options.experimental_prefetchInRender && this.#g.status === \"pending\" && this.#g.reject(\n        new Error(\n          \"experimental_prefetchInRender feature flag is not enabled\"\n        )\n      )), Reflect.get(n, r))\n    });\n  }\n  trackProp(e) {\n    this.#y.add(e);\n  }\n  getCurrentQuery() {\n    return this.#t;\n  }\n  refetch({ ...e } = {}) {\n    return this.fetch({\n      ...e\n    });\n  }\n  fetchOptimistic(e) {\n    const t = this.#e.defaultQueryOptions(e), n = this.#e.getQueryCache().build(this.#e, t);\n    return n.fetch().then(() => this.createResult(n, t));\n  }\n  fetch(e) {\n    return this.#p({\n      ...e,\n      cancelRefetch: e.cancelRefetch ?? !0\n    }).then(() => (this.updateResult(), this.#i));\n  }\n  #p(e) {\n    this.#w();\n    let t = this.#t.fetch(\n      this.options,\n      e\n    );\n    return e?.throwOnError || (t = t.catch(Q)), t;\n  }\n  #m() {\n    this.#_();\n    const e = Ae(\n      this.options.staleTime,\n      this.#t\n    );\n    if (An.isServer() || this.#i.isStale || !Lr(e))\n      return;\n    const n = wa(this.#i.dataUpdatedAt, e) + 1;\n    this.#u = Be.setTimeout(() => {\n      this.#i.isStale || this.updateResult();\n    }, n);\n  }\n  #E() {\n    return (typeof this.options.refetchInterval == \"function\" ? this.options.refetchInterval(this.#t) : this.options.refetchInterval) ?? !1;\n  }\n  #D(e) {\n    this.#b(), this.#d = e, !(An.isServer() || ie(this.options.enabled, this.#t) === !1 || !Lr(this.#d) || this.#d === 0) && (this.#r = Be.setInterval(() => {\n      (this.options.refetchIntervalInBackground || Ci.isFocused()) && this.#p();\n    }, this.#d));\n  }\n  #v() {\n    this.#m(), this.#D(this.#E());\n  }\n  #_() {\n    this.#u !== void 0 && (Be.clearTimeout(this.#u), this.#u = void 0);\n  }\n  #b() {\n    this.#r !== void 0 && (Be.clearInterval(this.#r), this.#r = void 0);\n  }\n  createResult(e, t) {\n    const n = this.#t, r = this.options, i = this.#i, s = this.#s, o = this.#o, a = e !== n ? e.state : this.#n, { state: c } = e;\n    let l = { ...c }, f = !1, d;\n    if (t._optimisticResults) {\n      const k = this.hasListeners(), w = !k && Ls(e, t), T = k && Ms(e, n, t, r);\n      (w || T) && (l = {\n        ...l,\n        ...Aa(c.data, e.options)\n      }), t._optimisticResults === \"isRestoring\" && (l.fetchStatus = \"idle\");\n    }\n    let { error: h, errorUpdatedAt: p, status: m } = l;\n    d = l.data;\n    let D = !1;\n    if (t.placeholderData !== void 0 && d === void 0 && m === \"pending\") {\n      let k;\n      i?.isPlaceholderData && t.placeholderData === o?.placeholderData ? (k = i.data, D = !0) : k = typeof t.placeholderData == \"function\" ? t.placeholderData(\n        this.#f?.state.data,\n        this.#f\n      ) : t.placeholderData, k !== void 0 && (m = \"success\", d = Ur(\n        i?.data,\n        k,\n        t\n      ), f = !0);\n    }\n    if (t.select && d !== void 0 && !D)\n      if (i && d === s?.data && t.select === this.#l)\n        d = this.#h;\n      else\n        try {\n          this.#l = t.select, d = t.select(d), d = Ur(i?.data, d, t), this.#h = d, this.#c = null;\n        } catch (k) {\n          this.#c = k;\n        }\n    this.#c && (h = this.#c, d = this.#h, p = Date.now(), m = \"error\");\n    const y = l.fetchStatus === \"fetching\", F = m === \"pending\", S = m === \"error\", v = F && y, E = d !== void 0, A = {\n      status: m,\n      fetchStatus: l.fetchStatus,\n      isPending: F,\n      isSuccess: m === \"success\",\n      isError: S,\n      isInitialLoading: v,\n      isLoading: v,\n      data: d,\n      dataUpdatedAt: l.dataUpdatedAt,\n      error: h,\n      errorUpdatedAt: p,\n      failureCount: l.fetchFailureCount,\n      failureReason: l.fetchFailureReason,\n      errorUpdateCount: l.errorUpdateCount,\n      isFetched: e.isFetched(),\n      isFetchedAfterMount: l.dataUpdateCount > a.dataUpdateCount || l.errorUpdateCount > a.errorUpdateCount,\n      isFetching: y,\n      isRefetching: y && !F,\n      isLoadingError: S && !E,\n      isPaused: l.fetchStatus === \"paused\",\n      isPlaceholderData: f,\n      isRefetchError: S && E,\n      isStale: Ri(e, t),\n      refetch: this.refetch,\n      promise: this.#g,\n      isEnabled: ie(t.enabled, e) !== !1\n    };\n    if (this.options.experimental_prefetchInRender) {\n      const k = A.data !== void 0, w = A.status === \"error\" && !k, T = (ne) => {\n        w ? ne.reject(A.error) : k && ne.resolve(A.data);\n      }, P = () => {\n        const ne = this.#g = A.promise = Zr();\n        T(ne);\n      }, V = this.#g;\n      switch (V.status) {\n        case \"pending\":\n          e.queryHash === n.queryHash && T(V);\n          break;\n        case \"fulfilled\":\n          (w || A.data !== V.value) && P();\n          break;\n        case \"rejected\":\n          (!w || A.error !== V.reason) && P();\n          break;\n      }\n    }\n    return A;\n  }\n  updateResult() {\n    const e = this.#i, t = this.createResult(this.#t, this.options);\n    if (this.#s = this.#t.state, this.#o = this.options, this.#s.data !== void 0 && (this.#f = this.#t), _n(t, e))\n      return;\n    this.#i = t;\n    const n = () => {\n      if (!e)\n        return !0;\n      const { notifyOnChangeProps: r } = this.options, i = typeof r == \"function\" ? r() : r;\n      if (i === \"all\" || !i && !this.#y.size)\n        return !0;\n      const s = new Set(\n        i ?? this.#y\n      );\n      return this.options.throwOnError && s.add(\"error\"), Object.keys(this.#i).some((o) => {\n        const u = o;\n        return this.#i[u] !== e[u] && s.has(u);\n      });\n    };\n    this.#S({ listeners: n() });\n  }\n  #w() {\n    const e = this.#e.getQueryCache().build(this.#e, this.options);\n    if (e === this.#t)\n      return;\n    const t = this.#t;\n    this.#t = e, this.#n = e.state, this.hasListeners() && (t?.removeObserver(this), e.addObserver(this));\n  }\n  onQueryUpdate() {\n    this.updateResult(), this.hasListeners() && this.#v();\n  }\n  #S(e) {\n    K.batch(() => {\n      e.listeners && this.listeners.forEach((t) => {\n        t(this.#i);\n      }), this.#e.getQueryCache().notify({\n        query: this.#t,\n        type: \"observerResultsUpdated\"\n      });\n    });\n  }\n};\nfunction xd(e, t) {\n  return ie(t.enabled, e) !== !1 && e.state.data === void 0 && !(e.state.status === \"error\" && ie(t.retryOnMount, e) === !1);\n}\nfunction Ls(e, t) {\n  return xd(e, t) || e.state.data !== void 0 && Wr(e, t, t.refetchOnMount);\n}\nfunction Wr(e, t, n) {\n  if (ie(t.enabled, e) !== !1 && Ae(t.staleTime, e) !== \"static\") {\n    const r = typeof n == \"function\" ? n(e) : n;\n    return r === \"always\" || r !== !1 && Ri(e, t);\n  }\n  return !1;\n}\nfunction Ms(e, t, n, r) {\n  return (e !== t || ie(r.enabled, e) === !1) && (!n.suspense || e.state.status !== \"error\") && Ri(e, n);\n}\nfunction Ri(e, t) {\n  return ie(t.enabled, e) !== !1 && e.isStaleByTime(Ae(t.staleTime, e));\n}\nfunction kd(e, t) {\n  return !_n(e.getCurrentResult(), t);\n}\nvar Nd = class extends Sa {\n  #e;\n  #t;\n  #n;\n  #i;\n  constructor(e) {\n    super(), this.#e = e.client, this.mutationId = e.mutationId, this.#n = e.mutationCache, this.#t = [], this.state = e.state || Oa(), this.setOptions(e.options), this.scheduleGc();\n  }\n  setOptions(e) {\n    this.options = e, this.updateGcTime(this.options.gcTime);\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  addObserver(e) {\n    this.#t.includes(e) || (this.#t.push(e), this.clearGcTimeout(), this.#n.notify({\n      type: \"observerAdded\",\n      mutation: this,\n      observer: e\n    }));\n  }\n  removeObserver(e) {\n    this.#t = this.#t.filter((t) => t !== e), this.scheduleGc(), this.#n.notify({\n      type: \"observerRemoved\",\n      mutation: this,\n      observer: e\n    });\n  }\n  optionalRemove() {\n    this.#t.length || (this.state.status === \"pending\" ? this.scheduleGc() : this.#n.remove(this));\n  }\n  continue() {\n    return this.#i?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n    this.execute(this.state.variables);\n  }\n  async execute(e) {\n    const t = () => {\n      this.#s({ type: \"continue\" });\n    }, n = {\n      client: this.#e,\n      meta: this.options.meta,\n      mutationKey: this.options.mutationKey\n    };\n    this.#i = _a({\n      fn: () => this.options.mutationFn ? this.options.mutationFn(e, n) : Promise.reject(new Error(\"No mutationFn found\")),\n      onFail: (s, o) => {\n        this.#s({ type: \"failed\", failureCount: s, error: o });\n      },\n      onPause: () => {\n        this.#s({ type: \"pause\" });\n      },\n      onContinue: t,\n      retry: this.options.retry ?? 0,\n      retryDelay: this.options.retryDelay,\n      networkMode: this.options.networkMode,\n      canRun: () => this.#n.canRun(this)\n    });\n    const r = this.state.status === \"pending\", i = !this.#i.canStart();\n    try {\n      if (r)\n        t();\n      else {\n        this.#s({ type: \"pending\", variables: e, isPaused: i }), this.#n.config.onMutate && await this.#n.config.onMutate(\n          e,\n          this,\n          n\n        );\n        const o = await this.options.onMutate?.(\n          e,\n          n\n        );\n        o !== this.state.context && this.#s({\n          type: \"pending\",\n          context: o,\n          variables: e,\n          isPaused: i\n        });\n      }\n      const s = await this.#i.start();\n      return await this.#n.config.onSuccess?.(\n        s,\n        e,\n        this.state.context,\n        this,\n        n\n      ), await this.options.onSuccess?.(\n        s,\n        e,\n        this.state.context,\n        n\n      ), await this.#n.config.onSettled?.(\n        s,\n        null,\n        this.state.variables,\n        this.state.context,\n        this,\n        n\n      ), await this.options.onSettled?.(\n        s,\n        null,\n        e,\n        this.state.context,\n        n\n      ), this.#s({ type: \"success\", data: s }), s;\n    } catch (s) {\n      try {\n        await this.#n.config.onError?.(\n          s,\n          e,\n          this.state.context,\n          this,\n          n\n        );\n      } catch (o) {\n        Promise.reject(o);\n      }\n      try {\n        await this.options.onError?.(\n          s,\n          e,\n          this.state.context,\n          n\n        );\n      } catch (o) {\n        Promise.reject(o);\n      }\n      try {\n        await this.#n.config.onSettled?.(\n          void 0,\n          s,\n          this.state.variables,\n          this.state.context,\n          this,\n          n\n        );\n      } catch (o) {\n        Promise.reject(o);\n      }\n      try {\n        await this.options.onSettled?.(\n          void 0,\n          s,\n          e,\n          this.state.context,\n          n\n        );\n      } catch (o) {\n        Promise.reject(o);\n      }\n      throw this.#s({ type: \"error\", error: s }), s;\n    } finally {\n      this.#n.runNext(this);\n    }\n  }\n  #s(e) {\n    const t = (n) => {\n      switch (e.type) {\n        case \"failed\":\n          return {\n            ...n,\n            failureCount: e.failureCount,\n            failureReason: e.error\n          };\n        case \"pause\":\n          return {\n            ...n,\n            isPaused: !0\n          };\n        case \"continue\":\n          return {\n            ...n,\n            isPaused: !1\n          };\n        case \"pending\":\n          return {\n            ...n,\n            context: e.context,\n            data: void 0,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            isPaused: e.isPaused,\n            status: \"pending\",\n            variables: e.variables,\n            submittedAt: Date.now()\n          };\n        case \"success\":\n          return {\n            ...n,\n            data: e.data,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            status: \"success\",\n            isPaused: !1\n          };\n        case \"error\":\n          return {\n            ...n,\n            data: void 0,\n            error: e.error,\n            failureCount: n.failureCount + 1,\n            failureReason: e.error,\n            isPaused: !1,\n            status: \"error\"\n          };\n      }\n    };\n    this.state = t(this.state), K.batch(() => {\n      this.#t.forEach((n) => {\n        n.onMutationUpdate(e);\n      }), this.#n.notify({\n        mutation: this,\n        type: \"updated\",\n        action: e\n      });\n    });\n  }\n};\nfunction Oa() {\n  return {\n    context: void 0,\n    data: void 0,\n    error: null,\n    failureCount: 0,\n    failureReason: null,\n    isPaused: !1,\n    status: \"idle\",\n    variables: void 0,\n    submittedAt: 0\n  };\n}\nvar Ca = class extends pt {\n  constructor(e = {}) {\n    super(), this.config = e, this.#e = /* @__PURE__ */ new Set(), this.#t = /* @__PURE__ */ new Map(), this.#n = 0;\n  }\n  #e;\n  #t;\n  #n;\n  build(e, t, n) {\n    const r = new Nd({\n      client: e,\n      mutationCache: this,\n      mutationId: ++this.#n,\n      options: e.defaultMutationOptions(t),\n      state: n\n    });\n    return this.add(r), r;\n  }\n  add(e) {\n    this.#e.add(e);\n    const t = Vt(e);\n    if (typeof t == \"string\") {\n      const n = this.#t.get(t);\n      n ? n.push(e) : this.#t.set(t, [e]);\n    }\n    this.notify({ type: \"added\", mutation: e });\n  }\n  remove(e) {\n    if (this.#e.delete(e)) {\n      const t = Vt(e);\n      if (typeof t == \"string\") {\n        const n = this.#t.get(t);\n        if (n)\n          if (n.length > 1) {\n            const r = n.indexOf(e);\n            r !== -1 && n.splice(r, 1);\n          } else\n            n[0] === e && this.#t.delete(t);\n      }\n    }\n    this.notify({ type: \"removed\", mutation: e });\n  }\n  canRun(e) {\n    const t = Vt(e);\n    if (typeof t == \"string\") {\n      const r = this.#t.get(t)?.find(\n        (i) => i.state.status === \"pending\"\n      );\n      return !r || r === e;\n    } else\n      return !0;\n  }\n  runNext(e) {\n    const t = Vt(e);\n    return typeof t == \"string\" ? this.#t.get(t)?.find((r) => r !== e && r.state.isPaused)?.continue() ?? Promise.resolve() : Promise.resolve();\n  }\n  clear() {\n    K.batch(() => {\n      this.#e.forEach((e) => {\n        this.notify({ type: \"removed\", mutation: e });\n      }), this.#e.clear(), this.#t.clear();\n    });\n  }\n  getAll() {\n    return Array.from(this.#e);\n  }\n  find(e) {\n    const t = { exact: !0, ...e };\n    return this.getAll().find(\n      (n) => Ns(t, n)\n    );\n  }\n  findAll(e = {}) {\n    return this.getAll().filter((t) => Ns(e, t));\n  }\n  notify(e) {\n    K.batch(() => {\n      this.listeners.forEach((t) => {\n        t(e);\n      });\n    });\n  }\n  resumePausedMutations() {\n    const e = this.getAll().filter((t) => t.state.isPaused);\n    return K.batch(\n      () => Promise.all(\n        e.map((t) => t.continue().catch(Q))\n      )\n    );\n  }\n};\nfunction Vt(e) {\n  return e.options.scope?.id;\n}\nvar Id = class extends pt {\n  #e;\n  #t = void 0;\n  #n;\n  #i;\n  constructor(e, t) {\n    super(), this.#e = e, this.setOptions(t), this.bindMethods(), this.#s();\n  }\n  bindMethods() {\n    this.mutate = this.mutate.bind(this), this.reset = this.reset.bind(this);\n  }\n  setOptions(e) {\n    const t = this.options;\n    this.options = this.#e.defaultMutationOptions(e), _n(this.options, t) || this.#e.getMutationCache().notify({\n      type: \"observerOptionsUpdated\",\n      mutation: this.#n,\n      observer: this\n    }), t?.mutationKey && this.options.mutationKey && Ue(t.mutationKey) !== Ue(this.options.mutationKey) ? this.reset() : this.#n?.state.status === \"pending\" && this.#n.setOptions(this.options);\n  }\n  onUnsubscribe() {\n    this.hasListeners() || this.#n?.removeObserver(this);\n  }\n  onMutationUpdate(e) {\n    this.#s(), this.#o(e);\n  }\n  getCurrentResult() {\n    return this.#t;\n  }\n  reset() {\n    this.#n?.removeObserver(this), this.#n = void 0, this.#s(), this.#o();\n  }\n  mutate(e, t) {\n    return this.#i = t, this.#n?.removeObserver(this), this.#n = this.#e.getMutationCache().build(this.#e, this.options), this.#n.addObserver(this), this.#n.execute(e);\n  }\n  #s() {\n    const e = this.#n?.state ?? Oa();\n    this.#t = {\n      ...e,\n      isPending: e.status === \"pending\",\n      isSuccess: e.status === \"success\",\n      isError: e.status === \"error\",\n      isIdle: e.status === \"idle\",\n      mutate: this.mutate,\n      reset: this.reset\n    };\n  }\n  #o(e) {\n    K.batch(() => {\n      if (this.#i && this.hasListeners()) {\n        const t = this.#t.variables, n = this.#t.context, r = {\n          client: this.#e,\n          meta: this.options.meta,\n          mutationKey: this.options.mutationKey\n        };\n        if (e?.type === \"success\") {\n          try {\n            this.#i.onSuccess?.(\n              e.data,\n              t,\n              n,\n              r\n            );\n          } catch (i) {\n            Promise.reject(i);\n          }\n          try {\n            this.#i.onSettled?.(\n              e.data,\n              null,\n              t,\n              n,\n              r\n            );\n          } catch (i) {\n            Promise.reject(i);\n          }\n        } else if (e?.type === \"error\") {\n          try {\n            this.#i.onError?.(\n              e.error,\n              t,\n              n,\n              r\n            );\n          } catch (i) {\n            Promise.reject(i);\n          }\n          try {\n            this.#i.onSettled?.(\n              void 0,\n              e.error,\n              t,\n              n,\n              r\n            );\n          } catch (i) {\n            Promise.reject(i);\n          }\n        }\n      }\n      this.listeners.forEach((t) => {\n        t(this.#t);\n      });\n    });\n  }\n}, Pd = class extends pt {\n  constructor(e = {}) {\n    super(), this.config = e, this.#e = /* @__PURE__ */ new Map();\n  }\n  #e;\n  build(e, t, n) {\n    const r = t.queryKey, i = t.queryHash ?? Ti(r, t);\n    let s = this.get(i);\n    return s || (s = new Td({\n      client: e,\n      queryKey: r,\n      queryHash: i,\n      options: e.defaultQueryOptions(t),\n      state: n,\n      defaultOptions: e.getQueryDefaults(r)\n    }), this.add(s)), s;\n  }\n  add(e) {\n    this.#e.has(e.queryHash) || (this.#e.set(e.queryHash, e), this.notify({\n      type: \"added\",\n      query: e\n    }));\n  }\n  remove(e) {\n    const t = this.#e.get(e.queryHash);\n    t && (e.destroy(), t === e && this.#e.delete(e.queryHash), this.notify({ type: \"removed\", query: e }));\n  }\n  clear() {\n    K.batch(() => {\n      this.getAll().forEach((e) => {\n        this.remove(e);\n      });\n    });\n  }\n  get(e) {\n    return this.#e.get(e);\n  }\n  getAll() {\n    return [...this.#e.values()];\n  }\n  find(e) {\n    const t = { exact: !0, ...e };\n    return this.getAll().find(\n      (n) => ks(t, n)\n    );\n  }\n  findAll(e = {}) {\n    const t = this.getAll();\n    return Object.keys(e).length > 0 ? t.filter((n) => ks(e, n)) : t;\n  }\n  notify(e) {\n    K.batch(() => {\n      this.listeners.forEach((t) => {\n        t(e);\n      });\n    });\n  }\n  onFocus() {\n    K.batch(() => {\n      this.getAll().forEach((e) => {\n        e.onFocus();\n      });\n    });\n  }\n  onOnline() {\n    K.batch(() => {\n      this.getAll().forEach((e) => {\n        e.onOnline();\n      });\n    });\n  }\n}, zd = class {\n  #e;\n  #t;\n  #n;\n  #i;\n  #s;\n  #o;\n  #g;\n  #c;\n  constructor(e = {}) {\n    this.#e = e.queryCache || new Pd(), this.#t = e.mutationCache || new Ca(), this.#n = e.defaultOptions || {}, this.#i = /* @__PURE__ */ new Map(), this.#s = /* @__PURE__ */ new Map(), this.#o = 0;\n  }\n  mount() {\n    this.#o++, this.#o === 1 && (this.#g = Ci.subscribe(async (e) => {\n      e && (await this.resumePausedMutations(), this.#e.onFocus());\n    }), this.#c = On.subscribe(async (e) => {\n      e && (await this.resumePausedMutations(), this.#e.onOnline());\n    }));\n  }\n  unmount() {\n    this.#o--, this.#o === 0 && (this.#g?.(), this.#g = void 0, this.#c?.(), this.#c = void 0);\n  }\n  isFetching(e) {\n    return this.#e.findAll({ ...e, fetchStatus: \"fetching\" }).length;\n  }\n  isMutating(e) {\n    return this.#t.findAll({ ...e, status: \"pending\" }).length;\n  }\n  /**\n   * Imperative (non-reactive) way to retrieve data for a QueryKey.\n   * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n   *\n   * Hint: Do not use this function inside a component, because it won't receive updates.\n   * Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n   */\n  getQueryData(e) {\n    const t = this.defaultQueryOptions({ queryKey: e });\n    return this.#e.get(t.queryHash)?.state.data;\n  }\n  ensureQueryData(e) {\n    const t = this.defaultQueryOptions(e), n = this.#e.build(this, t), r = n.state.data;\n    return r === void 0 ? this.fetchQuery(e) : (e.revalidateIfStale && n.isStaleByTime(Ae(t.staleTime, n)) && this.prefetchQuery(t), Promise.resolve(r));\n  }\n  getQueriesData(e) {\n    return this.#e.findAll(e).map(({ queryKey: t, state: n }) => {\n      const r = n.data;\n      return [t, r];\n    });\n  }\n  setQueryData(e, t, n) {\n    const r = this.defaultQueryOptions({ queryKey: e }), s = this.#e.get(\n      r.queryHash\n    )?.state.data, o = cd(t, s);\n    if (o !== void 0)\n      return this.#e.build(this, r).setData(o, { ...n, manual: !0 });\n  }\n  setQueriesData(e, t, n) {\n    return K.batch(\n      () => this.#e.findAll(e).map(({ queryKey: r }) => [\n        r,\n        this.setQueryData(r, t, n)\n      ])\n    );\n  }\n  getQueryState(e) {\n    const t = this.defaultQueryOptions({ queryKey: e });\n    return this.#e.get(\n      t.queryHash\n    )?.state;\n  }\n  removeQueries(e) {\n    const t = this.#e;\n    K.batch(() => {\n      t.findAll(e).forEach((n) => {\n        t.remove(n);\n      });\n    });\n  }\n  resetQueries(e, t) {\n    const n = this.#e;\n    return K.batch(() => (n.findAll(e).forEach((r) => {\n      r.reset();\n    }), this.refetchQueries(\n      {\n        type: \"active\",\n        ...e\n      },\n      t\n    )));\n  }\n  cancelQueries(e, t = {}) {\n    const n = { revert: !0, ...t }, r = K.batch(\n      () => this.#e.findAll(e).map((i) => i.cancel(n))\n    );\n    return Promise.all(r).then(Q).catch(Q);\n  }\n  invalidateQueries(e, t = {}) {\n    return K.batch(() => (this.#e.findAll(e).forEach((n) => {\n      n.invalidate();\n    }), e?.refetchType === \"none\" ? Promise.resolve() : this.refetchQueries(\n      {\n        ...e,\n        type: e?.refetchType ?? e?.type ?? \"active\"\n      },\n      t\n    )));\n  }\n  refetchQueries(e, t = {}) {\n    const n = {\n      ...t,\n      cancelRefetch: t.cancelRefetch ?? !0\n    }, r = K.batch(\n      () => this.#e.findAll(e).filter((i) => !i.isDisabled() && !i.isStatic()).map((i) => {\n        let s = i.fetch(void 0, n);\n        return n.throwOnError || (s = s.catch(Q)), i.state.fetchStatus === \"paused\" ? Promise.resolve() : s;\n      })\n    );\n    return Promise.all(r).then(Q);\n  }\n  fetchQuery(e) {\n    const t = this.defaultQueryOptions(e);\n    t.retry === void 0 && (t.retry = !1);\n    const n = this.#e.build(this, t);\n    return n.isStaleByTime(\n      Ae(t.staleTime, n)\n    ) ? n.fetch(t) : Promise.resolve(n.state.data);\n  }\n  prefetchQuery(e) {\n    return this.fetchQuery(e).then(Q).catch(Q);\n  }\n  fetchInfiniteQuery(e) {\n    return e._type = \"infinite\", this.fetchQuery(e);\n  }\n  prefetchInfiniteQuery(e) {\n    return this.fetchInfiniteQuery(e).then(Q).catch(Q);\n  }\n  ensureInfiniteQueryData(e) {\n    return e._type = \"infinite\", this.ensureQueryData(e);\n  }\n  resumePausedMutations() {\n    return On.isOnline() ? this.#t.resumePausedMutations() : Promise.resolve();\n  }\n  getQueryCache() {\n    return this.#e;\n  }\n  getMutationCache() {\n    return this.#t;\n  }\n  getDefaultOptions() {\n    return this.#n;\n  }\n  setDefaultOptions(e) {\n    this.#n = e;\n  }\n  setQueryDefaults(e, t) {\n    this.#i.set(Ue(e), {\n      queryKey: e,\n      defaultOptions: t\n    });\n  }\n  getQueryDefaults(e) {\n    const t = [...this.#i.values()], n = {};\n    return t.forEach((r) => {\n      Rt(e, r.queryKey) && Object.assign(n, r.defaultOptions);\n    }), n;\n  }\n  setMutationDefaults(e, t) {\n    this.#s.set(Ue(e), {\n      mutationKey: e,\n      defaultOptions: t\n    });\n  }\n  getMutationDefaults(e) {\n    const t = [...this.#s.values()], n = {};\n    return t.forEach((r) => {\n      Rt(e, r.mutationKey) && Object.assign(n, r.defaultOptions);\n    }), n;\n  }\n  defaultQueryOptions(e) {\n    if (e._defaulted)\n      return e;\n    const t = {\n      ...this.#n.queries,\n      ...this.getQueryDefaults(e.queryKey),\n      ...e,\n      _defaulted: !0\n    };\n    return t.queryHash || (t.queryHash = Ti(\n      t.queryKey,\n      t\n    )), t.refetchOnReconnect === void 0 && (t.refetchOnReconnect = t.networkMode !== \"always\"), t.throwOnError === void 0 && (t.throwOnError = !!t.suspense), !t.networkMode && t.persister && (t.networkMode = \"offlineFirst\"), t.queryFn === Sn && (t.enabled = !1), t;\n  }\n  defaultMutationOptions(e) {\n    return e?._defaulted ? e : {\n      ...this.#n.mutations,\n      ...e?.mutationKey && this.getMutationDefaults(e.mutationKey),\n      ...e,\n      _defaulted: !0\n    };\n  }\n  clear() {\n    this.#e.clear(), this.#t.clear();\n  }\n};\nfunction LE(e) {\n  const t = new zd(\n    At(\n      {\n        defaultOptions: {\n          queries: {\n            gcTime: 864e5,\n            // 24 hours\n            // staleTime: 2000,\n            retry: 0\n          }\n        },\n        mutationCache: new Ca({\n          onSuccess: (s) => {\n          },\n          onError: (s) => {\n          }\n        })\n      },\n      e ?? {}\n    )\n  );\n  function n(s) {\n    const o = t.fetchQuery(s), u = new Rd(t, s);\n    let a = u.getCurrentResult();\n    const c = u.subscribe((l) => {\n      a = l;\n    });\n    return {\n      data: o,\n      observer: u,\n      get query() {\n        return a;\n      },\n      invalidate: () => {\n        t.invalidateQueries(s);\n      },\n      refetch: u.refetch,\n      // fetchOptimistic: () => {\n      //   observer.fetchOptimistic();\n      // },\n      destroy: () => {\n        c();\n      }\n    };\n  }\n  function r(s) {\n    const o = new Id(t, s);\n    let u = o.getCurrentResult();\n    const a = o.subscribe((c) => {\n      u = c;\n    });\n    return {\n      observer: o,\n      get mutation() {\n        return u;\n      },\n      reset: o.reset,\n      mutate: (c, l) => {\n        o.mutate(c, l);\n      },\n      mutateAsync: (c, l) => o.mutate(c, l),\n      destroy() {\n        a();\n      }\n    };\n  }\n  function i() {\n    const s = Fd(t);\n    return () => {\n      Ed(t, s), t.resumePausedMutations();\n    };\n  }\n  return { queryClient: t, createQuery: n, createMutation: r, offline: i };\n}\nconst Bd = \"400-158-8363\", $d = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  HOTLINE: Bd\n}, Symbol.toStringTag, { value: \"Module\" })), Ld = \"https://test.xinge.me\", Md = \"801414680580298A78ADDAB845688F48\", jd = \"B233E181D80FA7C5B4A783CB46D30B92\", Ud = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  baseURL: Ld,\n  sm4_iv: Md,\n  sm4_key: jd\n}, Symbol.toStringTag, { value: \"Module\" })), Zd = \"https://xinge.ruolin-link.com\", qd = \"FE593F8EDD5BE9DED482A4FD9B571298\", Wd = \"A9FDC9950D1C01C365F16A4992ED16E3\", Gd = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  baseURL: Zd,\n  sm4_iv: qd,\n  sm4_key: Wd\n}, Symbol.toStringTag, { value: \"Module\" })), Ta = {\n  dev: \"dev\",\n  prod: \"prod\"\n};\nlet Ra = Ta.dev;\nfunction Vd(e) {\n  Ra = e;\n}\nfunction xi() {\n  return {\n    ...$d,\n    ...Ra === Ta.prod ? Gd : Ud\n  };\n}\nconst Kd = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  get: xi,\n  setEnv: Vd\n}, Symbol.toStringTag, { value: \"Module\" }));\nvar js;\nfunction b(e, t, n) {\n  function r(u, a) {\n    if (u._zod || Object.defineProperty(u, \"_zod\", {\n      value: {\n        def: a,\n        constr: o,\n        traits: /* @__PURE__ */ new Set()\n      },\n      enumerable: !1\n    }), u._zod.traits.has(e))\n      return;\n    u._zod.traits.add(e), t(u, a);\n    const c = o.prototype, l = Object.keys(c);\n    for (let f = 0; f < l.length; f++) {\n      const d = l[f];\n      d in u || (u[d] = c[d].bind(u));\n    }\n  }\n  const i = n?.Parent ?? Object;\n  class s extends i {\n  }\n  Object.defineProperty(s, \"name\", { value: e });\n  function o(u) {\n    var a;\n    const c = n?.Parent ? new s() : this;\n    r(c, u), (a = c._zod).deferred ?? (a.deferred = []);\n    for (const l of c._zod.deferred)\n      l();\n    return c;\n  }\n  return Object.defineProperty(o, \"init\", { value: r }), Object.defineProperty(o, Symbol.hasInstance, {\n    value: (u) => n?.Parent && u instanceof n.Parent ? !0 : u?._zod?.traits?.has(e)\n  }), Object.defineProperty(o, \"name\", { value: e }), o;\n}\nclass rt extends Error {\n  constructor() {\n    super(\"Encountered Promise during synchronous parse. Use .parseAsync() instead.\");\n  }\n}\nclass xa extends Error {\n  constructor(t) {\n    super(`Encountered unidirectional transform during encode: ${t}`), this.name = \"ZodEncodeError\";\n  }\n}\n(js = globalThis).__zod_globalConfig ?? (js.__zod_globalConfig = {});\nconst Cn = globalThis.__zod_globalConfig;\nfunction Ze(e) {\n  return e && Object.assign(Cn, e), Cn;\n}\nfunction ka(e) {\n  const t = Object.values(e).filter((r) => typeof r == \"number\");\n  return Object.entries(e).filter(([r, i]) => t.indexOf(+r) === -1).map(([r, i]) => i);\n}\nfunction Gr(e, t) {\n  return typeof t == \"bigint\" ? t.toString() : t;\n}\nfunction ki(e) {\n  return {\n    get value() {\n      {\n        const t = e();\n        return Object.defineProperty(this, \"value\", { value: t }), t;\n      }\n    }\n  };\n}\nfunction Ni(e) {\n  return e == null;\n}\nfunction Ii(e) {\n  const t = e.startsWith(\"^\") ? 1 : 0, n = e.endsWith(\"$\") ? e.length - 1 : e.length;\n  return e.slice(t, n);\n}\nfunction Qd(e, t) {\n  const n = e / t, r = Math.round(n), i = Number.EPSILON * Math.max(Math.abs(n), 1);\n  return Math.abs(n - r) < i ? 0 : n - r;\n}\nconst Us = /* @__PURE__ */ Symbol(\"evaluating\");\nfunction x(e, t, n) {\n  let r;\n  Object.defineProperty(e, t, {\n    get() {\n      if (r !== Us)\n        return r === void 0 && (r = Us, r = n()), r;\n    },\n    set(i) {\n      Object.defineProperty(e, t, {\n        value: i\n        // configurable: true,\n      });\n    },\n    configurable: !0\n  });\n}\nfunction Je(e, t, n) {\n  Object.defineProperty(e, t, {\n    value: n,\n    writable: !0,\n    enumerable: !0,\n    configurable: !0\n  });\n}\nfunction xe(...e) {\n  const t = {};\n  for (const n of e) {\n    const r = Object.getOwnPropertyDescriptors(n);\n    Object.assign(t, r);\n  }\n  return Object.defineProperties({}, t);\n}\nfunction Zs(e) {\n  return JSON.stringify(e);\n}\nfunction Jd(e) {\n  return e.toLowerCase().trim().replace(/[^\\w\\s-]/g, \"\").replace(/[\\s_-]+/g, \"-\").replace(/^-+|-+$/g, \"\");\n}\nconst Na = \"captureStackTrace\" in Error ? Error.captureStackTrace : (...e) => {\n};\nfunction Tn(e) {\n  return typeof e == \"object\" && e !== null && !Array.isArray(e);\n}\nconst Hd = /* @__PURE__ */ ki(() => {\n  if (Cn.jitless || typeof navigator < \"u\" && navigator?.userAgent?.includes(\"Cloudflare\"))\n    return !1;\n  try {\n    const e = Function;\n    return new e(\"\"), !0;\n  } catch {\n    return !1;\n  }\n});\nfunction xt(e) {\n  if (Tn(e) === !1)\n    return !1;\n  const t = e.constructor;\n  if (t === void 0 || typeof t != \"function\")\n    return !0;\n  const n = t.prototype;\n  return !(Tn(n) === !1 || Object.prototype.hasOwnProperty.call(n, \"isPrototypeOf\") === !1);\n}\nfunction Ia(e) {\n  return xt(e) ? { ...e } : Array.isArray(e) ? [...e] : e instanceof Map ? new Map(e) : e instanceof Set ? new Set(e) : e;\n}\nconst Xd = /* @__PURE__ */ new Set([\"string\", \"number\", \"symbol\"]);\nfunction Kn(e) {\n  return e.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction ke(e, t, n) {\n  const r = new e._zod.constr(t ?? e._zod.def);\n  return (!t || n?.parent) && (r._zod.parent = e), r;\n}\nfunction O(e) {\n  const t = e;\n  if (!t)\n    return {};\n  if (typeof t == \"string\")\n    return { error: () => t };\n  if (t?.message !== void 0) {\n    if (t?.error !== void 0)\n      throw new Error(\"Cannot specify both `message` and `error` params\");\n    t.error = t.message;\n  }\n  return delete t.message, typeof t.error == \"string\" ? { ...t, error: () => t.error } : t;\n}\nfunction Yd(e) {\n  return Object.keys(e).filter((t) => e[t]._zod.optin === \"optional\" && e[t]._zod.optout === \"optional\");\n}\nconst ep = {\n  safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n  int32: [-2147483648, 2147483647],\n  uint32: [0, 4294967295],\n  float32: [-34028234663852886e22, 34028234663852886e22],\n  float64: [-Number.MAX_VALUE, Number.MAX_VALUE]\n};\nfunction tp(e, t) {\n  const n = e._zod.def, r = n.checks;\n  if (r && r.length > 0)\n    throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n  const s = xe(e._zod.def, {\n    get shape() {\n      const o = {};\n      for (const u in t) {\n        if (!(u in n.shape))\n          throw new Error(`Unrecognized key: \"${u}\"`);\n        t[u] && (o[u] = n.shape[u]);\n      }\n      return Je(this, \"shape\", o), o;\n    },\n    checks: []\n  });\n  return ke(e, s);\n}\nfunction np(e, t) {\n  const n = e._zod.def, r = n.checks;\n  if (r && r.length > 0)\n    throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n  const s = xe(e._zod.def, {\n    get shape() {\n      const o = { ...e._zod.def.shape };\n      for (const u in t) {\n        if (!(u in n.shape))\n          throw new Error(`Unrecognized key: \"${u}\"`);\n        t[u] && delete o[u];\n      }\n      return Je(this, \"shape\", o), o;\n    },\n    checks: []\n  });\n  return ke(e, s);\n}\nfunction rp(e, t) {\n  if (!xt(t))\n    throw new Error(\"Invalid input to extend: expected a plain object\");\n  const n = e._zod.def.checks;\n  if (n && n.length > 0) {\n    const s = e._zod.def.shape;\n    for (const o in t)\n      if (Object.getOwnPropertyDescriptor(s, o) !== void 0)\n        throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n  }\n  const i = xe(e._zod.def, {\n    get shape() {\n      const s = { ...e._zod.def.shape, ...t };\n      return Je(this, \"shape\", s), s;\n    }\n  });\n  return ke(e, i);\n}\nfunction ip(e, t) {\n  if (!xt(t))\n    throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n  const n = xe(e._zod.def, {\n    get shape() {\n      const r = { ...e._zod.def.shape, ...t };\n      return Je(this, \"shape\", r), r;\n    }\n  });\n  return ke(e, n);\n}\nfunction sp(e, t) {\n  if (e._zod.def.checks?.length)\n    throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n  const n = xe(e._zod.def, {\n    get shape() {\n      const r = { ...e._zod.def.shape, ...t._zod.def.shape };\n      return Je(this, \"shape\", r), r;\n    },\n    get catchall() {\n      return t._zod.def.catchall;\n    },\n    checks: t._zod.def.checks ?? []\n  });\n  return ke(e, n);\n}\nfunction op(e, t, n) {\n  const i = t._zod.def.checks;\n  if (i && i.length > 0)\n    throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n  const o = xe(t._zod.def, {\n    get shape() {\n      const u = t._zod.def.shape, a = { ...u };\n      if (n)\n        for (const c in n) {\n          if (!(c in u))\n            throw new Error(`Unrecognized key: \"${c}\"`);\n          n[c] && (a[c] = e ? new e({\n            type: \"optional\",\n            innerType: u[c]\n          }) : u[c]);\n        }\n      else\n        for (const c in u)\n          a[c] = e ? new e({\n            type: \"optional\",\n            innerType: u[c]\n          }) : u[c];\n      return Je(this, \"shape\", a), a;\n    },\n    checks: []\n  });\n  return ke(t, o);\n}\nfunction up(e, t, n) {\n  const r = xe(t._zod.def, {\n    get shape() {\n      const i = t._zod.def.shape, s = { ...i };\n      if (n)\n        for (const o in n) {\n          if (!(o in s))\n            throw new Error(`Unrecognized key: \"${o}\"`);\n          n[o] && (s[o] = new e({\n            type: \"nonoptional\",\n            innerType: i[o]\n          }));\n        }\n      else\n        for (const o in i)\n          s[o] = new e({\n            type: \"nonoptional\",\n            innerType: i[o]\n          });\n      return Je(this, \"shape\", s), s;\n    }\n  });\n  return ke(t, r);\n}\nfunction et(e, t = 0) {\n  if (e.aborted === !0)\n    return !0;\n  for (let n = t; n < e.issues.length; n++)\n    if (e.issues[n]?.continue !== !0)\n      return !0;\n  return !1;\n}\nfunction ap(e, t = 0) {\n  if (e.aborted === !0)\n    return !0;\n  for (let n = t; n < e.issues.length; n++)\n    if (e.issues[n]?.continue === !1)\n      return !0;\n  return !1;\n}\nfunction Pa(e, t) {\n  return t.map((n) => {\n    var r;\n    return (r = n).path ?? (r.path = []), n.path.unshift(e), n;\n  });\n}\nfunction Kt(e) {\n  return typeof e == \"string\" ? e : e?.message;\n}\nfunction qe(e, t, n) {\n  const r = e.message ? e.message : Kt(e.inst?._zod.def?.error?.(e)) ?? Kt(t?.error?.(e)) ?? Kt(n.customError?.(e)) ?? Kt(n.localeError?.(e)) ?? \"Invalid input\", { inst: i, continue: s, input: o, ...u } = e;\n  return u.path ?? (u.path = []), u.message = r, t?.reportInput && (u.input = o), u;\n}\nfunction Pi(e) {\n  return Array.isArray(e) ? \"array\" : typeof e == \"string\" ? \"string\" : \"unknown\";\n}\nfunction kt(...e) {\n  const [t, n, r] = e;\n  return typeof t == \"string\" ? {\n    message: t,\n    code: \"custom\",\n    input: n,\n    inst: r\n  } : { ...t };\n}\nconst za = (e, t) => {\n  e.name = \"$ZodError\", Object.defineProperty(e, \"_zod\", {\n    value: e._zod,\n    enumerable: !1\n  }), Object.defineProperty(e, \"issues\", {\n    value: t,\n    enumerable: !1\n  }), e.message = JSON.stringify(t, Gr, 2), Object.defineProperty(e, \"toString\", {\n    value: () => e.message,\n    enumerable: !1\n  });\n}, Ba = b(\"$ZodError\", za), $a = b(\"$ZodError\", za, { Parent: Error });\nfunction cp(e, t = (n) => n.message) {\n  const n = {}, r = [];\n  for (const i of e.issues)\n    i.path.length > 0 ? (n[i.path[0]] = n[i.path[0]] || [], n[i.path[0]].push(t(i))) : r.push(t(i));\n  return { formErrors: r, fieldErrors: n };\n}\nfunction lp(e, t = (n) => n.message) {\n  const n = { _errors: [] }, r = (i, s = []) => {\n    for (const o of i.issues)\n      if (o.code === \"invalid_union\" && o.errors.length)\n        o.errors.map((u) => r({ issues: u }, [...s, ...o.path]));\n      else if (o.code === \"invalid_key\")\n        r({ issues: o.issues }, [...s, ...o.path]);\n      else if (o.code === \"invalid_element\")\n        r({ issues: o.issues }, [...s, ...o.path]);\n      else {\n        const u = [...s, ...o.path];\n        if (u.length === 0)\n          n._errors.push(t(o));\n        else {\n          let a = n, c = 0;\n          for (; c < u.length; ) {\n            const l = u[c];\n            c === u.length - 1 ? (a[l] = a[l] || { _errors: [] }, a[l]._errors.push(t(o))) : a[l] = a[l] || { _errors: [] }, a = a[l], c++;\n          }\n        }\n      }\n  };\n  return r(e), n;\n}\nconst zi = (e) => (t, n, r, i) => {\n  const s = r ? { ...r, async: !1 } : { async: !1 }, o = t._zod.run({ value: n, issues: [] }, s);\n  if (o instanceof Promise)\n    throw new rt();\n  if (o.issues.length) {\n    const u = new (i?.Err ?? e)(o.issues.map((a) => qe(a, s, Ze())));\n    throw Na(u, i?.callee), u;\n  }\n  return o.value;\n}, Bi = (e) => async (t, n, r, i) => {\n  const s = r ? { ...r, async: !0 } : { async: !0 };\n  let o = t._zod.run({ value: n, issues: [] }, s);\n  if (o instanceof Promise && (o = await o), o.issues.length) {\n    const u = new (i?.Err ?? e)(o.issues.map((a) => qe(a, s, Ze())));\n    throw Na(u, i?.callee), u;\n  }\n  return o.value;\n}, Qn = (e) => (t, n, r) => {\n  const i = r ? { ...r, async: !1 } : { async: !1 }, s = t._zod.run({ value: n, issues: [] }, i);\n  if (s instanceof Promise)\n    throw new rt();\n  return s.issues.length ? {\n    success: !1,\n    error: new (e ?? Ba)(s.issues.map((o) => qe(o, i, Ze())))\n  } : { success: !0, data: s.value };\n}, hp = /* @__PURE__ */ Qn($a), Jn = (e) => async (t, n, r) => {\n  const i = r ? { ...r, async: !0 } : { async: !0 };\n  let s = t._zod.run({ value: n, issues: [] }, i);\n  return s instanceof Promise && (s = await s), s.issues.length ? {\n    success: !1,\n    error: new e(s.issues.map((o) => qe(o, i, Ze())))\n  } : { success: !0, data: s.value };\n}, fp = /* @__PURE__ */ Jn($a), dp = (e) => (t, n, r) => {\n  const i = r ? { ...r, direction: \"backward\" } : { direction: \"backward\" };\n  return zi(e)(t, n, i);\n}, pp = (e) => (t, n, r) => zi(e)(t, n, r), mp = (e) => async (t, n, r) => {\n  const i = r ? { ...r, direction: \"backward\" } : { direction: \"backward\" };\n  return Bi(e)(t, n, i);\n}, Dp = (e) => async (t, n, r) => Bi(e)(t, n, r), gp = (e) => (t, n, r) => {\n  const i = r ? { ...r, direction: \"backward\" } : { direction: \"backward\" };\n  return Qn(e)(t, n, i);\n}, yp = (e) => (t, n, r) => Qn(e)(t, n, r), bp = (e) => async (t, n, r) => {\n  const i = r ? { ...r, direction: \"backward\" } : { direction: \"backward\" };\n  return Jn(e)(t, n, i);\n}, wp = (e) => async (t, n, r) => Jn(e)(t, n, r), Fp = /^[cC][0-9a-z]{6,}$/, Ep = /^[0-9a-z]+$/, vp = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/, _p = /^[0-9a-vA-V]{20}$/, Sp = /^[A-Za-z0-9]{27}$/, Ap = /^[a-zA-Z0-9_-]{21}$/, Op = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/, Cp = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/, qs = (e) => e ? new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`) : /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/, Tp = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/, Rp = \"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\";\nfunction xp() {\n  return new RegExp(Rp, \"u\");\n}\nconst kp = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/, Np = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/, Ip = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/, Pp = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/, zp = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/, La = /^[A-Za-z0-9_-]*$/, Bp = /^https?$/, $p = /^\\+[1-9]\\d{6,14}$/, Ma = \"(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))\", Lp = /* @__PURE__ */ new RegExp(`^${Ma}$`);\nfunction ja(e) {\n  const t = \"(?:[01]\\\\d|2[0-3]):[0-5]\\\\d\";\n  return typeof e.precision == \"number\" ? e.precision === -1 ? `${t}` : e.precision === 0 ? `${t}:[0-5]\\\\d` : `${t}:[0-5]\\\\d\\\\.\\\\d{${e.precision}}` : `${t}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n}\nfunction Mp(e) {\n  return new RegExp(`^${ja(e)}$`);\n}\nfunction jp(e) {\n  const t = ja({ precision: e.precision }), n = [\"Z\"];\n  e.local && n.push(\"\"), e.offset && n.push(\"([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)\");\n  const r = `${t}(?:${n.join(\"|\")})`;\n  return new RegExp(`^${Ma}T(?:${r})$`);\n}\nconst Up = (e) => {\n  const t = e ? `[\\\\s\\\\S]{${e?.minimum ?? 0},${e?.maximum ?? \"\"}}` : \"[\\\\s\\\\S]*\";\n  return new RegExp(`^${t}$`);\n}, Zp = /^-?\\d+$/, qp = /^-?\\d+(?:\\.\\d+)?$/, Wp = /^[^A-Z]*$/, Gp = /^[^a-z]*$/, te = /* @__PURE__ */ b(\"$ZodCheck\", (e, t) => {\n  var n;\n  e._zod ?? (e._zod = {}), e._zod.def = t, (n = e._zod).onattach ?? (n.onattach = []);\n}), Ua = {\n  number: \"number\",\n  bigint: \"bigint\",\n  object: \"date\"\n}, Za = /* @__PURE__ */ b(\"$ZodCheckLessThan\", (e, t) => {\n  te.init(e, t);\n  const n = Ua[typeof t.value];\n  e._zod.onattach.push((r) => {\n    const i = r._zod.bag, s = (t.inclusive ? i.maximum : i.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n    t.value < s && (t.inclusive ? i.maximum = t.value : i.exclusiveMaximum = t.value);\n  }), e._zod.check = (r) => {\n    (t.inclusive ? r.value <= t.value : r.value < t.value) || r.issues.push({\n      origin: n,\n      code: \"too_big\",\n      maximum: typeof t.value == \"object\" ? t.value.getTime() : t.value,\n      input: r.value,\n      inclusive: t.inclusive,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), qa = /* @__PURE__ */ b(\"$ZodCheckGreaterThan\", (e, t) => {\n  te.init(e, t);\n  const n = Ua[typeof t.value];\n  e._zod.onattach.push((r) => {\n    const i = r._zod.bag, s = (t.inclusive ? i.minimum : i.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n    t.value > s && (t.inclusive ? i.minimum = t.value : i.exclusiveMinimum = t.value);\n  }), e._zod.check = (r) => {\n    (t.inclusive ? r.value >= t.value : r.value > t.value) || r.issues.push({\n      origin: n,\n      code: \"too_small\",\n      minimum: typeof t.value == \"object\" ? t.value.getTime() : t.value,\n      input: r.value,\n      inclusive: t.inclusive,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), Vp = /* @__PURE__ */ b(\"$ZodCheckMultipleOf\", (e, t) => {\n  te.init(e, t), e._zod.onattach.push((n) => {\n    var r;\n    (r = n._zod.bag).multipleOf ?? (r.multipleOf = t.value);\n  }), e._zod.check = (n) => {\n    if (typeof n.value != typeof t.value)\n      throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n    (typeof n.value == \"bigint\" ? n.value % t.value === BigInt(0) : Qd(n.value, t.value) === 0) || n.issues.push({\n      origin: typeof n.value,\n      code: \"not_multiple_of\",\n      divisor: t.value,\n      input: n.value,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), Kp = /* @__PURE__ */ b(\"$ZodCheckNumberFormat\", (e, t) => {\n  te.init(e, t), t.format = t.format || \"float64\";\n  const n = t.format?.includes(\"int\"), r = n ? \"int\" : \"number\", [i, s] = ep[t.format];\n  e._zod.onattach.push((o) => {\n    const u = o._zod.bag;\n    u.format = t.format, u.minimum = i, u.maximum = s, n && (u.pattern = Zp);\n  }), e._zod.check = (o) => {\n    const u = o.value;\n    if (n) {\n      if (!Number.isInteger(u)) {\n        o.issues.push({\n          expected: r,\n          format: t.format,\n          code: \"invalid_type\",\n          continue: !1,\n          input: u,\n          inst: e\n        });\n        return;\n      }\n      if (!Number.isSafeInteger(u)) {\n        u > 0 ? o.issues.push({\n          input: u,\n          code: \"too_big\",\n          maximum: Number.MAX_SAFE_INTEGER,\n          note: \"Integers must be within the safe integer range.\",\n          inst: e,\n          origin: r,\n          inclusive: !0,\n          continue: !t.abort\n        }) : o.issues.push({\n          input: u,\n          code: \"too_small\",\n          minimum: Number.MIN_SAFE_INTEGER,\n          note: \"Integers must be within the safe integer range.\",\n          inst: e,\n          origin: r,\n          inclusive: !0,\n          continue: !t.abort\n        });\n        return;\n      }\n    }\n    u < i && o.issues.push({\n      origin: \"number\",\n      input: u,\n      code: \"too_small\",\n      minimum: i,\n      inclusive: !0,\n      inst: e,\n      continue: !t.abort\n    }), u > s && o.issues.push({\n      origin: \"number\",\n      input: u,\n      code: \"too_big\",\n      maximum: s,\n      inclusive: !0,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), Qp = /* @__PURE__ */ b(\"$ZodCheckMaxLength\", (e, t) => {\n  var n;\n  te.init(e, t), (n = e._zod.def).when ?? (n.when = (r) => {\n    const i = r.value;\n    return !Ni(i) && i.length !== void 0;\n  }), e._zod.onattach.push((r) => {\n    const i = r._zod.bag.maximum ?? Number.POSITIVE_INFINITY;\n    t.maximum < i && (r._zod.bag.maximum = t.maximum);\n  }), e._zod.check = (r) => {\n    const i = r.value;\n    if (i.length <= t.maximum)\n      return;\n    const o = Pi(i);\n    r.issues.push({\n      origin: o,\n      code: \"too_big\",\n      maximum: t.maximum,\n      inclusive: !0,\n      input: i,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), Jp = /* @__PURE__ */ b(\"$ZodCheckMinLength\", (e, t) => {\n  var n;\n  te.init(e, t), (n = e._zod.def).when ?? (n.when = (r) => {\n    const i = r.value;\n    return !Ni(i) && i.length !== void 0;\n  }), e._zod.onattach.push((r) => {\n    const i = r._zod.bag.minimum ?? Number.NEGATIVE_INFINITY;\n    t.minimum > i && (r._zod.bag.minimum = t.minimum);\n  }), e._zod.check = (r) => {\n    const i = r.value;\n    if (i.length >= t.minimum)\n      return;\n    const o = Pi(i);\n    r.issues.push({\n      origin: o,\n      code: \"too_small\",\n      minimum: t.minimum,\n      inclusive: !0,\n      input: i,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), Hp = /* @__PURE__ */ b(\"$ZodCheckLengthEquals\", (e, t) => {\n  var n;\n  te.init(e, t), (n = e._zod.def).when ?? (n.when = (r) => {\n    const i = r.value;\n    return !Ni(i) && i.length !== void 0;\n  }), e._zod.onattach.push((r) => {\n    const i = r._zod.bag;\n    i.minimum = t.length, i.maximum = t.length, i.length = t.length;\n  }), e._zod.check = (r) => {\n    const i = r.value, s = i.length;\n    if (s === t.length)\n      return;\n    const o = Pi(i), u = s > t.length;\n    r.issues.push({\n      origin: o,\n      ...u ? { code: \"too_big\", maximum: t.length } : { code: \"too_small\", minimum: t.length },\n      inclusive: !0,\n      exact: !0,\n      input: r.value,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), Hn = /* @__PURE__ */ b(\"$ZodCheckStringFormat\", (e, t) => {\n  var n, r;\n  te.init(e, t), e._zod.onattach.push((i) => {\n    const s = i._zod.bag;\n    s.format = t.format, t.pattern && (s.patterns ?? (s.patterns = /* @__PURE__ */ new Set()), s.patterns.add(t.pattern));\n  }), t.pattern ? (n = e._zod).check ?? (n.check = (i) => {\n    t.pattern.lastIndex = 0, !t.pattern.test(i.value) && i.issues.push({\n      origin: \"string\",\n      code: \"invalid_format\",\n      format: t.format,\n      input: i.value,\n      ...t.pattern ? { pattern: t.pattern.toString() } : {},\n      inst: e,\n      continue: !t.abort\n    });\n  }) : (r = e._zod).check ?? (r.check = () => {\n  });\n}), Xp = /* @__PURE__ */ b(\"$ZodCheckRegex\", (e, t) => {\n  Hn.init(e, t), e._zod.check = (n) => {\n    t.pattern.lastIndex = 0, !t.pattern.test(n.value) && n.issues.push({\n      origin: \"string\",\n      code: \"invalid_format\",\n      format: \"regex\",\n      input: n.value,\n      pattern: t.pattern.toString(),\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), Yp = /* @__PURE__ */ b(\"$ZodCheckLowerCase\", (e, t) => {\n  t.pattern ?? (t.pattern = Wp), Hn.init(e, t);\n}), e3 = /* @__PURE__ */ b(\"$ZodCheckUpperCase\", (e, t) => {\n  t.pattern ?? (t.pattern = Gp), Hn.init(e, t);\n}), t3 = /* @__PURE__ */ b(\"$ZodCheckIncludes\", (e, t) => {\n  te.init(e, t);\n  const n = Kn(t.includes), r = new RegExp(typeof t.position == \"number\" ? `^.{${t.position}}${n}` : n);\n  t.pattern = r, e._zod.onattach.push((i) => {\n    const s = i._zod.bag;\n    s.patterns ?? (s.patterns = /* @__PURE__ */ new Set()), s.patterns.add(r);\n  }), e._zod.check = (i) => {\n    i.value.includes(t.includes, t.position) || i.issues.push({\n      origin: \"string\",\n      code: \"invalid_format\",\n      format: \"includes\",\n      includes: t.includes,\n      input: i.value,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), n3 = /* @__PURE__ */ b(\"$ZodCheckStartsWith\", (e, t) => {\n  te.init(e, t);\n  const n = new RegExp(`^${Kn(t.prefix)}.*`);\n  t.pattern ?? (t.pattern = n), e._zod.onattach.push((r) => {\n    const i = r._zod.bag;\n    i.patterns ?? (i.patterns = /* @__PURE__ */ new Set()), i.patterns.add(n);\n  }), e._zod.check = (r) => {\n    r.value.startsWith(t.prefix) || r.issues.push({\n      origin: \"string\",\n      code: \"invalid_format\",\n      format: \"starts_with\",\n      prefix: t.prefix,\n      input: r.value,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), r3 = /* @__PURE__ */ b(\"$ZodCheckEndsWith\", (e, t) => {\n  te.init(e, t);\n  const n = new RegExp(`.*${Kn(t.suffix)}$`);\n  t.pattern ?? (t.pattern = n), e._zod.onattach.push((r) => {\n    const i = r._zod.bag;\n    i.patterns ?? (i.patterns = /* @__PURE__ */ new Set()), i.patterns.add(n);\n  }), e._zod.check = (r) => {\n    r.value.endsWith(t.suffix) || r.issues.push({\n      origin: \"string\",\n      code: \"invalid_format\",\n      format: \"ends_with\",\n      suffix: t.suffix,\n      input: r.value,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), i3 = /* @__PURE__ */ b(\"$ZodCheckOverwrite\", (e, t) => {\n  te.init(e, t), e._zod.check = (n) => {\n    n.value = t.tx(n.value);\n  };\n});\nclass s3 {\n  constructor(t = []) {\n    this.content = [], this.indent = 0, this && (this.args = t);\n  }\n  indented(t) {\n    this.indent += 1, t(this), this.indent -= 1;\n  }\n  write(t) {\n    if (typeof t == \"function\") {\n      t(this, { execution: \"sync\" }), t(this, { execution: \"async\" });\n      return;\n    }\n    const r = t.split(`\n`).filter((o) => o), i = Math.min(...r.map((o) => o.length - o.trimStart().length)), s = r.map((o) => o.slice(i)).map((o) => \" \".repeat(this.indent * 2) + o);\n    for (const o of s)\n      this.content.push(o);\n  }\n  compile() {\n    const t = Function, n = this?.args, i = [...(this?.content ?? [\"\"]).map((s) => `  ${s}`)];\n    return new t(...n, i.join(`\n`));\n  }\n}\nconst o3 = {\n  major: 4,\n  minor: 4,\n  patch: 3\n}, j = /* @__PURE__ */ b(\"$ZodType\", (e, t) => {\n  var n;\n  e ?? (e = {}), e._zod.def = t, e._zod.bag = e._zod.bag || {}, e._zod.version = o3;\n  const r = [...e._zod.def.checks ?? []];\n  e._zod.traits.has(\"$ZodCheck\") && r.unshift(e);\n  for (const i of r)\n    for (const s of i._zod.onattach)\n      s(e);\n  if (r.length === 0)\n    (n = e._zod).deferred ?? (n.deferred = []), e._zod.deferred?.push(() => {\n      e._zod.run = e._zod.parse;\n    });\n  else {\n    const i = (o, u, a) => {\n      let c = et(o), l;\n      for (const f of u) {\n        if (f._zod.def.when) {\n          if (ap(o) || !f._zod.def.when(o))\n            continue;\n        } else if (c)\n          continue;\n        const d = o.issues.length, h = f._zod.check(o);\n        if (h instanceof Promise && a?.async === !1)\n          throw new rt();\n        if (l || h instanceof Promise)\n          l = (l ?? Promise.resolve()).then(async () => {\n            await h, o.issues.length !== d && (c || (c = et(o, d)));\n          });\n        else {\n          if (o.issues.length === d)\n            continue;\n          c || (c = et(o, d));\n        }\n      }\n      return l ? l.then(() => o) : o;\n    }, s = (o, u, a) => {\n      if (et(o))\n        return o.aborted = !0, o;\n      const c = i(u, r, a);\n      if (c instanceof Promise) {\n        if (a.async === !1)\n          throw new rt();\n        return c.then((l) => e._zod.parse(l, a));\n      }\n      return e._zod.parse(c, a);\n    };\n    e._zod.run = (o, u) => {\n      if (u.skipChecks)\n        return e._zod.parse(o, u);\n      if (u.direction === \"backward\") {\n        const c = e._zod.parse({ value: o.value, issues: [] }, { ...u, skipChecks: !0 });\n        return c instanceof Promise ? c.then((l) => s(l, o, u)) : s(c, o, u);\n      }\n      const a = e._zod.parse(o, u);\n      if (a instanceof Promise) {\n        if (u.async === !1)\n          throw new rt();\n        return a.then((c) => i(c, r, u));\n      }\n      return i(a, r, u);\n    };\n  }\n  x(e, \"~standard\", () => ({\n    validate: (i) => {\n      try {\n        const s = hp(e, i);\n        return s.success ? { value: s.data } : { issues: s.error?.issues };\n      } catch {\n        return fp(e, i).then((o) => o.success ? { value: o.data } : { issues: o.error?.issues });\n      }\n    },\n    vendor: \"zod\",\n    version: 1\n  }));\n}), $i = /* @__PURE__ */ b(\"$ZodString\", (e, t) => {\n  j.init(e, t), e._zod.pattern = [...e?._zod.bag?.patterns ?? []].pop() ?? Up(e._zod.bag), e._zod.parse = (n, r) => {\n    if (t.coerce)\n      try {\n        n.value = String(n.value);\n      } catch {\n      }\n    return typeof n.value == \"string\" || n.issues.push({\n      expected: \"string\",\n      code: \"invalid_type\",\n      input: n.value,\n      inst: e\n    }), n;\n  };\n}), B = /* @__PURE__ */ b(\"$ZodStringFormat\", (e, t) => {\n  Hn.init(e, t), $i.init(e, t);\n}), u3 = /* @__PURE__ */ b(\"$ZodGUID\", (e, t) => {\n  t.pattern ?? (t.pattern = Cp), B.init(e, t);\n}), a3 = /* @__PURE__ */ b(\"$ZodUUID\", (e, t) => {\n  if (t.version) {\n    const r = {\n      v1: 1,\n      v2: 2,\n      v3: 3,\n      v4: 4,\n      v5: 5,\n      v6: 6,\n      v7: 7,\n      v8: 8\n    }[t.version];\n    if (r === void 0)\n      throw new Error(`Invalid UUID version: \"${t.version}\"`);\n    t.pattern ?? (t.pattern = qs(r));\n  } else\n    t.pattern ?? (t.pattern = qs());\n  B.init(e, t);\n}), c3 = /* @__PURE__ */ b(\"$ZodEmail\", (e, t) => {\n  t.pattern ?? (t.pattern = Tp), B.init(e, t);\n}), l3 = /* @__PURE__ */ b(\"$ZodURL\", (e, t) => {\n  B.init(e, t), e._zod.check = (n) => {\n    try {\n      const r = n.value.trim();\n      if (!t.normalize && t.protocol?.source === Bp.source && !/^https?:\\/\\//i.test(r)) {\n        n.issues.push({\n          code: \"invalid_format\",\n          format: \"url\",\n          note: \"Invalid URL format\",\n          input: n.value,\n          inst: e,\n          continue: !t.abort\n        });\n        return;\n      }\n      const i = new URL(r);\n      t.hostname && (t.hostname.lastIndex = 0, t.hostname.test(i.hostname) || n.issues.push({\n        code: \"invalid_format\",\n        format: \"url\",\n        note: \"Invalid hostname\",\n        pattern: t.hostname.source,\n        input: n.value,\n        inst: e,\n        continue: !t.abort\n      })), t.protocol && (t.protocol.lastIndex = 0, t.protocol.test(i.protocol.endsWith(\":\") ? i.protocol.slice(0, -1) : i.protocol) || n.issues.push({\n        code: \"invalid_format\",\n        format: \"url\",\n        note: \"Invalid protocol\",\n        pattern: t.protocol.source,\n        input: n.value,\n        inst: e,\n        continue: !t.abort\n      })), t.normalize ? n.value = i.href : n.value = r;\n      return;\n    } catch {\n      n.issues.push({\n        code: \"invalid_format\",\n        format: \"url\",\n        input: n.value,\n        inst: e,\n        continue: !t.abort\n      });\n    }\n  };\n}), h3 = /* @__PURE__ */ b(\"$ZodEmoji\", (e, t) => {\n  t.pattern ?? (t.pattern = xp()), B.init(e, t);\n}), f3 = /* @__PURE__ */ b(\"$ZodNanoID\", (e, t) => {\n  t.pattern ?? (t.pattern = Ap), B.init(e, t);\n}), d3 = /* @__PURE__ */ b(\"$ZodCUID\", (e, t) => {\n  t.pattern ?? (t.pattern = Fp), B.init(e, t);\n}), p3 = /* @__PURE__ */ b(\"$ZodCUID2\", (e, t) => {\n  t.pattern ?? (t.pattern = Ep), B.init(e, t);\n}), m3 = /* @__PURE__ */ b(\"$ZodULID\", (e, t) => {\n  t.pattern ?? (t.pattern = vp), B.init(e, t);\n}), D3 = /* @__PURE__ */ b(\"$ZodXID\", (e, t) => {\n  t.pattern ?? (t.pattern = _p), B.init(e, t);\n}), g3 = /* @__PURE__ */ b(\"$ZodKSUID\", (e, t) => {\n  t.pattern ?? (t.pattern = Sp), B.init(e, t);\n}), y3 = /* @__PURE__ */ b(\"$ZodISODateTime\", (e, t) => {\n  t.pattern ?? (t.pattern = jp(t)), B.init(e, t);\n}), b3 = /* @__PURE__ */ b(\"$ZodISODate\", (e, t) => {\n  t.pattern ?? (t.pattern = Lp), B.init(e, t);\n}), w3 = /* @__PURE__ */ b(\"$ZodISOTime\", (e, t) => {\n  t.pattern ?? (t.pattern = Mp(t)), B.init(e, t);\n}), F3 = /* @__PURE__ */ b(\"$ZodISODuration\", (e, t) => {\n  t.pattern ?? (t.pattern = Op), B.init(e, t);\n}), E3 = /* @__PURE__ */ b(\"$ZodIPv4\", (e, t) => {\n  t.pattern ?? (t.pattern = kp), B.init(e, t), e._zod.bag.format = \"ipv4\";\n}), v3 = /* @__PURE__ */ b(\"$ZodIPv6\", (e, t) => {\n  t.pattern ?? (t.pattern = Np), B.init(e, t), e._zod.bag.format = \"ipv6\", e._zod.check = (n) => {\n    try {\n      new URL(`http://[${n.value}]`);\n    } catch {\n      n.issues.push({\n        code: \"invalid_format\",\n        format: \"ipv6\",\n        input: n.value,\n        inst: e,\n        continue: !t.abort\n      });\n    }\n  };\n}), _3 = /* @__PURE__ */ b(\"$ZodCIDRv4\", (e, t) => {\n  t.pattern ?? (t.pattern = Ip), B.init(e, t);\n}), S3 = /* @__PURE__ */ b(\"$ZodCIDRv6\", (e, t) => {\n  t.pattern ?? (t.pattern = Pp), B.init(e, t), e._zod.check = (n) => {\n    const r = n.value.split(\"/\");\n    try {\n      if (r.length !== 2)\n        throw new Error();\n      const [i, s] = r;\n      if (!s)\n        throw new Error();\n      const o = Number(s);\n      if (`${o}` !== s)\n        throw new Error();\n      if (o < 0 || o > 128)\n        throw new Error();\n      new URL(`http://[${i}]`);\n    } catch {\n      n.issues.push({\n        code: \"invalid_format\",\n        format: \"cidrv6\",\n        input: n.value,\n        inst: e,\n        continue: !t.abort\n      });\n    }\n  };\n});\nfunction Wa(e) {\n  if (e === \"\")\n    return !0;\n  if (/\\s/.test(e) || e.length % 4 !== 0)\n    return !1;\n  try {\n    return atob(e), !0;\n  } catch {\n    return !1;\n  }\n}\nconst A3 = /* @__PURE__ */ b(\"$ZodBase64\", (e, t) => {\n  t.pattern ?? (t.pattern = zp), B.init(e, t), e._zod.bag.contentEncoding = \"base64\", e._zod.check = (n) => {\n    Wa(n.value) || n.issues.push({\n      code: \"invalid_format\",\n      format: \"base64\",\n      input: n.value,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n});\nfunction O3(e) {\n  if (!La.test(e))\n    return !1;\n  const t = e.replace(/[-_]/g, (r) => r === \"-\" ? \"+\" : \"/\"), n = t.padEnd(Math.ceil(t.length / 4) * 4, \"=\");\n  return Wa(n);\n}\nconst C3 = /* @__PURE__ */ b(\"$ZodBase64URL\", (e, t) => {\n  t.pattern ?? (t.pattern = La), B.init(e, t), e._zod.bag.contentEncoding = \"base64url\", e._zod.check = (n) => {\n    O3(n.value) || n.issues.push({\n      code: \"invalid_format\",\n      format: \"base64url\",\n      input: n.value,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), T3 = /* @__PURE__ */ b(\"$ZodE164\", (e, t) => {\n  t.pattern ?? (t.pattern = $p), B.init(e, t);\n});\nfunction R3(e, t = null) {\n  try {\n    const n = e.split(\".\");\n    if (n.length !== 3)\n      return !1;\n    const [r] = n;\n    if (!r)\n      return !1;\n    const i = JSON.parse(atob(r));\n    return !(\"typ\" in i && i?.typ !== \"JWT\" || !i.alg || t && (!(\"alg\" in i) || i.alg !== t));\n  } catch {\n    return !1;\n  }\n}\nconst x3 = /* @__PURE__ */ b(\"$ZodJWT\", (e, t) => {\n  B.init(e, t), e._zod.check = (n) => {\n    R3(n.value, t.alg) || n.issues.push({\n      code: \"invalid_format\",\n      format: \"jwt\",\n      input: n.value,\n      inst: e,\n      continue: !t.abort\n    });\n  };\n}), Ga = /* @__PURE__ */ b(\"$ZodNumber\", (e, t) => {\n  j.init(e, t), e._zod.pattern = e._zod.bag.pattern ?? qp, e._zod.parse = (n, r) => {\n    if (t.coerce)\n      try {\n        n.value = Number(n.value);\n      } catch {\n      }\n    const i = n.value;\n    if (typeof i == \"number\" && !Number.isNaN(i) && Number.isFinite(i))\n      return n;\n    const s = typeof i == \"number\" ? Number.isNaN(i) ? \"NaN\" : Number.isFinite(i) ? void 0 : \"Infinity\" : void 0;\n    return n.issues.push({\n      expected: \"number\",\n      code: \"invalid_type\",\n      input: i,\n      inst: e,\n      ...s ? { received: s } : {}\n    }), n;\n  };\n}), k3 = /* @__PURE__ */ b(\"$ZodNumberFormat\", (e, t) => {\n  Kp.init(e, t), Ga.init(e, t);\n}), N3 = /* @__PURE__ */ b(\"$ZodUnknown\", (e, t) => {\n  j.init(e, t), e._zod.parse = (n) => n;\n}), I3 = /* @__PURE__ */ b(\"$ZodNever\", (e, t) => {\n  j.init(e, t), e._zod.parse = (n, r) => (n.issues.push({\n    expected: \"never\",\n    code: \"invalid_type\",\n    input: n.value,\n    inst: e\n  }), n);\n});\nfunction Ws(e, t, n) {\n  e.issues.length && t.issues.push(...Pa(n, e.issues)), t.value[n] = e.value;\n}\nconst P3 = /* @__PURE__ */ b(\"$ZodArray\", (e, t) => {\n  j.init(e, t), e._zod.parse = (n, r) => {\n    const i = n.value;\n    if (!Array.isArray(i))\n      return n.issues.push({\n        expected: \"array\",\n        code: \"invalid_type\",\n        input: i,\n        inst: e\n      }), n;\n    n.value = Array(i.length);\n    const s = [];\n    for (let o = 0; o < i.length; o++) {\n      const u = i[o], a = t.element._zod.run({\n        value: u,\n        issues: []\n      }, r);\n      a instanceof Promise ? s.push(a.then((c) => Ws(c, n, o))) : Ws(a, n, o);\n    }\n    return s.length ? Promise.all(s).then(() => n) : n;\n  };\n});\nfunction Rn(e, t, n, r, i, s) {\n  const o = n in r;\n  if (e.issues.length) {\n    if (i && s && !o)\n      return;\n    t.issues.push(...Pa(n, e.issues));\n  }\n  if (!o && !i) {\n    e.issues.length || t.issues.push({\n      code: \"invalid_type\",\n      expected: \"nonoptional\",\n      input: void 0,\n      path: [n]\n    });\n    return;\n  }\n  e.value === void 0 ? o && (t.value[n] = void 0) : t.value[n] = e.value;\n}\nfunction Va(e) {\n  const t = Object.keys(e.shape);\n  for (const r of t)\n    if (!e.shape?.[r]?._zod?.traits?.has(\"$ZodType\"))\n      throw new Error(`Invalid element at key \"${r}\": expected a Zod schema`);\n  const n = Yd(e.shape);\n  return {\n    ...e,\n    keys: t,\n    keySet: new Set(t),\n    numKeys: t.length,\n    optionalKeys: new Set(n)\n  };\n}\nfunction Ka(e, t, n, r, i, s) {\n  const o = [], u = i.keySet, a = i.catchall._zod, c = a.def.type, l = a.optin === \"optional\", f = a.optout === \"optional\";\n  for (const d in t) {\n    if (d === \"__proto__\" || u.has(d))\n      continue;\n    if (c === \"never\") {\n      o.push(d);\n      continue;\n    }\n    const h = a.run({ value: t[d], issues: [] }, r);\n    h instanceof Promise ? e.push(h.then((p) => Rn(p, n, d, t, l, f))) : Rn(h, n, d, t, l, f);\n  }\n  return o.length && n.issues.push({\n    code: \"unrecognized_keys\",\n    keys: o,\n    input: t,\n    inst: s\n  }), e.length ? Promise.all(e).then(() => n) : n;\n}\nconst z3 = /* @__PURE__ */ b(\"$ZodObject\", (e, t) => {\n  if (j.init(e, t), !Object.getOwnPropertyDescriptor(t, \"shape\")?.get) {\n    const u = t.shape;\n    Object.defineProperty(t, \"shape\", {\n      get: () => {\n        const a = { ...u };\n        return Object.defineProperty(t, \"shape\", {\n          value: a\n        }), a;\n      }\n    });\n  }\n  const r = ki(() => Va(t));\n  x(e._zod, \"propValues\", () => {\n    const u = t.shape, a = {};\n    for (const c in u) {\n      const l = u[c]._zod;\n      if (l.values) {\n        a[c] ?? (a[c] = /* @__PURE__ */ new Set());\n        for (const f of l.values)\n          a[c].add(f);\n      }\n    }\n    return a;\n  });\n  const i = Tn, s = t.catchall;\n  let o;\n  e._zod.parse = (u, a) => {\n    o ?? (o = r.value);\n    const c = u.value;\n    if (!i(c))\n      return u.issues.push({\n        expected: \"object\",\n        code: \"invalid_type\",\n        input: c,\n        inst: e\n      }), u;\n    u.value = {};\n    const l = [], f = o.shape;\n    for (const d of o.keys) {\n      const h = f[d], p = h._zod.optin === \"optional\", m = h._zod.optout === \"optional\", D = h._zod.run({ value: c[d], issues: [] }, a);\n      D instanceof Promise ? l.push(D.then((y) => Rn(y, u, d, c, p, m))) : Rn(D, u, d, c, p, m);\n    }\n    return s ? Ka(l, c, u, a, r.value, e) : l.length ? Promise.all(l).then(() => u) : u;\n  };\n}), B3 = /* @__PURE__ */ b(\"$ZodObjectJIT\", (e, t) => {\n  z3.init(e, t);\n  const n = e._zod.parse, r = ki(() => Va(t)), i = (d) => {\n    const h = new s3([\"shape\", \"payload\", \"ctx\"]), p = r.value, m = (S) => {\n      const v = Zs(S);\n      return `shape[${v}]._zod.run({ value: input[${v}], issues: [] }, ctx)`;\n    };\n    h.write(\"const input = payload.value;\");\n    const D = /* @__PURE__ */ Object.create(null);\n    let y = 0;\n    for (const S of p.keys)\n      D[S] = `key_${y++}`;\n    h.write(\"const newResult = {};\");\n    for (const S of p.keys) {\n      const v = D[S], E = Zs(S), R = d[S], A = R?._zod?.optin === \"optional\", k = R?._zod?.optout === \"optional\";\n      h.write(`const ${v} = ${m(S)};`), A && k ? h.write(`\n        if (${v}.issues.length) {\n          if (${E} in input) {\n            payload.issues = payload.issues.concat(${v}.issues.map(iss => ({\n              ...iss,\n              path: iss.path ? [${E}, ...iss.path] : [${E}]\n            })));\n          }\n        }\n        \n        if (${v}.value === undefined) {\n          if (${E} in input) {\n            newResult[${E}] = undefined;\n          }\n        } else {\n          newResult[${E}] = ${v}.value;\n        }\n        \n      `) : A ? h.write(`\n        if (${v}.issues.length) {\n          payload.issues = payload.issues.concat(${v}.issues.map(iss => ({\n            ...iss,\n            path: iss.path ? [${E}, ...iss.path] : [${E}]\n          })));\n        }\n        \n        if (${v}.value === undefined) {\n          if (${E} in input) {\n            newResult[${E}] = undefined;\n          }\n        } else {\n          newResult[${E}] = ${v}.value;\n        }\n        \n      `) : h.write(`\n        const ${v}_present = ${E} in input;\n        if (${v}.issues.length) {\n          payload.issues = payload.issues.concat(${v}.issues.map(iss => ({\n            ...iss,\n            path: iss.path ? [${E}, ...iss.path] : [${E}]\n          })));\n        }\n        if (!${v}_present && !${v}.issues.length) {\n          payload.issues.push({\n            code: \"invalid_type\",\n            expected: \"nonoptional\",\n            input: undefined,\n            path: [${E}]\n          });\n        }\n\n        if (${v}_present) {\n          if (${v}.value === undefined) {\n            newResult[${E}] = undefined;\n          } else {\n            newResult[${E}] = ${v}.value;\n          }\n        }\n\n      `);\n    }\n    h.write(\"payload.value = newResult;\"), h.write(\"return payload;\");\n    const F = h.compile();\n    return (S, v) => F(d, S, v);\n  };\n  let s;\n  const o = Tn, u = !Cn.jitless, c = u && Hd.value, l = t.catchall;\n  let f;\n  e._zod.parse = (d, h) => {\n    f ?? (f = r.value);\n    const p = d.value;\n    return o(p) ? u && c && h?.async === !1 && h.jitless !== !0 ? (s || (s = i(t.shape)), d = s(d, h), l ? Ka([], p, d, h, f, e) : d) : n(d, h) : (d.issues.push({\n      expected: \"object\",\n      code: \"invalid_type\",\n      input: p,\n      inst: e\n    }), d);\n  };\n});\nfunction Gs(e, t, n, r) {\n  for (const s of e)\n    if (s.issues.length === 0)\n      return t.value = s.value, t;\n  const i = e.filter((s) => !et(s));\n  return i.length === 1 ? (t.value = i[0].value, i[0]) : (t.issues.push({\n    code: \"invalid_union\",\n    input: t.value,\n    inst: n,\n    errors: e.map((s) => s.issues.map((o) => qe(o, r, Ze())))\n  }), t);\n}\nconst $3 = /* @__PURE__ */ b(\"$ZodUnion\", (e, t) => {\n  j.init(e, t), x(e._zod, \"optin\", () => t.options.some((r) => r._zod.optin === \"optional\") ? \"optional\" : void 0), x(e._zod, \"optout\", () => t.options.some((r) => r._zod.optout === \"optional\") ? \"optional\" : void 0), x(e._zod, \"values\", () => {\n    if (t.options.every((r) => r._zod.values))\n      return new Set(t.options.flatMap((r) => Array.from(r._zod.values)));\n  }), x(e._zod, \"pattern\", () => {\n    if (t.options.every((r) => r._zod.pattern)) {\n      const r = t.options.map((i) => i._zod.pattern);\n      return new RegExp(`^(${r.map((i) => Ii(i.source)).join(\"|\")})$`);\n    }\n  });\n  const n = t.options.length === 1 ? t.options[0]._zod.run : null;\n  e._zod.parse = (r, i) => {\n    if (n)\n      return n(r, i);\n    let s = !1;\n    const o = [];\n    for (const u of t.options) {\n      const a = u._zod.run({\n        value: r.value,\n        issues: []\n      }, i);\n      if (a instanceof Promise)\n        o.push(a), s = !0;\n      else {\n        if (a.issues.length === 0)\n          return a;\n        o.push(a);\n      }\n    }\n    return s ? Promise.all(o).then((u) => Gs(u, r, e, i)) : Gs(o, r, e, i);\n  };\n}), L3 = /* @__PURE__ */ b(\"$ZodIntersection\", (e, t) => {\n  j.init(e, t), e._zod.parse = (n, r) => {\n    const i = n.value, s = t.left._zod.run({ value: i, issues: [] }, r), o = t.right._zod.run({ value: i, issues: [] }, r);\n    return s instanceof Promise || o instanceof Promise ? Promise.all([s, o]).then(([a, c]) => Vs(n, a, c)) : Vs(n, s, o);\n  };\n});\nfunction Vr(e, t) {\n  if (e === t)\n    return { valid: !0, data: e };\n  if (e instanceof Date && t instanceof Date && +e == +t)\n    return { valid: !0, data: e };\n  if (xt(e) && xt(t)) {\n    const n = Object.keys(t), r = Object.keys(e).filter((s) => n.indexOf(s) !== -1), i = { ...e, ...t };\n    for (const s of r) {\n      const o = Vr(e[s], t[s]);\n      if (!o.valid)\n        return {\n          valid: !1,\n          mergeErrorPath: [s, ...o.mergeErrorPath]\n        };\n      i[s] = o.data;\n    }\n    return { valid: !0, data: i };\n  }\n  if (Array.isArray(e) && Array.isArray(t)) {\n    if (e.length !== t.length)\n      return { valid: !1, mergeErrorPath: [] };\n    const n = [];\n    for (let r = 0; r < e.length; r++) {\n      const i = e[r], s = t[r], o = Vr(i, s);\n      if (!o.valid)\n        return {\n          valid: !1,\n          mergeErrorPath: [r, ...o.mergeErrorPath]\n        };\n      n.push(o.data);\n    }\n    return { valid: !0, data: n };\n  }\n  return { valid: !1, mergeErrorPath: [] };\n}\nfunction Vs(e, t, n) {\n  const r = /* @__PURE__ */ new Map();\n  let i;\n  for (const u of t.issues)\n    if (u.code === \"unrecognized_keys\") {\n      i ?? (i = u);\n      for (const a of u.keys)\n        r.has(a) || r.set(a, {}), r.get(a).l = !0;\n    } else\n      e.issues.push(u);\n  for (const u of n.issues)\n    if (u.code === \"unrecognized_keys\")\n      for (const a of u.keys)\n        r.has(a) || r.set(a, {}), r.get(a).r = !0;\n    else\n      e.issues.push(u);\n  const s = [...r].filter(([, u]) => u.l && u.r).map(([u]) => u);\n  if (s.length && i && e.issues.push({ ...i, keys: s }), et(e))\n    return e;\n  const o = Vr(t.value, n.value);\n  if (!o.valid)\n    throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);\n  return e.value = o.data, e;\n}\nconst M3 = /* @__PURE__ */ b(\"$ZodEnum\", (e, t) => {\n  j.init(e, t);\n  const n = ka(t.entries), r = new Set(n);\n  e._zod.values = r, e._zod.pattern = new RegExp(`^(${n.filter((i) => Xd.has(typeof i)).map((i) => typeof i == \"string\" ? Kn(i) : i.toString()).join(\"|\")})$`), e._zod.parse = (i, s) => {\n    const o = i.value;\n    return r.has(o) || i.issues.push({\n      code: \"invalid_value\",\n      values: n,\n      input: o,\n      inst: e\n    }), i;\n  };\n}), j3 = /* @__PURE__ */ b(\"$ZodTransform\", (e, t) => {\n  j.init(e, t), e._zod.optin = \"optional\", e._zod.parse = (n, r) => {\n    if (r.direction === \"backward\")\n      throw new xa(e.constructor.name);\n    const i = t.transform(n.value, n);\n    if (r.async)\n      return (i instanceof Promise ? i : Promise.resolve(i)).then((o) => (n.value = o, n.fallback = !0, n));\n    if (i instanceof Promise)\n      throw new rt();\n    return n.value = i, n.fallback = !0, n;\n  };\n});\nfunction Ks(e, t) {\n  return t === void 0 && (e.issues.length || e.fallback) ? { issues: [], value: void 0 } : e;\n}\nconst Qa = /* @__PURE__ */ b(\"$ZodOptional\", (e, t) => {\n  j.init(e, t), e._zod.optin = \"optional\", e._zod.optout = \"optional\", x(e._zod, \"values\", () => t.innerType._zod.values ? /* @__PURE__ */ new Set([...t.innerType._zod.values, void 0]) : void 0), x(e._zod, \"pattern\", () => {\n    const n = t.innerType._zod.pattern;\n    return n ? new RegExp(`^(${Ii(n.source)})?$`) : void 0;\n  }), e._zod.parse = (n, r) => {\n    if (t.innerType._zod.optin === \"optional\") {\n      const i = n.value, s = t.innerType._zod.run(n, r);\n      return s instanceof Promise ? s.then((o) => Ks(o, i)) : Ks(s, i);\n    }\n    return n.value === void 0 ? n : t.innerType._zod.run(n, r);\n  };\n}), U3 = /* @__PURE__ */ b(\"$ZodExactOptional\", (e, t) => {\n  Qa.init(e, t), x(e._zod, \"values\", () => t.innerType._zod.values), x(e._zod, \"pattern\", () => t.innerType._zod.pattern), e._zod.parse = (n, r) => t.innerType._zod.run(n, r);\n}), Z3 = /* @__PURE__ */ b(\"$ZodNullable\", (e, t) => {\n  j.init(e, t), x(e._zod, \"optin\", () => t.innerType._zod.optin), x(e._zod, \"optout\", () => t.innerType._zod.optout), x(e._zod, \"pattern\", () => {\n    const n = t.innerType._zod.pattern;\n    return n ? new RegExp(`^(${Ii(n.source)}|null)$`) : void 0;\n  }), x(e._zod, \"values\", () => t.innerType._zod.values ? /* @__PURE__ */ new Set([...t.innerType._zod.values, null]) : void 0), e._zod.parse = (n, r) => n.value === null ? n : t.innerType._zod.run(n, r);\n}), q3 = /* @__PURE__ */ b(\"$ZodDefault\", (e, t) => {\n  j.init(e, t), e._zod.optin = \"optional\", x(e._zod, \"values\", () => t.innerType._zod.values), e._zod.parse = (n, r) => {\n    if (r.direction === \"backward\")\n      return t.innerType._zod.run(n, r);\n    if (n.value === void 0)\n      return n.value = t.defaultValue, n;\n    const i = t.innerType._zod.run(n, r);\n    return i instanceof Promise ? i.then((s) => Qs(s, t)) : Qs(i, t);\n  };\n});\nfunction Qs(e, t) {\n  return e.value === void 0 && (e.value = t.defaultValue), e;\n}\nconst W3 = /* @__PURE__ */ b(\"$ZodPrefault\", (e, t) => {\n  j.init(e, t), e._zod.optin = \"optional\", x(e._zod, \"values\", () => t.innerType._zod.values), e._zod.parse = (n, r) => (r.direction === \"backward\" || n.value === void 0 && (n.value = t.defaultValue), t.innerType._zod.run(n, r));\n}), G3 = /* @__PURE__ */ b(\"$ZodNonOptional\", (e, t) => {\n  j.init(e, t), x(e._zod, \"values\", () => {\n    const n = t.innerType._zod.values;\n    return n ? new Set([...n].filter((r) => r !== void 0)) : void 0;\n  }), e._zod.parse = (n, r) => {\n    const i = t.innerType._zod.run(n, r);\n    return i instanceof Promise ? i.then((s) => Js(s, e)) : Js(i, e);\n  };\n});\nfunction Js(e, t) {\n  return !e.issues.length && e.value === void 0 && e.issues.push({\n    code: \"invalid_type\",\n    expected: \"nonoptional\",\n    input: e.value,\n    inst: t\n  }), e;\n}\nconst V3 = /* @__PURE__ */ b(\"$ZodCatch\", (e, t) => {\n  j.init(e, t), e._zod.optin = \"optional\", x(e._zod, \"optout\", () => t.innerType._zod.optout), x(e._zod, \"values\", () => t.innerType._zod.values), e._zod.parse = (n, r) => {\n    if (r.direction === \"backward\")\n      return t.innerType._zod.run(n, r);\n    const i = t.innerType._zod.run(n, r);\n    return i instanceof Promise ? i.then((s) => (n.value = s.value, s.issues.length && (n.value = t.catchValue({\n      ...n,\n      error: {\n        issues: s.issues.map((o) => qe(o, r, Ze()))\n      },\n      input: n.value\n    }), n.issues = [], n.fallback = !0), n)) : (n.value = i.value, i.issues.length && (n.value = t.catchValue({\n      ...n,\n      error: {\n        issues: i.issues.map((s) => qe(s, r, Ze()))\n      },\n      input: n.value\n    }), n.issues = [], n.fallback = !0), n);\n  };\n}), K3 = /* @__PURE__ */ b(\"$ZodPipe\", (e, t) => {\n  j.init(e, t), x(e._zod, \"values\", () => t.in._zod.values), x(e._zod, \"optin\", () => t.in._zod.optin), x(e._zod, \"optout\", () => t.out._zod.optout), x(e._zod, \"propValues\", () => t.in._zod.propValues), e._zod.parse = (n, r) => {\n    if (r.direction === \"backward\") {\n      const s = t.out._zod.run(n, r);\n      return s instanceof Promise ? s.then((o) => Qt(o, t.in, r)) : Qt(s, t.in, r);\n    }\n    const i = t.in._zod.run(n, r);\n    return i instanceof Promise ? i.then((s) => Qt(s, t.out, r)) : Qt(i, t.out, r);\n  };\n});\nfunction Qt(e, t, n) {\n  return e.issues.length ? (e.aborted = !0, e) : t._zod.run({ value: e.value, issues: e.issues, fallback: e.fallback }, n);\n}\nconst Q3 = /* @__PURE__ */ b(\"$ZodReadonly\", (e, t) => {\n  j.init(e, t), x(e._zod, \"propValues\", () => t.innerType._zod.propValues), x(e._zod, \"values\", () => t.innerType._zod.values), x(e._zod, \"optin\", () => t.innerType?._zod?.optin), x(e._zod, \"optout\", () => t.innerType?._zod?.optout), e._zod.parse = (n, r) => {\n    if (r.direction === \"backward\")\n      return t.innerType._zod.run(n, r);\n    const i = t.innerType._zod.run(n, r);\n    return i instanceof Promise ? i.then(Hs) : Hs(i);\n  };\n});\nfunction Hs(e) {\n  return e.value = Object.freeze(e.value), e;\n}\nconst J3 = /* @__PURE__ */ b(\"$ZodLazy\", (e, t) => {\n  j.init(e, t), x(e._zod, \"innerType\", () => {\n    const n = t;\n    return n._cachedInner || (n._cachedInner = t.getter()), n._cachedInner;\n  }), x(e._zod, \"pattern\", () => e._zod.innerType?._zod?.pattern), x(e._zod, \"propValues\", () => e._zod.innerType?._zod?.propValues), x(e._zod, \"optin\", () => e._zod.innerType?._zod?.optin ?? void 0), x(e._zod, \"optout\", () => e._zod.innerType?._zod?.optout ?? void 0), e._zod.parse = (n, r) => e._zod.innerType._zod.run(n, r);\n}), H3 = /* @__PURE__ */ b(\"$ZodCustom\", (e, t) => {\n  te.init(e, t), j.init(e, t), e._zod.parse = (n, r) => n, e._zod.check = (n) => {\n    const r = n.value, i = t.fn(r);\n    if (i instanceof Promise)\n      return i.then((s) => Xs(s, n, r, e));\n    Xs(i, n, r, e);\n  };\n});\nfunction Xs(e, t, n, r) {\n  if (!e) {\n    const i = {\n      code: \"custom\",\n      input: n,\n      inst: r,\n      // incorporates params.error into issue reporting\n      path: [...r._zod.def.path ?? []],\n      // incorporates params.error into issue reporting\n      continue: !r._zod.def.abort\n      // params: inst._zod.def.params,\n    };\n    r._zod.def.params && (i.params = r._zod.def.params), t.issues.push(kt(i));\n  }\n}\nvar Ys;\nclass X3 {\n  constructor() {\n    this._map = /* @__PURE__ */ new WeakMap(), this._idmap = /* @__PURE__ */ new Map();\n  }\n  add(t, ...n) {\n    const r = n[0];\n    return this._map.set(t, r), r && typeof r == \"object\" && \"id\" in r && this._idmap.set(r.id, t), this;\n  }\n  clear() {\n    return this._map = /* @__PURE__ */ new WeakMap(), this._idmap = /* @__PURE__ */ new Map(), this;\n  }\n  remove(t) {\n    const n = this._map.get(t);\n    return n && typeof n == \"object\" && \"id\" in n && this._idmap.delete(n.id), this._map.delete(t), this;\n  }\n  get(t) {\n    const n = t._zod.parent;\n    if (n) {\n      const r = { ...this.get(n) ?? {} };\n      delete r.id;\n      const i = { ...r, ...this._map.get(t) };\n      return Object.keys(i).length ? i : void 0;\n    }\n    return this._map.get(t);\n  }\n  has(t) {\n    return this._map.has(t);\n  }\n}\nfunction Y3() {\n  return new X3();\n}\n(Ys = globalThis).__zod_globalRegistry ?? (Ys.__zod_globalRegistry = Y3());\nconst St = globalThis.__zod_globalRegistry;\n// @__NO_SIDE_EFFECTS__\nfunction em(e, t) {\n  return new e({\n    type: \"string\",\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction tm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"email\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction eo(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"guid\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction nm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"uuid\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction rm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"uuid\",\n    check: \"string_format\",\n    abort: !1,\n    version: \"v4\",\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction im(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"uuid\",\n    check: \"string_format\",\n    abort: !1,\n    version: \"v6\",\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction sm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"uuid\",\n    check: \"string_format\",\n    abort: !1,\n    version: \"v7\",\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction om(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"url\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction um(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"emoji\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction am(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"nanoid\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction cm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"cuid\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction lm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"cuid2\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction hm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"ulid\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction fm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"xid\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction dm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"ksuid\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction pm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"ipv4\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction mm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"ipv6\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Dm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"cidrv4\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction gm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"cidrv6\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction ym(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"base64\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction bm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"base64url\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction wm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"e164\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Fm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"jwt\",\n    check: \"string_format\",\n    abort: !1,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Em(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"datetime\",\n    check: \"string_format\",\n    offset: !1,\n    local: !1,\n    precision: null,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction vm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"date\",\n    check: \"string_format\",\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _m(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"time\",\n    check: \"string_format\",\n    precision: null,\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Sm(e, t) {\n  return new e({\n    type: \"string\",\n    format: \"duration\",\n    check: \"string_format\",\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Am(e, t) {\n  return new e({\n    type: \"number\",\n    checks: [],\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Om(e, t) {\n  return new e({\n    type: \"number\",\n    check: \"number_format\",\n    abort: !1,\n    format: \"safeint\",\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Cm(e) {\n  return new e({\n    type: \"unknown\"\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Tm(e, t) {\n  return new e({\n    type: \"never\",\n    ...O(t)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction to(e, t) {\n  return new Za({\n    check: \"less_than\",\n    ...O(t),\n    value: e,\n    inclusive: !1\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction pr(e, t) {\n  return new Za({\n    check: \"less_than\",\n    ...O(t),\n    value: e,\n    inclusive: !0\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction no(e, t) {\n  return new qa({\n    check: \"greater_than\",\n    ...O(t),\n    value: e,\n    inclusive: !1\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction mr(e, t) {\n  return new qa({\n    check: \"greater_than\",\n    ...O(t),\n    value: e,\n    inclusive: !0\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction ro(e, t) {\n  return new Vp({\n    check: \"multiple_of\",\n    ...O(t),\n    value: e\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Ja(e, t) {\n  return new Qp({\n    check: \"max_length\",\n    ...O(t),\n    maximum: e\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction xn(e, t) {\n  return new Jp({\n    check: \"min_length\",\n    ...O(t),\n    minimum: e\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Ha(e, t) {\n  return new Hp({\n    check: \"length_equals\",\n    ...O(t),\n    length: e\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Rm(e, t) {\n  return new Xp({\n    check: \"string_format\",\n    format: \"regex\",\n    ...O(t),\n    pattern: e\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction xm(e) {\n  return new Yp({\n    check: \"string_format\",\n    format: \"lowercase\",\n    ...O(e)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction km(e) {\n  return new e3({\n    check: \"string_format\",\n    format: \"uppercase\",\n    ...O(e)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Nm(e, t) {\n  return new t3({\n    check: \"string_format\",\n    format: \"includes\",\n    ...O(t),\n    includes: e\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Im(e, t) {\n  return new n3({\n    check: \"string_format\",\n    format: \"starts_with\",\n    ...O(t),\n    prefix: e\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Pm(e, t) {\n  return new r3({\n    check: \"string_format\",\n    format: \"ends_with\",\n    ...O(t),\n    suffix: e\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction mt(e) {\n  return new i3({\n    check: \"overwrite\",\n    tx: e\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction zm(e) {\n  return /* @__PURE__ */ mt((t) => t.normalize(e));\n}\n// @__NO_SIDE_EFFECTS__\nfunction Bm() {\n  return /* @__PURE__ */ mt((e) => e.trim());\n}\n// @__NO_SIDE_EFFECTS__\nfunction $m() {\n  return /* @__PURE__ */ mt((e) => e.toLowerCase());\n}\n// @__NO_SIDE_EFFECTS__\nfunction Lm() {\n  return /* @__PURE__ */ mt((e) => e.toUpperCase());\n}\n// @__NO_SIDE_EFFECTS__\nfunction Mm() {\n  return /* @__PURE__ */ mt((e) => Jd(e));\n}\n// @__NO_SIDE_EFFECTS__\nfunction jm(e, t, n) {\n  return new e({\n    type: \"array\",\n    element: t,\n    // get element() {\n    //   return element;\n    // },\n    ...O(n)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Um(e, t, n) {\n  return new e({\n    type: \"custom\",\n    check: \"custom\",\n    fn: t,\n    ...O(n)\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction Zm(e, t) {\n  const n = /* @__PURE__ */ qm((r) => (r.addIssue = (i) => {\n    if (typeof i == \"string\")\n      r.issues.push(kt(i, r.value, n._zod.def));\n    else {\n      const s = i;\n      s.fatal && (s.continue = !1), s.code ?? (s.code = \"custom\"), s.input ?? (s.input = r.value), s.inst ?? (s.inst = n), s.continue ?? (s.continue = !n._zod.def.abort), r.issues.push(kt(s));\n    }\n  }, e(r.value, r)), t);\n  return n;\n}\n// @__NO_SIDE_EFFECTS__\nfunction qm(e, t) {\n  const n = new te({\n    check: \"custom\",\n    ...O(t)\n  });\n  return n._zod.check = e, n;\n}\nfunction kn(e) {\n  let t = e?.target ?? \"draft-2020-12\";\n  return t === \"draft-4\" && (t = \"draft-04\"), t === \"draft-7\" && (t = \"draft-07\"), {\n    processors: e.processors ?? {},\n    metadataRegistry: e?.metadata ?? St,\n    target: t,\n    unrepresentable: e?.unrepresentable ?? \"throw\",\n    override: e?.override ?? (() => {\n    }),\n    io: e?.io ?? \"output\",\n    counter: 0,\n    seen: /* @__PURE__ */ new Map(),\n    cycles: e?.cycles ?? \"ref\",\n    reused: e?.reused ?? \"inline\",\n    external: e?.external ?? void 0\n  };\n}\nfunction I(e, t, n = { path: [], schemaPath: [] }) {\n  var r;\n  const i = e._zod.def, s = t.seen.get(e);\n  if (s)\n    return s.count++, n.schemaPath.includes(e) && (s.cycle = n.path), s.schema;\n  const o = { schema: {}, count: 1, cycle: void 0, path: n.path };\n  t.seen.set(e, o);\n  const u = e._zod.toJSONSchema?.();\n  if (u)\n    o.schema = u;\n  else {\n    const l = {\n      ...n,\n      schemaPath: [...n.schemaPath, e],\n      path: n.path\n    };\n    if (e._zod.processJSONSchema)\n      e._zod.processJSONSchema(t, o.schema, l);\n    else {\n      const d = o.schema, h = t.processors[i.type];\n      if (!h)\n        throw new Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);\n      h(e, t, d, l);\n    }\n    const f = e._zod.parent;\n    f && (o.ref || (o.ref = f), I(f, t, l), t.seen.get(f).isParent = !0);\n  }\n  const a = t.metadataRegistry.get(e);\n  return a && Object.assign(o.schema, a), t.io === \"input\" && H(e) && (delete o.schema.examples, delete o.schema.default), t.io === \"input\" && \"_prefault\" in o.schema && ((r = o.schema).default ?? (r.default = o.schema._prefault)), delete o.schema._prefault, t.seen.get(e).schema;\n}\nfunction Nn(e, t) {\n  const n = e.seen.get(t);\n  if (!n)\n    throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n  const r = /* @__PURE__ */ new Map();\n  for (const o of e.seen.entries()) {\n    const u = e.metadataRegistry.get(o[0])?.id;\n    if (u) {\n      const a = r.get(u);\n      if (a && a !== o[0])\n        throw new Error(`Duplicate schema id \"${u}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n      r.set(u, o[0]);\n    }\n  }\n  const i = (o) => {\n    const u = e.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n    if (e.external) {\n      const f = e.external.registry.get(o[0])?.id, d = e.external.uri ?? ((p) => p);\n      if (f)\n        return { ref: d(f) };\n      const h = o[1].defId ?? o[1].schema.id ?? `schema${e.counter++}`;\n      return o[1].defId = h, { defId: h, ref: `${d(\"__shared\")}#/${u}/${h}` };\n    }\n    if (o[1] === n)\n      return { ref: \"#\" };\n    const c = `#/${u}/`, l = o[1].schema.id ?? `__schema${e.counter++}`;\n    return { defId: l, ref: c + l };\n  }, s = (o) => {\n    if (o[1].schema.$ref)\n      return;\n    const u = o[1], { ref: a, defId: c } = i(o);\n    u.def = { ...u.schema }, c && (u.defId = c);\n    const l = u.schema;\n    for (const f in l)\n      delete l[f];\n    l.$ref = a;\n  };\n  if (e.cycles === \"throw\")\n    for (const o of e.seen.entries()) {\n      const u = o[1];\n      if (u.cycle)\n        throw new Error(`Cycle detected: #/${u.cycle?.join(\"/\")}/<root>\n\nSet the \\`cycles\\` parameter to \\`\"ref\"\\` to resolve cyclical schemas with defs.`);\n    }\n  for (const o of e.seen.entries()) {\n    const u = o[1];\n    if (t === o[0]) {\n      s(o);\n      continue;\n    }\n    if (e.external) {\n      const c = e.external.registry.get(o[0])?.id;\n      if (t !== o[0] && c) {\n        s(o);\n        continue;\n      }\n    }\n    if (e.metadataRegistry.get(o[0])?.id) {\n      s(o);\n      continue;\n    }\n    if (u.cycle) {\n      s(o);\n      continue;\n    }\n    if (u.count > 1 && e.reused === \"ref\") {\n      s(o);\n      continue;\n    }\n  }\n}\nfunction In(e, t) {\n  const n = e.seen.get(t);\n  if (!n)\n    throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n  const r = (u) => {\n    const a = e.seen.get(u);\n    if (a.ref === null)\n      return;\n    const c = a.def ?? a.schema, l = { ...c }, f = a.ref;\n    if (a.ref = null, f) {\n      r(f);\n      const h = e.seen.get(f), p = h.schema;\n      if (p.$ref && (e.target === \"draft-07\" || e.target === \"draft-04\" || e.target === \"openapi-3.0\") ? (c.allOf = c.allOf ?? [], c.allOf.push(p)) : Object.assign(c, p), Object.assign(c, l), u._zod.parent === f)\n        for (const D in c)\n          D === \"$ref\" || D === \"allOf\" || D in l || delete c[D];\n      if (p.$ref && h.def)\n        for (const D in c)\n          D === \"$ref\" || D === \"allOf\" || D in h.def && JSON.stringify(c[D]) === JSON.stringify(h.def[D]) && delete c[D];\n    }\n    const d = u._zod.parent;\n    if (d && d !== f) {\n      r(d);\n      const h = e.seen.get(d);\n      if (h?.schema.$ref && (c.$ref = h.schema.$ref, h.def))\n        for (const p in c)\n          p === \"$ref\" || p === \"allOf\" || p in h.def && JSON.stringify(c[p]) === JSON.stringify(h.def[p]) && delete c[p];\n    }\n    e.override({\n      zodSchema: u,\n      jsonSchema: c,\n      path: a.path ?? []\n    });\n  };\n  for (const u of [...e.seen.entries()].reverse())\n    r(u[0]);\n  const i = {};\n  if (e.target === \"draft-2020-12\" ? i.$schema = \"https://json-schema.org/draft/2020-12/schema\" : e.target === \"draft-07\" ? i.$schema = \"http://json-schema.org/draft-07/schema#\" : e.target === \"draft-04\" ? i.$schema = \"http://json-schema.org/draft-04/schema#\" : e.target, e.external?.uri) {\n    const u = e.external.registry.get(t)?.id;\n    if (!u)\n      throw new Error(\"Schema is missing an `id` property\");\n    i.$id = e.external.uri(u);\n  }\n  Object.assign(i, n.def ?? n.schema);\n  const s = e.metadataRegistry.get(t)?.id;\n  s !== void 0 && i.id === s && delete i.id;\n  const o = e.external?.defs ?? {};\n  for (const u of e.seen.entries()) {\n    const a = u[1];\n    a.def && a.defId && (a.def.id === a.defId && delete a.def.id, o[a.defId] = a.def);\n  }\n  e.external || Object.keys(o).length > 0 && (e.target === \"draft-2020-12\" ? i.$defs = o : i.definitions = o);\n  try {\n    const u = JSON.parse(JSON.stringify(i));\n    return Object.defineProperty(u, \"~standard\", {\n      value: {\n        ...t[\"~standard\"],\n        jsonSchema: {\n          input: Pn(t, \"input\", e.processors),\n          output: Pn(t, \"output\", e.processors)\n        }\n      },\n      enumerable: !1,\n      writable: !1\n    }), u;\n  } catch {\n    throw new Error(\"Error converting schema to JSON.\");\n  }\n}\nfunction H(e, t) {\n  const n = t ?? { seen: /* @__PURE__ */ new Set() };\n  if (n.seen.has(e))\n    return !1;\n  n.seen.add(e);\n  const r = e._zod.def;\n  if (r.type === \"transform\")\n    return !0;\n  if (r.type === \"array\")\n    return H(r.element, n);\n  if (r.type === \"set\")\n    return H(r.valueType, n);\n  if (r.type === \"lazy\")\n    return H(r.getter(), n);\n  if (r.type === \"promise\" || r.type === \"optional\" || r.type === \"nonoptional\" || r.type === \"nullable\" || r.type === \"readonly\" || r.type === \"default\" || r.type === \"prefault\")\n    return H(r.innerType, n);\n  if (r.type === \"intersection\")\n    return H(r.left, n) || H(r.right, n);\n  if (r.type === \"record\" || r.type === \"map\")\n    return H(r.keyType, n) || H(r.valueType, n);\n  if (r.type === \"pipe\")\n    return e._zod.traits.has(\"$ZodCodec\") ? !0 : H(r.in, n) || H(r.out, n);\n  if (r.type === \"object\") {\n    for (const i in r.shape)\n      if (H(r.shape[i], n))\n        return !0;\n    return !1;\n  }\n  if (r.type === \"union\") {\n    for (const i of r.options)\n      if (H(i, n))\n        return !0;\n    return !1;\n  }\n  if (r.type === \"tuple\") {\n    for (const i of r.items)\n      if (H(i, n))\n        return !0;\n    return !!(r.rest && H(r.rest, n));\n  }\n  return !1;\n}\nconst Wm = (e, t = {}) => (n) => {\n  const r = kn({ ...n, processors: t });\n  return I(e, r), Nn(r, e), In(r, e);\n}, Pn = (e, t, n = {}) => (r) => {\n  const { libraryOptions: i, target: s } = r ?? {}, o = kn({ ...i ?? {}, target: s, io: t, processors: n });\n  return I(e, o), Nn(o, e), In(o, e);\n}, Gm = {\n  guid: \"uuid\",\n  url: \"uri\",\n  datetime: \"date-time\",\n  json_string: \"json-string\",\n  regex: \"\"\n  // do not set\n}, Xa = (e, t, n, r) => {\n  const i = n;\n  i.type = \"string\";\n  const { minimum: s, maximum: o, format: u, patterns: a, contentEncoding: c } = e._zod.bag;\n  if (typeof s == \"number\" && (i.minLength = s), typeof o == \"number\" && (i.maxLength = o), u && (i.format = Gm[u] ?? u, i.format === \"\" && delete i.format, u === \"time\" && delete i.format), c && (i.contentEncoding = c), a && a.size > 0) {\n    const l = [...a];\n    l.length === 1 ? i.pattern = l[0].source : l.length > 1 && (i.allOf = [\n      ...l.map((f) => ({\n        ...t.target === \"draft-07\" || t.target === \"draft-04\" || t.target === \"openapi-3.0\" ? { type: \"string\" } : {},\n        pattern: f.source\n      }))\n    ]);\n  }\n}, Ya = (e, t, n, r) => {\n  const i = n, { minimum: s, maximum: o, format: u, multipleOf: a, exclusiveMaximum: c, exclusiveMinimum: l } = e._zod.bag;\n  typeof u == \"string\" && u.includes(\"int\") ? i.type = \"integer\" : i.type = \"number\";\n  const f = typeof l == \"number\" && l >= (s ?? Number.NEGATIVE_INFINITY), d = typeof c == \"number\" && c <= (o ?? Number.POSITIVE_INFINITY), h = t.target === \"draft-04\" || t.target === \"openapi-3.0\";\n  f ? h ? (i.minimum = l, i.exclusiveMinimum = !0) : i.exclusiveMinimum = l : typeof s == \"number\" && (i.minimum = s), d ? h ? (i.maximum = c, i.exclusiveMaximum = !0) : i.exclusiveMaximum = c : typeof o == \"number\" && (i.maximum = o), typeof a == \"number\" && (i.multipleOf = a);\n}, Vm = (e, t, n, r) => {\n  n.type = \"boolean\";\n}, Km = (e, t, n, r) => {\n  if (t.unrepresentable === \"throw\")\n    throw new Error(\"BigInt cannot be represented in JSON Schema\");\n}, Qm = (e, t, n, r) => {\n  if (t.unrepresentable === \"throw\")\n    throw new Error(\"Symbols cannot be represented in JSON Schema\");\n}, Jm = (e, t, n, r) => {\n  t.target === \"openapi-3.0\" ? (n.type = \"string\", n.nullable = !0, n.enum = [null]) : n.type = \"null\";\n}, Hm = (e, t, n, r) => {\n  if (t.unrepresentable === \"throw\")\n    throw new Error(\"Undefined cannot be represented in JSON Schema\");\n}, Xm = (e, t, n, r) => {\n  if (t.unrepresentable === \"throw\")\n    throw new Error(\"Void cannot be represented in JSON Schema\");\n}, ec = (e, t, n, r) => {\n  n.not = {};\n}, Ym = (e, t, n, r) => {\n}, tc = (e, t, n, r) => {\n}, eD = (e, t, n, r) => {\n  if (t.unrepresentable === \"throw\")\n    throw new Error(\"Date cannot be represented in JSON Schema\");\n}, nc = (e, t, n, r) => {\n  const i = e._zod.def, s = ka(i.entries);\n  s.every((o) => typeof o == \"number\") && (n.type = \"number\"), s.every((o) => typeof o == \"string\") && (n.type = \"string\"), n.enum = s;\n}, tD = (e, t, n, r) => {\n  const i = e._zod.def, s = [];\n  for (const o of i.values)\n    if (o === void 0) {\n      if (t.unrepresentable === \"throw\")\n        throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n    } else if (typeof o == \"bigint\") {\n      if (t.unrepresentable === \"throw\")\n        throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n      s.push(Number(o));\n    } else\n      s.push(o);\n  if (s.length !== 0)\n    if (s.length === 1) {\n      const o = s[0];\n      n.type = o === null ? \"null\" : typeof o, t.target === \"draft-04\" || t.target === \"openapi-3.0\" ? n.enum = [o] : n.const = o;\n    } else\n      s.every((o) => typeof o == \"number\") && (n.type = \"number\"), s.every((o) => typeof o == \"string\") && (n.type = \"string\"), s.every((o) => typeof o == \"boolean\") && (n.type = \"boolean\"), s.every((o) => o === null) && (n.type = \"null\"), n.enum = s;\n}, nD = (e, t, n, r) => {\n  if (t.unrepresentable === \"throw\")\n    throw new Error(\"NaN cannot be represented in JSON Schema\");\n}, rD = (e, t, n, r) => {\n  const i = n, s = e._zod.pattern;\n  if (!s)\n    throw new Error(\"Pattern not found in template literal\");\n  i.type = \"string\", i.pattern = s.source;\n}, iD = (e, t, n, r) => {\n  const i = n, s = {\n    type: \"string\",\n    format: \"binary\",\n    contentEncoding: \"binary\"\n  }, { minimum: o, maximum: u, mime: a } = e._zod.bag;\n  o !== void 0 && (s.minLength = o), u !== void 0 && (s.maxLength = u), a ? a.length === 1 ? (s.contentMediaType = a[0], Object.assign(i, s)) : (Object.assign(i, s), i.anyOf = a.map((c) => ({ contentMediaType: c }))) : Object.assign(i, s);\n}, sD = (e, t, n, r) => {\n  n.type = \"boolean\";\n}, rc = (e, t, n, r) => {\n  if (t.unrepresentable === \"throw\")\n    throw new Error(\"Custom types cannot be represented in JSON Schema\");\n}, oD = (e, t, n, r) => {\n  if (t.unrepresentable === \"throw\")\n    throw new Error(\"Function types cannot be represented in JSON Schema\");\n}, ic = (e, t, n, r) => {\n  if (t.unrepresentable === \"throw\")\n    throw new Error(\"Transforms cannot be represented in JSON Schema\");\n}, uD = (e, t, n, r) => {\n  if (t.unrepresentable === \"throw\")\n    throw new Error(\"Map cannot be represented in JSON Schema\");\n}, aD = (e, t, n, r) => {\n  if (t.unrepresentable === \"throw\")\n    throw new Error(\"Set cannot be represented in JSON Schema\");\n}, sc = (e, t, n, r) => {\n  const i = n, s = e._zod.def, { minimum: o, maximum: u } = e._zod.bag;\n  typeof o == \"number\" && (i.minItems = o), typeof u == \"number\" && (i.maxItems = u), i.type = \"array\", i.items = I(s.element, t, {\n    ...r,\n    path: [...r.path, \"items\"]\n  });\n}, oc = (e, t, n, r) => {\n  const i = n, s = e._zod.def;\n  i.type = \"object\", i.properties = {};\n  const o = s.shape;\n  for (const c in o)\n    i.properties[c] = I(o[c], t, {\n      ...r,\n      path: [...r.path, \"properties\", c]\n    });\n  const u = new Set(Object.keys(o)), a = new Set([...u].filter((c) => {\n    const l = s.shape[c]._zod;\n    return t.io === \"input\" ? l.optin === void 0 : l.optout === void 0;\n  }));\n  a.size > 0 && (i.required = Array.from(a)), s.catchall?._zod.def.type === \"never\" ? i.additionalProperties = !1 : s.catchall ? s.catchall && (i.additionalProperties = I(s.catchall, t, {\n    ...r,\n    path: [...r.path, \"additionalProperties\"]\n  })) : t.io === \"output\" && (i.additionalProperties = !1);\n}, uc = (e, t, n, r) => {\n  const i = e._zod.def, s = i.inclusive === !1, o = i.options.map((u, a) => I(u, t, {\n    ...r,\n    path: [...r.path, s ? \"oneOf\" : \"anyOf\", a]\n  }));\n  s ? n.oneOf = o : n.anyOf = o;\n}, ac = (e, t, n, r) => {\n  const i = e._zod.def, s = I(i.left, t, {\n    ...r,\n    path: [...r.path, \"allOf\", 0]\n  }), o = I(i.right, t, {\n    ...r,\n    path: [...r.path, \"allOf\", 1]\n  }), u = (c) => \"allOf\" in c && Object.keys(c).length === 1, a = [\n    ...u(s) ? s.allOf : [s],\n    ...u(o) ? o.allOf : [o]\n  ];\n  n.allOf = a;\n}, cD = (e, t, n, r) => {\n  const i = n, s = e._zod.def;\n  i.type = \"array\";\n  const o = t.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\", u = t.target === \"draft-2020-12\" || t.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\", a = s.items.map((d, h) => I(d, t, {\n    ...r,\n    path: [...r.path, o, h]\n  })), c = s.rest ? I(s.rest, t, {\n    ...r,\n    path: [...r.path, u, ...t.target === \"openapi-3.0\" ? [s.items.length] : []]\n  }) : null;\n  t.target === \"draft-2020-12\" ? (i.prefixItems = a, c && (i.items = c)) : t.target === \"openapi-3.0\" ? (i.items = {\n    anyOf: a\n  }, c && i.items.anyOf.push(c), i.minItems = a.length, c || (i.maxItems = a.length)) : (i.items = a, c && (i.additionalItems = c));\n  const { minimum: l, maximum: f } = e._zod.bag;\n  typeof l == \"number\" && (i.minItems = l), typeof f == \"number\" && (i.maxItems = f);\n}, lD = (e, t, n, r) => {\n  const i = n, s = e._zod.def;\n  i.type = \"object\";\n  const o = s.keyType, a = o._zod.bag?.patterns;\n  if (s.mode === \"loose\" && a && a.size > 0) {\n    const l = I(s.valueType, t, {\n      ...r,\n      path: [...r.path, \"patternProperties\", \"*\"]\n    });\n    i.patternProperties = {};\n    for (const f of a)\n      i.patternProperties[f.source] = l;\n  } else\n    (t.target === \"draft-07\" || t.target === \"draft-2020-12\") && (i.propertyNames = I(s.keyType, t, {\n      ...r,\n      path: [...r.path, \"propertyNames\"]\n    })), i.additionalProperties = I(s.valueType, t, {\n      ...r,\n      path: [...r.path, \"additionalProperties\"]\n    });\n  const c = o._zod.values;\n  if (c) {\n    const l = [...c].filter((f) => typeof f == \"string\" || typeof f == \"number\");\n    l.length > 0 && (i.required = l);\n  }\n}, cc = (e, t, n, r) => {\n  const i = e._zod.def, s = I(i.innerType, t, r), o = t.seen.get(e);\n  t.target === \"openapi-3.0\" ? (o.ref = i.innerType, n.nullable = !0) : n.anyOf = [s, { type: \"null\" }];\n}, lc = (e, t, n, r) => {\n  const i = e._zod.def;\n  I(i.innerType, t, r);\n  const s = t.seen.get(e);\n  s.ref = i.innerType;\n}, hc = (e, t, n, r) => {\n  const i = e._zod.def;\n  I(i.innerType, t, r);\n  const s = t.seen.get(e);\n  s.ref = i.innerType, n.default = JSON.parse(JSON.stringify(i.defaultValue));\n}, fc = (e, t, n, r) => {\n  const i = e._zod.def;\n  I(i.innerType, t, r);\n  const s = t.seen.get(e);\n  s.ref = i.innerType, t.io === \"input\" && (n._prefault = JSON.parse(JSON.stringify(i.defaultValue)));\n}, dc = (e, t, n, r) => {\n  const i = e._zod.def;\n  I(i.innerType, t, r);\n  const s = t.seen.get(e);\n  s.ref = i.innerType;\n  let o;\n  try {\n    o = i.catchValue(void 0);\n  } catch {\n    throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n  }\n  n.default = o;\n}, pc = (e, t, n, r) => {\n  const i = e._zod.def, s = i.in._zod.traits.has(\"$ZodTransform\"), o = t.io === \"input\" ? s ? i.out : i.in : i.out;\n  I(o, t, r);\n  const u = t.seen.get(e);\n  u.ref = o;\n}, mc = (e, t, n, r) => {\n  const i = e._zod.def;\n  I(i.innerType, t, r);\n  const s = t.seen.get(e);\n  s.ref = i.innerType, n.readOnly = !0;\n}, hD = (e, t, n, r) => {\n  const i = e._zod.def;\n  I(i.innerType, t, r);\n  const s = t.seen.get(e);\n  s.ref = i.innerType;\n}, Li = (e, t, n, r) => {\n  const i = e._zod.def;\n  I(i.innerType, t, r);\n  const s = t.seen.get(e);\n  s.ref = i.innerType;\n}, Dc = (e, t, n, r) => {\n  const i = e._zod.innerType;\n  I(i, t, r);\n  const s = t.seen.get(e);\n  s.ref = i;\n}, io = {\n  string: Xa,\n  number: Ya,\n  boolean: Vm,\n  bigint: Km,\n  symbol: Qm,\n  null: Jm,\n  undefined: Hm,\n  void: Xm,\n  never: ec,\n  any: Ym,\n  unknown: tc,\n  date: eD,\n  enum: nc,\n  literal: tD,\n  nan: nD,\n  template_literal: rD,\n  file: iD,\n  success: sD,\n  custom: rc,\n  function: oD,\n  transform: ic,\n  map: uD,\n  set: aD,\n  array: sc,\n  object: oc,\n  union: uc,\n  intersection: ac,\n  tuple: cD,\n  record: lD,\n  nullable: cc,\n  nonoptional: lc,\n  default: hc,\n  prefault: fc,\n  catch: dc,\n  pipe: pc,\n  readonly: mc,\n  promise: hD,\n  optional: Li,\n  lazy: Dc\n};\nfunction fD(e, t) {\n  if (\"_idmap\" in e) {\n    const r = e, i = kn({ ...t, processors: io }), s = {};\n    for (const a of r._idmap.entries()) {\n      const [c, l] = a;\n      I(l, i);\n    }\n    const o = {}, u = {\n      registry: r,\n      uri: t?.uri,\n      defs: s\n    };\n    i.external = u;\n    for (const a of r._idmap.entries()) {\n      const [c, l] = a;\n      Nn(i, l), o[c] = In(i, l);\n    }\n    if (Object.keys(s).length > 0) {\n      const a = i.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n      o.__shared = {\n        [a]: s\n      };\n    }\n    return { schemas: o };\n  }\n  const n = kn({ ...t, processors: io });\n  return I(e, n), Nn(n, e), In(n, e);\n}\nconst dD = /* @__PURE__ */ b(\"ZodISODateTime\", (e, t) => {\n  y3.init(e, t), L.init(e, t);\n});\nfunction pD(e) {\n  return /* @__PURE__ */ Em(dD, e);\n}\nconst mD = /* @__PURE__ */ b(\"ZodISODate\", (e, t) => {\n  b3.init(e, t), L.init(e, t);\n});\nfunction DD(e) {\n  return /* @__PURE__ */ vm(mD, e);\n}\nconst gD = /* @__PURE__ */ b(\"ZodISOTime\", (e, t) => {\n  w3.init(e, t), L.init(e, t);\n});\nfunction yD(e) {\n  return /* @__PURE__ */ _m(gD, e);\n}\nconst bD = /* @__PURE__ */ b(\"ZodISODuration\", (e, t) => {\n  F3.init(e, t), L.init(e, t);\n});\nfunction wD(e) {\n  return /* @__PURE__ */ Sm(bD, e);\n}\nconst gc = (e, t) => {\n  Ba.init(e, t), e.name = \"ZodError\", Object.defineProperties(e, {\n    format: {\n      value: (n) => lp(e, n)\n      // enumerable: false,\n    },\n    flatten: {\n      value: (n) => cp(e, n)\n      // enumerable: false,\n    },\n    addIssue: {\n      value: (n) => {\n        e.issues.push(n), e.message = JSON.stringify(e.issues, Gr, 2);\n      }\n      // enumerable: false,\n    },\n    addIssues: {\n      value: (n) => {\n        e.issues.push(...n), e.message = JSON.stringify(e.issues, Gr, 2);\n      }\n      // enumerable: false,\n    },\n    isEmpty: {\n      get() {\n        return e.issues.length === 0;\n      }\n      // enumerable: false,\n    }\n  });\n}, FD = /* @__PURE__ */ b(\"ZodError\", gc), ae = /* @__PURE__ */ b(\"ZodError\", gc, {\n  Parent: Error\n}), ED = /* @__PURE__ */ zi(ae), vD = /* @__PURE__ */ Bi(ae), _D = /* @__PURE__ */ Qn(ae), SD = /* @__PURE__ */ Jn(ae), AD = /* @__PURE__ */ dp(ae), OD = /* @__PURE__ */ pp(ae), CD = /* @__PURE__ */ mp(ae), TD = /* @__PURE__ */ Dp(ae), RD = /* @__PURE__ */ gp(ae), xD = /* @__PURE__ */ yp(ae), kD = /* @__PURE__ */ bp(ae), ND = /* @__PURE__ */ wp(ae), so = /* @__PURE__ */ new WeakMap();\nfunction jt(e, t, n) {\n  const r = Object.getPrototypeOf(e);\n  let i = so.get(r);\n  if (i || (i = /* @__PURE__ */ new Set(), so.set(r, i)), !i.has(t)) {\n    i.add(t);\n    for (const s in n) {\n      const o = n[s];\n      Object.defineProperty(r, s, {\n        configurable: !0,\n        enumerable: !1,\n        get() {\n          const u = o.bind(this);\n          return Object.defineProperty(this, s, {\n            configurable: !0,\n            writable: !0,\n            enumerable: !0,\n            value: u\n          }), u;\n        },\n        set(u) {\n          Object.defineProperty(this, s, {\n            configurable: !0,\n            writable: !0,\n            enumerable: !0,\n            value: u\n          });\n        }\n      });\n    }\n  }\n}\nconst U = /* @__PURE__ */ b(\"ZodType\", (e, t) => (j.init(e, t), Object.assign(e[\"~standard\"], {\n  jsonSchema: {\n    input: Pn(e, \"input\"),\n    output: Pn(e, \"output\")\n  }\n}), e.toJSONSchema = Wm(e, {}), e.def = t, e.type = t.type, Object.defineProperty(e, \"_def\", { value: t }), e.parse = (n, r) => ED(e, n, r, { callee: e.parse }), e.safeParse = (n, r) => _D(e, n, r), e.parseAsync = async (n, r) => vD(e, n, r, { callee: e.parseAsync }), e.safeParseAsync = async (n, r) => SD(e, n, r), e.spa = e.safeParseAsync, e.encode = (n, r) => AD(e, n, r), e.decode = (n, r) => OD(e, n, r), e.encodeAsync = async (n, r) => CD(e, n, r), e.decodeAsync = async (n, r) => TD(e, n, r), e.safeEncode = (n, r) => RD(e, n, r), e.safeDecode = (n, r) => xD(e, n, r), e.safeEncodeAsync = async (n, r) => kD(e, n, r), e.safeDecodeAsync = async (n, r) => ND(e, n, r), jt(e, \"ZodType\", {\n  check(...n) {\n    const r = this.def;\n    return this.clone(xe(r, {\n      checks: [\n        ...r.checks ?? [],\n        ...n.map((i) => typeof i == \"function\" ? { _zod: { check: i, def: { check: \"custom\" }, onattach: [] } } : i)\n      ]\n    }), { parent: !0 });\n  },\n  with(...n) {\n    return this.check(...n);\n  },\n  clone(n, r) {\n    return ke(this, n, r);\n  },\n  brand() {\n    return this;\n  },\n  register(n, r) {\n    return n.add(this, r), this;\n  },\n  refine(n, r) {\n    return this.check(C4(n, r));\n  },\n  superRefine(n, r) {\n    return this.check(T4(n, r));\n  },\n  overwrite(n) {\n    return this.check(/* @__PURE__ */ mt(n));\n  },\n  optional() {\n    return co(this);\n  },\n  exactOptional() {\n    return d4(this);\n  },\n  nullable() {\n    return lo(this);\n  },\n  nullish() {\n    return co(lo(this));\n  },\n  nonoptional(n) {\n    return b4(this, n);\n  },\n  array() {\n    return r4(this);\n  },\n  or(n) {\n    return Mi([this, n]);\n  },\n  and(n) {\n    return a4(this, n);\n  },\n  transform(n) {\n    return ho(this, h4(n));\n  },\n  default(n) {\n    return D4(this, n);\n  },\n  prefault(n) {\n    return y4(this, n);\n  },\n  catch(n) {\n    return F4(this, n);\n  },\n  pipe(n) {\n    return ho(this, n);\n  },\n  readonly() {\n    return _4(this);\n  },\n  describe(n) {\n    const r = this.clone();\n    return St.add(r, { description: n }), r;\n  },\n  meta(...n) {\n    if (n.length === 0)\n      return St.get(this);\n    const r = this.clone();\n    return St.add(r, n[0]), r;\n  },\n  isOptional() {\n    return this.safeParse(void 0).success;\n  },\n  isNullable() {\n    return this.safeParse(null).success;\n  },\n  apply(n) {\n    return n(this);\n  }\n}), Object.defineProperty(e, \"description\", {\n  get() {\n    return St.get(e)?.description;\n  },\n  configurable: !0\n}), e)), yc = /* @__PURE__ */ b(\"_ZodString\", (e, t) => {\n  $i.init(e, t), U.init(e, t), e._zod.processJSONSchema = (r, i, s) => Xa(e, r, i);\n  const n = e._zod.bag;\n  e.format = n.format ?? null, e.minLength = n.minimum ?? null, e.maxLength = n.maximum ?? null, jt(e, \"_ZodString\", {\n    regex(...r) {\n      return this.check(/* @__PURE__ */ Rm(...r));\n    },\n    includes(...r) {\n      return this.check(/* @__PURE__ */ Nm(...r));\n    },\n    startsWith(...r) {\n      return this.check(/* @__PURE__ */ Im(...r));\n    },\n    endsWith(...r) {\n      return this.check(/* @__PURE__ */ Pm(...r));\n    },\n    min(...r) {\n      return this.check(/* @__PURE__ */ xn(...r));\n    },\n    max(...r) {\n      return this.check(/* @__PURE__ */ Ja(...r));\n    },\n    length(...r) {\n      return this.check(/* @__PURE__ */ Ha(...r));\n    },\n    nonempty(...r) {\n      return this.check(/* @__PURE__ */ xn(1, ...r));\n    },\n    lowercase(r) {\n      return this.check(/* @__PURE__ */ xm(r));\n    },\n    uppercase(r) {\n      return this.check(/* @__PURE__ */ km(r));\n    },\n    trim() {\n      return this.check(/* @__PURE__ */ Bm());\n    },\n    normalize(...r) {\n      return this.check(/* @__PURE__ */ zm(...r));\n    },\n    toLowerCase() {\n      return this.check(/* @__PURE__ */ $m());\n    },\n    toUpperCase() {\n      return this.check(/* @__PURE__ */ Lm());\n    },\n    slugify() {\n      return this.check(/* @__PURE__ */ Mm());\n    }\n  });\n}), ID = /* @__PURE__ */ b(\"ZodString\", (e, t) => {\n  $i.init(e, t), yc.init(e, t), e.email = (n) => e.check(/* @__PURE__ */ tm(PD, n)), e.url = (n) => e.check(/* @__PURE__ */ om(zD, n)), e.jwt = (n) => e.check(/* @__PURE__ */ Fm(HD, n)), e.emoji = (n) => e.check(/* @__PURE__ */ um(BD, n)), e.guid = (n) => e.check(/* @__PURE__ */ eo(oo, n)), e.uuid = (n) => e.check(/* @__PURE__ */ nm(Jt, n)), e.uuidv4 = (n) => e.check(/* @__PURE__ */ rm(Jt, n)), e.uuidv6 = (n) => e.check(/* @__PURE__ */ im(Jt, n)), e.uuidv7 = (n) => e.check(/* @__PURE__ */ sm(Jt, n)), e.nanoid = (n) => e.check(/* @__PURE__ */ am($D, n)), e.guid = (n) => e.check(/* @__PURE__ */ eo(oo, n)), e.cuid = (n) => e.check(/* @__PURE__ */ cm(LD, n)), e.cuid2 = (n) => e.check(/* @__PURE__ */ lm(MD, n)), e.ulid = (n) => e.check(/* @__PURE__ */ hm(jD, n)), e.base64 = (n) => e.check(/* @__PURE__ */ ym(KD, n)), e.base64url = (n) => e.check(/* @__PURE__ */ bm(QD, n)), e.xid = (n) => e.check(/* @__PURE__ */ fm(UD, n)), e.ksuid = (n) => e.check(/* @__PURE__ */ dm(ZD, n)), e.ipv4 = (n) => e.check(/* @__PURE__ */ pm(qD, n)), e.ipv6 = (n) => e.check(/* @__PURE__ */ mm(WD, n)), e.cidrv4 = (n) => e.check(/* @__PURE__ */ Dm(GD, n)), e.cidrv6 = (n) => e.check(/* @__PURE__ */ gm(VD, n)), e.e164 = (n) => e.check(/* @__PURE__ */ wm(JD, n)), e.datetime = (n) => e.check(pD(n)), e.date = (n) => e.check(DD(n)), e.time = (n) => e.check(yD(n)), e.duration = (n) => e.check(wD(n));\n});\nfunction an(e) {\n  return /* @__PURE__ */ em(ID, e);\n}\nconst L = /* @__PURE__ */ b(\"ZodStringFormat\", (e, t) => {\n  B.init(e, t), yc.init(e, t);\n}), PD = /* @__PURE__ */ b(\"ZodEmail\", (e, t) => {\n  c3.init(e, t), L.init(e, t);\n}), oo = /* @__PURE__ */ b(\"ZodGUID\", (e, t) => {\n  u3.init(e, t), L.init(e, t);\n}), Jt = /* @__PURE__ */ b(\"ZodUUID\", (e, t) => {\n  a3.init(e, t), L.init(e, t);\n}), zD = /* @__PURE__ */ b(\"ZodURL\", (e, t) => {\n  l3.init(e, t), L.init(e, t);\n}), BD = /* @__PURE__ */ b(\"ZodEmoji\", (e, t) => {\n  h3.init(e, t), L.init(e, t);\n}), $D = /* @__PURE__ */ b(\"ZodNanoID\", (e, t) => {\n  f3.init(e, t), L.init(e, t);\n}), LD = /* @__PURE__ */ b(\"ZodCUID\", (e, t) => {\n  d3.init(e, t), L.init(e, t);\n}), MD = /* @__PURE__ */ b(\"ZodCUID2\", (e, t) => {\n  p3.init(e, t), L.init(e, t);\n}), jD = /* @__PURE__ */ b(\"ZodULID\", (e, t) => {\n  m3.init(e, t), L.init(e, t);\n}), UD = /* @__PURE__ */ b(\"ZodXID\", (e, t) => {\n  D3.init(e, t), L.init(e, t);\n}), ZD = /* @__PURE__ */ b(\"ZodKSUID\", (e, t) => {\n  g3.init(e, t), L.init(e, t);\n}), qD = /* @__PURE__ */ b(\"ZodIPv4\", (e, t) => {\n  E3.init(e, t), L.init(e, t);\n}), WD = /* @__PURE__ */ b(\"ZodIPv6\", (e, t) => {\n  v3.init(e, t), L.init(e, t);\n}), GD = /* @__PURE__ */ b(\"ZodCIDRv4\", (e, t) => {\n  _3.init(e, t), L.init(e, t);\n}), VD = /* @__PURE__ */ b(\"ZodCIDRv6\", (e, t) => {\n  S3.init(e, t), L.init(e, t);\n}), KD = /* @__PURE__ */ b(\"ZodBase64\", (e, t) => {\n  A3.init(e, t), L.init(e, t);\n}), QD = /* @__PURE__ */ b(\"ZodBase64URL\", (e, t) => {\n  C3.init(e, t), L.init(e, t);\n}), JD = /* @__PURE__ */ b(\"ZodE164\", (e, t) => {\n  T3.init(e, t), L.init(e, t);\n}), HD = /* @__PURE__ */ b(\"ZodJWT\", (e, t) => {\n  x3.init(e, t), L.init(e, t);\n}), bc = /* @__PURE__ */ b(\"ZodNumber\", (e, t) => {\n  Ga.init(e, t), U.init(e, t), e._zod.processJSONSchema = (r, i, s) => Ya(e, r, i), jt(e, \"ZodNumber\", {\n    gt(r, i) {\n      return this.check(/* @__PURE__ */ no(r, i));\n    },\n    gte(r, i) {\n      return this.check(/* @__PURE__ */ mr(r, i));\n    },\n    min(r, i) {\n      return this.check(/* @__PURE__ */ mr(r, i));\n    },\n    lt(r, i) {\n      return this.check(/* @__PURE__ */ to(r, i));\n    },\n    lte(r, i) {\n      return this.check(/* @__PURE__ */ pr(r, i));\n    },\n    max(r, i) {\n      return this.check(/* @__PURE__ */ pr(r, i));\n    },\n    int(r) {\n      return this.check(uo(r));\n    },\n    safe(r) {\n      return this.check(uo(r));\n    },\n    positive(r) {\n      return this.check(/* @__PURE__ */ no(0, r));\n    },\n    nonnegative(r) {\n      return this.check(/* @__PURE__ */ mr(0, r));\n    },\n    negative(r) {\n      return this.check(/* @__PURE__ */ to(0, r));\n    },\n    nonpositive(r) {\n      return this.check(/* @__PURE__ */ pr(0, r));\n    },\n    multipleOf(r, i) {\n      return this.check(/* @__PURE__ */ ro(r, i));\n    },\n    step(r, i) {\n      return this.check(/* @__PURE__ */ ro(r, i));\n    },\n    finite() {\n      return this;\n    }\n  });\n  const n = e._zod.bag;\n  e.minValue = Math.max(n.minimum ?? Number.NEGATIVE_INFINITY, n.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null, e.maxValue = Math.min(n.maximum ?? Number.POSITIVE_INFINITY, n.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null, e.isInt = (n.format ?? \"\").includes(\"int\") || Number.isSafeInteger(n.multipleOf ?? 0.5), e.isFinite = !0, e.format = n.format ?? null;\n});\nfunction wc(e) {\n  return /* @__PURE__ */ Am(bc, e);\n}\nconst XD = /* @__PURE__ */ b(\"ZodNumberFormat\", (e, t) => {\n  k3.init(e, t), bc.init(e, t);\n});\nfunction uo(e) {\n  return /* @__PURE__ */ Om(XD, e);\n}\nconst YD = /* @__PURE__ */ b(\"ZodUnknown\", (e, t) => {\n  N3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => tc();\n});\nfunction ao() {\n  return /* @__PURE__ */ Cm(YD);\n}\nconst e4 = /* @__PURE__ */ b(\"ZodNever\", (e, t) => {\n  I3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => ec(e, n, r);\n});\nfunction t4(e) {\n  return /* @__PURE__ */ Tm(e4, e);\n}\nconst n4 = /* @__PURE__ */ b(\"ZodArray\", (e, t) => {\n  P3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => sc(e, n, r, i), e.element = t.element, jt(e, \"ZodArray\", {\n    min(n, r) {\n      return this.check(/* @__PURE__ */ xn(n, r));\n    },\n    nonempty(n) {\n      return this.check(/* @__PURE__ */ xn(1, n));\n    },\n    max(n, r) {\n      return this.check(/* @__PURE__ */ Ja(n, r));\n    },\n    length(n, r) {\n      return this.check(/* @__PURE__ */ Ha(n, r));\n    },\n    unwrap() {\n      return this.element;\n    }\n  });\n});\nfunction r4(e, t) {\n  return /* @__PURE__ */ jm(n4, e, t);\n}\nconst i4 = /* @__PURE__ */ b(\"ZodObject\", (e, t) => {\n  B3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => oc(e, n, r, i), x(e, \"shape\", () => t.shape), jt(e, \"ZodObject\", {\n    keyof() {\n      return c4(Object.keys(this._zod.def.shape));\n    },\n    catchall(n) {\n      return this.clone({ ...this._zod.def, catchall: n });\n    },\n    passthrough() {\n      return this.clone({ ...this._zod.def, catchall: ao() });\n    },\n    loose() {\n      return this.clone({ ...this._zod.def, catchall: ao() });\n    },\n    strict() {\n      return this.clone({ ...this._zod.def, catchall: t4() });\n    },\n    strip() {\n      return this.clone({ ...this._zod.def, catchall: void 0 });\n    },\n    extend(n) {\n      return rp(this, n);\n    },\n    safeExtend(n) {\n      return ip(this, n);\n    },\n    merge(n) {\n      return sp(this, n);\n    },\n    pick(n) {\n      return tp(this, n);\n    },\n    omit(n) {\n      return np(this, n);\n    },\n    partial(...n) {\n      return op(Fc, this, n[0]);\n    },\n    required(...n) {\n      return up(Ec, this, n[0]);\n    }\n  });\n});\nfunction s4(e, t) {\n  const n = {\n    type: \"object\",\n    shape: e ?? {},\n    ...O(t)\n  };\n  return new i4(n);\n}\nconst o4 = /* @__PURE__ */ b(\"ZodUnion\", (e, t) => {\n  $3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => uc(e, n, r, i), e.options = t.options;\n});\nfunction Mi(e, t) {\n  return new o4({\n    type: \"union\",\n    options: e,\n    ...O(t)\n  });\n}\nconst u4 = /* @__PURE__ */ b(\"ZodIntersection\", (e, t) => {\n  L3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => ac(e, n, r, i);\n});\nfunction a4(e, t) {\n  return new u4({\n    type: \"intersection\",\n    left: e,\n    right: t\n  });\n}\nconst Kr = /* @__PURE__ */ b(\"ZodEnum\", (e, t) => {\n  M3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (r, i, s) => nc(e, r, i), e.enum = t.entries, e.options = Object.values(t.entries);\n  const n = new Set(Object.keys(t.entries));\n  e.extract = (r, i) => {\n    const s = {};\n    for (const o of r)\n      if (n.has(o))\n        s[o] = t.entries[o];\n      else\n        throw new Error(`Key ${o} not found in enum`);\n    return new Kr({\n      ...t,\n      checks: [],\n      ...O(i),\n      entries: s\n    });\n  }, e.exclude = (r, i) => {\n    const s = { ...t.entries };\n    for (const o of r)\n      if (n.has(o))\n        delete s[o];\n      else\n        throw new Error(`Key ${o} not found in enum`);\n    return new Kr({\n      ...t,\n      checks: [],\n      ...O(i),\n      entries: s\n    });\n  };\n});\nfunction c4(e, t) {\n  const n = Array.isArray(e) ? Object.fromEntries(e.map((r) => [r, r])) : e;\n  return new Kr({\n    type: \"enum\",\n    entries: n,\n    ...O(t)\n  });\n}\nconst l4 = /* @__PURE__ */ b(\"ZodTransform\", (e, t) => {\n  j3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => ic(e, n), e._zod.parse = (n, r) => {\n    if (r.direction === \"backward\")\n      throw new xa(e.constructor.name);\n    n.addIssue = (s) => {\n      if (typeof s == \"string\")\n        n.issues.push(kt(s, n.value, t));\n      else {\n        const o = s;\n        o.fatal && (o.continue = !1), o.code ?? (o.code = \"custom\"), o.input ?? (o.input = n.value), o.inst ?? (o.inst = e), n.issues.push(kt(o));\n      }\n    };\n    const i = t.transform(n.value, n);\n    return i instanceof Promise ? i.then((s) => (n.value = s, n.fallback = !0, n)) : (n.value = i, n.fallback = !0, n);\n  };\n});\nfunction h4(e) {\n  return new l4({\n    type: \"transform\",\n    transform: e\n  });\n}\nconst Fc = /* @__PURE__ */ b(\"ZodOptional\", (e, t) => {\n  Qa.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => Li(e, n, r, i), e.unwrap = () => e._zod.def.innerType;\n});\nfunction co(e) {\n  return new Fc({\n    type: \"optional\",\n    innerType: e\n  });\n}\nconst f4 = /* @__PURE__ */ b(\"ZodExactOptional\", (e, t) => {\n  U3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => Li(e, n, r, i), e.unwrap = () => e._zod.def.innerType;\n});\nfunction d4(e) {\n  return new f4({\n    type: \"optional\",\n    innerType: e\n  });\n}\nconst p4 = /* @__PURE__ */ b(\"ZodNullable\", (e, t) => {\n  Z3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => cc(e, n, r, i), e.unwrap = () => e._zod.def.innerType;\n});\nfunction lo(e) {\n  return new p4({\n    type: \"nullable\",\n    innerType: e\n  });\n}\nconst m4 = /* @__PURE__ */ b(\"ZodDefault\", (e, t) => {\n  q3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => hc(e, n, r, i), e.unwrap = () => e._zod.def.innerType, e.removeDefault = e.unwrap;\n});\nfunction D4(e, t) {\n  return new m4({\n    type: \"default\",\n    innerType: e,\n    get defaultValue() {\n      return typeof t == \"function\" ? t() : Ia(t);\n    }\n  });\n}\nconst g4 = /* @__PURE__ */ b(\"ZodPrefault\", (e, t) => {\n  W3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => fc(e, n, r, i), e.unwrap = () => e._zod.def.innerType;\n});\nfunction y4(e, t) {\n  return new g4({\n    type: \"prefault\",\n    innerType: e,\n    get defaultValue() {\n      return typeof t == \"function\" ? t() : Ia(t);\n    }\n  });\n}\nconst Ec = /* @__PURE__ */ b(\"ZodNonOptional\", (e, t) => {\n  G3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => lc(e, n, r, i), e.unwrap = () => e._zod.def.innerType;\n});\nfunction b4(e, t) {\n  return new Ec({\n    type: \"nonoptional\",\n    innerType: e,\n    ...O(t)\n  });\n}\nconst w4 = /* @__PURE__ */ b(\"ZodCatch\", (e, t) => {\n  V3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => dc(e, n, r, i), e.unwrap = () => e._zod.def.innerType, e.removeCatch = e.unwrap;\n});\nfunction F4(e, t) {\n  return new w4({\n    type: \"catch\",\n    innerType: e,\n    catchValue: typeof t == \"function\" ? t : () => t\n  });\n}\nconst E4 = /* @__PURE__ */ b(\"ZodPipe\", (e, t) => {\n  K3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => pc(e, n, r, i), e.in = t.in, e.out = t.out;\n});\nfunction ho(e, t) {\n  return new E4({\n    type: \"pipe\",\n    in: e,\n    out: t\n    // ...util.normalizeParams(params),\n  });\n}\nconst v4 = /* @__PURE__ */ b(\"ZodReadonly\", (e, t) => {\n  Q3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => mc(e, n, r, i), e.unwrap = () => e._zod.def.innerType;\n});\nfunction _4(e) {\n  return new v4({\n    type: \"readonly\",\n    innerType: e\n  });\n}\nconst S4 = /* @__PURE__ */ b(\"ZodLazy\", (e, t) => {\n  J3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => Dc(e, n, r, i), e.unwrap = () => e._zod.def.getter();\n});\nfunction A4(e) {\n  return new S4({\n    type: \"lazy\",\n    getter: e\n  });\n}\nconst O4 = /* @__PURE__ */ b(\"ZodCustom\", (e, t) => {\n  H3.init(e, t), U.init(e, t), e._zod.processJSONSchema = (n, r, i) => rc(e, n);\n});\nfunction C4(e, t = {}) {\n  return /* @__PURE__ */ Um(O4, e, t);\n}\nfunction T4(e, t) {\n  return /* @__PURE__ */ Zm(e, t);\n}\nclass vc {\n  meta;\n  constructor(t) {\n    this.meta = t ?? {};\n  }\n  label(t) {\n    return this.meta.label = t, this;\n  }\n  component(t, n) {\n    return this.meta.component = t, this.meta.props = n, this;\n  }\n  visible(t) {\n    return this.meta.visible = t, this;\n  }\n  disable(t) {\n    return this.meta.disable = t, this;\n  }\n  editable(t) {\n    return this.meta.editable = t, this;\n  }\n}\nconst R4 = {\n  scope: \"global\",\n  builder: vc,\n  defaults: {\n    visible: !0\n  }\n};\nclass x4 {\n  plugins = /* @__PURE__ */ new Map();\n  install(t) {\n    this.plugins.set(t.scope, t);\n  }\n  get(t) {\n    return this.plugins.get(t);\n  }\n}\nclass Dr {\n  constructor(t, n) {\n    this.context = t, this.schema = typeof n == \"function\" ? A4(n) : n;\n  }\n  schema;\n  meta = {};\n  use(t, n) {\n    const r = this.context.get(t);\n    if (!r)\n      throw new Error(`${t} plugin not installed`);\n    const i = new r.builder(r.defaults);\n    return n?.(i), this.meta[t] = { ...this.meta[t] ?? {}, ...i.meta }, this;\n  }\n}\nclass k4 {\n  constructor(t) {\n    this.fields = t, this.schema = s4(\n      Object.fromEntries(\n        Object.entries(this.fields).map(([n, r]) => [\n          n,\n          r.schema\n        ])\n      )\n    );\n  }\n  schema;\n  // Model Definition DSL = get Component parameters presentation\n  resolve(t) {\n    return Object.entries(this.fields).filter(\n      ([n, r]) => r.meta[t]?.visible !== !1 && r.meta.global?.visible !== !1\n    ).map(([n, r]) => ({\n      fieldName: n,\n      schema: r.schema,\n      meta: { ...r.meta.global ?? {}, ...r.meta[t] ?? {} }\n    }));\n  }\n  // validate 服务端 DTO\n  parse(t) {\n    try {\n      return {\n        success: !0,\n        data: this.schema.parse(t)\n      };\n    } catch (n) {\n      return {\n        success: !1,\n        issues: n instanceof FD ? n.issues : [{ code: \"custom\", input: t, path: [], message: n.message }]\n      };\n    }\n  }\n  safeParse(t) {\n    const n = this.schema.safeParse(t);\n    return n.success ? {\n      success: !0,\n      data: n.data\n    } : {\n      success: !1,\n      issues: n.error.issues\n    };\n  }\n  // 导出 JSON Schema 用于接口、校验\n  // JSON Schema is a standard for describing the structure of JSON (with JSON).\n  // It's widely used in OpenAPI definitions and defining structured outputs for AI.\n  toJSONSchema(t) {\n    return fD(this.schema, t);\n  }\n}\nclass N4 {\n  context = new x4();\n  constructor(t = []) {\n    [...t, R4].forEach((n) => {\n      this.context.install(n), n.scope in Dr.prototype || (Dr.prototype[n.scope] = function(r) {\n        return this.use(n.scope, r);\n      });\n    });\n  }\n  field(t) {\n    return new Dr(this.context, t);\n  }\n  entity(t) {\n    return new k4(t);\n  }\n}\nfunction _c(e = {}) {\n  return new N4(e.plugins);\n}\nclass I4 extends vc {\n  label(t) {\n    return this.meta.label = t, this;\n  }\n}\nconst Sc = {\n  scope: \"detail\",\n  builder: I4,\n  defaults: {\n    visible: !0\n  }\n}, fo = _c({\n  plugins: [Sc]\n}), P4 = fo.entity({\n  tag: fo.field(\n    () => Mi([wc(), an()]).transform((e) => String(e))\n  )\n}), z4 = \"GOTO_RESULT\", B4 = \"GOTO_UNLOCKING\", $4 = \"CLOSE_DIALOG\", L4 = \"SHOW_DIALOG_LOADING\", M4 = \"SHOW_DIALOG_TOAST\", j4 = \"SHOW_DIALOG\", U4 = \"ENQUEUE_DIALOG\", Z4 = \"DIALOG_CLOSED\", Ac = \"SET_LOGIN_PHONE\", Oc = \"SET_LOGIN_CAPTCHA\", q4 = \"GET_CAPTCHA\", Cc = \"GET_CAPTCHA_START\", W4 = \"GET_CAPTCHA_SUCCESS\", Tc = \"GET_CAPTCHA_ERROR\", Rc = \"SET_CAPTCHA_COUNTDOWN\", G4 = \"LOGIN\", V4 = \"LOGIN_SUCCESS\", K4 = \"LOAD_LOT_ORDER\", Q4 = \"PAY_LOT_ORDER\", J4 = \"SET_DEMO\", xc = \"SET_COLOR_SCHEME\", kc = \"SET_PARK\", Nc = \"SET_LOT\", Ic = \"SET_BILL\", Pc = \"SET_ORDER\", zc = \"SET_PLATE\", Bc = \"SET_GROUP\", $c = \"SET_RESULT\", Lc = \"SET_USER\", H4 = \"SET_COUPON\", X4 = \"SET_POINT\", Mc = \"获取验证码\";\nfunction He(e, t = {}) {\n  return e.phone = t.phone ?? e.phone ?? \"\", e.captcha = t.captcha ?? e.captcha ?? \"\", e.captchaText = t.captchaText ?? e.captchaText ?? Mc, e.disabledCaptcha = t.disabledCaptcha ?? !0, e.disabledLogin = !e.phone || !e.captcha, e;\n}\nfunction Y4(e = {}, t) {\n  const n = { ...e }, r = t.payload || {};\n  if (De(n))\n    He(n, r);\n  else\n    switch (t.type) {\n      case Ac:\n        He(n, {\n          phone: r.phone ?? \"\",\n          disabledCaptcha: !r.phone\n        });\n        break;\n      case Oc:\n        He(n, {\n          captcha: r.captcha ?? \"\",\n          disabledCaptcha: e.disabledCaptcha\n        });\n        break;\n      case Cc:\n        He(n, {\n          disabledCaptcha: !0\n        });\n        break;\n      case Tc:\n        He(n, {\n          disabledCaptcha: !1\n        });\n        break;\n      case Rc:\n        He(n, {\n          captchaText: r.count > 0 ? `${r.count}秒后可重发` : Mc,\n          disabledCaptcha: r.count > 0\n        });\n        break;\n    }\n  return n;\n}\nconst gr = {\n  UNKNOWN: \"UNKNOWN\",\n  // 未知，前端初始化状态\n  IN_ROAD: \"L\",\n  // 路内\n  OUT_ROAD: \"G\"\n  // 路外\n}, yr = {\n  UNKNOWN: \"UNKNOWN\",\n  // 未知，前端初始化状态\n  ROBOT: \"robot\",\n  // 泊位机器人\n  MANUAL: \"manual\",\n  // 人工\n  ELF: \"elf\"\n  // 泊位精灵\n};\nfunction eg(e, t) {\n  switch (e.tag = t.tag ? String(t.tag) : \"\", e.thirdno = t.thirdno || \"\", e.aitype = t.aitype || yr.UNKNOWN, e.isROBOT = e.aitype == yr.ROBOT, e.isMANUAL = e.aitype == yr.MANUAL, e.location = t.ctype || gr.UNKNOWN, e.locationFormatted = \"\", e.location) {\n    case gr.IN_ROAD:\n      e.locationFormatted = \"路内\";\n      break;\n    case gr.OUT_ROAD:\n      e.locationFormatted = \"路外\";\n      break;\n  }\n  return e.modules = t.modules || [], e.freetime = t.freetime || -1, e.freetimeIsValid = e.freetime >= 0, e.isInFreetime = (n, r) => !e.freetimeIsValid || !$(n) || !$(r) ? !1 : n.getTime() - r.getTime() < e.freetime * 60 * 1e3, e.name = t.cname || \"\", e.addr = t.addr || \"\", e.phone = t.phone || xi().HOTLINE, e.totallot = typeof t.totallot == \"number\" ? t.totallot : -1, e.freelot = typeof t.freelot == \"number\" ? t.freelot : -1, e.longitude = typeof t.longitude == \"number\" ? t.longitude : -1, e.latitude = typeof t.latitude == \"number\" ? t.latitude : -1, e.distance = typeof t.distance == \"number\" ? t.distance : -1, e.distanceFormatted = e.distance ? qf(e.distance) : \"\", e.chargeFeeStandard = (t.feedef || []).map((n) => ({\n    startTime: Zi(n[0]),\n    // 24小时制-开始时间\n    endTime: Zi(n[1]),\n    // 24小时制-结束时间\n    chargeFee: n[2],\n    // 电费(单位分)\n    serviceFee: n[3]\n    // 服务费(单位分)\n  })), e.feebookurl = t.feebookurl || \"\", e.monthlyscopeurl = t.monthlyscopeurl || \"\", e.isShowMonthLotsPic = !!e.monthlyscopeurl, e.isShowMonthLotsGPS = !1, e.isShowMonthLots = e.isShowMonthLotsPic || e.isShowMonthLotsGPS, e;\n}\nfunction tg(e = {}, t) {\n  const n = { ...e }, r = t.payload || {};\n  return (t.type == kc || De(n)) && eg(n, r), n;\n}\nconst vt = {\n  UNKNOWN: \"UNKNOWN\",\n  // 未知，前端初始化状态\n  DESCENDING: \"DESCENDING\",\n  // 降下中，实际后端没有这个状态\n  DESCENDED: \"DESCENDED\",\n  // 降下\n  RISING: \"RISING\",\n  // 升起中，实际后端没有这个状态\n  RAISED: \"RAISED\"\n  // 升起\n};\nfunction ng(e, t, n) {\n  return e.tag = t.tag ? String(t.tag) : \"\", e.no = t.no || \"\", e.thirdno = t.thirdno || \"\", e.longitude = typeof t.longitude == \"number\" ? t.longitude : -1, e.latitude = typeof t.latitude == \"number\" ? t.latitude : -1, e.automode = typeof t.automode == \"boolean\" ? t.automode : !0, e.btname = t.btname || \"\", e.btcmd = t.btcmd || \"\", e.waitdown = typeof t.waitdown == \"boolean\" ? t.waitdown : !1, e.boardStatus = e.waitdown == !0 ? vt.RAISED : vt.DESCENDED, e.isBoardAsRaised = e.boardStatus == vt.UNKNOWN || e.boardStatus == vt.RAISED || e.boardStatus == vt.RISING, e;\n}\nfunction rg(e = {}, t) {\n  const n = { ...e }, r = t.payload || {};\n  return (t.type == Nc || De(n)) && ng(n, r), n;\n}\nconst de = {\n  UNKNOWN: \"UNKNOWN\",\n  // 未知，前端初始化状态\n  WX_MINI: \"Y\",\n  // 微信小程序\n  ALI_MINI: \"B\",\n  // 支付宝小程序\n  THIRD: \"T\",\n  // 第三方系统支付\n  CASH: \"C\",\n  // 现金\n  COUPON_HOUR: \"P\",\n  // 小时券\n  SEAMLESS: \"N\",\n  // 无感支付 包括：支付宝-先离后付信用停车？\n  WX_CREDIT: \"?\",\n  // 微信支付分\n  ALI_CREDIT: \"??\"\n  // 支付宝芝麻先享\n}, ig = {\n  UNKNOWN: \"UNKNOWN\",\n  // 未知，前端初始化状态\n  DEPOSIT: \"Y\",\n  // 押金\n  CONSUME: \"X\",\n  // 消费\n  REFUND: \"T\"\n  // 退费\n};\nfunction sg(e, t) {\n  switch (e.sn = t.sn ? String(t.sn) : \"\", e.merchsn = t.merchs && t.merchs[0] ? String(t.merchs[0].sn) : \"\", e.type = t.paytype || de.UNKNOWN, e.typeFormatted = \"\", e.type) {\n    case de.WX_MINI:\n      e.typeFormatted = \"微信小程序\";\n      break;\n    case de.ALI_MINI:\n      e.typeFormatted = \"支付宝小程序\";\n      break;\n    case de.THIRD:\n      e.typeFormatted = \"第三方系统支付\";\n      break;\n    case de.CASH:\n      e.typeFormatted = \"现金\";\n      break;\n    case de.COUPON_HOUR:\n      e.typeFormatted = \"小时券\";\n      break;\n    case de.SEAMLESS:\n      e.typeFormatted = \"无感支付\";\n      break;\n    case de.WX_CREDIT:\n      e.typeFormatted = \"微信支付分\";\n      break;\n    case de.ALI_CREDIT:\n      e.typeFormatted = \"支付宝芝麻先享\";\n      break;\n  }\n  switch (e.ctype = t.ctype || ig.UNKNOWN, e.fee = t.fee || 0, e.type) {\n    case de.COUPON_HOUR:\n      if (e.fee >= 60) {\n        let n = Math.floor(e.fee / 60);\n        const r = e.fee % 60;\n        r !== 0 && (n += Math.floor(r * 100 / 60) / 100), e.feeFormatted = n + \"小时\";\n      } else\n        e.feeFormatted = e.fee + \"分钟\";\n      break;\n    default:\n      e.feeFormatted = wi(e.fee, 2);\n      break;\n  }\n  return e.time = Le(t.time), e.timeIsValid = $(e.time), e.timeFormatted = _r(e.time), e;\n}\nfunction og(e = {}, t) {\n  const n = { ...e }, r = t.payload || {};\n  return (t.type == Ic || De(n)) && sg(n, r), n;\n}\nconst br = {\n  HOUR: \"hour\",\n  // 时长优惠券，前端初始化状态\n  CASH: \"cash\",\n  // 金额优惠券\n  DISCOUNT: \"discount\"\n  // 折扣优惠券\n};\nfunction ug(e = 0, t) {\n  let n = e <= 0 ? 0 : e;\n  const r = {\n    formattedValue: \"\",\n    unit: \"\"\n  };\n  switch (t) {\n    case br.DISCOUNT:\n      n = n >= 100 ? 100 : n, n % 10 == 0 && n !== 100 ? r.formattedValue = \"\" + n / 10 : r.formattedValue = \"\" + n, r.unit = \"折\";\n      break;\n    case br.CASH:\n      r.formattedValue = Wf(n, 2), r.unit = \"元\";\n      break;\n    case br.HOUR:\n    default:\n      n < 60 ? (r.formattedValue = String(H0(n)), r.unit = \"分钟\") : (r.formattedValue = J0(n / 60, 1), r.unit = \"小时\");\n      break;\n  }\n  return r;\n}\nconst ag = {\n  UNKNOWN: \"UNKNOWN\",\n  // 未知，前端初始化状态\n  ROAD: \"L\",\n  // 路边停车订单\n  GATE: \"B\",\n  // 道闸停车订单\n  MONTH: \"R\",\n  // 停车场包月订单\n  CHARGE: \"H\"\n  // 充电订单\n}, _t = {\n  UNKNOWN: \"UNKNOWN\",\n  // 未知，前端初始化状态\n  INIT: \"I\",\n  // 初始化/预缴\n  BEGIN: \"B\",\n  // 开始/进行中/信用停进行中\n  END: \"E\",\n  // 正常结束\n  CANCEL: \"C\",\n  // 欠费/取消\n  INVALID: \"D\",\n  // 无效订单，后端反馈：后端内部状态，不用管\n  WAIT: \"W\"\n  // 待计算，后端反馈：后端内部状态，不用管\n}, wr = {\n  UNKNOWN: \"UNKNOWN\",\n  // 未知\n  IN: \"IN\",\n  // 在场\n  OUT: \"OUT\"\n  // 离场\n}, Fr = {\n  NONE: \"NONE\",\n  // 未开启\n  INVALID: \"INVALID\",\n  // 已失效\n  VALID: \"VALID\",\n  // 生效中(信鸽系统内)\n  VALID_ON_EXTERNAL: \"VALID_ON_EXTERNAL\"\n  // 生效中(第三方系统内)\n};\nfunction po(e, t) {\n  switch (e.sn = t.sn ? String(t.sn) : \"\", e.type = e.ctype || ag.UNKNOWN, e.status = e.status || _t.UNKNOWN, e.fee = t.fee || 0, e.feeFormatted = wi(e.fee, 2), e.isInInitialFreePeriod = (r, i) => r.fee == 0 && i.fee == 0, e.starttime = Le(t.starttime), e.starttimeIsValid = $(e.starttime), e.starttimeFormatted = _r(e.starttime), e.endtime = Le(t.endtime), e.endtimeIsValid = $(e.endtime), e.endtimeFormatted = _r(e.endtime), e.duringtimeFormatted = e.starttimeIsValid ? hl(\n    fl(e.starttime, /* @__PURE__ */ new Date(), !0),\n    3\n  ) : \"\", e.pics = (t.pics || []).map(\n    (r) => typeof r == \"string\" ? r : r.url || \"\"\n  ), e.carStatus = wr.UNKNOWN, e.status) {\n    case _t.INIT:\n    case _t.BEGIN:\n      e.carStatus = wr.IN;\n      break;\n    case _t.END:\n    case _t.CANCEL:\n      e.carStatus = wr.OUT;\n      break;\n  }\n  switch (e.nonsenseStatus = Fr.NONE, t.cred) {\n    case \"L\":\n    case \"N\":\n    case \"C\":\n    case \"H\":\n      e.nonsenseStatus = Fr.NONE;\n      break;\n    case \"D\":\n      e.nonsenseStatus = Fr.VALID;\n      break;\n  }\n  const n = ug(e.m || 0);\n  return e.mdesc = n.formattedValue + n.unit, e.sdesc = t.sdesc || [], e;\n}\nfunction cg(e = {}, t) {\n  const n = { ...e }, r = t.payload || {};\n  if (De(n))\n    po(n, r);\n  else\n    switch (t.type) {\n      case Pc:\n        po(n, r);\n        break;\n    }\n  return n;\n}\nconst Pe = {\n  UNKNOWN: \"UNKNOWN\",\n  // 未知，前端初始化状态\n  BLUE: \"b\",\n  // 蓝牌\n  GREEN: \"g\",\n  // 绿牌\n  YELLOW: \"y\",\n  // 黄牌\n  YELLOW_GREEM: \"q\",\n  // 黄绿\n  BLACK: \"d\",\n  // 黑牌\n  WHITE: \"w\"\n  // 白牌\n};\nfunction lg(e, t = {}) {\n  switch (e.color = t.color || Pe.UNKNOWN, e.colorFormatted = \"\", e.color) {\n    case Pe.BLUE:\n      e.colorFormatted = \"蓝牌\";\n      break;\n    case Pe.GREEN:\n      e.colorFormatted = \"绿牌\";\n      break;\n    case Pe.YELLOW:\n      e.colorFormatted = \"黄牌\";\n      break;\n    case Pe.YELLOW_GREEM:\n      e.colorFormatted = \"黄绿\";\n      break;\n    case Pe.BLACK:\n      e.colorFormatted = \"黑牌\";\n      break;\n    case Pe.WHITE:\n      e.colorFormatted = \"白牌\";\n      break;\n  }\n  return e.plate = t.plate || \"\", e;\n}\nfunction hg(e = {}, t) {\n  const n = { ...e }, r = t.payload || {};\n  return (t.type == zc || De(n)) && lg(n, r), n;\n}\nfunction fg(e, t) {\n  return e.id = t.id ? String(t.id) : \"\", e.name = t.name || \"\", e.title = t.apptitle || \"\", e.nontax = typeof t.nontax == \"boolean\" ? t.nontax : !1, e.miniClassName = t.minicss?.classname || \"\", e.park_support_nonsense_ali = typeof t.credit_payalisn == \"number\" && t.credit_payalisn >= 0, e.park_support_nonsense_wx = typeof t.credit_paywxsn == \"number\" && t.credit_paywxsn >= 0, e;\n}\nfunction dg(e = {}, t) {\n  const n = { ...e }, r = t.payload || {};\n  return (t.type == Bc || De(n)) && fg(n, r), n;\n}\nfunction pg(e, t) {\n  return e.openid = t.openid ?? e.openid ?? \"\", e.token = t.token ?? e.token ?? \"\", e.mobile = t.mobile ?? e.mobile ?? \"\", e.longitude = typeof t.longitude == \"number\" ? t.longitude : e.longitude ?? -1, e.latitude = typeof t.latitude == \"number\" ? t.latitude : e.latitude ?? -1, e;\n}\nfunction mg(e = {}, t) {\n  const n = { ...e }, r = t.payload || {};\n  return (t.type == Lc || De(n)) && pg(n, r), n;\n}\nfunction Dg(e, t) {\n  return e.status = t.status || \"\", e.title = t.title || \"\", e.subtitle = t.subtitle || \"\", e;\n}\nfunction gg(e = {}, t) {\n  const n = { ...e }, r = t.payload || {};\n  return (t.type == $c || De(n)) && Dg(n, r), n;\n}\nfunction yg(e, t = \"light\", n = \"xg-blue\") {\n  return e.scheme = t, e.theme = n, e;\n}\nfunction bg(e = {}, t) {\n  const n = { ...e }, r = t.payload || {};\n  return (t.type == xc || De(n)) && yg(\n    n,\n    r.scheme ?? n.scheme,\n    r.theme ?? n.theme\n  ), n;\n}\nconst jc = td(), Xn = ba({\n  initState: {},\n  reducer: Y2({\n    login: Y4,\n    park: tg,\n    lot: rg,\n    bill: og,\n    order: cg,\n    plate: hg,\n    group: dg,\n    user: mg,\n    result: gg,\n    color: bg\n  }),\n  enhancer: ed(\n    jc.middleware,\n    nd,\n    rd\n    // executeTimeLoggerMiddleware\n  )\n}), Yn = new G2({\n  baseURL: xi().baseURL,\n  headers: {\n    \"Content-Type\": \"application/json;charset=UTF-8\"\n  },\n  interceptors: {\n    request: (e) => {\n      const t = Xn.getState().user?.token;\n      t && (e.headers = e.headers ?? {}, e.headers.Authentication = `Bearer ${t}`);\n    }\n  }\n});\nfunction wg(e) {\n  return Yn.post(\"/api/v2/auth/genValidSN\", {\n    mobileno: e\n  });\n}\nfunction Fg(e, t) {\n  return Yn.post(\"/api/v2/auth/quickLogin\", {\n    mobileno: e,\n    validsn: t,\n    ufrom: \"h5\"\n  });\n}\nconst Eg = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  genValidSN: wg,\n  quickLogin: Fg\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction vg(e) {\n  const t = Xn.getState();\n  return Yn.post(\n    // `/api/v6/lot/${lottag}/getwithorder6`\n    `/api/v6/lot/${e}/genbill`,\n    {\n      openid: t.user?.openid ?? \"\",\n      paytype: \"U\"\n    }\n  );\n}\nfunction _g(e, t) {\n  const n = Xn.getState();\n  return Yn.post(\n    // `/api/v6/bill/${billsn}/pay`,\n    `/api/v6/bill/${e}/paywithmerch`,\n    {\n      openid: n.user?.openid ?? \"\",\n      merchsn: t ?? 0,\n      type: \"U\"\n    }\n  );\n}\nconst Sg = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  get: vg,\n  pay: _g\n}, Symbol.toStringTag, { value: \"Module\" })), ME = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  CLOSE_DIALOG: $4,\n  DIALOG_CLOSED: Z4,\n  ENQUEUE_DIALOG: U4,\n  GET_CAPTCHA: q4,\n  GET_CAPTCHA_ERROR: Tc,\n  GET_CAPTCHA_START: Cc,\n  GET_CAPTCHA_SUCCESS: W4,\n  GOTO_RESULT: z4,\n  GOTO_UNLOCKING: B4,\n  LOAD_LOT_ORDER: K4,\n  LOGIN: G4,\n  LOGIN_SUCCESS: V4,\n  LoginApi: Eg,\n  Lot: P4,\n  LotApi: Sg,\n  PAY_LOT_ORDER: Q4,\n  SET_BILL: Ic,\n  SET_CAPTCHA_COUNTDOWN: Rc,\n  SET_COLOR_SCHEME: xc,\n  SET_COUPON: H4,\n  SET_DEMO: J4,\n  SET_GROUP: Bc,\n  SET_LOGIN_CAPTCHA: Oc,\n  SET_LOGIN_PHONE: Ac,\n  SET_LOT: Nc,\n  SET_ORDER: Pc,\n  SET_PARK: kc,\n  SET_PLATE: zc,\n  SET_POINT: X4,\n  SET_RESULT: $c,\n  SET_USER: Lc,\n  SHOW_DIALOG: j4,\n  SHOW_DIALOG_LOADING: L4,\n  SHOW_DIALOG_TOAST: M4,\n  constants: Kd,\n  epicMiddleware: jc,\n  store: Xn\n}, Symbol.toStringTag, { value: \"Module\" })), Ht = _c({\n  plugins: [Sc]\n}), Ag = Ht.entity({\n  id: Ht.field(\n    () => Mi([wc(), an()]).transform((e) => String(e))\n  ),\n  title: Ht.field(() => an()),\n  comment: Ht.field(\n    () => an().optional().transform((e) => String(e ?? \"\"))\n  )\n});\nasync function Uc(e) {\n  return await (await fetch(`/movies/${e}`)).json();\n}\nconst Zc = async () => await (await fetch(\"/movies\")).json(), qc = async (e, t) => await (await fetch(`/movies/${e}`, {\n  method: \"POST\",\n  body: JSON.stringify({ comment: t }),\n  headers: { \"Content-Type\": \"application/json\" }\n})).json(), Og = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  fetchMovie: Uc,\n  fetchMovies: Zc,\n  updateMovie: qc\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction Cg(e) {\n  const t = {\n    all: () => [\"movies\"],\n    list: () => [...t.all(), \"list\"],\n    details: () => [...t.all(), \"detail\"],\n    detail: (n) => [...t.details(), n]\n  };\n  return e.setMutationDefaults(t.all(), {\n    mutationFn: async ({ id: n, comment: r }) => (await e.cancelQueries({ queryKey: t.detail(n) }), qc(n, r))\n  }), {\n    movieQueryOptions: (n) => ({\n      queryKey: t.detail(n),\n      queryFn: () => Uc(n)\n    }),\n    moviesQueryOptions: () => ({\n      queryKey: t.list(),\n      queryFn: Zc\n    }),\n    movieMutationOptions: (n, r, i) => {\n      const s = t.detail(n);\n      return {\n        mutationKey: s,\n        onMutate: async () => {\n          await e.cancelQueries({ queryKey: s });\n          const o = e.getQueryData(s);\n          return i(void 0), e.setQueryData(s, {\n            ...o,\n            movie: {\n              ...o.movie,\n              comment: r\n            }\n          }), { previousData: o };\n        },\n        onError: (o, u, a) => {\n          e.setQueryData(s, a.previousData);\n        },\n        onSettled: () => {\n          e.invalidateQueries({ queryKey: s });\n        }\n      };\n    }\n  };\n}\nconst jE = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  Movie: Ag,\n  MovieApi: Og,\n  createMovieQuery: Cg\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n  zn as ALGORITHM,\n  kl as AbortControllerCache,\n  xh as AbortError,\n  Cw as AuthenticatableDecorator,\n  Tw as AuthorizeDecorator,\n  tt as BUFFER_ENCODING,\n  Bn as BasicHeap,\n  _E as BinarySearch,\n  aw as BinarySearchTree,\n  Ot as BinaryTreeNode,\n  bE as BubbleSort,\n  ve as BufferAttribute,\n  zg as CIPHER,\n  Bg as CSS_ANIMATION_NAME,\n  Fw as CircularBuffer,\n  Ye as Color,\n  J2 as CommandInvoker,\n  Mw as ConfigurableDecorator,\n  zw as DebounceDecorator,\n  iE as DeriveWorker,\n  OE as DiffArray,\n  pe as DomMatrix,\n  Z as DomPoint,\n  Tg as ENV,\n  nb as EPSILON,\n  _y as EndTruncatingAccumulator,\n  jw as EnumerableDecorator,\n  Jw as EventBus,\n  gt as FETCH_RESPONSE_TYPE,\n  xg as FRAME_INTERVAL,\n  Rg as FRAME_INTERVAL_MS,\n  G2 as FetchWithAxios,\n  Yc as FileReaderResponseTypeInBrowser,\n  Qy as Float16BufferAttribute,\n  Jy as Float32BufferAttribute,\n  Uo as FnScheduler,\n  cw as Graph,\n  fn as GraphEdge,\n  oi as GraphNode,\n  vw as HashCache,\n  ww as HashObject,\n  bw as HashTable,\n  Wi as HashTableOverflow,\n  vE as HeapSort,\n  AF as HttpError,\n  e0 as HttpStatusCode,\n  Ll as IdleScheduler,\n  FE as InsertSort,\n  Wy as Int16BufferAttribute,\n  Vy as Int32BufferAttribute,\n  Uy as Int8BufferAttribute,\n  gu as InvalidCharacterError,\n  Pg as LINE_ENDING_TYPE,\n  ai as LRUCache,\n  dw as LinkedList,\n  ui as ListNode,\n  kw as LogExecuteResultDecorator,\n  Nw as LogExecuteTimeDecorator,\n  q0 as MAX_SAFE_INTEGER,\n  W0 as MAX_SIGNED_INT,\n  be as MIME,\n  tb as MIN_SAFE_INTEGER,\n  Kw as Mailbox,\n  er as Map,\n  Ol as MapCache,\n  hw as MaxHeap,\n  xw as MaxLengthDecorator,\n  TE as MementoCaretaker,\n  CE as MementoOriginator,\n  $w as MemoizeDecorator,\n  Cs as MergeSort,\n  Os as MergeSort2,\n  fw as MinHeap,\n  Rw as MinLengthDecorator,\n  Jr as NO_NUMBER,\n  Er as NO_VALUE,\n  Gw as NotifyScheduler,\n  si as ONE_DAY_TIMESTAMP,\n  Ig as PAGE_FROM_SCENE,\n  ln as PRIORITIES,\n  cn as PROCESS,\n  AE as PrefixSumArray,\n  lw as PriorityQueue,\n  Iw as ProfileDecorator,\n  Bt as Queue,\n  me as QueueOverflow,\n  SE as QuickSearch,\n  Ts as QuickSort,\n  Rs as QuickSort2,\n  Q2 as QuickSort_partition,\n  Lw as ReadonlyDecorator,\n  Bw as RetryDecorator,\n  Dt as SYMBOL_META,\n  RE as SaveCommand,\n  wE as SelectSort,\n  _w as SetCache,\n  CF as ShellError,\n  EE as ShellSort,\n  Ow as SingletonDecorator,\n  ow as Stream,\n  ci as TTLCache,\n  xs as ThreeWayQuickSort,\n  Pw as ThrottleDecorator,\n  Gy as Uint16BufferAttribute,\n  Ky as Uint32BufferAttribute,\n  Zy as Uint8BufferAttribute,\n  qy as Uint8ClampedBufferAttribute,\n  xE as UndoCommand,\n  _o as WeakMap,\n  mo as YZ_PREFIX,\n  Yt as ZeroArray,\n  fs as __color,\n  Hy as _instanceof,\n  kg as action,\n  ab as add,\n  al as addMapEntry,\n  cl as addSetEntry,\n  X6 as all,\n  f1 as angle,\n  Rb as appendArrayItem,\n  l1 as appendURL,\n  eE as appendURLRecord,\n  Kb as appendUniqueArray,\n  x6 as apply,\n  ed as applyMiddleware,\n  zb as arrayCount,\n  Bb as arrayEvery,\n  kb as arrayHead,\n  rl as arrayIncludes,\n  Pb as arrayIterate,\n  r6 as arrayNeedsUint32,\n  il as arrayShift,\n  $b as arraySome,\n  Nb as arrayTail,\n  N5 as assoc,\n  Ut as assocIndexOf,\n  Ph as atob,\n  ob as average,\n  zh as base58Encode,\n  Nh as base64URLDecode,\n  kh as base64URLEncode,\n  Qf as bd09_to_gcj02,\n  VF as bd09_to_wgs84,\n  x5 as bind,\n  k5 as bindObjectThis,\n  Ih as btoa,\n  Lo as cAF,\n  Ww as cIC,\n  yF as canUseBitmap,\n  Th as canUseWorker,\n  mE as cancelFetchWithFetch,\n  ey as capitalize,\n  o6 as changeTimeZone,\n  Gg as charAt,\n  N as clamp,\n  S5 as classMixin,\n  TF as classifyAxiosError,\n  jb as clearArray,\n  B5 as clearObject,\n  Cb as clone2DArrayEmpty,\n  Xr as cloneArrayBuffer,\n  Ob as cloneArrayEmpty,\n  C5 as cloneAsPrototype,\n  xy as cloneDataView,\n  i6 as cloneMap,\n  n0 as cloneRegExp,\n  s6 as cloneSet,\n  i5 as cloneSymbol,\n  h0 as cloneTypedArray,\n  Nl as closeLog,\n  IE as combineEpics,\n  Y2 as combineReducers,\n  rF as compareVersion,\n  bl as compose,\n  Ry as concateTypedArray,\n  Ay as convertLeadingTabsToSpaces,\n  d6 as copyTimeArray,\n  by as countCharInString,\n  el as create2DArray,\n  vb as createArray,\n  _b as createArrayIterate,\n  fE as createAxiosGetWithMemoize,\n  K2 as createAxiosGetWithRetry,\n  dE as createAxiosGetWithRetryAndMemoize,\n  pE as createBodyBuffer,\n  Qw as createCapacityWake,\n  K5 as createCommonDateValidator,\n  J5 as createCommonDatetimeValidator,\n  G5 as createCommonEmailValidator,\n  Y5 as createCommonEnumValidator,\n  X5 as createCommonLengthValidator,\n  H5 as createCommonNumberValidator,\n  V5 as createCommonPhoneValidator,\n  Q5 as createCommonTimeValidator,\n  Dw as createDroppingRingQueue,\n  Eb as createEmptyArray,\n  td as createEpicMiddleware,\n  yw as createExpandingRingQueue,\n  mw as createFixedRingQueue,\n  zF as createId,\n  Fb as createNextInt,\n  pw as createNoneRingQueue,\n  ba as createReduxStore,\n  jo as createSignal,\n  gw as createSlidingRingQueue,\n  Hc as createSymbol,\n  LE as createTanStackQueryCore,\n  zE as createThunkMiddleware,\n  kE as createTimestampValue,\n  $l as createWorkerPool,\n  Ct as curry,\n  Xw as customDelay,\n  F6 as dayOfYear,\n  yl as debounce,\n  mb as decimalNumber,\n  f6 as decreaseTimeArray,\n  LF as decrypt,\n  Ne as deepClone,\n  N0 as deepDiff,\n  Ao as deepEqual,\n  El as deferred,\n  oE as deg,\n  nl as deleteArrayItem,\n  yt as denormalize,\n  Sy as detectLineEndingsForString,\n  qi as diffDays,\n  t6 as differenceArray,\n  n6 as differenceSet,\n  Hw as discardOddDoubleEven,\n  uE as distance,\n  kF as djb2Hash,\n  $F as encrypt,\n  x0 as eq,\n  Il as error,\n  Rh as errorMessage,\n  my as escapeRegExp,\n  u0 as escapeXml,\n  Dy as escapeXmlAttr,\n  Q0 as euclideanModulo,\n  rd as exceptionLoggerMiddleware,\n  Sr as execNoThrow,\n  Y6 as execToDone,\n  BE as executeTimeLoggerMiddleware,\n  X0 as extractAllNumbers,\n  yb as extractNumber,\n  Oi as fetchWithFetch,\n  gE as fetchWithFetchMemoize,\n  DE as fetchWithFetchRetry,\n  yE as fetchWithFetchRetryAndMemoize,\n  P5 as filterObject,\n  yy as firstLineOf,\n  Kg as fixChineseCompanyName,\n  Vg as fixChineseTaxNo,\n  Qg as fixEmail,\n  xo as fixedDotNumberString,\n  db as fixedNumberString,\n  qb as flattenArray,\n  ol as flattenArray2,\n  ul as flattenArray3,\n  Wb as flattenArray4,\n  Gb as flattenArray5,\n  sl as flushArray,\n  iw as flushPromises,\n  YF as flushURLRecord,\n  c1 as flushURLSearch,\n  rE as formDataToSearch,\n  Pt as format,\n  g6 as formatDate,\n  _r as formatDateTime,\n  qf as formatDistance,\n  WF as formatFileSize,\n  wi as formatMoney,\n  Wf as formatMoneyMaxDot,\n  Db as formatNumber,\n  gb as formatNumberThousandSeparator,\n  D6 as formatPreset,\n  y6 as formatTime,\n  b6 as formatTime2,\n  c6 as formatTimeArray,\n  hl as formatTimeArrayChinese,\n  QF as formatUrl,\n  T0 as freeze,\n  _5 as functionMixin,\n  KF as gb32100_2015,\n  n1 as gbt11714,\n  Kf as gcj02_to_bd09,\n  Vf as gcj02_to_wgs84,\n  V6 as generatorFromArray,\n  K6 as generatorToArray,\n  Ab as get2DArrayColumn,\n  Sb as get2DArrayRow,\n  a0 as getArrayBufferFromByteArray,\n  Di as getBrowserClient,\n  sF as getBrowserClientVersion,\n  oF as getBrowserLanguage,\n  p0 as getByteArrayFromArrayBuffer,\n  Py as getByteArrayFromHexString,\n  Iy as getByteArrayFromNumber,\n  m0 as getByteArrayFromString,\n  Ew as getCacheType,\n  A6 as getCalendarPageItems,\n  zy as getCodePointArrayFromString,\n  h1 as getCrossOriginWorkerURL,\n  Cy as getDataViewFromArrayBuffer,\n  bt as getDateDetail,\n  We as getDefinedRegExpPattern,\n  ye as getDegree,\n  lE as getDirection,\n  Du as getErrnoCode,\n  _F as getErrnoPath,\n  jy as getFileExtension,\n  My as getFileMimeFromArrayBuffer,\n  ml as getFirstTimestampOfMonth,\n  E6 as getFirstTimestampOfNextMonth,\n  Gc as getGlobal,\n  By as getHexNumberFromByteArray,\n  D0 as getHexStringFromByteArray,\n  Ah as getInternetExplorerVersion,\n  dl as getLastDayOfMonth,\n  pl as getLastTimestampOfMonth,\n  v6 as getLastTimestampOfPrevMonth,\n  ni as getNative,\n  $5 as getNestedKey,\n  L5 as getNestedValue,\n  V0 as getNextPrime,\n  qt as getNthDay,\n  S6 as getNthMonth,\n  _6 as getNthMonthNotGood,\n  mi as getOperatingSystem,\n  iF as getOperatingSystemVersion,\n  F5 as getOwnPropertyDescriptors,\n  h5 as getPrototype,\n  t0 as getRegExpFlags,\n  Fl as getRetryDelay,\n  HF as getSearchParams,\n  en as getSecondsFromTimeArray,\n  k0 as getSortedObjectString,\n  yo as getStringFromArrayBuffer,\n  $y as getStringFromArrayBuffer2,\n  g0 as getStringFromByteArray,\n  ue as getTag,\n  uF as getTimeZone,\n  Xy as getType,\n  Oy as getTypedArrayConstructorName,\n  Ty as getTypedArrayFromArrayBuffer,\n  Gu as getURL,\n  Ny as getUint64BigIntFromDataView,\n  ky as getUint64FromDataView,\n  ei as getUint8ArrayFromString,\n  No as getUintArray,\n  qg as getUnicodeLengthES5,\n  Gi as groupLog,\n  wF as hasExactErrorMessage,\n  E5 as hasProperty,\n  O6 as idempotent,\n  h6 as increaseTimeArray,\n  $e as info,\n  T5 as inheritPrototype,\n  H0 as intNumber,\n  Hb as intersectArray,\n  Xb as intersectArrayUseMap,\n  Yb as intersectSet,\n  Zb as intersperseArray,\n  hy as is32BitString,\n  OF as isAbortError,\n  Ch as isAliBrowser,\n  gF as isAliMiniProgram,\n  Sh as isAndroid,\n  cF as isAppleDevice,\n  Ge as isArray,\n  c0 as isArrayBufferView,\n  Mb as isArrayEqual,\n  a5 as isArrayLike,\n  Lb as isArrayNotEmpty,\n  lF as isBadAndroid,\n  t5 as isBoolean,\n  vh as isBrowser,\n  A5 as isCloneable,\n  g5 as isDate,\n  q5 as isDateExpired,\n  Z5 as isDateNotStart,\n  f5 as isDescriptor,\n  EF as isENOENT,\n  $0 as isEmail,\n  De as isEmptyObject,\n  bF as isErrorType,\n  sb as isEven,\n  vF as isFsInaccessible,\n  Oe as isFunction,\n  d5 as isGenerator,\n  fF as isIE,\n  pF as isIE10,\n  mF as isIE11,\n  dF as isIE9,\n  mu as isIOS,\n  W5 as isInDateRage,\n  m6 as isInDays,\n  Z0 as isInRange,\n  p6 as isInTime,\n  p5 as isIterable,\n  C0 as isIterator,\n  c5 as isKeyable,\n  Yr as isLittleEndian,\n  _h as isMacOS,\n  m5 as isMap,\n  Sl as isMapCacheContext,\n  hF as isMobile,\n  hn as isNative,\n  o5 as isNativeFunction,\n  j5 as isNestedValueChanged,\n  nF as isNode,\n  I0 as isNonNullable,\n  e5 as isNull,\n  r5 as isNumber,\n  eb as isNumeric,\n  ct as isObject,\n  ri as isObjectLike,\n  L0 as isPhone,\n  Ee as isPlainObject,\n  Ro as isPositive,\n  we as isPositiveInt,\n  tr as isPositiveIntOrInfinite,\n  rb as isPositiveOrInfinite,\n  To as isPositiveOrZero,\n  ib as isPositiveOrZeroOrInfinite,\n  G0 as isPrime,\n  ti as isPrimitive,\n  So as isPromise,\n  l5 as isPrototype,\n  Ng as isReduxStore,\n  aF as isSafari,\n  a1 as isSameOriginURL,\n  tF as isServer,\n  D5 as isSet,\n  Al as isSetCacheContext,\n  e6 as isSetIntersects,\n  Co as isSettled,\n  Ve as isSettledAndPrimitive,\n  y5 as isStrictComparable,\n  n5 as isString,\n  s5 as isStringableFunction,\n  A0 as isSymbol,\n  Qc as isSymbolString,\n  Io as isTimestampInMilliSeconds,\n  ll as isTimestampInSeconds,\n  V2 as isTransientNetworkError,\n  l0 as isTypedArray,\n  JF as isURL,\n  Yy as isUndefined,\n  $ as isValidDate,\n  It as isValidNumber,\n  w6 as isWeekend,\n  Oh as isWxBrowser,\n  DF as isWxMiniProgram,\n  R6 as kDone,\n  T6 as kFalse,\n  C6 as kTrue,\n  Po as konst,\n  Q6 as lastX,\n  xr as length,\n  Xt as lerp,\n  hb as lerpMap,\n  lb as lerps,\n  s0 as lowercaseFirst,\n  $t as macrotask,\n  Z6 as map,\n  ji as mapToArray,\n  Fe as maxDotNumber,\n  pb as maxDotNumber2,\n  J0 as maxDotNumberString,\n  Ke as memoize,\n  L6 as memoizeOne,\n  Ml as mergeAbortSignals,\n  At as mergeObjectDeep,\n  Qr as meta,\n  Pl as microtask,\n  Zt as milliseconds,\n  hE as moved,\n  u5 as nativeCreate,\n  R0 as newConstructor,\n  Uw as nextTick,\n  Dl as noop,\n  Y as normalize,\n  wy as normalizeFullWidthDigits,\n  Fy as normalizeFullWidthSpace,\n  cE as normalizePoint,\n  M as now,\n  Ib as numberArrayMiddle,\n  f0 as numberToRadixString,\n  w5 as objectEntries,\n  U5 as objectGroupBy,\n  ii as objectKeys,\n  Mh as objectSignature,\n  b5 as objectValues,\n  PE as ofType,\n  k6 as once,\n  Sw as openLog,\n  $E as operationParser,\n  ju as out_of_china,\n  wl as overArg,\n  $6 as overRest,\n  RF as pack,\n  oy as padString,\n  sw as parallelWithLimit,\n  Le as parseDate,\n  UF as parseJSONL,\n  X as parseNumber,\n  ub as parseRelativeNumber,\n  l6 as parseTime,\n  Zi as parseTimeFromArray,\n  fl as parseTimeFromDateDiff,\n  Yw as pausable$,\n  z5 as pick,\n  N6 as pipe,\n  I6 as pipeMiddleware,\n  gy as plural,\n  aE as polar,\n  Tb as popToArrayHead,\n  Vi as profileLog,\n  eF as prop$,\n  pn as rAF,\n  qw as rIC,\n  sE as rad,\n  d0 as radixStringToNumber,\n  Bh as randomBytes,\n  bb as randomDirection,\n  Y0 as randomFloat,\n  BF as randomId,\n  wb as randomInt,\n  Hg as randomLetter,\n  Do as randomString,\n  Jg as randomStringNumber,\n  NF as randomUUID,\n  Yg as raw,\n  X2 as rawState,\n  uw as readStream,\n  a6 as readableTimestamp,\n  Vu as recordToSearch,\n  q6 as reduce,\n  jg as regExec,\n  Hr as regMatch,\n  Mg as regMatchAll,\n  $g as regSearchIndex,\n  Lg as regSplit,\n  Nt as regTest,\n  uy as repeatString,\n  Bl as requestAnimationFrameLoop,\n  zt as retry,\n  M6 as retryAndMemoize,\n  J6 as returnValue,\n  B6 as reverseArgs,\n  ly as reverseString,\n  _ as root,\n  cb as round,\n  nw as runAsyncFnsSequence,\n  H6 as runGenerator,\n  rw as runPromisesSequence,\n  Te as runValidates,\n  NE as rxState,\n  Ey as safeJoinLines,\n  Ji as scheduleIdle,\n  Vw as scheduleIdleLoop,\n  tE as searchToRecord,\n  nE as searchToRecord2,\n  Zw as setIntervalAccurate,\n  Aw as setLogUploadFn,\n  M5 as setNestedValue,\n  R5 as setProtoOf,\n  Ki as setTimeoutAccurate,\n  Ui as setToArray,\n  O5 as shallowClone,\n  SF as shortErrorStack,\n  Ub as shuffleArray,\n  v5 as shuffleObject,\n  MF as signEncrypt,\n  Lh as signature,\n  ew as sleep,\n  tw as sleepSync,\n  Wg as sliceByCodePoints,\n  d1 as splitTransformString,\n  nd as stateLoggerMiddleware,\n  fb as stepMap,\n  py as stringByteSize,\n  at as stringLength,\n  Ug as stringLength2,\n  Zg as stringLength3,\n  Xg as stringReplace,\n  ZF as stringWidth,\n  bu as stripBOM,\n  I5 as subtractObject,\n  tl as swapArrayValue,\n  z6 as tco,\n  jE as test,\n  gl as throttle,\n  G6 as thunkToPromise,\n  W6 as thunkify,\n  dn as timeLog,\n  Ly as toBlob,\n  ny as toCamel,\n  oe as toDegree,\n  FF as toError,\n  Oo as toFunctionString,\n  ty as toKebab,\n  o0 as toPascal,\n  Ku as toRadian,\n  PF as toTaggedId,\n  xb as toggleArrayItem,\n  U6 as trace,\n  P6 as trampoline,\n  nr as treeify,\n  ry as trim,\n  XF as trimHash,\n  sy as trimScopedCSS,\n  iy as trimSpecial,\n  ay as truncateString,\n  cy as truncateStringInMiddle,\n  vy as truncateToLines,\n  j6 as tryEach,\n  u6 as ttlInMilliseconds,\n  Qb as unionArray,\n  Jb as unionSet,\n  Vb as uniqueArray,\n  xF as unpack,\n  u1 as urlQueryToSearchParams,\n  fy as utf16to8,\n  dy as utf8to16,\n  IF as validateUUID,\n  jF as verifyDecrypt,\n  _e as warn,\n  GF as wgs84_to_bd09,\n  Gf as wgs84_to_gcj02,\n  _l as withSignal,\n  zo as withTimeout,\n  K0 as withinErrorMarginNumber,\n  qF as wrapAnsi,\n  ME as xg,\n  zl as yieldToMain\n};\n//# sourceMappingURL=zyzgroup_core_common.js.map\n","(function (factory) {\n    if (typeof exports === 'object') {\n        // Node/CommonJS\n        module.exports = factory();\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD\n        define(factory);\n    } else {\n        // Browser globals (with support for web workers)\n        var glob;\n\n        try {\n            glob = window;\n        } catch (e) {\n            glob = self;\n        }\n\n        glob.SparkMD5 = factory();\n    }\n}(function (undefined) {\n\n    'use strict';\n\n    /*\n     * Fastest md5 implementation around (JKM md5).\n     * Credits: Joseph Myers\n     *\n     * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n     * @see http://jsperf.com/md5-shootout/7\n     */\n\n    /* this function is much faster,\n      so if possible we use it. Some IEs\n      are the only ones I know of that\n      need the idiotic second function,\n      generated by an if clause.  */\n    var add32 = function (a, b) {\n        return (a + b) & 0xFFFFFFFF;\n    },\n        hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n    function cmn(q, a, b, x, s, t) {\n        a = add32(add32(a, q), add32(x, t));\n        return add32((a << s) | (a >>> (32 - s)), b);\n    }\n\n    function md5cycle(x, k) {\n        var a = x[0],\n            b = x[1],\n            c = x[2],\n            d = x[3];\n\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a  = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d  = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c  = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b  = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a  = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d  = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c  = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b  = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a  = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d  = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c  = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b  = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a  = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d  = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c  = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b  = (b << 22 | b >>> 10) + c | 0;\n\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a  = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d  = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c  = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b  = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a  = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d  = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c  = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b  = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a  = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d  = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c  = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b  = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a  = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d  = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c  = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b  = (b << 20 | b >>> 12) + c | 0;\n\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a  = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d  = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c  = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b  = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a  = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d  = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c  = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b  = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a  = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d  = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c  = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b  = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a  = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d  = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c  = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b  = (b << 23 | b >>> 9) + c | 0;\n\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a  = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d  = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c  = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b  = (b << 21 |b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a  = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d  = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c  = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b  = (b << 21 |b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a  = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d  = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c  = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b  = (b << 21 |b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a  = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d  = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c  = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b  = (b << 21 | b >>> 11) + c | 0;\n\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n    }\n\n    function md5blk(s) {\n        var md5blks = [],\n            i; /* Andy King said do it this way. */\n\n        for (i = 0; i < 64; i += 4) {\n            md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n    }\n\n    function md5blk_array(a) {\n        var md5blks = [],\n            i; /* Andy King said do it this way. */\n\n        for (i = 0; i < 64; i += 4) {\n            md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n        return md5blks;\n    }\n\n    function md51(s) {\n        var n = s.length,\n            state = [1732584193, -271733879, -1732584194, 271733878],\n            i,\n            length,\n            tail,\n            tmp,\n            lo,\n            hi;\n\n        for (i = 64; i <= n; i += 64) {\n            md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n        for (i = 0; i < length; i += 1) {\n            tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n        }\n        tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n        if (i > 55) {\n            md5cycle(state, tail);\n            for (i = 0; i < 16; i += 1) {\n                tail[i] = 0;\n            }\n        }\n\n        // Beware that the final length might not fit in 32 bits so we take care of that\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n\n        tail[14] = lo;\n        tail[15] = hi;\n\n        md5cycle(state, tail);\n        return state;\n    }\n\n    function md51_array(a) {\n        var n = a.length,\n            state = [1732584193, -271733879, -1732584194, 271733878],\n            i,\n            length,\n            tail,\n            tmp,\n            lo,\n            hi;\n\n        for (i = 64; i <= n; i += 64) {\n            md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n\n        // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n        // containing the last element of the parent array if the sub array specified starts\n        // beyond the length of the parent array - weird.\n        // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n        a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n        length = a.length;\n        tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n        for (i = 0; i < length; i += 1) {\n            tail[i >> 2] |= a[i] << ((i % 4) << 3);\n        }\n\n        tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n        if (i > 55) {\n            md5cycle(state, tail);\n            for (i = 0; i < 16; i += 1) {\n                tail[i] = 0;\n            }\n        }\n\n        // Beware that the final length might not fit in 32 bits so we take care of that\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n\n        tail[14] = lo;\n        tail[15] = hi;\n\n        md5cycle(state, tail);\n\n        return state;\n    }\n\n    function rhex(n) {\n        var s = '',\n            j;\n        for (j = 0; j < 4; j += 1) {\n            s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n        }\n        return s;\n    }\n\n    function hex(x) {\n        var i;\n        for (i = 0; i < x.length; i += 1) {\n            x[i] = rhex(x[i]);\n        }\n        return x.join('');\n    }\n\n    // In some cases the fast add32 function cannot be used..\n    if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n        add32 = function (x, y) {\n            var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n                msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n            return (msw << 16) | (lsw & 0xFFFF);\n        };\n    }\n\n    // ---------------------------------------------------\n\n    /**\n     * ArrayBuffer slice polyfill.\n     *\n     * @see https://github.com/ttaubert/node-arraybuffer-slice\n     */\n\n    if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n        (function () {\n            function clamp(val, length) {\n                val = (val | 0) || 0;\n\n                if (val < 0) {\n                    return Math.max(val + length, 0);\n                }\n\n                return Math.min(val, length);\n            }\n\n            ArrayBuffer.prototype.slice = function (from, to) {\n                var length = this.byteLength,\n                    begin = clamp(from, length),\n                    end = length,\n                    num,\n                    target,\n                    targetArray,\n                    sourceArray;\n\n                if (to !== undefined) {\n                    end = clamp(to, length);\n                }\n\n                if (begin > end) {\n                    return new ArrayBuffer(0);\n                }\n\n                num = end - begin;\n                target = new ArrayBuffer(num);\n                targetArray = new Uint8Array(target);\n\n                sourceArray = new Uint8Array(this, begin, num);\n                targetArray.set(sourceArray);\n\n                return target;\n            };\n        })();\n    }\n\n    // ---------------------------------------------------\n\n    /**\n     * Helpers.\n     */\n\n    function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n            str = unescape(encodeURIComponent(str));\n        }\n\n        return str;\n    }\n\n    function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length,\n           buff = new ArrayBuffer(length),\n           arr = new Uint8Array(buff),\n           i;\n\n        for (i = 0; i < length; i += 1) {\n            arr[i] = str.charCodeAt(i);\n        }\n\n        return returnUInt8Array ? arr : buff;\n    }\n\n    function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n    }\n\n    function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n\n        return returnUInt8Array ? result : result.buffer;\n    }\n\n    function hexToBinaryString(hex) {\n        var bytes = [],\n            length = hex.length,\n            x;\n\n        for (x = 0; x < length - 1; x += 2) {\n            bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n\n        return String.fromCharCode.apply(String, bytes);\n    }\n\n    // ---------------------------------------------------\n\n    /**\n     * SparkMD5 OOP implementation.\n     *\n     * Use this class to perform an incremental md5, otherwise use the\n     * static methods instead.\n     */\n\n    function SparkMD5() {\n        // call reset to init the instance\n        this.reset();\n    }\n\n    /**\n     * Appends a string.\n     * A conversion will be applied if an utf8 string is detected.\n     *\n     * @param {String} str The string to be appended\n     *\n     * @return {SparkMD5} The instance itself\n     */\n    SparkMD5.prototype.append = function (str) {\n        // Converts the string to utf8 bytes if necessary\n        // Then append as binary\n        this.appendBinary(toUtf8(str));\n\n        return this;\n    };\n\n    /**\n     * Appends a binary string.\n     *\n     * @param {String} contents The binary string to be appended\n     *\n     * @return {SparkMD5} The instance itself\n     */\n    SparkMD5.prototype.appendBinary = function (contents) {\n        this._buff += contents;\n        this._length += contents.length;\n\n        var length = this._buff.length,\n            i;\n\n        for (i = 64; i <= length; i += 64) {\n            md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n\n        this._buff = this._buff.substring(i - 64);\n\n        return this;\n    };\n\n    /**\n     * Finishes the incremental computation, reseting the internal state and\n     * returning the result.\n     *\n     * @param {Boolean} raw True to get the raw string, false to get the hex string\n     *\n     * @return {String} The result\n     */\n    SparkMD5.prototype.end = function (raw) {\n        var buff = this._buff,\n            length = buff.length,\n            i,\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n            ret;\n\n        for (i = 0; i < length; i += 1) {\n            tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n        }\n\n        this._finish(tail, length);\n        ret = hex(this._hash);\n\n        if (raw) {\n            ret = hexToBinaryString(ret);\n        }\n\n        this.reset();\n\n        return ret;\n    };\n\n    /**\n     * Resets the internal state of the computation.\n     *\n     * @return {SparkMD5} The instance itself\n     */\n    SparkMD5.prototype.reset = function () {\n        this._buff = '';\n        this._length = 0;\n        this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n        return this;\n    };\n\n    /**\n     * Gets the internal state of the computation.\n     *\n     * @return {Object} The state\n     */\n    SparkMD5.prototype.getState = function () {\n        return {\n            buff: this._buff,\n            length: this._length,\n            hash: this._hash.slice()\n        };\n    };\n\n    /**\n     * Gets the internal state of the computation.\n     *\n     * @param {Object} state The state\n     *\n     * @return {SparkMD5} The instance itself\n     */\n    SparkMD5.prototype.setState = function (state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n\n        return this;\n    };\n\n    /**\n     * Releases memory used by the incremental buffer and other additional\n     * resources. If you plan to use the instance again, use reset instead.\n     */\n    SparkMD5.prototype.destroy = function () {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n    };\n\n    /**\n     * Finish the final calculation based on the tail.\n     *\n     * @param {Array}  tail   The tail (will be modified)\n     * @param {Number} length The length of the remaining buffer\n     */\n    SparkMD5.prototype._finish = function (tail, length) {\n        var i = length,\n            tmp,\n            lo,\n            hi;\n\n        tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n        if (i > 55) {\n            md5cycle(this._hash, tail);\n            for (i = 0; i < 16; i += 1) {\n                tail[i] = 0;\n            }\n        }\n\n        // Do the final computation based on the tail and length\n        // Beware that the final length may not fit in 32 bits so we take care of that\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n    };\n\n    /**\n     * Performs the md5 hash on a string.\n     * A conversion will be applied if utf8 string is detected.\n     *\n     * @param {String}  str The string\n     * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n     *\n     * @return {String} The result\n     */\n    SparkMD5.hash = function (str, raw) {\n        // Converts the string to utf8 bytes if necessary\n        // Then compute it using the binary function\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n    };\n\n    /**\n     * Performs the md5 hash on a binary string.\n     *\n     * @param {String}  content The binary string\n     * @param {Boolean} [raw]     True to get the raw string, false to get the hex string\n     *\n     * @return {String} The result\n     */\n    SparkMD5.hashBinary = function (content, raw) {\n        var hash = md51(content),\n            ret = hex(hash);\n\n        return raw ? hexToBinaryString(ret) : ret;\n    };\n\n    // ---------------------------------------------------\n\n    /**\n     * SparkMD5 OOP implementation for array buffers.\n     *\n     * Use this class to perform an incremental md5 ONLY for array buffers.\n     */\n    SparkMD5.ArrayBuffer = function () {\n        // call reset to init the instance\n        this.reset();\n    };\n\n    /**\n     * Appends an array buffer.\n     *\n     * @param {ArrayBuffer} arr The array to be appended\n     *\n     * @return {SparkMD5.ArrayBuffer} The instance itself\n     */\n    SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n            length = buff.length,\n            i;\n\n        this._length += arr.byteLength;\n\n        for (i = 64; i <= length; i += 64) {\n            md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n\n        this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n        return this;\n    };\n\n    /**\n     * Finishes the incremental computation, reseting the internal state and\n     * returning the result.\n     *\n     * @param {Boolean} raw True to get the raw string, false to get the hex string\n     *\n     * @return {String} The result\n     */\n    SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n        var buff = this._buff,\n            length = buff.length,\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n            i,\n            ret;\n\n        for (i = 0; i < length; i += 1) {\n            tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n        }\n\n        this._finish(tail, length);\n        ret = hex(this._hash);\n\n        if (raw) {\n            ret = hexToBinaryString(ret);\n        }\n\n        this.reset();\n\n        return ret;\n    };\n\n    /**\n     * Resets the internal state of the computation.\n     *\n     * @return {SparkMD5.ArrayBuffer} The instance itself\n     */\n    SparkMD5.ArrayBuffer.prototype.reset = function () {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n        return this;\n    };\n\n    /**\n     * Gets the internal state of the computation.\n     *\n     * @return {Object} The state\n     */\n    SparkMD5.ArrayBuffer.prototype.getState = function () {\n        var state = SparkMD5.prototype.getState.call(this);\n\n        // Convert buffer to a string\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n\n        return state;\n    };\n\n    /**\n     * Gets the internal state of the computation.\n     *\n     * @param {Object} state The state\n     *\n     * @return {SparkMD5.ArrayBuffer} The instance itself\n     */\n    SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n        // Convert string to buffer\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n        return SparkMD5.prototype.setState.call(this, state);\n    };\n\n    SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n    SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n    /**\n     * Performs the md5 hash on an array buffer.\n     *\n     * @param {ArrayBuffer} arr The array buffer\n     * @param {Boolean}     [raw] True to get the raw string, false to get the hex one\n     *\n     * @return {String} The result\n     */\n    SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)),\n            ret = hex(hash);\n\n        return raw ? hexToBinaryString(ret) : ret;\n    };\n\n    return SparkMD5;\n}));\n","import {\n  getFileMimeFromArrayBuffer,\n  toBlob,\n  MIME,\n  BufferEncoding,\n  TimeArray,\n  increaseTimeArray,\n  formatTimeArray,\n  FileReaderResponseTypeInBrowser,\n  FetchWithAxios,\n  BUFFER_ENCODING\n} from \"@zyzgroup/core-common\";\nimport SparkMD5 from \"spark-md5\";\n\nexport function querySelectorAllToStringArray(\n  query = 'script[type=\"text/js-worker\"]'\n): string[] {\n  return Array.prototype.map.call(\n    document.querySelectorAll(query),\n    (oScript) => oScript.textContent\n  ) as string[];\n}\n\nexport const domToString = (el: HTMLElement) => {\n  return new XMLSerializer().serializeToString(el);\n};\n\nexport const stringToDom = (\n  str: string,\n  type: DOMParserSupportedType = \"text/html\"\n) => {\n  return new DOMParser().parseFromString(str, type);\n};\n\nexport const domToBlob = (\n  el: HTMLElement,\n  options: {\n    type?: string;\n    mime?: MIME;\n    encode?: BufferEncoding;\n  } = {\n    mime: MIME[\"image/svg+xml\"],\n    encode: BUFFER_ENCODING.utf8\n  }\n) => {\n  return toBlob(domToString(el), options);\n};\n\nexport async function selectFileInBrowser(\n  accepts: string[] = [\"*\"],\n  multiple?: boolean\n): Promise<File[]> {\n  // if (!document || !(document instanceof Document)) {\n  //   throw new Error(\"This is not a browser environment\");\n  // }\n  // 新API\n  // window.showOpenFilePicker();\n  // window.showDirectoryPicker();\n  let files: File[] = [];\n  const input = document.createElement(\"input\") as HTMLInputElement;\n  input.setAttribute(\"type\", \"file\");\n  input.setAttribute(\"visibility\", \"hidden\");\n  input.setAttribute(\"accept\", accepts.join(\",\"));\n  if (multiple) {\n    input.setAttribute(\"multiple\", \"true\");\n  }\n  input.addEventListener(\n    \"click\",\n    (e) => {\n      // e.preventDefault();\n      // e.stopPropagation();\n      // input.blur();\n      input.value = \"\"; // 连续上传2次相同的文件时，清空 value 以触发 change 事件\n    },\n    false\n  );\n  return new Promise<File[]>((resolve, reject) => {\n    input.addEventListener(\n      \"change\",\n      (e: Event) => {\n        files = Array.from((e.target as HTMLInputElement).files || []);\n        if (files.length === 0) {\n          reject(new Error(\"Cancel\"));\n        }\n        // else if (\n        //   !accepts.includes(\"*\") &&\n        //   files.some((file) => !accepts.includes(`.${getFileExtension(file)}`))\n        // ) {\n        //   reject(new Error(`Please select files in ${accepts} format`));\n        // }\n        else {\n          resolve(files);\n        }\n      },\n      false\n    );\n    window.addEventListener(\n      \"focus\",\n      () => {\n        setTimeout(() => {\n          if (files.length === 0) {\n            reject(new Error(\"Cancel\"));\n          }\n        }, 1000);\n      },\n      { once: true }\n    );\n    // input.dispatchEvent(new MouseEvent(\"click\", { bubbles: true }));\n    input.click();\n  })\n    .then((files) => {\n      input.remove();\n      return files;\n    })\n    .catch((e) => {\n      input.remove();\n      throw e;\n    });\n}\n\nexport function readFileInBrowser<T extends string | ArrayBuffer>(\n  // files: FileList,\n  file: File | Blob,\n  type: FileReaderResponseTypeInBrowser = FileReaderResponseTypeInBrowser.text,\n  progressCb?: (loaded: number, total: number) => void\n): Promise<T> {\n  return new Promise<T>((resolve, reject) => {\n    const reader = new FileReader();\n    reader.addEventListener(\"progress\", (e: ProgressEvent<FileReader>) => {\n      // e: FileReaderEventMap[\"progress\"]\n      progressCb?.(e.loaded, e.total);\n    });\n    reader.addEventListener(\"load\", (e: FileReaderEventMap[\"load\"]) => {\n      resolve(e.target?.result as T);\n      // resolve(reader.result as T);\n    });\n    reader.addEventListener(\"error\", (e: FileReaderEventMap[\"error\"]) => {\n      reject(e);\n    });\n    switch (type) {\n      case FileReaderResponseTypeInBrowser.dataURL:\n        reader.readAsDataURL(file);\n        break;\n      case FileReaderResponseTypeInBrowser.binaryString:\n        reader.readAsBinaryString(file);\n        break;\n      case FileReaderResponseTypeInBrowser.arraybuffer:\n        reader.readAsArrayBuffer(file);\n        break;\n      case FileReaderResponseTypeInBrowser.text:\n      default:\n        reader.readAsText(file);\n    }\n  });\n}\n\nexport async function getFileMimeFromFileInBrowser(file: File): Promise<MIME> {\n  const arrayBuffer = await readFileInBrowser<ArrayBuffer>(\n    file,\n    FileReaderResponseTypeInBrowser.arraybuffer\n  );\n  return getFileMimeFromArrayBuffer(arrayBuffer);\n}\n\nfunction readFileMD5Hash(\n  resolve: (v: string) => void,\n  reject: (e: any) => void,\n  spark: SparkMD5.ArrayBuffer,\n  file: File,\n  chunkSize: number,\n  start: number,\n  end: number\n) {\n  const fileReader = new FileReader();\n  fileReader.addEventListener(\"load\", (e) => {\n    if (!e.target || !e.target.result) {\n      return reject(e);\n    }\n    spark.append(e.target.result as ArrayBuffer);\n    if (end < file.size) {\n      readFileMD5Hash(\n        resolve,\n        reject,\n        spark,\n        file,\n        chunkSize,\n        end,\n        Math.min(end + chunkSize, file.size)\n      );\n    } else {\n      return resolve(spark.end());\n    }\n  });\n  fileReader.addEventListener(\"error\", (e) => {\n    return reject(e);\n  });\n  fileReader.readAsArrayBuffer(file.slice(start, end));\n}\n\n// 获取文件 MD5 hash\nexport async function getFileMD5Hash(file: File, chunkSize = 1 * 1024 * 1024) {\n  return await new Promise<string>((resolve, reject) =>\n    readFileMD5Hash(\n      resolve,\n      reject,\n      new SparkMD5.ArrayBuffer(),\n      file,\n      chunkSize,\n      0,\n      Math.min(chunkSize, file.size)\n    )\n  );\n}\n\nexport class FileUpload {\n  axios: FetchWithAxios;\n  // 获取服务器端 文件 MD5 hash 地址\n  checkURL: string;\n  // 文件上传地址\n  uploadURL: string;\n  // 要上传的文件\n  file: File;\n  // 本地文件 MD5 hash\n  fileHash?: string;\n  // 文件切割块大小\n  chunkSize: number;\n  // 文件总切割数量\n  chunks: number;\n  // 当前块数\n  currentChunk = 0;\n  // 是否正在上传\n  isUploading = false;\n  begin = 0;\n  end = 0;\n  timer?: ReturnType<typeof setInterval>;\n  time: TimeArray = [0, 0, 0, 0, 0, 0];\n  onExist?: () => void;\n  onStart?: () => void;\n  onProgress?: (currentChunk: number, chunks: number) => void;\n  onComplete?: () => void;\n  onTime?: (time: string) => void;\n\n  constructor(options: {\n    baseURL: string;\n    checkURL: string;\n    uploadURL: string;\n    file: File;\n    chunkSize?: number;\n    onExist?: () => void;\n    onStart?: () => void;\n    onProgress?: (currentChunk: number, chunks: number) => void;\n    onComplete?: () => void;\n    onTime?: (time: string) => void;\n  }) {\n    this.axios = new FetchWithAxios({\n      baseURL: options.baseURL,\n      interceptors: {\n        response: (response) => {\n          if (response.config.url == this.uploadURL) {\n            if (response.status == 200) {\n              this.onProgress?.(this.currentChunk++, this.chunks);\n              if (this.end == this.file.size) {\n                this.isUploading = false;\n                this.stopTimeCount();\n                this.onComplete?.();\n              } else {\n                if (this.isUploading) {\n                  this.uploadChunk();\n                }\n              }\n            } else {\n              // UNDO: 上传失败，尝试重传\n            }\n          }\n        }\n      }\n    });\n    this.checkURL = options.checkURL;\n    this.uploadURL = options.uploadURL;\n    this.file = options.file;\n    this.chunkSize = options.chunkSize || 1 * 1024 * 1024;\n    this.chunks = Math.ceil(this.file.size / this.chunkSize);\n    this.onExist = options.onExist;\n    this.onStart = options.onStart;\n    this.onProgress = options.onProgress;\n    this.onComplete = options.onComplete;\n    this.onTime = options.onTime;\n  }\n\n  public async start() {\n    if (!this.fileHash) {\n      this.fileHash = await getFileMD5Hash(this.file, this.chunkSize);\n    }\n    // 后台判断文件是否已存在\n    const result = await this.axios.post(this.checkURL, {\n      fileName: this.file.name,\n      fileHash: this.fileHash\n    });\n    if (result.data.isExist) {\n      this.isUploading = false;\n      this.onExist?.();\n    } else {\n      if (!this.isUploading) {\n        this.onStart?.();\n        this.startTimeCount();\n        await this.uploadChunk();\n      }\n    }\n  }\n\n  public pause() {\n    if (this.isUploading) {\n      this.isUploading = false;\n      this.stopTimeCount();\n    }\n  }\n\n  private async uploadChunk() {\n    this.isUploading = true;\n    this.begin = this.currentChunk * this.chunkSize;\n    this.end = Math.min(this.begin + this.chunkSize, this.file.size);\n    const blob = this.file.slice(this.begin, this.end);\n    const fd = new FormData();\n    fd.append(\"fileData\", blob);\n    fd.append(\"fileName\", this.file.name);\n    fd.append(\"fileHash\", this.fileHash!);\n    fd.append(\"chunkIndex\", String(this.currentChunk));\n    fd.append(\"chunks\", String(this.chunks));\n    await this.axios.postFormData(this.uploadURL, fd);\n  }\n\n  private startTimeCount() {\n    this.stopTimeCount();\n    this.timer = setInterval(() => {\n      increaseTimeArray(this.time, 1);\n      this.onTime?.(formatTimeArray(this.time));\n    }, 1000);\n  }\n\n  private stopTimeCount() {\n    if (this.timer) {\n      clearInterval(this.timer);\n      this.timer = undefined;\n    }\n  }\n}\n","/* eslint-disable no-case-declarations */\nimport {\n  FileReaderResponseTypeInBrowser,\n  toKebab,\n  appendURL,\n  formDataToSearch,\n  recordToSearch\n} from \"@zyzgroup/core-common\";\nimport { readFileInBrowser } from \"./file\";\n\n/**\n * method=\"get\"\n * ?foo=bar&baz=The%20first%20line.%0AThe%20second%20line.\n *\n *****************\n *\n * method=\"post\" enctype=\"application/x-www-form-urlencoded\"\n * Content-Type: application/x-www-form-urlencoded\n * foo=bar&baz=The+first+line.%0D%0AThe+second+line.%0D%0A\n *\n *****************\n *\n * method=\"post\" enctype=\"text/plain\"\n * Content-Type: text/plain\n *\n * foo=bar\n * baz=The first line.\n * The second line.\n *\n *****************\n *\n * method=\"post\" enctype=\"multipart/form-data\"\n * Content-Type: multipart/form-data; boundary=---------------------------314911788813839\n *\n * -----------------------------314911788813839\n * Content-Disposition: form-data; name=\"foo\"\n *\n * bar\n * -----------------------------314911788813839\n * Content-Disposition: form-data; name=\"baz\"\n *\n * The first line.\n * The second line.\n *\n * -----------------------------314911788813839\n * Content-Disposition: form-data;name=\"pic\"; filename=\"photo.jpg\"\n * Content-Type: application/octet-stream\n * Content-Transfer-Encoding: binary\n *\n * // ... binary data of the jpg ...\n * -----------------------------314911788813839--\n */\n\nexport function createXMLHttpRequest() {\n  let xhr = null;\n  if (window.ActiveXObject) {\n    const versions = [\n      \"Microsoft.XMLHTTP\",\n      \"MSXML6.XMLHTTP\",\n      \"MSXML5.XMLHTTP\",\n      \"MSXML4.XMLHTTP\",\n      \"MSXML3.XMLHTTP\",\n      \"MSXML2.XMLHTTP\",\n      \"MSXML.XMLHTTP\"\n    ];\n    for (let i = 0, c = versions.length; i < c; i++) {\n      try {\n        xhr = new window.ActiveXObject(versions[i]);\n        break;\n      } catch (e) {\n        continue;\n      }\n    }\n  } else {\n    xhr = new XMLHttpRequest();\n  }\n  return xhr;\n}\n\nexport function ajax(\n  url: string,\n  options?: {\n    method: string; // GET, POST, PUT, DELETE, HEAD\n    data?: Record<string, string> | FormData;\n    multipartFormDataString?: string;\n    boundary?: string;\n    headers?: Record<string, string>;\n    withCredentials?: boolean;\n    responseType?: \"\" | \"json\" | \"arraybuffer\" | \"blob\" | \"document\" | \"text\";\n    timeout?: number;\n    progress?: (e: any, xhr: XMLHttpRequest, percentage: number) => void;\n    load?: (e: any, xhr: XMLHttpRequest) => void;\n    loadstart?: (e: any, xhr: XMLHttpRequest) => void;\n    loadend?: (e: any, xhr: XMLHttpRequest) => void;\n    error?: (e: any, xhr: XMLHttpRequest) => void;\n    abort?: (e: any, xhr: XMLHttpRequest) => void;\n  }\n) {\n  return new Promise((resolve, reject) => {\n    const {\n      method = \"GET\",\n      data = {},\n      multipartFormDataString = \"\",\n      boundary = \"\",\n      headers = {},\n      withCredentials = false,\n      responseType = \"json\",\n      timeout = 30000\n    } = options || {};\n    const xhr = createXMLHttpRequest();\n    xhr.timeout = timeout;\n    xhr.responseType = responseType;\n    xhr.onreadystatechange = function (e: any) {\n      // - 0 代理被创建，但尚未调用 open()方法\n      // - 1 open() 方法已经被调用\n      // - 2 send()方法已经被调用，并且头部和状态已经可获得\n      // - 3 下载中， responseText属性已经包含部分数据\n      // - 4 下载操作已完成\n      if (xhr.readyState === 4) {\n        if (xhr.status === 200) {\n          resolve(xhr.response); // xhr.responseText\n        } else {\n          reject(xhr.statusText);\n        }\n      }\n    };\n    xhr.ontimeout = () => {\n      reject(`${url} is timed out for ${timeout}ms.`);\n    };\n    // xhr.onload\n    xhr.addEventListener(\"load\", (e: any) => options?.load?.(e, xhr), false);\n    xhr.addEventListener(\n      \"loadstart\",\n      (e: any) => options?.loadstart?.(e, xhr),\n      false\n    );\n    xhr.addEventListener(\n      \"loadend\",\n      (e: any) => options?.loadend?.(e, xhr),\n      false\n    );\n    // xhr.upload\n    xhr.addEventListener(\n      \"progress\",\n      (e: any) => {\n        if (e.lengthComputable) {\n          const percentage = Math.round((e.loaded * 100) / e.total);\n          options?.progress?.(e, xhr, percentage);\n        }\n      },\n      false\n    );\n    // xhr.onerror\n    xhr.addEventListener(\"error\", (e: any) => options?.error?.(e, xhr), false);\n    // xhr.onabort\n    xhr.addEventListener(\"abort\", (e: any) => options?.abort?.(e, xhr), false);\n    const methodUpperCase = method.toUpperCase();\n    Object.assign(headers, {\n      Accept: \"*/*\"\n      // \"Access-Control-Request-Headers\": \"authorization\",\n      // \"Access-Control-Request-Method\": \"POST\",\n      // \"Content-Type\": \"application/json;charset=utf-8\",\n    });\n    let isMultipartFormData = false;\n    let isTextPlain = false;\n    let isSendJSON = false;\n    function setHeaders() {\n      // Fixes IE Caching problem\n      xhr.setRequestHeader(\"If-Modified-Since\", \"Sat, 1 Jan 2000 00:00:00 GMT\");\n      if (withCredentials) {\n        xhr.withCredentials = true;\n      }\n      for (const headerType in headers) {\n        if (\n          toKebab(headerType).toLowerCase() == \"content-type\" &&\n          headers[headerType].toLowerCase() == \"multipart/form-data\"\n        ) {\n          isMultipartFormData = true;\n          xhr.setRequestHeader(\n            \"Content-Type\",\n            \"multipart/form-data; boundary=\" + boundary\n          );\n        } else {\n          if (toKebab(headerType).toLowerCase() == \"content-type\") {\n            if (headers[headerType].toLowerCase().indexOf(\"text/plain\") >= 0) {\n              isTextPlain = true;\n              // xhr.overrideMimeType(\"text/plain; charset=x-user-defined-binary\");\n            } else if (\n              headers[headerType].toLowerCase().indexOf(\"application/json\") >= 0\n            ) {\n              isSendJSON = true;\n            }\n          }\n          xhr.setRequestHeader(headerType, headers[headerType]);\n        }\n      }\n    }\n    // 发送请求\n    switch (methodUpperCase) {\n      case \"GET\":\n        let dataString = \"\";\n        if (data instanceof FormData) {\n          dataString = formDataToSearch(data);\n        } else {\n          dataString = recordToSearch(data);\n        }\n        xhr.open(\"GET\", appendURL(url, dataString), true); // true: 异步\n        setHeaders();\n        xhr.send(null);\n        break;\n      default:\n        xhr.open(methodUpperCase, url, true);\n        setHeaders();\n        if (isMultipartFormData) {\n          xhr.sendAsBinary(multipartFormDataString);\n        } else {\n          if (isSendJSON) {\n            xhr.send(JSON.stringify(data));\n          } else if (isTextPlain) {\n            xhr.send(\n              Object.entries(data)\n                .map(([k, v]) => `${k}=${v}`)\n                .join(\"\\r\\n\")\n            );\n          } else {\n            xhr.send(\n              Object.entries(data)\n                .map(\n                  ([k, v]) =>\n                    `${encodeURIComponent(k)}=${encodeURIComponent(v)}`\n                )\n                .join(\"&\")\n            );\n          }\n        }\n        break;\n    }\n    // xhr.abort();\n    // xhr.getAllResponseHeaders();\n    // xhr.getResponseHeader(\"xxx\");\n  });\n}\n\nexport async function getFormSubmitData(formElement: HTMLFormElement) {\n  const result = {\n    url: formElement.action || \"\",\n    data: {} as Record<string, string>,\n    contentType:\n      formElement.method.toLowerCase() === \"post\" && formElement.enctype\n        ? formElement.enctype\n        : \"application/x-www-form-urlencoded\",\n    multipartFormDataString: \"\",\n    boundary: \"---------------------------\" + Date.now().toString(16)\n  };\n  const segments: string[] = [];\n  const isMultipartFormData = result.contentType == \"multipart/form-data\";\n  for (let i = 0; i < formElement.elements.length; i++) {\n    const element = formElement.elements[i];\n    if (!element.hasAttribute(\"name\")) {\n      continue;\n    }\n    const elementType = element.getAttribute(\"type\");\n    const elementInputType =\n      element.nodeName.toUpperCase() === \"INPUT\" && elementType\n        ? elementType.toUpperCase()\n        : \"\";\n    switch (elementInputType) {\n      case \"FILE\":\n        const fileElement = element as HTMLInputElement;\n        if (isMultipartFormData) {\n          /* enctype is multipart/form-data */\n          for (let j = 0, c = fileElement.files?.length || 0; j < c; j++) {\n            const file = fileElement.files?.[j];\n            if (file) {\n              const fileBinaryString = await readFileInBrowser<string>(\n                file,\n                FileReaderResponseTypeInBrowser.binaryString\n              );\n              segments.push(\n                'Content-Disposition: form-data; name=\"' +\n                  fileElement.name +\n                  '\"; filename=\"' +\n                  file.name +\n                  '\"\\r\\nContent-Type: ' +\n                  file.type +\n                  \"\\r\\n\\r\\n\" +\n                  fileBinaryString +\n                  \"\\r\\n\"\n              );\n            }\n          }\n        } else {\n          /* enctype is application/x-www-form-urlencoded or text/plain or method is GET: files will not be sent! */\n        }\n        break;\n      case \"RADIO\":\n      case \"CHECKBOX\":\n        const inputElement = element as HTMLInputElement;\n        if (inputElement.checked) {\n          /// goto default\n        } else {\n          break;\n        }\n      // eslint-disable-next-line no-fallthrough\n      default:\n        const commonElement = element as\n          | HTMLInputElement\n          | HTMLTextAreaElement\n          | HTMLSelectElement;\n        if (isMultipartFormData) {\n          segments.push(\n            'Content-Disposition: form-data; name=\"' +\n              commonElement.name +\n              '\"\\r\\n\\r\\n' +\n              commonElement.value +\n              \"\\r\\n\"\n          );\n        } else {\n          result.data[commonElement.name] = commonElement.value;\n        }\n        break;\n    }\n  }\n  result.multipartFormDataString =\n    \"--\" +\n    result.boundary +\n    \"\\r\\n\" +\n    segments.join(\"--\" + result.boundary + \"\\r\\n\") +\n    \"--\" +\n    result.boundary +\n    \"--\\r\\n\";\n  return result;\n}\n","/* eslint-disable no-case-declarations */\nimport {\n  type AnyElement,\n  type VNode,\n  parseNumber,\n  toCamel,\n  toKebab,\n  DomMatrix\n} from \"@zyzgroup/core-common\";\nimport { getVNode, scheduleVNodeAsap, updateVNode } from \"../components/\";\nimport { domPrefixes } from \"./dom\";\nimport { ajax } from \"../ajax\";\n\n// \"transitionend\"\n// \"webkitTransitionEnd\"\n// \"mozTransitionEnd\"\n// \"oTransitionEnd\"\n// \"msTransitionEnd\"\n// \"MSTransitionEnd\" ?\nfunction getPrefixedStyleNames(styleName: string): string[] {\n  const names = [];\n  for (let i = 0, l = domPrefixes.length; i < l; i++) {\n    const name = toKebab(domPrefixes[i] + styleName);\n    names.push(name);\n  }\n  return names;\n}\n\n////// window.getComputedStyle() 可能导致性能问题的一些因素：\n// 1. 计算成本：\n// getComputedStyle 涉及到遍历元素的所有 CSS 规则（包括层叠和继承），计算出每个属性的最终值\n// 对于复杂的 CSS 树结构、大量样式规则或频繁变动的动态样式，这种计算可能较为耗时，尤其是在大型或复杂的网页中\n// 2. DOM 访问：\n// 调用 getComputedStyle 通常伴随着 DOM 元素的访问。频繁地跨 DOM 查询元素，特别是深度嵌套或数量众多的元素，会增加 DOM 访问的成本，导致潜在的性能瓶颈\n// 3. 重排与重绘：\n// 如果 getComputedStyle 被触发在元素样式改变之后，且这些变化影响了布局（如尺寸、位置变化），浏览器可能需要进行重新布局（重排）和/或重新绘制\n// 这些操作通常是昂贵的，尤其是在没有优化的情况下连续触发\n// 4. 内存消耗：\n// getComputedStyle 返回一个 CSSStyleDeclaration 对象，它包含了元素所有计算后的样式属性\n// 频繁调用并保存这些对象可能会增加内存消耗，特别是在循环或定时器中持续查询多个元素时\n// 5. 阻塞主线程：\n// 如果在关键渲染路径（如页面加载或用户交互期间）中同步调用 getComputedStyle，可能会阻塞浏览器主线程，延迟其他重要任务（如脚本执行、布局、绘制等）的处理，从而影响页面响应速度和用户体验\n////// 为了缓解上述潜在的性能问题，可以采取以下策略：\n// 1. 缓存计算结果：如果可能，尽量避免对同一元素的样式进行重复查询。将 getComputedStyle 的结果缓存起来，只有当知道样式确实发生变更时才重新计算\n// 2. 批量处理：如果有多个元素需要查询样式，尝试一次性收集所有元素并批量调用 getComputedStyle，而不是逐个查询，以减少 DOM 访问和计算次数\n// 3. 使用事件监听：对于动态变化的样式，使用 MutationObserver 或相关的事件（如 transitionend、animationend）来监听样式变化，而不是频繁轮询\n// 4. 优化查询时机：\n// 4.1 避免在动画帧、滚动事件等高频率回调中无必要地调用 getComputedStyle\n// 4.2 尽量在微任务中执行，利用浏览器的异步更新机制，减少对主线程的阻塞\n// 5. 减少不必要的样式计算：\n// 5.1 精简 CSS 规则，避免过度复杂和冗余的样式\n// 5.2 使用 CSS Containment 属性（如 contain: layout）来限制样式计算的范围\n\n// 考虑替代方案：\n// 如果只需要检测特定样式属性的变化，可以尝试使用更轻量级的 API，如 elment.getBoundingClientRect()（获取布局信息）或 elment.classList.contains()（检查类名存在）等\n////// elment.getBoundingClientRect() 方法相对于 window.getComputedStyle() 在某些情况下可以被认为是一种性能优化的选择，主要是基于以下几个原因：\n// 1. 更有限的计算范围：\n// getComputedStyle 计算的是元素的所有计算样式属性，包括但不限于尺寸、颜色、字体、边框、定位、背景等，这涉及对整个 CSSOM（CSS Object Model）和样式层叠过程的遍历。\n// 而 getBoundingClientRect() 只关心元素在视口中的几何位置和尺寸（top, right, bottom, left, width, height），计算范围明显更为有限\n// 它直接从布局引擎获取已计算好的布局信息，无需处理样式层叠和解析等复杂过程，因此通常具有较低的计算成本\n// 2. 避免样式计算：\n// getBoundingClientRect() 不涉及样式计算，它返回的是浏览器已经完成布局后，元素在当前视口坐标系统下的实际位置和大小\n// 这意味着即使元素的样式发生变化，只要尚未触发布局更新，该方法的结果不会立即改变\n// 相比之下，getComputedStyle 需要实时反映样式变化，每次调用都可能触发样式计算\n// 3. 非阻塞性：\n// getBoundingClientRect() 不触发重排（reflow）或重绘（repaint）。它提供的信息是布局阶段的副产品，浏览器在渲染过程中已经计算好并存储了这些数据\n// 因此，调用此方法不会直接影响渲染流水线，避免了可能阻塞主线程的操作\n// 4. 更低的内存开销：\n// getComputedStyle 返回一个包含所有计算样式的 CSSStyleDeclaration 对象，如果频繁调用且不及时释放内存，可能会积累大量临时对象\n// 相反，getBoundingClientRect() 返回的是一个相对轻量的 DOMRect 对象，仅包含位置和尺寸信息，内存占用较小\n// 5. 适用场景明确：\n// 当仅需要获取元素的布局相关数据（如位置、尺寸）时，使用 getBoundingClientRect() 直接满足需求，无需处理与当前任务无关的其他样式信息\n// 针对性更强的方法使用可以避免不必要的计算和资源消耗\n// 6. 更好的跨浏览器兼容性：\n// getBoundingClientRect() 是一个历史悠久且广泛支持的 API，其性能表现和行为在各主流浏览器中通常更为一致，减少了因浏览器差异带来的潜在性能问题\n\n// 对外接口\nexport function getStyle(\n  el: AnyElement | any,\n  prop?: string,\n  pseudo?: string // :before\n) {\n  // 利用 vnode 缓存 style\n  const vnode = getVNode(el);\n  vnode.props.style = vnode.props.style || {};\n  if (!prop) {\n    // read all\n    // return atomReadStyles(el);\n    return vnode.props.style;\n  } else {\n    // read single\n    // return atomReadStyle(el, prop, pseudo);\n    return (\n      vnode.props.style[prop] ||\n      vnode.props.style[toCamel(prop)] ||\n      vnode.props.style[toKebab(prop)] ||\n      \"\"\n    );\n  }\n}\n\n// 对外接口\nexport function setStyle(\n  el: HTMLElement | any,\n  prop: string | Record<string, string | CanvasGradient>,\n  value?: string\n) {\n  updateVNode(el, (vnode: VNode) => {\n    vnode.props.style = vnode.props.style || {};\n    if (typeof prop == \"string\" && value) {\n      vnode.props.style[prop] = value;\n    } else if (prop instanceof Object) {\n      Object.keys(prop).forEach((key: string) => {\n        vnode.props.style[key] = prop[key];\n      });\n    }\n  });\n  scheduleVNodeAsap();\n}\n\nexport function atomReadStyles(\n  el: HTMLElement | any,\n  justInlineStyle = false // 是否只读内联样式\n): Record<string, string> {\n  const styles: Record<string, string> = {};\n  if (!justInlineStyle) {\n    if (getComputedStyle) {\n      const s = getComputedStyle(el);\n      for (let i = 0, n = s.length; i < n; i++) {\n        const prop = s[i];\n        styles[prop] = s.getPropertyValue(prop);\n      }\n    } else {\n      // 兼容 内联样式 和 IE\n      const s = el.style || el.currentStyle;\n      for (const prop in s) {\n        if (Object.prototype.hasOwnProperty.call(s, prop)) {\n          styles[prop] = s[prop];\n        }\n      }\n    }\n  }\n  // 内联样式\n  if (el.style.cssText) {\n    el.style.cssText\n      .split(\";\")\n      .filter((a: string) => !!a) // filter: non-empty\n      .forEach((a: string) => {\n        const [k, v] = a.split(\":\").map((s) => s.trim());\n        if (k && v) {\n          styles[k] = v;\n        }\n      });\n  }\n  return styles;\n}\n\nexport function readStyleFromStyles(\n  styles: Record<string, string>,\n  prop: string\n): string {\n  const prefixedProps = getPrefixedStyleNames(prop);\n  const prefixedPropsCount = prefixedProps.length;\n  let value = \"\";\n  for (let i = 0; i < prefixedPropsCount; i++) {\n    const prefixedProp = prefixedProps[i];\n    value = styles[prefixedProp] || \"\";\n    if (value) {\n      return value;\n    }\n  }\n  return value;\n}\n\nexport function atomReadStyle(\n  el: HTMLElement | any,\n  prop: string,\n  pseudo?: string // :before\n): string {\n  const prefixedProps = getPrefixedStyleNames(prop);\n  const prefixedPropsCount = prefixedProps.length;\n  let value = \"\";\n  for (let i = 0; i < prefixedPropsCount; i++) {\n    const prefixedProp = prefixedProps[i];\n    value =\n      (\"style\" in el && el.style[prefixedProp]) ||\n      (\"currentStyle\" in el && el.currentStyle[prefixedProp]) ||\n      \"\";\n    if (value) {\n      return value;\n    }\n  }\n  if (getComputedStyle) {\n    const style = getComputedStyle(el, pseudo);\n    for (let i = 0; i < prefixedPropsCount; i++) {\n      const prefixedProp = prefixedProps[i];\n      // const priority = style.getPropertyPriority(prefixedProp);\n      // value =\n      //   style.getPropertyValue(prefixedProp).trim() +\n      //   (priority ? \"!\" + priority : \"\");\n      value = style.getPropertyValue(prefixedProp).trim();\n      if (value) {\n        return value;\n      }\n    }\n  }\n  return value;\n}\n\nexport function atomWriteStyle(\n  el: HTMLElement | any,\n  prop: string | Record<string, string>,\n  value?: string\n) {\n  if (!prop) {\n    return;\n  }\n  if (typeof prop == \"string\" && value) {\n    try {\n      el.style.setProperty(\n        prop,\n        value.replace(/!important/i, \"\"),\n        value.toLowerCase().includes(\"!important\") ? \"important\" : \"\"\n      );\n    } catch (e) {\n      el.style[prop] = value;\n    }\n  } else if (prop instanceof Object) {\n    Object.keys(prop).forEach((k: string) => {\n      atomWriteStyle(el, k, prop[k]);\n    });\n  }\n}\n\nexport function atomRemoveStyle(\n  el: HTMLElement | any,\n  prop: string | Record<string, string>\n) {\n  if (typeof prop == \"string\") {\n    el.style.removeProperty(toKebab(prop));\n  } else {\n    Object.keys(prop).forEach((key: string) => {\n      atomRemoveStyle(el, key);\n    });\n  }\n}\n\n// `\n// :root {}\n// :host {}\n// `\n// :root, :host {\n//   --color-primary: #5A82F0;\n//   --linear-gradient-blue: linear-gradient(to right, #50c8fa, var(--color-primary));\n//   --linear-gradient-red: linear-gradient(to right, #ff9696, var(--color-red));\n//   --linear-gradient-green: linear-gradient(to right, #50f096, var(--color-green));\n// }\nexport function injectStyle(\n  styleSheetInnerText: string,\n  el?: AnyElement | string\n) {\n  if (!document) {\n    return () => {};\n  }\n  let dom: Element | ShadowRoot | null;\n  if (typeof el === \"string\") {\n    const shadowRoot = document.querySelector(el)?.shadowRoot;\n    if (shadowRoot) {\n      dom = shadowRoot;\n    } else {\n      dom = document.querySelector(el);\n    }\n  } else {\n    dom = el || document.getElementsByTagName(\"head\")[0];\n  }\n  if (dom) {\n    const style = document.createElement(\"style\");\n    style.innerHTML = styleSheetInnerText;\n    dom.appendChild(style);\n    return () => {\n      if (dom instanceof HTMLElement || dom instanceof ShadowRoot) {\n        dom.removeChild(style);\n      }\n    };\n  } else {\n    // The first CSS rule is : document.styleSheets[0].cssRules[0].cssText\n\n    // const sheet = new CSSStyleSheet();\n    // sheet.replaceSync(`.color { color: pink }`);\n    // host.shadowRoot.adoptedStyleSheets.push(sheet);\n\n    const position = document.styleSheets[0].insertRule(styleSheetInnerText);\n\n    return () => {\n      document.styleSheets[0].deleteRule(position);\n    };\n  }\n}\n\nclass CSSRule {\n  public selector: string;\n  public name: string;\n  public value: string;\n\n  constructor(selector: string, name: string, value: string) {\n    this.selector = selector;\n    this.name = name;\n    this.value = value;\n  }\n\n  public toString() {\n    return `${this.selector} { ${this.name}: ${this.value} }`;\n  }\n}\n\nclass RuleList {\n  public propertyName: string;\n  public values: CSSRule[] = [];\n\n  constructor(propertyName: string) {\n    this.propertyName = propertyName;\n  }\n\n  public add(selector: string, value: string) {\n    this.values.push(new CSSRule(selector, this.propertyName, value));\n  }\n}\n\nexport async function getStyleSheets() {\n  const styleSheets: string[] = [];\n  const styleNodes = document.querySelectorAll(\"style, link\");\n  for (let i = 0, c = styleNodes.length; i < c; i++) {\n    const node = styleNodes[i];\n    let sheetCssText = node.innerHTML;\n    switch (node.nodeName.toLowerCase()) {\n      case \"style\":\n        // does not work with inline styles because IE doesn't allow you to get the text content of a STYLE element\n        // if (\n        //   sheetCssText.indexOf(\"-->\") != -1 &&\n        //   sheetCssText.indexOf(\"<!--\") != -1\n        // ) {\n        //   sheetCssText.replace(\"<!--\", \"\").replace(\"-->\", \"\");\n        // }\n        break;\n      case \"link\":\n        sheetCssText = (await ajax((node as any).href, {\n          method: \"GET\",\n          responseType: \"text\"\n        })) as string;\n        break;\n    }\n    sheetCssText = sheetCssText\n      .replace(/\\/\\/.+?(?=\\n|\\r|$)|\\/\\*[\\s\\S]+?\\*\\//g, \"\") // MultiLineComment\n      .replace(/@[^{};]*;|@[^{};]*\\{[^}]*\\}/g, \"\") // AtRule\n      .replace(/[\\\\n\\n]+(?<=[\\\\n\\n]+)\\s+/g, \"\");\n    styleSheets.push(sheetCssText);\n  }\n  return styleSheets;\n}\n\nexport async function getRules() {\n  const ruleLists: { [index: string]: RuleList } = {};\n  const styleSheets = await getStyleSheets();\n  for (let i = 0, n = styleSheets.length; i < n; i++) {\n    const sheet = styleSheets[i];\n    const rules = sheet.match(/[^{]*{[^}]*}/g);\n    if (!rules) {\n      continue;\n    }\n    for (let j = 0, c = rules.length; j < c; j++) {\n      const parsedRule = rules[j].split(/[{}]/g);\n      const selector = parsedRule[0].trim();\n      const propertiesStr = parsedRule[1];\n      const properties = propertiesStr.split(\";\");\n      for (let k = 0; k < properties.length; k++) {\n        if (properties[k].trim() != \"\") {\n          const splitProperty = properties[k].split(\":\");\n          const name = splitProperty[0].trim().toLowerCase();\n          const value = splitProperty[1];\n          if (!ruleLists[name]) {\n            ruleLists[name] = new RuleList(name);\n          }\n          if (value) {\n            ruleLists[name].add(selector, value.trim());\n          }\n        }\n      }\n    }\n  }\n  return ruleLists;\n}\n","import { type AnyElement, type VNode, toKebab } from \"@zyzgroup/core-common\";\nimport { scheduleVNodeAsap, updateVNode } from \"../components/\";\nimport { atomReadStyles, setStyle } from \"./style\";\nimport { YZCanvasContext } from \"../hooks/useDraw/canvas\";\n\n// attribute 直接改变 HTML 的属性\n\n// 对外接口\nexport function attribute(\n  el: AnyElement,\n  prop?: string | Record<string, any>,\n  value?: string\n) {\n  /// read all\n  if (prop === undefined && value === undefined) {\n    return atomReadAttributes(el);\n  }\n  /// read single\n  if (typeof prop == \"string\" && value === undefined) {\n    return atomReadAttribute(el, prop);\n  }\n  // let obj: Record<string, string> = {};\n  if (typeof prop == \"object\") {\n    /// write all\n    // obj = prop;\n    updateVNode(el, (vnode: VNode) => {\n      for (const k in prop) {\n        if (k == \"style\") {\n          setStyle(el, k, prop[k]);\n        } else {\n          if (Object.prototype.hasOwnProperty.call(prop, k)) {\n            vnode.props[k] = \"\" + prop[k];\n          }\n        }\n      }\n    });\n  } else if (typeof prop == \"string\" && typeof value == \"string\") {\n    /// write single\n    // obj[prop] = \"\" + value;\n    if (prop == \"style\") {\n      setStyle(el, prop, value);\n    } else {\n      updateVNode(el, (vnode: VNode) => {\n        vnode.props[prop] = \"\" + value;\n      });\n    }\n  }\n  /// 性能原因，el.setAttribute() 耗时久, 改为使用虚拟DOM\n  // Object.entries(obj).forEach(([prop, val]) => {\n  //   el.setAttribute(toKebab(prop), val);\n  // });\n  scheduleVNodeAsap();\n}\n\nexport function atomReadAttributes(el: AnyElement) {\n  const obj: Record<string, string | Record<string, string>> = {};\n  for (let i = 0, attrs = el.attributes, n = attrs.length; i < n; i++) {\n    const attr = attrs[i];\n    if (attr.nodeName && attr.nodeValue) {\n      if (attr.nodeName === \"style\") {\n        obj[attr.nodeName] = atomReadStyles(el, true);\n      } else {\n        obj[attr.nodeName] = attr.nodeValue;\n      }\n    }\n  }\n  return obj;\n}\n\nexport function atomReadAttribute(el: AnyElement, prop: string) {\n  if (prop === \"style\") {\n    return atomReadStyles(el, true);\n  } else {\n    return el.getAttribute(toKebab(prop));\n  }\n}\n\nexport function atomWriteAttribute(\n  el: AnyElement,\n  prop: string,\n  value: string\n) {\n  // el[prop] = value;\n  return el.setAttribute(toKebab(prop), \"\" + value);\n}\n\nexport function atomRemoveAttribute(el: AnyElement, attrs: string) {\n  attrs.split(/[,\\s]+/i).forEach((attr) => {\n    const a = toKebab(attr.trim());\n    if (a != \"\") {\n      el.removeAttribute(a);\n    }\n  });\n}\n\n// convert css or svg attrs to canvas attrs\nexport function cssAttrsToCanvasAttrs(\n  ctx: YZCanvasContext,\n  attrs: Record<string, string | CanvasGradient>\n) {\n  // \"fill-opacity\": number;\n  // \"opacity\": number;\n  // \"letter-spacing\": number;\n  for (const key in attrs) {\n    const value = attrs[key];\n    switch (key) {\n      case \"fill\":\n        // fill: \"none\"\n        if (value !== \"none\") {\n          ctx.fillStyle = value;\n        }\n        break;\n      case \"stroke\":\n        // stroke: \"none\"\n        if (value !== \"none\") {\n          ctx.strokeStyle = value;\n        }\n        break;\n      case \"stroke-width\":\n      case \"strokeWidth\":\n        ctx.lineWidth = Number(value);\n        break;\n      case \"stroke-linecap\":\n      case \"strokeLinecap\":\n        // 线段的端点样式\n        // butt | round | square\n        ctx.lineCap = value as CanvasLineCap;\n        break;\n      case \"stroke-linejoin\":\n      case \"strokeLinejoin\":\n        switch (value) {\n          case \"round\":\n          case \"bevel\":\n          case \"miter\":\n            ctx.lineJoin = value as CanvasLineJoin;\n            break;\n          default: // arcs | miter-clip\n            ctx.lineJoin = \"miter\";\n            break;\n        }\n        break;\n      case \"stroke-miterlimit\":\n      case \"strokeMiterlimit\":\n        // 角重合长度, 角重合长度超过这个比例的部分会被cut\n        ctx.miterLimit = Number(value);\n        break;\n      case \"stroke-opacity\":\n      case \"strokeOpacity\":\n        break;\n      case \"stroke-dashoffset\":\n      case \"strokeDashoffset\":\n        ctx.lineDashOffset = Number(value);\n        break;\n      case \"stroke-dasharray\":\n      case \"strokeDasharray\":\n        // stroke-dasharray: 100 100;\n        if (typeof value === \"string\") {\n          ctx.setLineDash(value.split(/\\s+/).map((s) => Number(s)));\n        }\n        break;\n      case \"cursor\":\n        break;\n      case \"font\":\n        if (typeof value === \"string\") {\n          ctx.font = value;\n        }\n        break;\n      case \"font-size\":\n      case \"fontSize\":\n        ctx.font += ` ${value}`;\n        break;\n      case \"font-family\":\n      case \"fontFamily\":\n        ctx.font += ` ${value}`;\n        break;\n      case \"font-weight\":\n      case \"fontWeight\":\n        break;\n      case \"font-style\":\n      case \"fontStyle\":\n        break;\n      case \"text-anchor\":\n      case \"textAnchor\":\n        switch (value) {\n          case \"middle\":\n            ctx.textAlign = \"center\";\n            break;\n          case \"end\":\n            // ctx.textAlign = \"right\";\n            ctx.textAlign = \"end\";\n            break;\n          case \"start\":\n            // ctx.textAlign = \"left\";\n            ctx.textAlign = \"start\";\n            break;\n        }\n        break;\n      case \"alignment-baseline\":\n      case \"alignmentBaseline\":\n        switch (value) {\n          case \"middle\":\n          case \"bottom\":\n          case \"top\":\n          case \"alphabetic\":\n          case \"hanging\":\n          case \"ideographic\":\n            ctx.textBaseline = value;\n            break;\n          default: // auto | baseline | before-edge | text-before-edge  | central | after-edge | text-after-edge  | mathematical | center |\n            ctx.textBaseline = \"alphabetic\";\n            break;\n        }\n        break;\n      /// UNFINISH\n    }\n  }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(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\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      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]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(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}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","export function isFunction(value) {\n    return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n    var _super = function (instance) {\n        Error.call(instance);\n        instance.stack = new Error().stack;\n    };\n    var ctorFunc = createImpl(_super);\n    ctorFunc.prototype = Object.create(Error.prototype);\n    ctorFunc.prototype.constructor = ctorFunc;\n    return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n    return function UnsubscriptionErrorImpl(errors) {\n        _super(this);\n        this.message = errors\n            ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n  ')\n            : '';\n        this.name = 'UnsubscriptionError';\n        this.errors = errors;\n    };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n    if (arr) {\n        var index = arr.indexOf(item);\n        0 <= index && arr.splice(index, 1);\n    }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n    function Subscription(initialTeardown) {\n        this.initialTeardown = initialTeardown;\n        this.closed = false;\n        this._parentage = null;\n        this._finalizers = null;\n    }\n    Subscription.prototype.unsubscribe = function () {\n        var e_1, _a, e_2, _b;\n        var errors;\n        if (!this.closed) {\n            this.closed = true;\n            var _parentage = this._parentage;\n            if (_parentage) {\n                this._parentage = null;\n                if (Array.isArray(_parentage)) {\n                    try {\n                        for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n                            var parent_1 = _parentage_1_1.value;\n                            parent_1.remove(this);\n                        }\n                    }\n                    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                    finally {\n                        try {\n                            if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n                        }\n                        finally { if (e_1) throw e_1.error; }\n                    }\n                }\n                else {\n                    _parentage.remove(this);\n                }\n            }\n            var initialFinalizer = this.initialTeardown;\n            if (isFunction(initialFinalizer)) {\n                try {\n                    initialFinalizer();\n                }\n                catch (e) {\n                    errors = e instanceof UnsubscriptionError ? e.errors : [e];\n                }\n            }\n            var _finalizers = this._finalizers;\n            if (_finalizers) {\n                this._finalizers = null;\n                try {\n                    for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n                        var finalizer = _finalizers_1_1.value;\n                        try {\n                            execFinalizer(finalizer);\n                        }\n                        catch (err) {\n                            errors = errors !== null && errors !== void 0 ? errors : [];\n                            if (err instanceof UnsubscriptionError) {\n                                errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n                            }\n                            else {\n                                errors.push(err);\n                            }\n                        }\n                    }\n                }\n                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                finally {\n                    try {\n                        if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n                    }\n                    finally { if (e_2) throw e_2.error; }\n                }\n            }\n            if (errors) {\n                throw new UnsubscriptionError(errors);\n            }\n        }\n    };\n    Subscription.prototype.add = function (teardown) {\n        var _a;\n        if (teardown && teardown !== this) {\n            if (this.closed) {\n                execFinalizer(teardown);\n            }\n            else {\n                if (teardown instanceof Subscription) {\n                    if (teardown.closed || teardown._hasParent(this)) {\n                        return;\n                    }\n                    teardown._addParent(this);\n                }\n                (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n            }\n        }\n    };\n    Subscription.prototype._hasParent = function (parent) {\n        var _parentage = this._parentage;\n        return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n    };\n    Subscription.prototype._addParent = function (parent) {\n        var _parentage = this._parentage;\n        this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n    };\n    Subscription.prototype._removeParent = function (parent) {\n        var _parentage = this._parentage;\n        if (_parentage === parent) {\n            this._parentage = null;\n        }\n        else if (Array.isArray(_parentage)) {\n            arrRemove(_parentage, parent);\n        }\n    };\n    Subscription.prototype.remove = function (teardown) {\n        var _finalizers = this._finalizers;\n        _finalizers && arrRemove(_finalizers, teardown);\n        if (teardown instanceof Subscription) {\n            teardown._removeParent(this);\n        }\n    };\n    Subscription.EMPTY = (function () {\n        var empty = new Subscription();\n        empty.closed = true;\n        return empty;\n    })();\n    return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n    return (value instanceof Subscription ||\n        (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n    if (isFunction(finalizer)) {\n        finalizer();\n    }\n    else {\n        finalizer.unsubscribe();\n    }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n    onUnhandledError: null,\n    onStoppedNotification: null,\n    Promise: undefined,\n    useDeprecatedSynchronousErrorHandling: false,\n    useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n    setTimeout: function (handler, timeout) {\n        var args = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            args[_i - 2] = arguments[_i];\n        }\n        var delegate = timeoutProvider.delegate;\n        if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n            return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n        }\n        return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n    },\n    clearTimeout: function (handle) {\n        var delegate = timeoutProvider.delegate;\n        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n    },\n    delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n    timeoutProvider.setTimeout(function () {\n        var onUnhandledError = config.onUnhandledError;\n        if (onUnhandledError) {\n            onUnhandledError(err);\n        }\n        else {\n            throw err;\n        }\n    });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n    if (config.useDeprecatedSynchronousErrorHandling) {\n        var isRoot = !context;\n        if (isRoot) {\n            context = { errorThrown: false, error: null };\n        }\n        cb();\n        if (isRoot) {\n            var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n            context = null;\n            if (errorThrown) {\n                throw error;\n            }\n        }\n    }\n    else {\n        cb();\n    }\n}\nexport function captureError(err) {\n    if (config.useDeprecatedSynchronousErrorHandling && context) {\n        context.errorThrown = true;\n        context.error = err;\n    }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n    __extends(Subscriber, _super);\n    function Subscriber(destination) {\n        var _this = _super.call(this) || this;\n        _this.isStopped = false;\n        if (destination) {\n            _this.destination = destination;\n            if (isSubscription(destination)) {\n                destination.add(_this);\n            }\n        }\n        else {\n            _this.destination = EMPTY_OBSERVER;\n        }\n        return _this;\n    }\n    Subscriber.create = function (next, error, complete) {\n        return new SafeSubscriber(next, error, complete);\n    };\n    Subscriber.prototype.next = function (value) {\n        if (this.isStopped) {\n            handleStoppedNotification(nextNotification(value), this);\n        }\n        else {\n            this._next(value);\n        }\n    };\n    Subscriber.prototype.error = function (err) {\n        if (this.isStopped) {\n            handleStoppedNotification(errorNotification(err), this);\n        }\n        else {\n            this.isStopped = true;\n            this._error(err);\n        }\n    };\n    Subscriber.prototype.complete = function () {\n        if (this.isStopped) {\n            handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n        }\n        else {\n            this.isStopped = true;\n            this._complete();\n        }\n    };\n    Subscriber.prototype.unsubscribe = function () {\n        if (!this.closed) {\n            this.isStopped = true;\n            _super.prototype.unsubscribe.call(this);\n            this.destination = null;\n        }\n    };\n    Subscriber.prototype._next = function (value) {\n        this.destination.next(value);\n    };\n    Subscriber.prototype._error = function (err) {\n        try {\n            this.destination.error(err);\n        }\n        finally {\n            this.unsubscribe();\n        }\n    };\n    Subscriber.prototype._complete = function () {\n        try {\n            this.destination.complete();\n        }\n        finally {\n            this.unsubscribe();\n        }\n    };\n    return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n    return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n    function ConsumerObserver(partialObserver) {\n        this.partialObserver = partialObserver;\n    }\n    ConsumerObserver.prototype.next = function (value) {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.next) {\n            try {\n                partialObserver.next(value);\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n    };\n    ConsumerObserver.prototype.error = function (err) {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.error) {\n            try {\n                partialObserver.error(err);\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n        else {\n            handleUnhandledError(err);\n        }\n    };\n    ConsumerObserver.prototype.complete = function () {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.complete) {\n            try {\n                partialObserver.complete();\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n    };\n    return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n    __extends(SafeSubscriber, _super);\n    function SafeSubscriber(observerOrNext, error, complete) {\n        var _this = _super.call(this) || this;\n        var partialObserver;\n        if (isFunction(observerOrNext) || !observerOrNext) {\n            partialObserver = {\n                next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n                error: error !== null && error !== void 0 ? error : undefined,\n                complete: complete !== null && complete !== void 0 ? complete : undefined,\n            };\n        }\n        else {\n            var context_1;\n            if (_this && config.useDeprecatedNextContext) {\n                context_1 = Object.create(observerOrNext);\n                context_1.unsubscribe = function () { return _this.unsubscribe(); };\n                partialObserver = {\n                    next: observerOrNext.next && bind(observerOrNext.next, context_1),\n                    error: observerOrNext.error && bind(observerOrNext.error, context_1),\n                    complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n                };\n            }\n            else {\n                partialObserver = observerOrNext;\n            }\n        }\n        _this.destination = new ConsumerObserver(partialObserver);\n        return _this;\n    }\n    return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n    if (config.useDeprecatedSynchronousErrorHandling) {\n        captureError(error);\n    }\n    else {\n        reportUnhandledError(error);\n    }\n}\nfunction defaultErrorHandler(err) {\n    throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n    var onStoppedNotification = config.onStoppedNotification;\n    onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n    closed: true,\n    next: noop,\n    error: defaultErrorHandler,\n    complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n    return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n    var fns = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        fns[_i] = arguments[_i];\n    }\n    return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n    if (fns.length === 0) {\n        return identity;\n    }\n    if (fns.length === 1) {\n        return fns[0];\n    }\n    return function piped(input) {\n        return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n    };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n    function Observable(subscribe) {\n        if (subscribe) {\n            this._subscribe = subscribe;\n        }\n    }\n    Observable.prototype.lift = function (operator) {\n        var observable = new Observable();\n        observable.source = this;\n        observable.operator = operator;\n        return observable;\n    };\n    Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n        var _this = this;\n        var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n        errorContext(function () {\n            var _a = _this, operator = _a.operator, source = _a.source;\n            subscriber.add(operator\n                ?\n                    operator.call(subscriber, source)\n                : source\n                    ?\n                        _this._subscribe(subscriber)\n                    :\n                        _this._trySubscribe(subscriber));\n        });\n        return subscriber;\n    };\n    Observable.prototype._trySubscribe = function (sink) {\n        try {\n            return this._subscribe(sink);\n        }\n        catch (err) {\n            sink.error(err);\n        }\n    };\n    Observable.prototype.forEach = function (next, promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            var subscriber = new SafeSubscriber({\n                next: function (value) {\n                    try {\n                        next(value);\n                    }\n                    catch (err) {\n                        reject(err);\n                        subscriber.unsubscribe();\n                    }\n                },\n                error: reject,\n                complete: resolve,\n            });\n            _this.subscribe(subscriber);\n        });\n    };\n    Observable.prototype._subscribe = function (subscriber) {\n        var _a;\n        return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n    };\n    Observable.prototype[Symbol_observable] = function () {\n        return this;\n    };\n    Observable.prototype.pipe = function () {\n        var operations = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            operations[_i] = arguments[_i];\n        }\n        return pipeFromArray(operations)(this);\n    };\n    Observable.prototype.toPromise = function (promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            var value;\n            _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n        });\n    };\n    Observable.create = function (subscribe) {\n        return new Observable(subscribe);\n    };\n    return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n    var _a;\n    return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n    return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n    return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n    return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n    return function (source) {\n        if (hasLift(source)) {\n            return source.lift(function (liftedSource) {\n                try {\n                    return init(liftedSource, this);\n                }\n                catch (err) {\n                    this.error(err);\n                }\n            });\n        }\n        throw new TypeError('Unable to lift unknown Observable type');\n    };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n    return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n    __extends(OperatorSubscriber, _super);\n    function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n        var _this = _super.call(this, destination) || this;\n        _this.onFinalize = onFinalize;\n        _this.shouldUnsubscribe = shouldUnsubscribe;\n        _this._next = onNext\n            ? function (value) {\n                try {\n                    onNext(value);\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n            }\n            : _super.prototype._next;\n        _this._error = onError\n            ? function (err) {\n                try {\n                    onError(err);\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n                finally {\n                    this.unsubscribe();\n                }\n            }\n            : _super.prototype._error;\n        _this._complete = onComplete\n            ? function () {\n                try {\n                    onComplete();\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n                finally {\n                    this.unsubscribe();\n                }\n            }\n            : _super.prototype._complete;\n        return _this;\n    }\n    OperatorSubscriber.prototype.unsubscribe = function () {\n        var _a;\n        if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n            var closed_1 = this.closed;\n            _super.prototype.unsubscribe.call(this);\n            !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n        }\n    };\n    return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n    return function ObjectUnsubscribedErrorImpl() {\n        _super(this);\n        this.name = 'ObjectUnsubscribedError';\n        this.message = 'object unsubscribed';\n    };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n    __extends(Subject, _super);\n    function Subject() {\n        var _this = _super.call(this) || this;\n        _this.closed = false;\n        _this.currentObservers = null;\n        _this.observers = [];\n        _this.isStopped = false;\n        _this.hasError = false;\n        _this.thrownError = null;\n        return _this;\n    }\n    Subject.prototype.lift = function (operator) {\n        var subject = new AnonymousSubject(this, this);\n        subject.operator = operator;\n        return subject;\n    };\n    Subject.prototype._throwIfClosed = function () {\n        if (this.closed) {\n            throw new ObjectUnsubscribedError();\n        }\n    };\n    Subject.prototype.next = function (value) {\n        var _this = this;\n        errorContext(function () {\n            var e_1, _a;\n            _this._throwIfClosed();\n            if (!_this.isStopped) {\n                if (!_this.currentObservers) {\n                    _this.currentObservers = Array.from(_this.observers);\n                }\n                try {\n                    for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n                        var observer = _c.value;\n                        observer.next(value);\n                    }\n                }\n                catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                finally {\n                    try {\n                        if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                    }\n                    finally { if (e_1) throw e_1.error; }\n                }\n            }\n        });\n    };\n    Subject.prototype.error = function (err) {\n        var _this = this;\n        errorContext(function () {\n            _this._throwIfClosed();\n            if (!_this.isStopped) {\n                _this.hasError = _this.isStopped = true;\n                _this.thrownError = err;\n                var observers = _this.observers;\n                while (observers.length) {\n                    observers.shift().error(err);\n                }\n            }\n        });\n    };\n    Subject.prototype.complete = function () {\n        var _this = this;\n        errorContext(function () {\n            _this._throwIfClosed();\n            if (!_this.isStopped) {\n                _this.isStopped = true;\n                var observers = _this.observers;\n                while (observers.length) {\n                    observers.shift().complete();\n                }\n            }\n        });\n    };\n    Subject.prototype.unsubscribe = function () {\n        this.isStopped = this.closed = true;\n        this.observers = this.currentObservers = null;\n    };\n    Object.defineProperty(Subject.prototype, \"observed\", {\n        get: function () {\n            var _a;\n            return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Subject.prototype._trySubscribe = function (subscriber) {\n        this._throwIfClosed();\n        return _super.prototype._trySubscribe.call(this, subscriber);\n    };\n    Subject.prototype._subscribe = function (subscriber) {\n        this._throwIfClosed();\n        this._checkFinalizedStatuses(subscriber);\n        return this._innerSubscribe(subscriber);\n    };\n    Subject.prototype._innerSubscribe = function (subscriber) {\n        var _this = this;\n        var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n        if (hasError || isStopped) {\n            return EMPTY_SUBSCRIPTION;\n        }\n        this.currentObservers = null;\n        observers.push(subscriber);\n        return new Subscription(function () {\n            _this.currentObservers = null;\n            arrRemove(observers, subscriber);\n        });\n    };\n    Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n        var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n        if (hasError) {\n            subscriber.error(thrownError);\n        }\n        else if (isStopped) {\n            subscriber.complete();\n        }\n    };\n    Subject.prototype.asObservable = function () {\n        var observable = new Observable();\n        observable.source = this;\n        return observable;\n    };\n    Subject.create = function (destination, source) {\n        return new AnonymousSubject(destination, source);\n    };\n    return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n    __extends(AnonymousSubject, _super);\n    function AnonymousSubject(destination, source) {\n        var _this = _super.call(this) || this;\n        _this.destination = destination;\n        _this.source = source;\n        return _this;\n    }\n    AnonymousSubject.prototype.next = function (value) {\n        var _a, _b;\n        (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n    };\n    AnonymousSubject.prototype.error = function (err) {\n        var _a, _b;\n        (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n    };\n    AnonymousSubject.prototype.complete = function () {\n        var _a, _b;\n        (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n    };\n    AnonymousSubject.prototype._subscribe = function (subscriber) {\n        var _a, _b;\n        return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n    };\n    return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n    __extends(BehaviorSubject, _super);\n    function BehaviorSubject(_value) {\n        var _this = _super.call(this) || this;\n        _this._value = _value;\n        return _this;\n    }\n    Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n        get: function () {\n            return this.getValue();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    BehaviorSubject.prototype._subscribe = function (subscriber) {\n        var subscription = _super.prototype._subscribe.call(this, subscriber);\n        !subscription.closed && subscriber.next(this._value);\n        return subscription;\n    };\n    BehaviorSubject.prototype.getValue = function () {\n        var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n        if (hasError) {\n            throw thrownError;\n        }\n        this._throwIfClosed();\n        return _value;\n    };\n    BehaviorSubject.prototype.next = function (value) {\n        _super.prototype.next.call(this, (this._value = value));\n    };\n    return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n    now: function () {\n        return (dateTimestampProvider.delegate || Date).now();\n    },\n    delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n    __extends(ReplaySubject, _super);\n    function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n        if (_bufferSize === void 0) { _bufferSize = Infinity; }\n        if (_windowTime === void 0) { _windowTime = Infinity; }\n        if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n        var _this = _super.call(this) || this;\n        _this._bufferSize = _bufferSize;\n        _this._windowTime = _windowTime;\n        _this._timestampProvider = _timestampProvider;\n        _this._buffer = [];\n        _this._infiniteTimeWindow = true;\n        _this._infiniteTimeWindow = _windowTime === Infinity;\n        _this._bufferSize = Math.max(1, _bufferSize);\n        _this._windowTime = Math.max(1, _windowTime);\n        return _this;\n    }\n    ReplaySubject.prototype.next = function (value) {\n        var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n        if (!isStopped) {\n            _buffer.push(value);\n            !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n        }\n        this._trimBuffer();\n        _super.prototype.next.call(this, value);\n    };\n    ReplaySubject.prototype._subscribe = function (subscriber) {\n        this._throwIfClosed();\n        this._trimBuffer();\n        var subscription = this._innerSubscribe(subscriber);\n        var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n        var copy = _buffer.slice();\n        for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n            subscriber.next(copy[i]);\n        }\n        this._checkFinalizedStatuses(subscriber);\n        return subscription;\n    };\n    ReplaySubject.prototype._trimBuffer = function () {\n        var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n        var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n        _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n        if (!_infiniteTimeWindow) {\n            var now = _timestampProvider.now();\n            var last = 0;\n            for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n                last = i;\n            }\n            last && _buffer.splice(0, last + 1);\n        }\n    };\n    return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n    __extends(Action, _super);\n    function Action(scheduler, work) {\n        return _super.call(this) || this;\n    }\n    Action.prototype.schedule = function (state, delay) {\n        if (delay === void 0) { delay = 0; }\n        return this;\n    };\n    return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n    setInterval: function (handler, timeout) {\n        var args = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            args[_i - 2] = arguments[_i];\n        }\n        var delegate = intervalProvider.delegate;\n        if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n            return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n        }\n        return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n    },\n    clearInterval: function (handle) {\n        var delegate = intervalProvider.delegate;\n        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n    },\n    delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n    __extends(AsyncAction, _super);\n    function AsyncAction(scheduler, work) {\n        var _this = _super.call(this, scheduler, work) || this;\n        _this.scheduler = scheduler;\n        _this.work = work;\n        _this.pending = false;\n        return _this;\n    }\n    AsyncAction.prototype.schedule = function (state, delay) {\n        var _a;\n        if (delay === void 0) { delay = 0; }\n        if (this.closed) {\n            return this;\n        }\n        this.state = state;\n        var id = this.id;\n        var scheduler = this.scheduler;\n        if (id != null) {\n            this.id = this.recycleAsyncId(scheduler, id, delay);\n        }\n        this.pending = true;\n        this.delay = delay;\n        this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n        return this;\n    };\n    AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n        if (delay === void 0) { delay = 0; }\n        return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n    };\n    AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        if (delay != null && this.delay === delay && this.pending === false) {\n            return id;\n        }\n        if (id != null) {\n            intervalProvider.clearInterval(id);\n        }\n        return undefined;\n    };\n    AsyncAction.prototype.execute = function (state, delay) {\n        if (this.closed) {\n            return new Error('executing a cancelled action');\n        }\n        this.pending = false;\n        var error = this._execute(state, delay);\n        if (error) {\n            return error;\n        }\n        else if (this.pending === false && this.id != null) {\n            this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n        }\n    };\n    AsyncAction.prototype._execute = function (state, _delay) {\n        var errored = false;\n        var errorValue;\n        try {\n            this.work(state);\n        }\n        catch (e) {\n            errored = true;\n            errorValue = e ? e : new Error('Scheduled action threw falsy error');\n        }\n        if (errored) {\n            this.unsubscribe();\n            return errorValue;\n        }\n    };\n    AsyncAction.prototype.unsubscribe = function () {\n        if (!this.closed) {\n            var _a = this, id = _a.id, scheduler = _a.scheduler;\n            var actions = scheduler.actions;\n            this.work = this.state = this.scheduler = null;\n            this.pending = false;\n            arrRemove(actions, this);\n            if (id != null) {\n                this.id = this.recycleAsyncId(scheduler, id, null);\n            }\n            this.delay = null;\n            _super.prototype.unsubscribe.call(this);\n        }\n    };\n    return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n    function Scheduler(schedulerActionCtor, now) {\n        if (now === void 0) { now = Scheduler.now; }\n        this.schedulerActionCtor = schedulerActionCtor;\n        this.now = now;\n    }\n    Scheduler.prototype.schedule = function (work, delay, state) {\n        if (delay === void 0) { delay = 0; }\n        return new this.schedulerActionCtor(this, work).schedule(state, delay);\n    };\n    Scheduler.now = dateTimestampProvider.now;\n    return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n    __extends(AsyncScheduler, _super);\n    function AsyncScheduler(SchedulerAction, now) {\n        if (now === void 0) { now = Scheduler.now; }\n        var _this = _super.call(this, SchedulerAction, now) || this;\n        _this.actions = [];\n        _this._active = false;\n        return _this;\n    }\n    AsyncScheduler.prototype.flush = function (action) {\n        var actions = this.actions;\n        if (this._active) {\n            actions.push(action);\n            return;\n        }\n        var error;\n        this._active = true;\n        do {\n            if ((error = action.execute(action.state, action.delay))) {\n                break;\n            }\n        } while ((action = actions.shift()));\n        this._active = false;\n        if (error) {\n            while ((action = actions.shift())) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n    return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n    return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n    return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n    return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n    return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n    return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n    return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n    return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n    return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n    return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n    return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n    if (typeof Symbol !== 'function' || !Symbol.iterator) {\n        return '@@iterator';\n    }\n    return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n    return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n    return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n        var reader, _a, value, done;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    reader = readableStream.getReader();\n                    _b.label = 1;\n                case 1:\n                    _b.trys.push([1, , 9, 10]);\n                    _b.label = 2;\n                case 2:\n                    if (!true) return [3, 8];\n                    return [4, __await(reader.read())];\n                case 3:\n                    _a = _b.sent(), value = _a.value, done = _a.done;\n                    if (!done) return [3, 5];\n                    return [4, __await(void 0)];\n                case 4: return [2, _b.sent()];\n                case 5: return [4, __await(value)];\n                case 6: return [4, _b.sent()];\n                case 7:\n                    _b.sent();\n                    return [3, 2];\n                case 8: return [3, 10];\n                case 9:\n                    reader.releaseLock();\n                    return [7];\n                case 10: return [2];\n            }\n        });\n    });\n}\nexport function isReadableStreamLike(obj) {\n    return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n    if (input instanceof Observable) {\n        return input;\n    }\n    if (input != null) {\n        if (isInteropObservable(input)) {\n            return fromInteropObservable(input);\n        }\n        if (isArrayLike(input)) {\n            return fromArrayLike(input);\n        }\n        if (isPromise(input)) {\n            return fromPromise(input);\n        }\n        if (isAsyncIterable(input)) {\n            return fromAsyncIterable(input);\n        }\n        if (isIterable(input)) {\n            return fromIterable(input);\n        }\n        if (isReadableStreamLike(input)) {\n            return fromReadableStreamLike(input);\n        }\n    }\n    throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n    return new Observable(function (subscriber) {\n        var obs = obj[Symbol_observable]();\n        if (isFunction(obs.subscribe)) {\n            return obs.subscribe(subscriber);\n        }\n        throw new TypeError('Provided object does not correctly implement Symbol.observable');\n    });\n}\nexport function fromArrayLike(array) {\n    return new Observable(function (subscriber) {\n        for (var i = 0; i < array.length && !subscriber.closed; i++) {\n            subscriber.next(array[i]);\n        }\n        subscriber.complete();\n    });\n}\nexport function fromPromise(promise) {\n    return new Observable(function (subscriber) {\n        promise\n            .then(function (value) {\n            if (!subscriber.closed) {\n                subscriber.next(value);\n                subscriber.complete();\n            }\n        }, function (err) { return subscriber.error(err); })\n            .then(null, reportUnhandledError);\n    });\n}\nexport function fromIterable(iterable) {\n    return new Observable(function (subscriber) {\n        var e_1, _a;\n        try {\n            for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n                var value = iterable_1_1.value;\n                subscriber.next(value);\n                if (subscriber.closed) {\n                    return;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        subscriber.complete();\n    });\n}\nexport function fromAsyncIterable(asyncIterable) {\n    return new Observable(function (subscriber) {\n        process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n    });\n}\nexport function fromReadableStreamLike(readableStream) {\n    return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n    var asyncIterable_1, asyncIterable_1_1;\n    var e_2, _a;\n    return __awaiter(this, void 0, void 0, function () {\n        var value, e_2_1;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    _b.trys.push([0, 5, 6, 11]);\n                    asyncIterable_1 = __asyncValues(asyncIterable);\n                    _b.label = 1;\n                case 1: return [4, asyncIterable_1.next()];\n                case 2:\n                    if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n                    value = asyncIterable_1_1.value;\n                    subscriber.next(value);\n                    if (subscriber.closed) {\n                        return [2];\n                    }\n                    _b.label = 3;\n                case 3: return [3, 1];\n                case 4: return [3, 11];\n                case 5:\n                    e_2_1 = _b.sent();\n                    e_2 = { error: e_2_1 };\n                    return [3, 11];\n                case 6:\n                    _b.trys.push([6, , 9, 10]);\n                    if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n                    return [4, _a.call(asyncIterable_1)];\n                case 7:\n                    _b.sent();\n                    _b.label = 8;\n                case 8: return [3, 10];\n                case 9:\n                    if (e_2) throw e_2.error;\n                    return [7];\n                case 10: return [7];\n                case 11:\n                    subscriber.complete();\n                    return [2];\n            }\n        });\n    });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n    if (delay === void 0) { delay = 0; }\n    if (repeat === void 0) { repeat = false; }\n    var scheduleSubscription = scheduler.schedule(function () {\n        work();\n        if (repeat) {\n            parentSubscription.add(this.schedule(null, delay));\n        }\n        else {\n            this.unsubscribe();\n        }\n    }, delay);\n    parentSubscription.add(scheduleSubscription);\n    if (!repeat) {\n        return scheduleSubscription;\n    }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return operate(function (source, subscriber) {\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n    });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return operate(function (source, subscriber) {\n        subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n    });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n    return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n    return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n    return new Observable(function (subscriber) {\n        var i = 0;\n        return scheduler.schedule(function () {\n            if (i === input.length) {\n                subscriber.complete();\n            }\n            else {\n                subscriber.next(input[i++]);\n                if (!subscriber.closed) {\n                    this.schedule();\n                }\n            }\n        });\n    });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n    return new Observable(function (subscriber) {\n        var iterator;\n        executeSchedule(subscriber, scheduler, function () {\n            iterator = input[Symbol_iterator]();\n            executeSchedule(subscriber, scheduler, function () {\n                var _a;\n                var value;\n                var done;\n                try {\n                    (_a = iterator.next(), value = _a.value, done = _a.done);\n                }\n                catch (err) {\n                    subscriber.error(err);\n                    return;\n                }\n                if (done) {\n                    subscriber.complete();\n                }\n                else {\n                    subscriber.next(value);\n                }\n            }, 0, true);\n        });\n        return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n    });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n    if (!input) {\n        throw new Error('Iterable cannot be null');\n    }\n    return new Observable(function (subscriber) {\n        executeSchedule(subscriber, scheduler, function () {\n            var iterator = input[Symbol.asyncIterator]();\n            executeSchedule(subscriber, scheduler, function () {\n                iterator.next().then(function (result) {\n                    if (result.done) {\n                        subscriber.complete();\n                    }\n                    else {\n                        subscriber.next(result.value);\n                    }\n                });\n            }, 0, true);\n        });\n    });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n    return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n    if (input != null) {\n        if (isInteropObservable(input)) {\n            return scheduleObservable(input, scheduler);\n        }\n        if (isArrayLike(input)) {\n            return scheduleArray(input, scheduler);\n        }\n        if (isPromise(input)) {\n            return schedulePromise(input, scheduler);\n        }\n        if (isAsyncIterable(input)) {\n            return scheduleAsyncIterable(input, scheduler);\n        }\n        if (isIterable(input)) {\n            return scheduleIterable(input, scheduler);\n        }\n        if (isReadableStreamLike(input)) {\n            return scheduleReadableStreamLike(input, scheduler);\n        }\n    }\n    throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n    return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var scheduler = popScheduler(args);\n    return from(args, scheduler);\n}\n//# sourceMappingURL=of.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) {\n    return function EmptyErrorImpl() {\n        _super(this);\n        this.name = 'EmptyError';\n        this.message = 'no elements in sequence';\n    };\n});\n//# sourceMappingURL=EmptyError.js.map","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n    var hasConfig = typeof config === 'object';\n    return new Promise(function (resolve, reject) {\n        var subscriber = new SafeSubscriber({\n            next: function (value) {\n                resolve(value);\n                subscriber.unsubscribe();\n            },\n            error: reject,\n            complete: function () {\n                if (hasConfig) {\n                    resolve(config.defaultValue);\n                }\n                else {\n                    reject(new EmptyError());\n                }\n            },\n        });\n        source.subscribe(subscriber);\n    });\n}\n//# sourceMappingURL=firstValueFrom.js.map","export function isValidDate(value) {\n    return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n    return operate(function (source, subscriber) {\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            subscriber.next(project.call(thisArg, value, index++));\n        }));\n    });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n    return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n    return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","var isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nexport function argsArgArrayOrObject(args) {\n    if (args.length === 1) {\n        var first_1 = args[0];\n        if (isArray(first_1)) {\n            return { args: first_1, keys: null };\n        }\n        if (isPOJO(first_1)) {\n            var keys = getKeys(first_1);\n            return {\n                args: keys.map(function (key) { return first_1[key]; }),\n                keys: keys,\n            };\n        }\n    }\n    return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n    return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","export function createObject(keys, values) {\n    return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\n//# sourceMappingURL=createObject.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var scheduler = popScheduler(args);\n    var resultSelector = popResultSelector(args);\n    var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n    if (observables.length === 0) {\n        return from([], scheduler);\n    }\n    var result = new Observable(combineLatestInit(observables, scheduler, keys\n        ?\n            function (values) { return createObject(keys, values); }\n        :\n            identity));\n    return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform) {\n    if (valueTransform === void 0) { valueTransform = identity; }\n    return function (subscriber) {\n        maybeSchedule(scheduler, function () {\n            var length = observables.length;\n            var values = new Array(length);\n            var active = length;\n            var remainingFirstValues = length;\n            var _loop_1 = function (i) {\n                maybeSchedule(scheduler, function () {\n                    var source = from(observables[i], scheduler);\n                    var hasFirstValue = false;\n                    source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n                        values[i] = value;\n                        if (!hasFirstValue) {\n                            hasFirstValue = true;\n                            remainingFirstValues--;\n                        }\n                        if (!remainingFirstValues) {\n                            subscriber.next(valueTransform(values.slice()));\n                        }\n                    }, function () {\n                        if (!--active) {\n                            subscriber.complete();\n                        }\n                    }));\n                }, subscriber);\n            };\n            for (var i = 0; i < length; i++) {\n                _loop_1(i);\n            }\n        }, subscriber);\n    };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n    if (scheduler) {\n        executeSchedule(subscription, scheduler, execute);\n    }\n    else {\n        execute();\n    }\n}\n//# sourceMappingURL=combineLatest.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n    var buffer = [];\n    var active = 0;\n    var index = 0;\n    var isComplete = false;\n    var checkComplete = function () {\n        if (isComplete && !buffer.length && !active) {\n            subscriber.complete();\n        }\n    };\n    var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n    var doInnerSub = function (value) {\n        expand && subscriber.next(value);\n        active++;\n        var innerComplete = false;\n        innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n            onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n            if (expand) {\n                outerNext(innerValue);\n            }\n            else {\n                subscriber.next(innerValue);\n            }\n        }, function () {\n            innerComplete = true;\n        }, undefined, function () {\n            if (innerComplete) {\n                try {\n                    active--;\n                    var _loop_1 = function () {\n                        var bufferedValue = buffer.shift();\n                        if (innerSubScheduler) {\n                            executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n                        }\n                        else {\n                            doInnerSub(bufferedValue);\n                        }\n                    };\n                    while (buffer.length && active < concurrent) {\n                        _loop_1();\n                    }\n                    checkComplete();\n                }\n                catch (err) {\n                    subscriber.error(err);\n                }\n            }\n        }));\n    };\n    source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n        isComplete = true;\n        checkComplete();\n    }));\n    return function () {\n        additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n    };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n    if (concurrent === void 0) { concurrent = Infinity; }\n    if (isFunction(resultSelector)) {\n        return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n    }\n    else if (typeof resultSelector === 'number') {\n        concurrent = resultSelector;\n    }\n    return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n    if (concurrent === void 0) { concurrent = Infinity; }\n    return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n    return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n    if (isFunction(options)) {\n        resultSelector = options;\n        options = undefined;\n    }\n    if (resultSelector) {\n        return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n    }\n    var _a = __read(isEventTarget(target)\n        ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n        :\n            isNodeStyleEventEmitter(target)\n                ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n                : isJQueryStyleEventEmitter(target)\n                    ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n                    : [], 2), add = _a[0], remove = _a[1];\n    if (!add) {\n        if (isArrayLike(target)) {\n            return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n        }\n    }\n    if (!add) {\n        throw new TypeError('Invalid event target');\n    }\n    return new Observable(function (subscriber) {\n        var handler = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return subscriber.next(1 < args.length ? args : args[0]);\n        };\n        add(handler);\n        return function () { return remove(handler); };\n    });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n    return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n    return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n    return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n    return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nexport function fromEventPattern(addHandler, removeHandler, resultSelector) {\n    if (resultSelector) {\n        return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs(resultSelector));\n    }\n    return new Observable(function (subscriber) {\n        var handler = function () {\n            var e = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                e[_i] = arguments[_i];\n            }\n            return subscriber.next(e.length === 1 ? e[0] : e);\n        };\n        var retValue = addHandler(handler);\n        return isFunction(removeHandler) ? function () { return removeHandler(handler, retValue); } : undefined;\n    });\n}\n//# sourceMappingURL=fromEventPattern.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n    if (dueTime === void 0) { dueTime = 0; }\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    var intervalDuration = -1;\n    if (intervalOrScheduler != null) {\n        if (isScheduler(intervalOrScheduler)) {\n            scheduler = intervalOrScheduler;\n        }\n        else {\n            intervalDuration = intervalOrScheduler;\n        }\n    }\n    return new Observable(function (subscriber) {\n        var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n        if (due < 0) {\n            due = 0;\n        }\n        var n = 0;\n        return scheduler.schedule(function () {\n            if (!subscriber.closed) {\n                subscriber.next(n++);\n                if (0 <= intervalDuration) {\n                    this.schedule(undefined, intervalDuration);\n                }\n                else {\n                    subscriber.complete();\n                }\n            }\n        }, due);\n    });\n}\n//# sourceMappingURL=timer.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var scheduler = popScheduler(args);\n    var concurrent = popNumber(args, Infinity);\n    var sources = args;\n    return !sources.length\n        ?\n            EMPTY\n        : sources.length === 1\n            ?\n                innerFrom(sources[0])\n            :\n                mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n    return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n    return operate(function (source, subscriber) {\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n    });\n}\n//# sourceMappingURL=filter.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function race() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    sources = argsOrArgArray(sources);\n    return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\nexport function raceInit(sources) {\n    return function (subscriber) {\n        var subscriptions = [];\n        var _loop_1 = function (i) {\n            subscriptions.push(innerFrom(sources[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n                if (subscriptions) {\n                    for (var s = 0; s < subscriptions.length; s++) {\n                        s !== i && subscriptions[s].unsubscribe();\n                    }\n                    subscriptions = null;\n                }\n                subscriber.next(value);\n            })));\n        };\n        for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n            _loop_1(i);\n        }\n    };\n}\n//# sourceMappingURL=race.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n    if (keySelector === void 0) { keySelector = identity; }\n    comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n    return operate(function (source, subscriber) {\n        var previousKey;\n        var first = true;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var currentKey = keySelector(value);\n            if (first || !comparator(previousKey, currentKey)) {\n                first = false;\n                previousKey = currentKey;\n                subscriber.next(value);\n            }\n        }));\n    });\n}\nfunction defaultCompare(a, b) {\n    return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustMap(project, resultSelector) {\n    if (resultSelector) {\n        return function (source) {\n            return source.pipe(exhaustMap(function (a, i) { return innerFrom(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));\n        };\n    }\n    return operate(function (source, subscriber) {\n        var index = 0;\n        var innerSub = null;\n        var isComplete = false;\n        source.subscribe(createOperatorSubscriber(subscriber, function (outerValue) {\n            if (!innerSub) {\n                innerSub = createOperatorSubscriber(subscriber, undefined, function () {\n                    innerSub = null;\n                    isComplete && subscriber.complete();\n                });\n                innerFrom(project(outerValue, index++)).subscribe(innerSub);\n            }\n        }, function () {\n            isComplete = true;\n            !innerSub && subscriber.complete();\n        }));\n    });\n}\n//# sourceMappingURL=exhaustMap.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n    return function (wrapperSource) {\n        var connection;\n        var resetConnection;\n        var subject;\n        var refCount = 0;\n        var hasCompleted = false;\n        var hasErrored = false;\n        var cancelReset = function () {\n            resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n            resetConnection = undefined;\n        };\n        var reset = function () {\n            cancelReset();\n            connection = subject = undefined;\n            hasCompleted = hasErrored = false;\n        };\n        var resetAndUnsubscribe = function () {\n            var conn = connection;\n            reset();\n            conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n        };\n        return operate(function (source, subscriber) {\n            refCount++;\n            if (!hasErrored && !hasCompleted) {\n                cancelReset();\n            }\n            var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n            subscriber.add(function () {\n                refCount--;\n                if (refCount === 0 && !hasErrored && !hasCompleted) {\n                    resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n                }\n            });\n            dest.subscribe(subscriber);\n            if (!connection &&\n                refCount > 0) {\n                connection = new SafeSubscriber({\n                    next: function (value) { return dest.next(value); },\n                    error: function (err) {\n                        hasErrored = true;\n                        cancelReset();\n                        resetConnection = handleReset(reset, resetOnError, err);\n                        dest.error(err);\n                    },\n                    complete: function () {\n                        hasCompleted = true;\n                        cancelReset();\n                        resetConnection = handleReset(reset, resetOnComplete);\n                        dest.complete();\n                    },\n                });\n                innerFrom(source).subscribe(connection);\n            }\n        })(wrapperSource);\n    };\n}\nfunction handleReset(reset, on) {\n    var args = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        args[_i - 2] = arguments[_i];\n    }\n    if (on === true) {\n        reset();\n        return;\n    }\n    if (on === false) {\n        return;\n    }\n    var onSubscriber = new SafeSubscriber({\n        next: function () {\n            onSubscriber.unsubscribe();\n            reset();\n        },\n    });\n    return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n    var _a, _b, _c;\n    var bufferSize;\n    var refCount = false;\n    if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n        (_a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler);\n    }\n    else {\n        bufferSize = (configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity);\n    }\n    return share({\n        connector: function () { return new ReplaySubject(bufferSize, windowTime, scheduler); },\n        resetOnError: true,\n        resetOnComplete: false,\n        resetOnRefCountZero: refCount,\n    });\n}\n//# sourceMappingURL=shareReplay.js.map","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith() {\n    var values = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        values[_i] = arguments[_i];\n    }\n    var scheduler = popScheduler(values);\n    return operate(function (source, subscriber) {\n        (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n    });\n}\n//# sourceMappingURL=startWith.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n    return operate(function (source, subscriber) {\n        var innerSubscriber = null;\n        var index = 0;\n        var isComplete = false;\n        var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n            var innerIndex = 0;\n            var outerIndex = index++;\n            innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n                innerSubscriber = null;\n                checkComplete();\n            })));\n        }, function () {\n            isComplete = true;\n            checkComplete();\n        }));\n    });\n}\n//# sourceMappingURL=switchMap.js.map","import { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\nexport function switchAll() {\n    return switchMap(identity);\n}\n//# sourceMappingURL=switchAll.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n    return operate(function (source, subscriber) {\n        innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop));\n        !subscriber.closed && source.subscribe(subscriber);\n    });\n}\n//# sourceMappingURL=takeUntil.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n    var tapObserver = isFunction(observerOrNext) || error || complete\n        ?\n            { next: observerOrNext, error: error, complete: complete }\n        : observerOrNext;\n    return tapObserver\n        ? operate(function (source, subscriber) {\n            var _a;\n            (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n            var isUnsub = true;\n            source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n                var _a;\n                (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n                subscriber.next(value);\n            }, function () {\n                var _a;\n                isUnsub = false;\n                (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n                subscriber.complete();\n            }, function (err) {\n                var _a;\n                isUnsub = false;\n                (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n                subscriber.error(err);\n            }, function () {\n                var _a, _b;\n                if (isUnsub) {\n                    (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n                }\n                (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n            }));\n        })\n        :\n            identity;\n}\n//# sourceMappingURL=tap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n    return operate(function (source, subscriber) {\n        var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n        var hasValue = false;\n        var sendValue = null;\n        var throttled = null;\n        var isComplete = false;\n        var endThrottling = function () {\n            throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n            throttled = null;\n            if (trailing) {\n                send();\n                isComplete && subscriber.complete();\n            }\n        };\n        var cleanupThrottling = function () {\n            throttled = null;\n            isComplete && subscriber.complete();\n        };\n        var startThrottle = function (value) {\n            return (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n        };\n        var send = function () {\n            if (hasValue) {\n                hasValue = false;\n                var value = sendValue;\n                sendValue = null;\n                subscriber.next(value);\n                !isComplete && startThrottle(value);\n            }\n        };\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            hasValue = true;\n            sendValue = value;\n            !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n        }, function () {\n            isComplete = true;\n            !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n        }));\n    });\n}\n//# sourceMappingURL=throttle.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    var duration$ = timer(duration, scheduler);\n    return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { __values } from \"tslib\";\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\nexport function windowToggle(openings, closingSelector) {\n    return operate(function (source, subscriber) {\n        var windows = [];\n        var handleError = function (err) {\n            while (0 < windows.length) {\n                windows.shift().error(err);\n            }\n            subscriber.error(err);\n        };\n        innerFrom(openings).subscribe(createOperatorSubscriber(subscriber, function (openValue) {\n            var window = new Subject();\n            windows.push(window);\n            var closingSubscription = new Subscription();\n            var closeWindow = function () {\n                arrRemove(windows, window);\n                window.complete();\n                closingSubscription.unsubscribe();\n            };\n            var closingNotifier;\n            try {\n                closingNotifier = innerFrom(closingSelector(openValue));\n            }\n            catch (err) {\n                handleError(err);\n                return;\n            }\n            subscriber.next(window.asObservable());\n            closingSubscription.add(closingNotifier.subscribe(createOperatorSubscriber(subscriber, closeWindow, noop, handleError)));\n        }, noop));\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var e_1, _a;\n            var windowsCopy = windows.slice();\n            try {\n                for (var windowsCopy_1 = __values(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) {\n                    var window_1 = windowsCopy_1_1.value;\n                    window_1.next(value);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a = windowsCopy_1.return)) _a.call(windowsCopy_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        }, function () {\n            while (0 < windows.length) {\n                windows.shift().complete();\n            }\n            subscriber.complete();\n        }, handleError, function () {\n            while (0 < windows.length) {\n                windows.shift().unsubscribe();\n            }\n        }));\n    });\n}\n//# sourceMappingURL=windowToggle.js.map","import { Observable, fromEvent, fromEventPattern, shareReplay } from \"rxjs\";\nimport { type NodeEventHandler } from \"rxjs/internal/observable/fromEvent\";\n\n// [most popular events from the DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Events)\n\ndeclare const document: Document & {\n  attachEvent: any;\n  createEventObject: any;\n  onmousewheel: any;\n};\n\nexport type EventMap = GlobalEventHandlersEventMap &\n  ElementEventMap &\n  HTMLElementEventMap &\n  DocumentEventMap &\n  WindowEventHandlersEventMap &\n  WindowEventMap &\n  MediaQueryListEventMap;\n\n// event.type == 'mouseover'\ntype EventName =\n  | keyof EventMap\n  | \"wheel\"\n  | \"mousewheel\"\n  | \"DOMMouseScroll\"\n  | \"transitionend\"\n  | \"webkitTransitionEnd\"\n  | \"oTransitionEnd\"\n  | \"MSTransitionEnd\";\n\ntype EventScope =\n  | MouseEvent\n  | KeyboardEvent\n  | TouchEvent\n  | PointerEvent\n  | DragEvent\n  | Event\n  | CustomEvent\n  | UIEvent\n  | TransitionEvent\n  | AnimationEvent\n  | StorageEvent\n  | any;\n\n// event.target: Refers to the actual element where the event occurred\n// event.currentTarget: Refers to the element to which the event handler is attached\n\nexport function getEventCurrentTarget(e: any) {\n  // first, IE method for mouse events(also supported by Safari and Opera)\n  if (e.toElement) {\n    return e.toElement;\n    // W3C\n  } else if (e.currentTarget) {\n    return e.currentTarget;\n    // MS way\n  } else if (e.srcElement) {\n    return e.srcElement;\n  } else {\n    return null;\n  }\n}\n\nexport type HTMLEventObservable =\n  | EventTarget\n  | HTMLElement\n  | SVGElement\n  | SVGSVGElement\n  | HTMLCanvasElement\n  | any;\n\n// [ 捕获阶段 -> 目标阶段 -> 冒泡阶段 ]\n// useCapture 用于指定是否在捕获阶段进行处理，一般设置为 false 与 IE浏览器保持一致\n\n// Event handlers are the best place for side effects.\n\nexport function createEventListener(\n  target: HTMLEventObservable,\n  eventName: EventName,\n  handler: (e: EventScope) => void | Promise<void>,\n  useCapture = false\n): () => void {\n  const eventHandler = async (e: EventScope) => {\n    await handler(e);\n  };\n\n  try {\n    target.addEventListener(eventName, eventHandler, useCapture);\n  } catch (e) {\n    target.attachEvent(\"on\" + eventName, eventHandler);\n  }\n\n  return () => {\n    try {\n      target.removeEventListener(eventName, eventHandler, useCapture);\n    } catch (e) {\n      target.detachEvent(\"on\" + eventName, eventHandler);\n    }\n  };\n}\n\n// 绑定事件监听器到父元素\nexport function createParentEventListener(\n  parent: HTMLEventObservable,\n  target: HTMLEventObservable,\n  eventName: EventName,\n  handler: (e: EventScope) => void | Promise<void>,\n  useCapture = false\n): () => void {\n  return createEventListener(\n    parent || document.body,\n    eventName,\n    (e) => {\n      if (e.target === target) {\n        // hit 目标元素!\n        handler(e);\n      }\n    },\n    useCapture\n  );\n}\n\nexport function removeAllEventListeners(target: HTMLEventObservable) {\n  target.replaceWith(target.cloneNode(true));\n}\n\nexport function createEventListener$<T extends EventScope = EventScope>(\n  target: HTMLEventObservable,\n  eventName: EventName,\n  useCapture = false\n): Observable<T> {\n  // 当取消订阅时，fromEvent 会自动停止监听事件\n  return fromEvent<T>(target, eventName, { capture: useCapture });\n}\n\n// createFromEventPattern$({\n//   register: (handler) => {\n//     watch(\n//       () => xxx,\n//       (newName, oldName) => {\n//         // console.log(`路由从 ${oldName} 变更为 ${newName}`);\n//         if (routeName == oldName) {\n//           handler();\n//         }\n//       },\n//       {\n//         immediate: true\n//       }\n//     );\n//   },\n//   share: false\n// });\nexport function createFromEventPattern$(options: {\n  register: (handler: NodeEventHandler) => any;\n  unregister?: (handler: NodeEventHandler, ...args: any[]) => any;\n  share?: boolean;\n  bufferSize?: number;\n}): Observable<any[]> {\n  // observer.next 默认只会接收「自定义事件机制」emit 的第一个参数\n  const $ = fromEventPattern(\n    (\n      handler: NodeEventHandler // observer.next 会被当做 handler 注入\n    ) => {\n      // register 中需要开发者自己调用「自定义的事件机制」的「注册事件机制」，\n      // 将 handler 注册为「自定义的事件机制」的「监听者」\n      // 返回 给 unregister 的第二个参数\n      return options.register(handler);\n    },\n    (handler: NodeEventHandler, args?: any[]) => {\n      options.unregister?.(handler, ...(args || []));\n    },\n    // 参数转换函数\n    // 将「自定义事件机制 emit 的多参数」转换为「observer.next 的第一个参数」\n    (...args: any[]) => {\n      return [...args];\n    }\n  );\n  if (options.share) {\n    return $.pipe(\n      shareReplay({\n        bufferSize: options.bufferSize || 1, // 每个新订阅会收到最近一次事件\n        refCount: true // 最后一个订阅取消时会自动解绑事件\n      })\n    );\n  } else {\n    return $;\n  }\n}\n\n// 阻止事件冒泡\n// stops the event handlers attached to the tags above from firing\n// All events propagate in React except onScroll, which only works on the JSX tag you attach it to.\n// e.stopPropagation();\n// e.stopImmediatePropagation();\nexport function stopPropagation(e: EventScope) {\n  if (e.stopPropagation) {\n    e.stopPropagation();\n    return;\n  }\n  try {\n    e.cancelBubble = true;\n  } catch (ex) {\n    // do nothing\n  }\n}\n\n// <div\n//   onClickCapture={() => {\n//     /* this runs first */\n//   }}>\n//   <button onClick={(e) => e.stopPropagation()} />\n//   <button onClick={(e) => e.stopPropagation()} />\n// </div>;\n\n// prevents the default browser behavior for the few events that have it\n// e.preventDefault();\nexport function preventDefault(e: EventScope) {\n  if (e.preventDefault) {\n    e.preventDefault();\n    return;\n  }\n  try {\n    e.returnValue = false;\n  } catch (ex) {\n    // do nothing\n  }\n}\n\n// https://dom.spec.whatwg.org/#dom-document-createevent\n// 以下按需扩展\nconst MouseEvents = [\n  \"click\",\n  \"dblclick\",\n  \"wheel\",\n  \"contextmenu\",\n  \"mousedown\",\n  \"mouseup\",\n  \"mousemove\",\n  \"mouseover\",\n  \"mouseout\",\n  \"mouseenter\",\n  \"mouseleave\"\n];\nconst KeyboardEvents = [\"keydown\", \"keyup\", \"keypress\"];\nconst TouchEvents = [\"touchstart\", \"touchend\", \"touchcancel\", \"touchmove\"];\nconst PointerEvents = [\n  \"pointerdown\",\n  \"pointerup\",\n  \"pointercancel\",\n  \"pointermove\"\n];\nconst DragEvents = [\n  \"dragstart\",\n  \"drag\",\n  \"dragend\",\n  \"dragenter\",\n  \"dragover\",\n  \"dragleave\",\n  \"drop\"\n];\nconst Events = [\"change\"];\n\nexport function createEvent(\n  eventName: EventName, // click keydown ...\n  options:\n    | MouseEventInit\n    | KeyboardEventInit\n    | TouchEventInit\n    | PointerEventInit\n    | DragEventInit\n    | EventInit\n    | CustomEventInit = {\n    bubbles: true,\n    detail: {}\n  }\n): EventScope {\n  let event;\n  try {\n    const o = Object.assign(\n      {\n        bubbles: true,\n        cancelable: true,\n        view: window,\n        detail: 1,\n        // screenX: e.screenX,\n        // screenY: e.screenY,\n        // clientX: e.clientX,\n        // clientY: e.clientY,\n        ctrlKey: false,\n        altKey: false,\n        shiftKey: false,\n        metaKey: false,\n        button: 0,\n        relatedTarget: null\n      },\n      options\n    );\n    if (MouseEvents.includes(eventName)) {\n      event = new MouseEvent(eventName, o);\n    } else if (KeyboardEvents.includes(eventName)) {\n      event = new KeyboardEvent(eventName, o);\n    } else if (TouchEvents.includes(eventName)) {\n      event = new TouchEvent(eventName, o);\n    } else if (PointerEvents.includes(eventName)) {\n      event = new PointerEvent(eventName, o);\n    } else if (DragEvents.includes(eventName)) {\n      event = new DragEvent(eventName, o);\n    } else if (Events.includes(eventName)) {\n      event = new Event(eventName, o);\n    } else {\n      // const event = new CustomEvent(\"awesome\", { detail: { text: () => textarea.value } });\n      // el.addEventListener(\"awesome\", (e) => console.log(e.detail.text()));\n      event = new CustomEvent(eventName, o);\n    }\n  } catch (e) {\n    // fallback\n    if (document.createEvent) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/initMouseEvent\n      // initMouseEvent is deprecated.\n      event = document\n        // .createEvent(\"HTMLEvents\")\n        .createEvent(\"Event\")\n        .initEvent(eventName, true, true); // event-type, bubbling, cancelable\n    } else if (document.createEventObject) {\n      event = document.createEventObject();\n    }\n  }\n  return event;\n}\n\nexport function dispatchEvent(\n  target: HTMLEventObservable,\n  eventName: EventName, // click keydown ...\n  event: EventScope\n) {\n  if (!target) {\n    return;\n  }\n  if (target.dispatchEvent) {\n    // dispatch for firefox + ie9 + others\n    target.dispatchEvent(event);\n  } else if (target.fireEvent && document.createEventObject) {\n    // dispatch for IE8 and lower\n    target.fireEvent(\"on\" + eventName, event);\n  } else {\n    throw new Error(`Can't dispatch event : ${eventName}`);\n  }\n}\n\nexport function dispatchEventFromEvent(e: EventScope, eventName: EventName) {\n  const target = e.target;\n  const event = createEvent(eventName);\n  dispatchEvent(target, eventName, event);\n}\n\nexport function dispatchClickFromEvent(e: EventScope) {\n  const target = e.target as any;\n  const eventName = \"click\";\n  if (!/(SELECT|INPUT|TEXTAREA)/i.test(target.tagName)) {\n    const event = createEvent(eventName) as any;\n    event.view = (e as any).view || window;\n    event.detail = 1;\n    event.screenX = target.screenX || 0;\n    event.screenY = target.screenY || 0;\n    event.clientX = target.clientX || 0;\n    event.clientY = target.clientY || 0;\n    event.pageX = (e as any).pageX;\n    event.pageY = (e as any).pageY;\n    event.ctrlKey = !!(e as any).ctrlKey;\n    event.altKey = !!(e as any).altKey;\n    event.shiftKey = !!(e as any).shiftKey;\n    event.metaKey = !!(e as any).metaKey;\n    event.button = 0;\n    event.relatedTarget = null;\n    event._constructed = true;\n    dispatchEvent(target, eventName, event);\n  }\n}\n\nexport function simulateEventFromTouch(\n  touchEvent: TouchEvent,\n  eventName: EventName\n): EventScope {\n  const touch = touchEvent.changedTouches[0];\n  return createEvent(eventName, {\n    bubbles: true,\n    cancelable: true,\n    view: window,\n    detail: 1,\n    screenX: touch.screenX,\n    screenY: touch.screenY,\n    clientX: touch.clientX,\n    clientY: touch.clientY,\n    ctrlKey: false,\n    altKey: false,\n    shiftKey: false,\n    metaKey: false,\n    button: 0,\n    relatedTarget: null\n  });\n}\n","// import UPNG from \"./UPNG\";\n\nexport type ImageDisplayMode =\n  | \"scaleToFill\" // 不保持纵横比缩放图片，使图片的宽高完全拉伸至填满 image 元素\n  | \"aspectFit\" // 保持纵横比缩放图片，使图片的长边能完全显示出来，也就是说，可以完整地将图片显示出来\n  | \"aspectFill\" // 保持纵横比缩放图片，只保证图片的短边能完全显示出来，也就是说，图片通常只在水平或垂直方向是完整的，另一个方向将会发生截取\n  | \"widthFix\" // 保持纵横比缩放图片，宽度完全拉伸，高度自动变化\n  | \"heightFix\"; // 保持纵横比缩放图片，高度完全拉伸，宽度自动变化\n\nexport function computeImageDisplayRect(\n  mode: ImageDisplayMode,\n  sourceWidth: number,\n  sourceHeight: number,\n  containerWidth: number,\n  containerHeight: number\n): { width: number; height: number } {\n  const sourceAspectRatio = sourceWidth / sourceHeight;\n  let showWidth = 0;\n  let showHeight = 0;\n  switch (mode) {\n    case \"aspectFit\":\n      if (sourceAspectRatio >= 1) {\n        showWidth = containerWidth;\n        showHeight = showWidth / sourceAspectRatio;\n        if (showHeight > containerHeight) {\n          showHeight = containerHeight;\n          showWidth = showHeight * sourceAspectRatio;\n        }\n      } else {\n        showHeight = containerHeight;\n        showWidth = showHeight * sourceAspectRatio;\n        if (showWidth > containerWidth) {\n          showWidth = containerWidth;\n          showHeight = showWidth / sourceAspectRatio;\n        }\n      }\n      break;\n    case \"aspectFill\":\n      if (sourceAspectRatio >= 1) {\n        showHeight = containerHeight;\n        showWidth = showHeight * sourceAspectRatio;\n      } else {\n        showWidth = containerWidth;\n        showHeight = showWidth / sourceAspectRatio;\n      }\n      break;\n    case \"widthFix\":\n      showWidth = containerWidth;\n      showHeight = showWidth / sourceAspectRatio;\n      break;\n    case \"heightFix\":\n      showHeight = containerHeight;\n      showWidth = showHeight * sourceAspectRatio;\n      break;\n    case \"scaleToFill\":\n    default:\n      showWidth = containerWidth;\n      showHeight = containerHeight;\n      break;\n  }\n  return { width: showWidth, height: showHeight };\n}\n\nexport function getImageData(\n  image: ImageBitmap | HTMLImageElement | HTMLVideoElement\n): ImageData {\n  try {\n    const canvas = document.createElement(\"canvas\") as HTMLCanvasElement;\n    const ctx = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n    canvas.width = image.width;\n    canvas.height = image.height;\n    ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n    return ctx.getImageData(0, 0, canvas.width, canvas.height) as ImageData;\n  } catch (e) {\n    // Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.\n    return new ImageData(image.width, image.height);\n  }\n}\n\n/// ImageData对象转Bitmap\nexport const imageDataToBitmap = (imageData: ImageData) => {\n  //\n  // BITMAPFILEHEADER: http://msdn.microsoft.com/en-us/library/windows/desktop/dd183374(v=vs.85).aspx\n  // BITMAPINFOHEADER: http://msdn.microsoft.com/en-us/library/dd183376.aspx\n  //\n\n  const biWidth = imageData.width;\n  const biHeight = imageData.height;\n  const biSizeImage = biWidth * biHeight * 3;\n  const bfSize = biSizeImage + 54; // total header size = 54 bytes\n\n  //\n  //  typedef struct tagBITMAPFILEHEADER {\n  //  \tWORD bfType;\n  //  \tDWORD bfSize;\n  //  \tWORD bfReserved1;\n  //  \tWORD bfReserved2;\n  //  \tDWORD bfOffBits;\n  //  } BITMAPFILEHEADER;\n  //\n  const BITMAPFILEHEADER = [\n    // WORD bfType -- The file type signature; must be \"BM\"\n    0x42,\n    0x4d,\n    // DWORD bfSize -- The size, in bytes, of the bitmap file\n    bfSize & 0xff,\n    (bfSize >> 8) & 0xff,\n    (bfSize >> 16) & 0xff,\n    (bfSize >> 24) & 0xff,\n    // WORD bfReserved1 -- Reserved; must be zero\n    0,\n    0,\n    // WORD bfReserved2 -- Reserved; must be zero\n    0,\n    0,\n    // DWORD bfOffBits -- The offset, in bytes, from the beginning of the BITMAPFILEHEADER structure to the bitmap bits.\n    54,\n    0,\n    0,\n    0\n  ];\n\n  //\n  //  typedef struct tagBITMAPINFOHEADER {\n  //  \tDWORD biSize;\n  //  \tLONG  biWidth;\n  //  \tLONG  biHeight;\n  //  \tWORD  biPlanes;\n  //  \tWORD  biBitCount;\n  //  \tDWORD biCompression;\n  //  \tDWORD biSizeImage;\n  //  \tLONG  biXPelsPerMeter;\n  //  \tLONG  biYPelsPerMeter;\n  //  \tDWORD biClrUsed;\n  //  \tDWORD biClrImportant;\n  //  } BITMAPINFOHEADER, *PBITMAPINFOHEADER;\n  //\n  const BITMAPINFOHEADER = [\n    // DWORD biSize -- The number of bytes required by the structure\n    40,\n    0,\n    0,\n    0,\n    // LONG biWidth -- The width of the bitmap, in pixels\n    biWidth & 0xff,\n    (biWidth >> 8) & 0xff,\n    (biWidth >> 16) & 0xff,\n    (biWidth >> 24) & 0xff,\n    // LONG biHeight -- The height of the bitmap, in pixels\n    biHeight & 0xff,\n    (biHeight >> 8) & 0xff,\n    (biHeight >> 16) & 0xff,\n    (biHeight >> 24) & 0xff,\n    // WORD biPlanes -- The number of planes for the target device. This value must be set to 1\n    1,\n    0,\n    // WORD biBitCount -- The number of bits-per-pixel, 24 bits-per-pixel -- the bitmap\n    // has a maximum of 2^24 colors (16777216, Truecolor)\n    24,\n    0,\n    // DWORD biCompression -- The type of compression, BI_RGB (code 0) -- uncompressed\n    0,\n    0,\n    0,\n    0,\n    // DWORD biSizeImage -- The size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps\n    biSizeImage & 0xff,\n    (biSizeImage >> 8) & 0xff,\n    (biSizeImage >> 16) & 0xff,\n    (biSizeImage >> 24) & 0xff,\n    // LONG biXPelsPerMeter, unused\n    0,\n    0,\n    0,\n    0,\n    // LONG biYPelsPerMeter, unused\n    0,\n    0,\n    0,\n    0,\n    // DWORD biClrUsed, the number of color indexes of palette, unused\n    0,\n    0,\n    0,\n    0,\n    // DWORD biClrImportant, unused\n    0,\n    0,\n    0,\n    0\n  ];\n\n  const iPadding = (4 - ((biWidth * 3) % 4)) % 4;\n  const aImgData = imageData.data;\n\n  let strPixelData = \"\";\n  const biWidth4 = biWidth << 2;\n  let y = biHeight;\n  const fromCharCode = String.fromCharCode;\n\n  do {\n    const iOffsetY = biWidth4 * (y - 1);\n    let strPixelRow = \"\";\n    for (let x = 0; x < biWidth; x++) {\n      const iOffsetX = x << 2;\n      strPixelRow +=\n        fromCharCode(aImgData[iOffsetY + iOffsetX + 2]) +\n        fromCharCode(aImgData[iOffsetY + iOffsetX + 1]) +\n        fromCharCode(aImgData[iOffsetY + iOffsetX]);\n    }\n\n    for (let c = 0; c < iPadding; c++) {\n      strPixelRow += String.fromCharCode(0);\n    }\n\n    strPixelData += strPixelRow;\n  } while (--y);\n\n  function encodeData(data: string | any[]) {\n    if (!window.btoa) {\n      throw \"btoa undefined\";\n    }\n    let str = \"\";\n    if (typeof data == \"string\") {\n      str = data;\n    } else {\n      for (let i = 0; i < data.length; i++) {\n        str += String.fromCharCode(data[i]);\n      }\n    }\n    return btoa(str);\n  }\n\n  return (\n    encodeData(BITMAPFILEHEADER.concat(BITMAPINFOHEADER)) +\n    encodeData(strPixelData)\n  );\n};\n\n/**\n * ImageData对象转DataURL\n */\nexport function imageDataToDataURL(imageData: ImageData): string {\n  const { width, height } = imageData;\n  const canvas = document.createElement(\"canvas\") as HTMLCanvasElement;\n  const ctx = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n  canvas.width = width;\n  canvas.height = height;\n  ctx.putImageData(imageData, 0, 0, 0, 0, width, height);\n  const dataUrl = canvas.toDataURL(\"image/png\"); // 可添加 quality: any 进行有损压缩\n  return dataUrl;\n}\n\n/// ImageData对象转Blob\nexport const imageDataToBlob = (\n  imageData: ImageData,\n  exportImageType?: string,\n  cb?: (err: any, blob: Blob | null) => void\n) => {\n  const { width, height } = imageData;\n  const canvas = document.createElement(\"canvas\") as HTMLCanvasElement;\n  const ctx = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n  canvas.width = width;\n  canvas.height = height;\n  ctx.putImageData(imageData, 0, 0, 0, 0, width, height);\n  const toImageType = `image/${\n    exportImageType ? exportImageType.toLowerCase() : \"png\"\n  }`;\n  canvas.toBlob(\n    (blob: Blob | null) => {\n      cb?.(null, blob);\n    },\n    toImageType,\n    1\n  );\n};\n\nexport function blobToImageData(blob: Blob, options?: ImageBitmapOptions) {\n  return createImageBitmap(blob, options);\n}\n\n/// 获取图片的主要颜色值,返回表示颜色值的字符串,如rgb(red,green,blue)\nexport function getImageMainColor(imageData: ImageData) {\n  const arrR = [];\n  const arrG = [];\n  const arrB = [];\n  let j = 0;\n  for (let i = 0, len = imageData.data.length; i < len; i += 4) {\n    arrR[j] = imageData.data[i];\n    arrG[j] = imageData.data[i + 1];\n    arrB[j] = imageData.data[i + 2];\n    j += 1;\n  }\n  const R = _getArryWeightValue(arrR);\n  const G = _getArryWeightValue(arrG);\n  const B = _getArryWeightValue(arrB);\n  return \"rgb(\" + R + \",\" + G + \",\" + B + \")\";\n}\n// 用于获取数组中的最高权重值 返回数组的最高权重值\nfunction _getArryWeightValue(arr: number[]) {\n  const existArr = {} as { [index: number]: number };\n  const duplicationArr = [];\n  const duplicationCount = [];\n  for (let i = 0; i < arr.length; i++) {\n    if (!existArr[arr[i]]) {\n      existArr[arr[i]] = 1;\n    } else {\n      duplicationArr.push(arr[i]);\n    }\n  }\n  let k = 0;\n  for (let i = 0; i < duplicationArr.length; i++) {\n    k = 0;\n    for (let j = 0; j < duplicationArr.length; j++) {\n      if (duplicationArr[i] === duplicationArr[j]) {\n        k += 1;\n      }\n      duplicationCount[i] = k;\n    }\n  }\n  const max = Math.max.apply(null, duplicationCount);\n  let maxIndex = 0;\n  for (; maxIndex < duplicationCount.length; maxIndex++) {\n    if (duplicationCount[maxIndex] === max) {\n      return;\n    }\n  }\n  return duplicationArr[maxIndex];\n}\n\n/// 左右翻转ImageData\nexport const flipSideToSide = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      newImgData[startIndex] = data[(y * width + width - x - 1) * 4];\n      newImgData[startIndex + 1] = data[(y * width + width - x - 1) * 4 + 1];\n      newImgData[startIndex + 2] = data[(y * width + width - x - 1) * 4 + 2];\n      newImgData[startIndex + 3] = data[(y * width + width - x - 1) * 4 + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 上下翻转ImageData\nexport const flipUpsideDown = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      newImgData[startIndex] = data[((height - y - 1) * width + x) * 4];\n      newImgData[startIndex + 1] = data[((height - y - 1) * width + x) * 4 + 1];\n      newImgData[startIndex + 2] = data[((height - y - 1) * width + x) * 4 + 2];\n      newImgData[startIndex + 3] = data[((height - y - 1) * width + x) * 4 + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 左旋转ImageData\nexport const leftRotate = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let x = 0; x < width; x++) {\n    for (let y = 0; y < height; y++) {\n      const startIndex = (x * height + y) * 4;\n      newImgData[startIndex] = data[(y * width + width - x - 1) * 4];\n      newImgData[startIndex + 1] = data[(y * width + width - x - 1) * 4 + 1];\n      newImgData[startIndex + 2] = data[(y * width + width - x - 1) * 4 + 2];\n      newImgData[startIndex + 3] = data[(y * width + width - x - 1) * 4 + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, height, width);\n  return newImageData;\n};\n\n/// 右旋转ImageData\nexport const rightRotate = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let x = 0; x < width; x++) {\n    for (let y = 0; y < height; y++) {\n      const startIndex = (x * height + y) * 4;\n      newImgData[startIndex] = data[((height - y - 1) * width + x) * 4];\n      newImgData[startIndex + 1] = data[((height - y - 1) * width + x) * 4 + 1];\n      newImgData[startIndex + 2] = data[((height - y - 1) * width + x) * 4 + 2];\n      newImgData[startIndex + 3] = data[((height - y - 1) * width + x) * 4 + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, height, width);\n  return newImageData;\n};\n\n/// 灰化ImageData\nexport const toGrey = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      const avgColor =\n        (data[startIndex] + data[startIndex + 1] + data[startIndex + 2]) / 3;\n      newImgData[startIndex] = avgColor;\n      newImgData[startIndex + 1] = avgColor;\n      newImgData[startIndex + 2] = avgColor;\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 灰化ImageData\nexport const toGrey2 = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      //relative luminance, humans perceive green more\n      const avgColor =\n        0.2126 * data[startIndex] +\n        0.7152 * data[startIndex + 1] +\n        0.0722 * data[startIndex + 2];\n      newImgData[startIndex] = avgColor;\n      newImgData[startIndex + 1] = avgColor;\n      newImgData[startIndex + 2] = avgColor;\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 黑白化ImageData\nexport const toBlackAndWhite = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      const avgColor =\n        (data[startIndex] + data[startIndex + 1] + data[startIndex + 2]) / 3;\n      const newColor = avgColor > 127 ? 255 : 0;\n      newImgData[startIndex] = newColor;\n      newImgData[startIndex + 1] = newColor;\n      newImgData[startIndex + 2] = newColor;\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 反相色滤镜ImageData\nexport const toOpposite = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      newImgData[startIndex] = 255 - data[startIndex];\n      newImgData[startIndex + 1] = 255 - data[startIndex + 1];\n      newImgData[startIndex + 2] = 255 - data[startIndex + 2];\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 红色滤镜ImageData\nexport const toRed = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      newImgData[startIndex] = data[startIndex];\n      newImgData[startIndex + 1] = 0;\n      newImgData[startIndex + 2] = 0;\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 绿色滤镜ImageData\nexport const toGreen = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      newImgData[startIndex] = 0;\n      newImgData[startIndex + 1] = data[startIndex + 1];\n      newImgData[startIndex + 2] = 0;\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 蓝色滤镜ImageData\nexport const toBlue = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      newImgData[startIndex] = 0;\n      newImgData[startIndex + 1] = 0;\n      newImgData[startIndex + 2] = data[startIndex + 2];\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 红绿色滤镜ImageData\nexport const toRedAndGreen = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      newImgData[startIndex] = data[startIndex];\n      newImgData[startIndex + 1] = data[startIndex + 1];\n      newImgData[startIndex + 2] = 0;\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 红蓝色滤镜ImageData\nexport const toRedAndBlue = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      newImgData[startIndex] = data[startIndex];\n      newImgData[startIndex + 1] = 0;\n      newImgData[startIndex + 2] = data[startIndex + 1];\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 蓝绿色滤镜ImageData\nexport const toBlueAndGreen = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      newImgData[startIndex] = 0;\n      newImgData[startIndex + 1] = data[startIndex + 1];\n      newImgData[startIndex + 2] = data[startIndex + 1];\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 红灰色滤镜ImageData\nexport const toRedAndGrey = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      const greyColor = (data[startIndex + 1] + data[startIndex + 2]) / 2;\n      newImgData[startIndex] = data[startIndex];\n      newImgData[startIndex + 1] = greyColor;\n      newImgData[startIndex + 2] = greyColor;\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 绿灰色滤镜ImageData\nexport const toGreenAndGrey = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      const greyColor = (data[startIndex] + data[startIndex + 2]) / 2;\n      newImgData[startIndex] = greyColor;\n      newImgData[startIndex + 1] = data[startIndex + 1];\n      newImgData[startIndex + 2] = greyColor;\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 蓝灰色滤镜ImageData\nexport const toBlueAndGrey = (imageData: ImageData) => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      const greyColor = (data[startIndex] + data[startIndex + 1]) / 2;\n      newImgData[startIndex] = greyColor;\n      newImgData[startIndex + 1] = greyColor;\n      newImgData[startIndex + 2] = data[startIndex + 2];\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// 锐化ImageData\nexport const sharpen = (imageData: ImageData) => {\n  const kernel = [-1, -1, -1, -1, 9, -1, -1, -1, -1]; // 锐化卷积核\n  const newImageData = convolutionMatrix(imageData, kernel);\n  return newImageData;\n};\n\n/// 边缘锐化ImageData\nexport const marginSharpen = (imageData: ImageData) => {\n  const kernel = [-1, -1, -1, -1, 8, -1, -1, -1, -1]; // 边缘化卷积核\n  const newImageData = convolutionMatrix(imageData, kernel);\n  return newImageData;\n};\n\n/// JPG转PNG\nexport const jpgToPng = (imageData: ImageData): ImageData => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      newImgData[startIndex] = data[startIndex];\n      newImgData[startIndex + 1] = data[startIndex + 1];\n      newImgData[startIndex + 2] = data[startIndex + 2];\n      newImgData[startIndex + 3] = 255;\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/// PNG转JPG\nexport const pngToJpg = (imageData: ImageData): ImageData => {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      if (data[startIndex + 3] === 0) {\n        newImgData[startIndex] = 255;\n        newImgData[startIndex + 1] = 255;\n        newImgData[startIndex + 2] = 255;\n        newImgData[startIndex + 3] = 255;\n      } else {\n        const newColor = colorStacks(\n          [\n            data[startIndex],\n            data[startIndex + 1],\n            data[startIndex + 2],\n            data[startIndex + 3]\n          ],\n          [255, 255, 255, 255]\n        );\n        newImgData[startIndex] = newColor[0];\n        newImgData[startIndex + 1] = newColor[1];\n        newImgData[startIndex + 2] = newColor[2];\n        newImgData[startIndex + 3] = newColor[3];\n      }\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n};\n\n/**\n * 矩形裁剪\n * @param imageData ImageData源数据\n * @param newWidth 新图的宽度（retainOriginalSize为true时，宽度为imageData.width）\n * @param newHeight 新图的高度（retainOriginalSize为true时，高度为imageData.height）\n * @param top 新图相对于原图顶部的起始位置\n * @param left 新图相对于原图左侧的起始位置\n * @param retainOriginalSize 是否保留为原图的宽高 (宽高继承原图，多余部分用白色或透明色填充)\n * @param imageType 图片类型 (retainOriginalSize为true时必须传该值)\n * @returns ImageData\n */\nexport function rectClip(\n  imageData: ImageData,\n  newWidth: number,\n  newHeight: number,\n  top: number,\n  left: number,\n  retainOriginalSize = false,\n  imageType?: string\n): ImageData {\n  const { data, width, height } = imageData;\n  let finalLeft = left;\n  let finalTop = top;\n  let finalWidth = newWidth;\n  let finalHeight = newHeight;\n  if (finalLeft < 0) {\n    finalLeft = 0;\n  } else if (finalLeft > width) {\n    finalLeft = width;\n  }\n  if (finalTop < 0) {\n    finalTop = 0;\n  } else if (finalTop > height) {\n    finalTop = height;\n  }\n  if (finalWidth < 1) {\n    finalWidth = 1;\n  } else if (finalWidth > width) {\n    finalWidth = width;\n  }\n  if (finalHeight < 1) {\n    finalHeight = 1;\n  } else if (finalHeight > height) {\n    finalHeight = height;\n  }\n  if (finalLeft + finalWidth > width) {\n    finalWidth = width - finalLeft;\n  }\n  if (finalTop + finalHeight > height) {\n    finalHeight = height - finalTop;\n  }\n  // 保留原尺寸\n  if (retainOriginalSize) {\n    const newImgData = new Uint8ClampedArray(data.length);\n    for (let y = 0; y < height; y++) {\n      for (let x = 0; x < width; x++) {\n        const startIndex = (y * width + x) * 4;\n        if (\n          x >= finalLeft &&\n          x <= finalLeft + finalWidth &&\n          y >= finalTop &&\n          y <= finalTop + finalHeight\n        ) {\n          newImgData[startIndex] = data[startIndex];\n          newImgData[startIndex + 1] = data[startIndex + 1];\n          newImgData[startIndex + 2] = data[startIndex + 2];\n          newImgData[startIndex + 3] = data[startIndex + 3];\n        } else {\n          newImgData[startIndex] = 255;\n          newImgData[startIndex + 1] = 255;\n          newImgData[startIndex + 2] = 255;\n          newImgData[startIndex + 3] =\n            imageType && [\"JPG\", \"JPEG\"].includes(imageType.toUpperCase())\n              ? 255\n              : 0;\n        }\n      }\n    }\n    const newImageData = new ImageData(newImgData, width, height);\n    return newImageData;\n  } else {\n    const newImgData = new Uint8ClampedArray(finalWidth * finalHeight * 4);\n    for (let y = finalTop; y <= finalTop + finalHeight; y++) {\n      for (let x = finalLeft; x <= finalLeft + finalWidth; x++) {\n        const startIndex = ((y - finalTop) * finalWidth + x - finalLeft) * 4;\n        const startIndex2 = (y * width + x) * 4;\n        newImgData[startIndex] = data[startIndex2];\n        newImgData[startIndex + 1] = data[startIndex2 + 1];\n        newImgData[startIndex + 2] = data[startIndex2 + 2];\n        newImgData[startIndex + 3] = data[startIndex2 + 3];\n      }\n    }\n    const newImageData = new ImageData(newImgData, finalWidth, finalHeight);\n    return newImageData;\n  }\n}\n\n/**\n * 圆角裁剪\n * @param imageData ImageData源数据\n * @param borderRadius 圆角半径\n * @param imageType 图片类型\n * @param jpgToPNG 是否为JPG转成PNG\n * @returns ImageData\n */\nexport function radiusClip(\n  imageData: ImageData,\n  borderRadius: number,\n  imageType: string,\n  jpgToPNG?: boolean\n): ImageData {\n  const { data, width, height } = imageData;\n  let finalRadius = borderRadius;\n  if (finalRadius > Math.floor(width / 2)) {\n    finalRadius = Math.floor(width / 2);\n  }\n  if (finalRadius > Math.floor(height / 2)) {\n    finalRadius = Math.floor(height / 2);\n  }\n  if (finalRadius < 0) {\n    finalRadius = 0;\n  }\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      let l = -1;\n      if (x < finalRadius) {\n        if (y < finalRadius) {\n          l = Math.sqrt(\n            Math.pow(finalRadius - x - 1, 2) + Math.pow(finalRadius - y - 1, 2)\n          );\n        } else if (y > height - finalRadius - 1) {\n          l = Math.sqrt(\n            Math.pow(finalRadius - x - 1, 2) +\n              Math.pow(y - (height - finalRadius), 2)\n          );\n        }\n      } else if (x > width - finalRadius - 1) {\n        if (y < finalRadius) {\n          l = Math.sqrt(\n            Math.pow(x - (width - finalRadius), 2) +\n              Math.pow(finalRadius - y - 1, 2)\n          );\n        } else if (y > height - finalRadius - 1) {\n          l = Math.sqrt(\n            Math.pow(x - (width - finalRadius), 2) +\n              Math.pow(y - (height - finalRadius), 2)\n          );\n        }\n      }\n      if (Math.round(l) > finalRadius) {\n        newImgData[startIndex] = 255;\n        newImgData[startIndex + 1] = 255;\n        newImgData[startIndex + 2] = 255;\n        newImgData[startIndex + 3] =\n          jpgToPNG || imageType.toUpperCase() === \"PNG\" ? 0 : 255;\n      } else {\n        newImgData[startIndex] = data[startIndex];\n        newImgData[startIndex + 1] = data[startIndex + 1];\n        newImgData[startIndex + 2] = data[startIndex + 2];\n        newImgData[startIndex + 3] =\n          jpgToPNG || imageType.toUpperCase() === \"PNG\"\n            ? data[startIndex + 3]\n            : 255;\n      }\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n}\n\n/**\n * 图片缩放，修改尺寸\n * @param imgUrl - 图片地址\n * @param width - sourceWidth\n * @param height - sourceHeight\n * @param newWidth - targetWidth\n * @param newHeight - targetHeight\n * @param maxWidthHeight - 最大长度\n * @returns\n */\nexport function changeSize(\n  imgUrl: string,\n  width: number,\n  height: number,\n  newWidth: number,\n  newHeight: number,\n  maxWidthHeight = 10000\n): ImageData {\n  const img = new Image();\n  img.src = imgUrl;\n  const canvas = document.createElement(\"canvas\") as HTMLCanvasElement;\n  const ctx = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n  canvas.width = maxWidthHeight;\n  canvas.height = maxWidthHeight;\n  ctx.drawImage(img, 0, 0, width, height, 0, 0, newWidth, newHeight);\n  const newImageData = ctx.getImageData(0, 0, newWidth, newHeight) as ImageData;\n  return newImageData;\n}\n\n/// 修改亮度\nexport function changeBrightness(\n  imageData: ImageData,\n  changeNum: number\n): ImageData {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      newImgData[startIndex] = Math.max(\n        Math.min(data[startIndex] + changeNum, 255),\n        0\n      );\n      newImgData[startIndex + 1] = Math.max(\n        Math.min(data[startIndex + 1] + changeNum, 255),\n        0\n      );\n      newImgData[startIndex + 2] = Math.max(\n        Math.min(data[startIndex + 2] + changeNum, 255),\n        0\n      );\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n}\n\n/// 修改透明度\nexport function changeDiaphaneity(\n  imageData: ImageData,\n  value: number,\n  fixedDiaphaneity = false\n): ImageData {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      if (data[startIndex + 3] === 0) {\n        newImgData[startIndex] = 255;\n        newImgData[startIndex + 1] = 255;\n        newImgData[startIndex + 2] = 255;\n      } else {\n        newImgData[startIndex] = data[startIndex];\n        newImgData[startIndex + 1] = data[startIndex + 1];\n        newImgData[startIndex + 2] = data[startIndex + 2];\n      }\n      let a = data[startIndex + 3];\n      if (fixedDiaphaneity) {\n        a = Math.max(Math.min(Math.floor(255 * value), 255), 0);\n      } else {\n        a = Math.max(Math.min(Math.floor(a + 255 * value), 255), 0);\n      }\n      newImgData[startIndex + 3] = a;\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n}\n\n/// 添加水印\nexport function addWatermark(\n  imageData: ImageData,\n  watermarkImageData: ImageData,\n  top: number,\n  left: number\n): ImageData {\n  const { data, width, height } = imageData;\n  const {\n    data: watermarkData,\n    width: watermarkWidth,\n    height: watermarkHeight\n  } = watermarkImageData;\n  let finalTop = top;\n  let finalLeft = left;\n  if (top + watermarkHeight > height) {\n    finalTop = height - watermarkHeight;\n  }\n  if (left + watermarkWidth > width) {\n    finalLeft = width - watermarkWidth;\n  }\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      if (\n        x < finalLeft ||\n        x > finalLeft + watermarkWidth ||\n        y <= finalTop ||\n        y >= finalTop + watermarkHeight\n      ) {\n        newImgData[startIndex] = data[startIndex];\n        newImgData[startIndex + 1] = data[startIndex + 1];\n        newImgData[startIndex + 2] = data[startIndex + 2];\n        newImgData[startIndex + 3] = data[startIndex + 3];\n      } else {\n        const watermarkStartIndex =\n          (y * width +\n            x -\n            ((finalTop + 1) * width +\n              (y - (finalTop + 1)) * (width - watermarkWidth)) +\n            watermarkWidth -\n            finalLeft -\n            1) *\n          4;\n        const aboveColor: [number, number, number, number] = [\n          watermarkData[watermarkStartIndex],\n          watermarkData[watermarkStartIndex + 1],\n          watermarkData[watermarkStartIndex + 2],\n          watermarkData[watermarkStartIndex + 3]\n        ];\n        const belowColor: [number, number, number, number] = [\n          data[startIndex],\n          data[startIndex + 1],\n          data[startIndex + 2],\n          data[startIndex + 3]\n        ];\n        const finalColor = colorStacks(aboveColor, belowColor);\n        newImgData[startIndex] = finalColor[0];\n        newImgData[startIndex + 1] = finalColor[1];\n        newImgData[startIndex + 2] = finalColor[2];\n        newImgData[startIndex + 3] = finalColor[3];\n      }\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n}\n\n/**\n * 打马赛克\n * @param imageData ImageData源数据\n * @param width 马赛克区域的宽度\n * @param height 马赛克区域的高度\n * @param top 马赛克相对于顶部的起始位置\n * @param left 马塞克相对于左侧的起始位置\n * @param mosaicSize 马塞克颗粒的大小\n * @returns ImageData\n */\nexport function mosaic(\n  imageData: ImageData,\n  mosaicWidth: number,\n  mosaicHeight: number,\n  top: number,\n  left: number,\n  mosaicSize = 10\n): ImageData {\n  const { data, width, height } = imageData;\n  let finalLeft = left;\n  let finalTop = top;\n  let finalWidth = mosaicWidth;\n  let finalHeight = mosaicHeight;\n  if (finalLeft < 0) {\n    finalLeft = 0;\n  } else if (finalLeft > width) {\n    finalLeft = width;\n  }\n  if (finalTop < 0) {\n    finalTop = 0;\n  } else if (finalTop > height) {\n    finalTop = height;\n  }\n  if (finalWidth < 1) {\n    finalWidth = 1;\n  } else if (finalWidth > width) {\n    finalWidth = width;\n  }\n  if (finalHeight < 1) {\n    finalHeight = 1;\n  } else if (finalHeight > height) {\n    finalHeight = height;\n  }\n  if (finalLeft + finalWidth > width) {\n    finalWidth = width - finalLeft;\n  }\n  if (finalTop + finalHeight > height) {\n    finalHeight = height - finalTop;\n  }\n\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      if (\n        x >= finalLeft &&\n        x <= finalLeft + finalWidth &&\n        y >= finalTop &&\n        y <= finalTop + finalHeight\n      ) {\n        const boxXIndex = Math.floor((x - finalLeft) / mosaicSize);\n        const boxYIndex = Math.floor((y - finalTop) / mosaicSize);\n        let mosaicBoxColorX = Math.floor(\n          mosaicSize * (boxXIndex + 1) - mosaicSize / 2 + finalLeft\n        );\n        let mosaicBoxColorY = Math.floor(\n          mosaicSize * (boxYIndex + 1) - mosaicSize / 2 + finalTop\n        );\n        if (mosaicBoxColorX > width - 1) {\n          mosaicBoxColorX = width - 1;\n        }\n        if (mosaicBoxColorY > height - 1) {\n          mosaicBoxColorY = height - 1;\n        }\n        const mosaicBoxColorIndex =\n          (mosaicBoxColorY * width + mosaicBoxColorX) * 4;\n        newImgData[startIndex] = data[mosaicBoxColorIndex];\n        newImgData[startIndex + 1] = data[mosaicBoxColorIndex + 1];\n        newImgData[startIndex + 2] = data[mosaicBoxColorIndex + 2];\n        newImgData[startIndex + 3] = data[mosaicBoxColorIndex + 3];\n      } else {\n        newImgData[startIndex] = data[startIndex];\n        newImgData[startIndex + 1] = data[startIndex + 1];\n        newImgData[startIndex + 2] = data[startIndex + 2];\n        newImgData[startIndex + 3] = data[startIndex + 3];\n      }\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n}\n\n/// 图片压缩\n// export const compression = async (\n//   imageUrl: string | ImageData,\n//   width: number,\n//   height: number,\n//   imageType: string,\n//   compressionDegree: number,\n//   cb: (blob: Blob | null) => void\n// ) => {\n//   const degree = compressionDegree / 100;\n//   if ([\"JPG\", \"JPEG\"].includes(imageType.toUpperCase())) {\n//     const img = new Image();\n//     img.src = imageUrl as string;\n//     const canvas = document.createElement(\"canvas\") as HTMLCanvasElement;\n//     const ctx = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n//     canvas.width = width;\n//     canvas.height = height;\n//     ctx.drawImage(img, 0, 0, width, height);\n//     canvas.toBlob(\n//       (blob: Blob | null) => {\n//         cb(blob);\n//       },\n//       `image/${imageType.toLowerCase()}`,\n//       degree\n//     );\n//   } else {\n//     const bit = Math.floor(degree * 256);\n//     const png = UPNG.encode(\n//       [(imageUrl as ImageData).data.buffer],\n//       width,\n//       height,\n//       bit\n//     );\n//     const blob = new Blob([png]);\n//     cb && cb(blob);\n//   }\n// };\n\n/// 根据AI识别的人像数据算出界面中需要显示的最终数据\nexport function getImageDataByAIData(\n  originalImageData: ImageData,\n  AIImageData: ImageData,\n  options: {\n    backgroundColor: { r: number; g: number; b: number; a: number };\n    changeIntoColor: { r: number; g: number; b: number; a: number };\n  } = {\n    backgroundColor: { r: 0, g: 0, b: 0, a: 255 },\n    changeIntoColor: { r: 0, g: 0, b: 0, a: 0 }\n  }\n): ImageData {\n  if (AIImageData && options) {\n    const { data, width, height } = originalImageData;\n    const { data: AIData } = AIImageData;\n    const newImgData = new Uint8ClampedArray(data.length);\n    const { backgroundColor, changeIntoColor } = options;\n    for (let y = 0; y < height; y++) {\n      for (let x = 0; x < width; x++) {\n        const startIndex = (y * width + x) * 4;\n        const r = AIData[startIndex];\n        const g = AIData[startIndex + 1];\n        const b = AIData[startIndex + 2];\n        const a = AIData[startIndex + 3];\n        if (\n          r === backgroundColor.r &&\n          g === backgroundColor.g &&\n          b === backgroundColor.b &&\n          a === backgroundColor.a &&\n          changeIntoColor.a !== 0\n        ) {\n          newImgData[startIndex] = changeIntoColor.r;\n          newImgData[startIndex + 1] = changeIntoColor.g;\n          newImgData[startIndex + 2] = changeIntoColor.b;\n          newImgData[startIndex + 3] = changeIntoColor.a;\n        } else {\n          newImgData[startIndex] = data[startIndex];\n          newImgData[startIndex + 1] = data[startIndex + 1];\n          newImgData[startIndex + 2] = data[startIndex + 2];\n          newImgData[startIndex + 3] = data[startIndex + 3];\n        }\n      }\n    }\n    const newImageData = new ImageData(newImgData, width, height);\n    return newImageData;\n  }\n  return originalImageData;\n}\n\n/// 卷积算法\nfunction convolutionMatrix(imageData: ImageData, kernel: number[]): ImageData {\n  const { data, width, height } = imageData;\n  const newImgData = new Uint8ClampedArray(data.length);\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const startIndex = (y * width + x) * 4;\n      for (let i = 0; i < 3; i++) {\n        const index = startIndex + i;\n        if (x === 0 || x === width - 1 || y === 0 || y === height - 1) {\n          newImgData[index] = data[index];\n        } else {\n          newImgData[index] =\n            kernel[0] * data[index - width * 4 - 4] +\n            kernel[1] * data[index - width * 4] +\n            kernel[2] * data[index - width * 4 + 4] +\n            kernel[3] * data[index - 4] +\n            kernel[4] * data[index] +\n            kernel[5] * data[index + 4] +\n            kernel[6] * data[index + width * 4 - 4] +\n            kernel[7] * data[index + width * 4] +\n            kernel[8] * data[index + width * 4 + 4];\n        }\n      }\n      newImgData[startIndex + 3] = data[startIndex + 3];\n    }\n  }\n  const newImageData = new ImageData(newImgData, width, height);\n  return newImageData;\n}\n\n/// 颜色叠加算法\nfunction colorStacks(\n  aboveColor: [number, number, number, number],\n  belowColor: [number, number, number, number]\n) {\n  if (\n    aboveColor &&\n    aboveColor.length === 4 &&\n    belowColor &&\n    belowColor.length === 4\n  ) {\n    const aboveA = aboveColor[3];\n    const belowA = belowColor[3];\n    if (aboveA === 255 || belowA === 0) {\n      return aboveColor;\n    } else if (aboveA === 0) {\n      return belowColor;\n    } else {\n      const aboveDiaphaneity = aboveA / 255;\n      const belowDiaphaneity = belowA / 255;\n      const newColorR = Math.max(\n        Math.min(\n          Math.floor(\n            aboveColor[0] * aboveDiaphaneity +\n              belowColor[0] * belowDiaphaneity * (1 - aboveDiaphaneity)\n          ),\n          255\n        ),\n        0\n      );\n      const newColorG = Math.max(\n        Math.min(\n          Math.floor(\n            aboveColor[1] * aboveDiaphaneity +\n              belowColor[1] * belowDiaphaneity * (1 - aboveDiaphaneity)\n          ),\n          255\n        ),\n        0\n      );\n      const newColorB = Math.max(\n        Math.min(\n          Math.floor(\n            aboveColor[2] * aboveDiaphaneity +\n              belowColor[2] * belowDiaphaneity * (1 - aboveDiaphaneity)\n          ),\n          255\n        ),\n        0\n      );\n      const newColorA = Math.max(\n        Math.min(\n          Math.floor(\n            (aboveDiaphaneity + belowDiaphaneity * (1 - aboveDiaphaneity)) * 255\n          ),\n          255\n        ),\n        0\n      );\n      return [newColorR, newColorG, newColorB, newColorA];\n    }\n  }\n  return [255, 255, 255, 255];\n}\n","import { radixStringToNumber } from \"@zyzgroup/core-common\";\n\nexport interface ByteArrayOutputStream {\n  writeByte(b: number): void;\n  writeShort(i: number): void;\n  writeBytes(ab: number[], off: number, len: number): void;\n  writeString(s: string): void;\n  toByteArray(): number[];\n  toString(): string;\n}\n\nexport interface Base64EncodeOutputStream {\n  writeByte(b: number): void;\n  flush(): void;\n  toString(): string;\n}\n\nexport const byteArrayOutputStream = function () {\n  const _bytes: number[] = [];\n\n  return {\n    writeByte(b) {\n      _bytes.push(b & 0xff);\n    },\n    writeShort(i) {\n      this.writeByte(i);\n      this.writeByte(i >>> 8);\n    },\n    writeBytes(ab, off = 0, len = ab.length) {\n      for (let i = 0; i < len; i++) {\n        this.writeByte(ab[i + off]);\n      }\n    },\n    writeString(s) {\n      for (let i = 0, len = s.length; i < len; i++) {\n        this.writeByte(s.charCodeAt(i));\n      }\n    },\n    toByteArray() {\n      return _bytes;\n    },\n    toString() {\n      let s = \"[\";\n      for (let i = 0, len = _bytes.length; i < len; i++) {\n        if (i > 0) {\n          s += \",\";\n        }\n        s += _bytes[i];\n      }\n      s += \"]\";\n      return s;\n    }\n  } as ByteArrayOutputStream;\n};\n\nexport const base64EncodeOutputStream = function () {\n  let _buffer = 0;\n  let _buflen = 0;\n  let _length = 0;\n  let _base64 = \"\";\n\n  const encode = function (n: number) {\n    if (n < 0) {\n      // error\n    } else if (n < 26) {\n      return 0x41 + n;\n    } else if (n < 52) {\n      return 0x61 + (n - 26);\n    } else if (n < 62) {\n      return 0x30 + (n - 52);\n    } else if (n == 62) {\n      return 0x2b;\n    } else if (n == 63) {\n      return 0x2f;\n    }\n    throw new Error(\"n:\" + n);\n  };\n\n  const writeEncoded = function (b: number) {\n    _base64 += String.fromCharCode(encode(b & 0x3f));\n  };\n\n  return {\n    writeByte(n) {\n      _buffer = (_buffer << 8) | (n & 0xff);\n      _buflen += 8;\n      _length += 1;\n      while (_buflen >= 6) {\n        writeEncoded(_buffer >>> (_buflen - 6));\n        _buflen -= 6;\n      }\n    },\n    flush() {\n      if (_buflen > 0) {\n        writeEncoded(_buffer << (6 - _buflen));\n        _buffer = 0;\n        _buflen = 0;\n      }\n      if (_length % 3 != 0) {\n        // padding\n        const padlen = 3 - (_length % 3);\n        for (let i = 0; i < padlen; i++) {\n          _base64 += \"=\";\n        }\n      }\n    },\n    toString() {\n      return _base64;\n    }\n  } as Base64EncodeOutputStream;\n};\n\nexport const gifImage = function (\n  size: number,\n  foreground: string,\n  background: string\n) {\n  const _data = new Array(size * size);\n\n  const bitOutputStream = function (out: ByteArrayOutputStream) {\n    const _out = out;\n    let _bitLength = 0;\n    let _bitBuffer = 0;\n\n    return {\n      write(data: number, length: number) {\n        if (data >>> length != 0) {\n          throw new Error(\"length over\");\n        }\n\n        while (_bitLength + length >= 8) {\n          _out.writeByte(0xff & ((data << _bitLength) | _bitBuffer));\n          length -= 8 - _bitLength;\n          data >>>= 8 - _bitLength;\n          _bitBuffer = 0;\n          _bitLength = 0;\n        }\n\n        _bitBuffer = (data << _bitLength) | _bitBuffer;\n        _bitLength = _bitLength + length;\n      },\n\n      flush() {\n        if (_bitLength > 0) {\n          _out.writeByte(_bitBuffer);\n        }\n      }\n    };\n  };\n\n  const getLZWRaster = function (lzwMinCodeSize: number) {\n    const clearCode = 1 << lzwMinCodeSize;\n    const endCode = (1 << lzwMinCodeSize) + 1;\n    let bitLength = lzwMinCodeSize + 1;\n\n    // Setup LZWTable\n    const table = lzwTable();\n\n    for (let i = 0; i < clearCode; i++) {\n      table.add(String.fromCharCode(i));\n    }\n    table.add(String.fromCharCode(clearCode));\n    table.add(String.fromCharCode(endCode));\n\n    const byteOut = byteArrayOutputStream();\n    const bitOut = bitOutputStream(byteOut);\n\n    // clear code\n    bitOut.write(clearCode, bitLength);\n\n    let dataIndex = 0;\n\n    let s = String.fromCharCode(_data[dataIndex]);\n    dataIndex += 1;\n\n    while (dataIndex < _data.length) {\n      const c = String.fromCharCode(_data[dataIndex]);\n      dataIndex += 1;\n\n      if (table.contains(s + c)) {\n        s = s + c;\n      } else {\n        bitOut.write(table.indexOf(s), bitLength);\n\n        if (table.size() < 0xfff) {\n          if (table.size() == 1 << bitLength) {\n            bitLength += 1;\n          }\n\n          table.add(s + c);\n        }\n\n        s = c;\n      }\n    }\n\n    bitOut.write(table.indexOf(s), bitLength);\n\n    // end code\n    bitOut.write(endCode, bitLength);\n\n    bitOut.flush();\n\n    return byteOut.toByteArray();\n  };\n\n  const lzwTable = function () {\n    const _map: Record<string, number> = {};\n    let _size = 0;\n\n    return {\n      add(key: string) {\n        if (this.contains(key)) {\n          throw new Error(\"dup key:\" + key);\n        }\n        _map[key] = _size;\n        _size += 1;\n      },\n\n      size() {\n        return _size;\n      },\n\n      indexOf(key: string) {\n        return _map[key];\n      },\n\n      contains(key: string) {\n        return typeof _map[key] != \"undefined\";\n      }\n    };\n  };\n\n  return {\n    setPixel(x: number, y: number, pixel: number) {\n      _data[y * size + x] = pixel;\n    },\n    write(out: ByteArrayOutputStream) {\n      // GIF Signature\n      out.writeString(\"GIF87a\");\n\n      // Screen Descriptor\n      out.writeShort(size);\n      out.writeShort(size);\n\n      out.writeByte(0x80); // 2bit\n      out.writeByte(0);\n      out.writeByte(0);\n\n      // Global Color Map\n\n      // black\n      out.writeByte(radixStringToNumber(\"0x\" + foreground[1] + foreground[2]));\n      out.writeByte(radixStringToNumber(\"0x\" + foreground[3] + foreground[4]));\n      out.writeByte(radixStringToNumber(\"0x\" + foreground[5] + foreground[6]));\n\n      // white\n      out.writeByte(radixStringToNumber(\"0x\" + background[1] + background[2]));\n      out.writeByte(radixStringToNumber(\"0x\" + background[3] + background[4]));\n      out.writeByte(radixStringToNumber(\"0x\" + background[5] + background[6]));\n\n      // Image Descriptor\n      out.writeString(\",\");\n      out.writeShort(0);\n      out.writeShort(0);\n      out.writeShort(size);\n      out.writeShort(size);\n      out.writeByte(0);\n\n      // Local Color Map\n\n      // Raster Data\n      const lzwMinCodeSize = 2;\n      const raster = getLZWRaster(lzwMinCodeSize);\n\n      out.writeByte(lzwMinCodeSize);\n\n      let offset = 0;\n\n      while (raster.length - offset > 255) {\n        out.writeByte(255);\n        out.writeBytes(raster, offset, 255);\n        offset += 255;\n      }\n\n      out.writeByte(raster.length - offset);\n      out.writeBytes(raster, offset, raster.length - offset);\n      out.writeByte(0x00);\n\n      // GIF Terminator\n      out.writeString(\";\");\n    }\n  };\n};\n\nexport const outputGifBase64 = function (\n  size: number,\n  foreground: string,\n  background: string,\n  getPixel: (x: number, y: number) => number\n) {\n  const gif = gifImage(size, foreground, background);\n\n  for (let y = 0; y < size; y++) {\n    for (let x = 0; x < size; x++) {\n      gif.setPixel(x, y, getPixel(x, y));\n    }\n  }\n\n  const b = byteArrayOutputStream();\n  gif.write(b);\n\n  const base64 = base64EncodeOutputStream();\n  const bytes = b.toByteArray();\n  for (let i = 0, len = bytes.length; i < len; i++) {\n    base64.writeByte(bytes[i]);\n  }\n  base64.flush();\n\n  let img = \"\";\n  img += \"data:image/gif;base64,\";\n  img += base64;\n\n  return img;\n};\n","import { utf16to8 } from \"@zyzgroup/core-common\";\nimport { outputGifBase64 } from \"./image-gif\";\n\nconst QRMode = {\n  MODE_NUMBER: 1 << 0,\n  MODE_ALPHA_NUM: 1 << 1,\n  MODE_8BIT_BYTE: 1 << 2,\n  MODE_KANJI: 1 << 3\n};\n\nconst QRErrorCorrectLevel = {\n  M: 0,\n  L: 1,\n  H: 2,\n  Q: 3\n};\n\nconst QRMaskPattern = {\n  PATTERN000: 0,\n  PATTERN001: 1,\n  PATTERN010: 2,\n  PATTERN011: 3,\n  PATTERN100: 4,\n  PATTERN101: 5,\n  PATTERN110: 6,\n  PATTERN111: 7\n};\n\nconst QRMath = {\n  glog: function (n: number) {\n    if (n < 1) {\n      throw new Error(\"glog(\" + n + \")\");\n    }\n    return QRMath.LOG_TABLE[n];\n  },\n  gexp: function (n: number) {\n    while (n < 0) {\n      n += 255;\n    }\n    while (n >= 256) {\n      n -= 255;\n    }\n    return QRMath.EXP_TABLE[n];\n  },\n  EXP_TABLE: new Array(256),\n  LOG_TABLE: new Array(256)\n};\n\nfor (let i = 0; i < 8; i++) {\n  QRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (let i = 8; i < 256; i++) {\n  QRMath.EXP_TABLE[i] =\n    QRMath.EXP_TABLE[i - 4] ^\n    QRMath.EXP_TABLE[i - 5] ^\n    QRMath.EXP_TABLE[i - 6] ^\n    QRMath.EXP_TABLE[i - 8];\n}\nfor (let i = 0; i < 255; i++) {\n  QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;\n}\n\nconst QRUtil = {\n  PATTERN_POSITION_TABLE: [\n    [],\n    [6, 18],\n    [6, 22],\n    [6, 26],\n    [6, 30],\n    [6, 34],\n    [6, 22, 38],\n    [6, 24, 42],\n    [6, 26, 46],\n    [6, 28, 50],\n    [6, 30, 54],\n    [6, 32, 58],\n    [6, 34, 62],\n    [6, 26, 46, 66],\n    [6, 26, 48, 70],\n    [6, 26, 50, 74],\n    [6, 30, 54, 78],\n    [6, 30, 56, 82],\n    [6, 30, 58, 86],\n    [6, 34, 62, 90],\n    [6, 28, 50, 72, 94],\n    [6, 26, 50, 74, 98],\n    [6, 30, 54, 78, 102],\n    [6, 28, 54, 80, 106],\n    [6, 32, 58, 84, 110],\n    [6, 30, 58, 86, 114],\n    [6, 34, 62, 90, 118],\n    [6, 26, 50, 74, 98, 122],\n    [6, 30, 54, 78, 102, 126],\n    [6, 26, 52, 78, 104, 130],\n    [6, 30, 56, 82, 108, 134],\n    [6, 34, 60, 86, 112, 138],\n    [6, 30, 58, 86, 114, 142],\n    [6, 34, 62, 90, 118, 146],\n    [6, 30, 54, 78, 102, 126, 150],\n    [6, 24, 50, 76, 102, 128, 154],\n    [6, 28, 54, 80, 106, 132, 158],\n    [6, 32, 58, 84, 110, 136, 162],\n    [6, 26, 54, 82, 110, 138, 166],\n    [6, 30, 58, 86, 114, 142, 170]\n  ],\n\n  G15:\n    (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n  G18:\n    (1 << 12) |\n    (1 << 11) |\n    (1 << 10) |\n    (1 << 9) |\n    (1 << 8) |\n    (1 << 5) |\n    (1 << 2) |\n    (1 << 0),\n  G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),\n\n  getBCHTypeInfo: function (data: number) {\n    let d = data << 10;\n    while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n      d ^=\n        QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15));\n    }\n    return ((data << 10) | d) ^ QRUtil.G15_MASK;\n  },\n\n  getBCHTypeNumber: function (data: number) {\n    let d = data << 12;\n    while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n      d ^=\n        QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18));\n    }\n    return (data << 12) | d;\n  },\n\n  getBCHDigit: function (data: number) {\n    let digit = 0;\n\n    while (data != 0) {\n      digit++;\n      data >>>= 1;\n    }\n\n    return digit;\n  },\n\n  getPatternPosition: function (typeNumber: number) {\n    return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n  },\n\n  getMask: function (maskPattern: number, i: number, j: number) {\n    switch (maskPattern) {\n      case QRMaskPattern.PATTERN000:\n        return (i + j) % 2 == 0;\n      case QRMaskPattern.PATTERN001:\n        return i % 2 == 0;\n      case QRMaskPattern.PATTERN010:\n        return j % 3 == 0;\n      case QRMaskPattern.PATTERN011:\n        return (i + j) % 3 == 0;\n      case QRMaskPattern.PATTERN100:\n        return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;\n      case QRMaskPattern.PATTERN101:\n        return ((i * j) % 2) + ((i * j) % 3) == 0;\n      case QRMaskPattern.PATTERN110:\n        return (((i * j) % 2) + ((i * j) % 3)) % 2 == 0;\n      case QRMaskPattern.PATTERN111:\n        return (((i * j) % 3) + ((i + j) % 2)) % 2 == 0;\n\n      default:\n        throw new Error(\"bad maskPattern:\" + maskPattern);\n    }\n  },\n\n  getErrorCorrectPolynomial: function (errorCorrectLength: number) {\n    let a = new QRPolynomial([1], 0);\n\n    for (let i = 0; i < errorCorrectLength; i++) {\n      a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0));\n    }\n\n    return a;\n  },\n\n  getLengthInBits: function (mode: number, type: number) {\n    if (1 <= type && type < 10) {\n      // 1 - 9\n\n      switch (mode) {\n        case QRMode.MODE_NUMBER:\n          return 10;\n        case QRMode.MODE_ALPHA_NUM:\n          return 9;\n        case QRMode.MODE_8BIT_BYTE:\n          return 8;\n        case QRMode.MODE_KANJI:\n          return 8;\n        default:\n          throw new Error(\"mode:\" + mode);\n      }\n    } else if (type < 27) {\n      // 10 - 26\n\n      switch (mode) {\n        case QRMode.MODE_NUMBER:\n          return 12;\n        case QRMode.MODE_ALPHA_NUM:\n          return 11;\n        case QRMode.MODE_8BIT_BYTE:\n          return 16;\n        case QRMode.MODE_KANJI:\n          return 10;\n        default:\n          throw new Error(\"mode:\" + mode);\n      }\n    } else if (type < 41) {\n      // 27 - 40\n\n      switch (mode) {\n        case QRMode.MODE_NUMBER:\n          return 14;\n        case QRMode.MODE_ALPHA_NUM:\n          return 13;\n        case QRMode.MODE_8BIT_BYTE:\n          return 16;\n        case QRMode.MODE_KANJI:\n          return 12;\n        default:\n          throw new Error(\"mode:\" + mode);\n      }\n    } else {\n      throw new Error(\"type:\" + type);\n    }\n  },\n\n  getLostPoint: function (qrCode: QRCode) {\n    const moduleCount = qrCode.getModuleCount();\n\n    let lostPoint = 0;\n\n    // LEVEL1\n\n    for (let row = 0; row < moduleCount; row++) {\n      for (let col = 0; col < moduleCount; col++) {\n        let sameCount = 0;\n        const dark = qrCode.isDark(row, col);\n\n        for (let r = -1; r <= 1; r++) {\n          if (row + r < 0 || moduleCount <= row + r) {\n            continue;\n          }\n\n          for (let c = -1; c <= 1; c++) {\n            if (col + c < 0 || moduleCount <= col + c) {\n              continue;\n            }\n\n            if (r == 0 && c == 0) {\n              continue;\n            }\n\n            if (dark == qrCode.isDark(row + r, col + c)) {\n              sameCount++;\n            }\n          }\n        }\n\n        if (sameCount > 5) {\n          lostPoint += 3 + sameCount - 5;\n        }\n      }\n    }\n\n    // LEVEL2\n\n    for (let row = 0; row < moduleCount - 1; row++) {\n      for (let col = 0; col < moduleCount - 1; col++) {\n        let count = 0;\n        if (qrCode.isDark(row, col)) count++;\n        if (qrCode.isDark(row + 1, col)) count++;\n        if (qrCode.isDark(row, col + 1)) count++;\n        if (qrCode.isDark(row + 1, col + 1)) count++;\n        if (count == 0 || count == 4) {\n          lostPoint += 3;\n        }\n      }\n    }\n\n    // LEVEL3\n\n    for (let row = 0; row < moduleCount; row++) {\n      for (let col = 0; col < moduleCount - 6; col++) {\n        if (\n          qrCode.isDark(row, col) &&\n          !qrCode.isDark(row, col + 1) &&\n          qrCode.isDark(row, col + 2) &&\n          qrCode.isDark(row, col + 3) &&\n          qrCode.isDark(row, col + 4) &&\n          !qrCode.isDark(row, col + 5) &&\n          qrCode.isDark(row, col + 6)\n        ) {\n          lostPoint += 40;\n        }\n      }\n    }\n\n    for (let col = 0; col < moduleCount; col++) {\n      for (let row = 0; row < moduleCount - 6; row++) {\n        if (\n          qrCode.isDark(row, col) &&\n          !qrCode.isDark(row + 1, col) &&\n          qrCode.isDark(row + 2, col) &&\n          qrCode.isDark(row + 3, col) &&\n          qrCode.isDark(row + 4, col) &&\n          !qrCode.isDark(row + 5, col) &&\n          qrCode.isDark(row + 6, col)\n        ) {\n          lostPoint += 40;\n        }\n      }\n    }\n\n    // LEVEL4\n\n    let darkCount = 0;\n\n    for (let col = 0; col < moduleCount; col++) {\n      for (let row = 0; row < moduleCount; row++) {\n        if (qrCode.isDark(row, col)) {\n          darkCount++;\n        }\n      }\n    }\n\n    const ratio =\n      Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5;\n    lostPoint += ratio * 10;\n\n    return lostPoint;\n  }\n};\n\nclass QRPolynomial {\n  num: number[];\n\n  constructor(num: number[], shift: number) {\n    if (num.length == undefined) {\n      throw new Error(num.length + \"/\" + shift);\n    }\n    let offset = 0;\n    while (offset < num.length && num[offset] == 0) {\n      offset++;\n    }\n    this.num = new Array(num.length - offset + shift);\n    for (let i = 0; i < num.length - offset; i++) {\n      this.num[i] = num[i + offset];\n    }\n  }\n\n  get(index: number) {\n    return this.num[index];\n  }\n\n  getLength() {\n    return this.num.length;\n  }\n\n  multiply(e: QRPolynomial) {\n    const num = new Array(this.getLength() + e.getLength() - 1);\n\n    for (let i = 0; i < this.getLength(); i++) {\n      for (let j = 0; j < e.getLength(); j++) {\n        num[i + j] ^= QRMath.gexp(\n          QRMath.glog(this.get(i)) + QRMath.glog(e.get(j))\n        );\n      }\n    }\n\n    return new QRPolynomial(num, 0);\n  }\n\n  mod(e: QRPolynomial): QRPolynomial {\n    if (this.getLength() - e.getLength() < 0) {\n      return this;\n    }\n\n    const ratio = QRMath.glog(this.get(0)) - QRMath.glog(e.get(0));\n\n    const num = new Array(this.getLength());\n\n    for (let i = 0; i < this.getLength(); i++) {\n      num[i] = this.get(i);\n    }\n\n    for (let i = 0; i < e.getLength(); i++) {\n      num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio);\n    }\n\n    // recursive call\n    return new QRPolynomial(num, 0).mod(e);\n  }\n}\n\nclass QRRSBlock {\n  totalCount: number;\n  dataCount: number;\n\n  constructor(totalCount: number, dataCount: number) {\n    this.totalCount = totalCount;\n    this.dataCount = dataCount;\n  }\n\n  static RS_BLOCK_TABLE = [\n    // L\n    // M\n    // Q\n    // H\n\n    // 1\n    [1, 26, 19],\n    [1, 26, 16],\n    [1, 26, 13],\n    [1, 26, 9],\n\n    // 2\n    [1, 44, 34],\n    [1, 44, 28],\n    [1, 44, 22],\n    [1, 44, 16],\n\n    // 3\n    [1, 70, 55],\n    [1, 70, 44],\n    [2, 35, 17],\n    [2, 35, 13],\n\n    // 4\n    [1, 100, 80],\n    [2, 50, 32],\n    [2, 50, 24],\n    [4, 25, 9],\n\n    // 5\n    [1, 134, 108],\n    [2, 67, 43],\n    [2, 33, 15, 2, 34, 16],\n    [2, 33, 11, 2, 34, 12],\n\n    // 6\n    [2, 86, 68],\n    [4, 43, 27],\n    [4, 43, 19],\n    [4, 43, 15],\n\n    // 7\n    [2, 98, 78],\n    [4, 49, 31],\n    [2, 32, 14, 4, 33, 15],\n    [4, 39, 13, 1, 40, 14],\n\n    // 8\n    [2, 121, 97],\n    [2, 60, 38, 2, 61, 39],\n    [4, 40, 18, 2, 41, 19],\n    [4, 40, 14, 2, 41, 15],\n\n    // 9\n    [2, 146, 116],\n    [3, 58, 36, 2, 59, 37],\n    [4, 36, 16, 4, 37, 17],\n    [4, 36, 12, 4, 37, 13],\n\n    // 10\n    [2, 86, 68, 2, 87, 69],\n    [4, 69, 43, 1, 70, 44],\n    [6, 43, 19, 2, 44, 20],\n    [6, 43, 15, 2, 44, 16],\n\n    // 11\n    [4, 101, 81],\n    [1, 80, 50, 4, 81, 51],\n    [4, 50, 22, 4, 51, 23],\n    [3, 36, 12, 8, 37, 13],\n\n    // 12\n    [2, 116, 92, 2, 117, 93],\n    [6, 58, 36, 2, 59, 37],\n    [4, 46, 20, 6, 47, 21],\n    [7, 42, 14, 4, 43, 15],\n\n    // 13\n    [4, 133, 107],\n    [8, 59, 37, 1, 60, 38],\n    [8, 44, 20, 4, 45, 21],\n    [12, 33, 11, 4, 34, 12],\n\n    // 14\n    [3, 145, 115, 1, 146, 116],\n    [4, 64, 40, 5, 65, 41],\n    [11, 36, 16, 5, 37, 17],\n    [11, 36, 12, 5, 37, 13],\n\n    // 15\n    [5, 109, 87, 1, 110, 88],\n    [5, 65, 41, 5, 66, 42],\n    [5, 54, 24, 7, 55, 25],\n    [11, 36, 12],\n\n    // 16\n    [5, 122, 98, 1, 123, 99],\n    [7, 73, 45, 3, 74, 46],\n    [15, 43, 19, 2, 44, 20],\n    [3, 45, 15, 13, 46, 16],\n\n    // 17\n    [1, 135, 107, 5, 136, 108],\n    [10, 74, 46, 1, 75, 47],\n    [1, 50, 22, 15, 51, 23],\n    [2, 42, 14, 17, 43, 15],\n\n    // 18\n    [5, 150, 120, 1, 151, 121],\n    [9, 69, 43, 4, 70, 44],\n    [17, 50, 22, 1, 51, 23],\n    [2, 42, 14, 19, 43, 15],\n\n    // 19\n    [3, 141, 113, 4, 142, 114],\n    [3, 70, 44, 11, 71, 45],\n    [17, 47, 21, 4, 48, 22],\n    [9, 39, 13, 16, 40, 14],\n\n    // 20\n    [3, 135, 107, 5, 136, 108],\n    [3, 67, 41, 13, 68, 42],\n    [15, 54, 24, 5, 55, 25],\n    [15, 43, 15, 10, 44, 16],\n\n    // 21\n    [4, 144, 116, 4, 145, 117],\n    [17, 68, 42],\n    [17, 50, 22, 6, 51, 23],\n    [19, 46, 16, 6, 47, 17],\n\n    // 22\n    [2, 139, 111, 7, 140, 112],\n    [17, 74, 46],\n    [7, 54, 24, 16, 55, 25],\n    [34, 37, 13],\n\n    // 23\n    [4, 151, 121, 5, 152, 122],\n    [4, 75, 47, 14, 76, 48],\n    [11, 54, 24, 14, 55, 25],\n    [16, 45, 15, 14, 46, 16],\n\n    // 24\n    [6, 147, 117, 4, 148, 118],\n    [6, 73, 45, 14, 74, 46],\n    [11, 54, 24, 16, 55, 25],\n    [30, 46, 16, 2, 47, 17],\n\n    // 25\n    [8, 132, 106, 4, 133, 107],\n    [8, 75, 47, 13, 76, 48],\n    [7, 54, 24, 22, 55, 25],\n    [22, 45, 15, 13, 46, 16],\n\n    // 26\n    [10, 142, 114, 2, 143, 115],\n    [19, 74, 46, 4, 75, 47],\n    [28, 50, 22, 6, 51, 23],\n    [33, 46, 16, 4, 47, 17],\n\n    // 27\n    [8, 152, 122, 4, 153, 123],\n    [22, 73, 45, 3, 74, 46],\n    [8, 53, 23, 26, 54, 24],\n    [12, 45, 15, 28, 46, 16],\n\n    // 28\n    [3, 147, 117, 10, 148, 118],\n    [3, 73, 45, 23, 74, 46],\n    [4, 54, 24, 31, 55, 25],\n    [11, 45, 15, 31, 46, 16],\n\n    // 29\n    [7, 146, 116, 7, 147, 117],\n    [21, 73, 45, 7, 74, 46],\n    [1, 53, 23, 37, 54, 24],\n    [19, 45, 15, 26, 46, 16],\n\n    // 30\n    [5, 145, 115, 10, 146, 116],\n    [19, 75, 47, 10, 76, 48],\n    [15, 54, 24, 25, 55, 25],\n    [23, 45, 15, 25, 46, 16],\n\n    // 31\n    [13, 145, 115, 3, 146, 116],\n    [2, 74, 46, 29, 75, 47],\n    [42, 54, 24, 1, 55, 25],\n    [23, 45, 15, 28, 46, 16],\n\n    // 32\n    [17, 145, 115],\n    [10, 74, 46, 23, 75, 47],\n    [10, 54, 24, 35, 55, 25],\n    [19, 45, 15, 35, 46, 16],\n\n    // 33\n    [17, 145, 115, 1, 146, 116],\n    [14, 74, 46, 21, 75, 47],\n    [29, 54, 24, 19, 55, 25],\n    [11, 45, 15, 46, 46, 16],\n\n    // 34\n    [13, 145, 115, 6, 146, 116],\n    [14, 74, 46, 23, 75, 47],\n    [44, 54, 24, 7, 55, 25],\n    [59, 46, 16, 1, 47, 17],\n\n    // 35\n    [12, 151, 121, 7, 152, 122],\n    [12, 75, 47, 26, 76, 48],\n    [39, 54, 24, 14, 55, 25],\n    [22, 45, 15, 41, 46, 16],\n\n    // 36\n    [6, 151, 121, 14, 152, 122],\n    [6, 75, 47, 34, 76, 48],\n    [46, 54, 24, 10, 55, 25],\n    [2, 45, 15, 64, 46, 16],\n\n    // 37\n    [17, 152, 122, 4, 153, 123],\n    [29, 74, 46, 14, 75, 47],\n    [49, 54, 24, 10, 55, 25],\n    [24, 45, 15, 46, 46, 16],\n\n    // 38\n    [4, 152, 122, 18, 153, 123],\n    [13, 74, 46, 32, 75, 47],\n    [48, 54, 24, 14, 55, 25],\n    [42, 45, 15, 32, 46, 16],\n\n    // 39\n    [20, 147, 117, 4, 148, 118],\n    [40, 75, 47, 7, 76, 48],\n    [43, 54, 24, 22, 55, 25],\n    [10, 45, 15, 67, 46, 16],\n\n    // 40\n    [19, 148, 118, 6, 149, 119],\n    [18, 75, 47, 31, 76, 48],\n    [34, 54, 24, 34, 55, 25],\n    [20, 45, 15, 61, 46, 16]\n  ];\n\n  static getRSBlocks(typeNumber: number, errorCorrectLevel: number) {\n    const rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\n    if (rsBlock == undefined) {\n      throw new Error(\n        \"bad rs block @ typeNumber:\" +\n          typeNumber +\n          \"/errorCorrectLevel:\" +\n          errorCorrectLevel\n      );\n    }\n\n    const length = rsBlock.length / 3;\n\n    const list = [];\n\n    for (let i = 0; i < length; i++) {\n      const count = rsBlock[i * 3 + 0];\n      const totalCount = rsBlock[i * 3 + 1];\n      const dataCount = rsBlock[i * 3 + 2];\n\n      for (let j = 0; j < count; j++) {\n        list.push(new QRRSBlock(totalCount, dataCount));\n      }\n    }\n\n    return list;\n  }\n\n  static getRsBlockTable(typeNumber: number, errorCorrectLevel: number) {\n    switch (errorCorrectLevel) {\n      case QRErrorCorrectLevel.L:\n        return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n      case QRErrorCorrectLevel.M:\n        return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n      case QRErrorCorrectLevel.Q:\n        return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n      case QRErrorCorrectLevel.H:\n        return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n      default:\n        return undefined;\n    }\n  }\n}\n\nclass QRBitBuffer {\n  buffer: number[];\n  length: number;\n\n  constructor() {\n    this.buffer = [];\n    this.length = 0;\n  }\n\n  get(index: number) {\n    const bufIndex = Math.floor(index / 8);\n    return ((this.buffer[bufIndex] >>> (7 - (index % 8))) & 1) == 1;\n  }\n\n  put(num: number, length: number) {\n    for (let i = 0; i < length; i++) {\n      this.putBit(((num >>> (length - i - 1)) & 1) == 1);\n    }\n  }\n\n  getLengthInBits() {\n    return this.length;\n  }\n\n  putBit(bit: boolean) {\n    const bufIndex = Math.floor(this.length / 8);\n    if (this.buffer.length <= bufIndex) {\n      this.buffer.push(0);\n    }\n\n    if (bit) {\n      this.buffer[bufIndex] |= 0x80 >>> this.length % 8;\n    }\n\n    this.length++;\n  }\n}\n\nclass QR8bitByte {\n  mode: number;\n  data: string;\n  constructor(data: string) {\n    this.mode = QRMode.MODE_8BIT_BYTE;\n    this.data = data;\n  }\n  getLength() {\n    return this.data.length;\n  }\n\n  write(buffer: QRBitBuffer) {\n    for (let i = 0, len = this.data.length; i < len; i++) {\n      // not JIS ...\n      buffer.put(this.data.charCodeAt(i), 8);\n    }\n  }\n}\n\nexport class QRCode {\n  static PAD0 = 0xec;\n  static PAD1 = 0x11;\n\n  typeNumber: number;\n  errorCorrectLevel: any;\n  modules: (null | boolean)[][];\n  moduleCount: number;\n  dataCache: null | number[];\n  dataList: QR8bitByte[];\n\n  constructor(\n    typeNumber: number,\n    errorCorrectLevel: keyof typeof QRErrorCorrectLevel\n  ) {\n    this.typeNumber = typeNumber;\n    this.errorCorrectLevel = QRErrorCorrectLevel[errorCorrectLevel];\n    this.modules = [];\n    this.moduleCount = 0;\n    this.dataCache = null;\n    this.dataList = [];\n  }\n\n  addData(data: string) {\n    const newData = new QR8bitByte(data);\n    this.dataList.push(newData);\n    this.dataCache = null;\n  }\n\n  isDark(row: number, col: number) {\n    if (\n      row < 0 ||\n      this.moduleCount <= row ||\n      col < 0 ||\n      this.moduleCount <= col\n    ) {\n      throw new Error(row + \",\" + col);\n    }\n    return this.modules[row][col];\n  }\n\n  getModuleCount() {\n    return this.moduleCount;\n  }\n\n  make() {\n    // Calculate automatically typeNumber if provided is < 1\n    if (this.typeNumber < 1) {\n      let typeNumber = 1;\n      for (typeNumber = 1; typeNumber < 40; typeNumber++) {\n        const rsBlocks = QRRSBlock.getRSBlocks(\n          typeNumber,\n          this.errorCorrectLevel\n        );\n\n        const buffer = new QRBitBuffer();\n        let totalDataCount = 0;\n        for (let i = 0; i < rsBlocks.length; i++) {\n          totalDataCount += rsBlocks[i].dataCount;\n        }\n\n        for (let i = 0; i < this.dataList.length; i++) {\n          const data = this.dataList[i];\n          buffer.put(data.mode, 4);\n          buffer.put(\n            data.getLength(),\n            QRUtil.getLengthInBits(data.mode, typeNumber)\n          );\n          data.write(buffer);\n        }\n        if (buffer.getLengthInBits() <= totalDataCount * 8) break;\n      }\n      this.typeNumber = typeNumber;\n    }\n    this.makeImpl(false, this.getBestMaskPattern());\n  }\n\n  makeImpl(test: boolean, maskPattern: number) {\n    this.moduleCount = this.typeNumber * 4 + 17;\n    this.modules = new Array(this.moduleCount);\n\n    for (let row = 0; row < this.moduleCount; row++) {\n      this.modules[row] = new Array(this.moduleCount);\n\n      for (let col = 0; col < this.moduleCount; col++) {\n        this.modules[row][col] = null; //(col + row) % 3;\n      }\n    }\n\n    this.setupPositionProbePattern(0, 0);\n    this.setupPositionProbePattern(this.moduleCount - 7, 0);\n    this.setupPositionProbePattern(0, this.moduleCount - 7);\n    this.setupPositionAdjustPattern();\n    this.setupTimingPattern();\n    this.setupTypeInfo(test, maskPattern);\n\n    if (this.typeNumber >= 7) {\n      this.setupTypeNumber(test);\n    }\n\n    if (this.dataCache == null) {\n      this.dataCache = QRCode.createData(\n        this.typeNumber,\n        this.errorCorrectLevel,\n        this.dataList\n      );\n    }\n\n    this.mapData(this.dataCache, maskPattern);\n  }\n\n  setupPositionProbePattern(row: number, col: number) {\n    for (let r = -1; r <= 7; r++) {\n      if (row + r <= -1 || this.moduleCount <= row + r) continue;\n\n      for (let c = -1; c <= 7; c++) {\n        if (col + c <= -1 || this.moduleCount <= col + c) continue;\n\n        if (\n          (0 <= r && r <= 6 && (c == 0 || c == 6)) ||\n          (0 <= c && c <= 6 && (r == 0 || r == 6)) ||\n          (2 <= r && r <= 4 && 2 <= c && c <= 4)\n        ) {\n          this.modules[row + r][col + c] = true;\n        } else {\n          this.modules[row + r][col + c] = false;\n        }\n      }\n    }\n  }\n\n  getBestMaskPattern() {\n    let minLostPoint = 0;\n    let pattern = 0;\n\n    for (let i = 0; i < 8; i++) {\n      this.makeImpl(true, i);\n\n      const lostPoint = QRUtil.getLostPoint(this);\n\n      if (i == 0 || minLostPoint > lostPoint) {\n        minLostPoint = lostPoint;\n        pattern = i;\n      }\n    }\n\n    return pattern;\n  }\n\n  createMovieClip(\n    target_mc: {\n      createEmptyMovieClip: (\n        instance_name: string,\n        depth: number\n      ) => {\n        beginFill(x: number, y: number): void;\n        moveTo(x: number, y: number): void;\n        lineTo(x: number, y: number): void;\n        endFill(): void;\n      };\n    },\n    instance_name: string,\n    depth: number\n  ) {\n    const qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n    const cs = 1;\n\n    this.make();\n\n    for (let row = 0; row < this.modules.length; row++) {\n      const y = row * cs;\n\n      for (let col = 0; col < this.modules[row].length; col++) {\n        const x = col * cs;\n        const dark = this.modules[row][col];\n\n        if (dark) {\n          qr_mc.beginFill(0, 100);\n          qr_mc.moveTo(x, y);\n          qr_mc.lineTo(x + cs, y);\n          qr_mc.lineTo(x + cs, y + cs);\n          qr_mc.lineTo(x, y + cs);\n          qr_mc.endFill();\n        }\n      }\n    }\n\n    return qr_mc;\n  }\n\n  setupTimingPattern() {\n    for (let r = 8; r < this.moduleCount - 8; r++) {\n      if (this.modules[r][6] != null) {\n        continue;\n      }\n      this.modules[r][6] = r % 2 == 0;\n    }\n\n    for (let c = 8; c < this.moduleCount - 8; c++) {\n      if (this.modules[6][c] != null) {\n        continue;\n      }\n      this.modules[6][c] = c % 2 == 0;\n    }\n  }\n\n  setupPositionAdjustPattern() {\n    const pos = QRUtil.getPatternPosition(this.typeNumber);\n\n    for (let i = 0; i < pos.length; i++) {\n      for (let j = 0; j < pos.length; j++) {\n        const row = pos[i];\n        const col = pos[j];\n\n        if (this.modules[row][col] != null) {\n          continue;\n        }\n\n        for (let r = -2; r <= 2; r++) {\n          for (let c = -2; c <= 2; c++) {\n            if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {\n              this.modules[row + r][col + c] = true;\n            } else {\n              this.modules[row + r][col + c] = false;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  setupTypeNumber(test: boolean) {\n    const bits = QRUtil.getBCHTypeNumber(this.typeNumber);\n\n    for (let i = 0; i < 18; i++) {\n      const mod = !test && ((bits >> i) & 1) == 1;\n      this.modules[Math.floor(i / 3)][(i % 3) + this.moduleCount - 8 - 3] = mod;\n    }\n\n    for (let i = 0; i < 18; i++) {\n      const mod = !test && ((bits >> i) & 1) == 1;\n      this.modules[(i % 3) + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n    }\n  }\n\n  setupTypeInfo(test: boolean, maskPattern: number) {\n    const data = (this.errorCorrectLevel << 3) | maskPattern;\n    const bits = QRUtil.getBCHTypeInfo(data);\n\n    // vertical\n    for (let i = 0; i < 15; i++) {\n      const mod = !test && ((bits >> i) & 1) == 1;\n\n      if (i < 6) {\n        this.modules[i][8] = mod;\n      } else if (i < 8) {\n        this.modules[i + 1][8] = mod;\n      } else {\n        this.modules[this.moduleCount - 15 + i][8] = mod;\n      }\n    }\n\n    // horizontal\n    for (let i = 0; i < 15; i++) {\n      const mod = !test && ((bits >> i) & 1) == 1;\n\n      if (i < 8) {\n        this.modules[8][this.moduleCount - i - 1] = mod;\n      } else if (i < 9) {\n        this.modules[8][15 - i - 1 + 1] = mod;\n      } else {\n        this.modules[8][15 - i - 1] = mod;\n      }\n    }\n\n    // fixed module\n    this.modules[this.moduleCount - 8][8] = !test;\n  }\n\n  mapData(data: number[], maskPattern: number) {\n    let inc = -1;\n    let row = this.moduleCount - 1;\n    let bitIndex = 7;\n    let byteIndex = 0;\n\n    for (let col = this.moduleCount - 1; col > 0; col -= 2) {\n      if (col == 6) col--;\n\n      // eslint-disable-next-line no-constant-condition\n      while (true) {\n        for (let c = 0; c < 2; c++) {\n          if (this.modules[row][col - c] == null) {\n            let dark = false;\n\n            if (byteIndex < data.length) {\n              dark = ((data[byteIndex] >>> bitIndex) & 1) == 1;\n            }\n\n            const mask = QRUtil.getMask(maskPattern, row, col - c);\n\n            if (mask) {\n              dark = !dark;\n            }\n\n            this.modules[row][col - c] = dark;\n            bitIndex--;\n\n            if (bitIndex == -1) {\n              byteIndex++;\n              bitIndex = 7;\n            }\n          }\n        }\n\n        row += inc;\n\n        if (row < 0 || this.moduleCount <= row) {\n          row -= inc;\n          inc = -inc;\n          break;\n        }\n      }\n    }\n  }\n\n  static createData(\n    typeNumber: number,\n    errorCorrectLevel: number,\n    dataList: QR8bitByte[]\n  ) {\n    const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\n    const buffer = new QRBitBuffer();\n\n    for (let i = 0; i < dataList.length; i++) {\n      const data = dataList[i];\n      buffer.put(data.mode, 4);\n      buffer.put(\n        data.getLength(),\n        QRUtil.getLengthInBits(data.mode, typeNumber)\n      );\n      data.write(buffer);\n    }\n\n    // calc num max data.\n    let totalDataCount = 0;\n    for (let i = 0; i < rsBlocks.length; i++) {\n      totalDataCount += rsBlocks[i].dataCount;\n    }\n\n    if (buffer.getLengthInBits() > totalDataCount * 8) {\n      throw new Error(\n        \"code length overflow. (\" +\n          buffer.getLengthInBits() +\n          \">\" +\n          totalDataCount * 8 +\n          \")\"\n      );\n    }\n\n    // end code\n    if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n      buffer.put(0, 4);\n    }\n\n    // padding\n    while (buffer.getLengthInBits() % 8 != 0) {\n      buffer.putBit(false);\n    }\n\n    // padding\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n      if (buffer.getLengthInBits() >= totalDataCount * 8) {\n        break;\n      }\n      buffer.put(QRCode.PAD0, 8);\n\n      if (buffer.getLengthInBits() >= totalDataCount * 8) {\n        break;\n      }\n      buffer.put(QRCode.PAD1, 8);\n    }\n\n    return QRCode.createBytes(buffer, rsBlocks);\n  }\n\n  static createBytes(buffer: QRBitBuffer, rsBlocks: QRRSBlock[]) {\n    let offset = 0;\n\n    let maxDcCount = 0;\n    let maxEcCount = 0;\n\n    const dcdata = new Array(rsBlocks.length);\n    const ecdata = new Array(rsBlocks.length);\n\n    for (let r = 0; r < rsBlocks.length; r++) {\n      const dcCount = rsBlocks[r].dataCount;\n      const ecCount = rsBlocks[r].totalCount - dcCount;\n\n      maxDcCount = Math.max(maxDcCount, dcCount);\n      maxEcCount = Math.max(maxEcCount, ecCount);\n\n      dcdata[r] = new Array(dcCount);\n\n      for (let i = 0; i < dcdata[r].length; i++) {\n        dcdata[r][i] = 0xff & buffer.buffer[i + offset];\n      }\n      offset += dcCount;\n\n      const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n      const rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n      const modPoly = rawPoly.mod(rsPoly);\n      ecdata[r] = new Array(rsPoly.getLength() - 1);\n      for (let i = 0; i < ecdata[r].length; i++) {\n        const modIndex = i + modPoly.getLength() - ecdata[r].length;\n        ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0;\n      }\n    }\n\n    let totalCodeCount = 0;\n    for (let i = 0; i < rsBlocks.length; i++) {\n      totalCodeCount += rsBlocks[i].totalCount;\n    }\n\n    const data = new Array(totalCodeCount);\n    let index = 0;\n\n    for (let i = 0; i < maxDcCount; i++) {\n      for (let r = 0; r < rsBlocks.length; r++) {\n        if (i < dcdata[r].length) {\n          data[index++] = dcdata[r][i];\n        }\n      }\n    }\n\n    for (let i = 0; i < maxEcCount; i++) {\n      for (let r = 0; r < rsBlocks.length; r++) {\n        if (i < ecdata[r].length) {\n          data[index++] = ecdata[r][i];\n        }\n      }\n    }\n\n    return data as number[];\n  }\n}\n\n// 变量\nconst MathC = Math.ceil;\nconst MathF = Math.floor;\nconst MathR = Math.round;\n\n// 输出为base64\nexport function outputQRCodeBase64(\n  text: string,\n  options?: {\n    ecc?: keyof typeof QRErrorCorrectLevel;\n    size?: number;\n    padding?: number;\n    color?: string;\n    background?: string;\n  }\n) {\n  const txt = utf16to8(text),\n    ecc = options?.ecc || \"H\",\n    size = options?.size || 256,\n    typeNumber = -1,\n    padding = options?.padding || 0,\n    foreground = options?.color || \"#000000\",\n    background = options?.background || \"#ffffff\";\n\n  // create the qrcode itself\n  const qrcode = new QRCode(typeNumber, ecc);\n  qrcode.addData(txt);\n  qrcode.make();\n\n  // calc width\n  const count = qrcode.getModuleCount(),\n    width = (size - padding * 2) / count;\n\n  const min = padding,\n    max = size - padding;\n\n  return outputGifBase64(size, foreground, background, function (x, y) {\n    if (min <= x && x < max && min <= y && y < max) {\n      const c = MathF((x - min) / width);\n      const r = MathF((y - min) / width);\n      return qrcode.isDark(r, c) ? 0 : 1;\n    } else {\n      return 1;\n    }\n  });\n}\n\n// 绘制到canvas\nexport function drawQRCodeToCanvas(\n  text: string,\n  options: {\n    x?: number;\n    y?: number;\n    ctx: CanvasRenderingContext2D;\n    ecc?: keyof typeof QRErrorCorrectLevel;\n    size?: number;\n    padding?: number;\n    color?: string;\n    background?: string;\n  }\n) {\n  const x = options.x || 0,\n    y = options.y || 0,\n    txt = utf16to8(text),\n    ctx = options.ctx,\n    ecc = options.ecc || \"H\",\n    size = typeof options.size === \"number\" ? MathF(options.size) : 256,\n    padding = options.padding || 0,\n    typeNumber = -1,\n    foreground = options.color || \"#000000\",\n    background = options.background || \"#ffffff\";\n\n  // create the qrcode itself\n  const qrcode = new QRCode(typeNumber, ecc);\n  qrcode.addData(txt);\n  qrcode.make();\n\n  // compute width based on size\n  const count = qrcode.getModuleCount(),\n    width = (size - padding * 2) / count;\n\n  // background\n  ctx.fillStyle = background;\n  ctx.fillRect(x, y, size, size);\n\n  // draw in the canvas\n  for (let row = 0; row < count; row++) {\n    for (let col = 0; col < count; col++) {\n      const w = MathC((col + 1) * width) - MathF(col * width);\n      const h = MathC((row + 1) * width) - MathF(row * width);\n\n      ctx.fillStyle = qrcode.isDark(row, col) ? foreground : background;\n\n      ctx.fillRect(\n        x + MathR(col * width) + padding,\n        y + MathR(row * width) + padding,\n        w,\n        h\n      );\n    }\n  }\n}\n","import { clamp } from \"@zyzgroup/core-common\";\nimport { Matrix3, Matrix4 } from \"./Matrix\";\n// import { BufferAttribute } from \"./BufferAttribute\";\n// import { Quaternion } from \"./Quaternion\";\n// import { Euler } from \"./Euler\";\n\n/// 向量\n\nexport class Vector2 {\n  x = 0;\n  y = 0;\n\n  constructor(x = 0, y = 0) {\n    this.x = x;\n    this.y = y;\n  }\n\n  get width() {\n    return this.x;\n  }\n\n  set width(value: number) {\n    this.x = value;\n  }\n\n  get height() {\n    return this.y;\n  }\n\n  set height(value: number) {\n    this.y = value;\n  }\n\n  set(x = 0, y = 0) {\n    this.x = x;\n    this.y = y;\n    return this;\n  }\n\n  setScalar(scalar: number) {\n    this.x = scalar;\n    this.y = scalar;\n    return this;\n  }\n\n  setX(x: number) {\n    this.x = x;\n    return this;\n  }\n\n  setY(y: number) {\n    this.y = y;\n    return this;\n  }\n\n  setComponent(index: number, value: number) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n\n  getComponent(index: number) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n\n  copy(v: Vector2) {\n    this.x = v.x;\n    this.y = v.y;\n    return this;\n  }\n\n  clone() {\n    return new Vector2(this.x, this.y);\n  }\n\n  /// 交换律：  P + Q = Q + P\n  /// 结合律：  (P + Q) + R =  P + (Q + R)\n  /// 分配率：  a(P + Q) = aP + aQ\n  add(v: Vector2) {\n    this.x += v.x;\n    this.y += v.y;\n    return this;\n  }\n\n  addScalar(s: number) {\n    this.x += s;\n    this.y += s;\n    return this;\n  }\n\n  addVectors(a: Vector2, b: Vector2) {\n    this.x = a.x + b.x;\n    this.y = a.y + b.y;\n    return this;\n  }\n\n  addScaledVector(v: Vector2, s: number) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    return this;\n  }\n\n  /// P.sub(Q) = 从 Q的终点 到 P的终点\n  sub(v: Vector2) {\n    this.x -= v.x;\n    this.y -= v.y;\n    return this;\n  }\n\n  subScalar(s: number) {\n    this.x -= s;\n    this.y -= s;\n    return this;\n  }\n\n  subVectors(a: Vector2, b: Vector2) {\n    this.x = a.x - b.x;\n    this.y = a.y - b.y;\n    return this;\n  }\n\n  /// 乘积\n  /// 交换律：  P * Q = Q * P\n  /// 结合律：  (ab)P = a(bP)\n  /// 分配率：  (a + b)P = aP + bP\n  multiply(v: Vector2) {\n    this.x *= v.x;\n    this.y *= v.y;\n    return this;\n  }\n\n  multiplyScalar(scalar: number) {\n    this.x *= scalar;\n    this.y *= scalar;\n    return this;\n  }\n\n  divide(v: Vector2) {\n    this.x /= v.x;\n    this.y /= v.y;\n    return this;\n  }\n\n  divideScalar(scalar: number) {\n    return this.multiplyScalar(1 / scalar);\n  }\n\n  applyMatrix3(m: Matrix3) {\n    const x = this.x;\n    const y = this.y;\n    this.x = m.m11 * x + m.m21 * y + m.m31;\n    this.y = m.m12 * x + m.m22 * y + m.m32;\n    return this;\n  }\n\n  min(v: Vector2) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    return this;\n  }\n\n  max(v: Vector2) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    return this;\n  }\n\n  clamp(min: Vector2, max: Vector2) {\n    this.x = clamp(this.x, min.x, max.x);\n    this.y = clamp(this.y, min.y, max.y);\n    return this;\n  }\n\n  clampScalar(minVal: number, maxVal: number) {\n    this.x = clamp(this.x, minVal, maxVal);\n    this.y = clamp(this.y, minVal, maxVal);\n    return this;\n  }\n\n  clampLength(min: number, max: number) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(\n      clamp(length, min, max)\n    );\n  }\n\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    return this;\n  }\n\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    return this;\n  }\n\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    return this;\n  }\n\n  roundToZero() {\n    this.x = Math.trunc(this.x);\n    this.y = Math.trunc(this.y);\n    return this;\n  }\n\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    return this;\n  }\n\n  /// 点积、数量积、内积\n  /// 点积的正负号说明2个向量指向同一方向的接近程度\n  /// P.Q = 0  =>  向量P 和 向量Q 互相垂直  =>  向量P 和 向量Q 线性无关\n  /// P.Q = |P| * |Q| * cos(从Q到P的角度差)\n\n  /// P.Q = Q.P\n  /// (aP).Q = a(Q.P)\n  /// P.(Q + R) = P.Q + P.R\n  /// P.P = |P| * |P|\n  /// |P.Q| <= |P| * |Q|\n  dot(v: Vector2) {\n    return this.x * v.x + this.y * v.y;\n  }\n\n  /// 叉积、向量积  =>  新向量垂直于原来两个向量\n  /// 三维向量独有\n  /// 叉积遵循右手法则：右手4指指向 向量P 的方向，手掌掌内指向 向量Q 的方向，则大拇指所指方向就是 叉积 P x Q 的方向\n\n  /// (P x Q).P = (P x Q).Q = 0\n  /// |P x Q| = |P| * |Q| * sin(从Q到P的角度差) = 向量P 和 向量Q 组成的平行四边形的面积\n\n  /// 假设 单位向量i<1,0,0> 指向 x轴正方向，单位向量j<0,1,0> 指向 y轴正方向，单位向量k<0,0,1> 指向 z轴正方向\n  /// 且 i 在 j 之前，j 在 k 之前，k 在 i 之前\n  /// 则\n  /// i x j = k\n  /// j x k = i\n  /// k x i = j\n  /// j x i = -k\n  /// k x j = -i\n  /// i x k = -j\n\n  /// Q x P = -(P x Q)\n  // (aP) x Q = a(P x Q)\n  /// P x (Q + R) = P x Q + P x R\n  /// P x P - O = <0,0,0>\n  /// (P x Q).R = (R x P).Q = (Q x R).P\n  /// P x (Q x R) = P x Q x R = |P| * |P| * Q - (P.Q)P\n  cross(v: Vector2) {\n    return this.x * v.y - this.y * v.x;\n  }\n\n  /// 投影到 v 的向量\n  projectOnVector(v: Vector2) {\n    const denominator = v.lengthSq();\n    if (denominator === 0) {\n      return this.set(0, 0);\n    }\n    const scalar = v.dot(this) / denominator;\n    return this.copy(v).multiplyScalar(scalar);\n  }\n\n  /// 相对于 v 的垂直分量\n  perpendOnVector(v: Vector2) {\n    _v2.copy(this).projectOnVector(v);\n    return this.sub(_v2);\n  }\n\n  /// 模、范数、长度\n  /// |P| >= 0\n  /// |aP| = |a| * |P|\n  /// |P + Q| <= |P| + |Q|\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y);\n  }\n\n  lengthSq() {\n    return this.x * this.x + this.y * this.y;\n  }\n\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y);\n  }\n\n  /// 规格化\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n\n  // computes the angle in radians with respect to the positive x-axis\n  angle() {\n    return Math.atan2(-this.y, -this.x) + Math.PI;\n  }\n\n  angleTo(v: Vector2) {\n    const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n    if (denominator === 0) {\n      return Math.PI / 2;\n    }\n    const theta = this.dot(v) / denominator;\n    // clamp, to handle numerical problems\n    return Math.acos(clamp(theta, -1, 1));\n  }\n\n  distanceTo(v: Vector2) {\n    return Math.sqrt(this.distanceToSquared(v));\n  }\n\n  distanceToSquared(v: Vector2) {\n    const dx = this.x - v.x;\n    const dy = this.y - v.y;\n    return dx * dx + dy * dy;\n  }\n\n  manhattanDistanceTo(v: Vector2) {\n    return Math.abs(this.x - v.x) + Math.abs(this.y - v.y);\n  }\n\n  setLength(length: number) {\n    return this.normalize().multiplyScalar(length);\n  }\n\n  lerp(v: Vector2, alpha: number) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.y - this.y) * alpha;\n    return this;\n  }\n\n  lerpVectors(v1: Vector2, v2: Vector2, alpha: number) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    return this;\n  }\n\n  equals(v: Vector2) {\n    return v.x === this.x && v.y === this.y;\n  }\n\n  fromArray(array: number[], offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    return this;\n  }\n\n  toArray(array: number[] = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    return array;\n  }\n\n  // fromBufferAttribute(attribute: BufferAttribute, index: number) {\n  //   this.x = attribute.getX(index);\n  //   this.y = attribute.getY(index);\n  //   return this;\n  // }\n\n  rotateAround(center: Vector2, angle: number) {\n    const c = Math.cos(angle);\n    const s = Math.sin(angle);\n    const x = this.x - center.x;\n    const y = this.y - center.y;\n    this.x = x * c - y * s + center.x;\n    this.y = x * s + y * c + center.y;\n    return this;\n  }\n\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    return this;\n  }\n\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n  }\n}\n\nexport class Vector3 {\n  x = 0;\n  y = 0;\n  z = 0;\n\n  constructor(x = 0, y = 0, z = 0) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\n  }\n\n  set(x = 0, y = 0, z = 0) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\n    return this;\n  }\n\n  setScalar(scalar: number) {\n    this.x = scalar;\n    this.y = scalar;\n    this.z = scalar;\n    return this;\n  }\n\n  setX(x: number) {\n    this.x = x;\n    return this;\n  }\n\n  setY(y: number) {\n    this.y = y;\n    return this;\n  }\n\n  setZ(z: number) {\n    this.z = z;\n    return this;\n  }\n\n  setComponent(index: number, value: number) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      case 2:\n        this.z = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n\n  getComponent(index: number) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      case 2:\n        return this.z;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n\n  clone() {\n    return new Vector3(this.x, this.y, this.z);\n  }\n\n  copy(v: Vector3) {\n    this.x = v.x;\n    this.y = v.y;\n    this.z = v.z;\n    return this;\n  }\n\n  add(v: Vector3) {\n    this.x += v.x;\n    this.y += v.y;\n    this.z += v.z;\n    return this;\n  }\n\n  addScalar(s: number) {\n    this.x += s;\n    this.y += s;\n    this.z += s;\n    return this;\n  }\n\n  addVectors(a: Vector3, b: Vector3) {\n    this.x = a.x + b.x;\n    this.y = a.y + b.y;\n    this.z = a.z + b.z;\n    return this;\n  }\n\n  addScaledVector(v: Vector3, s: number) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    this.z += v.z * s;\n    return this;\n  }\n\n  sub(v: Vector3) {\n    this.x -= v.x;\n    this.y -= v.y;\n    this.z -= v.z;\n    return this;\n  }\n\n  subScalar(s: number) {\n    this.x -= s;\n    this.y -= s;\n    this.z -= s;\n    return this;\n  }\n\n  subVectors(a: Vector3, b: Vector3) {\n    this.x = a.x - b.x;\n    this.y = a.y - b.y;\n    this.z = a.z - b.z;\n    return this;\n  }\n\n  multiply(v: Vector3) {\n    this.x *= v.x;\n    this.y *= v.y;\n    this.z *= v.z;\n    return this;\n  }\n\n  multiplyScalar(scalar: number) {\n    this.x *= scalar;\n    this.y *= scalar;\n    this.z *= scalar;\n    return this;\n  }\n\n  multiplyVectors(a: Vector3, b: Vector3) {\n    this.x = a.x * b.x;\n    this.y = a.y * b.y;\n    this.z = a.z * b.z;\n    return this;\n  }\n\n  // applyEuler(euler: Euler) {\n  //   return this.applyQuaternion(_quaternion.setFromEuler(euler));\n  // }\n\n  // applyAxisAngle(axis: Vector3, angle: number) {\n  //   return this.applyQuaternion(_quaternion.setFromAxisAngle(axis, angle));\n  // }\n\n  applyMatrix3(m: Matrix3) {\n    const x = this.x;\n    const y = this.y;\n    const z = this.z;\n    const e = m.value;\n    this.x = e[0] * x + e[3] * y + e[6] * z;\n    this.y = e[1] * x + e[4] * y + e[7] * z;\n    this.z = e[2] * x + e[5] * y + e[8] * z;\n    return this;\n  }\n\n  applyNormalMatrix(m: Matrix3) {\n    return this.applyMatrix3(m).normalize();\n  }\n\n  applyMatrix4(m: Matrix4) {\n    const x = this.x;\n    const y = this.y;\n    const z = this.z;\n    const e = m.value;\n    const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\n    this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\n    this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\n    this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\n    return this;\n  }\n\n  // applyQuaternion(q: Quaternion) {\n  //   // quaternion q is assumed to have unit length\n  //   const vx = this.x;\n  //   const vy = this.y;\n  //   const vz = this.z;\n  //   const qx = q.x;\n  //   const qy = q.y;\n  //   const qz = q.z;\n  //   const qw = q.w;\n  //   // t = 2 * cross( q.xyz, v );\n  //   const tx = 2 * (qy * vz - qz * vy);\n  //   const ty = 2 * (qz * vx - qx * vz);\n  //   const tz = 2 * (qx * vy - qy * vx);\n  //   // v + q.w * t + cross( q.xyz, t );\n  //   this.x = vx + qw * tx + qy * tz - qz * ty;\n  //   this.y = vy + qw * ty + qz * tx - qx * tz;\n  //   this.z = vz + qw * tz + qx * ty - qy * tx;\n  //   return this;\n  // }\n\n  // project(camera) {\n  //   return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(\n  //     camera.projectionMatrix\n  //   );\n  // }\n\n  // unproject(camera) {\n  //   return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(\n  //     camera.matrixWorld\n  //   );\n  // }\n\n  transformDirection(m: Matrix4) {\n    // input: Matrix4 affine matrix\n    // vector interpreted as a direction\n    const x = this.x;\n    const y = this.y;\n    const z = this.z;\n    const e = m.value;\n    this.x = e[0] * x + e[4] * y + e[8] * z;\n    this.y = e[1] * x + e[5] * y + e[9] * z;\n    this.z = e[2] * x + e[6] * y + e[10] * z;\n    return this.normalize();\n  }\n\n  divide(v: Vector3) {\n    this.x /= v.x;\n    this.y /= v.y;\n    this.z /= v.z;\n    return this;\n  }\n\n  divideScalar(scalar: number) {\n    return this.multiplyScalar(1 / scalar);\n  }\n\n  min(v: Vector3) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    this.z = Math.min(this.z, v.z);\n    return this;\n  }\n\n  max(v: Vector3) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    this.z = Math.max(this.z, v.z);\n    return this;\n  }\n\n  clamp(min: Vector3, max: Vector3) {\n    // assumes min < max, componentwise\n    this.x = clamp(this.x, min.x, max.x);\n    this.y = clamp(this.y, min.y, max.y);\n    this.z = clamp(this.z, min.z, max.z);\n    return this;\n  }\n\n  clampScalar(minVal: number, maxVal: number) {\n    this.x = clamp(this.x, minVal, maxVal);\n    this.y = clamp(this.y, minVal, maxVal);\n    this.z = clamp(this.z, minVal, maxVal);\n    return this;\n  }\n\n  clampLength(min: number, max: number) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(\n      clamp(length, min, max)\n    );\n  }\n\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    this.z = Math.floor(this.z);\n    return this;\n  }\n\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    this.z = Math.ceil(this.z);\n    return this;\n  }\n\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    this.z = Math.round(this.z);\n    return this;\n  }\n\n  roundToZero() {\n    this.x = Math.trunc(this.x);\n    this.y = Math.trunc(this.y);\n    this.z = Math.trunc(this.z);\n    return this;\n  }\n\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    this.z = -this.z;\n    return this;\n  }\n\n  dot(v: Vector3) {\n    return this.x * v.x + this.y * v.y + this.z * v.z;\n  }\n\n  lengthSq() {\n    return this.x * this.x + this.y * this.y + this.z * this.z;\n  }\n\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n  }\n\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n  }\n\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n\n  setLength(length: number) {\n    return this.normalize().multiplyScalar(length);\n  }\n\n  lerp(v: Vector3, alpha: number) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.y - this.y) * alpha;\n    this.z += (v.z - this.z) * alpha;\n    return this;\n  }\n\n  lerpVectors(v1: Vector3, v2: Vector3, alpha: number) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    this.z = v1.z + (v2.z - v1.z) * alpha;\n    return this;\n  }\n\n  cross(v: Vector3) {\n    return this.crossVectors(this, v);\n  }\n\n  crossVectors(a: Vector3, b: Vector3) {\n    const ax = a.x;\n    const ay = a.y;\n    const az = a.z;\n    const bx = b.x;\n    const by = b.y;\n    const bz = b.z;\n    this.x = ay * bz - az * by;\n    this.y = az * bx - ax * bz;\n    this.z = ax * by - ay * bx;\n    return this;\n  }\n\n  /// 投影到 v 的向量\n  projectOnVector(v: Vector3) {\n    const denominator = v.lengthSq();\n    if (denominator === 0) {\n      return this.set(0, 0, 0);\n    }\n    const scalar = v.dot(this) / denominator;\n    return this.copy(v).multiplyScalar(scalar);\n  }\n\n  /// 相对于 v 的垂直分量\n  perpendOnVector(v: Vector3) {\n    _v3.copy(this).projectOnVector(v);\n    return this.sub(_v3);\n  }\n\n  projectOnPlane(planeNormal: Vector3) {\n    // _v3.copy(this).projectOnVector(planeNormal);\n    // return this.sub(_v3);\n    return this.perpendOnVector(planeNormal);\n  }\n\n  reflect(normal: Vector3) {\n    // reflect incident vector off plane orthogonal to normal\n    // normal is assumed to have unit length\n    return this.sub(_v3.copy(normal).multiplyScalar(2 * this.dot(normal)));\n  }\n\n  angleTo(v: Vector3) {\n    const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n    if (denominator === 0) {\n      return Math.PI / 2;\n    }\n    const theta = this.dot(v) / denominator;\n    // clamp, to handle numerical problems\n    return Math.acos(clamp(theta, -1, 1));\n  }\n\n  distanceTo(v: Vector3) {\n    return Math.sqrt(this.distanceToSquared(v));\n  }\n\n  distanceToSquared(v: Vector3) {\n    const dx = this.x - v.x;\n    const dy = this.y - v.y;\n    const dz = this.z - v.z;\n    return dx * dx + dy * dy + dz * dz;\n  }\n\n  manhattanDistanceTo(v: Vector3) {\n    return (\n      Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z)\n    );\n  }\n\n  // setFromSpherical(s) {\n  //   return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\n  // }\n\n  // setFromSphericalCoords(radius, phi, theta) {\n  //   const sinPhiRadius = Math.sin(phi) * radius;\n  //   this.x = sinPhiRadius * Math.sin(theta);\n  //   this.y = Math.cos(phi) * radius;\n  //   this.z = sinPhiRadius * Math.cos(theta);\n  //   return this;\n  // }\n\n  // setFromCylindrical(c) {\n  //   return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\n  // }\n\n  // setFromCylindricalCoords(radius, theta, y) {\n  //   this.x = radius * Math.sin(theta);\n  //   this.y = y;\n  //   this.z = radius * Math.cos(theta);\n  //   return this;\n  // }\n\n  setFromMatrix4Position(m: Matrix4) {\n    const e = m.value;\n    this.x = e[12];\n    this.y = e[13];\n    this.z = e[14];\n    return this;\n  }\n\n  setFromMatrix4Scale(m: Matrix4) {\n    const sx = this.setFromMatrix4Column(m, 0).length();\n    const sy = this.setFromMatrix4Column(m, 1).length();\n    const sz = this.setFromMatrix4Column(m, 2).length();\n    this.x = sx;\n    this.y = sy;\n    this.z = sz;\n    return this;\n  }\n\n  setFromMatrix4Column(m: Matrix4, index: number) {\n    return this.fromArray(m.value, index * 4);\n  }\n\n  setFromMatrix3Column(m: Matrix3, index: number) {\n    return this.fromArray(m.value, index * 3);\n  }\n\n  // setFromEuler(e: Euler) {\n  //   this.x = e.x;\n  //   this.y = e.y;\n  //   this.z = e.z;\n  //   return this;\n  // }\n\n  // setFromColor(c) {\n  //   this.x = c.r;\n  //   this.y = c.g;\n  //   this.z = c.b;\n  //   return this;\n  // }\n\n  equals(v: Vector3) {\n    return v.x === this.x && v.y === this.y && v.z === this.z;\n  }\n\n  fromArray(array: number[], offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    this.z = array[offset + 2];\n    return this;\n  }\n\n  toArray(array: number[] = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    array[offset + 2] = this.z;\n    return array;\n  }\n\n  // fromBufferAttribute(attribute: BufferAttribute, index: number) {\n  //   this.x = attribute.getX(index);\n  //   this.y = attribute.getY(index);\n  //   this.z = attribute.getZ(index);\n  //   return this;\n  // }\n\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    this.z = Math.random();\n    return this;\n  }\n\n  randomDirection() {\n    // https://mathworld.wolfram.com/SpherePointPicking.html\n    const theta = Math.random() * Math.PI * 2;\n    const u = Math.random() * 2 - 1;\n    const c = Math.sqrt(1 - u * u);\n    this.x = c * Math.cos(theta);\n    this.y = u;\n    this.z = c * Math.sin(theta);\n    return this;\n  }\n\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n    yield this.z;\n  }\n}\n\nexport class Vector4 {\n  x = 0;\n  y = 0;\n  z = 0;\n  w = 1;\n\n  constructor(x = 0, y = 0, z = 0, w = 1) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\n    this.w = w;\n  }\n\n  get width() {\n    return this.z;\n  }\n\n  set width(value) {\n    this.z = value;\n  }\n\n  get height() {\n    return this.w;\n  }\n\n  set height(value) {\n    this.w = value;\n  }\n\n  set(x = 0, y = 0, z = 0, w = 1) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\n    this.w = w;\n    return this;\n  }\n\n  setScalar(scalar: number) {\n    this.x = scalar;\n    this.y = scalar;\n    this.z = scalar;\n    this.w = scalar;\n    return this;\n  }\n\n  setX(x: number) {\n    this.x = x;\n    return this;\n  }\n\n  setY(y: number) {\n    this.y = y;\n    return this;\n  }\n\n  setZ(z: number) {\n    this.z = z;\n    return this;\n  }\n\n  setW(w: number) {\n    this.w = w;\n    return this;\n  }\n\n  setComponent(index: number, value: number) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      case 2:\n        this.z = value;\n        break;\n      case 3:\n        this.w = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n\n  getComponent(index: number) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      case 2:\n        return this.z;\n      case 3:\n        return this.w;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n\n  clone() {\n    return new Vector4(this.x, this.y, this.z, this.w);\n  }\n\n  copy(v: Vector4) {\n    this.x = v.x;\n    this.y = v.y;\n    this.z = v.z;\n    this.w = v.w;\n    return this;\n  }\n\n  add(v: Vector4) {\n    this.x += v.x;\n    this.y += v.y;\n    this.z += v.z;\n    this.w += v.w;\n    return this;\n  }\n\n  addScalar(s: number) {\n    this.x += s;\n    this.y += s;\n    this.z += s;\n    this.w += s;\n    return this;\n  }\n\n  addVectors(a: Vector4, b: Vector4) {\n    this.x = a.x + b.x;\n    this.y = a.y + b.y;\n    this.z = a.z + b.z;\n    this.w = a.w + b.w;\n    return this;\n  }\n\n  addScaledVector(v: Vector4, s: number) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    this.z += v.z * s;\n    this.w += v.w * s;\n    return this;\n  }\n\n  sub(v: Vector4) {\n    this.x -= v.x;\n    this.y -= v.y;\n    this.z -= v.z;\n    this.w -= v.w;\n    return this;\n  }\n\n  subScalar(s: number) {\n    this.x -= s;\n    this.y -= s;\n    this.z -= s;\n    this.w -= s;\n    return this;\n  }\n\n  subVectors(a: Vector4, b: Vector4) {\n    this.x = a.x - b.x;\n    this.y = a.y - b.y;\n    this.z = a.z - b.z;\n    this.w = a.w - b.w;\n    return this;\n  }\n\n  multiply(v: Vector4) {\n    this.x *= v.x;\n    this.y *= v.y;\n    this.z *= v.z;\n    this.w *= v.w;\n    return this;\n  }\n\n  multiplyScalar(scalar: number) {\n    this.x *= scalar;\n    this.y *= scalar;\n    this.z *= scalar;\n    this.w *= scalar;\n    return this;\n  }\n\n  applyMatrix4(m: Matrix4) {\n    const x = this.x;\n    const y = this.y;\n    const z = this.z;\n    const w = this.w;\n    const e = m.value;\n    this.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n    this.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n    this.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n    this.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n    return this;\n  }\n\n  divide(v: Vector4) {\n    this.x /= v.x;\n    this.y /= v.y;\n    this.z /= v.z;\n    this.w /= v.w;\n    return this;\n  }\n\n  divideScalar(scalar: number) {\n    return this.multiplyScalar(1 / scalar);\n  }\n\n  // setAxisAngleFromQuaternion(q: Quaternion) {\n  //   // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n  //   // q is assumed to be normalized\n  //   this.w = 2 * Math.acos(q.w);\n  //   const s = Math.sqrt(1 - q.w * q.w);\n  //   if (s < 0.0001) {\n  //     this.x = 1;\n  //     this.y = 0;\n  //     this.z = 0;\n  //   } else {\n  //     this.x = q.x / s;\n  //     this.y = q.y / s;\n  //     this.z = q.z / s;\n  //   }\n  //   return this;\n  // }\n\n  setAxisAngleFromRotationMatrix4(m: Matrix4) {\n    // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n    // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n    let angle, x, y, z; // variables for result\n    const epsilon = 0.01; // margin to allow for rounding errors\n    const epsilon2 = 0.1; // margin to distinguish between 0 and 180 degrees\n    const te = m.value;\n    const m11 = te[0];\n    const m12 = te[4];\n    const m13 = te[8];\n    const m21 = te[1];\n    const m22 = te[5];\n    const m23 = te[9];\n    const m31 = te[2];\n    const m32 = te[6];\n    const m33 = te[10];\n    if (\n      Math.abs(m12 - m21) < epsilon &&\n      Math.abs(m13 - m31) < epsilon &&\n      Math.abs(m23 - m32) < epsilon\n    ) {\n      // singularity found\n      // first check for identity matrix which must have +1 for all terms\n      // in leading diagonal and zero in other terms\n      if (\n        Math.abs(m12 + m21) < epsilon2 &&\n        Math.abs(m13 + m31) < epsilon2 &&\n        Math.abs(m23 + m32) < epsilon2 &&\n        Math.abs(m11 + m22 + m33 - 3) < epsilon2\n      ) {\n        // this singularity is identity matrix so angle = 0\n        this.set(1, 0, 0, 0);\n        return this; // zero angle, arbitrary axis\n      }\n      // otherwise this singularity is angle = 180\n      angle = Math.PI;\n      const xx = (m11 + 1) / 2;\n      const yy = (m22 + 1) / 2;\n      const zz = (m33 + 1) / 2;\n      const xy = (m12 + m21) / 4;\n      const xz = (m13 + m31) / 4;\n      const yz = (m23 + m32) / 4;\n      if (xx > yy && xx > zz) {\n        // m11 is the largest diagonal term\n        if (xx < epsilon) {\n          x = 0;\n          y = 0.707106781;\n          z = 0.707106781;\n        } else {\n          x = Math.sqrt(xx);\n          y = xy / x;\n          z = xz / x;\n        }\n      } else if (yy > zz) {\n        // m22 is the largest diagonal term\n        if (yy < epsilon) {\n          x = 0.707106781;\n          y = 0;\n          z = 0.707106781;\n        } else {\n          y = Math.sqrt(yy);\n          x = xy / y;\n          z = yz / y;\n        }\n      } else {\n        // m33 is the largest diagonal term so base result on this\n        if (zz < epsilon) {\n          x = 0.707106781;\n          y = 0.707106781;\n          z = 0;\n        } else {\n          z = Math.sqrt(zz);\n          x = xz / z;\n          y = yz / z;\n        }\n      }\n      this.set(x, y, z, angle);\n      return this; // return 180 deg rotation\n    }\n    // as we have reached here there are no singularities so we can handle normally\n    let s = Math.sqrt(\n      (m32 - m23) * (m32 - m23) +\n        (m13 - m31) * (m13 - m31) +\n        (m21 - m12) * (m21 - m12)\n    ); // used to normalize\n    if (Math.abs(s) < 0.001) s = 1;\n    // prevent divide by zero, should not happen if matrix is orthogonal and should be\n    // caught by singularity test above, but I've left it in just in case\n    this.x = (m32 - m23) / s;\n    this.y = (m13 - m31) / s;\n    this.z = (m21 - m12) / s;\n    this.w = Math.acos((m11 + m22 + m33 - 1) / 2);\n    return this;\n  }\n\n  setFromMatrix4Position(m: Matrix4) {\n    const e = m.value;\n    this.x = e[12];\n    this.y = e[13];\n    this.z = e[14];\n    this.w = e[15];\n    return this;\n  }\n\n  min(v: Vector4) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    this.z = Math.min(this.z, v.z);\n    this.w = Math.min(this.w, v.w);\n    return this;\n  }\n\n  max(v: Vector4) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    this.z = Math.max(this.z, v.z);\n    this.w = Math.max(this.w, v.w);\n    return this;\n  }\n\n  clamp(min: Vector4, max: Vector4) {\n    // assumes min < max, componentwise\n    this.x = clamp(this.x, min.x, max.x);\n    this.y = clamp(this.y, min.y, max.y);\n    this.z = clamp(this.z, min.z, max.z);\n    this.w = clamp(this.w, min.w, max.w);\n    return this;\n  }\n\n  clampScalar(minVal: number, maxVal: number) {\n    this.x = clamp(this.x, minVal, maxVal);\n    this.y = clamp(this.y, minVal, maxVal);\n    this.z = clamp(this.z, minVal, maxVal);\n    this.w = clamp(this.w, minVal, maxVal);\n    return this;\n  }\n\n  clampLength(min: number, max: number) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(\n      clamp(length, min, max)\n    );\n  }\n\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    this.z = Math.floor(this.z);\n    this.w = Math.floor(this.w);\n    return this;\n  }\n\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    this.z = Math.ceil(this.z);\n    this.w = Math.ceil(this.w);\n    return this;\n  }\n\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    this.z = Math.round(this.z);\n    this.w = Math.round(this.w);\n    return this;\n  }\n\n  roundToZero() {\n    this.x = Math.trunc(this.x);\n    this.y = Math.trunc(this.y);\n    this.z = Math.trunc(this.z);\n    this.w = Math.trunc(this.w);\n    return this;\n  }\n\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    this.z = -this.z;\n    this.w = -this.w;\n    return this;\n  }\n\n  dot(v: Vector4) {\n    return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n  }\n\n  lengthSq() {\n    return (\n      this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w\n    );\n  }\n\n  length() {\n    return Math.sqrt(\n      this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w\n    );\n  }\n\n  manhattanLength() {\n    return (\n      Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w)\n    );\n  }\n\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n\n  setLength(length: number) {\n    return this.normalize().multiplyScalar(length);\n  }\n\n  /// 投影到 v 的向量\n  projectOnVector(v: Vector4) {\n    const denominator = v.lengthSq();\n    if (denominator === 0) {\n      return this.set(0, 0, 0, 1);\n    }\n    const scalar = v.dot(this) / denominator;\n    return this.copy(v).multiplyScalar(scalar);\n  }\n\n  // /// 相对于 v 的垂直分量\n  // perpendOnVector(v: Vector4) {\n  //   _v4.copy(this).projectOnVector(v);\n  //   return this.sub(_v4);\n  // }\n\n  lerp(v: Vector4, alpha: number) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.y - this.y) * alpha;\n    this.z += (v.z - this.z) * alpha;\n    this.w += (v.w - this.w) * alpha;\n    return this;\n  }\n\n  lerpVectors(v1: Vector4, v2: Vector4, alpha: number) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    this.z = v1.z + (v2.z - v1.z) * alpha;\n    this.w = v1.w + (v2.w - v1.w) * alpha;\n    return this;\n  }\n\n  equals(v: Vector4) {\n    return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n  }\n\n  fromArray(array: number[], offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    this.z = array[offset + 2];\n    this.w = array[offset + 3];\n    return this;\n  }\n\n  toArray(array: number[] = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    array[offset + 2] = this.z;\n    array[offset + 3] = this.w;\n    return array;\n  }\n\n  // fromBufferAttribute(attribute: BufferAttribute, index: number) {\n  //   this.x = attribute.getX(index);\n  //   this.y = attribute.getY(index);\n  //   this.z = attribute.getZ(index);\n  //   this.w = attribute.getW(index);\n  //   return this;\n  // }\n\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    this.z = Math.random();\n    this.w = Math.random();\n    return this;\n  }\n\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n    yield this.z;\n    yield this.w;\n  }\n}\n\nconst _v2 = new Vector2();\nconst _v3 = new Vector3();\nconst _v4 = new Vector4();\n// const _quaternion = new Quaternion();\n","// Unpack entities lookup where the numbers are in radix 32 to reduce the size\n// entity mapping courtesy of tinymce\nconst namedEntities = createNamedToNumberedLookup(\n  \"50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,\" +\n    \"5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,\" +\n    \"5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,\" +\n    \"5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,\" +\n    \"68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,\" +\n    \"6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,\" +\n    \"6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,\" +\n    \"75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,\" +\n    \"7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,\" +\n    \"7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,\" +\n    \"sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,\" +\n    \"st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,\" +\n    \"t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,\" +\n    \"tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,\" +\n    \"u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,\" +\n    \"81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,\" +\n    \"8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,\" +\n    \"8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,\" +\n    \"8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,\" +\n    \"8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,\" +\n    \"nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,\" +\n    \"rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,\" +\n    \"Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,\" +\n    \"80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,\" +\n    \"811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro\",\n  32\n);\n\nfunction createNamedToNumberedLookup(itemsString: string, radix = 10) {\n  const lookup = {} as Record<string, string>;\n  const items = itemsString.split(\",\");\n  // Map from named to numbered entities.\n  for (let i = 0; i < items.length; i += 2) {\n    const entity = \"&\" + items[i + 1] + \";\";\n    const base10 = parseInt(items[i], radix);\n    lookup[entity] = \"&#\" + base10 + \";\";\n  }\n  // FF and IE need to create a regex from hex values ie &nbsp; == \\xa0\n  lookup[\"\\\\xa0\"] = \"&#160;\";\n  return lookup;\n}\n\nfunction format(str: string, args: Record<string, string | number>) {\n  const keys = Object.keys(args);\n  for (let i = 0; i < keys.length; i++) {\n    str = str.replace(\n      new RegExp(\"{\" + keys[i] + \"}\", \"gi\"),\n      \"\" + args[keys[i]]\n    );\n  }\n  return str;\n}\n\nfunction randomString(holder: { [x: string]: any }) {\n  let randomstring, i;\n  if (!holder) {\n    throw new Error(\n      \"cannot create a random attribute name for an undefined object\"\n    );\n  }\n  const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\";\n  randomstring = \"\";\n  do {\n    randomstring = \"\";\n    for (i = 0; i < 12; i++) {\n      randomstring += chars[Math.floor(Math.random() * chars.length)];\n    }\n  } while (holder[randomstring]);\n  return randomstring;\n}\n\n// helper function to map canvas-textAlign to svg-textAnchor\nfunction getTextAnchor(textAlign: string) {\n  // TODO: support rtl languages\n  const mapping = {\n    left: \"start\",\n    right: \"end\",\n    center: \"middle\",\n    start: \"start\",\n    end: \"end\"\n  } as Record<string, string>;\n  return mapping[textAlign] || mapping.start;\n}\n\n// helper function to map canvas-textBaseline to svg-dominantBaseline\nfunction getDominantBaseline(textBaseline: string) {\n  // INFO: not supported in all browsers\n  const mapping = {\n    alphabetic: \"alphabetic\",\n    hanging: \"hanging\",\n    top: \"text-before-edge\",\n    bottom: \"text-after-edge\",\n    middle: \"central\"\n  } as Record<string, string>;\n  return mapping[textBaseline] || mapping.alphabetic;\n}\n\n// Some basic mappings for attributes and default values.\nconst STYLES: Record<\n  string,\n  {\n    svgAttr?: string; // corresponding svg attribute\n    canvas?: string | number | string[] | number[]; // canvas default\n    svg?: string | number | null; // svg default\n    apply?: string; // apply on stroke() or fill()\n  }\n> = {\n  strokeStyle: {\n    svgAttr: \"stroke\",\n    canvas: \"#000000\",\n    svg: \"none\",\n    apply: \"stroke\"\n  },\n  fillStyle: {\n    svgAttr: \"fill\",\n    canvas: \"#000000\",\n    svg: null, // svg default is black, but we need to special case this to handle canvas stroke without fill\n    apply: \"fill\"\n  },\n  lineCap: {\n    svgAttr: \"stroke-linecap\",\n    canvas: \"butt\",\n    svg: \"butt\",\n    apply: \"stroke\"\n  },\n  lineJoin: {\n    svgAttr: \"stroke-linejoin\",\n    canvas: \"miter\",\n    svg: \"miter\",\n    apply: \"stroke\"\n  },\n  miterLimit: {\n    svgAttr: \"stroke-miterlimit\",\n    canvas: 10,\n    svg: 4,\n    apply: \"stroke\"\n  },\n  lineWidth: {\n    svgAttr: \"stroke-width\",\n    canvas: 1,\n    svg: 1,\n    apply: \"stroke\"\n  },\n  globalAlpha: {\n    svgAttr: \"opacity\",\n    canvas: 1,\n    svg: 1,\n    apply: \"fill stroke\"\n  },\n  font: {\n    // font converts to multiple svg attributes, there is custom logic for this\n    canvas: \"10px sans-serif\"\n  },\n  shadowColor: {\n    canvas: \"#000000\"\n  },\n  shadowOffsetX: {\n    canvas: 0\n  },\n  shadowOffsetY: {\n    canvas: 0\n  },\n  shadowBlur: {\n    canvas: 0\n  },\n  textAlign: {\n    canvas: \"start\"\n  },\n  textBaseline: {\n    canvas: \"alphabetic\"\n  },\n  lineDash: {\n    svgAttr: \"stroke-dasharray\",\n    canvas: [],\n    svg: null,\n    apply: \"stroke\"\n  },\n  lineDashOffset: {\n    svgAttr: \"stroke-dashoffset\",\n    canvas: 0,\n    svg: 0,\n    apply: \"stroke\"\n  }\n};\n\nexport class CustomCanvasGradient {\n  __root: SVGElement;\n  __ctx: CustomCanvasContext;\n  constructor(gradientNode: SVGElement, ctx: CustomCanvasContext) {\n    this.__root = gradientNode;\n    this.__ctx = ctx;\n  }\n\n  /**\n   * Adds a color stop to the gradient root\n   */\n  addColorStop(offset: number, color: string) {\n    const stop = this.__ctx.__createElement(\"stop\");\n    stop.setAttribute(\"offset\", \"\" + offset);\n    if (color.indexOf(\"rgba\") !== -1) {\n      // separate alpha value, since webkit can't handle it\n      const regex =\n        /rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?\\.?\\d*)\\s*\\)/gi;\n      const matches = regex.exec(color);\n      if (matches) {\n        stop.setAttribute(\n          \"stop-color\",\n          format(\"rgb({r},{g},{b})\", {\n            r: matches[1],\n            g: matches[2],\n            b: matches[3]\n          })\n        );\n        stop.setAttribute(\"stop-opacity\", matches[4]);\n      }\n    } else {\n      stop.setAttribute(\"stop-color\", color);\n    }\n    this.__root.appendChild(stop);\n  }\n}\n\nexport class CustomCanvasPattern {\n  __root: SVGElement;\n  __ctx: CustomCanvasContext;\n  constructor(pattern: SVGElement, ctx: CustomCanvasContext) {\n    this.__root = pattern;\n    this.__ctx = ctx;\n  }\n}\n\n/**\n * The mock canvas context\n */\nexport class CustomCanvasContext {\n  [index: keyof typeof STYLES]: any;\n\n  __document: Document = document;\n  __canvas: HTMLCanvasElement;\n  __ctx: CanvasRenderingContext2D;\n  width: number;\n  height: number;\n  __styleStack: Record<string, any>[];\n  __groupStack: SVGElement[];\n  __rootSVG: SVGElement;\n  __ids: Record<string, string>;\n  __SVGdefs: SVGDefsElement;\n  __currentElement: SVGElement;\n  __currentElementsToStyle: {\n    element: SVGElement;\n    children: SVGElement[];\n  } | null = null;\n\n  constructor({\n    canvas,\n    width = 500,\n    height = 500\n  }: {\n    canvas?: HTMLCanvasElement;\n    width?: number;\n    height?: number;\n  }) {\n    if (canvas) {\n      this.__canvas = canvas;\n      this.__ctx = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n      this.width = canvas.width;\n      this.height = canvas.height;\n    } else {\n      this.__canvas = this.__document.createElement(\"canvas\");\n      this.__ctx = this.__canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n      this.width = width;\n      this.height = height;\n    }\n\n    this.__setDefaultStyles();\n    this.__styleStack = [this.__getStyleState()];\n    this.__groupStack = [];\n\n    this.__rootSVG = this.__document.createElementNS(\n      \"http://www.w3.org/2000/svg\",\n      \"svg\"\n    );\n    this.__rootSVG.setAttribute(\"version\", \"1.1\");\n    this.__rootSVG.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n    this.__rootSVG.setAttributeNS(\n      \"http://www.w3.org/2000/xmlns/\",\n      \"xmlns:xlink\",\n      \"http://www.w3.org/1999/xlink\"\n    );\n    this.__rootSVG.setAttribute(\"width\", \"\" + this.width);\n    this.__rootSVG.setAttribute(\"height\", \"\" + this.height);\n\n    // make sure we don't generate the same ids in defs\n    this.__ids = {};\n\n    // defs tag\n    this.__SVGdefs = this.__document.createElementNS(\n      \"http://www.w3.org/2000/svg\",\n      \"defs\"\n    );\n    this.__rootSVG.appendChild(this.__SVGdefs);\n\n    // also add a group child. the svg element can't use the transform attribute\n    this.__currentElement = this.__document.createElementNS(\n      \"http://www.w3.org/2000/svg\",\n      \"g\"\n    );\n    this.__rootSVG.appendChild(this.__currentElement);\n  }\n\n  /**\n   * Applies default canvas styles to the context\n   */\n  __setDefaultStyles() {\n    // default 2d canvas context properties see: http://www.w3.org/TR/2dcontext/\n    const keys = Object.keys(STYLES);\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      this[key] = STYLES[key].canvas;\n    }\n  }\n\n  /**\n   * Gets the current style state\n   */\n  __getStyleState() {\n    const styleState: Record<string, any> = {};\n    const keys = Object.keys(STYLES);\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      styleState[key] = this[key];\n    }\n    return styleState;\n  }\n\n  /**\n   * Applies styles on restore\n   */\n  __applyStyleState(styleState: Record<string, any>) {\n    const keys = Object.keys(styleState);\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      this[key] = styleState[key];\n    }\n  }\n\n  /**\n   * Creates the specified svg element\n   */\n  __createElement(\n    elementName: string,\n    properties: Record<string, any> = {},\n    resetFill = false\n  ) {\n    const element = this.__document.createElementNS(\n      \"http://www.w3.org/2000/svg\",\n      elementName\n    );\n    const keys = Object.keys(properties);\n    if (resetFill) {\n      // if fill or stroke is not specified, the svg element should not display. By default SVG's fill is black.\n      element.setAttribute(\"fill\", \"none\");\n      element.setAttribute(\"stroke\", \"none\");\n    }\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      element.setAttribute(key, properties[key]);\n    }\n    return element;\n  }\n\n  /**\n   * Apples the current styles to the current SVG element. On \"CustomCanvasContext.fill\" or \"CustomCanvasContext.stroke\"\n   */\n  __applyStyleToCurrentElement(type: \"fill\" | \"stroke\") {\n    let currentElement = this.__currentElement;\n    const currentStyleGroup = this.__currentElementsToStyle;\n    if (currentStyleGroup) {\n      currentElement.setAttribute(type, \"\");\n      currentElement = currentStyleGroup.element;\n      currentStyleGroup.children.forEach((node: SVGElement) => {\n        node.setAttribute(type, \"\");\n      });\n    }\n\n    const keys = Object.keys(STYLES);\n    for (let i = 0; i < keys.length; i++) {\n      const style = STYLES[keys[i]];\n      const value = this[keys[i]];\n      if (style.apply) {\n        if (value instanceof CustomCanvasPattern) {\n          if (value.__ctx) {\n            // copy over defs\n            while (value.__ctx.__SVGdefs.childNodes.length) {\n              const id = (\n                value.__ctx.__SVGdefs.childNodes[0] as SVGElement\n              ).getAttribute(\"id\") as string;\n              this.__ids[id] = id;\n              this.__SVGdefs.appendChild(value.__ctx.__SVGdefs.childNodes[0]);\n            }\n          }\n          currentElement.setAttribute(\n            style.apply,\n            format(\"url(#{id})\", {\n              id: value.__root.getAttribute(\"id\") as string\n            })\n          );\n        } else if (value instanceof CustomCanvasGradient) {\n          currentElement.setAttribute(\n            style.apply,\n            format(\"url(#{id})\", {\n              id: value.__root.getAttribute(\"id\") as string\n            })\n          );\n        } else if (style.apply.indexOf(type) !== -1 && style.svg !== value) {\n          if (\n            (style.svgAttr === \"stroke\" || style.svgAttr === \"fill\") &&\n            value.indexOf(\"rgba\") !== -1\n          ) {\n            // separate alpha value, since illustrator can't handle it\n            const regex =\n              /rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?\\.?\\d*)\\s*\\)/gi;\n            const matches = regex.exec(value);\n            if (matches) {\n              currentElement.setAttribute(\n                style.svgAttr,\n                format(\"rgb({r},{g},{b})\", {\n                  r: matches[1],\n                  g: matches[2],\n                  b: matches[3]\n                })\n              );\n              // should take globalAlpha here\n              let opacity = parseFloat(matches[4]);\n              const globalAlpha = this.globalAlpha;\n              if (globalAlpha != null) {\n                opacity *= globalAlpha;\n              }\n              currentElement.setAttribute(\n                style.svgAttr + \"-opacity\",\n                \"\" + opacity\n              );\n            }\n          } else {\n            let attr = style.svgAttr;\n            if (keys[i] === \"globalAlpha\") {\n              attr = type + \"-\" + style.svgAttr;\n              if (currentElement.getAttribute(attr)) {\n                // fill-opacity or stroke-opacity has already been set by stroke or fill.\n                continue;\n              }\n            }\n            //otherwise only update attribute if right type, and not svg default\n            if (attr) currentElement.setAttribute(attr, value);\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Will return the closest group or svg node. May return the current element.\n   */\n  __closestGroupOrSvg(node?: SVGElement | null): SVGElement {\n    node = node || this.__currentElement;\n    if (node.nodeName === \"g\" || node.nodeName === \"svg\") {\n      return node;\n    } else {\n      return this.__closestGroupOrSvg(node.parentNode as unknown as SVGElement);\n    }\n  }\n\n  /**\n   * Returns the serialized value of the svg so far\n   * @param fixNamedEntities - Standalone SVG doesn't support named entities, which document.createTextNode encodes.\n   *                           If true, we attempt to find all named entities and encode it as a numeric entity.\n   * @return serialized svg\n   */\n  getSerializedSvg(fixNamedEntities: boolean) {\n    let serialized = new XMLSerializer().serializeToString(this.__rootSVG);\n\n    // IE search for a duplicate xmnls because they didn't implement setAttributeNS correctly\n    const xmlns =\n      /xmlns=\"http:\\/\\/www\\.w3\\.org\\/2000\\/svg\".+xmlns=\"http:\\/\\/www\\.w3\\.org\\/2000\\/svg/gi;\n    if (xmlns.test(serialized)) {\n      serialized = serialized.replace(\n        'xmlns=\"http://www.w3.org/2000/svg',\n        'xmlns:xlink=\"http://www.w3.org/1999/xlink'\n      );\n    }\n\n    if (fixNamedEntities) {\n      const keys = Object.keys(namedEntities);\n      //loop over each named entity and replace with the proper equivalent.\n      for (let i = 0, length = keys.length; i < length; i++) {\n        const key = keys[i];\n        const value = namedEntities[key];\n        const regexp = new RegExp(key, \"gi\");\n        if (regexp.test(serialized)) {\n          serialized = serialized.replace(regexp, value);\n        }\n      }\n    }\n\n    return serialized;\n  }\n\n  /**\n   * Returns the root svg\n   */\n  getSvg() {\n    return this.__rootSVG;\n  }\n\n  /**\n   * Will generate a group tag\n   */\n  save() {\n    const group = this.__createElement(\"g\");\n    const parent = this.__closestGroupOrSvg();\n    this.__groupStack.push(parent);\n    parent.appendChild(group);\n    this.__currentElement = group;\n    this.__styleStack.push(this.__getStyleState());\n  }\n\n  /**\n   * Sets current element to parent, or just root if already root\n   */\n  restore() {\n    this.__currentElementsToStyle = null;\n    const currentElement = this.__groupStack.pop();\n    // Clearing canvas will make the poped group invalid, currentElement is set to the root group node.\n    if (!currentElement) {\n      this.__currentElement = this.__rootSVG\n        .childNodes[1] as unknown as SVGElement;\n    } else {\n      this.__currentElement = currentElement;\n    }\n    const state = this.__styleStack.pop();\n    if (state) {\n      this.__applyStyleState(state);\n    }\n  }\n\n  /**\n   * Helper method to add transform\n   */\n  __addTransform(t: string) {\n    // if the current element has siblings, add another group\n    const parent = this.__closestGroupOrSvg();\n    if (parent.childNodes.length > 0) {\n      if (this.__currentElement.nodeName === \"path\") {\n        if (!this.__currentElementsToStyle)\n          this.__currentElementsToStyle = { element: parent, children: [] };\n        this.__currentElementsToStyle.children.push(this.__currentElement);\n        this.__applyCurrentDefaultPath();\n      }\n      const group = this.__createElement(\"g\");\n      parent.appendChild(group);\n      this.__currentElement = group;\n    }\n\n    let transform = this.__currentElement.getAttribute(\"transform\");\n    if (transform) {\n      transform += \" \";\n    } else {\n      transform = \"\";\n    }\n    transform += t;\n    this.__currentElement.setAttribute(\"transform\", transform);\n  }\n\n  /**\n   *  scales the current element\n   */\n  scale(x: number, y?: number) {\n    if (y === undefined) {\n      y = x;\n    }\n    this.__addTransform(format(\"scale({x},{y})\", { x: x, y: y }));\n  }\n\n  /**\n   * rotates the current element\n   */\n  rotate(angle: number) {\n    const degrees = (angle * 180) / Math.PI;\n    this.__addTransform(\n      format(\"rotate({angle},{cx},{cy})\", {\n        angle: degrees,\n        cx: 0,\n        cy: 0\n      })\n    );\n  }\n\n  /**\n   * translates the current element\n   */\n  translate(x: number, y: number) {\n    this.__addTransform(format(\"translate({x},{y})\", { x: x, y: y }));\n  }\n\n  /**\n   * applies a transform to the current element\n   */\n  transform(a: number, b: number, c: number, d: number, e: number, f: number) {\n    this.__addTransform(\n      format(\"matrix({a},{b},{c},{d},{e},{f})\", {\n        a: a,\n        b: b,\n        c: c,\n        d: d,\n        e: e,\n        f: f\n      })\n    );\n  }\n\n  /**\n   * Create a new Path Element\n   */\n  beginPath() {\n    // Note that there is only one current default path, it is not part of the drawing state.\n    // See also: https://html.spec.whatwg.org/multipage/scripting.html#current-default-path\n    this.__currentDefaultPath = \"\";\n    this.__currentPosition = {};\n\n    const path = this.__createElement(\"path\", {}, true);\n    const parent = this.__closestGroupOrSvg();\n    parent.appendChild(path);\n    this.__currentElement = path;\n  }\n\n  /**\n   * Helper function to apply currentDefaultPath to current path element\n   */\n  __applyCurrentDefaultPath() {\n    const currentElement = this.__currentElement;\n    if (currentElement.nodeName === \"path\") {\n      currentElement.setAttribute(\"d\", this.__currentDefaultPath);\n    } else {\n      // console.error(\n      //   \"Attempted to apply path command to node\",\n      //   currentElement.nodeName\n      // );\n    }\n  }\n\n  /**\n   * Helper function to add path command\n   */\n  __addPathCommand(command: string) {\n    this.__currentDefaultPath += \" \";\n    this.__currentDefaultPath += command;\n  }\n\n  /**\n   * Adds the move command to the current path element,\n   * if the currentPathElement is not empty create a new path element\n   */\n  moveTo(x: number, y: number) {\n    if (this.__currentElement.nodeName !== \"path\") {\n      this.beginPath();\n    }\n\n    // creates a new subpath with the given point\n    this.__currentPosition = { x: x, y: y };\n    this.__addPathCommand(format(\"M {x} {y}\", this.__currentPosition));\n  }\n\n  /**\n   * Closes the current path\n   */\n  closePath() {\n    if (this.__currentDefaultPath) {\n      this.__addPathCommand(\"Z\");\n    }\n  }\n\n  /**\n   * Adds a line to command\n   */\n  lineTo(x: number, y: number) {\n    this.__currentPosition = { x: x, y: y };\n    if (this.__currentDefaultPath.indexOf(\"M\") > -1) {\n      this.__addPathCommand(format(\"L {x} {y}\", this.__currentPosition));\n    } else {\n      this.__addPathCommand(format(\"M {x} {y}\", this.__currentPosition));\n    }\n  }\n\n  /**\n   * Add a bezier command\n   */\n  bezierCurveTo(\n    cp1x: number,\n    cp1y: number,\n    cp2x: number,\n    cp2y: number,\n    x: number,\n    y: number\n  ) {\n    this.__currentPosition = { x: x, y: y };\n    this.__addPathCommand(\n      format(\"C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}\", {\n        cp1x: cp1x,\n        cp1y: cp1y,\n        cp2x: cp2x,\n        cp2y: cp2y,\n        x: x,\n        y: y\n      })\n    );\n  }\n\n  /**\n   * Adds a quadratic curve to command\n   */\n  quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n    this.__currentPosition = { x: x, y: y };\n    this.__addPathCommand(\n      format(\"Q {cpx} {cpy} {x} {y}\", { cpx: cpx, cpy: cpy, x: x, y: y })\n    );\n  }\n\n  /**\n   * Return a new normalized vector of given vector\n   */\n  normalize(vector: [number, number]) {\n    const len = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]);\n    return [vector[0] / len, vector[1] / len];\n  }\n\n  /**\n   * Adds the arcTo to the current path\n   *\n   * @see http://www.w3.org/TR/2015/WD-2dcontext-20150514/#dom-context-2d-arcto\n   */\n  arcTo(x1: number, y1: number, x2: number, y2: number, radius: number) {\n    // Let the point (x0, y0) be the last point in the subpath.\n    const x0 = this.__currentPosition && this.__currentPosition.x;\n    const y0 = this.__currentPosition && this.__currentPosition.y;\n\n    // First ensure there is a subpath for (x1, y1).\n    if (typeof x0 == \"undefined\" || typeof y0 == \"undefined\") {\n      return;\n    }\n\n    // Negative values for radius must cause the implementation to throw an IndexSizeError exception.\n    if (radius < 0) {\n      throw new Error(\n        \"IndexSizeError: The radius provided (\" + radius + \") is negative.\"\n      );\n    }\n\n    // If the point (x0, y0) is equal to the point (x1, y1),\n    // or if the point (x1, y1) is equal to the point (x2, y2),\n    // or if the radius radius is zero,\n    // then the method must add the point (x1, y1) to the subpath,\n    // and connect that point to the previous point (x0, y0) by a straight line.\n    if ((x0 === x1 && y0 === y1) || (x1 === x2 && y1 === y2) || radius === 0) {\n      this.lineTo(x1, y1);\n      return;\n    }\n\n    // Otherwise, if the points (x0, y0), (x1, y1), and (x2, y2) all lie on a single straight line,\n    // then the method must add the point (x1, y1) to the subpath,\n    // and connect that point to the previous point (x0, y0) by a straight line.\n    const unit_vec_p1_p0 = this.normalize([x0 - x1, y0 - y1]);\n    const unit_vec_p1_p2 = this.normalize([x2 - x1, y2 - y1]);\n    if (\n      unit_vec_p1_p0[0] * unit_vec_p1_p2[1] ===\n      unit_vec_p1_p0[1] * unit_vec_p1_p2[0]\n    ) {\n      this.lineTo(x1, y1);\n      return;\n    }\n\n    // Otherwise, let The Arc be the shortest arc given by circumference of the circle that has radius radius,\n    // and that has one point tangent to the half-infinite line that crosses the point (x0, y0) and ends at the point (x1, y1),\n    // and that has a different point tangent to the half-infinite line that ends at the point (x1, y1), and crosses the point (x2, y2).\n    // The points at which this circle touches these two lines are called the start and end tangent points respectively.\n\n    // note that both vectors are unit vectors, so the length is 1\n    const cos =\n      unit_vec_p1_p0[0] * unit_vec_p1_p2[0] +\n      unit_vec_p1_p0[1] * unit_vec_p1_p2[1];\n    const theta = Math.acos(Math.abs(cos));\n\n    // Calculate origin\n    const unit_vec_p1_origin = this.normalize([\n      unit_vec_p1_p0[0] + unit_vec_p1_p2[0],\n      unit_vec_p1_p0[1] + unit_vec_p1_p2[1]\n    ]);\n    const len_p1_origin = radius / Math.sin(theta / 2);\n    const x = x1 + len_p1_origin * unit_vec_p1_origin[0];\n    const y = y1 + len_p1_origin * unit_vec_p1_origin[1];\n\n    // Calculate start angle and end angle\n    // rotate 90deg clockwise (note that y axis points to its down)\n    const unit_vec_origin_start_tangent = [\n      -unit_vec_p1_p0[1],\n      unit_vec_p1_p0[0]\n    ];\n    // rotate 90deg counter clockwise (note that y axis points to its down)\n    const unit_vec_origin_end_tangent = [unit_vec_p1_p2[1], -unit_vec_p1_p2[0]];\n    const getAngle = function (vector: number[]) {\n      // get angle (clockwise) between vector and (1, 0)\n      const x = vector[0];\n      const y = vector[1];\n      if (y >= 0) {\n        // note that y axis points to its down\n        return Math.acos(x);\n      } else {\n        return -Math.acos(x);\n      }\n    };\n    const startAngle = getAngle(unit_vec_origin_start_tangent);\n    const endAngle = getAngle(unit_vec_origin_end_tangent);\n\n    // Connect the point (x0, y0) to the start tangent point by a straight line\n    this.lineTo(\n      x + unit_vec_origin_start_tangent[0] * radius,\n      y + unit_vec_origin_start_tangent[1] * radius\n    );\n\n    // Connect the start tangent point to the end tangent point by arc\n    // and adding the end tangent point to the subpath.\n    this.arc(x, y, radius, startAngle, endAngle);\n  }\n\n  /**\n   * Sets the stroke property on the current element\n   */\n  stroke() {\n    if (this.__currentElement.nodeName === \"path\") {\n      this.__currentElement.setAttribute(\"paint-order\", \"fill stroke markers\");\n    }\n    this.__applyCurrentDefaultPath();\n    this.__applyStyleToCurrentElement(\"stroke\");\n  }\n\n  /**\n   * Sets fill properties on the current element\n   */\n  fill() {\n    if (this.__currentElement.nodeName === \"path\") {\n      this.__currentElement.setAttribute(\"paint-order\", \"stroke fill markers\");\n    }\n    this.__applyCurrentDefaultPath();\n    this.__applyStyleToCurrentElement(\"fill\");\n  }\n\n  /**\n   *  Adds a rectangle to the path.\n   */\n  rect(x: number, y: number, width: number, height: number) {\n    if (this.__currentElement.nodeName !== \"path\") {\n      this.beginPath();\n    }\n    this.moveTo(x, y);\n    this.lineTo(x + width, y);\n    this.lineTo(x + width, y + height);\n    this.lineTo(x, y + height);\n    this.lineTo(x, y);\n    this.closePath();\n  }\n\n  /**\n   * adds a rectangle element\n   */\n  fillRect(x: number, y: number, width: number, height: number) {\n    const rect = this.__createElement(\n      \"rect\",\n      {\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      },\n      true\n    );\n    const parent = this.__closestGroupOrSvg();\n    parent.appendChild(rect);\n    this.__currentElement = rect;\n    this.__applyStyleToCurrentElement(\"fill\");\n  }\n\n  /**\n   * Draws a rectangle with no fill\n   */\n  strokeRect(x: number, y: number, width: number, height: number) {\n    const rect = this.__createElement(\n      \"rect\",\n      {\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      },\n      true\n    );\n    const parent = this.__closestGroupOrSvg();\n    parent.appendChild(rect);\n    this.__currentElement = rect;\n    this.__applyStyleToCurrentElement(\"stroke\");\n  }\n\n  /**\n   * Clear entire canvas:\n   * 1. save current transforms\n   * 2. remove all the childNodes of the root g element\n   */\n  __clearCanvas() {\n    const current = this.__closestGroupOrSvg();\n    const transform = current.getAttribute(\"transform\");\n    const rootGroup = this.__rootSVG.childNodes[1] as SVGElement;\n    const childNodes = rootGroup.childNodes;\n    for (let i = childNodes.length - 1; i >= 0; i--) {\n      if (childNodes[i]) {\n        rootGroup.removeChild(childNodes[i]);\n      }\n    }\n    this.__currentElement = rootGroup;\n    // reset __groupStack as all the child group nodes are all removed.\n    this.__groupStack = [];\n    if (transform) {\n      this.__addTransform(transform);\n    }\n  }\n\n  /**\n   * \"Clears\" a canvas by just drawing a white rectangle in the current group.\n   */\n  clearRect(x: number, y: number, width: number, height: number) {\n    // clear entire canvas\n    if (x === 0 && y === 0 && width === this.width && height === this.height) {\n      this.__clearCanvas();\n      return;\n    }\n    const parent = this.__closestGroupOrSvg();\n    const rect = this.__createElement(\n      \"rect\",\n      {\n        x: x,\n        y: y,\n        width: width,\n        height: height,\n        fill: \"#FFFFFF\"\n      },\n      true\n    );\n    parent.appendChild(rect);\n  }\n\n  /**\n   * Adds a linear gradient to a defs tag.\n   * Returns a canvas gradient object that has a reference to it's parent def\n   */\n  createLinearGradient(x1: number, y1: number, x2: number, y2: number) {\n    const grad = this.__createElement(\n      \"linearGradient\",\n      {\n        id: randomString(this.__ids),\n        x1: x1 + \"px\",\n        x2: x2 + \"px\",\n        y1: y1 + \"px\",\n        y2: y2 + \"px\",\n        gradientUnits: \"userSpaceOnUse\"\n      },\n      false\n    );\n    this.__SVGdefs.appendChild(grad);\n    return new CustomCanvasGradient(grad as unknown as SVGElement, this);\n  }\n\n  /**\n   * Adds a radial gradient to a defs tag.\n   * Returns a canvas gradient object that has a reference to it's parent def\n   */\n  createRadialGradient(\n    x0: number,\n    y0: number,\n    r0: number,\n    x1: number,\n    y1: number,\n    r1: number\n  ) {\n    const grad = this.__createElement(\n      \"radialGradient\",\n      {\n        id: randomString(this.__ids),\n        cx: x1 + \"px\",\n        cy: y1 + \"px\",\n        r: r1 + \"px\",\n        fx: x0 + \"px\",\n        fy: y0 + \"px\",\n        gradientUnits: \"userSpaceOnUse\"\n      },\n      false\n    );\n    this.__SVGdefs.appendChild(grad);\n    return new CustomCanvasGradient(grad as unknown as SVGElement, this);\n  }\n\n  /**\n   * Parses the font string and returns svg mapping\n   */\n  __parseFont() {\n    const regex =\n      /^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:%|in|[cem]m|ex|p[CustomCanvasContext]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:%|in|[cem]m|ex|p[CustomCanvasContext])))?\\s*([-,'\"\\sa-z0-9]+?)\\s*$/i;\n    const fontPart = regex.exec(this.font) as RegExpExecArray;\n    const data = {\n      style: fontPart[1] || \"normal\",\n      size: fontPart[4] || \"10px\",\n      family: fontPart[6] || \"sans-serif\",\n      weight: fontPart[3] || \"normal\",\n      decoration: fontPart[2] || \"normal\",\n      href: null\n    };\n\n    //canvas doesn't support underline natively, but we can pass this attribute\n    if (this.__fontUnderline === \"underline\") {\n      data.decoration = \"underline\";\n    }\n\n    //canvas also doesn't support linking, but we can pass this as well\n    if (this.__fontHref) {\n      data.href = this.__fontHref;\n    }\n\n    return data;\n  }\n\n  /**\n   * Helper to link text fragments\n   */\n  __wrapTextLink(font: { href: string | null }, element: HTMLElement) {\n    if (font.href) {\n      const a = this.__createElement(\"a\");\n      a.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", font.href);\n      a.appendChild(element);\n      return a;\n    }\n    return element;\n  }\n\n  /**\n   * Fills or strokes text\n   * @param text\n   * @param x\n   * @param y\n   * @param action - stroke or fill\n   */\n  __applyText(text: string, x: number, y: number, action: \"stroke\" | \"fill\") {\n    const font = this.__parseFont(),\n      parent = this.__closestGroupOrSvg(),\n      textElement = this.__createElement(\n        \"text\",\n        {\n          \"font-family\": font.family,\n          \"font-size\": font.size,\n          \"font-style\": font.style,\n          \"font-weight\": font.weight,\n          \"text-decoration\": font.decoration,\n          x: x,\n          y: y,\n          \"text-anchor\": getTextAnchor(this.textAlign),\n          \"dominant-baseline\": getDominantBaseline(this.textBaseline)\n        },\n        true\n      );\n\n    textElement.appendChild(this.__document.createTextNode(text));\n    this.__currentElement = textElement;\n    this.__applyStyleToCurrentElement(action);\n    parent.appendChild(\n      this.__wrapTextLink(font, textElement as unknown as HTMLElement)\n    );\n  }\n\n  /**\n   * Creates a text element\n   * @param text\n   * @param x\n   * @param y\n   */\n  fillText(text: string, x: number, y: number) {\n    this.__applyText(text, x, y, \"fill\");\n  }\n\n  /**\n   * Strokes text\n   * @param text\n   * @param x\n   * @param y\n   */\n  strokeText(text: string, x: number, y: number) {\n    this.__applyText(text, x, y, \"stroke\");\n  }\n\n  /**\n   * No need to implement this for svg.\n   * @param text\n   * @return {TextMetrics}\n   */\n  measureText(text: string) {\n    this.__ctx.font = this.font;\n    return this.__ctx.measureText(text);\n  }\n\n  /**\n   *  Arc command!\n   */\n  arc(\n    x: number,\n    y: number,\n    radius: number,\n    startAngle: number,\n    endAngle: number,\n    counterClockwise?: number\n  ) {\n    // in canvas no circle is drawn if no angle is provided.\n    if (startAngle === endAngle) {\n      return;\n    }\n    startAngle = startAngle % (2 * Math.PI);\n    endAngle = endAngle % (2 * Math.PI);\n    if (startAngle === endAngle) {\n      //circle time! subtract some of the angle so svg is happy (svg elliptical arc can't draw a full circle)\n      endAngle =\n        (endAngle + 2 * Math.PI - 0.001 * (counterClockwise ? -1 : 1)) %\n        (2 * Math.PI);\n    }\n    const endX = x + radius * Math.cos(endAngle),\n      endY = y + radius * Math.sin(endAngle),\n      startX = x + radius * Math.cos(startAngle),\n      startY = y + radius * Math.sin(startAngle),\n      sweepFlag = counterClockwise ? 0 : 1;\n    let largeArcFlag = 0;\n    let diff = endAngle - startAngle;\n\n    // https://github.com/gliffy/canvas2svg/issues/4\n    if (diff < 0) {\n      diff += 2 * Math.PI;\n    }\n\n    if (counterClockwise) {\n      largeArcFlag = diff > Math.PI ? 0 : 1;\n    } else {\n      largeArcFlag = diff > Math.PI ? 1 : 0;\n    }\n\n    this.lineTo(startX, startY);\n    this.__addPathCommand(\n      format(\n        \"A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}\",\n        {\n          rx: radius,\n          ry: radius,\n          xAxisRotation: 0,\n          largeArcFlag: largeArcFlag,\n          sweepFlag: sweepFlag,\n          endX: endX,\n          endY: endY\n        }\n      )\n    );\n\n    this.__currentPosition = { x: endX, y: endY };\n  }\n\n  /**\n   * Generates a ClipPath from the clip command.\n   */\n  clip() {\n    const group = this.__closestGroupOrSvg(),\n      clipPath = this.__createElement(\"clipPath\"),\n      id = randomString(this.__ids),\n      newGroup = this.__createElement(\"g\");\n\n    this.__applyCurrentDefaultPath();\n    group.removeChild(this.__currentElement);\n    clipPath.setAttribute(\"id\", id);\n    clipPath.appendChild(this.__currentElement);\n\n    this.__SVGdefs.appendChild(clipPath);\n\n    //set the clip path to this group\n    group.setAttribute(\"clip-path\", format(\"url(#{id})\", { id: id }));\n\n    //clip paths can be scaled and transformed, we need to add another wrapper group to avoid later transformations\n    // to this path\n    group.appendChild(newGroup);\n\n    this.__currentElement = newGroup;\n  }\n\n  /**\n   * Draws a canvas, image or mock context to this canvas.\n   * Note that all svg dom manipulation uses node.childNodes rather than node.children for IE support.\n   * http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage\n   */\n  drawImage(...args: any[]) {\n    let image = args[0],\n      dx,\n      dy,\n      dw,\n      dh,\n      sx = 0,\n      sy = 0,\n      sw,\n      sh,\n      svg,\n      defs,\n      group,\n      svgImage,\n      canvas,\n      id;\n\n    if (args.length === 3) {\n      dx = args[1];\n      dy = args[2];\n      sw = image.width;\n      sh = image.height;\n      dw = sw;\n      dh = sh;\n    } else if (args.length === 5) {\n      dx = args[1];\n      dy = args[2];\n      dw = args[3];\n      dh = args[4];\n      sw = image.width;\n      sh = image.height;\n    } else if (args.length === 9) {\n      sx = args[1];\n      sy = args[2];\n      sw = args[3];\n      sh = args[4];\n      dx = args[5];\n      dy = args[6];\n      dw = args[7];\n      dh = args[8];\n    } else {\n      throw new Error(\n        \"Invalid number of arguments passed to drawImage: \" + arguments.length\n      );\n    }\n\n    const parent = this.__closestGroupOrSvg();\n    const currentElement = this.__currentElement;\n    const translateDirective = \"translate(\" + dx + \", \" + dy + \")\";\n    if (image instanceof CustomCanvasContext) {\n      //canvas2svg mock canvas context. In the future we may want to clone nodes instead.\n      //also I'm currently ignoring dw, dh, sw, sh, sx, sy for a mock context.\n      svg = image.getSvg().cloneNode(true);\n      if (svg.childNodes && svg.childNodes.length > 1) {\n        defs = svg.childNodes[0] as SVGElement;\n        while (defs.childNodes.length) {\n          id = (defs.childNodes[0] as SVGElement).getAttribute(\"id\") as string;\n          this.__ids[id] = id;\n          this.__SVGdefs.appendChild(defs.childNodes[0]);\n        }\n        group = svg.childNodes[1] as SVGElement;\n        if (group) {\n          //save original transform\n          const originTransform = group.getAttribute(\"transform\");\n          let transformDirective;\n          if (originTransform) {\n            transformDirective = originTransform + \" \" + translateDirective;\n          } else {\n            transformDirective = translateDirective;\n          }\n          group.setAttribute(\"transform\", transformDirective);\n          parent.appendChild(group);\n        }\n      }\n    } else if (image.nodeName === \"CANVAS\" || image.nodeName === \"IMG\") {\n      //canvas or image\n      svgImage = this.__createElement(\"image\");\n      svgImage.setAttribute(\"width\", dw);\n      svgImage.setAttribute(\"height\", dh);\n      svgImage.setAttribute(\"preserveAspectRatio\", \"none\");\n\n      if (sx || sy || sw !== image.width || sh !== image.height) {\n        //crop the image using a temporary canvas\n        canvas = this.__document.createElement(\"canvas\");\n        canvas.width = dw;\n        canvas.height = dh;\n        const context = canvas.getContext(\"2d\");\n        context?.drawImage(image, sx, sy, sw, sh, 0, 0, dw, dh);\n        image = canvas;\n      }\n      svgImage.setAttribute(\"transform\", translateDirective);\n      svgImage.setAttributeNS(\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:href\",\n        image.nodeName === \"CANVAS\"\n          ? image.toDataURL()\n          : image.getAttribute(\"src\")\n      );\n      parent.appendChild(svgImage);\n    }\n  }\n\n  /**\n   * Generates a pattern tag\n   */\n  createPattern(\n    image: HTMLImageElement | HTMLCanvasElement | CustomCanvasContext,\n    repetition: number\n  ) {\n    const pattern = this.__document.createElementNS(\n        \"http://www.w3.org/2000/svg\",\n        \"pattern\"\n      ),\n      id = randomString(this.__ids);\n    let img;\n    pattern.setAttribute(\"id\", id);\n\n    if (image.nodeName === \"CANVAS\" || image.nodeName === \"IMG\") {\n      img = this.__document.createElementNS(\n        \"http://www.w3.org/2000/svg\",\n        \"image\"\n      );\n      img.setAttribute(\n        \"width\",\n        \"\" + (image as HTMLImageElement | HTMLCanvasElement).width\n      );\n      img.setAttribute(\n        \"height\",\n        \"\" + (image as HTMLImageElement | HTMLCanvasElement).height\n      );\n      img.setAttributeNS(\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:href\",\n        image.nodeName === \"CANVAS\"\n          ? (image as HTMLCanvasElement).toDataURL()\n          : image.getAttribute(\"src\")\n      );\n      pattern.appendChild(img);\n      this.__SVGdefs.appendChild(pattern);\n    } else if (image instanceof CustomCanvasContext) {\n      pattern.setAttribute(\"width\", \"\" + (image as CustomCanvasContext).width);\n      pattern.setAttribute(\n        \"height\",\n        \"\" + (image as CustomCanvasContext).height\n      );\n      pattern.appendChild(image.__rootSVG.childNodes[1]);\n      this.__SVGdefs.appendChild(pattern);\n    }\n    return new CustomCanvasPattern(pattern as unknown as SVGElement, this);\n  }\n\n  setLineDash(dashArray: number[]) {\n    if (dashArray && dashArray.length > 0) {\n      this.lineDash = dashArray.join(\",\");\n    } else {\n      this.lineDash = null;\n    }\n  }\n\n  drawFocusRing() {\n    /// Not yet implemented\n  }\n  createImageData() {\n    /// Not yet implemented\n  }\n  getImageData() {\n    /// Not yet implemented\n  }\n  putImageData() {\n    /// Not yet implemented\n  }\n  globalCompositeOperation() {\n    /// Not yet implemented\n  }\n  setTransform() {\n    /// Not yet implemented\n  }\n}\n\nexport default CustomCanvasContext;\n","import {\n  CustomCanvasContext,\n  CustomCanvasGradient\n} from \"./CustomCanvasContext\";\n\n// direction:\"ltr\"\n// filter:\"none\"\n// fontKerning:\"auto\"\n// fontStretch:\"normal\"\n// fontVariantCaps:\"normal\"\n// globalCompositeOperation:\"source-over\"\n// imageSmoothingEnabled:true\n// imageSmoothingQuality:\"low\"\n// letterSpacing:\"0px\"\n// lineCap:\"butt\"\n// lineWidth:1\n// shadowBlur:0\n// shadowColor:\"rgba(0, 0, 0, 0)\"\n// shadowOffsetX:0\n// shadowOffsetY:0\n// textRendering:\"auto\"\n// wordSpacing:\"0px\"\n\n// clip\n// createConicGradient\n// createImageData\n// direction\n// drawFocusIfNeeded\n// filter\n// fontKerning\n// fontStretch\n// fontVariantCaps\n// getContextAttributes\n// getLineDash\n// getTransform\n// globalCompositeOperation\n// imageSmoothingEnabled\n// imageSmoothingQuality\n// isContextLost\n// letterSpacing\n// reset\n// resetTransform\n// roundRect\n// setTransform\n// shadowBlur\n// shadowColor\n// shadowOffsetX\n// shadowOffsetY\n// textRendering\n// wordSpacing\n\nexport class YZCanvasContext {\n  canvas: HTMLCanvasElement;\n\n  context: CanvasRenderingContext2D;\n  // context: CanvasRenderingContext2D\n  // | WebGLRenderingContext\n  // | WebGL2RenderingContext\n  // | GPUCanvasContext\n  // | ImageBitmapRenderingContext\n  customContext?: CustomCanvasContext;\n\n  // https://developer.mozilla.org/en-US/docs/Web/API/Path2D\n  currentPath2D: Path2D = new Path2D();\n  path2Ds: Path2D[] = [];\n\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix\n  currentMatrix: DOMMatrix = new DOMMatrix();\n  // currentMatrix = document\n  //   .createElementNS(\"http://www.w3.org/2000/svg\", \"svg\")\n  //   .createSVGMatrix();\n\n  hasSetCustomStrokeStyle = false;\n  hasSetCustomFillStyle = false;\n\n  constructor(\n    canvas: HTMLCanvasElement,\n    width?: number,\n    height?: number,\n    enableCustomContext = false // 性能影响\n  ) {\n    this.canvas = canvas;\n    this.context = canvas.getContext(\"2d\", {\n      willReadFrequently: true\n    }) as CanvasRenderingContext2D;\n    if (enableCustomContext) {\n      this.customContext = new CustomCanvasContext({\n        canvas: this.canvas,\n        width: width || this.canvas.width,\n        height: height || this.canvas.height\n      });\n    }\n  }\n\n  set lineWidth(lineWidth: number) {\n    this.hasSetCustomStrokeStyle = true;\n    this.context.lineWidth = lineWidth;\n    if (this.customContext) this.customContext.lineWidth = lineWidth;\n  }\n\n  get lineWidth(): number {\n    return this.context.lineWidth;\n  }\n\n  set lineCap(lineCap: CanvasLineCap) {\n    this.hasSetCustomStrokeStyle = true;\n    this.context.lineCap = lineCap;\n    if (this.customContext) this.customContext.lineCap = lineCap;\n  }\n\n  get lineCap(): CanvasLineCap {\n    return this.context.lineCap;\n  }\n\n  set lineJoin(lineJoin: CanvasLineJoin) {\n    this.hasSetCustomStrokeStyle = true;\n    this.context.lineJoin = lineJoin;\n    if (this.customContext) this.customContext.lineCap = lineJoin;\n  }\n\n  get lineJoin(): CanvasLineJoin {\n    return this.context.lineJoin;\n  }\n\n  set lineDashOffset(lineDashOffset: number) {\n    this.hasSetCustomStrokeStyle = true;\n    this.context.lineDashOffset = lineDashOffset;\n    if (this.customContext) this.customContext.lineDashOffset = lineDashOffset;\n  }\n\n  get lineDashOffset(): number {\n    return this.context.lineDashOffset;\n  }\n\n  set miterLimit(miterLimit: number) {\n    this.hasSetCustomStrokeStyle = true;\n    this.context.miterLimit = miterLimit;\n    if (this.customContext) this.customContext.miterLimit = miterLimit;\n  }\n\n  get miterLimit(): number {\n    return this.context.miterLimit;\n  }\n\n  set globalAlpha(alpha: number) {\n    this.context.globalAlpha = alpha;\n    if (this.customContext) this.customContext.globalAlpha = alpha;\n  }\n\n  get globalAlpha(): number {\n    return this.context.globalAlpha;\n  }\n\n  // rgb(255,221,0)\n  // rgba(255,221,0,1)\n  // #000000\n  set fillStyle(\n    style:\n      | string\n      | CanvasGradient\n      | CanvasPattern\n      | { gradient: CanvasGradient; gradientCustom: CustomCanvasGradient }\n  ) {\n    this.hasSetCustomFillStyle = true;\n    if (\n      typeof style == \"string\" ||\n      style instanceof CanvasGradient ||\n      style instanceof CanvasPattern\n    ) {\n      this.context.fillStyle = style;\n      if (this.customContext) this.customContext.fillStyle = style;\n    } else {\n      this.context.fillStyle = style.gradient;\n      if (this.customContext)\n        this.customContext.fillStyle = style.gradientCustom;\n    }\n  }\n\n  get fillStyle(): string | CanvasGradient | CanvasPattern {\n    return this.context.fillStyle;\n  }\n\n  set strokeStyle(\n    style:\n      | string\n      | CanvasGradient\n      | CanvasPattern\n      | { gradient: CanvasGradient; gradientCustom: CustomCanvasGradient }\n  ) {\n    this.hasSetCustomStrokeStyle = true;\n    if (\n      typeof style == \"string\" ||\n      style instanceof CanvasGradient ||\n      style instanceof CanvasPattern\n    ) {\n      this.context.strokeStyle = style;\n      if (this.customContext) this.customContext.strokeStyle = style;\n    } else {\n      this.context.strokeStyle = style.gradient;\n      if (this.customContext)\n        this.customContext.strokeStyle = style.gradientCustom;\n    }\n  }\n\n  get strokeStyle(): string | CanvasGradient | CanvasPattern {\n    return this.context.strokeStyle;\n  }\n\n  // font:\"10px sans-serif\"\n  set font(font: string) {\n    this.context.font = font;\n    if (this.customContext) this.customContext.font = font;\n  }\n\n  get font(): string {\n    return this.context.font;\n  }\n\n  set textBaseline(textBaseline: CanvasTextBaseline) {\n    this.context.textBaseline = textBaseline;\n    if (this.customContext) this.customContext.textBaseline = textBaseline;\n  }\n\n  get textBaseline(): CanvasTextBaseline {\n    return this.context.textBaseline;\n  }\n\n  set textAlign(textAlign: CanvasTextAlign) {\n    this.context.textAlign = textAlign;\n    if (this.customContext) this.customContext.textAlign = textAlign;\n  }\n\n  get textAlign(): CanvasTextAlign {\n    return this.context.textAlign;\n  }\n\n  fill(path?: Path2D) {\n    if (path) {\n      this.context.fill(path);\n      /// customContext Not yet implemented\n    } else {\n      this.context.fill();\n      if (this.customContext) this.customContext.fill();\n    }\n    return this;\n  }\n\n  fillRect(x: number, y: number, w: number, h: number) {\n    this.context.fillRect(x, y, w, h);\n    if (this.customContext) this.customContext.fillRect(x, y, w, h);\n    return this;\n  }\n\n  fillText(text: string, x: number, y: number, maxWidth?: number | undefined) {\n    this.hasSetCustomFillStyle = false;\n    this.context.fillText(text, x, y, maxWidth);\n    if (this.customContext) this.customContext.fillText(text, x, y);\n    return this;\n  }\n\n  setLineDash(dashArray: number[]) {\n    this.context.setLineDash(dashArray);\n    if (this.customContext) this.customContext.setLineDash(dashArray);\n    return this;\n  }\n\n  stroke(path?: Path2D) {\n    if (path) {\n      this.context.stroke(path);\n      /// customContext Not yet implemented\n    } else {\n      this.context.stroke();\n      if (this.customContext) this.customContext.stroke();\n    }\n    return this;\n  }\n\n  strokeText(\n    text: string,\n    x: number,\n    y: number,\n    maxWidth?: number | undefined\n  ) {\n    this.context.strokeText(text, x, y, maxWidth);\n    if (this.customContext) this.customContext.strokeText(text, x, y);\n    return this;\n  }\n\n  strokeRect(x: number, y: number, w: number, h: number) {\n    this.context.strokeRect(x, y, w, h);\n    if (this.customContext) this.customContext.strokeRect(x, y, w, h);\n    return this;\n  }\n\n  measureText(text: string): TextMetrics {\n    return this.context.measureText(text);\n    /// customContext Not yet implemented\n  }\n\n  clearRect(x = 0, y = 0, w = this.canvas.width, h = this.canvas.height) {\n    this.context.clearRect(x, y, w, h);\n    if (this.customContext) this.customContext.clearRect(x, y, w, h);\n    return this;\n  }\n\n  save() {\n    this.context.save();\n    if (this.customContext) this.customContext.save();\n    this.currentMatrix = new DOMMatrix();\n    this.path2Ds.push(this.currentPath2D);\n    this.currentPath2D = new Path2D();\n    return this;\n  }\n\n  restore() {\n    this.context.restore();\n    if (this.customContext) this.customContext.restore();\n    this.hasSetCustomStrokeStyle = false;\n    this.hasSetCustomFillStyle = false;\n    this.currentMatrix = new DOMMatrix();\n    this.currentPath2D = this.path2Ds.pop() || new Path2D();\n    return this;\n  }\n\n  beginPath() {\n    this.context.beginPath();\n    if (this.customContext) this.customContext.beginPath();\n    return this;\n  }\n\n  closePath() {\n    this.context.closePath();\n    if (this.customContext) this.customContext.closePath();\n    this.currentPath2D.closePath();\n    return this;\n  }\n\n  changePath2D(path = this.currentPath2D, transform = this.currentMatrix) {\n    const newPath = new Path2D();\n    newPath.addPath(path, transform);\n    this.currentPath2D = newPath;\n  }\n\n  isPointInStroke(path: Path2D, x: number, y: number): boolean;\n  isPointInStroke(x: number, y: number): boolean;\n  isPointInStroke(...args: any[]): boolean {\n    if (args[0] instanceof Path2D) {\n      return this.context.isPointInStroke(args[0], args[1], args[2]);\n    }\n    return this.context.isPointInStroke(args[0], args[1]);\n    /// customContext Not yet implemented\n  }\n\n  isPointInPath(path: Path2D, x: number, y: number): boolean;\n  isPointInPath(x: number, y: number): boolean;\n  isPointInPath(...args: any[]): boolean {\n    if (args[0] instanceof Path2D) {\n      return this.context.isPointInPath(args[0], args[1], args[2]);\n    }\n    return this.context.isPointInPath(args[0], args[1]);\n    /// customContext Not yet implemented\n  }\n\n  // transform(a: number, b: number, c: number, d: number, e: number, f: number) {\n  //   this.context.transform(a, b, c, d, e, f);\n  //   if (this.customContext) this.customContext.transform(a, b, c, d, e, f);\n  //   return this;\n  // }\n\n  translate(x: number, y: number) {\n    this.context.translate(x, y);\n    if (this.customContext) {\n      this.customContext.translate(x, y);\n    }\n    this.currentMatrix.translate(x, y);\n    this.changePath2D();\n    return this;\n  }\n\n  rotate(radian: number, centerX = 0, centerY = 0) {\n    /// 移动的是坐标系\n    this.translate(centerX, centerY);\n    this.context.rotate(radian);\n    if (this.customContext) {\n      this.customContext.rotate(radian);\n    }\n    this.currentMatrix.rotate(radian);\n    this.translate(-centerX, -centerY);\n    this.changePath2D();\n    return this;\n  }\n\n  scale(x: number, y = x, centerX = 0, centerY = 0) {\n    /// 移动的是坐标系\n    this.translate(centerX, centerY);\n    this.context.scale(x, y);\n    if (this.customContext) {\n      this.customContext.scale(x, y);\n    }\n    this.currentMatrix.scale(x, y);\n    this.translate(-centerX, -centerY);\n    this.changePath2D();\n    return this;\n  }\n\n  moveTo(x: number, y: number) {\n    this.context.moveTo(x, y);\n    if (this.customContext) this.customContext.moveTo(x, y);\n    this.currentPath2D.moveTo(x, y);\n    return this;\n  }\n\n  lineTo(x: number, y: number) {\n    this.context.lineTo(x, y);\n    if (this.customContext) this.customContext.lineTo(x, y);\n    this.currentPath2D.lineTo(x, y);\n    return this;\n  }\n\n  arc(\n    x: number,\n    y: number,\n    radius: number,\n    startAngle: number,\n    endAngle: number,\n    counterClockwise?: boolean\n  ) {\n    this.context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n    if (this.customContext)\n      this.customContext.arc(\n        x,\n        y,\n        radius,\n        startAngle,\n        endAngle,\n        counterClockwise ? -1 : 1\n      );\n    this.currentPath2D.arc(\n      x,\n      y,\n      radius,\n      startAngle,\n      endAngle,\n      counterClockwise\n    );\n    return this;\n  }\n\n  arcTo(x1: number, y1: number, x2: number, y2: number, radius: number) {\n    this.context.arcTo(x1, y1, x2, y2, radius);\n    if (this.customContext) this.customContext.arcTo(x1, y1, x2, y2, radius);\n    this.currentPath2D.arcTo(x1, y1, x2, y2, radius);\n    return this;\n  }\n\n  ellipse(\n    x: number,\n    y: number,\n    radiusX: number,\n    radiusY: number,\n    rotation: number,\n    startAngle: number,\n    endAngle: number,\n    counterClockwise?: boolean\n  ) {\n    this.context.ellipse(\n      x,\n      y,\n      radiusX,\n      radiusY,\n      rotation,\n      startAngle,\n      endAngle,\n      counterClockwise\n    );\n    /// customContext Not yet implemented\n    this.currentPath2D.ellipse(\n      x,\n      y,\n      radiusX,\n      radiusY,\n      rotation,\n      startAngle,\n      endAngle,\n      counterClockwise\n    );\n    return this;\n  }\n\n  quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n    this.context.quadraticCurveTo(cpx, cpy, x, y);\n    if (this.customContext) this.customContext.quadraticCurveTo(cpx, cpy, x, y);\n    this.currentPath2D.quadraticCurveTo(cpx, cpy, x, y);\n    return this;\n  }\n\n  bezierCurveTo(\n    cp1x: number,\n    cp1y: number,\n    cp2x: number,\n    cp2y: number,\n    x: number,\n    y: number\n  ) {\n    this.context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    if (this.customContext)\n      this.customContext.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    this.currentPath2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    return this;\n  }\n\n  rect(x: number, y: number, w: number, h: number) {\n    this.context.rect(x, y, w, h);\n    if (this.customContext) this.customContext.rect(x, y, w, h);\n    this.currentPath2D.rect(x, y, w, h);\n    return this;\n  }\n\n  // { 0: \"#ffffff\", 1: \"#ff0000\" }\n  createLinearGradient(\n    x1: number,\n    y1: number,\n    x2: number,\n    y2: number,\n    colorStops?: Record<number, string>\n  ) {\n    const gradient: CanvasGradient = this.context.createLinearGradient(\n      x1,\n      y1,\n      x2,\n      y2\n    );\n    // const gradientCustom: CustomCanvasGradient =\n    //   this.customContext.createLinearGradient(x1, y1, x2, y2);\n    if (colorStops) {\n      Object.entries(colorStops).forEach(([key, value]) => {\n        gradient.addColorStop(parseFloat(key), value);\n        // gradientCustom.addColorStop(parseFloat(key), value);\n      });\n    }\n    return gradient;\n    // return {\n    //   gradient\n    //   // gradientCustom\n    // };\n  }\n\n  createRadialGradient(\n    x0: number,\n    y0: number,\n    r0: number,\n    x1: number,\n    y1: number,\n    r1: number,\n    colorStops?: Record<number, string>\n  ) {\n    const gradient: CanvasGradient = this.context.createRadialGradient(\n      x0,\n      y0,\n      r0,\n      x1,\n      y1,\n      r1\n    );\n    // const gradientCustom: CustomCanvasGradient =\n    //   this.customContext.createRadialGradient(x0, y0, r0, x1, y1, r1);\n    if (colorStops) {\n      Object.entries(colorStops).forEach(([key, value]) => {\n        gradient.addColorStop(parseFloat(key), value);\n        // gradientCustom.addColorStop(parseFloat(key), value);\n      });\n    }\n    return gradient;\n    // return {\n    //   gradient\n    //   // gradientCustom\n    // };\n  }\n\n  //  const image = new Image();\n  //  image.src = \"../assets/images/picture.jpg\";\n  //  image.onload = function () {\n  //    co.drawImage(image);\n  //  };\n  drawImage(\n    element:\n      | HTMLOrSVGImageElement\n      | HTMLVideoElement\n      | HTMLCanvasElement\n      | ImageBitmap\n      | OffscreenCanvas,\n    ...args: number[]\n  ) {\n    if (args.length === 0) {\n      this.context.drawImage(element, 0, 0);\n    } else if (args.length === 2) {\n      const dx = args[0];\n      const dy = args[1];\n      this.context.drawImage(element, dx, dy);\n    } else if (args.length === 4) {\n      const dx = args[0];\n      const dy = args[1];\n      const dw = args[2];\n      const dh = args[3];\n      this.context.drawImage(element, dx, dy, dw, dh);\n    } else if (args.length === 8) {\n      const sx = args[0];\n      const sy = args[1];\n      const sw = args[2];\n      const sh = args[3];\n      const dx = args[4];\n      const dy = args[5];\n      const dw = args[6];\n      const dh = args[7];\n      this.context.drawImage(element, sx, sy, sw, sh, dx, dy, dw, dh);\n    } else {\n      throw new Error(\n        \"Invalid number of arguments passed to drawImage: \" + args.length\n      );\n    }\n    if (this.customContext) this.customContext.drawImage(element, ...args);\n    return this;\n  }\n\n  getImageData(\n    sx = 0,\n    sy = 0,\n    sw = this.canvas.width,\n    sh = this.canvas.height,\n    settings?: ImageDataSettings | undefined\n  ): ImageData {\n    return this.context.getImageData(sx, sy, sw, sh, settings);\n    /// customContext Not yet implemented\n  }\n\n  putImageData(imageData: ImageData, dx = 0, dy = 0) {\n    return this.context.putImageData(imageData, dx, dy);\n    /// customContext Not yet implemented\n  }\n\n  createPattern(\n    image:\n      | HTMLImageElement\n      | SVGImageElement\n      | HTMLVideoElement\n      | HTMLCanvasElement\n      | ImageBitmap\n      | OffscreenCanvas,\n    repetition: \"repeat\" | \"repeat-x\" | \"repeat-y\" | \"no-repeat\" | null\n  ): CanvasPattern | null {\n    return this.context.createPattern(image, repetition);\n    /// customContext Not yet implemented\n  }\n\n  toRawSVG() {\n    if (this.customContext) {\n      const serializedSVG: string = this.customContext.getSerializedSvg(true);\n      const svgElement: SVGElement = this.customContext.getSvg();\n      return { raw: serializedSVG, element: svgElement };\n    } else {\n      return { raw: \"\", element: null };\n    }\n  }\n}\n\nexport default YZCanvasContext;\n","import { YZCanvasContext } from \"../../canvas\";\nimport { type SVGParsedPathData } from \"../../svg/SVGUtil\";\nimport { angle } from \"@zyzgroup/core-common\";\n\nexport type TLOptions = {\n  x?: number;\n  y?: number;\n  toX?: number;\n  toY?: number;\n};\n\n/// 配合 PathD 使用，不可单独使用\nexport class L {\n  x: number;\n  y: number;\n  toX: number;\n  toY: number;\n\n  constructor(options?: TLOptions) {\n    this.x = options?.x || 0;\n    this.y = options?.y || 0;\n    this.toX = options?.toX || 0;\n    this.toY = options?.toY || 0;\n  }\n\n  toSVGPathData(): SVGParsedPathData[] {\n    return [[\"L\", this.toX, this.toY]];\n  }\n\n  toCanvasContext(ctx: YZCanvasContext) {\n    ctx.lineTo(this.toX, this.toY);\n  }\n\n  getBoundingClientRect() {\n    const lineAngle = angle(this.x, this.y, this.toX, this.toY);\n    if (lineAngle === 0) {\n      const minX = Math.min(this.x, this.toX);\n      const minY = Math.min(this.y, this.toY);\n      const maxX = Math.max(this.x, this.toX);\n      const maxY = Math.max(this.y, this.toY);\n      return {\n        x: minX,\n        y: minY,\n        width: maxX - minX,\n        height: maxY - minY\n      };\n    } else {\n      const sin = Math.sin(lineAngle);\n      const cos = Math.cos(lineAngle);\n      const x1r = cos * this.x - sin * this.y;\n      const x2r = cos * this.toX - sin * this.toY;\n      const y1r = cos * this.y + sin * this.x;\n      const y2r = cos * this.toY + sin * this.toX;\n      return {\n        x: Math.min(x1r, x2r),\n        y: Math.min(y1r, y2r),\n        width: Math.max(x1r, x2r) - Math.min(x1r, x2r),\n        height: Math.max(y1r, y2r) - Math.min(y1r, y2r)\n      };\n    }\n  }\n\n  // t : The fraction of the overall duration of the path. (A value from 0.0 to 1.0)\n  interpolate(t: number): { x: number; y: number } {\n    return {\n      x: this.x + t * (this.toX - this.x),\n      y: this.y + t * (this.toY - this.y)\n    };\n  }\n\n  intersection(line: L): { x: number; y: number } | null {\n    const x1 = this.x;\n    const y1 = this.y;\n    const x4 = line.toX;\n    const y4 = line.toY;\n    const dx1 = this.toX - x1;\n    const dx2 = line.x - x4;\n    if (!dx1 && !dx2) {\n      return null;\n    }\n    const m1 = (this.toY - y1) / dx1;\n    const m2 = (line.y - y4) / dx2;\n    if (!dx1) {\n      // infinity\n      return { x: x1, y: m2 * (x1 - x4) + y4 };\n    } else if (!dx2) {\n      // infinity\n      return { x: x4, y: m1 * (x4 - x1) + y1 };\n    }\n    const xInt = (-m2 * x4 + y4 + m1 * x1 - y1) / (m1 - m2);\n    const yInt = m1 * (xInt - x1) + y1;\n    if (isNaN(xInt) || isNaN(yInt)) {\n      return null;\n    }\n    return { x: xInt, y: yInt };\n  }\n}\n\nexport default L;\n","import { SVGParsedPathData } from \"../../svg/SVGUtil\";\nimport { YZCanvasContext } from \"../../canvas\";\nimport { L, TLOptions } from \"./L\";\n\nexport type TCArcOptions = {\n  rx: number;\n  ry: number;\n  xAxisRotate?: number; // phi\n  largeArcFlag?: number; // fa\n  sweepFlag?: number; //fs\n  toX: number;\n  toY: number;\n} & TLOptions;\n\nexport class Arc extends L {\n  // x方向的半径\n  public rx: number;\n  // y方向的半径\n  public ry: number;\n  // 绕着x轴旋转的角度\n  public xAxisRotate: number;\n  // 0小弧 1大弧\n  public largeArcFlag: number;\n  // 0逆时针方向 1顺时针方向\n  public sweepFlag: number;\n\n  constructor(options: TCArcOptions) {\n    super(options);\n    this.rx = options.rx;\n    this.ry = options.ry;\n    this.xAxisRotate = options?.xAxisRotate ?? 0;\n    this.largeArcFlag = options?.largeArcFlag ?? 1;\n    this.sweepFlag = options?.sweepFlag ?? 1;\n    this.toX = options.toX;\n    this.toY = options.toY;\n  }\n\n  /// A rx,ry xAxisRotate LargeArcFlag,SweepFlag x,y\n  toSVGPathData(): SVGParsedPathData[] {\n    return [\n      [\n        \"A\",\n        this.rx,\n        this.ry,\n        this.xAxisRotate,\n        this.largeArcFlag,\n        this.sweepFlag,\n        this.toX,\n        this.toY\n      ]\n    ];\n  }\n\n  toCanvasContext(ctx: YZCanvasContext): void {\n    const [cx, cy, rx, ry, xAxisRotate, startAngle, endAngle] = this.convert(\n      this.x,\n      this.y,\n      this.toX,\n      this.toY,\n      this.rx,\n      this.ry,\n      this.xAxisRotate,\n      this.largeArcFlag,\n      this.sweepFlag\n    );\n    ctx.ellipse(\n      cx,\n      cy,\n      rx,\n      ry,\n      xAxisRotate,\n      startAngle,\n      endAngle,\n      !this.sweepFlag\n    );\n    // ctx.scale(this.rx, this.ry);\n    // ctx.arc(0, 0, 1, startAngle, endAngle, !this.sweepFlag);\n  }\n\n  convert(\n    x1: number,\n    y1: number,\n    x2: number,\n    y2: number,\n    rx: number,\n    ry: number,\n    phi: number,\n    fa: number,\n    fs: number\n  ) {\n    const p = (phi / 180) * Math.PI;\n    const x_m = (x1 - x2) / 2;\n    const y_m = (y1 - y2) / 2;\n\n    const x1_d = Math.cos(p) * x_m + Math.sin(p) * y_m;\n    const y1_d = -Math.sin(p) * x_m + Math.cos(p) * y_m;\n\n    const radius_check_value =\n      (x1_d * x1_d) / (rx * rx) + (y1_d * y1_d) / (ry * ry);\n    if (radius_check_value > 1) {\n      // throw \"Radius is too small to build an arc!\";\n\n      // Check out radius correction in the W3C document\n      // https://www.w3.org/TR/SVG11/implnote.html#ArcCorrectionOutOfRangeRadii\n      const r_sq = Math.sqrt(radius_check_value);\n      rx = r_sq * rx;\n      ry = r_sq * ry;\n\n      throw new Error(\n        `Radii are too small to build an arc. Correcting them to ${rx}/${ry}.`\n      );\n    }\n\n    const sq = Math.sqrt(\n      (rx * rx * ry * ry - rx * rx * y1_d * y1_d - ry * ry * x1_d * x1_d) /\n        (rx * rx * y1_d * y1_d + ry * ry * x1_d * x1_d)\n    );\n\n    const s = fa != fs ? 1 : -1;\n    const cx_d = (s * sq * rx * y1_d) / ry;\n    const cy_d = (s * sq * -ry * x1_d) / rx;\n\n    const x_m_d = (x1 + x2) / 2;\n    const y_m_d = (y1 + y2) / 2;\n    const cx = Math.cos(p) * cx_d - Math.sin(p) * cy_d + x_m_d;\n    const cy = Math.sin(p) * cx_d + Math.cos(p) * cy_d + y_m_d;\n\n    const vectorAngle = (ux: number, uy: number, vx: number, vy: number) =>\n      (ux * vy >= uy * vx ? 1 : -1) *\n      Math.acos(\n        (ux * vx + uy * vy) /\n          (Math.sqrt(ux * ux + uy * uy) * Math.sqrt(vx * vx + vy * vy))\n      );\n    const theta_1 = vectorAngle(1, 0, x1 - cx, y1 - cy) - p;\n    const delta_theta = vectorAngle(x1 - cx, y1 - cy, x2 - cx, y2 - cy);\n\n    return [cx, cy, rx, ry, p, theta_1, theta_1 + delta_theta];\n  }\n}\n\nexport default Arc;\n","import { SVGParsedPathData } from \"../../svg/SVGUtil\";\nimport { YZCanvasContext } from \"../../canvas\";\nimport { L, TLOptions } from \"./L\";\n\nexport type TQuadraticBezierOptions = {\n  cx: number;\n  cy: number;\n  toX?: number;\n  toY?: number;\n  isLineThrough?: boolean;\n} & TLOptions;\n\nexport class QuadraticBezier extends L {\n  public cx: number;\n  public cy: number;\n  public isLineThrough: boolean;\n\n  constructor(options: TQuadraticBezierOptions) {\n    super(options);\n    this.cx = options.cx;\n    this.cy = options.cy;\n    this.isLineThrough =\n      typeof options.isLineThrough == \"boolean\" ? options.isLineThrough : false;\n  }\n\n  /// Q cx,cy x,y\n  /// T x,y\n  toSVGPathData(): SVGParsedPathData[] {\n    if (this.isLineThrough) {\n      const c1x = this.cx * 2 - (this.x + this.toX) / 2;\n      const c1y = this.cy * 2 - (this.y + this.toY) / 2;\n      return [[\"Q\", c1x, c1y, this.toX, this.toY]];\n    } else {\n      return [[\"Q\", this.cx, this.cy, this.toX, this.toY]];\n    }\n  }\n\n  toCanvasContext(ctx: YZCanvasContext) {\n    if (this.isLineThrough) {\n      const c1x = this.cx * 2 - (this.x + this.toX) / 2;\n      const c1y = this.cy * 2 - (this.y + this.toY) / 2;\n      ctx.quadraticCurveTo(c1x, c1y, this.toX, this.toY);\n    } else {\n      ctx.quadraticCurveTo(this.cx, this.cy, this.toX, this.toY);\n    }\n  }\n\n  getBoundingClientRect() {\n    const xArr = [this.x, this.toX];\n    const yArr = [this.y, this.toY];\n    let a, b, c, t;\n    for (let i = 0; i < 2; ++i) {\n      a =\n        i == 0\n          ? this.x - 2 * this.cx + this.toX\n          : this.y - 2 * this.cy + this.toY;\n      b = i == 0 ? -2 * this.x + 2 * this.cx : -2 * this.y + 2 * this.cy;\n      c = i == 0 ? this.x : this.y;\n      if (Math.abs(a) > 1e-12) {\n        t = -b / (2 * a);\n        if (0 < t && t < 1) {\n          [xArr, yArr][i].push(a * t * t + b * t + c);\n        }\n      }\n    }\n    const min = { x: Math.min.apply(0, xArr), y: Math.min.apply(0, yArr) };\n    const max = { x: Math.max.apply(0, xArr), y: Math.max.apply(0, yArr) };\n    return {\n      x: min.x,\n      y: min.y,\n      width: max.x - min.x,\n      height: max.y - min.y\n    };\n  }\n\n  // t : The fraction of the overall duration of the path. (A value from 0.0 to 1.0)\n  interpolate(t: number): { x: number; y: number } {\n    return {\n      x:\n        (1 - t) * (1 - t) * this.x +\n        2 * (1 - t) * t * this.cx +\n        t * t * this.toX,\n      y:\n        (1 - t) * (1 - t) * this.y +\n        2 * (1 - t) * t * this.cy +\n        t * t * this.toY\n    };\n  }\n}\n\nexport default QuadraticBezier;\n","/* eslint-disable prefer-spread */\nimport { SVGParsedPathData } from \"../../svg/SVGUtil\";\nimport { YZCanvasContext } from \"../../canvas\";\nimport { L, TLOptions } from \"./L\";\n\nexport type TCubicBezierOptions = {\n  c1x: number;\n  c1y: number;\n  c2x: number;\n  c2y: number;\n  toX?: number;\n  toY?: number;\n} & TLOptions;\n\nexport class CubicBezier extends L {\n  public c1x: number;\n  public c1y: number;\n  public c2x: number;\n  public c2y: number;\n\n  constructor(options: TCubicBezierOptions) {\n    super(options);\n    this.c1x = options.c1x;\n    this.c1y = options.c1y;\n    this.c2x = options.c2x;\n    this.c2y = options.c2y;\n  }\n\n  /// C c1x,c1y c2x,c2y x,y\n  /// S c2x,c2y x,y\n  toSVGPathData(): SVGParsedPathData[] {\n    return [[\"C\", this.c1x, this.c1y, this.c2x, this.c2y, this.toX, this.toY]];\n  }\n\n  toCanvasContext(ctx: YZCanvasContext) {\n    ctx.bezierCurveTo(\n      this.c1x,\n      this.c1y,\n      this.c2x,\n      this.c2y,\n      this.toX,\n      this.toY\n    );\n  }\n\n  getBoundingClientRect() {\n    /// 一种方法\n    // const tvalues = [];\n    // const bounds: number[][] = [[], []];\n    // let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n    // for (let i = 0; i < 2; ++i) {\n    //   if (i === 0) {\n    //     b = 6 * this.x - 12 * this.c1x + 6 * this.c2x;\n    //     a = -3 * this.x + 9 * this.c1x - 9 * this.c2x + 3 * this.toX;\n    //     c = 3 * this.c1x - 3 * this.x;\n    //   } else {\n    //     b = 6 * this.y - 12 * this.c1y + 6 * this.c2y;\n    //     a = -3 * this.y + 9 * this.c1y - 9 * this.c2y + 3 * this.toY;\n    //     c = 3 * this.c1y - 3 * this.y;\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    //   b2ac = b * b - 4 * c * a;\n    //   if (b2ac < 0) {\n    //     continue;\n    //   }\n    //   sqrtb2ac = Math.sqrt(b2ac);\n    //   t1 = (-b + sqrtb2ac) / (2 * a);\n    //   if (t1 > 0 && t1 < 1) {\n    //     tvalues.push(t1);\n    //   }\n    //   t2 = (-b - sqrtb2ac) / (2 * a);\n    //   if (t2 > 0 && t2 < 1) {\n    //     tvalues.push(t2);\n    //   }\n    // }\n    // let j = tvalues.length;\n    // let mt;\n    // const jlen = j;\n    // while (j--) {\n    //   t = tvalues[j];\n    //   mt = 1 - t;\n    //   bounds[0][j] =\n    //     mt * mt * mt * this.x +\n    //     3 * mt * mt * t * this.c1x +\n    //     3 * mt * t * t * this.c2x +\n    //     t * t * t * this.toX;\n    //   bounds[1][j] =\n    //     mt * mt * mt * this.y +\n    //     3 * mt * mt * t * this.c1y +\n    //     3 * mt * t * t * this.c2y +\n    //     t * t * t * this.toY;\n    // }\n    // bounds[0][jlen] = this.x;\n    // bounds[1][jlen] = this.y;\n    // bounds[0][jlen + 1] = this.toX;\n    // bounds[1][jlen + 1] = this.toY;\n    // bounds[0].length = bounds[1].length = jlen + 2;\n    // const min = {\n    //   x: Math.min.apply(0, bounds[0]),\n    //   y: Math.min.apply(0, bounds[1])\n    // };\n    // const max = {\n    //   x: Math.max.apply(0, bounds[0]),\n    //   y: Math.max.apply(0, bounds[1])\n    // };\n    // return {\n    //   x: min.x,\n    //   y: min.y,\n    //   width: max.x - min.x,\n    //   height: max.y - min.y\n    // };\n\n    /// 另一种方法\n    let a =\n      this.c2x - 2 * this.c1x + this.x - (this.toX - 2 * this.c2x + this.c1x);\n    let b = 2 * (this.c1x - this.x) - 2 * (this.c2x - this.c1x);\n    let c = this.x - this.c1x;\n    let t1 = (-b + Math.sqrt(b * b - 4 * a * c)) / 2 / a;\n    let t2 = (-b - Math.sqrt(b * b - 4 * a * c)) / 2 / a;\n    const y = [this.y, this.toY];\n    const x = [this.x, this.toX];\n    let dot;\n    const dots = [];\n    Math.abs(t1) > 1e12 && (t1 = 0.5);\n    Math.abs(t2) > 1e12 && (t2 = 0.5);\n    if (t1 >= 0 && t1 <= 1) {\n      dot = this.interpolate(t1);\n      x.push(dot.x);\n      y.push(dot.y);\n      dots.push({ X: dot.x, Y: dot.y });\n    }\n    if (t2 >= 0 && t2 <= 1) {\n      dot = this.interpolate(t2);\n      x.push(dot.x);\n      y.push(dot.y);\n      dots.push({ X: dot.x, Y: dot.y });\n    }\n    a = this.c2y - 2 * this.c1y + this.y - (this.toY - 2 * this.c2y + this.c1y);\n    b = 2 * (this.c1y - this.y) - 2 * (this.c2y - this.c1y);\n    c = this.y - this.c1y;\n    t1 = (-b + Math.sqrt(b * b - 4 * a * c)) / 2 / a;\n    t2 = (-b - Math.sqrt(b * b - 4 * a * c)) / 2 / a;\n    Math.abs(t1) > 1e12 && (t1 = 0.5);\n    Math.abs(t2) > 1e12 && (t2 = 0.5);\n    if (t1 >= 0 && t1 <= 1) {\n      dot = this.interpolate(t1);\n      x.push(dot.x);\n      y.push(dot.y);\n      dots.push({ X: dot.x, Y: dot.y });\n    }\n    if (t2 >= 0 && t2 <= 1) {\n      dot = this.interpolate(t2);\n      x.push(dot.x);\n      y.push(dot.y);\n      dots.push({ X: dot.x, Y: dot.y });\n    }\n    // remove duplicate dots\n    const dots2 = [];\n    const l = dots.length;\n    for (let i = 0; i < l; i++) {\n      for (let j = i + 1; j < l; j++) {\n        if (dots[i].X === dots[j].X && dots[i].Y === dots[j].Y) j = ++i;\n      }\n      dots2.push({ X: dots[i].X, Y: dots[i].Y });\n    }\n    const min = { x: Math.min.apply(Math, x), y: Math.min.apply(Math, y) };\n    const max = { x: Math.max.apply(Math, x), y: Math.max.apply(Math, y) };\n    return {\n      x: min.x,\n      y: min.y,\n      width: max.x - min.x,\n      height: max.y - min.y,\n      dots: dots2 // these are the extrema points\n    };\n  }\n\n  /// t (0.0 to 1.0) : The fraction of the overall duration of the path\n  interpolate(t: number): { x: number; y: number } {\n    return {\n      x:\n        Math.pow(1 - t, 3) * this.x +\n        3 * Math.pow(1 - t, 2) * t * this.c1x +\n        3 * Math.pow(1 - t, 1) * Math.pow(t, 2) * this.c2x +\n        Math.pow(t, 3) * this.toX,\n      y:\n        Math.pow(1 - t, 3) * this.y +\n        3 * Math.pow(1 - t, 2) * t * this.c1y +\n        3 * Math.pow(1 - t, 1) * Math.pow(t, 2) * this.c2y +\n        Math.pow(t, 3) * this.toY\n    };\n  }\n\n  static base3(\n    t: number,\n    p1: number,\n    p2: number,\n    p3: number,\n    p4: number\n  ): number {\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\n  /**\n   * Based on snap.svg bezlen() function\n   * like getTotalLength(), approximate a cubic bézier length\n   * https://github.com/adobe-webplatform/Snap.svg/blob/master/dist/snap.svg.js#L5786\n   */\n  static bezlen(\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    z = 1 /// length: 0 ~ 1\n  ): number {\n    z = Math.max(0, Math.min(z, 1));\n    const z2 = z / 2;\n    const Tvalues = [\n      -0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699,\n      -0.9041, 0.9041, -0.9816, 0.9816\n    ];\n    const Cvalues = [\n      0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069,\n      0.1069, 0.0472, 0.0472\n    ];\n    let sum = 0;\n    /// 12 = Tvalues.length = Cvalues.length\n    for (let i = 0; i < 12; i++) {\n      const ct = z2 * Tvalues[i] + z2;\n      const xbase = this.base3(ct, x1, x2, x3, x4);\n      const ybase = this.base3(ct, y1, y2, y3, y4);\n      sum += Cvalues[i] * Math.sqrt(xbase * xbase + ybase * ybase);\n    }\n    return z2 * sum;\n  }\n\n  length(z = 1): number {\n    return CubicBezier.bezlen(\n      this.x,\n      this.y,\n      this.c1x,\n      this.c1y,\n      this.c2x,\n      this.c2y,\n      this.toX,\n      this.toY,\n      z\n    );\n  }\n\n  /// get position on the curve (0..1)\n  getTatLen(ll: number): number {\n    const x1 = this.x;\n    const y1 = this.y;\n    const x2 = this.c1x;\n    const y2 = this.c1y;\n    const x3 = this.c2x;\n    const y3 = this.c2y;\n    const x4 = this.toX;\n    const y4 = this.toY;\n    if (ll < 0 || CubicBezier.bezlen(x1, y1, x2, y2, x3, y3, x4, y4) < ll) {\n      return 0;\n    }\n    const t = 1;\n    let step = t / 2;\n    let t2 = t - step;\n    let l = CubicBezier.bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n    while (Math.abs(l - ll) > 0.01) {\n      step /= 2;\n      t2 += (l < ll ? 1 : -1) * step;\n      l = CubicBezier.bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n    }\n    return t2;\n  }\n\n  /// Find dot coordinates on the given cubic bezier curve at the given t\n  getPointAtSegmentLength(length: number) {\n    const t = this.getTatLen(length);\n    const t1 = 1 - t,\n      t13 = Math.pow(t1, 3),\n      t12 = Math.pow(t1, 2),\n      t2 = t * t,\n      t3 = t2 * t,\n      x =\n        t13 * this.x +\n        t12 * 3 * t * this.c1x +\n        t1 * 3 * t * t * this.c2x +\n        t3 * this.toX,\n      y =\n        t13 * this.y +\n        t12 * 3 * t * this.c1y +\n        t1 * 3 * t * t * this.c2y +\n        t3 * this.toY,\n      mx =\n        this.x +\n        2 * t * (this.c1x - this.x) +\n        t2 * (this.c2x - 2 * this.c1x + this.x),\n      my =\n        this.y +\n        2 * t * (this.c1y - this.y) +\n        t2 * (this.c2y - 2 * this.c1y + this.y),\n      nx =\n        this.c1x +\n        2 * t * (this.c2x - this.c1x) +\n        t2 * (this.toX - 2 * this.c2x + this.c1x),\n      ny =\n        this.c1y +\n        2 * t * (this.c2y - this.c1y) +\n        t2 * (this.toY - 2 * this.c2y + this.c1y),\n      ax = t1 * this.x + t * this.c1x,\n      ay = t1 * this.y + t * this.c1y,\n      cx = t1 * this.c2x + t * this.toX,\n      cy = t1 * this.c2y + t * this.toY,\n      alpha = 90 - (Math.atan2(mx - nx, my - ny) * 180) / Math.PI;\n    // (mx > nx || my < ny) && (alpha += 180);\n    return {\n      x: x, // x coordinate of the point\n      y: y, // y coordinate of the point\n      m: {\n        x: mx, // x coordinate of the left anchor\n        y: my // y coordinate of the left anchor\n      },\n      n: {\n        x: nx, // x coordinate of the right anchor\n        y: ny // y coordinate of the right anchor\n      },\n      start: {\n        x: ax, // x coordinate of the start of the curve\n        y: ay // y coordinate of the start of the curve\n      },\n      end: {\n        x: cx, //  x coordinate of the end of the curve\n        y: cy // y coordinate of the end of the curve\n      },\n      alpha: alpha // degree: angle of the curve derivative at the point\n    };\n  }\n}\n\nexport default CubicBezier;\n","// https://github.com/colinmeinke/svg-arc-to-cubic-bezier\n//\n// Convert an arc to a sequence of cubic bézier curves\n//\n\nconst TAU = Math.PI * 2;\n\n// Calculate an angle between two unit vectors\n//\n// Since we measure angle between radii of circular arcs,\n// we can use simplified math (without length normalization)\n//\nfunction unit_vector_angle(ux: number, uy: number, vx: number, vy: number) {\n  const sign = ux * vy - uy * vx < 0 ? -1 : 1;\n  let dot = ux * vx + uy * vy;\n\n  // Add this to work with arbitrary vectors:\n  // dot /= Math.sqrt(ux * ux + uy * uy) * Math.sqrt(vx * vx + vy * vy);\n\n  // rounding errors, e.g. -1.0000000000000002 can screw up this\n  if (dot > 1.0) {\n    dot = 1.0;\n  }\n  if (dot < -1.0) {\n    dot = -1.0;\n  }\n\n  return sign * Math.acos(dot);\n}\n\n// Convert from endpoint to center parameterization,\n// see http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n//\n// Return [cx, cy, theta1, delta_theta]\n//\nfunction get_arc_center(\n  x1: number,\n  y1: number,\n  x2: number,\n  y2: number,\n  fa: number,\n  fs: number,\n  rx: number,\n  ry: number,\n  sin_phi: number,\n  cos_phi: number\n) {\n  // Step 1.\n  //\n  // Moving an ellipse so origin will be the middlepoint between our two\n  // points. After that, rotate it to line up ellipse axes with coordinate\n  // axes.\n  //\n  const x1p = (cos_phi * (x1 - x2)) / 2 + (sin_phi * (y1 - y2)) / 2;\n  const y1p = (-sin_phi * (x1 - x2)) / 2 + (cos_phi * (y1 - y2)) / 2;\n\n  const rx_sq = rx * rx;\n  const ry_sq = ry * ry;\n  const x1p_sq = x1p * x1p;\n  const y1p_sq = y1p * y1p;\n\n  // Step 2.\n  //\n  // Compute coordinates of the centre of this ellipse (cx', cy')\n  // in the new coordinate system.\n  //\n  let radicant = rx_sq * ry_sq - rx_sq * y1p_sq - ry_sq * x1p_sq;\n\n  if (radicant < 0) {\n    // due to rounding errors it might be e.g. -1.3877787807814457e-17\n    radicant = 0;\n  }\n\n  radicant /= rx_sq * y1p_sq + ry_sq * x1p_sq;\n  radicant = Math.sqrt(radicant) * (fa === fs ? -1 : 1);\n\n  const cxp = ((radicant * rx) / ry) * y1p;\n  const cyp = ((radicant * -ry) / rx) * x1p;\n\n  // Step 3.\n  //\n  // Transform back to get centre coordinates (cx, cy) in the original\n  // coordinate system.\n  //\n  const cx = cos_phi * cxp - sin_phi * cyp + (x1 + x2) / 2;\n  const cy = sin_phi * cxp + cos_phi * cyp + (y1 + y2) / 2;\n\n  // Step 4.\n  //\n  // Compute angles (theta1, delta_theta).\n  //\n  const v1x = (x1p - cxp) / rx;\n  const v1y = (y1p - cyp) / ry;\n  const v2x = (-x1p - cxp) / rx;\n  const v2y = (-y1p - cyp) / ry;\n\n  const theta1 = unit_vector_angle(1, 0, v1x, v1y);\n  let delta_theta = unit_vector_angle(v1x, v1y, v2x, v2y);\n\n  if (fs === 0 && delta_theta > 0) {\n    delta_theta -= TAU;\n  }\n  if (fs === 1 && delta_theta < 0) {\n    delta_theta += TAU;\n  }\n\n  return [cx, cy, theta1, delta_theta];\n}\n\n//\n// Approximate one unit arc segment with bézier curves,\n// see http://math.stackexchange.com/questions/873224\n//\nfunction approximate_unit_arc(theta1: number, delta_theta: number) {\n  const alpha = (4 / 3) * Math.tan(delta_theta / 4);\n\n  // // If 90 degree circular arc, use a constant\n  // // as derived from http://spencermortensen.com/articles/bezier-circle\n  // const alpha =\n  //   delta_theta === 1.5707963267948966\n  //     ? 0.551915024494\n  //     : delta_theta === -1.5707963267948966\n  //     ? -0.551915024494\n  //     : (4 / 3) * Math.tan(delta_theta / 4);\n\n  const x1 = Math.cos(theta1);\n  const y1 = Math.sin(theta1);\n  const x2 = Math.cos(theta1 + delta_theta);\n  const y2 = Math.sin(theta1 + delta_theta);\n\n  return [\n    x1,\n    y1,\n    x1 - y1 * alpha,\n    y1 + x1 * alpha,\n    x2 + y2 * alpha,\n    y2 - x2 * alpha,\n    x2,\n    y2\n  ];\n}\n\n// var curves = a2c(\n//   x,\n//   y,\n//   seg[6],x\n//   seg[7],y\n//   seg[4],largeArcFlag\n//   seg[5],sweepFlag\n//   seg[1],rx\n//   seg[2],ry\n//   seg[3],xAxisRotate\n// );\nexport function a2c(\n  x1: number,\n  y1: number,\n  x2: number,\n  y2: number,\n  fa: number,\n  fs: number,\n  rx: number,\n  ry: number,\n  phi: number\n) {\n  const sin_phi = Math.sin((phi * TAU) / 360);\n  const cos_phi = Math.cos((phi * TAU) / 360);\n\n  // Make sure radii are valid\n  //\n  const x1p = (cos_phi * (x1 - x2)) / 2 + (sin_phi * (y1 - y2)) / 2;\n  const y1p = (-sin_phi * (x1 - x2)) / 2 + (cos_phi * (y1 - y2)) / 2;\n\n  if (x1p === 0 && y1p === 0) {\n    // we're asked to draw line to itself\n    return [];\n  }\n\n  if (rx === 0 || ry === 0) {\n    // one of the radii is zero\n    return [];\n  }\n\n  // Compensate out-of-range radii\n  //\n  rx = Math.abs(rx);\n  ry = Math.abs(ry);\n\n  const lambda = (x1p * x1p) / (rx * rx) + (y1p * y1p) / (ry * ry);\n  if (lambda > 1) {\n    rx *= Math.sqrt(lambda);\n    ry *= Math.sqrt(lambda);\n  }\n\n  // Get center parameters (cx, cy, theta1, delta_theta)\n  //\n  const cc = get_arc_center(x1, y1, x2, y2, fa, fs, rx, ry, sin_phi, cos_phi);\n\n  const result = [];\n  let theta1 = cc[2];\n  let delta_theta = cc[3];\n\n  // Split an arc to multiple segments, so each segment\n  // will be less than τ/4 (= 90°)\n  //\n  const segments = Math.max(Math.ceil(Math.abs(delta_theta) / (TAU / 4)), 1);\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(delta_theta) / (TAU / 4);\n  // if (Math.abs(1.0 - ratio) < 0.0000001) {\n  //   ratio = 1.0;\n  // }\n  // const segments = Math.max(Math.ceil(ratio), 1);\n\n  delta_theta /= segments;\n\n  for (let i = 0; i < segments; i++) {\n    result.push(approximate_unit_arc(theta1, delta_theta));\n    theta1 += delta_theta;\n  }\n\n  // We have a bezier approximation of a unit circle,\n  // now need to transform back to the original ellipse\n  //\n  return result.map((curve) => {\n    for (let i = 0; i < curve.length; i += 2) {\n      let x = curve[i + 0];\n      let y = curve[i + 1];\n\n      // scale\n      x *= rx;\n      y *= ry;\n\n      // rotate\n      const xp = cos_phi * x - sin_phi * y;\n      const yp = sin_phi * x + cos_phi * y;\n\n      // translate\n      curve[i + 0] = xp + cc[0];\n      curve[i + 1] = yp + cc[1];\n    }\n\n    return curve;\n  });\n}\n\n// for more information of where this math came from visit:\n// http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\nexport function a2c2(\n  x1: number,\n  y1: number,\n  rx: number,\n  ry: number,\n  angle: number,\n  large_arc_flag: number,\n  sweep_flag: number,\n  x2: number,\n  y2: number,\n  recursive?: number[]\n): number[][] {\n  const _120 = (Math.PI * 120) / 180;\n  const rad = (Math.PI / 180) * (+angle || 0);\n  let res: number[][] = [];\n  let xy;\n  const rotate = function (x: number, y: number, rad: number) {\n    const X = x * Math.cos(rad) - y * Math.sin(rad);\n    const Y = x * Math.sin(rad) + y * Math.cos(rad);\n    return { x: X, y: Y };\n  };\n  let f1: number;\n  let f2: number;\n  let cx: number;\n  let cy: number;\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    const cos = Math.cos((Math.PI / 180) * angle),\n      sin = Math.sin((Math.PI / 180) * angle),\n      x = (x1 - x2) / 2,\n      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      ry2 = ry * ry,\n      k =\n        (large_arc_flag == sweep_flag ? -1 : 1) *\n        Math.sqrt(\n          Math.abs(\n            (rx2 * ry2 - rx2 * y * y - ry2 * x * x) /\n              (rx2 * y * y + ry2 * x * x)\n          )\n        );\n    cx = (k * rx * y) / ry + (x1 + x2) / 2;\n    cy = (k * -ry * x) / rx + (y1 + y2) / 2;\n    f1 = Math.asin(Number(((y1 - cy) / ry).toFixed(9)));\n    f2 = Math.asin(Number(((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      x2old = x2,\n      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 = a2c2(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [\n      f2,\n      f2old,\n      cx,\n      cy\n    ]);\n  }\n  df = f2 - f1;\n  const c1 = Math.cos(f1),\n    s1 = Math.sin(f1),\n    c2 = Math.cos(f2),\n    s2 = Math.sin(f2),\n    t = Math.tan(df / 4),\n    hx = (4 / 3) * rx * t,\n    hy = (4 / 3) * ry * t,\n    m1 = [x1, y1],\n    m2 = [x1 + hx * s1, y1 - hy * c1],\n    m3 = [x2 + hx * s2, y2 - hy * c2],\n    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  } else {\n    return [[...m2, ...m3, ...m4]].concat(res).map((r) => {\n      const newres: number[] = [];\n      for (let i = 0, ii = r.length; i < ii; i++) {\n        newres[i] =\n          i % 2 ? rotate(r[i - 1], r[i], rad).y : rotate(r[i], r[i + 1], rad).x;\n      }\n      return newres;\n    });\n  }\n}\n\nexport function q2c(\n  x1: number,\n  y1: number,\n  cx: number,\n  cy: number,\n  x2: number,\n  y2: number\n) {\n  return [\n    x1 / 3 + (2 / 3) * cx,\n    y1 / 3 + (2 / 3) * cy,\n    x2 / 3 + (2 / 3) * cx,\n    y2 / 3 + (2 / 3) * cy,\n    x2,\n    y2\n  ];\n}\n\nexport function l2c(x1: number, y1: number, x2: number, y2: number) {\n  return [x1, y1, x2, y2, x2, y2];\n}\n","/* eslint-disable no-case-declarations */\nimport {\n  extractAllNumbers,\n  maxDotNumber,\n  toBlob,\n  toKebab\n} from \"@zyzgroup/core-common\";\nimport { domToBlob, domToString } from \"../file\";\nimport { clickA } from \"../dom/\";\nimport { a2c, a2c2, l2c, q2c } from \"./line2c\";\n\nexport type SVGParsedPathData = [command: string, ...args: number[]];\n\nexport const SVGParsedPathArgsLength: Record<string, number> = {\n  a: 7, // A rx,ry xAxisRotate LargeArcFlag,SweepFlag x,y\n  c: 6, // C c1x,c1y c2x,c2y x,y\n  s: 4, // S c2x,c2y x,y\n  q: 4, // Q cx,cy x,y\n  t: 2, // T x,y\n  m: 2, // M x,y\n  l: 2, // L x,y\n  h: 1, // H x\n  v: 1, // V y\n  z: 0 // Z\n  // r: 4\n};\n\n// console.log(\n//   SVGPathDataToD(\n//     relativeSVGPath(\n//       parseSVGPath(\n//         \"M17.7722 6.22781C18.0759 6.53155 18.0759 7.02401 17.7722 7.32775L7.32775 17.7722C7.02401 18.0759 6.53155 18.0759 6.22781 17.7722C5.92406 17.4685 5.92407 16.976 6.22781 16.6722L16.6722 6.22781C16.976 5.92406 17.4684 5.92406 17.7722 6.22781Z\"\n//       )\n//     )\n//   )\n// );\n\nexport function createSVGElement(tagName = \"path\"): SVGGeometryElement {\n  const el = document.createElementNS.call(\n    document,\n    \"http://www.w3.org/2000/svg\",\n    tagName\n  ) as SVGGeometryElement;\n  return el;\n}\n\nexport function createSvgPath(): SVGPathElement {\n  const path = createSVGElement(\"path\");\n  return path as unknown as SVGPathElement;\n}\n\nexport const isSVGElementPath = (el: any) => {\n  return el instanceof SVGElement && el.tagName === \"path\";\n};\n\nexport function downloadFromSVGElement(\n  svgContainer: SVGElement,\n  name = \"shape\"\n) {\n  return clickA(\n    domToBlob(svgContainer as unknown as HTMLElement),\n    `${name}.svg`\n  );\n}\n\nexport function downloadFromSVGString(svgString: string, name = \"shape\") {\n  return clickA(toBlob(svgString), `${name}.svg`);\n}\n\nexport function getSVGRawStringFromElement(el: HTMLElement) {\n  return domToString(el);\n}\n\n// https://github.com/dy/is-svg-path\n// isSVGPath('M0 0L10 20 20 0Z') //true\n// isSVGPath('M00Z') //false\n// isSVGPath('xyz') //false\nexport function isSVGPath(str: string) {\n  if (typeof str !== \"string\") return false;\n  str = str.trim();\n  // https://www.w3.org/TR/SVG/paths.html#PathDataBNF\n  return (\n    /^[mlhvzaqtcs]\\s*[-+.0-9][^mlhvzaqtcs]+/i.test(str) && /[\\dz]$/i.test(str)\n    // && str.length > 4\n  );\n}\n\nexport function SVGPathDataToD(path: SVGParsedPathData[]): string {\n  return path\n    .map((item) => {\n      if (!item[0]) {\n        return \"\";\n      }\n      switch (item[0].toLowerCase()) {\n        case \"a\":\n          return `${item[0]} ${item[1]},${item[2]} ${item[3]} ${item[4]},${item[5]} ${item[6]},${item[7]}`;\n        case \"c\":\n          return `${item[0]} ${item[1]},${item[2]} ${item[3]},${item[4]} ${item[5]},${item[6]}`;\n        case \"s\":\n        case \"q\":\n          return `${item[0]} ${item[1]},${item[2]} ${item[3]},${item[4]}`;\n        default:\n          return item[0] + \" \" + item.slice(1).join(\",\");\n      }\n    })\n    .join(\" \");\n}\n\n/// parse an svg path data string to `[[command, arg1, arg2, ...], ...]`\nexport function parseSVGPath(path: string): SVGParsedPathData[] {\n  const data: SVGParsedPathData[] = [];\n  if (!isSVGPath(path)) {\n    // throw new Error(`parseSVGPath(path = ${path}) is not a SVG path!`);\n    return data;\n  }\n  path.replace(\n    /([mlhvzaqtcs])([^mlhvzaqtcs]*)/gi,\n    (substring: string, command: string, argsString: string): string => {\n      let type = command.toLowerCase();\n      const args: number[] = extractAllNumbers(argsString);\n\n      // overloaded moveTo\n      if (type == \"m\" && args.length > SVGParsedPathArgsLength[type]) {\n        data.push([command, ...args.splice(0, SVGParsedPathArgsLength[type])]);\n        type = \"l\";\n        command = command == \"m\" ? \"l\" : \"L\";\n      }\n\n      while (args.length) {\n        if (args.length < SVGParsedPathArgsLength[type]) {\n          throw new Error(\n            `parseSVGPath substring:{ ${substring} } command:{ ${command} } args:{ ${args} }`\n          );\n        } else {\n          data.push([\n            command,\n            ...args.splice(0, SVGParsedPathArgsLength[type])\n          ]);\n        }\n      }\n\n      if (type == \"z\") {\n        data.push([command]);\n      }\n\n      return \"\";\n    }\n  );\n  return data;\n}\n\n/// https://github.com/jkroso/abs-svg-path\nexport function absolutizeSVGPath(\n  path: SVGParsedPathData[]\n): SVGParsedPathData[] {\n  let startX = 0;\n  let startY = 0;\n  let x = 0;\n  let y = 0;\n\n  return path.map(function (seg) {\n    const type = seg[0];\n    const command = type.toUpperCase();\n\n    // is relative\n    if (type != command) {\n      seg[0] = command;\n      switch (type) {\n        case \"a\":\n          seg[6] += x;\n          seg[7] += y;\n          break;\n        case \"v\":\n          seg[1] += y;\n          break;\n        case \"h\":\n          seg[1] += x;\n          break;\n        default:\n          for (let i = 1; i < seg.length; ) {\n            (seg[i++] as number) += x;\n            (seg[i++] as number) += y;\n          }\n      }\n    }\n\n    switch (command) {\n      case \"Z\":\n        x = startX;\n        y = startY;\n        break;\n      case \"H\":\n        x = seg[1];\n        break;\n      case \"V\":\n        y = seg[1];\n        break;\n      case \"M\":\n        x = startX = seg[1];\n        y = startY = seg[2];\n        break;\n      default:\n        x = seg[seg.length - 2] as number;\n        y = seg[seg.length - 1] as number;\n    }\n\n    return seg;\n  });\n}\n\nexport function relativeSVGPath(\n  path: SVGParsedPathData[]\n): SVGParsedPathData[] {\n  let startX = 0;\n  let startY = 0;\n  let x = 0;\n  let y = 0;\n\n  return path.map(function (seg) {\n    const type = seg[0];\n    const command = type.toLowerCase();\n\n    // is absolute\n    if (type != command) {\n      seg[0] = command;\n      switch (type) {\n        case \"A\":\n          seg[6] -= x;\n          seg[7] -= y;\n          break;\n        case \"V\":\n          seg[1] -= y;\n          break;\n        case \"H\":\n          seg[1] -= x;\n          break;\n        default:\n          for (let i = 1; i < seg.length; ) {\n            (seg[i++] as number) -= x;\n            (seg[i++] as number) -= y;\n          }\n      }\n    }\n\n    switch (command) {\n      case \"z\":\n        x = startX;\n        y = startY;\n        break;\n      case \"h\":\n        x += seg[1];\n        break;\n      case \"v\":\n        y += seg[1];\n        break;\n      case \"m\":\n        x += seg[1];\n        y += seg[2];\n        startX += seg[1];\n        startY += seg[2];\n        break;\n      default:\n        x += seg[seg.length - 2] as number;\n        y += seg[seg.length - 1] as number;\n    }\n\n    return seg;\n  });\n}\n\n/// 统统变为 CubicBezier\n/// https://github.com/jkroso/normalize-svg-path\nexport function normalizeSVGPath(\n  path: SVGParsedPathData[]\n): SVGParsedPathData[] {\n  const result: SVGParsedPathData[] = [];\n  let startX = 0;\n  let startY = 0;\n  let x = 0;\n  let y = 0;\n  let quadX = 0;\n  let quadY = 0;\n  let bezierX = 0;\n  let bezierY = 0;\n\n  let prevCommand;\n\n  for (let i = 0, len = path.length; i < len; i++) {\n    let seg = path[i];\n    const command = seg[0];\n\n    switch (command) {\n      case \"M\":\n        startX = seg[1];\n        startY = seg[2];\n        break;\n      case \"A\":\n        const curves = a2c(\n          x,\n          y,\n          seg[6],\n          seg[7],\n          seg[4],\n          seg[5],\n          seg[1],\n          seg[2],\n          seg[3]\n        );\n        // const curves = a2c2(\n        //   x,\n        //   y,\n        //   seg[1],\n        //   seg[2],\n        //   seg[3],\n        //   seg[4],\n        //   seg[5],\n        //   seg[6],\n        //   seg[7]\n        // );\n        if (!curves.length) continue;\n        curves.forEach((curve, j) => {\n          /// a2c\n          const [x0, y0, x1, y1, x2, y2, x3, y3] = curve;\n          /// a2c2\n          // const [x1, y1, x2, y2, x3, y3] = curve;\n          seg = [\"C\", x1, y1, x2, y2, x3, y3];\n          if (j < curves.length - 1) {\n            result.push(seg);\n          }\n        });\n        break;\n      case \"S\":\n        // default control point\n        let cx = x;\n        let cy = y;\n        if (prevCommand == \"C\" || prevCommand == \"S\") {\n          cx += cx - bezierX; // reflect the previous command's control\n          cy += cy - bezierY; // point relative to the current point\n        }\n        seg = [\"C\", cx, cy, seg[1], seg[2], seg[3], seg[4]];\n        break;\n      case \"T\":\n        if (prevCommand == \"Q\" || prevCommand == \"T\") {\n          quadX = x * 2 - quadX; // as with 'S' reflect previous control point\n          quadY = y * 2 - quadY;\n        } else {\n          quadX = x;\n          quadY = y;\n        }\n        seg = [\"C\", ...q2c(x, y, quadX, quadY, seg[1], seg[2])];\n        break;\n      case \"Q\":\n        quadX = seg[1];\n        quadY = seg[2];\n        seg = [\"C\", ...q2c(x, y, seg[1], seg[2], seg[3], seg[4])];\n        break;\n      case \"L\":\n        seg = [\"C\", ...l2c(x, y, seg[1], seg[2])];\n        break;\n      case \"H\":\n        seg = [\"C\", ...l2c(x, y, seg[1], y)];\n        break;\n      case \"V\":\n        seg = [\"C\", ...l2c(x, y, x, seg[1])];\n        break;\n      case \"Z\":\n        seg = [\"C\", ...l2c(x, y, startX, startY)];\n        break;\n    }\n\n    prevCommand = command;\n    x = seg[seg.length - 2] as number;\n    y = seg[seg.length - 1] as number;\n    if (seg.length > 4) {\n      bezierX = seg[seg.length - 4] as number;\n      bezierY = seg[seg.length - 3] as number;\n    } else {\n      bezierX = x;\n      bezierY = y;\n    }\n\n    result.push(seg);\n  }\n\n  return result;\n}\n\n/// http://schepers.cc/getting-to-the-point\n/// Catmull-Rom curves : `R x1,y1 x2,y2 x3,y3`\nexport function catmullRom2bezier(crp: number[]): SVGParsedPathData[] {\n  const d: SVGParsedPathData[] = [];\n  for (let i = 0, iLen = crp.length; iLen - 2 > i; i += 2) {\n    let p;\n    if (0 == i) {\n      p = [\n        { x: crp[i], y: crp[i + 1] },\n        { x: crp[i], y: crp[i + 1] },\n        { x: crp[i + 2], y: crp[i + 3] },\n        { x: crp[i + 4], y: crp[i + 5] }\n      ];\n    } else if (iLen - 4 == i) {\n      p = [\n        { x: crp[i - 2], y: crp[i - 1] },\n        { x: crp[i], y: crp[i + 1] },\n        { x: crp[i + 2], y: crp[i + 3] },\n        { x: crp[i + 2], y: crp[i + 3] }\n      ];\n    } else {\n      p = [\n        { x: crp[i - 2], y: crp[i - 1] },\n        { x: crp[i], y: crp[i + 1] },\n        { x: crp[i + 2], y: crp[i + 3] },\n        { x: crp[i + 4], y: crp[i + 5] }\n      ];\n    }\n\n    // Catmull-Rom to Cubic Bezier conversion matrix\n    //    0       1       0       0\n    //  -1/6      1      1/6      0\n    //    0      1/6      1     -1/6\n    //    0       0       1       0\n\n    const bp = [\n      { x: p[1].x, y: p[1].y },\n      {\n        x: (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n        y: (-p[0].y + 6 * p[1].y + p[2].y) / 6\n      },\n      {\n        x: (p[1].x + 6 * p[2].x - p[3].x) / 6,\n        y: (p[1].y + 6 * p[2].y - p[3].y) / 6\n      },\n      { x: p[2].x, y: p[2].y }\n    ];\n\n    d.push([\"C\", bp[1].x, bp[1].y, bp[2].x, bp[2].y, bp[3].x, bp[3].y]);\n  }\n\n  return d;\n}\n\n// Convert 'Z', 'V' and 'H' segments to 'L' segments\nexport function zvhToLSVGPath(path: SVGParsedPathData[]): SVGParsedPathData[] {\n  const result: SVGParsedPathData[] = [];\n  let startPoint: SVGParsedPathData = [\"L\", 0, 0];\n  let lastPoint: SVGParsedPathData;\n  for (let i = 0, len = path.length; i < len; i++) {\n    const pt = path[i];\n    switch (pt[0]) {\n      case \"M\":\n        startPoint = [\"L\", pt[1], pt[2]];\n        result.push(pt);\n        break;\n      case \"Z\":\n        result.push(startPoint);\n        break;\n      case \"H\":\n        lastPoint = result[result.length - 1] || [\"L\", 0, 0];\n        result.push([\n          \"L\",\n          pt[1],\n          lastPoint[lastPoint.length - 1]\n        ] as SVGParsedPathData);\n        break;\n      case \"V\":\n        lastPoint = result[result.length - 1] || [\"L\", 0, 0];\n        result.push([\n          \"L\",\n          lastPoint[lastPoint.length - 2],\n          pt[1]\n        ] as SVGParsedPathData);\n        break;\n      default:\n        result.push(pt);\n    }\n  }\n  return result;\n}\n\n// Expand shorthand curve commands to full versions; mutates the path in place for efficiency\n// Requires commands have already been converted to absolute versions\nexport function longhandSVGPath(\n  path: SVGParsedPathData[]\n): SVGParsedPathData[] {\n  const conversion: Record<string, { to: string; x: number }> = {\n    S: { to: \"C\", x: 3 },\n    T: { to: \"Q\", x: 1 }\n  };\n  let prev;\n  let x1 = 0;\n  let y1 = 0;\n  for (let i = 0, len = path.length; i < len; i++) {\n    const cmd = path[i];\n    const convert = conversion[cmd[0]];\n    if (convert) {\n      cmd[0] = convert.to;\n      if (prev) {\n        if (prev[0] === convert.to) {\n          x1 = 2 * Number(prev[convert.x + 2]) - Number(prev[convert.x]);\n          y1 = 2 * Number(prev[convert.x + 3]) - Number(prev[convert.x + 1]);\n        } else {\n          x1 = Number(prev[prev.length - 2]);\n          y1 = Number(prev[prev.length - 1]);\n        }\n      }\n      cmd.splice(1, 0, x1, y1);\n    }\n    prev = cmd;\n  }\n  return path;\n}\n","import { maxDotNumber, angle, distance } from \"@zyzgroup/core-common\";\nimport { Matrix, Matrix4 } from \"../Matrix\";\nimport { YZCanvasContext } from \"../../canvas/YZCanvasContext\";\nimport {\n  absolutizeSVGPath,\n  createSvgPath,\n  normalizeSVGPath,\n  parseSVGPath,\n  SVGPathDataToD,\n  type SVGParsedPathData\n} from \"../../svg/SVGUtil\";\nimport { a2c, l2c, q2c } from \"../../svg/line2c\";\nimport L from \"./L\";\nimport CubicBezier from \"./CubicBezier\";\nimport QuadraticBezier from \"./QuadraticBezier\";\nimport Arc from \"./Arc\";\n\n/// 连续的曲线\nexport class PathD {\n  /// cX cY 为相对于自身 (0,0) 点的相对值\n  public cX: number;\n  public cY: number;\n  public x: number;\n  public y: number;\n  public degree: number;\n  public scalarX: number;\n  public scalarY: number;\n\n  /// 绝对值\n  public startPathX = 0;\n  public startPathY = 0;\n  public prevPathX = 0;\n  public prevPathY = 0;\n  public normalizedLines: CubicBezier[] = [];\n\n  // d = \"M0,0\"\n  // d = [['C',1,2,3,4,5,6]]\n  constructor(options?: {\n    d?: string | SVGParsedPathData[] | PathD;\n    originMatrix?: Matrix | Matrix4 | DOMMatrix;\n    centerX?: number;\n    centerY?: number;\n    x?: number;\n    y?: number;\n    degree?: number;\n    scalar?: number;\n    scalarX?: number;\n    scalarY?: number;\n  }) {\n    this.cX = 0;\n    this.cY = 0;\n    this.x = options?.x || 0;\n    this.y = options?.y || 0;\n    if (\n      typeof options?.centerX == \"number\" &&\n      typeof options?.centerY == \"number\"\n    ) {\n      this.cX = options.centerX - this.x;\n      this.cY = options.centerY - this.y;\n    }\n    this.degree = options?.degree || 0;\n    this.scalarX = 1;\n    this.scalarY = 1;\n    if (options?.scalar !== void 0) {\n      this.scalarX = options.scalar;\n      this.scalarY = options.scalar;\n    }\n    if (options?.scalarX !== void 0) {\n      this.scalarX = options.scalarX;\n    }\n    if (options?.scalarY !== void 0) {\n      this.scalarY = options.scalarY;\n    }\n    this.reset(options?.d, options?.originMatrix);\n  }\n\n  public reset(\n    d?: string | SVGParsedPathData[] | PathD,\n    originMatrix?: Matrix | Matrix4 | DOMMatrix\n  ) {\n    if (typeof d == \"string\") {\n      this.resetFromSVGPathData(parseSVGPath(d), originMatrix);\n    } else if (d instanceof PathD) {\n      this.resetFromSVGPathData(d.toSVGPathData(), originMatrix);\n    } else {\n      this.resetFromSVGPathData(d || [], originMatrix);\n    }\n  }\n\n  private resetFromSVGPathData(\n    data: SVGParsedPathData[],\n    originMatrix?: Matrix | Matrix4 | DOMMatrix\n  ) {\n    this.normalizedLines = [];\n    /// paths 只包含 M 或 C 语句\n    const paths = normalizeSVGPath(absolutizeSVGPath(data));\n    this.prevPathX = this.startPathX = 0;\n    this.prevPathY = this.startPathY = 0;\n    let isResetStart = false;\n    for (let i = 0, count = paths.length; i < count; i++) {\n      const path = paths[i];\n      const command = path[0];\n      if (command == \"M\") {\n        if (!isResetStart) {\n          isResetStart = true;\n          this.startPathX = path[1];\n          this.startPathY = path[2];\n        }\n        this.prevPathX = path[1];\n        this.prevPathY = path[2];\n        continue;\n      }\n      this.appendLine(\n        new CubicBezier({\n          c1x: path[1],\n          c1y: path[2],\n          c2x: path[3],\n          c2y: path[4],\n          toX: path[5],\n          toY: path[6]\n        })\n      );\n    }\n    if (originMatrix) {\n      ({ x: this.startPathX, y: this.startPathY } = originMatrix.transformPoint(\n        {\n          x: this.startPathX,\n          y: this.startPathY\n        }\n      ));\n      ({ x: this.prevPathX, y: this.prevPathY } = originMatrix.transformPoint({\n        x: this.prevPathX,\n        y: this.prevPathY\n      }));\n      this.normalizedLines.forEach((l) => {\n        ({ x: l.x, y: l.y } = originMatrix.transformPoint({ x: l.x, y: l.y }));\n        ({ x: l.c1x, y: l.c1y } = originMatrix.transformPoint({\n          x: l.c1x,\n          y: l.c1y\n        }));\n        ({ x: l.c2x, y: l.c2y } = originMatrix.transformPoint({\n          x: l.c2x,\n          y: l.c2y\n        }));\n        ({ x: l.toX, y: l.toY } = originMatrix.transformPoint({\n          x: l.toX,\n          y: l.toY\n        }));\n      });\n    }\n  }\n\n  static fromPolymorphPoints(points: number[]): PathD {\n    const d = new PathD();\n    d.prevPathX = d.startPathX = points[0] || 0;\n    d.prevPathY = d.startPathY = points[1] || 0;\n    for (let k = 2, count = points.length; k + 5 < count; k += 6) {\n      d.appendLine(\n        new CubicBezier({\n          c1x: points[k],\n          c1y: points[k + 1],\n          c2x: points[k + 2],\n          c2y: points[k + 3],\n          toX: points[k + 4],\n          toY: points[k + 5]\n        })\n      );\n    }\n    return d;\n  }\n\n  static fromLines(lines: L[]): PathD {\n    const d = new PathD();\n    d.prevPathX = d.startPathX = lines[0].x || 0;\n    d.prevPathY = d.startPathY = lines[0].y || 0;\n    for (let i = 0, count = lines.length; i < count; i++) {\n      d.appendLine(lines[i]);\n    }\n    return d;\n  }\n\n  /// 涉及 this.prevPathX + this.prevPathY\n  private appendLine(line: L) {\n    if (line instanceof Arc) {\n      const curves = a2c(\n        this.prevPathX,\n        this.prevPathY,\n        line.toX,\n        line.toY,\n        line.largeArcFlag,\n        line.sweepFlag,\n        line.rx,\n        line.ry,\n        line.xAxisRotate\n      );\n      curves.forEach((curve) => {\n        const [x0, y0, x1, y1, x2, y2, x, y] = curve;\n        this.normalizedLines.push(\n          new CubicBezier({\n            x: this.prevPathX,\n            y: this.prevPathY,\n            c1x: x1,\n            c1y: y1,\n            c2x: x2,\n            c2y: y2,\n            toX: x,\n            toY: y\n          })\n        );\n        this.prevPathX = x;\n        this.prevPathY = y;\n      });\n      return;\n    }\n    let x1, y1, x2, y2, toX, toY;\n    if (line instanceof CubicBezier) {\n      x1 = line.c1x;\n      y1 = line.c1y;\n      x2 = line.c2x;\n      y2 = line.c2y;\n      toX = line.toX;\n      toY = line.toY;\n    } else if (line instanceof QuadraticBezier) {\n      [x1, y1, x2, y2, toX, toY] = q2c(\n        this.prevPathX,\n        this.prevPathY,\n        line.cx,\n        line.cy,\n        line.toX,\n        line.toY\n      );\n    } else {\n      /// L\n      [x1, y1, x2, y2, toX, toY] = l2c(\n        this.prevPathX,\n        this.prevPathY,\n        line.toX,\n        line.toY\n      );\n    }\n    this.normalizedLines.push(\n      new CubicBezier({\n        x: this.prevPathX,\n        y: this.prevPathY,\n        c1x: x1,\n        c1y: y1,\n        c2x: x2,\n        c2y: y2,\n        toX: toX,\n        toY: toY\n      })\n    );\n    this.prevPathX = toX;\n    this.prevPathY = toY;\n  }\n\n  /// 绝对值\n  toSVGPathData(): SVGParsedPathData[] {\n    const { startPathX, startPathY, normalizedLines } = this.updateTransform();\n    const data: SVGParsedPathData[] = [];\n    data.push([\"M\", startPathX, startPathY]);\n    for (let i = 0, count = normalizedLines.length; i < count; i++) {\n      data.push(...normalizedLines[i].toSVGPathData());\n    }\n    // data.push([\"z\"]);\n    return data;\n  }\n\n  toSVGPathD(): string {\n    return SVGPathDataToD(this.toSVGPathData());\n  }\n\n  /// PathD 自己管理 canvas transform\n  toCanvasContext(ctx: YZCanvasContext) {\n    const { startPathX, startPathY, normalizedLines } = this.updateTransform();\n    ctx.beginPath();\n    ctx.moveTo(startPathX, startPathY);\n    normalizedLines.forEach((c) => {\n      c.toCanvasContext(ctx);\n    });\n    // ctx.closePath();\n  }\n\n  /// 绝对值\n  public getBoundingClientRect() {\n    const { normalizedLines } = this.updateTransform();\n    const X: number[] = [];\n    const Y: number[] = [];\n    normalizedLines.forEach((l) => {\n      const rect = l.getBoundingClientRect();\n      X.push(rect.x, rect.x + rect.width);\n      Y.push(rect.y, rect.y + rect.height);\n    });\n    if (X.length == 0 || Y.length == 0) {\n      return { x: 0, y: 0, width: 0, height: 0 };\n    }\n    const xmin = Math.min.apply(0, X);\n    const ymin = Math.min.apply(0, Y);\n    const xmax = Math.max.apply(0, X);\n    const ymax = Math.max.apply(0, Y);\n    return {\n      x: xmin,\n      y: ymin,\n      width: xmax - xmin,\n      height: ymax - ymin\n    };\n  }\n\n  public update(t: {\n    cX?: number;\n    cY?: number;\n    x: number;\n    y: number;\n    degree: number;\n    scalarX: number;\n    scalarY: number;\n  }) {\n    this.cX = typeof t.cX == \"number\" ? t.cX : this.cX;\n    this.cY = typeof t.cY == \"number\" ? t.cY : this.cY;\n    this.x = t.x;\n    this.y = t.y;\n    this.degree = t.degree;\n    this.scalarX = t.scalarX;\n    this.scalarY = t.scalarY;\n  }\n\n  private updateTransform() {\n    /// 移动的是坐标系\n    /// the order of these are important\n    const m = new Matrix();\n\n    /// followMouse 不对\n    // m.translate(\n    //   this.x - this.prevX + this.prevCX,\n    //   this.y - this.prevY + this.prevCY\n    // );\n    // m.scale(1 / this.prevScalarX, 1 / this.prevScalarY);\n    // m.rotate(-this.prevDegree);\n    // m.translate(this.cX - this.prevCX, this.cY - this.prevCY);\n    // m.rotate(this.degree);\n    // m.scale(this.scalarX, this.scalarY);\n    // m.translate(-this.cX, -this.cY);\n\n    /// 连续精度影响 不对\n    // m.scale(\n    //   this.scalarX / this.prevScalarX,\n    //   this.scalarY / this.prevScalarY,\n    //   this.cX + this.x,\n    //   this.cY + this.y\n    // );\n    // m.rotate(this.degree - this.prevDegree, this.cX + this.x, this.cY + this.y);\n    // m.translate(this.x - this.prevX, this.y - this.prevY);\n\n    /// 连续精度影响 不对\n    // m.translate(this.x + this.cX, this.y + this.cY);\n    // m.scale(this.scalarX / this.prevScalarX, this.scalarY / this.prevScalarY);\n    // m.rotate(this.degree - this.prevDegree);\n    // m.translate(-this.prevX - this.cX, -this.prevY - this.cY);\n\n    m.translate(this.x + this.cX, this.y + this.cY);\n    m.rotate(this.degree);\n    m.scale(this.scalarX, this.scalarY);\n    m.translate(-this.cX, -this.cY);\n\n    if (!m.isIdentity) {\n      let startPathX = this.startPathX;\n      let startPathY = this.startPathY;\n      ({ x: startPathX, y: startPathY } = m.transformPoint({\n        x: startPathX,\n        y: startPathY\n      }));\n      const normalizedLines: CubicBezier[] = [];\n      this.normalizedLines.forEach((l) => {\n        let x = l.x;\n        let y = l.y;\n        let c1x = l.c1x;\n        let c1y = l.c1y;\n        let c2x = l.c2x;\n        let c2y = l.c2y;\n        let toX = l.toX;\n        let toY = l.toY;\n        ({ x: x, y: y } = m.transformPoint({ x: x, y: y }));\n        ({ x: c1x, y: c1y } = m.transformPoint({ x: c1x, y: c1y }));\n        ({ x: c2x, y: c2y } = m.transformPoint({ x: c2x, y: c2y }));\n        ({ x: toX, y: toY } = m.transformPoint({ x: toX, y: toY }));\n        normalizedLines.push(\n          new CubicBezier({ x, y, c1x, c1y, c2x, c2y, toX, toY })\n        );\n      });\n      return {\n        startPathX,\n        startPathY,\n        normalizedLines\n      };\n    } else {\n      return {\n        startPathX: this.startPathX,\n        startPathY: this.startPathY,\n        normalizedLines: this.normalizedLines\n      };\n    }\n  }\n\n  /// returns length in pixels\n  getTotalLength(): number {\n    const { normalizedLines } = this.updateTransform();\n    /// 实际值：1718.289461119151\n    return normalizedLines.reduce((acc, l) => (acc += l.length()), 0);\n    /// 实际值：1718.2906494140625\n    // const el = createSvgPath(this.toSVGPathD());\n    // return el.getTotalLength();\n  }\n\n  getPointAtLength(length: number): {\n    x: number;\n    y: number;\n    alpha: number; // degree: angle of derivative\n  } {\n    const { normalizedLines } = this.updateTransform();\n    /// 实际值：{x: 69.12001660070015, y: 139.8368628028231}\n    let len = 0;\n    const linesCount = normalizedLines.length;\n    for (let i = 0; i < linesCount; i++) {\n      const p = normalizedLines[i];\n      const l = p.length();\n      if (len + l >= length) {\n        return p.getPointAtSegmentLength(length - len);\n      }\n      len += l;\n    }\n    return normalizedLines[linesCount - 1].getPointAtSegmentLength(1);\n    /// 实际值：{x: 69.12151336669922, y: 139.8350830078125}\n    // const el = createSvgPath(this.toSVGPathD());\n    // return el.getPointAtLength(length);\n  }\n\n  /// 与 getPointAtLength 类似\n  /// t (0.0 to 1.0) : The fraction of the overall duration of the path\n  interpolate(t: number): { x: number; y: number } {\n    const { startPathX, startPathY, normalizedLines } = this.updateTransform();\n    const linesCount = normalizedLines.length;\n    if (linesCount === 0) {\n      return { x: startPathX, y: startPathY };\n    } else if (linesCount === 1) {\n      return normalizedLines[0].interpolate(t);\n    } else {\n      let ratio = t * linesCount;\n      let path = normalizedLines[0];\n      ratio--;\n      if (ratio > 1) {\n        for (let i = 1; i < linesCount; i++) {\n          path = normalizedLines[i];\n          if (ratio > 1) {\n            ratio -= 1;\n          } else {\n            break;\n          }\n        }\n      }\n      return path.interpolate(ratio);\n    }\n  }\n\n  /// from | to  : 0 ~ 1\n  getSubpath(from: number, to: number): PathD {\n    if (this.getTotalLength() - to < 1e-6) {\n      return this.getSubpathsAtLength(this, from);\n    } else {\n      const a = this.getSubpathsAtLength(this, to, 1);\n      return from ? this.getSubpathsAtLength(a, from) : a;\n    }\n  }\n\n  getSubpathsAtLength(path: PathD, length: number, onlystart?: number): PathD {\n    const { startPathX, startPathY, normalizedLines } = path.updateTransform();\n    /// 从 0 到 length 的部分\n    let start: PathD | null = null;\n    let len = 0;\n    // const sp = new PathD({ x: path.x, y: path.y });\n    const sp = new PathD();\n    sp.prevPathX = sp.startPathX = startPathX;\n    sp.prevPathY = sp.startPathY = startPathY;\n    for (let i = 0, ii = normalizedLines.length; i < ii; i++) {\n      const p = normalizedLines[i];\n      const l = p.length();\n      if (len + l > length) {\n        if (!start) {\n          const point = p.getPointAtSegmentLength(length - len);\n          sp.appendLine(\n            new CubicBezier({\n              c1x: point.start.x,\n              c1y: point.start.y,\n              c2x: point.m.x,\n              c2y: point.m.y,\n              toX: point.x,\n              toY: point.y\n            })\n          );\n          if (onlystart) {\n            return sp;\n          }\n          start = sp;\n          /// 从 length 到 end 的部分\n          // sp.prevPathX = point.x;\n          // sp.prevPathY = point.y;\n          sp.appendLine(\n            new CubicBezier({\n              c1x: point.n.x,\n              c1y: point.n.y,\n              c2x: point.end.x,\n              c2y: point.end.y,\n              toX: p.x,\n              toY: p.y\n            })\n          );\n          len += l;\n          continue;\n        }\n      }\n      len += l;\n      sp.appendLine(p);\n    }\n    // sp.updateTransform();\n    return sp;\n  }\n\n  /// drag along path\n  closestPoint(\n    pointX: number,\n    pointY: number\n  ): {\n    point: {\n      x: number;\n      y: number;\n    };\n    rotation: number;\n    distance: number;\n  } {\n    const pathLength = this.getTotalLength();\n    let best = { x: pointX, y: pointY };\n    let bestLength = 0;\n    let bestDistance = Infinity;\n    let precision = 8;\n\n    // linear scan for coarse approximation\n    for (\n      let scanLength = 0;\n      scanLength <= pathLength;\n      scanLength += precision\n    ) {\n      const scan = this.getPointAtLength(scanLength);\n      const scanDistance = Math.pow(\n        distance(scan.x, scan.y, pointX, pointY),\n        2\n      );\n      if (scanDistance < bestDistance) {\n        best = scan;\n        bestLength = scanLength;\n        bestDistance = scanDistance;\n      }\n    }\n\n    // binary search for precise estimate\n    precision /= 2;\n    while (precision > 0.5) {\n      const beforeLength = bestLength - precision;\n      const before = this.getPointAtLength(beforeLength);\n      const beforeDistance = Math.pow(\n        distance(before.x, before.y, pointX, pointY),\n        2\n      );\n      const afterLength = bestLength + precision;\n      const after = this.getPointAtLength(afterLength);\n      const afterDistance = Math.pow(\n        distance(after.x, after.y, pointX, pointY),\n        2\n      );\n      if (beforeLength >= 0 && beforeDistance < bestDistance) {\n        best = before;\n        bestLength = beforeLength;\n        bestDistance = beforeDistance;\n      } else if (afterLength <= pathLength && afterDistance < bestDistance) {\n        best = after;\n        bestLength = afterLength;\n        bestDistance = afterDistance;\n      } else {\n        precision /= 2;\n      }\n    }\n\n    const p = this.getPointAtLength(\n      bestLength + (bestLength === pathLength ? -0.1 : 0.1)\n    );\n\n    return {\n      point: best,\n      rotation:\n        bestLength >= pathLength\n          ? angle(p.x, p.y, best.x, best.y)\n          : angle(best.x, best.y, p.x, p.y),\n      distance: Math.sqrt(bestDistance)\n    };\n  }\n\n  get polymorphPoints(): number[] {\n    const { startPathX, startPathY, normalizedLines } = this.updateTransform();\n    return [startPathX, startPathY].concat(\n      normalizedLines.reduce(\n        (acc, l) => acc.concat([l.c1x, l.c1y, l.c2x, l.c2y, l.toX, l.toY]),\n        [] as number[]\n      )\n    );\n  }\n\n  perimeterPoints(): number {\n    const pts = this.polymorphPoints;\n    const n = pts.length;\n    let x2 = pts[n - 2];\n    let y2 = pts[n - 1];\n    let p = 0;\n    for (let i = 0; i < n; i += 6) {\n      p += distance(pts[i], pts[i + 1], x2, y2);\n      x2 = pts[i];\n      y2 = pts[i + 1];\n    }\n    return Math.floor(p);\n  }\n\n  expendFill(totalLength: number): SVGParsedPathData[] {\n    const ns = this.polymorphPoints;\n    const nsLength = ns.length;\n    let needAdded = totalLength - nsLength;\n    const ratio = Math.ceil(totalLength / nsLength);\n    const points: SVGParsedPathData[] = [];\n    points.push([\"M\", ns[0], ns[1]]);\n    let k = 2;\n    while (k + 5 <= nsLength - 1) {\n      const c1x = ns[k++];\n      const c1y = ns[k++];\n      const c2x = ns[k++];\n      const c2y = ns[k++];\n      const x = ns[k++];\n      const y = ns[k++];\n      points.push([\"C\", c1x, c1y, c2x, c2y, x, y]);\n      let f = 0;\n      while (f < ratio && needAdded > 0) {\n        points.push([\"C\", x, y, x, y, x, y]);\n        needAdded -= 6;\n        f++;\n      }\n    }\n    return points;\n  }\n\n  static mixPoints(a: number[], b: number[], o: number): number[] {\n    const alen = a.length;\n    const results = new Array(alen);\n    for (let i = 0; i < alen; i++) {\n      results[i] = maxDotNumber(a[i] + (b[i] - a[i]) * o, 6);\n    }\n    return results;\n  }\n\n  /// offset : 0 ~ 1\n  static getPathInterpolator(\n    left: SVGParsedPathData[],\n    right: SVGParsedPathData[]\n  ): (offset: number) => SVGParsedPathData[] {\n    return (offset: number) => {\n      if (Math.abs(offset - 0) < Number.EPSILON) {\n        // return SVGPathDataToD(left);\n        return left;\n      }\n      if (Math.abs(offset - 1) < Number.EPSILON) {\n        // return SVGPathDataToD(right);\n        return right;\n      }\n      const path = PathD.fromPolymorphPoints(\n        PathD.mixPoints(\n          new PathD({ d: left }).polymorphPoints,\n          new PathD({ d: right }).polymorphPoints,\n          offset\n        )\n      );\n      return path.toSVGPathData();\n    };\n  }\n}\n\nexport default PathD;\n","export default class Sequence {\n  private static _nextId = 0;\n\n  static nextId(): number {\n    return Sequence._nextId++;\n  }\n}\n","// https://easings.net/\n\n// 缓动函数 t: 0-1\nexport type EasingFunction = (t: number) => number;\n\nexport const Easing = {\n  // 线性\n  Linear: {\n    None: function (t: number): number {\n      return t;\n    }\n  },\n  Ease: {\n    In: function (t: number): number {\n      return Math.pow(t, 1.7);\n    }\n  },\n  // 二次\n  Quadratic: {\n    In: function (t: number): number {\n      return t * t;\n    },\n    Out: function (t: number): number {\n      return t * (2 - t);\n    },\n    InOut: function (t: number): number {\n      if ((t *= 2) < 1) {\n        return 0.5 * t * t;\n      }\n      return -0.5 * (--t * (t - 2) - 1);\n    },\n    style: \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\"\n  },\n  // 三次\n  Cubic: {\n    In: function (t: number): number {\n      return t * t * t;\n    },\n    Out: function (t: number): number {\n      return --t * t * t + 1;\n    },\n    InOut: function (t: number): number {\n      if ((t *= 2) < 1) {\n        return 0.5 * t * t * t;\n      }\n      return 0.5 * ((t -= 2) * t * t + 2);\n    }\n  },\n  // 四次\n  Quartic: {\n    In: function (t: number): number {\n      return t * t * t * t;\n    },\n    Out: function (t: number): number {\n      return 1 - --t * t * t * t;\n    },\n    InOut: function (t: number): number {\n      if ((t *= 2) < 1) {\n        return 0.5 * t * t * t * t;\n      }\n      return -0.5 * ((t -= 2) * t * t * t - 2);\n    }\n  },\n  // 五次\n  Quintic: {\n    In: function (t: number): number {\n      return t * t * t * t * t;\n    },\n    Out: function (t: number): number {\n      return --t * t * t * t * t + 1;\n    },\n    InOut: function (t: number): number {\n      if ((t *= 2) < 1) {\n        return 0.5 * t * t * t * t * t;\n      }\n      return 0.5 * ((t -= 2) * t * t * t * t + 2);\n    }\n  },\n  // 正弦曲线\n  Sinusoidal: {\n    In: function (t: number): number {\n      return 1 - Math.sin(((1.0 - t) * Math.PI) / 2);\n    },\n    Out: function (t: number): number {\n      return Math.sin((t * Math.PI) / 2);\n    },\n    InOut: function (t: number): number {\n      return 0.5 * (1 - Math.sin(Math.PI * (0.5 - t)));\n    }\n  },\n  // 指数\n  Exponential: {\n    In: function (t: number): number {\n      return t === 0 ? 0 : Math.pow(1024, t - 1);\n    },\n    Out: function (t: number): number {\n      return t === 1 ? 1 : 1 - Math.pow(2, -10 * t);\n    },\n    InOut: function (t: number): number {\n      if (t === 0) {\n        return 0;\n      }\n      if (t === 1) {\n        return 1;\n      }\n      if ((t *= 2) < 1) {\n        return 0.5 * Math.pow(1024, t - 1);\n      }\n      return 0.5 * (-Math.pow(2, -10 * (t - 1)) + 2);\n    }\n  },\n  // 圆\n  Circular: {\n    In: function (t: number): number {\n      return 1 - Math.sqrt(1 - t * t);\n    },\n    Out: function (t: number): number {\n      return Math.sqrt(1 - --t * t);\n    },\n    InOut: function (t: number): number {\n      if ((t *= 2) < 1) {\n        return -0.5 * (Math.sqrt(1 - t * t) - 1);\n      }\n      return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n    },\n    style: \"cubic-bezier(0.1, 0.57, 0.1, 1)\" // Not properly \"circular\" but this looks better, it should be (0.075, 0.82, 0.165, 1)\n  },\n  // 松紧带\n  Elastic: {\n    In: function (t: number): number {\n      if (t === 0) {\n        return 0;\n      }\n      if (t === 1) {\n        return 1;\n      }\n      return -Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI);\n    },\n    Out: function (t: number): number {\n      if (t === 0) {\n        return 0;\n      }\n      if (t === 1) {\n        return 1;\n      }\n      return Math.pow(2, -10 * t) * Math.sin((t - 0.1) * 5 * Math.PI) + 1;\n    },\n    InOut: function (t: number): number {\n      if (t === 0) {\n        return 0;\n      }\n      if (t === 1) {\n        return 1;\n      }\n      t *= 2;\n      if (t < 1) {\n        return (\n          -0.5 * Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI)\n        );\n      }\n      return (\n        0.5 * Math.pow(2, -10 * (t - 1)) * Math.sin((t - 1.1) * 5 * Math.PI) + 1\n      );\n    }\n  },\n  // 后退\n  Back: {\n    In: function (t: number): number {\n      const s = 1.70158;\n      return t === 1 ? 1 : t * t * ((s + 1) * t - s);\n    },\n    Out: function (t: number): number {\n      const s = 1.70158;\n      // const s = 4;\n      return t === 0 ? 0 : --t * t * ((s + 1) * t + s) + 1;\n    },\n    InOut: function (t: number): number {\n      const s = 1.70158 * 1.525;\n      if ((t *= 2) < 1) {\n        return 0.5 * (t * t * ((s + 1) * t - s));\n      }\n      return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n    },\n    style: \"cubic-bezier(0.175, 0.885, 0.32, 1.275)\"\n  },\n  // 弹跳\n  Bounce: {\n    In: function (t: number): number {\n      return 1 - Easing.Bounce.Out(1 - t);\n    },\n    Out: function (t: number): number {\n      const n1 = 7.5625;\n      const d1 = 2.75;\n\n      if (t < 1 / d1) {\n        return n1 * t * t;\n      } else if (t < 2 / d1) {\n        return n1 * (t -= 1.5 / d1) * t + 0.75;\n      } else if (t < 2.5 / d1) {\n        return n1 * (t -= 2.25 / d1) * t + 0.9375;\n      } else {\n        return n1 * (t -= 2.625 / d1) * t + 0.984375;\n      }\n    },\n    InOut: function (t: number): number {\n      if (t < 0.5) {\n        return Easing.Bounce.In(t * 2) * 0.5;\n      }\n      return Easing.Bounce.Out(t * 2 - 1) * 0.5 + 0.5;\n    }\n  },\n  // 生成指数\n  generatePow: function (power = 4): {\n    In(t: number): number;\n    Out(t: number): number;\n    InOut(t: number): number;\n  } {\n    power = power < Number.EPSILON ? Number.EPSILON : power;\n    power = power > 10000 ? 10000 : power;\n    return {\n      In: function (t: number): number {\n        return t ** power;\n      },\n      Out: function (t: number): number {\n        return 1 - (1 - t) ** power;\n      },\n      InOut: function (t: number): number {\n        if (t < 0.5) {\n          return (t * 2) ** power / 2;\n        }\n        return (1 - (2 - t * 2) ** power) / 2 + 0.5;\n      }\n    };\n  },\n  // 随机\n  random: function (t: number) {\n    return Math.random();\n  },\n  // 步数\n  createStep: function (numSteps: number): EasingFunction {\n    return function (t: number) {\n      return Math.floor(t * numSteps) / numSteps;\n    };\n  },\n  // 增加噪音\n  createNoisyEasing: function (\n    easingFunction: EasingFunction,\n    randomProportion = 0.1\n  ): EasingFunction {\n    const normalProportion = 1.0 - randomProportion;\n    return function (t: number) {\n      return (\n        randomProportion * Math.random() + normalProportion * easingFunction(t)\n      );\n    };\n  },\n  swing: function (t: number) {\n    return t + Math.sin(t * Math.PI * 2) / 2;\n  },\n  causeSeizures: function (t: number) {\n    return t + 0.2 * Math.random() - 0.1;\n  }\n};\n\nexport default Easing;\n\nexport function reverseEasing(easing: EasingFunction): EasingFunction {\n  switch (easing) {\n    // 二次\n    case Easing.Quadratic.In:\n      return Easing.Quadratic.Out;\n    case Easing.Quadratic.Out:\n      return Easing.Quadratic.In;\n    case Easing.Quadratic.InOut:\n      return Easing.Quadratic.InOut;\n    // 三次\n    case Easing.Cubic.In:\n      return Easing.Cubic.Out;\n    case Easing.Cubic.Out:\n      return Easing.Cubic.In;\n    case Easing.Cubic.InOut:\n      return Easing.Cubic.InOut;\n    // 四次\n    case Easing.Quartic.In:\n      return Easing.Quartic.Out;\n    case Easing.Quartic.Out:\n      return Easing.Quartic.In;\n    case Easing.Quartic.InOut:\n      return Easing.Quartic.InOut;\n    // 五次\n    case Easing.Quintic.In:\n      return Easing.Quintic.Out;\n    case Easing.Quintic.Out:\n      return Easing.Quintic.In;\n    case Easing.Quintic.InOut:\n      return Easing.Quintic.InOut;\n    // 正弦曲线\n    case Easing.Sinusoidal.In:\n      return Easing.Sinusoidal.Out;\n    case Easing.Sinusoidal.Out:\n      return Easing.Sinusoidal.In;\n    case Easing.Sinusoidal.InOut:\n      return Easing.Sinusoidal.InOut;\n    // 指数\n    case Easing.Exponential.In:\n      return Easing.Exponential.Out;\n    case Easing.Exponential.Out:\n      return Easing.Exponential.In;\n    case Easing.Exponential.InOut:\n      return Easing.Exponential.InOut;\n    // 圆\n    case Easing.Circular.In:\n      return Easing.Circular.Out;\n    case Easing.Circular.Out:\n      return Easing.Circular.In;\n    case Easing.Circular.InOut:\n      return Easing.Circular.InOut;\n    // 松紧带\n    case Easing.Elastic.In:\n      return Easing.Elastic.Out;\n    case Easing.Elastic.Out:\n      return Easing.Elastic.In;\n    case Easing.Elastic.InOut:\n      return Easing.Elastic.InOut;\n    // 后退\n    case Easing.Back.In:\n      return Easing.Back.Out;\n    case Easing.Back.Out:\n      return Easing.Back.In;\n    case Easing.Back.InOut:\n      return Easing.Back.InOut;\n    // 弹跳\n    case Easing.Bounce.In:\n      return Easing.Bounce.Out;\n    case Easing.Bounce.Out:\n      return Easing.Bounce.In;\n    case Easing.Bounce.InOut:\n      return Easing.Bounce.InOut;\n    default:\n      return easing;\n  }\n}\n","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\nimport { EasingFunction } from \"./Easing\";\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nconst NEWTON_ITERATIONS = 4;\nconst NEWTON_MIN_SLOPE = 0.001;\nconst SUBDIVISION_PRECISION = 0.0000001;\nconst SUBDIVISION_MAX_ITERATIONS = 10;\n\nconst kSplineTableSize = 11;\nconst kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nconst float32ArraySupported = typeof Float32Array === \"function\";\n\nfunction A(aA1: number, aA2: number) {\n  return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n}\nfunction B(aA1: number, aA2: number) {\n  return 3.0 * aA2 - 6.0 * aA1;\n}\nfunction C(aA1: number) {\n  return 3.0 * aA1;\n}\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier(aT: number, aA1: number, aA2: number) {\n  return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n}\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope(aT: number, aA1: number, aA2: number) {\n  return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n}\n\nfunction binarySubdivide(\n  aX: number,\n  aA: number,\n  aB: number,\n  mX1: number,\n  mX2: number\n) {\n  let currentX,\n    currentT,\n    i = 0;\n  do {\n    currentT = aA + (aB - aA) / 2.0;\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\n    if (currentX > 0.0) {\n      aB = currentT;\n    } else {\n      aA = currentT;\n    }\n  } while (\n    Math.abs(currentX) > SUBDIVISION_PRECISION &&\n    ++i < SUBDIVISION_MAX_ITERATIONS\n  );\n  return currentT;\n}\n\nfunction newtonRaphsonIterate(\n  aX: number,\n  aGuessT: number,\n  mX1: number,\n  mX2: number\n) {\n  for (let i = 0; i < NEWTON_ITERATIONS; ++i) {\n    const currentSlope = getSlope(aGuessT, mX1, mX2);\n    if (currentSlope === 0.0) {\n      return aGuessT;\n    }\n    const currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n    aGuessT -= currentX / currentSlope;\n  }\n  return aGuessT;\n}\n\nfunction LinearEasing(x: number) {\n  return x;\n}\n\n// const easing = BezierEasing(0, 0, 1, 0.5);\n// // easing allows to project x in [0.0,1.0] range onto the bezier-curve defined by the 4 points (see schema below).\n// console.log(easing(0.0)); // 0.0\n// console.log(easing(0.5)); // 0.3125\n// console.log(easing(1.0)); // 1.0\nexport function BezierEasing(\n  mX1: number,\n  mY1: number,\n  mX2: number,\n  mY2: number\n): (x: number) => number {\n  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n    throw new Error(\"bezier x values must be in [0, 1] range\");\n  }\n\n  if (mX1 === mY1 && mX2 === mY2) {\n    return LinearEasing;\n  }\n\n  // Precompute samples table\n  const sampleValues = float32ArraySupported\n    ? new Float32Array(kSplineTableSize)\n    : new Array(kSplineTableSize);\n  for (let i = 0; i < kSplineTableSize; ++i) {\n    sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n  }\n\n  function getTForX(aX: number) {\n    let intervalStart = 0.0;\n    let currentSample = 1;\n    const lastSample = kSplineTableSize - 1;\n\n    for (\n      ;\n      currentSample !== lastSample && sampleValues[currentSample] <= aX;\n      ++currentSample\n    ) {\n      intervalStart += kSampleStepSize;\n    }\n    --currentSample;\n\n    // Interpolate to provide an initial guess for t\n    const dist =\n      (aX - sampleValues[currentSample]) /\n      (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n    const guessForT = intervalStart + dist * kSampleStepSize;\n\n    const initialSlope = getSlope(guessForT, mX1, mX2);\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\n      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n    } else if (initialSlope === 0.0) {\n      return guessForT;\n    } else {\n      return binarySubdivide(\n        aX,\n        intervalStart,\n        intervalStart + kSampleStepSize,\n        mX1,\n        mX2\n      );\n    }\n  }\n\n  return (x: number) => {\n    // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n    if (x === 0 || x === 1) {\n      return x;\n    }\n    return calcBezier(getTForX(x), mY1, mY2);\n  };\n}\n\nexport type SupportedEaseNameToCubicBezier =\n  | \"linear\"\n  | \"ease\"\n  | \"ease-in\"\n  | \"ease-in-out\"\n  | \"ease-out\";\n\nexport function easeNameToCubicBezier(\n  easeName: SupportedEaseNameToCubicBezier\n): [number, number, number, number] {\n  switch (easeName) {\n    case \"linear\":\n      // cubic-bezier(0, 0, 1, 1)\n      return [0, 0, 1, 1];\n    case \"ease\":\n      // cubic-bezier(0.25, 0.1, 0.25, 1)\n      return [0.25, 0.1, 0.25, 1];\n    case \"ease-in\":\n      // cubic-bezier(0.42, 0, 1, 1)\n      return [0.42, 0, 1, 1];\n    case \"ease-in-out\":\n      // cubic-bezier(0.42, 0, 0.58, 1)\n      return [0.42, 0, 0.58, 1];\n    case \"ease-out\":\n      // cubic-bezier(0, 0, 0.58, 1)\n      return [0, 0, 0.58, 1];\n  }\n}\n\nexport function reverseEaseNameToCubicBezier(\n  easeName: SupportedEaseNameToCubicBezier\n): [number, number, number, number] {\n  const [x1, y1, x2, y2] = easeNameToCubicBezier(easeName);\n  return [1 - x2, 1 - y2, 1 - x1, 1 - y1];\n}\n\nexport function CSSToJSEasing(\n  easeName: SupportedEaseNameToCubicBezier\n): EasingFunction {\n  return BezierEasing(...easeNameToCubicBezier(easeName));\n}\n\nexport function reverseCSSToJSEasing(\n  easeName: SupportedEaseNameToCubicBezier\n): EasingFunction {\n  return BezierEasing(...reverseEaseNameToCubicBezier(easeName));\n}\n","// 插值函数\nexport type InterpolationFunction = (\n  originalValues: number[],\n  t: number // 0 ~ 1\n) => number;\n\nexport const Interpolation = {\n  Utils: {\n    Linear: function (p0: number, p1: number, t: number): number {\n      return (p1 - p0) * t + p0;\n    },\n    Factorial: (function () {\n      const a = [1];\n      return function (n: number): number {\n        let s = 1;\n        if (a[n]) {\n          return a[n];\n        }\n        for (let i = n; i > 1; i--) {\n          s *= i;\n        }\n        a[n] = s;\n        return s;\n      };\n    })(),\n    Bernstein: function (n: number, i: number): number {\n      const fc = Interpolation.Utils.Factorial;\n      return fc(n) / fc(i) / fc(n - i);\n    },\n    // 卡特穆尔·罗姆\n    CatmullRom: function (\n      p0: number,\n      p1: number,\n      p2: number,\n      p3: number,\n      t: number\n    ): number {\n      const v0 = (p2 - p0) * 0.5;\n      const v1 = (p3 - p1) * 0.5;\n      const t2 = t * t;\n      const t3 = t * t2;\n      return (\n        (2 * p1 - 2 * p2 + v0 + v1) * t3 +\n        (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 +\n        v0 * t +\n        p1\n      );\n    },\n    QuadraticBezier: (\n      p0: number,\n      p1: number,\n      p2: number,\n      t: number\n    ): number => {\n      const k = 1 - t;\n      return k * k * p0 + 2 * k * t * p1 + t * t * p2;\n    },\n    CubicBezier: (\n      p0: number,\n      p1: number,\n      p2: number,\n      p3: number,\n      t: number\n    ): number => {\n      const k = 1 - t;\n      return (\n        k * k * k * p0 +\n        3 * k * k * t * p1 +\n        3 * k * t * t * p2 +\n        t * t * t * p3\n      );\n    }\n  },\n  // 线性\n  Linear: function (v: number[], k: number): number {\n    const m = v.length - 1;\n    const f = m * k;\n    const i = Math.floor(f);\n    const fn = Interpolation.Utils.Linear;\n    if (k < 0) {\n      return fn(v[0], v[1], f);\n    }\n    if (k > 1) {\n      return fn(v[m], v[m - 1], m - f);\n    }\n    return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);\n  },\n  // 贝塞尔\n  Bezier: function (v: number[], k: number): number {\n    let b = 0;\n    const n = v.length - 1;\n    const pw = Math.pow;\n    const bn = Interpolation.Utils.Bernstein;\n    for (let i = 0; i <= n; i++) {\n      b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);\n    }\n    return b;\n  },\n  // 卡特穆尔·罗姆\n  CatmullRom: function (v: number[], k: number): number {\n    const m = v.length - 1;\n    let f = m * k;\n    let i = Math.floor(f);\n    const fn = Interpolation.Utils.CatmullRom;\n    if (v[0] === v[m]) {\n      if (k < 0) {\n        i = Math.floor((f = m * (1 + k)));\n      }\n      return fn(\n        v[(i - 1 + m) % m],\n        v[i],\n        v[(i + 1) % m],\n        v[(i + 2) % m],\n        f - i\n      );\n    } else {\n      if (k < 0) {\n        return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);\n      }\n      if (k > 1) {\n        return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);\n      }\n      return fn(\n        v[i ? i - 1 : 0],\n        v[i],\n        v[m < i + 1 ? m : i + 1],\n        v[m < i + 2 ? m : i + 2],\n        f - i\n      );\n    }\n  }\n};\n\nexport default Interpolation;\n","// import now from \"./Now\";\nimport { now } from \"@zyzgroup/core-common\";\nimport type { Tween, UnknownProps } from \"./Tween\";\n\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tween\n */\nexport default class Group {\n  private _tweens: {\n    [key: string]: Tween<UnknownProps>;\n  } = {};\n\n  private _tweensAddedDuringUpdate: {\n    [key: string]: Tween<UnknownProps>;\n  } = {};\n\n  getAll(): Array<Tween<UnknownProps>> {\n    return Object.keys(this._tweens).map((tweenId) => this._tweens[tweenId]);\n  }\n\n  removeAll(): void {\n    this._tweens = {};\n  }\n\n  add(tween: Tween<UnknownProps>): void {\n    this._tweens[tween.getId()] = tween;\n    this._tweensAddedDuringUpdate[tween.getId()] = tween;\n  }\n\n  remove(tween: Tween<UnknownProps>): void {\n    delete this._tweens[tween.getId()];\n    delete this._tweensAddedDuringUpdate[tween.getId()];\n  }\n\n  update(time: number = now(), preserve = false): boolean {\n    const tweenIds = Object.keys(this._tweens);\n    // if (tweenIds.length === 0) {\n    //   return false;\n    // }\n    // while (tweenIds.length > 0) {\n    //   this._tweensAddedDuringUpdate = {};\n    for (let i = 0; i < tweenIds.length; i++) {\n      const tween = this._tweens[tweenIds[i]];\n      const autoStart = !preserve;\n      if (tween && tween.update(time, autoStart) === false && !preserve) {\n        delete this._tweens[tweenIds[i]];\n      }\n    }\n    // tweenIds = Object.keys(this._tweensAddedDuringUpdate);\n    // }\n    // return true;\n    return !!Object.keys(this._tweens).length;\n  }\n}\n","import Group from \"./Group\";\n\nexport const mainGroup = new Group();\n","import Easing from \"./Easing\";\nimport Interpolation from \"./Interpolation\";\nimport Sequence from \"./Sequence\";\n// import now from \"./Now\";\nimport { now } from \"@zyzgroup/core-common\";\nimport { mainGroup } from \"./mainGroup\";\n\nimport type { EasingFunction } from \"./Easing\";\nimport type { InterpolationFunction } from \"./Interpolation\";\nimport type Group from \"./Group\";\n\nexport type UnknownProps = Record<string, any>;\n\nexport class Tween<T extends UnknownProps> {\n  private _id = Sequence.nextId();\n\n  // 是否正在执行\n  private _isPlaying = false;\n  // 动画开始时间\n  private _startTime = 0;\n  // 动画延迟时间\n  private _delayTime = 0;\n  // 动画持续时间\n  private _durationTime = 1000;\n\n  // 是否暂停\n  private _isPaused = false;\n  // 暂停开始时间\n  private _pauseStartTime = 0;\n\n  // 动画重复次数初始值\n  private _initialRepeat = 0;\n  // 动画重复次数剩余值\n  private _repeat = 0;\n  // 动画重复间隔\n  private _repeatDelayTime?: number;\n  // 动画重复时是否倒置\n  private _yoyo = false;\n  // 是否倒置运行\n  private _reversed = false;\n\n  // 初始值\n  private _valuesStart: UnknownProps = {};\n  // 结束值\n  private _valuesEnd: Record<string, number | string> = {};\n  // reverse时的初始值\n  private _valuesStartRepeat: UnknownProps = {};\n\n  // 缓动函数\n  private _easingFunction: EasingFunction = Easing.Linear.None;\n  // 插值函数\n  private _interpolationFunction: InterpolationFunction = Interpolation.Linear;\n\n  // 链式动画数组\n  private _chainedTweens: Array<Tween<any>> = [];\n  // 链式动画是否已停止\n  private _isChainStopped = false;\n\n  // 动画开始hook\n  private _onStartCallback?: (object: T) => void;\n  // 动画开始hook是否已被执行\n  private _onStartCallbackFired = false;\n  // 动画每轮repeat开始hook\n  private _onEveryStartCallback?: (object: T) => void;\n  // 动画每轮repeat开始hook是否已被执行\n  private _onEveryStartCallbackFired = false;\n  // 动画更新hook\n  private _onUpdateCallback?: (object: T, elapsed: number) => void;\n  // 动画repeat hook\n  private _onRepeatCallback?: (object: T) => void;\n  // 动画完成hook\n  private _onCompleteCallback?: (object: T) => void;\n  // 动画结束hook\n  private _onStopCallback?: (object: T) => void;\n  // 是否强制结束动画\n  private _goToEnd = false;\n\n  constructor(private _object: T, private _group: Group | false = mainGroup) {}\n\n  getId(): number {\n    return this._id;\n  }\n\n  isPlaying(): boolean {\n    return this._isPlaying;\n  }\n\n  isPaused(): boolean {\n    return this._isPaused;\n  }\n\n  to(properties: UnknownProps, duration?: number): this {\n    this._valuesEnd = Object.create(properties);\n    if (duration !== undefined) {\n      this._durationTime = duration;\n    }\n    return this;\n  }\n\n  duration(d = 1000): this {\n    this._durationTime = d;\n    return this;\n  }\n\n  start(time: number = now()): this {\n    if (this._isPlaying) {\n      return this;\n    }\n    this._group && this._group.add(this as Tween<UnknownProps>);\n    this._repeat = this._initialRepeat;\n    if (this._reversed) {\n      this._reversed = false;\n      for (const property in this._valuesStartRepeat) {\n        this._swapEndStartRepeatValues(property);\n        this._valuesStart[property] = this._valuesStartRepeat[property];\n      }\n    }\n    this._isPlaying = true;\n    this._isPaused = false;\n    this._onStartCallbackFired = false;\n    this._onEveryStartCallbackFired = false;\n    this._isChainStopped = false;\n    this._startTime = time;\n    this._startTime += this._delayTime;\n    this._setupProperties(\n      this._object,\n      this._valuesStart,\n      this._valuesEnd,\n      this._valuesStartRepeat\n    );\n    return this;\n  }\n\n  private _setupProperties(\n    _object: UnknownProps,\n    _valuesStart: UnknownProps,\n    _valuesEnd: UnknownProps,\n    _valuesStartRepeat: UnknownProps\n  ): void {\n    for (const property in _valuesEnd) {\n      const startValue = _object[property];\n      const startValueIsArray = Array.isArray(startValue);\n      const propType = startValueIsArray ? \"array\" : typeof startValue;\n      const isInterpolationList =\n        !startValueIsArray && Array.isArray(_valuesEnd[property]);\n      if (propType === \"undefined\" || propType === \"function\") {\n        continue;\n      }\n      if (isInterpolationList) {\n        let endValues = _valuesEnd[property] as Array<number | string>;\n        if (endValues.length === 0) {\n          continue;\n        }\n        endValues = endValues.map(\n          this._handleRelativeValue.bind(this, startValue as number)\n        );\n        _valuesEnd[property] = [startValue].concat(endValues);\n      }\n      if (\n        (propType === \"object\" || startValueIsArray) &&\n        startValue &&\n        !isInterpolationList\n      ) {\n        _valuesStart[property] = startValueIsArray ? [] : {};\n        for (const prop in startValue as object) {\n          _valuesStart[property][prop] = startValue[prop];\n        }\n        _valuesStartRepeat[property] = startValueIsArray ? [] : {}; // TODO? repeat nested values? And yoyo? And array values?\n        this._setupProperties(\n          startValue,\n          _valuesStart[property],\n          _valuesEnd[property],\n          _valuesStartRepeat[property]\n        );\n      } else {\n        if (typeof _valuesStart[property] === \"undefined\") {\n          _valuesStart[property] = startValue;\n        }\n        if (!startValueIsArray) {\n          _valuesStart[property] *= 1.0;\n        }\n        if (isInterpolationList) {\n          _valuesStartRepeat[property] = _valuesEnd[property].slice().reverse();\n        } else {\n          _valuesStartRepeat[property] = _valuesStart[property] || 0;\n        }\n      }\n    }\n  }\n\n  stop(): this {\n    if (!this._isChainStopped) {\n      this._isChainStopped = true;\n      this.stopChainedTweens();\n    }\n    if (!this._isPlaying) {\n      return this;\n    }\n    this._group && this._group.remove(this as Tween<UnknownProps>);\n    this._isPlaying = false;\n    this._isPaused = false;\n    if (this._onStopCallback) {\n      this._onStopCallback(this._object);\n    }\n    return this;\n  }\n\n  end(): this {\n    this._goToEnd = true;\n    this.update(Infinity);\n    return this;\n  }\n\n  pause(time: number = now()): this {\n    if (this._isPaused || !this._isPlaying) {\n      return this;\n    }\n    this._isPaused = true;\n    this._pauseStartTime = time;\n    this._group && this._group.remove(this as Tween<UnknownProps>);\n    return this;\n  }\n\n  resume(time: number = now()): this {\n    if (!this._isPaused || !this._isPlaying) {\n      return this;\n    }\n    this._isPaused = false;\n    this._startTime += time - this._pauseStartTime;\n    this._pauseStartTime = 0;\n    this._group && this._group.add(this as Tween<UnknownProps>);\n    return this;\n  }\n\n  stopChainedTweens(): this {\n    for (\n      let i = 0, numChainedTweens = this._chainedTweens.length;\n      i < numChainedTweens;\n      i++\n    ) {\n      this._chainedTweens[i].stop();\n    }\n    return this;\n  }\n\n  group(group = mainGroup): this {\n    this._group = group;\n    return this;\n  }\n\n  delay(amount = 0): this {\n    this._delayTime = amount;\n    return this;\n  }\n\n  repeat(times = 0): this {\n    this._initialRepeat = times;\n    this._repeat = times;\n    return this;\n  }\n\n  repeatDelay(amount?: number): this {\n    this._repeatDelayTime = amount;\n    return this;\n  }\n\n  yoyo(yoyo = false): this {\n    this._yoyo = yoyo;\n    return this;\n  }\n\n  easing(easingFunction: EasingFunction = Easing.Linear.None): this {\n    this._easingFunction = easingFunction;\n    return this;\n  }\n\n  interpolation(\n    interpolationFunction: InterpolationFunction = Interpolation.Linear\n  ): this {\n    this._interpolationFunction = interpolationFunction;\n    return this;\n  }\n\n  chain(...tweens: Array<Tween<any>>): this {\n    this._chainedTweens = tweens;\n    return this;\n  }\n\n  onStart(callback?: (object: T) => void): this {\n    this._onStartCallback = callback;\n    return this;\n  }\n\n  onEveryStart(callback?: (object: T) => void): this {\n    this._onEveryStartCallback = callback;\n    return this;\n  }\n\n  onUpdate(callback?: (object: T, elapsed: number) => void): this {\n    this._onUpdateCallback = callback;\n    return this;\n  }\n\n  onRepeat(callback?: (object: T) => void): this {\n    this._onRepeatCallback = callback;\n    return this;\n  }\n\n  onComplete(callback?: (object: T) => void): this {\n    this._onCompleteCallback = callback;\n    return this;\n  }\n\n  onStop(callback?: (object: T) => void): this {\n    this._onStopCallback = callback;\n    return this;\n  }\n\n  /**\n   * @returns true if the tween is still playing after the update, false otherwise\n   */\n  update(time = now(), autoStart = true): boolean {\n    if (this._isPaused) return true;\n    let property;\n    let elapsed;\n    const endTime = this._startTime + this._durationTime;\n    if (!this._goToEnd && !this._isPlaying) {\n      if (time > endTime) return false;\n      if (autoStart) this.start(time);\n    }\n    this._goToEnd = false;\n    if (time < this._startTime) {\n      return true;\n    }\n    if (this._onStartCallbackFired === false) {\n      if (this._onStartCallback) {\n        this._onStartCallback(this._object);\n      }\n      this._onStartCallbackFired = true;\n    }\n    if (this._onEveryStartCallbackFired === false) {\n      if (this._onEveryStartCallback) {\n        this._onEveryStartCallback(this._object);\n      }\n      this._onEveryStartCallbackFired = true;\n    }\n    elapsed = (time - this._startTime) / this._durationTime;\n    elapsed = this._durationTime === 0 || elapsed > 1 ? 1 : elapsed;\n    const value = this._easingFunction(elapsed);\n    this._updateProperties(\n      this._object,\n      this._valuesStart,\n      this._valuesEnd,\n      value\n    );\n    if (this._onUpdateCallback) {\n      this._onUpdateCallback(this._object, elapsed);\n    }\n    if (elapsed === 1) {\n      if (this._repeat > 0) {\n        if (isFinite(this._repeat)) {\n          this._repeat--;\n        }\n        for (property in this._valuesStartRepeat) {\n          if (!this._yoyo && typeof this._valuesEnd[property] === \"string\") {\n            this._valuesStartRepeat[property] =\n              this._valuesStartRepeat[property] +\n              parseFloat(this._valuesEnd[property] as string);\n          }\n          if (this._yoyo) {\n            this._swapEndStartRepeatValues(property);\n          }\n          this._valuesStart[property] = this._valuesStartRepeat[property];\n        }\n        if (this._yoyo) {\n          this._reversed = !this._reversed;\n        }\n        if (this._repeatDelayTime !== undefined) {\n          this._startTime = time + this._repeatDelayTime;\n        } else {\n          this._startTime = time + this._delayTime;\n        }\n        if (this._onRepeatCallback) {\n          this._onRepeatCallback(this._object);\n        }\n        this._onEveryStartCallbackFired = false;\n        return true;\n      } else {\n        if (this._onCompleteCallback) {\n          this._onCompleteCallback(this._object);\n        }\n        for (\n          let i = 0, numChainedTweens = this._chainedTweens.length;\n          i < numChainedTweens;\n          i++\n        ) {\n          // Make the chained tweens start exactly at the time they should,\n          // even if the `update()` method was called way past the duration of the tween\n          this._chainedTweens[i].start(this._startTime + this._durationTime);\n        }\n        this._isPlaying = false;\n        return false;\n      }\n    }\n    return true;\n  }\n\n  private _updateProperties(\n    _object: UnknownProps,\n    _valuesStart: UnknownProps,\n    _valuesEnd: UnknownProps,\n    value: number\n  ): void {\n    for (const property in _valuesEnd) {\n      if (_valuesStart[property] === undefined) {\n        continue;\n      }\n      const start = _valuesStart[property] || 0;\n      let end = _valuesEnd[property];\n      const startIsArray = Array.isArray(_object[property]);\n      const endIsArray = Array.isArray(end);\n      const isInterpolationList = !startIsArray && endIsArray;\n      if (isInterpolationList) {\n        _object[property] = this._interpolationFunction(\n          end as Array<number>,\n          value\n        );\n      } else if (typeof end === \"object\" && end) {\n        this._updateProperties(_object[property], start, end, value);\n      } else {\n        end = this._handleRelativeValue(\n          start as number,\n          end as number | string\n        );\n        if (typeof end === \"number\") {\n          _object[property] = start + (end - start) * value;\n        }\n      }\n    }\n  }\n\n  // Parses relative end values with start as base (e.g.: +10, -3)\n  private _handleRelativeValue(start: number, end: number | string): number {\n    if (typeof end !== \"string\") {\n      return end;\n    }\n    if (end.charAt(0) === \"+\" || end.charAt(0) === \"-\") {\n      return start + parseFloat(end);\n    } else {\n      return parseFloat(end);\n    }\n  }\n\n  private _swapEndStartRepeatValues(property: string): void {\n    const tmp = this._valuesStartRepeat[property];\n    const endValue = this._valuesEnd[property];\n    if (typeof endValue === \"string\") {\n      this._valuesStartRepeat[property] =\n        this._valuesStartRepeat[property] + parseFloat(endValue);\n    } else {\n      this._valuesStartRepeat[property] = endValue;\n    }\n    this._valuesEnd[property] = tmp;\n  }\n}\n\nexport default Tween;\n","// import now from \"./Now\";\nimport { now } from \"@zyzgroup/core-common\";\nimport Sequence from \"./Sequence\";\n\nimport Easing from \"./Easing\";\nexport { Easing, type EasingFunction, reverseEasing } from \"./Easing\";\nexport * from \"./BezierEasing\";\n\nimport Interpolation from \"./Interpolation\";\nexport { Interpolation, type InterpolationFunction } from \"./Interpolation\";\n\nimport Tween from \"./Tween\";\nexport * from \"./Tween\";\n\nimport Group from \"./Group\";\nexport * from \"./Group\";\nimport { mainGroup } from \"./mainGroup\";\n\nconst nextId = Sequence.nextId;\n\n// This is the best way to export things in a way that's compatible with both ES\n// Modules and CommonJS, without build hacks, and so as not to break the\n// existing API.\n// https://github.com/rollup/rollup/issues/1961#issuecomment-423037881\nconst getAll = mainGroup.getAll.bind(mainGroup);\nconst removeAll = mainGroup.removeAll.bind(mainGroup);\nconst add = mainGroup.add.bind(mainGroup);\nconst remove = mainGroup.remove.bind(mainGroup);\nconst update = mainGroup.update.bind(mainGroup);\n\nexport const TWEEN = {\n  now,\n  Sequence,\n  Easing,\n  Interpolation,\n  Group,\n  Tween,\n  nextId,\n  getAll,\n  removeAll,\n  add,\n  remove,\n  update\n};\nexport default TWEEN;\n","import { now } from \"@zyzgroup/core-common\";\n\nexport class Clock {\n  autoStart: boolean;\n  startTime: number;\n  oldTime: number;\n  elapsedTime: number;\n  running: boolean;\n\n  constructor(autoStart = true) {\n    this.autoStart = autoStart;\n    this.startTime = 0;\n    this.oldTime = 0;\n    this.elapsedTime = 0;\n    this.running = false;\n  }\n\n  start() {\n    this.startTime = now();\n    this.oldTime = this.startTime;\n    this.elapsedTime = 0;\n    this.running = true;\n  }\n\n  stop() {\n    this.getElapsedTime();\n    this.running = false;\n    this.autoStart = false;\n  }\n\n  // 毫秒\n  getElapsedTime() {\n    this.getDelta();\n    return this.elapsedTime;\n  }\n\n  // 毫秒\n  getDelta() {\n    let diff = 0;\n    if (this.autoStart && !this.running) {\n      this.start();\n      return 0;\n    }\n    if (this.running) {\n      const newTime = now();\n      diff = newTime - this.oldTime;\n      this.oldTime = newTime;\n      this.elapsedTime += diff;\n    }\n    return diff;\n  }\n}\n\nexport default Clock;\n","import {\n  ShellSort,\n  deleteArrayItem,\n  requestAnimationFrameLoop\n} from \"@zyzgroup/core-common\";\nimport {\n  Tween,\n  Easing,\n  reverseEasing,\n  type EasingFunction,\n  Interpolation,\n  type InterpolationFunction\n} from \"./tween\";\nimport Clock from \"./Clock\";\n// import gsap from \"gsap\";\n\nexport type TweenValue = Record<string, any>;\n\nexport type TweenRawOptions = {\n  /// 动画占用帧数\n  frames?: number;\n  /// 开始帧数\n  delay?: number;\n  easeFunction?: EasingFunction;\n  interpolationFunction?: InterpolationFunction;\n  repeat?: number | typeof Infinity;\n  yoyo?: boolean;\n  onStart?: (currentValue: TweenValue) => void;\n  onUpdate?: (currentValue: TweenValue, elapsed: number) => void;\n  onComplete?: (currentValue: TweenValue) => void;\n};\n\ntype TimelineTweenConfig = Required<TweenRawOptions> & {\n  fromValues: TweenValue;\n  // number[] 代表使用插值\n  toValues: TweenValue;\n  tween?: Tween<TweenValue>;\n};\n\nexport class Timeline {\n  public tweens: TimelineTweenConfig[] = [];\n\n  /// 每帧时间\n  public frameDuration: number;\n  public onGroupStart?: () => void;\n  public onGroupComplete?: () => void;\n\n  constructor(options?: {\n    frameDuration?: number;\n    onGroupStart?: () => void;\n    onGroupComplete?: () => void;\n  }) {\n    this.frameDuration = options?.frameDuration || 1000;\n    this.onGroupStart = options?.onGroupStart;\n    this.onGroupComplete = options?.onGroupComplete;\n  }\n\n  public get count(): number {\n    return this.tweens.length;\n  }\n\n  public clear(): void {\n    this.tweens = [];\n  }\n\n  private sort(reverse = false) {\n    ShellSort<TimelineTweenConfig>(\n      this.tweens,\n      (a: TimelineTweenConfig, b: TimelineTweenConfig) =>\n        !reverse ? a.delay <= b.delay : a.delay > b.delay\n    );\n  }\n\n  private cloneTweens(\n    tweens: TimelineTweenConfig[] = this.tweens\n  ): TimelineTweenConfig[] {\n    const clones: TimelineTweenConfig[] = [];\n    tweens.forEach((tween) => {\n      const t = { ...tween };\n      delete t.tween;\n      t.fromValues = { ...t.fromValues };\n      t.toValues = { ...t.toValues };\n      clones.push(t);\n    });\n    return clones;\n  }\n\n  public addTween(\n    fromValues: TweenValue,\n    toValues: TweenValue,\n    options?: TweenRawOptions\n  ): this {\n    const tweenConfig = {\n      fromValues,\n      toValues,\n      frames: typeof options?.frames === \"number\" ? options.frames : 1,\n      /// 默认顺序执行\n      delay:\n        typeof options?.delay === \"number\" ? options.delay : this.tweens.length,\n      easeFunction: options?.easeFunction || Easing.Linear.None,\n      interpolationFunction:\n        options?.interpolationFunction || Interpolation.Linear,\n      repeat: typeof options?.repeat === \"number\" ? options.repeat : 0,\n      yoyo: options?.yoyo || false,\n      onStart: options?.onStart || (() => {}),\n      onUpdate: options?.onUpdate || (() => {}),\n      onComplete: options?.onComplete || (() => {})\n    };\n    this.tweens.push(tweenConfig);\n    // this.sort();\n    return this;\n  }\n\n  private cancelRequestAnimationCycle = () => {};\n  private runTweens(tweens: TimelineTweenConfig[]): Promise<void> {\n    this.cancelRequestAnimationCycle();\n    const clock = new Clock();\n    const frameDuration = this.frameDuration;\n    return new Promise<void>((resolve) => {\n      this.onGroupStart?.();\n      this.cancelRequestAnimationCycle = requestAnimationFrameLoop(\n        (t: number) => {\n          if (this.isPaused) {\n            // tweens.forEach((t) => {\n            //   if (t.tween && t.tween.isPlaying()) {\n            //     t.tween.pause();\n            //   }\n            // });\n          } else {\n            const time = Math.max(0, t - this.pausedDuration);\n            const duration = Math.max(\n              0,\n              clock.getElapsedTime() - this.pausedDuration\n            );\n            tweens\n              .filter((t) => t.delay * frameDuration <= duration)\n              .forEach((t) => {\n                /// 开始的tween\n                if (!t.tween) {\n                  t.tween = new Tween({ ...t.fromValues })\n                    .to({ ...t.toValues }, t.frames * frameDuration)\n                    // .delay(t.delay * frameDuration)\n                    .easing(t.easeFunction)\n                    .interpolation(t.interpolationFunction)\n                    .repeat(t.repeat)\n                    .yoyo(t.yoyo)\n                    .onStart(t.onStart)\n                    .onUpdate(t.onUpdate)\n                    .onComplete(t.onComplete);\n                  t.tween.start(time);\n                  // tween.chain(tweenBack);\n                  // tweenBack.chain(tween);\n                  // tween.start();\n                  // tween.start(\"+2000\");\n                  // tween.start(\"-500\");\n                  // tween.stop();\n                }\n                // if (t.tween.isPaused()) {\n                //   t.tween.resume();\n                // }\n                if (\n                  /// 进行中的tween\n                  (t.delay + t.frames * (t.repeat + 1)) * frameDuration >\n                  duration\n                ) {\n                  t.tween.update(time);\n                } else {\n                  /// 结束的tween\n                  if (t.tween.isPlaying()) {\n                    t.tween.end();\n                  }\n                  deleteArrayItem(tweens, t);\n                }\n              });\n          }\n          const isContinue = !!tweens.length;\n          if (!isContinue) {\n            this.onGroupComplete?.();\n            resolve();\n          }\n          return isContinue;\n        }\n      );\n    });\n  }\n\n  public isPaused = false;\n  private pausedClock = new Clock();\n  private pausedDuration = 0;\n\n  /// 注意传入的 tweens 为深拷贝新数据\n  play(tweens: TimelineTweenConfig[] = this.cloneTweens(this.tweens)) {\n    this.isPaused = false;\n    this.pausedDuration = 0;\n    this.runTweens(tweens);\n  }\n\n  reverse() {\n    const reverseTweens = this.cloneTweens(this.tweens);\n    let maxFrames = 0;\n    reverseTweens.forEach((t) => {\n      maxFrames = Math.max(maxFrames, t.delay + t.frames);\n      t.easeFunction = reverseEasing(t.easeFunction);\n      const temp = { ...t.toValues };\n      t.toValues = { ...t.fromValues };\n      t.fromValues = { ...temp };\n    });\n    /// 改变delay以改变执行顺序\n    reverseTweens.forEach((t) => {\n      t.delay = maxFrames - t.frames;\n    });\n    // reverseTweens.sort();\n    this.play(reverseTweens);\n  }\n\n  pause() {\n    this.pausedClock.start();\n    this.isPaused = true;\n  }\n\n  resume() {\n    this.pausedDuration += this.pausedClock.getElapsedTime();\n    this.pausedClock.stop();\n    this.isPaused = false;\n  }\n}\n\nexport default Timeline;\n","import {\n  randomUUID,\n  deepClone,\n  toKebab,\n  EventBus,\n  EventBusListeners,\n  extractAllNumbers,\n  maxDotNumber,\n  parseNumber,\n  shallowClone,\n  newConstructor,\n  distance,\n  angle,\n  polar,\n  toDegree,\n  toRadian,\n  rawState\n  // saveReactiveState,\n  // restoreReactiveState,\n  // getReactiveState\n} from \"@zyzgroup/core-common\";\nimport { SVGParsedPathData } from \"../svg/SVGUtil\";\nimport { YZCanvasContext } from \"../canvas/YZCanvasContext\";\nimport { PathD } from \"./line/\";\nimport { Matrix } from \"./Matrix\";\nimport { Timeline, TweenRawOptions, TweenValue } from \"../animate\";\nimport { miniVue } from \"../components\";\n\nexport type TShapeOptions = {\n  d?: string | SVGParsedPathData[] | PathD;\n  originMatrix?: Matrix;\n\n  independentTransformInGroup?: boolean;\n\n  /// 坐标系原点\n  /// options 中为相对于画布 (0,0) 点的绝对值\n  /// this    中为相对于自身 (0,0) 点的相对值\n  centerX?: number;\n  centerY?: number;\n\n  // translate\n  x?: number;\n  y?: number;\n\n  // rotate\n  degree?: number;\n\n  // scale\n  scalar?: number;\n  scalarX?: number;\n  scalarY?: number;\n\n  diffXInGroup?: number;\n  diffYInGroup?: number;\n  diffDegreeInGroup?: number;\n  diffScalarXInGroup?: number;\n  diffScalarYInGroup?: number;\n\n  // 速度\n  vx?: number;\n  vy?: number;\n\n  // 加速度\n  ax?: number;\n  ay?: number;\n\n  // 重量\n  mass?: number;\n\n  /// 样式属性\n  attrs?: Record<string, string | CanvasGradient>;\n\n  /// 是否绘制\n  isShow?: boolean;\n\n  /// 是否可拖拽\n  enableDrag?: boolean;\n  alongPath?: PathD;\n\n  /// 是否鼠标放开后运动到target\n  targetToAfterDragFree?: { targetX: number; targetY: number; easing?: number };\n\n  /// 是否跟随mouse移动而移动\n  followMouse?: boolean;\n\n  /// 是否绘制行军蚁边框\n  strokeArmyAnts?: boolean;\n};\n\nexport interface ShapeEventBusListeners extends EventBusListeners {\n  draging(dx: number, dy: number, excludeShapeInGroup?: Shape): void;\n  clicked(shape: Shape): void;\n}\n\nexport type TShapeRunOptions = {\n  gravity?: number; // 重力常量，例如 0.1\n  friction?: number; // 摩擦系数常量，例如 1\n};\nexport type TShapeRunEasingOptions = TShapeRunOptions & {\n  easing?: number; // 例如 0.05\n};\nexport type TShapeRunSpringOptions = TShapeRunOptions & {\n  spring?: number; // 例如 0.03\n};\n\nexport class Shape extends EventBus<ShapeEventBusListeners> {\n  // [index: string | number | symbol]: any;\n\n  public id: string;\n  public originD?: string | SVGParsedPathData[] | PathD;\n  public originMatrix?: Matrix;\n\n  public independentTransformInGroup: boolean;\n\n  public forceCXY = false;\n\n  /// 相对于自身 (0,0) 点的相对值\n  public cX: number;\n  public cY: number;\n\n  public x: number;\n  public y: number;\n\n  public degree: number;\n\n  public scalarX: number;\n  public scalarY: number;\n\n  public diffXInGroup: number;\n  public diffYInGroup: number;\n  public diffDegreeInGroup: number;\n  public diffScalarXInGroup: number;\n  public diffScalarYInGroup: number;\n\n  public vx: number;\n  public vy: number;\n  public ax: number;\n  public ay: number;\n  public mass: number;\n\n  private attrs: Record<string, string | CanvasGradient>;\n\n  public enableDrag: boolean;\n  public alongPath?: PathD;\n\n  public isDragging = false;\n  public isMouseIn = false;\n\n  public targetToAfterDragFree?: {\n    targetX: number;\n    targetY: number;\n    easing?: number;\n  };\n\n  public followMouse: boolean;\n\n  public strokeArmyAnts: boolean;\n  public strokeArmyAntsOffset = 0;\n  public strokeDashTotalLength = 0;\n\n  public isShow = true;\n  public el?: HTMLElement | SVGElement;\n\n  public pathd?: PathD;\n  public usePathDtoCanvasContext = false;\n\n  public parent?: Shape;\n  public shapes: Shape[] = [];\n\n  public state: any;\n\n  constructor(options?: TShapeOptions) {\n    super();\n\n    this.id = randomUUID();\n    if (options?.d) {\n      this.originD = options?.d;\n    }\n    if (options?.originMatrix) {\n      this.originMatrix = options.originMatrix;\n    }\n\n    this.independentTransformInGroup =\n      typeof options?.independentTransformInGroup == \"boolean\"\n        ? options.independentTransformInGroup\n        : false;\n\n    this.x = options?.x || 0;\n    this.y = options?.y || 0;\n\n    this.cX = 0;\n    this.cY = 0;\n    if (\n      typeof options?.centerX == \"number\" &&\n      typeof options?.centerY == \"number\"\n    ) {\n      this.forceSetCXY(options.centerX - this.x, options.centerY - this.y);\n    }\n\n    this.degree = options?.degree || 0;\n\n    this.scalarX = 1;\n    this.scalarY = 1;\n    if (options?.scalar !== void 0) {\n      this.scalarX = options.scalar;\n      this.scalarY = options.scalar;\n    }\n    if (options?.scalarX !== void 0) {\n      this.scalarX = options.scalarX;\n    }\n    if (options?.scalarY !== void 0) {\n      this.scalarY = options.scalarY;\n    }\n\n    this.diffXInGroup = options?.diffXInGroup || 0;\n    this.diffYInGroup = options?.diffYInGroup || 0;\n    this.diffDegreeInGroup = options?.diffDegreeInGroup || 0;\n    this.diffScalarXInGroup = options?.diffScalarXInGroup || 1;\n    this.diffScalarYInGroup = options?.diffScalarYInGroup || 1;\n\n    this.vx = options?.vx || 0;\n    this.vy = options?.vy || 0;\n    this.ax = options?.ax || 0;\n    this.ay = options?.ay || 0;\n    this.mass = options?.mass || 1;\n    this.attrs = {\n      // \"paint-order\": \"markers stroke fill\", // 先 stroke 再 fill\n      // \"paint-order\": \"fill stroke markers\", // default\n      stroke: \"none\",\n      fill: \"none\"\n      // \"pointerEvents\": \"none\",\n    };\n    if (options?.attrs) {\n      this.setAttr(options?.attrs);\n    }\n    this.enableDrag = options?.enableDrag || false;\n    this.alongPath = options?.alongPath;\n    this.targetToAfterDragFree = options?.targetToAfterDragFree;\n    this.followMouse = options?.followMouse || false;\n    this.isShow = typeof options?.isShow == \"boolean\" ? options?.isShow : true;\n    this.strokeArmyAnts = options?.strokeArmyAnts || false;\n\n    if (this.strokeArmyAnts) {\n      const sourceDashArray = this.getAttr(\"stroke-dasharray\", \"4 4\");\n      this.setAttr(\"stroke-dasharray\", sourceDashArray);\n      this.strokeDashTotalLength = extractAllNumbers(\n        sourceDashArray as string\n      ).reduce((acc, d) => acc + d, 0);\n    }\n\n    /// 父类调用时，子类 this.toSVGPathData() 有些值可能还未初始化\n    /// clone() 对象暂时无法执行下面方法！\n    // nextTick(() => {\n    //   this.pathd = this.initPathD();\n    // });\n\n    // const proxy = miniVue.reactive(this);\n    // return proxy;\n\n    this.state = rawState(this);\n  }\n\n  /// 强制设置 坐标系原点\n  public forceSetCXY(cX: number, cY: number) {\n    this.cX = cX;\n    this.cY = cY;\n    this.forceCXY = true;\n  }\n\n  /// 子类可覆盖\n  public shapeInit() {\n    // miniVue.watchEffect(() => {});\n  }\n\n  /// 统一初始化 pathd\n  public initPathD(): PathD {\n    if (!this.pathd) {\n      /// 初始化\n      this.pathd = new PathD();\n      /// Shape其他属性改变，涉及到 pathd.normalizedLines 时，自动更新\n      // miniVue.watchEffect(() => {\n      this.state.subscribe(() => {\n        this.pathd?.reset(\n          this.originD || this.toSVGPathData(),\n          this.originMatrix\n        );\n      });\n      if (this.pathd && !this.forceCXY) {\n        /// 改变 默认坐标系原点 为自身中心点\n        const rect =\n          this.shapes.length == 0\n            ? this.pathd.getBoundingClientRect()\n            : this.getBoundingClientRect();\n        // const rect = this.getBoundingClientRect();\n        if (rect) {\n          this.pathd.cX = this.cX = rect.x + rect.width / 2 - this.pathd.x;\n          this.pathd.cY = this.cY = rect.y + rect.height / 2 - this.pathd.y;\n          // console.log(\"shape\", rect, this.cX, this.cY);\n        }\n      }\n      this.shapeInit();\n    }\n    return this.pathd;\n  }\n\n  public frameStart(mouse?: { x: number; y: number }): void {\n    // this.pathd = this.initPathD();\n  }\n\n  public frameUpdate(\n    mouse?: { x: number; y: number },\n    ctx?: YZCanvasContext\n  ): void {\n    /// 同步 this.pathd 属性\n    this.pathd = this.initPathD();\n    this.pathd.update(this);\n    /// 绘制行军蚁边框\n    if (this.strokeArmyAnts) {\n      if (!this.isMouseIn) {\n        this.setAttr(\"stroke-dashoffset\", String(this.strokeArmyAntsOffset++));\n        if (this.strokeArmyAntsOffset > this.strokeDashTotalLength) {\n          this.strokeArmyAntsOffset = 0;\n        }\n      }\n    }\n  }\n\n  public frameEnd(mouse?: { x: number; y: number }): void {\n    ///\n  }\n\n  /// Shape SVG 使用 PathD transform 系统，使用相对值\n  /// 子类一定要覆盖 toSVGPathData ！\n  /// 唯一例外是 group ，可以不覆盖！\n  /// translate() rotate() scale() 等 transfrom 交给 PathD 处理， YZSVG 不处理\n  /// 属性值自己保存\n  public toSVGPathData(): SVGParsedPathData[] {\n    // return [[\"m\", 0, 0]];\n    return [];\n  }\n\n  /// 子类不要覆盖 toSVGPathD ！\n  /// 供 YZSVG 调用\n  public toSVGPathD(): string {\n    return this.pathd?.toSVGPathD() || \"\";\n  }\n\n  /// Shape Canvas 使用 PathD transform 系统 或 原生canvas系统\n  /// 如果子类没有覆盖 toCanvasContext , 则默认使用 PathD 的 toCanvasContext\n  ///   - translate() rotate() scale() 等 transfrom 交给 PathD 处理，YZCanvas 不处理\n  ///   - canvas.ctx.createLinearGradient 使用绝对值\n  /// 如果子类覆盖 toCanvasContext , 则使用 原生canvas系统\n  ///   - translate() rotate() scale() 等 transfrom 交给 YZCanvas 处理\n  ///   - canvas.ctx.createLinearGradient 使用相对值\n  /// 不包含 fill() 及 stroke()\n  /// 属性值自己保存\n  public toCanvasContext(\n    ctx: YZCanvasContext\n    // ctx: CanvasRenderingContext2D\n    // | WebGLRenderingContext\n    // | WebGL2RenderingContext\n    // | GPUCanvasContext\n    // | ImageBitmapRenderingContext\n  ): void {\n    this.usePathDtoCanvasContext = true;\n    this.pathd?.toCanvasContext(ctx);\n  }\n\n  /// 目前 仅 Text 无法转换为 PathD, 也就无 getBoundingClientRect\n  /// 子类可覆盖\n  /// 绝对值\n  public getBoundingClientRect(): {\n    x: number;\n    y: number;\n    width: number;\n    height: number;\n  } | null {\n    return this.pathd?.getBoundingClientRect() || null;\n  }\n\n  /// 绝对值\n  public get center(): { x: number; y: number } {\n    const rect = this.getBoundingClientRect();\n    const c = { x: this.x, y: this.y };\n    if (rect) {\n      c.x = rect.x + rect.width / 2;\n      c.y = rect.y + rect.height / 2;\n    }\n    return c;\n  }\n\n  public trim() {\n    if (this.parent) {\n      return;\n    }\n    const rect = this.getBoundingClientRect();\n    if (!rect) {\n      return;\n    }\n    this.shapes.forEach((s) => {\n      const originMatrix = s.originMatrix\n        ? s.originMatrix.clone()\n        : new Matrix();\n      originMatrix.translate(-rect.x + s.x, -rect.y + s.y);\n      s.originMatrix = originMatrix; /// set 引发 自动 watchEffect\n    });\n    const originMatrix = this.originMatrix\n      ? this.originMatrix.clone()\n      : new Matrix();\n    originMatrix.translate(-rect.x + this.x, -rect.y + this.y);\n    this.originMatrix = originMatrix; /// set 引发 自动 watchEffect\n  }\n\n  public isPointInPath(\n    x: number,\n    y: number,\n    ctx: YZCanvasContext | SVGSVGElement\n  ): boolean {\n    if (ctx instanceof YZCanvasContext) {\n      return ctx.isPointInPath(new Path2D(this.toSVGPathD()), x, y);\n    }\n    /// 性能差\n    let point;\n    try {\n      point = new SVGPoint(x, y);\n    } catch (e) {\n      // fallback for browsers that don't support SVGPoint as an argument\n      point = ctx.createSVGPoint();\n      point.x = x;\n      point.y = y;\n    }\n    if (this.el instanceof SVGGeometryElement) {\n      return this.el.isPointInFill(point);\n    } else {\n      const rect = this.getBoundingClientRect();\n      if (rect) {\n        return (\n          x >= rect.x &&\n          x <= rect.x + rect.width &&\n          y >= rect.y &&\n          y <= rect.y + rect.height\n          /// UNSUCCESS\n          // && PathD.interPathHelper(\n          //   this.toSVGPathData(),\n          //   DOMSVGUtil.normalizeSVGPath([\n          //     [\"M\", x, y],\n          //     [\"H\", rect.x + rect.width + 10]\n          //     // [\"l\", rect.width + 10, Math.random()]\n          //   ])\n          // ).length %\n          //   2 ==\n          //   1\n        );\n      }\n    }\n    return false;\n  }\n\n  public isPointInStroke(\n    x: number,\n    y: number,\n    ctx: YZCanvasContext | SVGSVGElement\n  ): boolean {\n    if (ctx instanceof YZCanvasContext) {\n      return ctx.isPointInStroke(new Path2D(this.toSVGPathD()), x, y);\n    }\n    /// 性能差\n    let point;\n    try {\n      point = new SVGPoint(x, y);\n    } catch (e) {\n      // fallback for browsers that don't support SVGPoint as an argument\n      point = ctx.createSVGPoint();\n      point.x = x;\n      point.y = y;\n    }\n    if (this.el instanceof SVGGeometryElement) {\n      return this.el.isPointInStroke(point);\n    }\n    return false;\n    /// UNDO: node-canvas return undefined\n  }\n\n  public clone() {\n    // return deepClone(this);\n    return newConstructor(this).copy(this);\n    // return shallowClone(this).copy(this);\n  }\n\n  public copy(shape: Shape) {\n    this.id = shape.id;\n    this.originD = shape.originD;\n    this.originMatrix = shape.originMatrix;\n    this.independentTransformInGroup = shape.independentTransformInGroup;\n    this.x = shape.x;\n    this.y = shape.y;\n    this.cX = shape.cX;\n    this.cY = shape.cY;\n    this.degree = shape.degree;\n    this.scalarX = shape.scalarX;\n    this.scalarY = shape.scalarY;\n    this.diffXInGroup = shape.diffXInGroup;\n    this.diffYInGroup = shape.diffYInGroup;\n    this.diffDegreeInGroup = shape.diffDegreeInGroup;\n    this.diffScalarXInGroup = shape.diffScalarXInGroup;\n    this.diffScalarYInGroup = shape.diffScalarYInGroup;\n    this.vx = shape.vx;\n    this.vy = shape.vy;\n    this.ax = shape.ax;\n    this.ay = shape.ay;\n    this.mass = shape.mass;\n    this.attrs = {\n      ...shape.attrs\n    };\n    this.enableDrag = shape.enableDrag;\n    this.alongPath = shape.alongPath;\n    this.targetToAfterDragFree = shape.targetToAfterDragFree;\n    this.followMouse = shape.followMouse;\n    this.isShow = shape.isShow;\n    this.strokeArmyAnts = shape.strokeArmyAnts;\n    this.strokeDashTotalLength = shape.strokeDashTotalLength;\n    return this;\n  }\n\n  public save() {\n    /// toRaw Proxy\n    // saveReactiveState(this.raw);\n    // console.log(\"save\", this.raw, getReactiveState(this.raw));\n  }\n\n  public restore() {\n    /// toRaw Proxy\n    // restoreReactiveState(this.raw);\n    // console.log(\"restore\", this.raw, getReactiveState(this.raw));\n  }\n\n  public setAttr(obj: Record<string, string | CanvasGradient>): void;\n  public setAttr(name: string, value: string | CanvasGradient): void;\n  public setAttr(\n    nameOrObj: string | Record<string, string | CanvasGradient>,\n    value?: string | CanvasGradient\n  ): void {\n    if (typeof nameOrObj !== \"string\") {\n      Object.assign(\n        this.attrs,\n        Object.fromEntries(\n          Object.entries(nameOrObj).map(([k, v]) => {\n            return [toKebab(k), v];\n          })\n        )\n      );\n    } else {\n      if (value) {\n        this.attrs[toKebab(nameOrObj)] = value;\n      }\n    }\n  }\n\n  public getAttr(\n    name: string,\n    defaultValue: string | CanvasGradient\n  ): string | CanvasGradient;\n  public getAttr(name: string): string | CanvasGradient | undefined;\n  public getAttr(\n    name: string,\n    defaultValue?: string | CanvasGradient\n  ): string | CanvasGradient | undefined {\n    return this.attrs[name] || this.attrs[toKebab(name)] || defaultValue;\n  }\n\n  public getAttrs(): Record<string, string | CanvasGradient> {\n    return this.attrs;\n  }\n\n  public hasAttr(name: string): boolean {\n    return !!this.attrs[name] || !!this.attrs[toKebab(name)];\n  }\n\n  public distance(target: { x: number; y: number }): number {\n    return distance(this.x, this.y, target.x, target.y);\n  }\n\n  public rotateTo(target: { x: number; y: number }) {\n    this.degree = toDegree(angle(this.x, this.y, target.x, target.y));\n  }\n\n  public followTo(target: { x: number; y: number }, length = 3) {\n    this.rotateTo(target);\n    const { dx: vx, dy: vy } = polar(toRadian(this.degree), length);\n    this.vx = vx;\n    this.vy = vy;\n    this.run();\n  }\n\n  public followAccelerationTo(target: { x: number; y: number }, length = 0.05) {\n    this.rotateTo(target);\n    const { dx: ax, dy: ay } = polar(toRadian(this.degree), length);\n    this.ax = ax;\n    this.ay = ay;\n    this.run();\n  }\n\n  /// 碰撞检测\n  public checkCollision(target: Shape) {\n    /// UNDO\n  }\n\n  /// 回弹\n  public checkWall(options: {\n    wall: { x: number; y: number; width: number; height: number };\n    bounce?: number;\n  }) {\n    /// UNDO\n  }\n\n  /// 物体之间引力\n  public gravitateTo(target: Shape) {\n    const dx = target.x - this.x;\n    const dy = target.y - this.y;\n    const distSQ = dx * dx + dy * dy;\n    const dist = Math.sqrt(distSQ);\n    const force = (this.mass * target.mass) / distSQ;\n    const ax = (force * dx) / dist;\n    const ay = (force * dy) / dist;\n    this.vx += ax / this.mass;\n    this.vy += ay / this.mass;\n    target.vx -= ax / target.mass;\n    target.vy -= ay / target.mass;\n  }\n\n  public run(options?: TShapeRunOptions) {\n    // 加速度\n    this.vx += this.ax;\n    this.vy += this.ay;\n\n    // 重力\n    const gravity = parseNumber(options?.gravity, 0);\n    this.vy += gravity;\n\n    // 摩擦力方式一\n    // const friction = parseNumber(options?.friction, 0);\n    // if (friction > 0) {\n    //   const radian = Math.atan2(this.vy, this.vx);\n    //   let speed = Math.sqrt(this.vx * this.vx + this.vy * this.vy);\n    //   if (speed > friction) {\n    //     speed -= friction;\n    //   } else {\n    //     speed = 0;\n    //   }\n    //   this.vx = Math.cos(radian) * speed;\n    //   this.vy = Math.sin(radian) * speed;\n    // }\n\n    // 摩擦力方式二\n    const friction = parseNumber(options?.friction, 1);\n    this.vx *= friction;\n    this.vy *= friction;\n\n    this.x += this.vx;\n    this.y += this.vy;\n  }\n\n  public runEaseTo(\n    target: { x: number; y: number },\n    options?: TShapeRunEasingOptions\n  ) {\n    const easing = parseNumber(options?.easing, 0.05);\n    const dx = target.x - this.cX - this.x;\n    const dy = target.y - this.cY - this.y;\n    this.vx = dx * easing;\n    this.vy = dy * easing;\n    this.run(options);\n  }\n\n  public runSpringTo(\n    target: { x: number; y: number } | { x: number; y: number }[],\n    options?: TShapeRunSpringOptions\n  ) {\n    const spring = parseNumber(options?.spring, 0.03);\n    (Array.isArray(target) ? target : [target]).forEach((t) => {\n      const dx = t.x - this.cX - this.x;\n      const dy = t.y - this.cY - this.y;\n      const ax = dx * spring;\n      const ay = dy * spring;\n      this.vx += ax;\n      this.vy += ay;\n    });\n    this.run({ friction: 0.9, ...options });\n  }\n\n  public springMassTo(\n    target: Shape,\n    options?: {\n      springLength?: number;\n      spring?: number;\n    }\n  ): number {\n    const springLength = parseNumber(options?.springLength, 100);\n    const spring = parseNumber(options?.spring, 0.0001);\n    const dx = target.x - this.x;\n    const dy = target.y - this.y;\n    const dist = Math.sqrt(dx * dx + dy * dy);\n    if (dist < springLength) {\n      const ax = dx * spring;\n      const ay = dy * spring;\n      this.vx += ax / this.mass;\n      this.vy += ay / this.mass;\n      target.vx -= ax / target.mass;\n      target.vy -= ay / target.mass;\n      return 1 - dist / springLength; /// alpha: 0 ~ 1\n    }\n    return 0;\n  }\n\n  getTotalLength(): number {\n    return this.initPathD().getTotalLength();\n  }\n\n  interpolate(t: number): { x: number; y: number } {\n    return this.initPathD().interpolate(t);\n  }\n\n  getPointAtLength(length: number): {\n    x: number;\n    y: number;\n    alpha: number;\n  } {\n    return this.initPathD().getPointAtLength(length);\n  }\n\n  public trailPath(\n    trail: Shape,\n    progress = 0 // 0 ~ 1\n  ): {\n    x: number;\n    y: number;\n    alpha: number;\n  } {\n    const totalLength = this.getTotalLength();\n    trail.originD = this.initPathD().getSubpath(0, progress * totalLength);\n    return this.getPointAtLength(progress * totalLength);\n  }\n\n  public strokeDashTween(frameDuration = 1000, options?: TweenRawOptions) {\n    const pathd = this.initPathD();\n    const totalLength = maxDotNumber(pathd.getTotalLength(), 0);\n    this.setAttr({\n      strokeDasharray: `${totalLength} ${totalLength}`,\n      strokeDashoffset: `${totalLength}`\n    });\n    const prevOnUpdate = options?.onUpdate;\n    const tl = new Timeline({ frameDuration });\n    tl.addTween(\n      { offset: totalLength },\n      { offset: 0 },\n      Object.assign(options || {}, {\n        onUpdate: (coords: TweenValue, elapsed: number) => {\n          this.setAttr(\"strokeDashoffset\", \"\" + maxDotNumber(coords.offset, 2));\n          prevOnUpdate?.(coords, elapsed);\n        }\n      })\n    );\n    tl.play();\n  }\n}\n\nexport default Shape;\n","import { Shape, TShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../svg/SVGUtil\";\nimport { YZCanvasContext } from \"../../canvas\";\nimport { rotatePoint } from \"../Matrix\";\nimport { length, toRadian } from \"@zyzgroup/core-common\";\n\nexport type TPoint3DOptions = {\n  x?: number;\n  y?: number;\n  z?: number;\n  fl?: number;\n  vpX?: number;\n  vpY?: number;\n  cX?: number;\n  cY?: number;\n  cZ?: number;\n  radius?: number;\n} & TShapeOptions;\n\nexport class Point3D extends Shape {\n  public x: number;\n  public y: number;\n  public z: number;\n  // public w: number; // perspective\n  public fl: number;\n  public vpX: number;\n  public vpY: number;\n  public cX: number;\n  public cY: number;\n  public cZ: number;\n  public radius: number;\n\n  constructor(options?: TPoint3DOptions) {\n    super(options);\n    this.x = options?.x || 0;\n    this.y = options?.y || 0;\n    this.z = options?.z || 0;\n    this.fl = options?.fl || 250;\n    this.vpX = options?.vpX || 0;\n    this.vpY = options?.vpY || 0;\n    this.cX = options?.cX || 0;\n    this.cY = options?.cY || 0;\n    this.cZ = options?.cZ || 0;\n    this.radius = options?.radius || 0;\n  }\n\n  toSVGPathData(): SVGParsedPathData[] {\n    if (this.radius) {\n      return [\n        [\"M\", this.getScreenX(), this.getScreenY() - this.radius],\n        [\"a\", this.radius, this.radius, 0, 1, 1, 0, 2 * this.radius],\n        [\"a\", this.radius, this.radius, 0, 1, 1, 0, -2 * this.radius],\n        [\"z\"]\n      ];\n    } else {\n      return [[\"M\", this.getScreenX(), this.getScreenY()]];\n    }\n  }\n\n  toCanvasContext(ctx: YZCanvasContext) {\n    ctx.beginPath();\n    ctx.arc(0, 0, this.radius, 0, Math.PI * 2, true);\n    ctx.closePath();\n  }\n\n  setVanishingPoint(vpX: number, vpY: number) {\n    this.vpX = vpX;\n    this.vpY = vpY;\n  }\n\n  setCenter(cX: number, cY: number, cZ: number) {\n    this.cX = cX;\n    this.cY = cY;\n    this.cZ = cZ;\n  }\n\n  rotateX(degX: number) {\n    ({ x: this.y, y: this.z } = rotatePoint(toRadian(degX), this.y, this.z));\n  }\n\n  rotateY(degY: number) {\n    ({ x: this.x, y: this.z } = rotatePoint(toRadian(degY), this.x, this.z));\n  }\n\n  rotateZ(degZ: number) {\n    ({ x: this.x, y: this.y } = rotatePoint(toRadian(degZ), this.x, this.y));\n  }\n\n  getScreenX() {\n    const scale = this.fl / (this.fl + this.z + this.cZ);\n    return this.vpX + (this.cX + this.x) * scale;\n  }\n\n  getScreenY() {\n    const scale = this.fl / (this.fl + this.z + this.cZ);\n    return this.vpY + (this.cY + this.y) * scale;\n  }\n\n  eq(point: Point3D): boolean {\n    return (\n      this.x === point.x &&\n      this.y === point.y &&\n      this.z === point.z &&\n      this.radius === point.radius &&\n      this.mass === point.mass\n    );\n  }\n\n  length() {\n    return length(this.x, this.y, this.z);\n  }\n\n  distance(pt: Point3D): number {\n    const dx = pt.x - this.x;\n    const dy = pt.y - this.y;\n    const dz = pt.z - this.z;\n    return Math.sqrt(dx * dx + dy * dy + dz * dz);\n  }\n\n  scalar(scale: number) {\n    this.x *= scale;\n    this.y *= scale;\n    this.z *= scale;\n    return this;\n  }\n\n  normalize(len = 1): Point3D {\n    const totalLength = this.length();\n    if (totalLength) {\n      const scale = len / totalLength;\n      this.scalar(scale);\n    }\n    return this;\n  }\n\n  clamp(len: number) {\n    const totalLength = this.length();\n    if (totalLength && totalLength > len) {\n      this.scalar(len / totalLength);\n    }\n    return this;\n  }\n\n  cross(pt: Point3D) {\n    const x = this.x;\n    const y = this.y;\n    const z = this.z;\n    return {\n      x: y * pt.z - z * pt.y,\n      y: z * pt.x - x * pt.z,\n      z: x * pt.y - y * pt.x\n    };\n  }\n\n  multiply(pt: Point3D) {\n    return {\n      x: this.x * pt.x,\n      y: this.y * pt.y,\n      z: this.z * pt.z\n    };\n  }\n\n  div(pt: Point3D) {\n    return {\n      x: this.x / pt.x,\n      y: this.y / pt.y,\n      z: this.z / pt.z\n    };\n  }\n\n  add(pt: Point3D) {\n    return {\n      x: this.x + pt.x,\n      y: this.y + pt.y,\n      z: this.z + pt.z\n    };\n  }\n\n  sub(pt: Point3D) {\n    return {\n      x: this.x - pt.x,\n      y: this.y - pt.y,\n      z: this.z - pt.z\n    };\n  }\n\n  dot(pt: Point3D): number {\n    return this.x * pt.x + this.y * pt.y + this.z * pt.z;\n  }\n\n  reflect(pt: Point3D) {\n    const dp = this.dot(pt);\n    return {\n      x: this.x - 2 * dp * pt.x,\n      y: this.y - 2 * dp * pt.y,\n      z: this.z - 2 * dp * pt.z\n    };\n  }\n}\n\nexport default Point3D;\n","/* eslint-disable @typescript-eslint/adjacent-overload-signatures */\nimport {\n  regMatchAll,\n  maxDotNumber,\n  clamp,\n  toDegree,\n  toRadian\n} from \"@zyzgroup/core-common\";\nimport Point3D from \"./shapes/Point3D\";\nimport { Vector2, Vector3 } from \"./Vector\";\n// import { Euler } from \"./Euler\";\n// import { Quaternion } from \"./Quaternion\";\n\nexport const WebGLCoordinateSystem = 2000;\nexport const WebGPUCoordinateSystem = 2001;\n\n/// 按列顺序 - 4\nexport type TMatrix2Value = [number, number, number, number];\nconst DEFAULT_MATRIX2_VALUE: TMatrix2Value = [1, 0, 0, 1];\n\n/// 按列顺序 - 6\nexport type TMatrixValue = [number, number, number, number, number, number];\nconst DEFAULT_MATRIX_VALUE: TMatrixValue = [1, 0, 0, 1, 0, 0];\n\n/// 按列顺序 - 9\nexport type TMatrix3Value = [\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number\n];\nconst DEFAULT_MATRIX3_VALUE: TMatrix3Value = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n/// 按列顺序 - 16\nexport type TMatrix4Value = [\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number,\n  number\n];\nconst DEFAULT_MATRIX4_VALUE: TMatrix4Value = [\n  1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1\n];\n\nexport class Matrix2 {\n  /// 按列顺序\n  value: TMatrix2Value;\n\n  constructor(value: TMatrix2Value = DEFAULT_MATRIX2_VALUE) {\n    this.value = Array.from(value) as TMatrix2Value;\n  }\n\n  get m11() {\n    return this.value[0];\n  }\n  get m12() {\n    return this.value[1];\n  }\n  get m21() {\n    return this.value[2];\n  }\n  get m22() {\n    return this.value[3];\n  }\n\n  set m11(v: number) {\n    this.value[0] = v;\n  }\n  set m12(v: number) {\n    this.value[1] = v;\n  }\n  set m21(v: number) {\n    this.value[2] = v;\n  }\n  set m22(v: number) {\n    this.value[3] = v;\n  }\n\n  /// 按行顺序\n  set(n11 = 1, n12 = 0, n21 = 0, n22 = 1) {\n    this.m11 = n11;\n    this.m21 = n12;\n    this.m12 = n21;\n    this.m22 = n22;\n    return this;\n  }\n\n  identity() {\n    this.value = Array.from(DEFAULT_MATRIX2_VALUE) as TMatrix2Value;\n    return this;\n  }\n\n  get isIdentity(): boolean {\n    return this.m11 == 1 && this.m12 == 0 && this.m21 == 0 && this.m22 == 1;\n  }\n\n  copy(m: Matrix2) {\n    this.m11 = m.m11;\n    this.m12 = m.m12;\n    this.m21 = m.m21;\n    this.m22 = m.m22;\n    return this;\n  }\n\n  clone(): Matrix2 {\n    return new Matrix2(this.value);\n  }\n\n  fromArray(array: number[], offset = 0) {\n    for (let i = 0; i < 4; i++) {\n      this.value[i] = array[i + offset];\n    }\n    return this;\n  }\n\n  toArray(array: number[] = [], offset = 0) {\n    array[offset] = this.m11;\n    array[offset + 1] = this.m12;\n    array[offset + 2] = this.m21;\n    array[offset + 3] = this.m22;\n    return array;\n  }\n\n  multiplyMatrices(a: Matrix2, b: Matrix2) {\n    const ae = a.value;\n    const be = b.value;\n    const te = this.value;\n\n    const a11 = ae[0];\n    const a12 = ae[2];\n    const a21 = ae[1];\n    const a22 = ae[3];\n\n    const b11 = be[0];\n    const b12 = be[2];\n    const b21 = be[1];\n    const b22 = be[3];\n\n    te[0] = a11 * b11 + a12 * b21;\n    te[2] = a11 * b12 + a12 * b22;\n\n    te[1] = a21 * b11 + a22 * b21;\n    te[3] = a21 * b12 + a22 * b22;\n\n    return this;\n  }\n\n  multiply(m: Matrix2) {\n    return this.multiplyMatrices(this, m);\n  }\n\n  premultiply(m: Matrix2) {\n    return this.multiplyMatrices(m, this);\n  }\n\n  multiplyScalar(s: number) {\n    this.m11 *= s;\n    this.m12 *= s;\n    this.m21 *= s;\n    this.m22 *= s;\n    return this;\n  }\n\n  /// 行列式\n  determinant(): number {\n    return this.m11 * this.m22 - this.m21 * this.m12;\n  }\n}\n\nexport class Matrix3 {\n  /// 按列顺序\n  value: TMatrix3Value;\n\n  constructor(value: TMatrix3Value = DEFAULT_MATRIX3_VALUE) {\n    this.value = Array.from(value) as TMatrix3Value;\n  }\n\n  get m11() {\n    return this.value[0];\n  }\n  get m12() {\n    return this.value[1];\n  }\n  get m13() {\n    return this.value[2];\n  }\n  get m21() {\n    return this.value[3];\n  }\n  get m22() {\n    return this.value[4];\n  }\n  get m23() {\n    return this.value[5];\n  }\n  get m31() {\n    return this.value[6];\n  }\n  get m32() {\n    return this.value[7];\n  }\n  get m33() {\n    return this.value[8];\n  }\n\n  set m11(v: number) {\n    this.value[0] = v;\n  }\n  set m12(v: number) {\n    this.value[1] = v;\n  }\n  set m13(v: number) {\n    this.value[2] = v;\n  }\n  set m21(v: number) {\n    this.value[3] = v;\n  }\n  set m22(v: number) {\n    this.value[4] = v;\n  }\n  set m23(v: number) {\n    this.value[5] = v;\n  }\n  set m31(v: number) {\n    this.value[6] = v;\n  }\n  set m32(v: number) {\n    this.value[7] = v;\n  }\n  set m33(v: number) {\n    this.value[8] = v;\n  }\n\n  /// 按行顺序\n  set(\n    n11 = 1,\n    n12 = 0,\n    n13 = 0,\n    n21 = 0,\n    n22 = 1,\n    n23 = 0,\n    n31 = 0,\n    n32 = 0,\n    n33 = 1\n  ) {\n    const te = this.value;\n    te[0] = n11;\n    te[1] = n21;\n    te[2] = n31;\n    te[3] = n12;\n    te[4] = n22;\n    te[5] = n32;\n    te[6] = n13;\n    te[7] = n23;\n    te[8] = n33;\n    return this;\n  }\n\n  identity() {\n    this.value = Array.from(DEFAULT_MATRIX3_VALUE) as TMatrix3Value;\n    return this;\n  }\n\n  get isIdentity(): boolean {\n    return (\n      this.m11 == 1 &&\n      this.m12 == 0 &&\n      this.m13 == 0 &&\n      this.m21 == 0 &&\n      this.m22 == 1 &&\n      this.m23 == 0 &&\n      this.m31 == 0 &&\n      this.m32 == 0 &&\n      this.m33 == 1\n    );\n  }\n\n  copy(m: Matrix3) {\n    this.m11 = m.m11;\n    this.m12 = m.m12;\n    this.m13 = m.m13;\n    this.m21 = m.m21;\n    this.m22 = m.m22;\n    this.m23 = m.m23;\n    this.m31 = m.m31;\n    this.m32 = m.m32;\n    this.m33 = m.m33;\n    return this;\n  }\n\n  clone(): Matrix3 {\n    return new Matrix3(this.value);\n  }\n\n  fromArray(array: number[], offset = 0) {\n    for (let i = 0; i < 9; i++) {\n      this.value[i] = array[i + offset];\n    }\n    return this;\n  }\n\n  toArray(array: number[] = [], offset = 0) {\n    array[offset] = this.m11;\n    array[offset + 1] = this.m12;\n    array[offset + 2] = this.m13;\n    array[offset + 3] = this.m21;\n    array[offset + 4] = this.m22;\n    array[offset + 5] = this.m23;\n    array[offset + 6] = this.m31;\n    array[offset + 7] = this.m32;\n    array[offset + 8] = this.m33;\n    return array;\n  }\n\n  extractBasis(xAxis: Vector3, yAxis: Vector3, zAxis: Vector3) {\n    xAxis.setFromMatrix3Column(this, 0);\n    yAxis.setFromMatrix3Column(this, 1);\n    zAxis.setFromMatrix3Column(this, 2);\n    return this;\n  }\n\n  setFromMatrix4(m: Matrix4) {\n    this.set(m.m11, m.m21, m.m31, m.m12, m.m22, m.m32, m.m13, m.m23, m.m33);\n    return this;\n  }\n\n  multiplyMatrices(a: Matrix3, b: Matrix3) {\n    const ae = a.value;\n    const be = b.value;\n    const te = this.value;\n\n    const a11 = ae[0];\n    const a12 = ae[3];\n    const a13 = ae[6];\n    const a21 = ae[1];\n    const a22 = ae[4];\n    const a23 = ae[7];\n    const a31 = ae[2];\n    const a32 = ae[5];\n    const a33 = ae[8];\n\n    const b11 = be[0];\n    const b12 = be[3];\n    const b13 = be[6];\n    const b21 = be[1];\n    const b22 = be[4];\n    const b23 = be[7];\n    const b31 = be[2];\n    const b32 = be[5];\n    const b33 = be[8];\n\n    te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n    te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n    te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n\n    te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n    te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n    te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n\n    te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n    te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n    te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n\n    return this;\n  }\n\n  multiply(m: Matrix3) {\n    return this.multiplyMatrices(this, m);\n  }\n\n  premultiply(m: Matrix3) {\n    return this.multiplyMatrices(m, this);\n  }\n\n  multiplyScalar(s: number) {\n    this.m11 *= s;\n    this.m12 *= s;\n    this.m13 *= s;\n    this.m21 *= s;\n    this.m22 *= s;\n    this.m23 *= s;\n    this.m31 *= s;\n    this.m32 *= s;\n    this.m33 *= s;\n    return this;\n  }\n\n  /// 行列式\n  determinant(): number {\n    const te = this.value;\n    const a = te[0];\n    const b = te[1];\n    const c = te[2];\n    const d = te[3];\n    const e = te[4];\n    const f = te[5];\n    const g = te[6];\n    const h = te[7];\n    const i = te[8];\n    return (\n      a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g\n    );\n  }\n\n  inverse() {\n    const te = this.value;\n    const n11 = te[0];\n    const n21 = te[1];\n    const n31 = te[2];\n    const n12 = te[3];\n    const n22 = te[4];\n    const n32 = te[5];\n    const n13 = te[6];\n    const n23 = te[7];\n    const n33 = te[8];\n    const t11 = n33 * n22 - n32 * n23;\n    const t12 = n32 * n13 - n33 * n12;\n    const t13 = n23 * n12 - n22 * n13;\n    const det = n11 * t11 + n21 * t12 + n31 * t13;\n\n    if (det === 0) {\n      return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n    }\n\n    const detInv = 1 / det;\n\n    te[0] = t11 * detInv;\n    te[1] = (n31 * n23 - n33 * n21) * detInv;\n    te[2] = (n32 * n21 - n31 * n22) * detInv;\n\n    te[3] = t12 * detInv;\n    te[4] = (n33 * n11 - n31 * n13) * detInv;\n    te[5] = (n31 * n12 - n32 * n11) * detInv;\n\n    te[6] = t13 * detInv;\n    te[7] = (n21 * n13 - n23 * n11) * detInv;\n    te[8] = (n22 * n11 - n21 * n12) * detInv;\n\n    return this;\n  }\n\n  transpose() {\n    let tmp;\n    const m = this.value;\n\n    tmp = m[1];\n    m[1] = m[3];\n    m[3] = tmp;\n    tmp = m[2];\n    m[2] = m[6];\n    m[6] = tmp;\n    tmp = m[5];\n    m[5] = m[7];\n    m[7] = tmp;\n\n    return this;\n  }\n\n  getNormalMatrix(matrix4: Matrix4) {\n    return this.setFromMatrix4(matrix4).inverse().transpose();\n  }\n\n  transposeIntoArray(r: number[]) {\n    const m = this.value;\n    r[0] = m[0];\n    r[1] = m[3];\n    r[2] = m[6];\n    r[3] = m[1];\n    r[4] = m[4];\n    r[5] = m[7];\n    r[6] = m[2];\n    r[7] = m[5];\n    r[8] = m[8];\n    return this;\n  }\n\n  setUvTransform(\n    tx: number,\n    ty: number,\n    sx: number,\n    sy: number,\n    rotation: number,\n    cx: number,\n    cy: number\n  ) {\n    const c = Math.cos(rotation);\n    const s = Math.sin(rotation);\n    this.set(\n      sx * c,\n      sx * s,\n      -sx * (c * cx + s * cy) + cx + tx,\n      -sy * s,\n      sy * c,\n      -sy * (-s * cx + c * cy) + cy + ty,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n\n  scale(sx: number, sy: number) {\n    this.premultiply(_m3.makeScale(sx, sy));\n    return this;\n  }\n\n  rotate(theta: number) {\n    this.premultiply(_m3.makeRotation(-theta));\n    return this;\n  }\n\n  translate(tx: number, ty: number) {\n    this.premultiply(_m3.makeTranslation(tx, ty));\n    return this;\n  }\n\n  makeTranslation(x: Vector2 | number, y?: number) {\n    if (typeof x === \"number\") {\n      this.set(1, 0, x, 0, 1, y, 0, 0, 1);\n    } else {\n      this.set(1, 0, x.x, 0, 1, x.y, 0, 0, 1);\n    }\n    return this;\n  }\n\n  // counterclockwise\n  makeRotation(theta: number) {\n    const c = Math.cos(theta);\n    const s = Math.sin(theta);\n    this.set(c, -s, 0, s, c, 0, 0, 0, 1);\n    return this;\n  }\n\n  makeScale(x: number, y: number) {\n    this.set(x, 0, 0, 0, y, 0, 0, 0, 1);\n    return this;\n  }\n\n  equals(matrix: Matrix3) {\n    for (let i = 0; i < 9; i++) {\n      if (this.value[i] !== matrix.value[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\nexport class Matrix4 {\n  /// 按列顺序\n  value: TMatrix4Value;\n  is3dSpecial = false;\n\n  constructor(value: TMatrix4Value = DEFAULT_MATRIX4_VALUE) {\n    this.value = Array.from(value) as TMatrix4Value;\n  }\n\n  get m11() {\n    return this.value[0];\n  }\n  get m12() {\n    return this.value[1];\n  }\n  get m13() {\n    return this.value[2];\n  }\n  get m14() {\n    return this.value[3];\n  }\n  get m21() {\n    return this.value[4];\n  }\n  get m22() {\n    return this.value[5];\n  }\n  get m23() {\n    return this.value[6];\n  }\n  get m24() {\n    return this.value[7];\n  }\n  get m31() {\n    return this.value[8];\n  }\n  get m32() {\n    return this.value[9];\n  }\n  get m33() {\n    return this.value[10];\n  }\n  get m34() {\n    return this.value[11];\n  }\n  get m41() {\n    return this.value[12];\n  }\n  get m42() {\n    return this.value[13];\n  }\n  get m43() {\n    return this.value[14];\n  }\n  get m44() {\n    return this.value[15];\n  }\n\n  set m11(v: number) {\n    this.value[0] = v;\n  }\n  set m12(v: number) {\n    this.value[1] = v;\n  }\n  set m13(v: number) {\n    this.value[2] = v;\n  }\n  set m14(v: number) {\n    this.value[3] = v;\n  }\n  set m21(v: number) {\n    this.value[4] = v;\n  }\n  set m22(v: number) {\n    this.value[5] = v;\n  }\n  set m23(v: number) {\n    this.value[6] = v;\n  }\n  set m24(v: number) {\n    this.value[7] = v;\n  }\n  set m31(v: number) {\n    this.value[8] = v;\n  }\n  set m32(v: number) {\n    this.value[9] = v;\n  }\n  set m33(v: number) {\n    this.value[10] = v;\n  }\n  set m34(v: number) {\n    this.value[11] = v;\n  }\n  set m41(v: number) {\n    this.value[12] = v;\n  }\n  set m42(v: number) {\n    this.value[13] = v;\n  }\n  set m43(v: number) {\n    this.value[14] = v;\n  }\n  set m44(v: number) {\n    this.value[15] = v;\n  }\n\n  /// 按行顺序\n  set(\n    n11 = 1,\n    n12 = 0,\n    n13 = 0,\n    n14 = 0,\n    n21 = 0,\n    n22 = 1,\n    n23 = 0,\n    n24 = 0,\n    n31 = 0,\n    n32 = 0,\n    n33 = 1,\n    n34 = 0,\n    n41 = 0,\n    n42 = 0,\n    n43 = 0,\n    n44 = 1\n  ) {\n    const te = this.value;\n    te[0] = n11;\n    te[4] = n12;\n    te[8] = n13;\n    te[12] = n14;\n    te[1] = n21;\n    te[5] = n22;\n    te[9] = n23;\n    te[13] = n24;\n    te[2] = n31;\n    te[6] = n32;\n    te[10] = n33;\n    te[14] = n34;\n    te[3] = n41;\n    te[7] = n42;\n    te[11] = n43;\n    te[15] = n44;\n    return this;\n  }\n\n  is2D(): boolean {\n    return (\n      !this.is3dSpecial &&\n      this.m31 == 0 &&\n      this.m32 == 0 &&\n      this.m33 == 1 &&\n      this.m34 == 0 &&\n      this.m43 == 0 &&\n      this.m44 == 1\n    );\n  }\n\n  is3D(): boolean {\n    return !this.is2D();\n  }\n\n  identity() {\n    this.value = Array.from(DEFAULT_MATRIX4_VALUE) as TMatrix4Value;\n    return this;\n  }\n\n  get isIdentity(): boolean {\n    return (\n      this.m11 == 1 &&\n      this.m12 == 0 &&\n      this.m13 == 0 &&\n      this.m14 == 0 &&\n      this.m21 == 0 &&\n      this.m22 == 1 &&\n      this.m23 == 0 &&\n      this.m24 == 0 &&\n      this.m31 == 0 &&\n      this.m32 == 0 &&\n      this.m33 == 1 &&\n      this.m34 == 0 &&\n      this.m41 == 0 &&\n      this.m42 == 0 &&\n      this.m43 == 0 &&\n      this.m44 == 1\n    );\n  }\n\n  copy(m: Matrix4) {\n    this.m11 = m.m11;\n    this.m12 = m.m12;\n    this.m13 = m.m13;\n    this.m14 = m.m14;\n    this.m21 = m.m21;\n    this.m22 = m.m22;\n    this.m23 = m.m23;\n    this.m24 = m.m24;\n    this.m31 = m.m31;\n    this.m32 = m.m32;\n    this.m33 = m.m33;\n    this.m34 = m.m34;\n    this.m41 = m.m41;\n    this.m42 = m.m42;\n    this.m43 = m.m43;\n    this.m44 = m.m44;\n    return this;\n  }\n\n  clone(): Matrix4 {\n    return new Matrix4(this.value);\n  }\n\n  // matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1)\n  static fromString(s: string) {\n    const m = new Matrix4();\n    const results = regMatchAll(\"number\", s);\n    if (results.length === 16) {\n      results.forEach((result, index) => {\n        if (result.fullMatch) {\n          m.value[index] = parseFloat(result.fullMatch);\n        }\n      });\n    }\n    return m;\n  }\n\n  fromArray(array: number[], offset = 0) {\n    for (let i = 0; i < 16; i++) {\n      this.value[i] = array[i + offset];\n    }\n    return this;\n  }\n\n  toArray(array: number[] = [], offset = 0) {\n    const te = this.value;\n\n    array[offset] = te[0];\n    array[offset + 1] = te[1];\n    array[offset + 2] = te[2];\n    array[offset + 3] = te[3];\n\n    array[offset + 4] = te[4];\n    array[offset + 5] = te[5];\n    array[offset + 6] = te[6];\n    array[offset + 7] = te[7];\n\n    array[offset + 8] = te[8];\n    array[offset + 9] = te[9];\n    array[offset + 10] = te[10];\n    array[offset + 11] = te[11];\n\n    array[offset + 12] = te[12];\n    array[offset + 13] = te[13];\n    array[offset + 14] = te[14];\n    array[offset + 15] = te[15];\n\n    return array;\n  }\n\n  copyPosition(m: Matrix4) {\n    const te = this.value;\n    const me = m.value;\n    te[12] = me[12];\n    te[13] = me[13];\n    te[14] = me[14];\n    return this;\n  }\n\n  setFromMatrix3(m: Matrix3) {\n    const me = m.value;\n    this.set(\n      me[0],\n      me[3],\n      me[6],\n      0,\n      me[1],\n      me[4],\n      me[7],\n      0,\n      me[2],\n      me[5],\n      me[8],\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n\n  extractBasis(xAxis: Vector3, yAxis: Vector3, zAxis: Vector3) {\n    xAxis.setFromMatrix4Column(this, 0);\n    yAxis.setFromMatrix4Column(this, 1);\n    zAxis.setFromMatrix4Column(this, 2);\n    return this;\n  }\n\n  makeBasis(xAxis: Vector3, yAxis: Vector3, zAxis: Vector3) {\n    this.set(\n      xAxis.x,\n      yAxis.x,\n      zAxis.x,\n      0,\n      xAxis.y,\n      yAxis.y,\n      zAxis.y,\n      0,\n      xAxis.z,\n      yAxis.z,\n      zAxis.z,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n\n  normalize() {\n    return this.multiplyScalar(1 / (this.m44 || 0.0001));\n  }\n\n  // w: perspective\n  transformPoint(point: { x: number; y: number; z?: number; w?: number }): {\n    x: number;\n    y: number;\n    z: number;\n    w: number;\n  } {\n    const z = point.z || 1;\n    const w = point.w || 1;\n    return {\n      x: point.x * this.m11 + point.y * this.m21 + z * this.m31 + w * this.m41,\n      y: point.x * this.m12 + point.y * this.m22 + z * this.m32 + w * this.m42,\n      z: point.x * this.m13 + point.y * this.m23 + z * this.m33 + w * this.m43,\n      w: point.x * this.m14 + point.y * this.m24 + z * this.m34 + w * this.m44\n    };\n  }\n\n  toMatrix(matrix?: Matrix) {\n    const { scalarX, scalarY, skewX, skewY, x, y } = this.split();\n    const value: TMatrixValue = [scalarX, skewY, skewX, scalarY, x, y];\n    if (matrix) {\n      matrix.value = value;\n      return matrix;\n    } else {\n      return new Matrix(value);\n    }\n    // if (!matrix) {\n    //   matrix = new Matrix();\n    // }\n    // matrix.m11 = this.m11;\n    // matrix.m12 = this.m12;\n    // matrix.m13 = this.m14;\n    // matrix.m21 = this.m21;\n    // matrix.m22 = this.m22;\n    // matrix.m23 = this.m24;\n    // matrix.m31 = this.m41;\n    // matrix.m32 = this.m42;\n    // matrix.m33 = this.m44;\n    // return matrix;\n  }\n\n  flatten(): Matrix4 {\n    this.m31 = 0;\n    this.m32 = 0;\n    this.m33 = 1;\n    this.m34 = 0;\n    this.m14 = 0;\n    this.m24 = 0;\n    this.m43 = 0;\n    this.m44 = 1;\n    return this;\n  }\n\n  toString(fractionalDigits = 6) {\n    return `matrix3d(${this.value\n      .map((v) => maxDotNumber(v, fractionalDigits))\n      .join(\",\")})`;\n  }\n\n  split() {\n    const scalarX = Math.sqrt(\n      this.m11 * this.m11 + this.m12 * this.m12 + this.m13 * this.m13\n    );\n    const scalarY = Math.sqrt(\n      this.m21 * this.m21 + this.m22 * this.m22 + this.m23 * this.m23\n    );\n    const scalarZ = Math.sqrt(\n      this.m31 * this.m31 + this.m32 * this.m32 + this.m33 * this.m33\n    );\n    const degreeY = toDegree(clamp(Math.asin(-this.m13), -1, 1));\n    let degreeX = toDegree(Math.atan2(this.m23, this.m33));\n    if (Math.cos(toRadian(degreeY)) === 0) {\n      degreeX = toDegree(Math.atan2(-this.m31, this.m22));\n      // degreeZ = 0;\n    }\n    let degreeZ = toDegree(Math.atan2(this.m12, this.m11));\n    if (this.m11 < 0 && this.m22 >= 0) {\n      degreeZ += 180;\n    }\n    return {\n      x: this.m41,\n      y: this.m42,\n      z: this.m43,\n      scalarX,\n      scalarY,\n      scalarZ,\n      degreeX,\n      degreeY,\n      degreeZ,\n      skewX: toDegree(this.m14),\n      skewY: toDegree(this.m24),\n      skewZ: toDegree(this.m34),\n      skewW: this.m44,\n      perspective: this.m34 ? -(1 / this.m34) : 0\n    };\n  }\n\n  extractRotation(m: Matrix4) {\n    // this method does not support reflection matrices\n    const te = this.value;\n    const me = m.value;\n\n    const scaleX = 1 / _v3.setFromMatrix4Column(m, 0).length();\n    const scaleY = 1 / _v3.setFromMatrix4Column(m, 1).length();\n    const scaleZ = 1 / _v3.setFromMatrix4Column(m, 2).length();\n\n    te[0] = me[0] * scaleX;\n    te[1] = me[1] * scaleX;\n    te[2] = me[2] * scaleX;\n    te[3] = 0;\n\n    te[4] = me[4] * scaleY;\n    te[5] = me[5] * scaleY;\n    te[6] = me[6] * scaleY;\n    te[7] = 0;\n\n    te[8] = me[8] * scaleZ;\n    te[9] = me[9] * scaleZ;\n    te[10] = me[10] * scaleZ;\n    te[11] = 0;\n\n    te[12] = 0;\n    te[13] = 0;\n    te[14] = 0;\n    te[15] = 1;\n\n    return this;\n  }\n\n  // makeRotationFromEuler(euler: Euler) {\n  //   const te = this.value;\n\n  //   const x = euler.x;\n  //   const y = euler.y;\n  //   const z = euler.z;\n  //   const a = Math.cos(x);\n  //   const b = Math.sin(x);\n  //   const c = Math.cos(y);\n  //   const d = Math.sin(y);\n  //   const e = Math.cos(z);\n  //   const f = Math.sin(z);\n\n  //   if (euler.order === \"XYZ\") {\n  //     const ae = a * e;\n  //     const af = a * f;\n  //     const be = b * e;\n  //     const bf = b * f;\n\n  //     te[0] = c * e;\n  //     te[4] = -c * f;\n  //     te[8] = d;\n\n  //     te[1] = af + be * d;\n  //     te[5] = ae - bf * d;\n  //     te[9] = -b * c;\n\n  //     te[2] = bf - ae * d;\n  //     te[6] = be + af * d;\n  //     te[10] = a * c;\n  //   } else if (euler.order === \"YXZ\") {\n  //     const ce = c * e;\n  //     const cf = c * f;\n  //     const de = d * e;\n  //     const df = d * f;\n\n  //     te[0] = ce + df * b;\n  //     te[4] = de * b - cf;\n  //     te[8] = a * d;\n\n  //     te[1] = a * f;\n  //     te[5] = a * e;\n  //     te[9] = -b;\n\n  //     te[2] = cf * b - de;\n  //     te[6] = df + ce * b;\n  //     te[10] = a * c;\n  //   } else if (euler.order === \"ZXY\") {\n  //     const ce = c * e;\n  //     const cf = c * f;\n  //     const de = d * e;\n  //     const df = d * f;\n\n  //     te[0] = ce - df * b;\n  //     te[4] = -a * f;\n  //     te[8] = de + cf * b;\n\n  //     te[1] = cf + de * b;\n  //     te[5] = a * e;\n  //     te[9] = df - ce * b;\n\n  //     te[2] = -a * d;\n  //     te[6] = b;\n  //     te[10] = a * c;\n  //   } else if (euler.order === \"ZYX\") {\n  //     const ae = a * e;\n  //     const af = a * f;\n  //     const be = b * e;\n  //     const bf = b * f;\n\n  //     te[0] = c * e;\n  //     te[4] = be * d - af;\n  //     te[8] = ae * d + bf;\n\n  //     te[1] = c * f;\n  //     te[5] = bf * d + ae;\n  //     te[9] = af * d - be;\n\n  //     te[2] = -d;\n  //     te[6] = b * c;\n  //     te[10] = a * c;\n  //   } else if (euler.order === \"YZX\") {\n  //     const ac = a * c;\n  //     const ad = a * d;\n  //     const bc = b * c;\n  //     const bd = b * d;\n\n  //     te[0] = c * e;\n  //     te[4] = bd - ac * f;\n  //     te[8] = bc * f + ad;\n\n  //     te[1] = f;\n  //     te[5] = a * e;\n  //     te[9] = -b * e;\n\n  //     te[2] = -d * e;\n  //     te[6] = ad * f + bc;\n  //     te[10] = ac - bd * f;\n  //   } else if (euler.order === \"XZY\") {\n  //     const ac = a * c;\n  //     const ad = a * d;\n  //     const bc = b * c;\n  //     const bd = b * d;\n\n  //     te[0] = c * e;\n  //     te[4] = -f;\n  //     te[8] = d * e;\n\n  //     te[1] = ac * f + bd;\n  //     te[5] = a * e;\n  //     te[9] = ad * f - bc;\n\n  //     te[2] = bc * f - ad;\n  //     te[6] = b * e;\n  //     te[10] = bd * f + ac;\n  //   }\n\n  //   // bottom row\n  //   te[3] = 0;\n  //   te[7] = 0;\n  //   te[11] = 0;\n\n  //   // last column\n  //   te[12] = 0;\n  //   te[13] = 0;\n  //   te[14] = 0;\n  //   te[15] = 1;\n\n  //   return this;\n  // }\n\n  // makeRotationFromQuaternion(q: Quaternion) {\n  //   return this.compose(_zero, q, _one);\n  // }\n\n  lookAt(eye: Vector3, target: Vector3, up: Vector3) {\n    const te = this.value;\n\n    _z.subVectors(eye, target);\n\n    if (_z.lengthSq() === 0) {\n      // eye and target are in the same position\n      _z.z = 1;\n    }\n\n    _z.normalize();\n    _x.crossVectors(up, _z);\n\n    if (_x.lengthSq() === 0) {\n      // up and z are parallel\n\n      if (Math.abs(up.z) === 1) {\n        _z.x += 0.0001;\n      } else {\n        _z.z += 0.0001;\n      }\n\n      _z.normalize();\n      _x.crossVectors(up, _z);\n    }\n\n    _x.normalize();\n    _y.crossVectors(_z, _x);\n\n    te[0] = _x.x;\n    te[4] = _y.x;\n    te[8] = _z.x;\n    te[1] = _x.y;\n    te[5] = _y.y;\n    te[9] = _z.y;\n    te[2] = _x.z;\n    te[6] = _y.z;\n    te[10] = _z.z;\n\n    return this;\n  }\n\n  multiplyMatrices(a: Matrix4, b: Matrix4) {\n    const ae = a.value;\n    const be = b.value;\n    const te = this.value;\n\n    const a11 = ae[0];\n    const a12 = ae[4];\n    const a13 = ae[8];\n    const a14 = ae[12];\n    const a21 = ae[1];\n    const a22 = ae[5];\n    const a23 = ae[9];\n    const a24 = ae[13];\n    const a31 = ae[2];\n    const a32 = ae[6];\n    const a33 = ae[10];\n    const a34 = ae[14];\n    const a41 = ae[3];\n    const a42 = ae[7];\n    const a43 = ae[11];\n    const a44 = ae[15];\n\n    const b11 = be[0];\n    const b12 = be[4];\n    const b13 = be[8];\n    const b14 = be[12];\n    const b21 = be[1];\n    const b22 = be[5];\n    const b23 = be[9];\n    const b24 = be[13];\n    const b31 = be[2];\n    const b32 = be[6];\n    const b33 = be[10];\n    const b34 = be[14];\n    const b41 = be[3];\n    const b42 = be[7];\n    const b43 = be[11];\n    const b44 = be[15];\n\n    te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n    te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n    te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n    te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n    te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n    te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n    te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n    te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n    te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n    te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n    te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n    te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n    te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n    te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n    te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n    te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n    return this;\n  }\n\n  multiply(m: Matrix4) {\n    return this.multiplyMatrices(this, m);\n  }\n\n  premultiply(m: Matrix4) {\n    return this.multiplyMatrices(m, this);\n  }\n\n  multiplyScalar(s: number) {\n    this.m11 *= s;\n    this.m12 *= s;\n    this.m13 *= s;\n    this.m14 *= s;\n    this.m21 *= s;\n    this.m22 *= s;\n    this.m23 *= s;\n    this.m24 *= s;\n    this.m31 *= s;\n    this.m32 *= s;\n    this.m33 *= s;\n    this.m34 *= s;\n    return this;\n  }\n\n  /// 行列式\n  determinant() {\n    const te = this.value;\n\n    const n11 = te[0];\n    const n12 = te[4];\n    const n13 = te[8];\n    const n14 = te[12];\n    const n21 = te[1];\n    const n22 = te[5];\n    const n23 = te[9];\n    const n24 = te[13];\n    const n31 = te[2];\n    const n32 = te[6];\n    const n33 = te[10];\n    const n34 = te[14];\n    const n41 = te[3];\n    const n42 = te[7];\n    const n43 = te[11];\n    const n44 = te[15];\n\n    //TODO: make this more efficient\n    //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n    return (\n      n41 *\n        (+n14 * n23 * n32 -\n          n13 * n24 * n32 -\n          n14 * n22 * n33 +\n          n12 * n24 * n33 +\n          n13 * n22 * n34 -\n          n12 * n23 * n34) +\n      n42 *\n        (+n11 * n23 * n34 -\n          n11 * n24 * n33 +\n          n14 * n21 * n33 -\n          n13 * n21 * n34 +\n          n13 * n24 * n31 -\n          n14 * n23 * n31) +\n      n43 *\n        (+n11 * n24 * n32 -\n          n11 * n22 * n34 -\n          n14 * n21 * n32 +\n          n12 * n21 * n34 +\n          n14 * n22 * n31 -\n          n12 * n24 * n31) +\n      n44 *\n        (-n13 * n22 * n31 -\n          n11 * n23 * n32 +\n          n11 * n22 * n33 +\n          n13 * n21 * n32 -\n          n12 * n21 * n33 +\n          n12 * n23 * n31)\n    );\n  }\n\n  transpose() {\n    const te = this.value;\n    let tmp;\n\n    tmp = te[1];\n    te[1] = te[4];\n    te[4] = tmp;\n    tmp = te[2];\n    te[2] = te[8];\n    te[8] = tmp;\n    tmp = te[6];\n    te[6] = te[9];\n    te[9] = tmp;\n\n    tmp = te[3];\n    te[3] = te[12];\n    te[12] = tmp;\n    tmp = te[7];\n    te[7] = te[13];\n    te[13] = tmp;\n    tmp = te[11];\n    te[11] = te[14];\n    te[14] = tmp;\n\n    return this;\n  }\n\n  setPosition(x: number, y: number, z: number): this;\n  setPosition(x: Vector3): this;\n  setPosition(x: Vector3 | number, y?: number, z?: number): this {\n    const te = this.value;\n    if (x instanceof Vector3) {\n      te[12] = x.x;\n      te[13] = x.y;\n      te[14] = x.z;\n    } else if (\n      typeof x == \"number\" &&\n      typeof y == \"number\" &&\n      typeof z == \"number\"\n    ) {\n      te[12] = x;\n      te[13] = y;\n      te[14] = z;\n    }\n    return this;\n  }\n\n  inverse() {\n    const te = this.value;\n    const n11 = te[0];\n    const n21 = te[1];\n    const n31 = te[2];\n    const n41 = te[3];\n    const n12 = te[4];\n    const n22 = te[5];\n    const n32 = te[6];\n    const n42 = te[7];\n    const n13 = te[8];\n    const n23 = te[9];\n    const n33 = te[10];\n    const n43 = te[11];\n    const n14 = te[12];\n    const n24 = te[13];\n    const n34 = te[14];\n    const n44 = te[15];\n    const t11 =\n      n23 * n34 * n42 -\n      n24 * n33 * n42 +\n      n24 * n32 * n43 -\n      n22 * n34 * n43 -\n      n23 * n32 * n44 +\n      n22 * n33 * n44;\n    const t12 =\n      n14 * n33 * n42 -\n      n13 * n34 * n42 -\n      n14 * n32 * n43 +\n      n12 * n34 * n43 +\n      n13 * n32 * n44 -\n      n12 * n33 * n44;\n    const t13 =\n      n13 * n24 * n42 -\n      n14 * n23 * n42 +\n      n14 * n22 * n43 -\n      n12 * n24 * n43 -\n      n13 * n22 * n44 +\n      n12 * n23 * n44;\n    const t14 =\n      n14 * n23 * n32 -\n      n13 * n24 * n32 -\n      n14 * n22 * n33 +\n      n12 * n24 * n33 +\n      n13 * n22 * n34 -\n      n12 * n23 * n34;\n\n    const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n    if (det === 0) {\n      return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    }\n\n    const detInv = 1 / det;\n\n    te[0] = t11 * detInv;\n    te[1] =\n      (n24 * n33 * n41 -\n        n23 * n34 * n41 -\n        n24 * n31 * n43 +\n        n21 * n34 * n43 +\n        n23 * n31 * n44 -\n        n21 * n33 * n44) *\n      detInv;\n    te[2] =\n      (n22 * n34 * n41 -\n        n24 * n32 * n41 +\n        n24 * n31 * n42 -\n        n21 * n34 * n42 -\n        n22 * n31 * n44 +\n        n21 * n32 * n44) *\n      detInv;\n    te[3] =\n      (n23 * n32 * n41 -\n        n22 * n33 * n41 -\n        n23 * n31 * n42 +\n        n21 * n33 * n42 +\n        n22 * n31 * n43 -\n        n21 * n32 * n43) *\n      detInv;\n\n    te[4] = t12 * detInv;\n    te[5] =\n      (n13 * n34 * n41 -\n        n14 * n33 * n41 +\n        n14 * n31 * n43 -\n        n11 * n34 * n43 -\n        n13 * n31 * n44 +\n        n11 * n33 * n44) *\n      detInv;\n    te[6] =\n      (n14 * n32 * n41 -\n        n12 * n34 * n41 -\n        n14 * n31 * n42 +\n        n11 * n34 * n42 +\n        n12 * n31 * n44 -\n        n11 * n32 * n44) *\n      detInv;\n    te[7] =\n      (n12 * n33 * n41 -\n        n13 * n32 * n41 +\n        n13 * n31 * n42 -\n        n11 * n33 * n42 -\n        n12 * n31 * n43 +\n        n11 * n32 * n43) *\n      detInv;\n\n    te[8] = t13 * detInv;\n    te[9] =\n      (n14 * n23 * n41 -\n        n13 * n24 * n41 -\n        n14 * n21 * n43 +\n        n11 * n24 * n43 +\n        n13 * n21 * n44 -\n        n11 * n23 * n44) *\n      detInv;\n    te[10] =\n      (n12 * n24 * n41 -\n        n14 * n22 * n41 +\n        n14 * n21 * n42 -\n        n11 * n24 * n42 -\n        n12 * n21 * n44 +\n        n11 * n22 * n44) *\n      detInv;\n    te[11] =\n      (n13 * n22 * n41 -\n        n12 * n23 * n41 -\n        n13 * n21 * n42 +\n        n11 * n23 * n42 +\n        n12 * n21 * n43 -\n        n11 * n22 * n43) *\n      detInv;\n\n    te[12] = t14 * detInv;\n    te[13] =\n      (n13 * n24 * n31 -\n        n14 * n23 * n31 +\n        n14 * n21 * n33 -\n        n11 * n24 * n33 -\n        n13 * n21 * n34 +\n        n11 * n23 * n34) *\n      detInv;\n    te[14] =\n      (n14 * n22 * n31 -\n        n12 * n24 * n31 -\n        n14 * n21 * n32 +\n        n11 * n24 * n32 +\n        n12 * n21 * n34 -\n        n11 * n22 * n34) *\n      detInv;\n    te[15] =\n      (n12 * n23 * n31 -\n        n13 * n22 * n31 +\n        n13 * n21 * n32 -\n        n11 * n23 * n32 -\n        n12 * n21 * n33 +\n        n11 * n22 * n33) *\n      detInv;\n    return this;\n  }\n\n  getMaxScaleOnAxis() {\n    const te = this.value;\n    const scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2];\n    const scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6];\n    const scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10];\n    return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n  }\n\n  makeTranslation(x: Vector3 | number, y?: number, z?: number) {\n    if (x instanceof Vector3) {\n      this.set(1, 0, 0, x.x, 0, 1, 0, x.y, 0, 0, 1, x.z, 0, 0, 0, 1);\n    } else {\n      this.set(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1);\n    }\n    return this;\n  }\n\n  makeRotationX(theta: number) {\n    const c = Math.cos(theta);\n    const s = Math.sin(theta);\n    this.set(1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1);\n    return this;\n  }\n\n  makeRotationY(theta: number) {\n    const c = Math.cos(theta);\n    const s = Math.sin(theta);\n    this.set(c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1);\n    return this;\n  }\n\n  makeRotationZ(theta: number) {\n    const c = Math.cos(theta);\n    const s = Math.sin(theta);\n    this.set(c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    return this;\n  }\n\n  makeRotationAxis(axis: Vector3, angle: number) {\n    // Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n    const c = Math.cos(angle);\n    const s = Math.sin(angle);\n    const t = 1 - c;\n    const x = axis.x;\n    const y = axis.y;\n    const z = axis.z;\n    const tx = t * x;\n    const ty = t * y;\n\n    this.set(\n      tx * x + c,\n      tx * y - s * z,\n      tx * z + s * y,\n      0,\n      tx * y + s * z,\n      ty * y + c,\n      ty * z - s * x,\n      0,\n      tx * z - s * y,\n      ty * z + s * x,\n      t * z * z + c,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n\n    return this;\n  }\n\n  makeScale(x: number, y: number, z: number) {\n    this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n    return this;\n  }\n\n  makeShear(\n    xy: number,\n    xz: number,\n    yx: number,\n    yz: number,\n    zx: number,\n    zy: number\n  ) {\n    this.set(1, yx, zx, 0, xy, 1, zy, 0, xz, yz, 1, 0, 0, 0, 0, 1);\n    return this;\n  }\n\n  makePerspective(\n    left: number,\n    right: number,\n    top: number,\n    bottom: number,\n    near: number,\n    far: number,\n    coordinateSystem = WebGLCoordinateSystem\n  ) {\n    const te = this.value;\n    const x = (2 * near) / (right - left);\n    const y = (2 * near) / (top - bottom);\n\n    const a = (right + left) / (right - left);\n    const b = (top + bottom) / (top - bottom);\n\n    let c, d;\n\n    if (coordinateSystem === WebGLCoordinateSystem) {\n      c = -(far + near) / (far - near);\n      d = (-2 * far * near) / (far - near);\n    } else if (coordinateSystem === WebGPUCoordinateSystem) {\n      c = -far / (far - near);\n      d = (-far * near) / (far - near);\n    } else {\n      throw new Error(\n        \"Matrix4.makePerspective(): Invalid coordinate system: \" +\n          coordinateSystem\n      );\n    }\n\n    te[0] = x;\n    te[4] = 0;\n    te[8] = a;\n    te[12] = 0;\n    te[1] = 0;\n    te[5] = y;\n    te[9] = b;\n    te[13] = 0;\n    te[2] = 0;\n    te[6] = 0;\n    te[10] = c;\n    te[14] = d;\n    te[3] = 0;\n    te[7] = 0;\n    te[11] = -1;\n    te[15] = 0;\n\n    return this;\n  }\n\n  makeOrthographic(\n    left: number,\n    right: number,\n    top: number,\n    bottom: number,\n    near: number,\n    far: number,\n    coordinateSystem = WebGLCoordinateSystem\n  ) {\n    const te = this.value;\n    const w = 1.0 / (right - left);\n    const h = 1.0 / (top - bottom);\n    const p = 1.0 / (far - near);\n\n    const x = (right + left) * w;\n    const y = (top + bottom) * h;\n\n    let z, zInv;\n\n    if (coordinateSystem === WebGLCoordinateSystem) {\n      z = (far + near) * p;\n      zInv = -2 * p;\n    } else if (coordinateSystem === WebGPUCoordinateSystem) {\n      z = near * p;\n      zInv = -1 * p;\n    } else {\n      throw new Error(\n        \"Matrix4.makeOrthographic(): Invalid coordinate system: \" +\n          coordinateSystem\n      );\n    }\n\n    te[0] = 2 * w;\n    te[4] = 0;\n    te[8] = 0;\n    te[12] = -x;\n    te[1] = 0;\n    te[5] = 2 * h;\n    te[9] = 0;\n    te[13] = -y;\n    te[2] = 0;\n    te[6] = 0;\n    te[10] = zInv;\n    te[14] = -z;\n    te[3] = 0;\n    te[7] = 0;\n    te[11] = 0;\n    te[15] = 1;\n\n    return this;\n  }\n\n  // compose(position: Vector3, quaternion: Quaternion, scale: Vector3) {\n  //   const te = this.value;\n\n  //   const x = quaternion.x;\n  //   const y = quaternion.y;\n  //   const z = quaternion.z;\n  //   const w = quaternion.w;\n  //   const x2 = x + x;\n  //   const y2 = y + y;\n  //   const z2 = z + z;\n  //   const xx = x * x2;\n  //   const xy = x * y2;\n  //   const xz = x * z2;\n  //   const yy = y * y2;\n  //   const yz = y * z2;\n  //   const zz = z * z2;\n  //   const wx = w * x2;\n  //   const wy = w * y2;\n  //   const wz = w * z2;\n\n  //   const sx = scale.x;\n  //   const sy = scale.y;\n  //   const sz = scale.z;\n\n  //   te[0] = (1 - (yy + zz)) * sx;\n  //   te[1] = (xy + wz) * sx;\n  //   te[2] = (xz - wy) * sx;\n  //   te[3] = 0;\n\n  //   te[4] = (xy - wz) * sy;\n  //   te[5] = (1 - (xx + zz)) * sy;\n  //   te[6] = (yz + wx) * sy;\n  //   te[7] = 0;\n\n  //   te[8] = (xz + wy) * sz;\n  //   te[9] = (yz - wx) * sz;\n  //   te[10] = (1 - (xx + yy)) * sz;\n  //   te[11] = 0;\n\n  //   te[12] = position.x;\n  //   te[13] = position.y;\n  //   te[14] = position.z;\n  //   te[15] = 1;\n\n  //   return this;\n  // }\n\n  // decompose(position: Vector3, quaternion: Quaternion, scale: Vector3) {\n  //   const te = this.value;\n\n  //   let sx = _v3.set(te[0], te[1], te[2]).length();\n  //   const sy = _v3.set(te[4], te[5], te[6]).length();\n  //   const sz = _v3.set(te[8], te[9], te[10]).length();\n\n  //   // if determine is negative, we need to invert one scale\n  //   const det = this.determinant();\n  //   if (det < 0) sx = -sx;\n\n  //   position.x = te[12];\n  //   position.y = te[13];\n  //   position.z = te[14];\n\n  //   // scale the rotation part\n  //   _m4.copy(this);\n\n  //   const invSX = 1 / sx;\n  //   const invSY = 1 / sy;\n  //   const invSZ = 1 / sz;\n\n  //   _m4.value[0] *= invSX;\n  //   _m4.value[1] *= invSX;\n  //   _m4.value[2] *= invSX;\n\n  //   _m4.value[4] *= invSY;\n  //   _m4.value[5] *= invSY;\n  //   _m4.value[6] *= invSY;\n\n  //   _m4.value[8] *= invSZ;\n  //   _m4.value[9] *= invSZ;\n  //   _m4.value[10] *= invSZ;\n\n  //   quaternion.setFromRotationMatrix4(_m4);\n\n  //   scale.x = sx;\n  //   scale.y = sy;\n  //   scale.z = sz;\n\n  //   return this;\n  // }\n\n  equals(matrix: Matrix4) {\n    for (let i = 0; i < 16; i++) {\n      if (this.value[i] !== matrix.value[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  translate(x = 0, y = 0, z = 0) {\n    return this.multiply(\n      new Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1])\n    );\n  }\n\n  scale(x = 1, y = 1, z = 1) {\n    return this.multiply(\n      new Matrix4([x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1])\n    );\n  }\n\n  scaleVector3(v: Vector3) {\n    const te = this.value;\n    const x = v.x;\n    const y = v.y;\n    const z = v.z;\n\n    te[0] *= x;\n    te[4] *= y;\n    te[8] *= z;\n    te[1] *= x;\n    te[5] *= y;\n    te[9] *= z;\n    te[2] *= x;\n    te[6] *= y;\n    te[10] *= z;\n    te[3] *= x;\n    te[7] *= y;\n    te[11] *= z;\n\n    return this;\n  }\n\n  // rotate(degX = 0, degY = 0, degZ = 0) {\n  //   if (degZ) {\n  //     this.is3dSpecial = true;\n  //   }\n  //   const x = toRadian(degX);\n  //   const y = toRadian(degY);\n  //   const z = toRadian(degZ);\n  //   const a = Math.cos(x);\n  //   const b = Math.sin(x);\n  //   const c = Math.cos(y);\n  //   const d = Math.sin(y);\n  //   const e = Math.cos(z);\n  //   const f = Math.sin(z);\n  //   const ae = a * e;\n  //   const af = a * f;\n  //   const be = b * e;\n  //   const bf = b * f;\n  //   this.m11 = c * e;\n  //   this.m21 = -c * f;\n  //   this.m31 = d;\n  //   this.m12 = af + be * d;\n  //   this.m22 = ae - bf * d;\n  //   this.m32 = -b * c;\n  //   this.m13 = bf - ae * d;\n  //   this.m23 = be + af * d;\n  //   this.m33 = a * c;\n  //   return this;\n  // }\n\n  rotateX(degree: number) {\n    const a = toRadian(degree);\n    const c = Math.cos(a);\n    const s = Math.sin(a);\n    return this.multiply(\n      // new Matrix4([1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1])\n      new Matrix4([1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1])\n    );\n  }\n\n  rotateY(degree: number) {\n    const a = toRadian(degree);\n    const c = Math.cos(a);\n    const s = Math.sin(a);\n    return this.multiply(\n      // new Matrix4([c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1])\n      new Matrix4([c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1])\n    );\n  }\n\n  /// this.multiply([c, s, -s, c, 0, 0]);\n  rotateZ(degree: number) {\n    this.is3dSpecial = true;\n    const a = toRadian(degree);\n    const c = Math.cos(a);\n    const s = Math.sin(a);\n    return this.multiply(\n      // new Matrix4([c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])\n      new Matrix4([c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])\n    );\n  }\n\n  skew(degX = 0, degY = 0, degZ = 0) {\n    return this.multiply(\n      new Matrix4([\n        1,\n        0,\n        0,\n        toRadian(degX),\n        0,\n        1,\n        0,\n        toRadian(degY),\n        0,\n        0,\n        1,\n        toRadian(degZ),\n        0,\n        0,\n        0,\n        1\n      ])\n    );\n  }\n\n  perspective(perspective: number) {\n    return this.multiply(\n      new Matrix4([\n        1,\n        0,\n        0,\n        0,\n        0,\n        1,\n        0,\n        0,\n        0,\n        0,\n        1,\n        perspective ? -(1 / perspective) : 0,\n        0,\n        0,\n        0,\n        1\n      ])\n    );\n  }\n\n  // based on http://code.metager.de/source/xref/mozilla/B2G/gecko/gfx/thebes/gfx3DMatrix.cpp#651\n  unproject(point: { x: number; y: number }) {\n    let x = point.x * this.m11 + point.y * this.m21 + this.m41;\n    let y = point.x * this.m12 + point.y * this.m22 + this.m42;\n    let z = point.x * this.m13 + point.y * this.m23 + this.m43;\n    let w = point.x * this.m14 + point.y * this.m24 + this.m44;\n\n    let qx = x + this.m31;\n    let qy = y + this.m32;\n    let qz = z + this.m33;\n    let qw = w + this.m34;\n\n    if (w == 0) w = 0.0001;\n    x /= w;\n    y /= w;\n    z /= w;\n\n    if (qw == 0) qw = 0.0001;\n    qx /= qw;\n    qy /= qw;\n    qz /= qw;\n\n    // TODO: ....\n    const wz = qz - z;\n    if (wz == 0) {\n      return { x, y, z, mass: w };\n    }\n\n    const t = -z / wz;\n    x += t * (qx - x);\n    y += t * (qy - y);\n\n    return { x, y, z, mass: w };\n  }\n\n  // from homegeneous (euclid) to cartesian FLATTENED!!!! like a projection\n  project(point: Point3D) {\n    const z = point.z;\n    let x = point.x * this.m11 + point.y * this.m21 + z * this.m31 + this.m41;\n    let y = point.x * this.m12 + point.y * this.m22 + z * this.m32 + this.m42;\n    let w = point.x * this.m14 + point.y * this.m24 + z * this.m34 + this.m44;\n\n    if (w == 0) w = 0.0001;\n    x /= w;\n    y /= w;\n\n    // lets call it \"hasenfuss\"\n    // look at the developer tools of firefox and chrome ->\n    // ff and chrome do it wrong: the highlighted bounding box failed to be correct\n    // and getBoundingClientRect also\n\n    // behind the \"camera\" (z > 0)\n    if (w < 0) {\n      x -= this.m41;\n      y -= this.m42;\n      x *= 1 / w;\n      y *= 1 / w;\n      x += this.m41;\n      y += this.m42;\n    }\n    return { x, y, z, mass: w };\n  }\n\n  bounds(\n    x: number,\n    y: number,\n    width: number,\n    height: number\n  ): { x: number; y: number; width: number; height: number } {\n    const ptA = new Point3D({ x, y });\n    const ptB = new Point3D({ x: x + width, y });\n    const ptC = new Point3D({ x: x + width, y: y + height });\n    const ptD = new Point3D({ x, y: y + height });\n\n    ({ x: ptA.x, y: ptA.y, z: ptA.z, mass: ptA.mass } = this.project(ptA));\n    ({ x: ptB.x, y: ptB.y, z: ptB.z, mass: ptB.mass } = this.project(ptB));\n    ({ x: ptC.x, y: ptC.y, z: ptC.z, mass: ptC.mass } = this.project(ptC));\n    ({ x: ptD.x, y: ptD.y, z: ptD.z, mass: ptD.mass } = this.project(ptD));\n\n    const x2 = Math.min(ptA.x, ptB.x, ptC.x, ptD.x);\n    const y2 = Math.min(ptA.y, ptB.y, ptC.y, ptD.y);\n    const width2 = Math.max(ptA.x, ptB.x, ptC.x, ptD.x) - x2;\n    const height2 = Math.max(ptA.y, ptB.y, ptC.y, ptD.y) - y2;\n\n    return { x: x2, y: y2, width: width2, height: height2 };\n  }\n}\n\nexport class Matrix {\n  /// 按列顺序\n  value: TMatrixValue;\n  private _m13 = 0;\n  private _m23 = 0;\n  private _m33 = 1;\n\n  matrix4: Matrix4;\n\n  constructor(value: TMatrixValue = DEFAULT_MATRIX_VALUE) {\n    this.value = Array.from(value) as TMatrixValue;\n    this.matrix4 = this.toMatrix4();\n  }\n\n  get m11() {\n    return this.value[0];\n  }\n  get m12() {\n    return this.value[1];\n  }\n  get m13() {\n    return this._m13;\n  }\n  get m21() {\n    return this.value[2];\n  }\n  get m22() {\n    return this.value[3];\n  }\n  get m23() {\n    return this._m23;\n  }\n  get m31() {\n    return this.value[4];\n  }\n  get m32() {\n    return this.value[5];\n  }\n  get m33() {\n    return this._m33;\n  }\n\n  set m11(v: number) {\n    this.value[0] = v;\n  }\n  set m12(v: number) {\n    this.value[1] = v;\n  }\n  set m13(v: number) {\n    this._m13 = v;\n  }\n  set m21(v: number) {\n    this.value[2] = v;\n  }\n  set m22(v: number) {\n    this.value[3] = v;\n  }\n  set m23(v: number) {\n    this._m23 = v;\n  }\n  set m31(v: number) {\n    this.value[4] = v;\n  }\n  set m32(v: number) {\n    this.value[5] = v;\n  }\n  set m33(v: number) {\n    this._m33 = v;\n  }\n\n  // matrix(1, 0, 0, 1, -50, -50)\n  static fromString(s: string) {\n    const m = new Matrix();\n    const results = regMatchAll(\"number\", s);\n    if (results.length === 6) {\n      results.forEach((result, index) => {\n        if (result.fullMatch) {\n          m.value[index] = parseFloat(result.fullMatch);\n        }\n      });\n    }\n    return m;\n  }\n\n  toMatrix4(matrix4 = this.matrix4) {\n    const value: TMatrix4Value = [\n      this.m11,\n      this.m12,\n      0,\n      this.m13,\n      this.m21,\n      this.m22,\n      0,\n      this.m23,\n      0,\n      0,\n      1,\n      0,\n      this.m31,\n      this.m32,\n      0,\n      this.m33\n    ];\n    if (matrix4) {\n      matrix4.value = value;\n      return matrix4;\n    }\n    return new Matrix4(value);\n  }\n\n  identity() {\n    this.value = Array.from(DEFAULT_MATRIX_VALUE) as TMatrixValue;\n    this.m13 = 0;\n    this.m23 = 0;\n    this.m33 = 1;\n    this.matrix4 = this.toMatrix4();\n    return this;\n  }\n\n  get isIdentity(): boolean {\n    return (\n      this.m11 == 1 &&\n      this.m12 == 0 &&\n      this.m13 == 0 &&\n      this.m21 == 0 &&\n      this.m22 == 1 &&\n      this.m23 == 0 &&\n      this.m31 == 0 &&\n      this.m32 == 0 &&\n      this.m33 == 1\n    );\n  }\n\n  multiplyScalar(s: number) {\n    this.m11 *= s;\n    this.m12 *= s;\n    this.m13 *= s;\n    this.m21 *= s;\n    this.m22 *= s;\n    this.m23 *= s;\n    this.m31 *= s;\n    this.m32 *= s;\n    this.m33 *= s;\n    return this;\n  }\n\n  normalize() {\n    const m33 = this.m33 || 0.0001;\n    return this.multiplyScalar(1 / m33);\n  }\n\n  transformPoint(point: { x: number; y: number; z?: number }): {\n    x: number;\n    y: number;\n    z: number;\n  } {\n    const z = point.z || 1;\n    return {\n      x: point.x * this.m11 + point.y * this.m21 + z * this.m31,\n      y: point.x * this.m12 + point.y * this.m22 + z * this.m32,\n      z: point.x * this.m13 + point.y * this.m23 + z * this.m33\n    };\n  }\n\n  clone(): Matrix {\n    return new Matrix(this.value);\n  }\n\n  multiply(matrix: Matrix | TMatrixValue) {\n    const a = this.clone();\n    const b = matrix instanceof Matrix ? matrix : new Matrix(matrix);\n    this.m11 = b.m11 * a.m11 + b.m12 * a.m21 + b.m13 * a.m31;\n    this.m12 = b.m11 * a.m12 + b.m12 * a.m22 + b.m13 * a.m32;\n    this.m13 = b.m11 * a.m13 + b.m12 * a.m23 + b.m13 * a.m33;\n    this.m21 = b.m21 * a.m11 + b.m22 * a.m21 + b.m23 * a.m31;\n    this.m22 = b.m21 * a.m12 + b.m22 * a.m22 + b.m23 * a.m32;\n    this.m23 = b.m21 * a.m13 + b.m22 * a.m23 + b.m23 * a.m33;\n    this.m31 = b.m31 * a.m11 + b.m32 * a.m21 + b.m33 * a.m31;\n    this.m32 = b.m31 * a.m12 + b.m32 * a.m22 + b.m33 * a.m32;\n    this.m33 = b.m31 * a.m13 + b.m32 * a.m23 + b.m33 * a.m33;\n    return this;\n  }\n\n  append(matrix: Matrix) {\n    return this.multiply(matrix);\n  }\n\n  prepend(matrix: Matrix) {\n    matrix.multiply(this);\n    return this;\n  }\n\n  inverse() {\n    // const m11 = this.m11;\n    // const m12 = this.m12;\n    // const m21 = this.m21;\n    // const m22 = this.m22;\n    // const m31 = this.m31;\n    // const m32 = this.m32;\n    // const n = m11 * m22 - m12 * m21;\n    // this.m11 = m22 / n;\n    // this.m12 = -m12 / n;\n    // this.m21 = -m21 / n;\n    // this.m22 = m11 / n;\n    // this.m31 = (m21 * m32 - m22 * m31) / n;\n    // this.m32 = -(m11 * m32 - m12 * m31) / n;\n    // this.m13 = 0;\n    // this.m23 = 0;\n    // this.m33 = 1;\n    const a00 = this.m11;\n    const a01 = this.m12;\n    const a02 = this.m13;\n    const a10 = this.m21;\n    const a11 = this.m22;\n    const a12 = this.m23;\n    const a20 = this.m31;\n    const a21 = this.m32;\n    const a22 = this.m33;\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    this.m11 = b01 * det;\n    this.m12 = (-a22 * a01 + a02 * a21) * det;\n    this.m13 = (a12 * a01 - a02 * a11) * det;\n    this.m21 = b11 * det;\n    this.m22 = (a22 * a00 - a02 * a20) * det;\n    this.m23 = (-a12 * a00 + a02 * a10) * det;\n    this.m31 = b21 * det;\n    this.m32 = (-a21 * a00 + a01 * a20) * det;\n    this.m33 = (a11 * a00 - a01 * a10) * det;\n    return this;\n  }\n\n  adjugate(): Matrix {\n    const matrix = new Matrix();\n    matrix.m11 = this.m22 * this.m33 - this.m32 * this.m23;\n    matrix.m12 = this.m32 * this.m13 - this.m12 * this.m33;\n    matrix.m13 = this.m12 * this.m23 - this.m22 * this.m13;\n    matrix.m21 = this.m31 * this.m23 - this.m21 * this.m33;\n    matrix.m22 = this.m11 * this.m33 - this.m31 * this.m13;\n    matrix.m23 = this.m21 * this.m13 - this.m11 * this.m23;\n    matrix.m31 = this.m21 * this.m32 - this.m31 * this.m22;\n    matrix.m32 = this.m31 * this.m12 - this.m11 * this.m32;\n    matrix.m33 = this.m11 * this.m22 - this.m21 * this.m12;\n    return matrix;\n  }\n\n  split() {\n    let degree = toDegree(Math.atan2(this.m12, this.m11));\n    if (this.m11 < 0 && this.m22 >= 0) {\n      degree += 180;\n    }\n    return {\n      x: this.m31,\n      y: this.m32,\n      degree,\n      scaleX: Math.sqrt(this.m11 * this.m11 + this.m12 * this.m12),\n      scaleY: Math.sqrt(this.m21 * this.m21 + this.m22 * this.m22),\n      skewX: toDegree(Math.atan2(-this.m21, this.m22)),\n      skewY: toDegree(Math.atan2(this.m12, this.m11))\n    };\n  }\n\n  getGroupCoords(group: Matrix) {\n    // possible to replace with node * group.inverse()\n    const M = this.value[0],\n      N = this.value[1],\n      O = this.value[2],\n      P = this.value[3],\n      R = this.value[4],\n      S = this.value[5],\n      A = group.value[0],\n      B = group.value[1],\n      C = group.value[2],\n      D = group.value[3],\n      E = group.value[4],\n      F = group.value[5],\n      AD = A * D,\n      BC = B * C,\n      G = (C * N - M * D) / (BC - AD),\n      H = (A * N - M * B) / (AD - BC),\n      I = (C * P - O * D) / (BC - AD),\n      J = (A * P - O * B) / (AD - BC),\n      K = (C * (S - F) + D * (E - R)) / (BC - AD),\n      L = (A * (S - F) + B * (E - R)) / (AD - BC);\n    const matrix = [G, H, I, J, K, L];\n    return new Matrix(matrix as TMatrixValue);\n  }\n\n  toString(fractionalDigits = 6) {\n    if (this.matrix4.is2D()) {\n      return `matrix(${this.value\n        .map((v) => maxDotNumber(v, fractionalDigits))\n        .join(\",\")})`;\n    } else {\n      return this.matrix4.toString();\n    }\n  }\n\n  // toFilter() {\n  //   return (\n  //     \"progid:DXImageTransform.Microsoft.Matrix(M11=\" +\n  //     this.value[0] +\n  //     \", M12=\" +\n  //     this.value[2] +\n  //     \", M21=\" +\n  //     this.value[1] +\n  //     \", M22=\" +\n  //     this.value[3] +\n  //     \", Dx=\" +\n  //     this.value[4] +\n  //     \", Dy=\" +\n  //     this.value[5] +\n  //     \", sizingmethod='auto expand')\"\n  //   );\n  // }\n\n  // 相对值\n  translate(x: number, y: number) {\n    this.multiply([1, 0, 0, 1, x, y]);\n    this.toMatrix4();\n    return this;\n  }\n  // 绝对值\n  translateTo(x: number, y: number) {\n    return this.translate(x - this.m31, y - this.m32);\n  }\n  translateX(x: number) {\n    return this.translate(x, 0);\n  }\n  translateXTo(x: number) {\n    return this.translateTo(x, this.m32);\n  }\n  translateY(y: number) {\n    return this.translate(0, y);\n  }\n  translateYTo(y: number) {\n    return this.translateTo(this.m31, y);\n  }\n  translateZ(z: number) {\n    this.matrix4.translate(0, 0, z);\n    this.matrix4.toMatrix(this);\n    return this;\n  }\n  translateZTo(z: number) {\n    this.translateZ(z - this.matrix4.m43);\n    return this;\n  }\n  translate3d(x: number, y: number, z: number) {\n    this.matrix4.translate(x, y, z);\n    this.matrix4.toMatrix(this);\n    return this;\n  }\n  translate3dTo(x: number, y: number, z: number) {\n    this.translate3d(\n      x - this.matrix4.m41,\n      y - this.matrix4.m42,\n      z - this.matrix4.m43\n    );\n    return this;\n  }\n\n  rotate(deg: number, centerX = 0, centerY = 0) {\n    const rad = toRadian(deg);\n    const c = Math.cos(rad);\n    const s = Math.sin(rad);\n    this.translate(centerX, centerY);\n    this.multiply([c, s, -s, c, 0, 0]);\n    this.translate(-centerX, -centerY);\n    this.toMatrix4();\n    return this;\n  }\n  rotateTo(targetDeg: number, centerX = 0, centerY = 0) {\n    const { degree } = this.split();\n    this.rotate(targetDeg - degree, centerX, centerY);\n    return this;\n  }\n  rotateX(deg: number) {\n    this.matrix4.rotateX(deg);\n    this.matrix4.toMatrix(this);\n    return this;\n  }\n  rotateXTo(targetDeg: number) {\n    const { degreeX } = this.matrix4.split();\n    this.rotateX(targetDeg - degreeX);\n    return this;\n  }\n  rotateY(deg: number) {\n    this.matrix4.rotateY(deg);\n    this.matrix4.toMatrix(this);\n    return this;\n  }\n  rotateYTo(targetDeg: number) {\n    const { degreeY } = this.matrix4.split();\n    this.rotateY(targetDeg - degreeY);\n    return this;\n  }\n\n  rotateZ(deg: number) {\n    this.matrix4.rotateZ(deg);\n    // this.matrix4.rotate(0, 0, deg);\n    this.matrix4.toMatrix(this);\n    return this;\n  }\n  rotateZTo(targetDeg: number) {\n    const { degreeZ } = this.matrix4.split();\n    this.rotateZ(targetDeg - degreeZ);\n    return this;\n  }\n  rotate3d(x: number, y: number, z: number) {\n    // this.matrix4.rotate(x, y, z);\n    this.matrix4.rotateX(x).rotateY(y).rotateZ(z);\n    this.matrix4.toMatrix(this);\n    return this;\n  }\n  rotate3dTo(targetX: number, targetY: number, targetZ: number) {\n    const { degreeX, degreeY, degreeZ } = this.matrix4.split();\n    this.rotate3d(targetX - degreeX, targetY - degreeY, targetZ - degreeZ);\n    return this;\n  }\n\n  scale(sx: number, sy = sx, centerX = 0, centerY = 0) {\n    this.translate(centerX, centerY);\n    this.multiply([sx, 0, 0, sy, 0, 0]);\n    this.translate(-centerX, -centerY);\n    this.toMatrix4();\n    return this;\n  }\n  scaleTo(targetSx: number, targetSy = targetSx, centerX = 0, centerY = 0) {\n    return this.scale(\n      targetSx / this.m11,\n      targetSy / this.m22,\n      centerX,\n      centerY\n    );\n  }\n  scaleX(sx: number) {\n    return this.scale(sx, 1);\n  }\n  scaleXTo(sx: number) {\n    return this.scale(sx / this.m11, 1);\n  }\n  scaleY(sy: number) {\n    return this.scale(1, sy);\n  }\n  scaleYTo(sy: number) {\n    return this.scale(1, sy / this.m22);\n  }\n  scaleZ(sz: number) {\n    this.matrix4.scale(1, 1, sz);\n    this.matrix4.toMatrix(this);\n    return this;\n  }\n  scaleZTo(sz: number) {\n    const { scalarZ } = this.matrix4.split();\n    this.scaleZ(sz / scalarZ);\n    return this;\n  }\n  scale3d(sx: number, sy = sx, sz = sx) {\n    this.matrix4.scale(sx, sy, sz);\n    this.matrix4.toMatrix(this);\n    return this;\n  }\n  scale3dTo(sx: number, sy = sx, sz = sx) {\n    const { scalarX, scalarY, scalarZ } = this.matrix4.split();\n    this.scale3d(sx / scalarX, sy / scalarY, sz / scalarZ);\n    return this;\n  }\n\n  skew(degX: number, degY = degX) {\n    // const tx = Math.tan(toRadian(degX));\n    // const ty = Math.tan(toRadian(degY));\n    // this.multiply([1, ty, tx, 1, 0, 0]);\n    this.multiply([\n      Math.cos(toRadian(degY)),\n      Math.sin(toRadian(degY)),\n      -Math.sin(toRadian(degX)),\n      Math.cos(toRadian(degX)),\n      0,\n      0\n    ]);\n    this.toMatrix4();\n    return this;\n  }\n  skewTo(degX: number, degY = degX) {\n    const { skewX, skewY } = this.split();\n    return this.skew(degX - skewX, degY - skewY);\n  }\n  skewX(deg: number) {\n    const { skewY } = this.split();\n    return this.skew(deg, skewY);\n  }\n  skewXTo(deg: number) {\n    const { skewY } = this.split();\n    return this.skewTo(deg, skewY);\n  }\n  skewY(deg: number) {\n    const { skewX } = this.split();\n    return this.skew(skewX, deg);\n  }\n  skewYTo(deg: number) {\n    const { skewX } = this.split();\n    return this.skewTo(skewX, deg);\n  }\n  skewZ(deg: number) {\n    /// UNDO\n    return this;\n  }\n  skewZTo(deg: number) {\n    /// UNDO\n    return this;\n  }\n  skew3d(degx: number, degy: number, degz: number) {\n    /// UNDO\n    return this;\n  }\n  skew3dTo(degx: number, degy: number, degz: number) {\n    /// UNDO\n    return this;\n  }\n\n  perspective(perspective: number) {\n    this.matrix4.perspective(perspective);\n    this.matrix4.toMatrix(this);\n    return this;\n  }\n}\n\nexport default Matrix;\n\nconst _zero = new Vector3(0, 0, 0);\nconst _one = new Vector3(1, 1, 1);\nconst _x = new Vector3();\nconst _y = new Vector3();\nconst _z = new Vector3();\nconst _v3 = new Vector3();\nconst _m3 = new Matrix3();\nconst _m4 = new Matrix4();\n\n// 矩阵不满足交换律，所以顺序很重要\n// matrix(0.707106781,0.707106781,-0.707106781,0.707106781,-0.7071067810000002,34.648232269)\n// CSS transform: parseTransformToMatrix('rotate(45deg) translate(24px,25px)')\n// SVG Path d : parseTransformToMatrix('r 45 t 24,25')\n// SVG transform : parseTransformToMatrix('rotate(45) translate(24 25)')\n// translate(-50%, -50%) 暂不支持%\nexport function parseTransformToMatrix(t: string) {\n  const matrix = new Matrix();\n  t.replace(\n    // /([a-z]+)\\(?([^)a-z]+)\\)?/gi,\n    /([a-z0-9]+)\\s*\\(?\\s*((-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)*[a-z%]*\\s*,?\\s*)+)\\)?/gi,\n    function (all, command, matchString) {\n      if (matchString.indexOf(\",\") >= 0) {\n        matchString = matchString.split(/\\s*,\\s*/);\n      } else {\n        matchString = matchString.split(/\\s+/);\n      }\n      const values: number[] = [];\n      for (let i = 0, count = matchString.length; i < count; i++) {\n        if (matchString[i].trim()) {\n          values.push(parseFloat(\"\" + matchString[i]));\n        }\n      }\n      switch (command.toLowerCase()) {\n        case \"t\":\n        case \"translate\":\n          matrix.translate(values[0], values[1]);\n          break;\n        case \"translatex\":\n          matrix.translateX(values[0]);\n          break;\n        case \"translatey\":\n          matrix.translateY(values[0]);\n          break;\n        case \"translatez\":\n          matrix.translateZ(values[0]);\n          break;\n        case \"translate3d\":\n          matrix.translate3d(values[0], values[1], values[2]);\n          break;\n        case \"r\":\n        case \"rotate\":\n          matrix.rotate(values[0], values[1] ?? 0, values[2] ?? 0);\n          break;\n        case \"rotatex\":\n          matrix.rotateX(values[0]);\n          break;\n        case \"rotatey\":\n          matrix.rotateY(values[0]);\n          break;\n        case \"rotatez\":\n          matrix.rotateZ(values[0]);\n          break;\n        case \"rotate3d\":\n          matrix.rotate3d(values[0], values[1], values[2]);\n          break;\n        case \"s\":\n        case \"scale\":\n          matrix.scale(values[0], values[1] ?? values[0]);\n          break;\n        case \"scalex\":\n          matrix.scaleX(values[0]);\n          break;\n        case \"scaley\":\n          matrix.scaleY(values[0]);\n          break;\n        case \"scalez\":\n          matrix.scaleZ(values[0]);\n          break;\n        case \"scale3d\":\n          matrix.scale3d(values[0], values[1], values[2]);\n          break;\n        case \"skew\":\n          matrix.skew(values[0], values[1] ?? 0);\n          break;\n        case \"skewx\":\n          matrix.skewX(values[0]);\n          break;\n        case \"skewy\":\n          matrix.skewY(values[0]);\n          break;\n        case \"skewz\":\n          matrix.skewZ(values[0]);\n          break;\n        case \"skew3d\":\n          matrix.skew3d(values[0], values[1], values[2]);\n          break;\n        case \"m\":\n        case \"matrix\":\n          matrix.multiply([\n            values[0],\n            values[1],\n            values[2],\n            values[3],\n            values[4],\n            values[5]\n          ]);\n          matrix.toMatrix4();\n          break;\n        case \"matrix3d\":\n          matrix.matrix4.multiply(new Matrix4(values as TMatrix4Value));\n          matrix.matrix4.toMatrix(matrix);\n          break;\n      }\n      return \"\";\n    }\n  );\n  return matrix;\n}\n\nexport function rotatePoint(\n  radian: number,\n  pointX: number,\n  pointY: number\n): { x: number; y: number } {\n  const m = new Matrix();\n  m.rotate(toDegree(radian));\n  return m.transformPoint({ x: pointX, y: pointY });\n}\n\n// see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix/DOMMatrix\nexport function getDOMMatrix(options?: {\n  originMatrix?: string | number[];\n  x?: number;\n  y?: number;\n  degree?: number;\n  scalarX?: number;\n  scalarY?: number;\n}): DOMMatrix {\n  const x = typeof options?.x == \"number\" ? options?.x : 0;\n  const y = typeof options?.y == \"number\" ? options?.y : 0;\n  const degree = typeof options?.degree == \"number\" ? options?.degree : 0;\n  const scalarX = typeof options?.scalarX == \"number\" ? options?.scalarX : 1;\n  const scalarY = typeof options?.scalarY == \"number\" ? options?.scalarY : 1;\n  const radian = toRadian(degree);\n  const c = Math.cos(radian);\n  const s = Math.sin(radian);\n  const matrix = new DOMMatrix([\n    c * scalarX,\n    s * scalarX,\n    -s * scalarY,\n    c * scalarY,\n    x,\n    y\n  ]);\n  matrix.multiplySelf(new DOMMatrix(options?.originMatrix || \"\"));\n  return matrix;\n}\n\n// ctx.beginPath();\n// ctx.fill(pathd)\nexport function transformPath2D(\n  pathString: string,\n  options?: {\n    originMatrix?: string | number[];\n    x?: number;\n    y?: number;\n    degree?: number;\n    scalarX?: number;\n    scalarY?: number;\n  }\n): Path2D {\n  // const x = typeof options?.x == \"number\" ? options?.x : 0;\n  // const y = typeof options?.y == \"number\" ? options?.y : 0;\n  // const degree = typeof options?.degree == \"number\" ? options?.degree : 0;\n  // const scalarX = typeof options?.scalarX == \"number\" ? options?.scalarX : 1;\n  // const scalarY = typeof options?.scalarY == \"number\" ? options?.scalarY : 1;\n  // const path2d = new Path2D(pathString);\n  // const t1 = new Path2D();\n  // t1.addPath(path2d, new DOMMatrix(options?.originMatrix || \"\"));\n  // t1.addPath(path2d);\n  // const t2 = new Path2D();\n  // const radian = toRadian(degree);\n  // const c = Math.cos(radian);\n  // const s = Math.sin(radian);\n  // const matrix = new DOMMatrix([\n  //   c * scalarX,\n  //   s * scalarX,\n  //   -s * scalarY,\n  //   c * scalarY,\n  //   x,\n  //   y\n  // ]);\n  // t2.addPath(t1, matrix);\n  // return t2;\n  const path2d = new Path2D(pathString);\n  const t = new Path2D();\n  t.addPath(path2d, getDOMMatrix(options));\n  return t;\n}\n","import { canUseBitmap } from \"@zyzgroup/core-common\";\nimport { getDOMMatrix } from \"../math/\";\n\nexport const bitmapMapper = {\n  map: new Map<ImageBitmap, OffscreenCanvas>(),\n\n  // see https://github.com/catdad/canvas-confetti/issues/209\n  // creating canvases is actually pretty expensive, so we should create a\n  // 1:1 map for bitmap:canvas, so that we can animate in\n  // a performant manner, but also not store them forever so that we don't\n  // have a memory leak\n  transform: function (bitmap: ImageBitmap): ImageBitmap | OffscreenCanvas {\n    if (canUseBitmap) {\n      return bitmap;\n    }\n    if (this.map.has(bitmap)) {\n      return this.map.get(bitmap)!;\n    }\n    const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n    const ctx = canvas.getContext(\"2d\");\n    ctx?.drawImage(bitmap, 0, 0);\n    this.map.set(bitmap, canvas);\n    return canvas;\n  },\n\n  clear: function () {\n    this.map.clear();\n  }\n};\n\nexport function getBitmapFromCanvas(\n  width: number,\n  height: number,\n  cb: (ctx: OffscreenCanvasRenderingContext2D) => void\n): ImageBitmap | undefined {\n  const canvas = new OffscreenCanvas(width, height);\n  const ctx = canvas.getContext(\"2d\");\n  if (ctx) {\n    cb(ctx);\n    return canvas.transferToImageBitmap();\n  }\n}\n\nexport function drawBitmapInCanvas(\n  ctx: OffscreenCanvasRenderingContext2D | CanvasRenderingContext2D,\n  bitmap: ImageBitmap,\n  options?: {\n    x?: number;\n    y?: number;\n    degree?: number;\n    scaleX?: number;\n    scaleY?: number;\n    originMatrix?: string | number[];\n  }\n) {\n  const pattern = ctx.createPattern(\n    bitmapMapper.transform(bitmap),\n    \"no-repeat\"\n  );\n  if (pattern) {\n    const matrix = getDOMMatrix(options);\n    pattern.setTransform(matrix);\n    ctx.fillStyle = pattern;\n  }\n  // ctx.globalAlpha = 1 - progress;\n  // const width = bitmap.width;\n  // const height = bitmap.height;\n  // const tx = transformOptions?.tx || 0;\n  // const ty = transformOptions?.ty || 0;\n  // ctx.fillRect(tx - width / 2, ty - height / 2, width, height);\n  // ctx.globalAlpha = 1;\n}\n","// eslint-disable-next-line no-debugger\n// debugger;\n\nimport {\n  AnyElement,\n  noop,\n  TTLCache,\n  FileReaderResponseTypeInBrowser,\n  toBlob,\n  milliseconds,\n  rAF\n} from \"@zyzgroup/core-common\";\nimport { atomWriteStyle, getStyle, setStyle } from \"./style\";\nimport { atomWriteAttribute } from \"./attribute\";\nimport { createEventListener } from \"./createEventListener\";\nimport { getImageData } from \"../image\";\nimport { selectFileInBrowser, readFileInBrowser } from \"../file\";\nimport { Easing, EasingFunction } from \"../animate\";\n\n// document.querySelector(\".element\");\n// document.querySelector(\"#element\");\n// document.querySelector(\"div\");\n// document.querySelector('[name=\"username\"]');\n// document.querySelector(\"div + p > span\");\n// document.querySelectorAll(\"p\");\n// document.getElementById(\"id属性值\");\n// document.getElementsByClassName(\"class属性值\");\n// document.getElementsByTagName(\"标签名\");\n// document.getElementsByName(\"name属性值\");\n// element.querySelector(\"CSS选择器\");\n// element.querySelectorAll(\"CSS选择器\");\n// document.documentElement; // 获取页面中的HTML标签;\n// document.body;\n\n// document.defaultView\n// document.parentWindow\n\n// BOM Browser Object Model\n// BOM 的顶级对象是 window\n\n// const target = document.documentElement || document || window;\n\n// history\n// history.go(3); //向前跳转三个记录\n// history.go(-1); //向后跳转一个记录\n// history.forward() 向前跳转一个页面\n// history.back() 向后跳转一个页面\n// history.length 获取历史记录数\n\n// location.reload(true)\n\n// screen\n\n// const myWin = window.open(\"htttp://www.vue3js.cn\", \"topFrame\");\n// myWin.close();\n\n// 按重要性排序\nexport const domPrefixes = [\"\", \"-webkit-\", \"-moz-\", \"-o-\", \"-ms-\"];\n\nexport function transform(\n  el: AnyElement,\n  options: {\n    x?: number;\n    y?: number;\n    z?: number;\n  }\n) {\n  const x = options.x || 0;\n  const y = options.y || 0;\n  const z = options.z || 0;\n  atomWriteStyle(\n    el,\n    \"transform\",\n    `translate(${x}px, ${y}px) translateZ(${z}px)`\n  );\n}\n\nexport function animate(\n  el: AnyElement,\n  options: {\n    easingFn?: EasingFunction;\n    duration?: number;\n    delay?: number;\n    deltaX: number;\n    deltaY: number;\n  }\n) {\n  const easingFn = options?.easingFn || Easing.Linear.None;\n  const duration = options?.duration || 0;\n  const delay = options?.delay || 0;\n  const startTime = milliseconds();\n  const destTime = startTime + duration;\n  let x = 0;\n  let y = 0;\n  const deltaX = options.deltaX;\n  const deltaY = options.deltaY;\n  function step() {\n    const now = milliseconds();\n    if (now >= destTime) {\n      transform(el, { x: deltaX - x, y: deltaY - y });\n      return;\n    }\n    const t = (now - startTime) / duration;\n    const easing = easingFn(t);\n    const newX = deltaX * easing;\n    const newY = deltaY * easing;\n    transform(el, { x: newX - x, y: newY - y });\n    x = newX;\n    y = newY;\n    rAF(step);\n  }\n  setTimeout(() => {\n    step();\n  }, delay);\n}\n\n// http://stackoverflow.com/a/384380/182183\nexport const isElement =\n  typeof HTMLElement === \"object\"\n    ? function isElementDOM2(obj: any) {\n        return obj instanceof HTMLElement;\n      }\n    : function isElementQuirky(obj: any) {\n        return (\n          obj &&\n          typeof obj === \"object\" &&\n          obj.nodeType === 1 &&\n          typeof obj.nodeName === \"string\"\n        );\n      };\n\nexport function createObjectURL(blob: File | Blob | MediaSource) {\n  return window.URL.createObjectURL(blob);\n}\n\nexport function revokeObjectURL(url: string) {\n  return window.URL.revokeObjectURL(url);\n}\n\n// The DOMContentLoaded event is fired when the document has been completely loaded and parsed,\n// without waiting for stylesheets, images, and subframes to finish loading\n// the load event can be used to detect a fully-loaded page\nexport function onDocumentReady(cb: () => void) {\n  let isCalled = false;\n  function check() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState\n    // loading interactive complete|loaded\n    if (/loaded|complete/.test(document.readyState) && !isCalled) {\n      remove();\n      cb();\n      isCalled = true;\n    }\n  }\n  const remove1 = createEventListener(document, \"DOMContentLoaded\", check);\n  const remove2 = createEventListener(window, \"load\", check);\n  const timer = setInterval(check, 100);\n  const remove = () => {\n    if (timer) {\n      clearInterval(timer);\n    }\n    remove1?.();\n    remove2?.();\n  };\n  return remove;\n}\n\nexport async function loadScript(\n  url: string,\n  ms = 60000\n  // onload?: (e: Event) => void,\n  // onerror?: (\n  //   e: Event | string,\n  //   source?: string,\n  //   lineno?: number,\n  //   colno?: number,\n  //   error?: Error\n  // ) => void\n) {\n  return new Promise((resolve, reject) => {\n    const script = document.createElement(\"script\");\n    script.type = \"text/javascript\";\n    // 默认情况下，动态脚本的行为是 async 的\n    script.async = false; // 设置脚本将像 defer 那样\n    script.onload = (e) => {\n      clearTimeout(timeout);\n      // onload?.(e);\n      resolve(e);\n      // avoid memory leaks in IE\n      script.onerror = script.onload = null;\n    };\n    script.onerror = (e) => {\n      clearTimeout(timeout);\n      // onerror?.(e);\n      reject(e);\n    };\n    script.src = url;\n    const timeout: ReturnType<typeof setTimeout> = setTimeout(() => {\n      reject(\"Timeout!\");\n    }, ms);\n    document.body.appendChild(script);\n  });\n}\n\nexport function clickA(blobOrUrl: Blob | string, fileName: string) {\n  const a = document.createElement(\"a\");\n  a.style.visibility = \"hidden\";\n  a.download = fileName;\n  if (typeof blobOrUrl === \"string\") {\n    a.href = blobOrUrl;\n  } else {\n    a.href = window.URL.createObjectURL(blobOrUrl);\n  }\n  // document.body.appendChild(a);\n  a.click();\n  // document.body.removeChild(a);\n  // window.URL.revokeObjectURL(a.href);\n}\n\n// <link rel=\"stylesheet\" href=\"mystyles.css\" media=\"noexist\" onload=\"this.media='all'\">\n// <link rel=\"alternate stylesheet\" href=\"mystyles.css\" onload=\"this.rel='stylesheet'\">\nexport async function loadLink(\n  url: string,\n  parent = document.getElementsByTagName(\"head\")[0],\n  ms = 60000\n  // onload?: (event: Event) => void,\n  // onerror?: (\n  //   event: Event | string,\n  //   source?: string,\n  //   lineno?: number,\n  //   colno?: number,\n  //   error?: Error\n  // ) => void\n) {\n  return new Promise((resolve, reject) => {\n    const link = document.createElement(\"link\");\n    // link.type = \"text/css\";\n    link.setAttribute(\"type\", \"text/css\");\n    // link.rel = \"stylesheet\";\n    link.setAttribute(\"rel\", \"stylesheet\");\n    link.onload = (e) => {\n      clearTimeout(timeout);\n      // onload?.(e);\n      resolve(e);\n      // avoid memory leaks in IE\n      link.onerror = link.onload = null;\n    };\n    link.onerror = (e) => {\n      clearTimeout(timeout);\n      // onerror?.(e);\n      reject(e);\n    };\n    // link.href = url;\n    link.setAttribute(\"href\", url);\n    const timeout: ReturnType<typeof setTimeout> = setTimeout(() => {\n      reject(\"Timeout!\");\n    }, ms);\n    parent.appendChild(link);\n  });\n}\n\n/// 等待样式全部加载完成\nexport function waitForStyleSheetsLoaded() {\n  return new Promise<void>((resolve) => {\n    const links = Array.from(\n      document.querySelectorAll(\"link[rel=stylesheet]\")\n    ) as HTMLLinkElement[];\n    let loadedCount = document.styleSheets.length || 0;\n    const check = () => {\n      if (loadedCount >= links.length) {\n        resolve();\n        return true;\n      }\n      return false;\n    };\n    if (!check()) {\n      links.forEach((stylesheet) => {\n        stylesheet.onload = () => {\n          loadedCount += 1;\n          check();\n        };\n      });\n    }\n  });\n}\n\n// \"https://s3-us-west-2.amazonaws.com/s.cdpn.io/181794/kl-owl.png\"\n// \"https://s3-us-west-2.amazonaws.com/s.cdpn.io/181794/kl-deer.png\"\n// \"https://s3-us-west-2.amazonaws.com/s.cdpn.io/181794/kl-hipster.png\"\n// \"https://s3-us-west-2.amazonaws.com/s.cdpn.io/181794/kl-ram.png\"\n// \"https://s3-us-west-2.amazonaws.com/s.cdpn.io/181794/kl-dog.png\"\n// \"https://s3-us-west-2.amazonaws.com/s.cdpn.io/181794/kl-sideram.png\"\n// \"https://s3-us-west-2.amazonaws.com/s.cdpn.io/181794/kl-multiram.png\"\n// \"https://s3-us-west-2.amazonaws.com/s.cdpn.io/181794/kl-gorilla.png\"\n// \"https://s3-us-west-2.amazonaws.com/s.cdpn.io/181794/kl-bird.png\"\nexport interface RawImageInfo {\n  width: number;\n  height: number;\n  aspectRatio: number;\n  element: HTMLImageElement;\n  imageData?: ImageData;\n}\n\nconst caches = new TTLCache<string, RawImageInfo>({ max: 1000 });\n\n/**\n * 动态获取图片信息\n */\nexport async function loadImage(url: string | Blob | File, ms = 60000) {\n  return new Promise<RawImageInfo>((resolve, reject) => {\n    const finalUrl = typeof url === \"string\" ? url : createObjectURL(url);\n    const cached = caches.get(finalUrl);\n    if (cached) {\n      return resolve(cached);\n    }\n    const timeout: ReturnType<typeof setTimeout> = setTimeout(() => {\n      reject(\"Timeout!\");\n    }, ms);\n    // const image = new Image();\n    const image = document.createElement(\"img\");\n    // 注意跨域 CORS ：only works if the remote server sets : Access-Control-Allow-Origin \"*\"\n    // image.crossOrigin = \"Anonymous\";\n    // image.setAttribute(\"crossOrigin\", \"\");\n    image.onload = () => {\n      clearTimeout(timeout);\n      // avoid memory leaks in IE\n      image.onerror = image.onload = null;\n      const width = image.naturalWidth || image.width;\n      const height = image.naturalHeight || image.height;\n      const rawImageInfo = {\n        width,\n        height,\n        aspectRatio: width / height,\n        element: image,\n        imageData: getImageData(image)\n      };\n      caches.set(finalUrl, rawImageInfo);\n      resolve(rawImageInfo);\n    };\n    image.onerror = (e) => {\n      clearTimeout(timeout);\n      reject(e);\n    };\n    image.src = finalUrl;\n\n    // document.body.appendChild(image);\n  });\n}\n\nexport async function selectFile<T extends string | ArrayBuffer>(\n  readType: FileReaderResponseTypeInBrowser = FileReaderResponseTypeInBrowser.text,\n  accepts: string[] = [\"*\"]\n) {\n  const files = await selectFileInBrowser(accepts);\n  const file = files[0];\n  const data = await readFileInBrowser<T>(file, readType);\n  return {\n    type: file.type,\n    name: file.name,\n    size: file.size,\n    data\n  };\n}\n\nexport async function selectFileImage(accepts: string[] = [\"image/*\"]) {\n  const files = await selectFileInBrowser(accepts);\n  const file = files[0];\n  if (!file.type.match(/image\\/*/)) {\n    return new Error(\"Not Image Type!\");\n  }\n  const ab = await readFileInBrowser<ArrayBuffer>(\n    file,\n    FileReaderResponseTypeInBrowser.arraybuffer\n  );\n  const blob = toBlob(ab);\n  const rawImageInfo = await loadImage(blob);\n  return {\n    type: file.type,\n    name: file.name,\n    size: file.size,\n    data: ab,\n    width: rawImageInfo.width,\n    height: rawImageInfo.height,\n    aspectRatio: rawImageInfo.aspectRatio,\n    imageData: rawImageInfo.imageData\n  };\n}\n\nexport function getSelectedText(): string {\n  return window.getSelection()?.toString() || \"\";\n}\n\nexport function setWindowTitle(title: string) {\n  document.getElementsByTagName(\"title\")[0].innerText = title;\n  document.title = title;\n}\n\nexport function vibrate(ms = 200) {\n  if (\"vibrate\" in navigator) {\n    window.navigator.vibrate(ms);\n  } else {\n    console.error(\"Your device is not support vibrate on this browser.\");\n  }\n}\n\nexport async function clipboard(text: string) {\n  if (navigator.clipboard) {\n    return await navigator.clipboard.writeText(text);\n  } else {\n    const textArea = document.createElement(\"textarea\");\n    textArea.value = text;\n    textArea.style.opacity = \"0\";\n    // avoid scrolling to bottom\n    textArea.style.position = \"fixed\";\n    textArea.style.top = \"0\";\n    textArea.style.left = \"0\";\n    // document.body.appendChild(textArea);\n    textArea.focus();\n    textArea.select();\n    // document.body.removeChild(textArea);\n    return document.execCommand(\"copy\");\n  }\n}\n\n// window.moveBy(x,y) 从当前位置水平移动窗体x个像素，垂直移动窗体y个像素，x为负数，将向左移动窗体，y为负数，将向上移动窗体\n// window.moveTo(x,y) 动窗体左上角到相对于屏幕左上角的(x,y)点\n// window.resizeBy(w,h) 相对窗体当前的大小，宽度调整w个像素，高度调整h个像素。如果参数为负值，将缩小窗体，反之扩大窗体\n// window.resizeTo(w,h) 把窗体宽度调整为w个像素，高度调整为h个像素\n// window.scrollTo(x,y) 如果有滚动条，将横向滚动条移动到相对于窗体宽度为x个像素的位置，将纵向滚动条移动到相对于窗体高度为y个像素的位置\n// window.scrollBy(x,y) 如果有滚动条，将横向滚动条向左移动x个像素，将纵向滚动条向下移动y个像素\nexport function scrollTo(x = 0, y = 0) {\n  window.scrollTo(x, y);\n}\n\n// export function setManualScroll() {\n//   let remove1 = noop;\n//   let remove2 = noop;\n//   if (\"scrollRestoration\" in window.history) {\n//     window.history.scrollRestoration = \"manual\";\n//     // reset scrollRestoration to auto when leaving page, allowing page reload\n//     // and back-navigation from other pages to use the browser to restore the\n//     // scrolling position.\n//     remove1 = onBeforeUnload(() => {\n//       window.history.scrollRestoration = \"auto\";\n//     });\n//     // Setting scrollRestoration to manual again when returning to this page.\n//     remove2 = onDocumentReady(() => {\n//       window.history.scrollRestoration = \"manual\";\n//     });\n//   }\n//   return () => {\n//     remove1();\n//     remove2();\n//   };\n// }\n\nexport function isRootEl(el: AnyElement) {\n  return /(html|body)/i.test(el.tagName) || el === document.documentElement;\n}\n\nexport const isActiveEl = (el: AnyElement) => {\n  // http://stackoverflow.com/posts/2684561/revisions\n  return (\n    el === document.activeElement && ((el as any).type || (el as any).href)\n  );\n};\n\nexport function getRemSize(): number {\n  return parseFloat(getComputedStyle(document.documentElement).fontSize);\n}\n\nexport function rem2px(rem: number): number {\n  return rem * getRemSize();\n}\n\nexport function getEmSize(el: AnyElement): number {\n  return el.parentElement\n    ? parseFloat(getComputedStyle(el.parentElement).fontSize)\n    : getRemSize();\n}\n\nexport const nearestElement = (el: AnyElement) => {\n  let elm: AnyElement | ParentNode = el;\n  while (elm && elm.nodeType !== 1 /* ELEMENT */) {\n    const parent = elm.parentElement || el.parentNode;\n    if (!parent) {\n      break;\n    }\n    elm = parent;\n  }\n  return elm;\n};\n\nexport const parent = (el: AnyElement) => {\n  return el.parentElement;\n  // return el.parentNode;\n};\n\nexport const parents = (\n  node: AnyElement | null,\n  ps: AnyElement[] = []\n): AnyElement[] => {\n  if (!node || (node.parentElement === null && node.parentNode === null)) {\n    return ps;\n  }\n  // return parents(node.parentElement || el.parentNode, ps.concat([node]));\n  return parents(node.parentElement, ps.concat([node]));\n};\n\nexport function scrollParent(el: AnyElement) {\n  const ps = parents(el);\n  for (let i = 0, n = ps.length; i < n; i++) {\n    if (\n      /(auto|scroll)/.test(\n        getStyle(ps[i], \"overflow\") +\n          getStyle(ps[i], \"overflow-y\") +\n          getStyle(ps[i], \"overflow-x\")\n      )\n    ) {\n      return ps[i];\n    }\n  }\n  return document.scrollingElement || document.documentElement;\n}\n\nexport const containsChild = (el: AnyElement, child: AnyElement) => {\n  if (el.contains) {\n    return el != child && el.contains(child);\n  } else {\n    return !!(el.compareDocumentPosition(child) & 16);\n  }\n};\n\nexport const siblings = (el: AnyElement) => {\n  return Array.prototype.slice\n    .call(el.parentElement?.children)\n    .filter((child) => child !== el);\n};\n\nexport const nextElementSibling = (el: AnyElement) => {\n  return el.nextElementSibling;\n};\n\nexport const previousElementSibling = (el: AnyElement) => {\n  return el.previousElementSibling;\n};\n\nexport const closest = (el: AnyElement, selector: string) => {\n  return el.closest(selector);\n};\n\nexport const shadowRoot = (el: AnyElement) => {\n  return el.shadowRoot;\n};\n\nexport const isInput = (el: AnyElement) => {\n  return el.tagName === \"INPUT\" || el instanceof HTMLInputElement;\n};\n\nexport const isSelect = (el: AnyElement) => {\n  return el.tagName === \"SELECT\" || el instanceof HTMLSelectElement;\n};\n\nexport const isTextArea = (el: AnyElement) => {\n  return el.tagName === \"TEXTAREA\" || el instanceof HTMLTextAreaElement;\n};\n\nexport const isInputCheckbox = (el: AnyElement) => {\n  return isInput(el) && el.getAttribute(\"type\") === \"checkbox\";\n};\n\nexport const isInputRadio = (el: AnyElement) => {\n  return isInput(el) && el.getAttribute(\"type\") === \"radio\";\n};\n\nexport const isInputText = (el: AnyElement) => {\n  return isInput(el) && el.getAttribute(\"type\") === \"text\";\n};\n\nexport const isInputNumber = (el: AnyElement) => {\n  return isInput(el) && el.getAttribute(\"type\") === \"number\";\n};\n\nexport function changeSelected(el: AnyElement, selectedValue: string) {\n  if (isSelect(el)) {\n    const options = (el as HTMLSelectElement).options;\n    for (let i = 0, len = options.length; i < len; i++) {\n      options[i].selected = options[i].value == selectedValue;\n    }\n  }\n}\n\nexport function changeRadioChecked(el: AnyElement, checkedValue: string) {\n  if (isInputRadio(el)) {\n    const options = document.getElementsByName((el as HTMLInputElement).name);\n    for (let i = 0, len = options.length; i < len; i++) {\n      const option = options[i] as HTMLInputElement;\n      option.checked = option.value == checkedValue;\n    }\n  }\n}\n\nexport function changeCheckboxChecked(el: AnyElement, checked: boolean) {\n  if (isInputCheckbox(el)) {\n    (el as HTMLInputElement).checked = checked;\n  }\n}\n\nexport function insert(\n  el: AnyElement,\n  html: string | AnyElement,\n  method:\n    | \"append\"\n    | \"appendChild\"\n    | \"prepend\"\n    | \"after\"\n    | \"before\"\n    | \"replaceWith\" = \"append\"\n) {\n  if (typeof html == \"string\") {\n    el[method](createFragment(html));\n  } else {\n    el[method](html);\n  }\n}\n\nexport function html(el: AnyElement, html: string | AnyElement) {\n  if (typeof html == \"string\") {\n    el.innerHTML = html;\n    const newEl = scriptConvert(el);\n    if (newEl != el) {\n      el = newEl;\n    }\n  } else {\n    insert(html, \"replaceWith\");\n  }\n}\n\nexport const empty = function (el: AnyElement) {\n  html(el, \"\");\n};\n\nexport const text = (el: AnyElement, text: string) => {\n  el.textContent = text;\n};\n\nexport const getInnerText = (el: AnyElement) => {\n  if (el instanceof SVGElement) {\n    return \"\";\n  }\n  let copyText = el.innerText;\n  if (!copyText) {\n    const slots = el.querySelector(\"slot\")?.assignedNodes() || [];\n    let index = 0;\n    while (!copyText && index <= slots.length - 1) {\n      if (\"innerText\" in slots[index]) {\n        copyText = (slots[index] as HTMLElement).innerText;\n      }\n      index++;\n    }\n  }\n  return copyText;\n};\n\nexport const remove = (el: AnyElement) => {\n  return el.remove();\n  // return el.parentElement?.removeChild(el);\n};\n\n// 耗时久\nexport function toggleElDisplay(el: AnyElement, force?: boolean) {\n  if (\n    (getStyle(el, \"display\") == \"none\" && force === undefined) ||\n    force === true\n  ) {\n    showEl(el);\n  } else {\n    hideEl(el);\n  }\n}\n\nexport function showEl(el: AnyElement) {\n  setStyle(\n    el,\n    \"display\",\n    el instanceof HTMLTableRowElement\n      ? \"table-row\"\n      : el instanceof HTMLTableCellElement\n      ? \"table-cell\"\n      : \"block\"\n  );\n}\n\nexport function hideEl(el: AnyElement) {\n  setStyle(el, \"display\", \"none\");\n}\n\nexport function toggleClass(\n  el: AnyElement,\n  className: string,\n  act: \"toggle\" | \"add\" | \"remove\" = \"toggle\"\n) {\n  const classNames = className.split(/[,\\s]+/);\n  if (el.classList) {\n    classNames.forEach((singleClassName) => {\n      const name = singleClassName.trim();\n      if (name !== \"\") {\n        el.classList[act](name);\n      }\n    });\n  } else {\n    const exists = el.className.split(/ +/);\n    let isUpdate = false;\n    classNames.forEach((singleClassName) => {\n      const name = singleClassName.trim();\n      if (name !== \"\") {\n        const index = exists.indexOf(name);\n        switch (act) {\n          case \"add\":\n            if (index === -1) {\n              exists.push(name);\n              isUpdate = true;\n            }\n            break;\n          case \"remove\":\n            if (index !== -1) {\n              exists.splice(index, 1);\n              isUpdate = true;\n            }\n            break;\n          case \"toggle\":\n            if (index === -1) {\n              exists.push(name);\n            } else {\n              exists.splice(index, 1);\n            }\n            isUpdate = true;\n            break;\n        }\n      }\n    });\n    if (isUpdate) {\n      atomWriteAttribute(\n        el,\n        \"class\",\n        exists.join(\" \").replace(/^\\s+/, \"\").replace(/\\s+$/, \"\")\n      );\n    }\n  }\n}\n\nexport function addClass(el: AnyElement, className: string) {\n  toggleClass(el, className, \"add\");\n}\n\nexport function removeClass(el: AnyElement, className: string) {\n  toggleClass(el, className, \"remove\");\n}\n\nexport function hasClass(el: AnyElement, className: string): boolean {\n  return new RegExp(\"(?:^|\\\\s+)\" + className + \"(?:\\\\s+|$)\").test(el.className);\n}\n\n// document.createDocumentFragment()\n// DocumentFragment 接口表示一个没有父级文件的最小文档对象\n// 因为 DocumentFragment 不是真实 DOM 树的一部分，它的变化不会引起 DOM 树的重新渲染的操作（reflow），不会导致性能问题\nexport function createFragment(\n  html: string,\n  convert = false // 性能优化\n): DocumentFragment {\n  const tmpl = document.createElement(\"template\");\n  tmpl.innerHTML = html;\n  if (convert) {\n    tmpl.content.childNodes.forEach((node) => {\n      const newNode = scriptConvert(node as AnyElement);\n      if (newNode != node) {\n        tmpl.content.replaceChild(newNode, node);\n      }\n    });\n  }\n  return tmpl.content;\n}\n\nexport function createElement(tagName: string) {\n  return document.createElement.call(document, tagName);\n}\n\nexport function createElementNS(name: string) {\n  return document.createElementNS(\"http://www.w3.org/1999/xhtml\", name);\n}\n\nexport function createTextNode(data: string) {\n  return document.createTextNode.call(document, data);\n}\n\nfunction scriptConvert(el: AnyElement) {\n  if (el.tagName == \"SCRIPT\") {\n    el = convert(el as HTMLScriptElement);\n  }\n  if (el.querySelectorAll) {\n    el.querySelectorAll(\"script\").forEach((e) => {\n      e.parentNode?.replaceChild(convert(e), e);\n    });\n  }\n  return el;\n}\n\n// innerHTML, append, etc. script tags will not be executed unless they are proper script tags\nfunction convert(el: HTMLScriptElement) {\n  const script = el.ownerDocument.createElement(\"script\");\n  script.text = el.text;\n  const attrs = el.attributes;\n  for (let i = 0, n = attrs.length; i < n; i++) {\n    script.setAttribute(attrs[i].name, attrs[i].value);\n  }\n  return script;\n}\n\n// used for : 单点登录（Single Sign On） SSO\n// 在这个iframe所加载的HTML中绑定一个事件监听器，当事件被触发时，把接收到的token数据写入localStorage\n// window.addEventListener(\n//   \"message\",\n//   function (event) {\n//     localStorage.setItem(\"token\", event.data);\n//   },\n//   false\n// );\nexport function iframePostMessage(\n  message: any,\n  targetOrigin = \"http://test.com/localstorage.html\"\n) {\n  // 动态创建一个不可见的iframe，在iframe中加载一个跨域HTML\n  const iframe = document.createElement(\"iframe\");\n  iframe.src = targetOrigin;\n  document.body.append(iframe);\n  setTimeout(function () {\n    iframe.contentWindow?.postMessage(message, targetOrigin);\n  }, 4000);\n  setTimeout(function () {\n    iframe.remove();\n  }, 6000);\n}\n\n// 沙盒\nexport function runInSandbox(code: string) {\n  const proxyWindow: Window = new Proxy<Window>(window, {\n    get(target, key, receiver) {\n      if (\n        typeof key == \"string\" &&\n        [\"open\", \"location\", \"document\"].includes(key)\n      ) {\n        throw new Error(`禁止访问 key: ${key}`);\n      }\n      if (key === \"window\") {\n        return proxyWindow;\n      }\n      return Reflect.get(target, key, receiver);\n    },\n    set(target, key, value, receiver) {\n      return Reflect.set(target, key, value, receiver);\n    }\n  });\n  new Function(\"window\", `with(window) { ${code} }`)(proxyWindow, null);\n}\n\n/**\n * @description 编译模板字符串\n * @example\n * const template = `\n * <ul>\n *   <% for(let i=0; i < data.supplies.length; i++) { %>\n *     <li><%= data.supplies[i] %></li>\n *   <% } %>\n * </ul>\n * `;\n * const parse = eval(compileTemplate(template));\n * console.log(parse({ supplies: [\"broom\", \"mop\", \"cleaner\"] }));\n */\nexport function compileTemplate(template: string) {\n  template = template\n    .replace(/<%=(.+?)%>/g, \"`); \\n  echo( $1 ); \\n  echo(`\")\n    .replace(/<%([\\s\\S]+?)%>/g, \"`); \\n $1 \\n  echo(`\");\n  template = \"echo(`\" + template + \"`);\";\n  const script = `(function parse(data){\n      let output = \"\";\n      function echo(html){\n        output += html;\n      }\n      ${template}\n      return output;\n    })`;\n  return script;\n}\n","export class DOMVideo {\n  video: HTMLVideoElement | HTMLAudioElement;\n\n  constructor(video: HTMLVideoElement | HTMLAudioElement) {\n    this.video = video;\n  }\n\n  setSrcObject(mediaStream: MediaStream) {\n    this.video.addEventListener(\"loadedmetadata\", (e) => {\n      const video = e.target as HTMLVideoElement | HTMLAudioElement;\n      if (video instanceof HTMLVideoElement) {\n        // video.id\n        // video.videoWidth\n        // video.videoHeight\n        // video.currentTime\n        // video.readyState == video.HAVE_ENOUGH_DATA\n      }\n    });\n    this.video.srcObject = mediaStream;\n  }\n\n  captureWebCamera() {\n    navigator.mediaDevices\n      .getUserMedia({\n        video: true\n      })\n      .then((stream) => {\n        this.setSrcObject(stream);\n      });\n  }\n\n  // feature test for native video media switching media\n  static async videoMediaChangeSupport() {\n    return new Promise<boolean>((resolve) => {\n      const iframe = document.createElement(\"iframe\");\n      const video = document.createElement(\"video\");\n      const source = document.createElement(\"source\");\n      const mediaSource = new MediaSource();\n      mediaSource.addEventListener(\"sourceopen\", () => resolve(true));\n      source.src = URL.createObjectURL(mediaSource);\n      source.media = \"(min-width:10px)\";\n      video.append(source);\n      iframe.width = \"5\";\n      iframe.style.cssText = `position: absolute; visibility: hidden;`;\n      document.documentElement.append(iframe);\n      iframe.contentDocument?.body.append(video);\n      setTimeout(() => {\n        iframe.width = \"15\";\n      });\n      setTimeout(() => {\n        iframe.remove();\n        resolve(false);\n      }, 1000);\n    });\n  }\n\n  static tryAutoPlayOrAutoPlayAfterClick(\n    video: HTMLVideoElement | HTMLAudioElement\n  ) {\n    return new Promise<boolean>((resolve) => {\n      video\n        .play()\n        .then(() => {\n          video.autoplay = true;\n          resolve(true);\n        })\n        .catch(() => {\n          DOMVideo.setAutoPlayWhenClick(video);\n          resolve(false);\n        });\n    });\n  }\n\n  // 监听页面的点击事件，一旦点过了就能autoplay了\n  static setAutoPlayWhenClick(video: HTMLVideoElement | HTMLAudioElement) {\n    function setAutoPlay() {\n      video.autoplay = true;\n      video.play();\n      document.removeEventListener(\"click\", setAutoPlay);\n      document.removeEventListener(\"touchend\", setAutoPlay);\n    }\n    document.addEventListener(\"click\", setAutoPlay);\n    document.addEventListener(\"touchend\", setAutoPlay);\n  }\n}\n\nexport default DOMVideo;\n","import {\n  stringLength,\n  charAt,\n  EventBus,\n  EventBusListeners,\n  regTest\n} from \"@zyzgroup/core-common\";\n\nexport interface DOMParseListeners extends EventBusListeners {\n  newline(): void;\n  special(text: string): void;\n  cdata(text: string): void;\n  comment(text: string): void;\n\n  text(text: string): void;\n\n  tag(tagname: string, attrs: Record<string, string>): void;\n  \"/tag\"(tagname: string, attrs: Record<string, string>): void;\n\n  /// 结束\n  finish(): void;\n}\n\nexport class DOMParse extends EventBus<DOMParseListeners> {\n  source: string;\n\n  raw = \"\";\n  mode = \"text\";\n  tagname = \"\";\n  nodename = \"\";\n  textchunk = \"\";\n  entity = \"\";\n  quote = \"\";\n  attrs: Record<string, string> = {};\n\n  constructor(sourceString: string) {\n    super();\n    this.source = sourceString;\n  }\n\n  parse() {\n    const length = stringLength(this.source);\n    if (length === 0) {\n      this.emit(\"finish\");\n      return;\n    }\n    let prev;\n    let current;\n    let next = charAt(this.source, 0);\n    for (let i = 1; i < length; i++) {\n      prev = current;\n      current = next;\n      next = charAt(this.source, i);\n      this.raw += current;\n      if (current) {\n        this.step(current, next, prev);\n      }\n    }\n    if (next) {\n      this.step(next, undefined, current);\n    }\n    this.emit(\"finish\");\n  }\n\n  step(c: string, n?: string, p?: string) {\n    c == \"\\n\" && this.emit(\"newline\");\n    this.act(c, n, p);\n  }\n\n  act(c: string, n?: string, p?: string) {\n    switch (this.mode) {\n      case \"text\":\n        switch (c) {\n          case \"<\":\n          case \"eof\":\n            this.nodename = \"\";\n            this.attrs = {};\n            this.mode = \"tag name start\";\n            this.raw = this.raw.slice(0, -1);\n            this.textchunk && this.emit(\"text\", this.textchunk);\n            this.raw += c;\n            this.textchunk = \"\";\n            break;\n          case \"&\":\n            this.mode = \"entity\";\n            this.entity = \"\";\n            break;\n          default:\n            this.textchunk += c;\n            break;\n        }\n        break;\n\n      case \"entity\":\n        if (regTest(\"whitespace\", c)) {\n          this.textchunk += entity2text(this.entity);\n          this.mode = \"text\";\n        } else if (c == \";\") {\n          this.textchunk += entity2text(this.entity + c);\n          this.mode = \"text\";\n        } else {\n          this.entity += c;\n        }\n        break;\n\n      case \"special\":\n        if (p == \"!\" && c == \"-\" && n == \"-\") {\n          this.mode = \"comment start\";\n          break;\n        }\n        if (this.textchunk == \"[CDATA\" && c == \"[\") {\n          this.mode = \"cdata\";\n          this.textchunk = \"\";\n          break;\n        }\n        if (c == \">\" || c == \"eof\") {\n          this.emit(\"special\", this.textchunk);\n          this.mode = \"text\";\n          this.textchunk = \"\";\n          break;\n        }\n        this.textchunk += c;\n        break;\n\n      case \"cdata\":\n        if (p == \"]\" && c == \"]\" && n == \">\") {\n          this.mode = \"cdata end\";\n          this.textchunk = this.textchunk.slice(0, -1);\n          break;\n        }\n        if (c == \"eof\") {\n          this.mode = \"cdata end\";\n          this.act(c, n, p);\n        }\n        this.textchunk += c;\n        break;\n\n      case \"cdata end\":\n        this.emit(\"cdata\", this.textchunk);\n        this.textchunk = \"\";\n        this.mode = \"text\";\n        break;\n\n      case \"comment start\":\n        if (n == \">\" || c == \"eof\") {\n          this.emit(\"comment\", \"\");\n          this.mode = \"skip\";\n        } else {\n          this.mode = \"comment\";\n        }\n        break;\n\n      case \"skip\":\n        this.mode = \"text\";\n        break;\n\n      case \"comment\":\n        if (c == \"-\" && p == \"-\" && n == \">\") {\n          this.mode = \"comment end\";\n          this.textchunk = this.textchunk.slice(0, -1);\n        } else if (c == \"eof\") {\n          this.emit(\"comment\", this.textchunk);\n        } else {\n          this.textchunk += c;\n        }\n        break;\n\n      case \"comment end\":\n        this.emit(\"comment\", this.textchunk);\n        this.textchunk = \"\";\n        this.mode = \"text\";\n        break;\n\n      case \"declaration\":\n        if (c == \"?\" && n == \">\") {\n          this.mode = \"declaration end\";\n          break;\n        }\n        if (c == \"eof\") {\n          this.emit(\"comment\", this.textchunk);\n        }\n        this.textchunk += c;\n        break;\n\n      case \"declaration end\":\n        this.emit(\"comment\", this.textchunk);\n        this.textchunk = \"\";\n        this.mode = \"text\";\n        break;\n\n      case \"tag name start\":\n        if (c == \"eof\") {\n          this.emit(\"text\", \"<\");\n          break;\n        }\n        if (!regTest(\"whitespace\", c)) {\n          this.mode = \"tag name\";\n          if (c == \"/\") {\n            this.mode = \"close tag name start\";\n            break;\n          } else if (c == \"!\") {\n            this.mode = \"special\";\n            this.textchunk = \"\";\n            break;\n          } else if (c == \"?\") {\n            this.mode = \"declaration\";\n            break;\n          }\n          this.act(c, n, p);\n        }\n        break;\n\n      case \"close tag name start\":\n        if (!regTest(\"whitespace\", c)) {\n          this.mode = \"close tag name\";\n          this.tagname = \"\";\n          this.nodename = \"\";\n          this.act(c, n, p);\n        }\n        break;\n\n      case \"close tag name\":\n        if (regTest(\"whitespace\", c)) {\n          this.tagname = this.nodename;\n        } else\n          switch (c) {\n            case \">\":\n              this.emit(\"/tag\", this.tagname || this.nodename, this.attrs);\n              this.mode = \"text\";\n              break;\n            default:\n              !this.tagname && (this.nodename += c);\n              break;\n          }\n        break;\n\n      case \"tag name\":\n        if (regTest(\"whitespace\", c)) {\n          this.tagname = this.nodename;\n          this.nodename = \"\";\n          this.mode = \"attr start\";\n        } else\n          switch (c) {\n            case \">\":\n              this.emit(\"tag\", this.nodename, this.attrs);\n              this.mode = \"text\";\n              break;\n            case \"/\":\n              this.raw += n;\n              this.emit(\"tag\", this.nodename, this.attrs);\n              this.emit(\"/tag\", this.nodename, this.attrs);\n              this.mode = \"skip\";\n              break;\n            default:\n              this.nodename += c;\n              break;\n          }\n        break;\n\n      case \"attr start\":\n        if (!regTest(\"whitespace\", c)) {\n          this.mode = \"attr\";\n          this.nodename = \"\";\n          this.act(c, n, p);\n        }\n        break;\n\n      case \"attr\":\n        if (regTest(\"whitespace\", c) || c == \"=\") {\n          this.attrs[this.nodename] = \"\";\n          this.mode = \"attr value start\";\n        } else\n          switch (c) {\n            case \">\":\n              if (this.nodename == \"/\") {\n                delete this.attrs[\"/\"];\n                this.emit(\"tag\", this.tagname, this.attrs);\n                this.emit(\"/tag\", this.tagname, this.attrs);\n              } else {\n                this.nodename && (this.attrs[this.nodename] = \"\");\n                this.emit(\"tag\", this.tagname, this.attrs);\n              }\n              this.mode = \"text\";\n              break;\n            default:\n              this.nodename += c;\n              break;\n          }\n        break;\n\n      case \"attr value start\":\n        if (!regTest(\"whitespace\", c)) {\n          this.mode = \"attr value\";\n          this.quote = \"\";\n          if (c == \"'\" || c == '\"') {\n            this.quote = c;\n            return;\n          }\n          this.act(c, n, p);\n        }\n        break;\n\n      case \"attr value\":\n        if (regTest(\"whitespace\", c) && !this.quote) {\n          this.mode = \"attr start\";\n        } else if (c == \">\" && !this.quote) {\n          this.emit(\"tag\", this.tagname, this.attrs);\n          this.mode = \"text\";\n        } else\n          switch (c) {\n            case '\"':\n            case \"'\":\n              if (this.quote == c && p != \"\\\\\") {\n                this.mode = \"attr start\";\n              }\n              break;\n            default:\n              this.attrs[this.nodename] += c;\n              break;\n          }\n        break;\n    }\n  }\n}\n\nexport default DOMParse;\n\n// &nbsp; &#160;\nfunction entity2text(entity: string) {\n  const entities: Record<string, number> = {\n    lt: 60,\n    \"lt;\": 60,\n    \"AMP;\": 38,\n    AMP: 38,\n    \"GT;\": 62,\n    GT: 62,\n    \"QUOT;\": 34,\n    QUOT: 34,\n    \"apos;\": 39,\n    \"bull;\": 8226,\n    \"bullet;\": 8226,\n    \"copy;\": 169,\n    copy: 169,\n    \"deg;\": 176,\n    deg: 176\n  };\n  let code;\n  if (entity.charAt(0) == \"#\") {\n    if (entity.charAt(1).toLowerCase() == \"x\") {\n      code = parseInt(entity.substring(2), 16);\n    } else {\n      code = parseInt(entity.substring(1), 10);\n    }\n  } else {\n    code = entities[entity];\n  }\n  return code ? String.fromCharCode(code) : \"&\" + entity;\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nexport function parseCSS(css, options = {}) {\n  /**\n   * Positional.\n   */\n\n  var lineno = 1;\n  var column = 1;\n\n  /**\n   * Update lineno and column based on `str`.\n   */\n\n  function updatePosition(str) {\n    var lines = str.match(/\\n/g);\n    if (lines) lineno += lines.length;\n    var i = str.lastIndexOf(\"\\n\");\n    column = ~i ? str.length - i : column + str.length;\n  }\n\n  /**\n   * Mark position and patch `node.position`.\n   */\n\n  function position() {\n    var start = { line: lineno, column: column };\n    return function (node) {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n\n  /**\n   * Store position information for a node\n   */\n\n  function Position(start) {\n    this.start = start;\n    this.end = { line: lineno, column: column };\n    this.source = options.source;\n  }\n\n  /**\n   * Non-enumerable source string\n   */\n\n  Position.prototype.content = css;\n\n  /**\n   * Error `msg`.\n   */\n\n  var errorsList = [];\n\n  function error(msg) {\n    var err = new Error(\n      options.source + \":\" + lineno + \":\" + column + \": \" + msg\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = css;\n\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n\n  /**\n   * Parse stylesheet.\n   */\n\n  function stylesheet() {\n    var rulesList = rules();\n\n    return {\n      type: \"stylesheet\",\n      stylesheet: {\n        source: options.source,\n        rules: rulesList,\n        parsingErrors: errorsList\n      }\n    };\n  }\n\n  /**\n   * Opening brace.\n   */\n\n  function open() {\n    return match(/^{\\s*/);\n  }\n\n  /**\n   * Closing brace.\n   */\n\n  function close() {\n    return match(/^}/);\n  }\n\n  /**\n   * Parse ruleset.\n   */\n\n  function rules() {\n    var node;\n    var rules = [];\n    whitespace();\n    comments(rules);\n    while (css.length && css.charAt(0) != \"}\" && (node = atrule() || rule())) {\n      if (node !== false) {\n        rules.push(node);\n        comments(rules);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Match `re` and return captures.\n   */\n\n  function match(re) {\n    var m = re.exec(css);\n    if (!m) return;\n    var str = m[0];\n    updatePosition(str);\n    css = css.slice(str.length);\n    return m;\n  }\n\n  /**\n   * Parse whitespace.\n   */\n\n  function whitespace() {\n    match(/^\\s*/);\n  }\n\n  /**\n   * Parse comments;\n   */\n\n  function comments(rules) {\n    var c;\n    rules = rules || [];\n    while ((c = comment())) {\n      if (c !== false) {\n        rules.push(c);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Parse comment.\n   */\n\n  function comment() {\n    var pos = position();\n    if (\"/\" != css.charAt(0) || \"*\" != css.charAt(1)) return;\n\n    var i = 2;\n    while (\n      \"\" != css.charAt(i) &&\n      (\"*\" != css.charAt(i) || \"/\" != css.charAt(i + 1))\n    )\n      ++i;\n    i += 2;\n\n    if (\"\" === css.charAt(i - 1)) {\n      return error(\"End of comment missing\");\n    }\n\n    var str = css.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    css = css.slice(i);\n    column += 2;\n\n    return pos({\n      type: \"comment\",\n      comment: str\n    });\n  }\n\n  /**\n   * Parse selector.\n   */\n\n  function selector() {\n    var m = match(/^([^{]+)/);\n    if (!m) return;\n    /* @fix Remove all comments from selectors\n     * http://ostermiller.org/findcomment.html */\n    return trim(m[0])\n      .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, \"\")\n      .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\n        return m.replace(/,/g, \"\\u200C\");\n      })\n      .split(/\\s*(?![^(]*\\)),\\s*/)\n      .map(function (s) {\n        return s.replace(/\\u200C/g, \",\");\n      });\n  }\n\n  /**\n   * Parse declaration.\n   */\n\n  function declaration() {\n    var pos = position();\n\n    // prop\n    var prop = match(/^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n    if (!prop) return;\n    prop = trim(prop[0]);\n\n    // :\n    if (!match(/^:\\s*/)) return error(\"property missing ':'\");\n\n    // val\n    var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/);\n\n    var ret = pos({\n      type: \"declaration\",\n      property: prop.replace(commentre, \"\"),\n      value: val ? trim(val[0]).replace(commentre, \"\") : \"\"\n    });\n\n    // ;\n    match(/^[;\\s]*/);\n\n    return ret;\n  }\n\n  /**\n   * Parse declarations.\n   */\n\n  function declarations() {\n    var decls = [];\n\n    if (!open()) return error(\"missing '{'\");\n    comments(decls);\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n    }\n\n    if (!close()) return error(\"missing '}'\");\n    return decls;\n  }\n\n  /**\n   * Parse keyframe.\n   */\n\n  function keyframe() {\n    var m;\n    var vals = [];\n    var pos = position();\n\n    while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\n      vals.push(m[1]);\n      match(/^,\\s*/);\n    }\n\n    if (!vals.length) return;\n\n    return pos({\n      type: \"keyframe\",\n      values: vals,\n      declarations: declarations()\n    });\n  }\n\n  /**\n   * Parse keyframes.\n   */\n\n  function atkeyframes() {\n    var pos = position();\n    var m = match(/^@([-\\w]+)?keyframes\\s*/);\n\n    if (!m) return;\n    var vendor = m[1];\n\n    // identifier\n    m = match(/^([-\\w]+)\\s*/);\n    if (!m) return error(\"@keyframes missing name\");\n    var name = m[1];\n\n    if (!open()) return error(\"@keyframes missing '{'\");\n\n    var frame;\n    var frames = comments();\n    while ((frame = keyframe())) {\n      frames.push(frame);\n      frames = frames.concat(comments());\n    }\n\n    if (!close()) return error(\"@keyframes missing '}'\");\n\n    return pos({\n      type: \"keyframes\",\n      name: name,\n      vendor: vendor,\n      keyframes: frames\n    });\n  }\n\n  /**\n   * Parse supports.\n   */\n\n  function atsupports() {\n    var pos = position();\n    var m = match(/^@supports *([^{]+)/);\n\n    if (!m) return;\n    var supports = trim(m[1]);\n\n    if (!open()) return error(\"@supports missing '{'\");\n\n    var style = comments().concat(rules());\n\n    if (!close()) return error(\"@supports missing '}'\");\n\n    return pos({\n      type: \"supports\",\n      supports: supports,\n      rules: style\n    });\n  }\n\n  /**\n   * Parse host.\n   */\n\n  function athost() {\n    var pos = position();\n    var m = match(/^@host\\s*/);\n\n    if (!m) return;\n\n    if (!open()) return error(\"@host missing '{'\");\n\n    var style = comments().concat(rules());\n\n    if (!close()) return error(\"@host missing '}'\");\n\n    return pos({\n      type: \"host\",\n      rules: style\n    });\n  }\n\n  /**\n   * Parse media.\n   */\n\n  function atmedia() {\n    var pos = position();\n    var m = match(/^@media *([^{]+)/);\n\n    if (!m) return;\n    var media = trim(m[1]);\n\n    if (!open()) return error(\"@media missing '{'\");\n\n    var style = comments().concat(rules());\n\n    if (!close()) return error(\"@media missing '}'\");\n\n    return pos({\n      type: \"media\",\n      media: media,\n      rules: style\n    });\n  }\n\n  /**\n   * Parse custom-media.\n   */\n\n  function atcustommedia() {\n    var pos = position();\n    var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n    if (!m) return;\n\n    return pos({\n      type: \"custom-media\",\n      name: trim(m[1]),\n      media: trim(m[2])\n    });\n  }\n\n  /**\n   * Parse paged media.\n   */\n\n  function atpage() {\n    var pos = position();\n    var m = match(/^@page */);\n    if (!m) return;\n\n    var sel = selector() || [];\n\n    if (!open()) return error(\"@page missing '{'\");\n    var decls = comments();\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      decls.push(decl);\n      decls = decls.concat(comments());\n    }\n\n    if (!close()) return error(\"@page missing '}'\");\n\n    return pos({\n      type: \"page\",\n      selectors: sel,\n      declarations: decls\n    });\n  }\n\n  /**\n   * Parse document.\n   */\n\n  function atdocument() {\n    var pos = position();\n    var m = match(/^@([-\\w]+)?document *([^{]+)/);\n    if (!m) return;\n\n    var vendor = trim(m[1]);\n    var doc = trim(m[2]);\n\n    if (!open()) return error(\"@document missing '{'\");\n\n    var style = comments().concat(rules());\n\n    if (!close()) return error(\"@document missing '}'\");\n\n    return pos({\n      type: \"document\",\n      document: doc,\n      vendor: vendor,\n      rules: style\n    });\n  }\n\n  /**\n   * Parse font-face.\n   */\n\n  function atfontface() {\n    var pos = position();\n    var m = match(/^@font-face\\s*/);\n    if (!m) return;\n\n    if (!open()) return error(\"@font-face missing '{'\");\n    var decls = comments();\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      decls.push(decl);\n      decls = decls.concat(comments());\n    }\n\n    if (!close()) return error(\"@font-face missing '}'\");\n\n    return pos({\n      type: \"font-face\",\n      declarations: decls\n    });\n  }\n\n  /**\n   * Parse import\n   */\n\n  var atimport = _compileAtrule(\"import\");\n\n  /**\n   * Parse charset\n   */\n\n  var atcharset = _compileAtrule(\"charset\");\n\n  /**\n   * Parse namespace\n   */\n\n  var atnamespace = _compileAtrule(\"namespace\");\n\n  /**\n   * Parse non-block at-rules\n   */\n\n  function _compileAtrule(name) {\n    var re = new RegExp(\"^@\" + name + \"\\\\s*([^;]+);\");\n    return function () {\n      var pos = position();\n      var m = match(re);\n      if (!m) return;\n      var ret = { type: name };\n      ret[name] = m[1].trim();\n      return pos(ret);\n    };\n  }\n\n  /**\n   * Parse at rule.\n   */\n\n  function atrule() {\n    if (css[0] != \"@\") return;\n\n    return (\n      atkeyframes() ||\n      atmedia() ||\n      atcustommedia() ||\n      atsupports() ||\n      atimport() ||\n      atcharset() ||\n      atnamespace() ||\n      atdocument() ||\n      atpage() ||\n      athost() ||\n      atfontface()\n    );\n  }\n\n  /**\n   * Parse rule.\n   */\n\n  function rule() {\n    var pos = position();\n    var sel = selector();\n\n    if (!sel) return error(\"selector missing\");\n    comments();\n\n    return pos({\n      type: \"rule\",\n      selectors: sel,\n      declarations: declarations()\n    });\n  }\n\n  return addParent(stylesheet());\n}\n\nexport default parseCSS;\n\nfunction trim(str) {\n  return str ? str.replace(/^\\s+|\\s+$/g, \"\") : \"\";\n}\n\n/**\n * Adds non-enumerable parent node reference to each node.\n */\nfunction addParent(obj, parent) {\n  var isNode = obj && typeof obj.type === \"string\";\n  var childParent = isNode ? obj : parent;\n\n  for (var k in obj) {\n    var value = obj[k];\n    if (Array.isArray(value)) {\n      value.forEach(function (v) {\n        addParent(v, childParent);\n      });\n    } else if (value && typeof value === \"object\") {\n      addParent(value, childParent);\n    }\n  }\n\n  if (isNode) {\n    Object.defineProperty(obj, \"parent\", {\n      configurable: true,\n      writable: true,\n      enumerable: false,\n      value: parent || null\n    });\n  }\n\n  return obj;\n}\n","import { Observable, merge } from \"rxjs\";\nimport { map, skipWhile, startWith } from \"rxjs/operators\";\nimport { type AnyElement } from \"@zyzgroup/core-common\";\nimport { createEventListener$ } from \"./createEventListener\";\n\nexport async function resize(el: AnyElement, cb: (r: DOMRect) => void) {\n  return new Promise<() => void>((resolve) => {\n    const observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n      // const entry = entries[0];\n      // const rect = entry.contentRect;\n      const rect = el.getBoundingClientRect();\n      cb(rect);\n      resolve(() => {\n        observer.unobserve(el);\n      });\n    });\n    observer.observe(el);\n  });\n}\n\n// 监听元素可见区域（content-box）尺寸的变化\nexport function resize$(\n  el: AnyElement = document.documentElement,\n  options?: ResizeObserverOptions\n): Observable<DOMRect> {\n  return new Observable((observer) => {\n    // 起码要执行一次，类似 BehaviorSubject\n    const rect = el.getBoundingClientRect();\n    let prevX = rect.x;\n    let prevY = rect.y;\n    let prevWidth = rect.width;\n    let prevHeight = rect.height;\n    observer.next(rect);\n    const ro = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n      // const entry = entries[0];\n      // const rect = entry.contentRect; // 有时 rect.x == 0 ？\n      const rect = el.getBoundingClientRect();\n      if (\n        prevX != rect.x ||\n        prevY != rect.y ||\n        prevWidth != rect.width ||\n        prevHeight != rect.height\n      ) {\n        prevX = rect.x;\n        prevY = rect.y;\n        prevWidth = rect.width;\n        prevHeight = rect.height;\n        observer.next(rect);\n      }\n    });\n    ro.observe(el, options);\n    return () => {\n      ro.unobserve(el);\n      ro.disconnect();\n    };\n  });\n}\n\nexport function useWindowResize$(): Observable<{\n  width: number;\n  height: number;\n}> {\n  return createEventListener$(\n    window,\n    \"orientationchange\" in window ? \"orientationchange\" : \"resize\"\n  ).pipe(\n    map((e: Event | UIEvent) => {\n      return {\n        width: (e.target as Window).innerWidth,\n        height: (e.target as Window).innerHeight\n      };\n    }),\n    startWith({\n      width: window.innerWidth,\n      height: window.innerHeight\n    })\n  );\n}\n\n// 结果不准\n// export function useDocumentContentChange$(): Observable<{\n//   width: number;\n//   height: number;\n// }> {\n//   let prevWidth: number;\n//   let prevHeight: number;\n//   return merge(\n//     resize$(document.documentElement),\n//     mutation$(document.body)\n//   ).pipe(\n//     map(() => ({\n//       width: document.documentElement.offsetWidth,\n//       height: document.documentElement.offsetHeight\n//     })),\n//     skipWhile((rect) => {\n//       const _prevWidth = prevWidth;\n//       const _prevHeight = prevHeight;\n//       prevWidth = rect.width;\n//       prevHeight = rect.height;\n//       return _prevWidth == rect.width && _prevHeight == rect.height;\n//     })\n//   );\n// }\n","// for next.js server-component 执行\n\nlet Hammer: typeof import(\"hammerjs\") | null = null;\n\nlet hammerLoading: Promise<typeof import(\"hammerjs\")> | null = null;\n\nfunction loadHammer() {\n  if (Hammer) {\n    return Promise.resolve(Hammer);\n  }\n  if (!hammerLoading) {\n    hammerLoading = import(\"hammerjs\").then((mod) => {\n      Hammer = mod.default ?? mod;\n      return Hammer;\n    });\n  }\n  return hammerLoading;\n}\n\nexport function createGesture(el: HTMLElement) {\n  return new Gesture(el);\n}\n\nclass Gesture {\n  private instance: any = null;\n  private pending: any[] = [];\n\n  constructor(private el: HTMLElement) {\n    this.load();\n  }\n\n  private async load() {\n    const Hammer = await loadHammer();\n    this.instance = new Hammer(this.el);\n    this.pending.forEach(([event, cb]) => {\n      this.instance.on(event, cb);\n    });\n    this.pending = [];\n  }\n\n  on(event: string, cb: (e: any) => void) {\n    if (this.instance) {\n      this.instance.on(event, cb);\n    } else {\n      this.pending.push([event, cb]);\n    }\n  }\n\n  off(event: string, cb: (e: any) => void) {\n    this.instance?.off(event, cb);\n  }\n\n  destroy() {\n    this.pending = [];\n    this.instance?.destroy();\n    this.instance = null;\n  }\n}\n","import {\n  AnyElement,\n  FileReaderResponseTypeInBrowser,\n  clamp\n} from \"@zyzgroup/core-common\";\nimport {\n  EMPTY,\n  Observable,\n  combineLatest,\n  firstValueFrom,\n  from,\n  fromEventPattern,\n  iif,\n  merge,\n  of,\n  race\n} from \"rxjs\";\nimport {\n  concatMap,\n  distinctUntilChanged,\n  exhaustMap,\n  filter,\n  map,\n  shareReplay,\n  skipWhile,\n  startWith,\n  switchAll,\n  switchMap,\n  takeUntil,\n  tap,\n  throttleTime,\n  windowToggle\n} from \"rxjs/operators\";\nimport {\n  createEventListener$,\n  HTMLEventObservable,\n  stopPropagation,\n  preventDefault\n} from \"./createEventListener\";\nimport { selectFile } from \"./dom\";\nimport { atomWriteAttribute } from \"./attribute\";\nimport { createGesture } from \"./loadHammer\";\n\ndeclare const document: Document & {\n  attachEvent: any;\n  createEventObject: any;\n  onmousewheel: any;\n};\n\nexport function isSupportTouch(): boolean {\n  return (\n    \"ontouchstart\" in window ||\n    \"ontouchend\" in document ||\n    navigator.maxTouchPoints > 0\n  );\n}\n\nexport function isSupportPointer(): boolean {\n  // return !!(window.PointerEvent || (window as any).MSPointerEvent); // IE10 is prefixed\n  return !!window.PointerEvent;\n}\n\n/*\n * Detects whether the event \"eventName\" is supported on a tag with name\n * \"nodeName\".  Based on code from\n * http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n */\nexport function isSupportEvent(nodeName: any, eventName: string): boolean {\n  let el = document.createElement(nodeName);\n  eventName = \"on\" + eventName;\n  let isSupported = eventName in el;\n  if (!isSupported) {\n    el.setAttribute(eventName, \"return;\");\n    isSupported = typeof el[eventName] == \"function\";\n  }\n  el = null;\n  return isSupported;\n}\n\nexport type MousePoint = {\n  x: number;\n  y: number;\n  isDown: boolean; // 是否已按下\n};\n\nexport type MousePointGroup = {\n  start: MousePoint;\n  current: MousePoint;\n};\n\nexport function createDefaultMousePoint() {\n  return {\n    x: 0,\n    y: 0,\n    isDown: false\n  };\n}\n\nexport function createMousePoint() {\n  const startMousePoint: MousePoint = createDefaultMousePoint();\n  const currentMousePoint: MousePoint = createDefaultMousePoint();\n\n  return {\n    start: startMousePoint,\n    current: currentMousePoint,\n\n    setStart: function (\n      p: { x: number; y: number; isDown?: boolean },\n      isDown?: boolean\n    ) {\n      startMousePoint.x = p.x;\n      startMousePoint.y = p.y;\n      startMousePoint.isDown =\n        typeof isDown == \"boolean\"\n          ? isDown\n          : typeof p.isDown == \"boolean\"\n          ? p.isDown\n          : false;\n      this.setCurrent(p, isDown);\n    },\n\n    setCurrent: (\n      p: { x: number; y: number; isDown?: boolean },\n      isDown?: boolean\n    ) => {\n      currentMousePoint.x = p.x;\n      currentMousePoint.y = p.y;\n      currentMousePoint.isDown =\n        typeof isDown == \"boolean\"\n          ? isDown\n          : typeof p.isDown == \"boolean\"\n          ? p.isDown\n          : false;\n    }\n  };\n}\n\n// react browser event names : https://react.dev/reference/react-dom/components/common#common-props\n\n// ** Mouse Events **\nexport function mouseMove$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"mousemove\", useCapture);\n}\nexport function mouseDown$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"mousedown\", useCapture);\n}\nexport function mouseUp$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"mouseup\", useCapture);\n}\nexport function mouseOver$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"mouseover\", useCapture);\n}\nexport function mouseOut$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"mouseout\", useCapture);\n}\nexport function mouseEnter$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"mouseenter\", useCapture);\n}\nexport function mouseLeave$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"mouseleave\", useCapture);\n}\nexport function mouseClick$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"click\", useCapture);\n}\nexport function mouseDoubleClick$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"dblclick\", useCapture);\n}\nexport function mouseWheel$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(\n    el,\n    \"onwheel\" in document.createElement(\"div\")\n      ? \"wheel\" // modern browsers\n      : document.onmousewheel !== undefined\n      ? \"mousewheel\" // Webkit and IE\n      : \"DOMMouseScroll\", // older Firefox\n    useCapture\n  );\n}\nexport function mouseContextMenu$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"contextmenu\", useCapture);\n}\n\n// ** Touch Events **\nexport function touchMove$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<TouchEvent> {\n  return createEventListener$(el, \"touchmove\", useCapture);\n}\nexport function touchStart$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<TouchEvent> {\n  return createEventListener$(el, \"touchstart\", useCapture);\n}\nexport function touchEnd$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<TouchEvent> {\n  return createEventListener$(el, \"touchend\", useCapture);\n}\nexport function touchCancel$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<TouchEvent> {\n  return createEventListener$(el, \"touchcancel\", useCapture);\n}\n\n// ** Pointer Events **\nexport function pointerMove$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<PointerEvent> {\n  return createEventListener$(el, \"pointermove\", useCapture);\n}\nexport function pointerDown$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<PointerEvent> {\n  return createEventListener$(el, \"pointerdown\", useCapture);\n}\nexport function pointerUp$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<PointerEvent> {\n  return createEventListener$(el, \"pointerup\", useCapture);\n}\nexport function pointerCancel$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<PointerEvent> {\n  return createEventListener$(el, \"pointercancel\", useCapture);\n}\n\n// ** Hammer Events **  https://hammerjs.github.io/\n// Pan : Recognized when the pointer is down and moved in the allowed direction.\nexport function pan$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"pan\", next);\n    },\n    (next) => {\n      gesture.off(\"pan\", next);\n    }\n  );\n  // return new Observable((observer) => {\n  //   const pan = (e: HammerInput) => {\n  //     observer.next(e);\n  //   };\n  //   gesture.on(\"pan\", pan);\n  //   return () => {\n  //     gesture.off(\"pan\", pan);\n  //   };\n  // });\n}\nexport function panMove$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"panmove\", next);\n    },\n    (next) => {\n      gesture.off(\"panmove\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function panStart$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"panstart\", next);\n    },\n    (next) => {\n      gesture.off(\"panstart\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function panEnd$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"panend\", next);\n    },\n    (next) => {\n      gesture.off(\"panend\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function panCancel$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"pancancel\", next);\n    },\n    (next) => {\n      gesture.off(\"pancancel\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function panLeft$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"panleft\", next);\n    },\n    (next) => {\n      gesture.off(\"panleft\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function panRight$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"panright\", next);\n    },\n    (next) => {\n      gesture.off(\"panright\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function panUp$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"panup\", next);\n    },\n    (next) => {\n      gesture.off(\"panup\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function panDown$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"pandown\", next);\n    },\n    (next) => {\n      gesture.off(\"pandown\", next);\n      gesture.destroy();\n    }\n  );\n}\n// 缩放 Pinch : Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\nexport function pinch$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"pinch\", next);\n    },\n    (next) => {\n      gesture.off(\"pinch\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function pinchIn$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"pinchin\", next);\n    },\n    (next) => {\n      gesture.off(\"pinchin\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function pinchOut$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"pinchout\", next);\n    },\n    (next) => {\n      gesture.off(\"pinchout\", next);\n      gesture.destroy();\n    }\n  );\n}\n// 长按 Press : Recognized when the pointer is down for x ms without any movement.\nexport function press$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"press\", next);\n    },\n    (next) => {\n      gesture.off(\"press\", next);\n      gesture.destroy();\n    }\n  );\n}\n// 旋转 Rotate : Recognized when two or more pointer are moving in a circular motion.\nexport function rotate$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"rotate\", next);\n    },\n    (next) => {\n      gesture.off(\"rotate\", next);\n      gesture.destroy();\n    }\n  );\n}\n// Swipe : Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\nexport function swipe$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"swipe\", next);\n    },\n    (next) => {\n      gesture.off(\"swipe\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function swipeLeft$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"swipeleft\", next);\n    },\n    (next) => {\n      gesture.off(\"swipeleft\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function swipeRight$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"swiperight\", next);\n    },\n    (next) => {\n      gesture.off(\"swiperight\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function swipeUp$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"swipeup\", next);\n    },\n    (next) => {\n      gesture.off(\"swipeup\", next);\n      gesture.destroy();\n    }\n  );\n}\nexport function swipeDown$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"swipedown\", next);\n    },\n    (next) => {\n      gesture.off(\"swipedown\", next);\n      gesture.destroy();\n    }\n  );\n}\n// Tap : Recognized when the pointer is doing a small tap/click.\nexport function tap$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(el);\n  return fromEventPattern(\n    (next) => {\n      gesture.on(\"tap\", next);\n    },\n    (next) => {\n      gesture.off(\"tap\", next);\n      gesture.destroy();\n    }\n  );\n}\n// 在 el 之外点击\nexport function tapOutSide$(\n  el: HTMLEventObservable = document.documentElement\n): Observable<HammerInput> {\n  const gesture = createGesture(document.documentElement);\n  return fromEventPattern(\n    (next) => {\n      const handler = (e: HammerInput) => {\n        if (!e.target || el == e.target || el.contains(e.target as Node)) {\n          return;\n        }\n        next(e);\n      };\n      gesture.on(\"tap\", handler);\n      return handler;\n    },\n    (next, handler) => {\n      gesture.off(\"tap\", handler);\n      gesture.destroy();\n    }\n  );\n}\n\n// ** Transition Events **\nexport function transitionStart$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<TransitionEvent> {\n  return createEventListener$(el, \"transitionstart\", useCapture);\n}\nexport function transitionEnd$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<TransitionEvent> {\n  return merge(\n    createEventListener$(\n      el,\n      \"transitionend\",\n      useCapture\n    ) as Observable<TransitionEvent>,\n    createEventListener$(\n      el,\n      \"webkitTransitionEnd\",\n      useCapture\n    ) as Observable<TransitionEvent>,\n    createEventListener$(\n      el,\n      \"oTransitionEnd\",\n      useCapture\n    ) as Observable<TransitionEvent>,\n    createEventListener$(\n      el,\n      \"MSTransitionEnd\",\n      useCapture\n    ) as Observable<TransitionEvent>\n  );\n}\nexport function transitionCancel$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<TransitionEvent> {\n  return createEventListener$(el, \"transitioncancel\", useCapture);\n}\n\n// ** Animation Events **\nexport function animationStart$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<AnimationEvent> {\n  return createEventListener$(el, \"animationstart\", useCapture);\n}\nexport function animationEnd$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<AnimationEvent> {\n  return createEventListener$(el, \"animationend\", useCapture);\n}\nexport function animationCancel$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<AnimationEvent> {\n  return createEventListener$(el, \"animationcancel\", useCapture);\n}\n\n// ** Drag Drop Events **\nexport function drag$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<DragEvent> {\n  return createEventListener$(el, \"drag\", useCapture);\n}\nexport function dragStart$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<DragEvent> {\n  return createEventListener$(el, \"dragstart\", useCapture);\n}\nexport function dragEnd$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<DragEvent> {\n  return createEventListener$(el, \"dragend\", useCapture);\n}\nexport function drop$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<DragEvent> {\n  return createEventListener$(el, \"drop\", useCapture);\n}\nexport function dragEnter$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<DragEvent> {\n  return createEventListener$(el, \"dragenter\", useCapture);\n}\nexport function dragLeave$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<DragEvent> {\n  return createEventListener$(el, \"dragleave\", useCapture);\n}\nexport function dragOver$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<DragEvent> {\n  return createEventListener$(el, \"dragover\", useCapture);\n}\n\n// ** Keyboard Events **\nexport function keyDown$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<KeyboardEvent> {\n  return createEventListener$(el, \"keydown\", useCapture);\n}\nexport function keyUp$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<KeyboardEvent> {\n  return createEventListener$(el, \"keyup\", useCapture);\n}\nexport function keyPress$(\n  el: HTMLEventObservable = document.documentElement,\n  useCapture = false\n): Observable<KeyboardEvent> {\n  return createEventListener$(el, \"keypress\", useCapture);\n}\n\n// ** html Events **\n// elChange$(el).subscribe((e) =>\n//   setPerson({\n//     ...person,\n//     [e.target.name]: e.target.value\n//     [e.target.name]: e.target.checked // radio checkbox\n//     [e.target.name]: e.target.selected // select\n//   })\n// );\n// const group = document.querySelector(\".group\"); // <p class='group'>...</p>\n// elChange$(group).subscribe((e) => {\n//   const checked = group.querySelector(\":checked\");\n//   console.log(checked.value);\n//   const selected = group.querySelector(\":selected\");\n//   console.log(selected.value);\n// });\nexport function elChange$(\n  el: HTMLSelectElement | HTMLInputElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"change\", useCapture);\n}\n\nexport function formSubmit$(\n  el: HTMLFormElement,\n  useCapture = false\n): Observable<MouseEvent> {\n  return createEventListener$(el, \"submit\", useCapture);\n}\n\n// ** global Events **\n\n// All events propagate in React except onScroll, which only works on the JSX tag you attach it to.\nexport function scroll$(time = 10): Observable<Event> {\n  // window.scrollX;\n  // window.scrollY;\n  return createEventListener$(window, \"scroll\", true).pipe(throttleTime(time));\n}\n\nexport function documentVisible$(): Observable<boolean> {\n  return createEventListener$(document, \"visibilitychange\", true).pipe(\n    map(() => {\n      // return !document.hidden;\n      return document.visibilityState === \"visible\";\n    }),\n    distinctUntilChanged()\n  );\n  // return combineLatest([\n  //   createEventListener$(window, \"focus\", true),\n  //   createEventListener$(window, \"pagehide\", true),\n  //   createEventListener$(window, \"blur\", true)\n  // ]).pipe(\n  //   map(([_, __, ___]) => {\n  //     return !document.hidden;\n  //   }),\n  //   distinctUntilChanged()\n  // );\n}\n\n// 监听 localStorage , storageEvent.key == localStorage.key\nexport function storageEvent$(): Observable<StorageEvent> {\n  return createEventListener$<StorageEvent>(window, \"storage\", false);\n}\n\nexport function createOnlineStatus$(): Observable<boolean> {\n  return merge(\n    createEventListener$<Event>(window, \"online\", false),\n    createEventListener$<Event>(window, \"offline\", false)\n  ).pipe(\n    map(() => navigator.onLine),\n    startWith(navigator.onLine),\n    distinctUntilChanged(),\n    shareReplay({\n      bufferSize: 1, // 每个新订阅会收到最近一次事件\n      refCount: true // 最后一个订阅取消时会自动解绑事件\n    })\n  );\n}\n\nexport function beforeUnload$(): Observable<BeforeUnloadEvent> {\n  return createEventListener$<BeforeUnloadEvent>(window, \"beforeunload\", false);\n}\n\n////////////////////// Mouse 或 Touch 或 Pointer 或 gesture //////////////////////\n\ntype MousePointMoveOptions = {\n  start?: (e: MousePointEvent, mpg: MousePointGroup) => void;\n  end?: (e: MousePointEvent, mpg: MousePointGroup) => void;\n  createMousePoint?: ReturnType<typeof createMousePoint>;\n};\n\nexport function mouseMovePoint$(\n  el: HTMLElement = document.documentElement,\n  options?: Pick<MousePointMoveOptions, \"createMousePoint\">\n): Observable<MousePointGroup> {\n  const mpg = options?.createMousePoint || createMousePoint();\n  return mouseMove$(el).pipe(\n    map((e) => {\n      mpg.setCurrent(getMousePositionInElement(e, el));\n      return mpg;\n    })\n  );\n}\n\nexport function mouseDownMovePoint$(\n  el: HTMLElement = document.documentElement,\n  options?: MousePointMoveOptions\n): Observable<MousePointGroup> {\n  const mpg = options?.createMousePoint || createMousePoint();\n  return mouseMove$(el).pipe(\n    windowToggle(\n      mouseDown$(el).pipe(\n        tap((e) => {\n          mpg.setStart(getMousePositionInElement(e, el), true);\n          options?.start?.(e, mpg);\n        })\n      ),\n      () =>\n        mouseUp$(el).pipe(\n          tap((e) => {\n            mpg.setCurrent(getMousePositionInElement(e, el), false);\n            options?.end?.(e, mpg);\n          })\n        )\n    ),\n    switchAll(),\n    map((e) => {\n      mpg.setCurrent(getMousePositionInElement(e, el), true);\n      return mpg;\n    })\n  );\n}\n\nexport function touchDownMovePoint$(\n  el: HTMLElement = document.documentElement,\n  options?: MousePointMoveOptions\n): Observable<MousePointGroup> {\n  const mpg = options?.createMousePoint || createMousePoint();\n  return touchStart$(el).pipe(\n    tap((e) => {\n      const touch = e.changedTouches[0]; // first touch\n      mpg.setStart(getMousePositionInElement(touch, el), true);\n      options?.start?.(touch, mpg);\n    }),\n    switchMap(() =>\n      touchMove$(el).pipe(\n        takeUntil(\n          race(touchEnd$(el), touchCancel$(el)).pipe(\n            tap((e) => {\n              const touch = e.changedTouches[0]; // first touch\n              mpg.setCurrent(getMousePositionInElement(touch, el), false);\n              options?.end?.(touch, mpg);\n            })\n          )\n        )\n      )\n    ),\n    map((e) => {\n      const touch = e.changedTouches[0]; // first touch\n      mpg.setCurrent(getMousePositionInElement(touch, el), true);\n      return mpg;\n    })\n  );\n}\n\n// 在 mobile 下似乎 pointerUp$ pointerCancel$ 会提前触发？\nexport function pointerDownMovePoint$(\n  el: HTMLElement = document.documentElement,\n  options?: MousePointMoveOptions\n): Observable<MousePointGroup> {\n  const mpg = options?.createMousePoint || createMousePoint();\n  return pointerDown$(el).pipe(\n    tap((e) => {\n      mpg.setStart(getMousePositionInElement(e, el), true);\n      options?.start?.(e, mpg);\n    }),\n    switchMap(() =>\n      pointerMove$(el).pipe(\n        takeUntil(\n          race(pointerUp$(el), pointerCancel$(el)).pipe(\n            tap((e) => {\n              mpg.setCurrent(getMousePositionInElement(e, el), false);\n              options?.end?.(e, mpg);\n            })\n          )\n        )\n      )\n    ),\n    map((e) => {\n      mpg.setCurrent(getMousePositionInElement(e, el), true);\n      return mpg;\n    })\n  );\n}\n\n// 大一统\nexport function compatableDownMovePoint$(\n  el: HTMLElement = document.documentElement,\n  options?: MousePointMoveOptions\n): Observable<MousePointGroup> {\n  return race(\n    mouseDownMovePoint$(el, options),\n    touchDownMovePoint$(el, options)\n    // pointerDownMovePoint$(el, options),\n  );\n}\n\nexport function mouseAndPointerDownMovePoint$(\n  el: HTMLElement = document.documentElement,\n  options?: MousePointMoveOptions\n): Observable<MousePointGroup> {\n  const mpg = options?.createMousePoint || createMousePoint();\n  return merge(mouseMove$(el), pointerDown$(el)).pipe(\n    exhaustMap((e) => {\n      if (e instanceof PointerEvent) {\n        // pointerDown\n        mpg.setStart(getMousePositionInElement(e, el), true);\n        options?.start?.(e, mpg);\n        return pointerMove$(el).pipe(\n          takeUntil(\n            race(pointerUp$(el), pointerCancel$(el)).pipe(\n              tap((e) => {\n                mpg.setCurrent(getMousePositionInElement(e, el), false);\n                options?.end?.(e, mpg);\n              })\n            )\n          )\n        );\n      } else if (e instanceof MouseEvent) {\n        // mouseMove\n        return of(e);\n      } else {\n        return EMPTY;\n      }\n    }),\n    map((e) => {\n      mpg.setCurrent(\n        getMousePositionInElement(e, el),\n        e instanceof PointerEvent\n      );\n      return mpg;\n    })\n  );\n}\n\n/**\n * 下拉刷新 pull-downing dStartY > 0\n * 上拉加载 pull-uping dStartY < 0\n */\nexport function pull$(el: HTMLElement): Observable<number> {\n  return new Observable<number>((observer) => {\n    const subscription = pointerDownMovePoint$(el, {\n      start: () => {\n        observer.next(0);\n      }\n    }).subscribe((mpg) => {\n      observer.next(mpg.current.y - mpg.start.y);\n    });\n    return subscription.unsubscribe;\n  }).pipe(distinctUntilChanged());\n}\n\n// <div draggable=\"true\" ondragstart=\"dragstart\" ondragend=\"dragend\">Draggable-Item</div>\nexport function createDraggable(\n  el: HTMLElement,\n  options?: {\n    onStart?: (e: DragEvent) => void;\n    onDrag?: (e: DragEvent) => void;\n    onEnd?: (e: DragEvent) => void;\n  }\n): () => void {\n  atomWriteAttribute(el, \"draggable\", \"true\");\n\n  const dragStartSubscription = dragStart$(el, true).subscribe(\n    (e: DragEvent) => {\n      preventDefault(e);\n      stopPropagation(e);\n      const dt = e.dataTransfer;\n      if (dt) {\n        dt.effectAllowed = \"move\";\n        // you must set some data in order to drag an arbitrary block element like a <div>\n        dt.setData(\"text/plain\", \"some-data\");\n        // const coords = { x: e.offsetX, y: e.offsetY };\n        // if (dt.setDragImage) {\n        //   dt.setDragImage(el, coords.x, coords.y);\n        // }\n      }\n      options?.onStart?.(e);\n    }\n  );\n\n  const dragSubscription = drag$(el).subscribe((e: DragEvent) => {\n    preventDefault(e);\n    options?.onDrag?.(e);\n  });\n\n  const dragEndSubscription = dragEnd$(el).subscribe((e: DragEvent) => {\n    preventDefault(e);\n    options?.onEnd?.(e);\n  });\n\n  return () => {\n    dragStartSubscription.unsubscribe();\n    dragSubscription.unsubscribe();\n    dragEndSubscription.unsubscribe();\n  };\n}\n\n// <div ondragenter=\"dragenter\" ondragleave=\"dragleave\" ondragover=\"dragover\" ondrop=\"drop\">Drop-Zone</div>\nexport function createDrop(\n  el: HTMLElement,\n  options?: {\n    onEnter?: (e: DragEvent) => void;\n    onLeave?: (e: DragEvent) => void;\n    onOver?: (e: DragEvent) => void;\n    onDrop?: (e: DragEvent, files: File[]) => void;\n  }\n): () => void {\n  const dragEnterSubscription = dragEnter$(el).subscribe((e: DragEvent) => {\n    preventDefault(e);\n    options?.onEnter?.(e);\n  });\n\n  const dragOverSubscription = dragOver$(el).subscribe((e: DragEvent) => {\n    preventDefault(e);\n    const dt = e.dataTransfer;\n    if (dt) {\n      dt.dropEffect = \"move\";\n    }\n    options?.onOver?.(e);\n  });\n\n  const dragLeaveSubscription = dragLeave$(el).subscribe((e: DragEvent) => {\n    preventDefault(e);\n    options?.onLeave?.(e);\n  });\n\n  const dropSubscription = drop$(el).subscribe((e: DragEvent) => {\n    preventDefault(e);\n    const dt = e.dataTransfer;\n    if (!dt) {\n      options?.onDrop?.(e, []);\n      return;\n    }\n    options?.onDrop?.(e, [...dt.files]);\n    // const data = dt.getData(\"text\");\n    // dt.clearData();\n    // for (const item of dt.items) {\n    //   if (item.kind === \"string\") {\n    //     if (item.type.match(\"^text/plain\")) {\n    //       item.getAsString((s) => {\n    //         // string\n    //       });\n    //     } else if (item.type.match(\"^text/html\")) {\n    //       // HTML\n    //     } else if (item.type.match(\"^text/uri-list\")) {\n    //       // URI\n    //     }\n    //   } else if (item.kind === \"file\") {\n    //     if (item.type.match(\"^image/\")) {\n    //       // image file\n    //     }\n    //     const f = item.getAsFile();\n    //   }\n    // }\n  });\n\n  return () => {\n    dragEnterSubscription.unsubscribe();\n    dragOverSubscription.unsubscribe();\n    dragLeaveSubscription.unsubscribe();\n    dropSubscription.unsubscribe();\n  };\n}\n\n////////////////////// Position //////////////////////\n\nexport function getWindow() {\n  return {\n    screenWidth: window.screen.width,\n    screenHeight: window.screen.height,\n    innerWidth: window.innerWidth, // 浏览器窗口的宽度（不包括滚动条）\n    innerHeight: window.innerHeight, // 浏览器窗口的高度（不包括滚动条）\n    screenX: window.screenX,\n    screenY: window.screenY, // window.screenY + (window.outerHeight - window.innerHeight)\n    pageXOffset: window.pageXOffset, // 当前页面水平滚动的像素数\n    pageYOffset: window.pageYOffset // 当前页面垂直滚动的像素数\n  };\n}\n\n// For any non-empty HTML document, documentElement will always be an <html> element.\n// For any non-empty XML document, documentElement will always be whatever element is the root element of the document.\n// The Document.body property represents the <body> or <frameset> node of the current document, or null if no such element exists.\nexport function getDocumentElement() {\n  const el = document.documentElement || document.body;\n  // // IE浏览器\n  // if (document.compatMode === \"CSS1Compat\") {\n  //   // 标准模式\n  // } else {\n  //   // 怪异模式\n  // }\n  return {\n    el,\n\n    // 不包括边框大小，只包含内容和内边距\n    clientWidth: el.clientWidth,\n    clientHeight: el.clientHeight,\n    clientTop: el.clientTop,\n    clientLeft: el.clientLeft,\n\n    // const contentWidth =\n    //   [...el.children].reduce(\n    //     (a, e) => Math.max(a, e.getBoundingClientRect().right),\n    //     0\n    //   ) - el.getBoundingClientRect().x;\n\n    // 元素的内容区域加上它的内边距再加上任何溢出内容的尺寸\n    // 当内容没有溢出时，scrollWidth == clientWidth , scrollHeight == clientHeight\n    // 当内容溢出时，   scrollWidth >  clientWidth , scrollHeight >  clientHeight\n    scrollWidth: el.scrollWidth,\n    scrollHeight: el.scrollHeight,\n    scrollTop: el.scrollTop,\n    scrollLeft: el.scrollLeft,\n\n    // 返回元素的实际大小，包括边框、内边距和滚动条\n    offsetWidth: el.offsetWidth,\n    offsetHeight: el.offsetHeight,\n    offsetTop: el.offsetTop,\n    offsetLeft: el.offsetLeft,\n\n    offsetParent: el.offsetParent\n  };\n}\n\n// 获取可视区域\nexport function getViewport() {\n  const { clientWidth, clientHeight, scrollLeft, scrollTop } =\n    getDocumentElement();\n  return {\n    width: window.innerWidth || clientWidth,\n    height: window.innerHeight || clientHeight,\n    x: window.pageXOffset || scrollLeft,\n    y: window.pageYOffset || scrollTop\n  };\n}\n\n// 获取页面整体\nexport function getPage() {\n  const { scrollWidth, scrollHeight, scrollLeft, scrollTop } =\n    getDocumentElement();\n  return {\n    width: scrollWidth,\n    height: scrollHeight,\n    scrollX: window.pageXOffset || scrollLeft,\n    scrollY: window.pageYOffset || scrollTop\n  };\n}\n\nexport function getElementPositionInViewport(el: HTMLElement) {\n  return el.getBoundingClientRect();\n}\n\nexport function getRelativeBoundingClientRect(child: HTMLElement) {\n  return {\n    x: child.offsetLeft,\n    y: child.offsetTop,\n    width: child.offsetWidth,\n    height: child.offsetHeight\n  };\n}\n\nexport function getElementPositionInPage(\n  el: HTMLElement | SVGElement | Element\n) {\n  const { top, left, width, height } = el.getBoundingClientRect();\n  const { scrollLeft, scrollTop } = getDocumentElement();\n  return {\n    x: left + scrollLeft,\n    y: top + scrollTop,\n    width,\n    height\n  };\n}\n\nexport function getElementPositionInPage2(el: HTMLElement) {\n  let elem: HTMLElement | null = el;\n  let actualLeft = 0;\n  let actualTop = 0;\n  while (elem !== null) {\n    actualLeft += elem.offsetLeft;\n    actualTop += elem.offsetTop;\n    if (elem.offsetParent instanceof HTMLElement) {\n      elem = elem.offsetParent;\n    } else {\n      elem = null;\n    }\n  }\n  return {\n    x: actualLeft,\n    y: actualTop,\n    width: el.offsetWidth,\n    height: el.offsetHeight\n  };\n}\n\nexport function getVerticalScrollTopPercentInPage() {\n  const { clientHeight, scrollTop, scrollHeight } = getDocumentElement();\n  const height = scrollHeight - clientHeight;\n  const percent = height <= 0 ? 0 : (scrollTop / height) * 100;\n  return percent;\n}\n\n// 判断元素是否在视口内\nexport function isInViewport(el: HTMLElement): boolean {\n  const viewport = getViewport();\n  const rect = getElementPositionInViewport(el);\n  return (\n    rect.bottom >= 0 &&\n    rect.top <= viewport.height &&\n    rect.right >= 0 &&\n    rect.left <= viewport.width\n  );\n}\n\n// export function getComputedPosition(el: HTMLElement) {\n//   const styles = atomReadStyles(el);\n//   const transform = readStyleFromStyles(styles, \"transform\");\n//   let x = 0;\n//   let y = 0;\n//   if (transform && transform !== \"none\") {\n//     // 匹配 matrix() matrix3d()\n//     const matrixValues = transform.match(/matrix[^()]*\\(([^()]+)\\)/);\n//     if (matrixValues && matrixValues[1]) {\n//       const matrix = matrixValues[1].split(\", \").map(Number);\n//       x = +(matrix[12] || matrix[4]) || 0;\n//       y = +(matrix[13] || matrix[5]) || 0;\n//     }\n\n//     // 匹配 translateX() 和 translateY()\n//     const translateX = transform.match(/translateX\\((-?[\\d.]+)px\\)/);\n//     const translateY = transform.match(/translateY\\((-?[\\d.]+)px\\)/);\n//     if (translateX) {\n//       x = parseFloat(translateX[1]);\n//     }\n//     if (translateY) {\n//       y = parseFloat(translateY[1]);\n//     }\n\n//     // 匹配 translate()\n//     const translate = transform.match(\n//       /translate\\((-?[\\d.]+)px, (-?[\\d.]+)px\\)/\n//     );\n//     if (translate) {\n//       x = parseFloat(translate[1]);\n//       y = parseFloat(translate[2]);\n//     }\n\n//     // 匹配 scaleX() 和 scaleY()\n//     // const scaleX = transform.match(/scaleX\\((-?[\\d.]+)\\)/);\n//     // const scaleY = transform.match(/scaleY\\((-?[\\d.]+)\\)/);\n\n//     // 匹配 rotate()\n//     // const rotate = transform.match(/rotate\\((-?[\\d.]+)deg\\)/);\n//   } else {\n//     x = +styles.left.replace(/[^-\\d.]/g, \"\") || 0;\n//     y = +styles.top.replace(/[^-\\d.]/g, \"\") || 0;\n//   }\n//   return { x: x, y: y };\n// }\n\n////////////////////// Position : Mouse 或 Touch 或 Pointer 或 gesture //////////////////////\n\nexport type MousePointEvent = MouseEvent | Touch | PointerEvent | HammerInput;\n\nexport function getMousePositionInViewport(ev: MousePointEvent) {\n  if (\"center\" in ev) {\n    const center = (ev as HammerInput).center;\n    const rect = getElementPositionInViewport(ev.target);\n    return {\n      x: center.x - rect.x,\n      y: center.y - rect.y\n    };\n  }\n  return {\n    x: ev.clientX,\n    y: ev.clientY\n  };\n}\n\nexport function getMousePositionInPage(ev: MousePointEvent) {\n  if (\"center\" in ev) {\n    return (ev as HammerInput).center;\n  }\n  if (typeof ev.pageX == \"number\" && typeof ev.pageY == \"number\") {\n    return {\n      x: ev.pageX,\n      y: ev.pageY\n    };\n  }\n  const { scrollLeft, scrollTop } = getDocumentElement();\n  return {\n    x: ev.clientX + scrollLeft,\n    y: ev.clientY + scrollTop\n  };\n}\n\nexport function getMousePositionInElement(\n  ev: MousePointEvent,\n  element?: AnyElement\n) {\n  const r = {\n    x: 0,\n    y: 0\n  };\n  if (!element) {\n    /// 原 offset 只是相对于直接父类\n    let fixedOffsetX = 0;\n    let fixedOffsetY = 0;\n    if (\n      \"currentTarget\" in ev &&\n      ev.currentTarget &&\n      ev.target &&\n      ev.currentTarget != ev.target\n      // ev.target: Refers to the actual element where the event occurred\n      // ev.currentTarget: Refers to the element to which the event handler is attached\n    ) {\n      const currentTargetRect = (\n        ev.currentTarget as AnyElement\n      ).getBoundingClientRect();\n      const targetRect = (ev.target as AnyElement).getBoundingClientRect();\n      fixedOffsetX = targetRect.left - currentTargetRect.left;\n      fixedOffsetY = targetRect.top - currentTargetRect.top;\n    }\n    if (\"offsetX\" in ev) {\n      r.x = ev.offsetX + fixedOffsetX;\n      r.y = ev.offsetY + fixedOffsetY;\n    } else {\n      const mouse = getMousePositionInPage(ev);\n      const p = getElementPositionInPage(ev.target as AnyElement);\n      r.x = clamp(mouse.x - p.x + fixedOffsetX, 0, p.width);\n      r.y = clamp(mouse.y - p.y + fixedOffsetY, 0, p.height);\n    }\n  } else {\n    const mouse = getMousePositionInPage(ev);\n    const p = getElementPositionInPage(element);\n    r.x = clamp(mouse.x - p.x, 0, p.width);\n    r.y = clamp(mouse.y - p.y, 0, p.height);\n  }\n  return r;\n}\n\n/**\n * Given a mouse scroll wheel event, get the \"delta\" of how fast it moved.\n * @param {Object} e - a DOM Event Object.\n * @return {int} - the mouse wheel's delta.  It is greater than 0, the\n * scroll wheel was spun upwards; if less than 0, downwards.\n */\nexport function getScrollWheelDelta(e: any) {\n  let delta = 0;\n  if (!e) /* For IE. */ e = window.event;\n  if (e.wheelDelta) {\n    /* IE/Opera. */\n    delta = e.wheelDelta / 120;\n    /** In Opera 9, delta differs in sign as compared to IE.\n     */\n    if ((window as any).opera) {\n      delta = -delta;\n    }\n  } else if (e.detail) {\n    /** Mozilla case. */\n    /** In Mozilla, sign of delta is different than in IE.\n     * Also, delta is multiple of 3.\n     */\n    delta = -e.detail / 3;\n  }\n  return delta;\n}\n\n// 0 — Left Button (the default)\n// 1 — Middle Button (currently unsupported)\n// 2 — Right Button\n// 3 — X1 (Back) Button\n// 4 — X2 (Forward) Button\nexport function getMouseButton(event: MouseEvent) {\n  if (document.implementation.hasFeature(\"MouseEvents\", \"2.0\")) {\n    return event.button;\n  } else {\n    switch (event.button) {\n      case 0:\n      case 1:\n      case 3:\n      case 5:\n      case 7:\n        return 0; // 左键\n      case 2:\n      case 6:\n        return 2; // 右键\n      case 4:\n        return 1; // 中键\n    }\n  }\n}\n\n////////////////////// Keyboard //////////////////////\n\nexport const CommonKeyCode = {\n  BACKSPACE: 8,\n  TAB: 9,\n  COMMA: 188,\n  DELETE: 46,\n  END: 35,\n  ENTER: 13,\n  ESCAPE: 27,\n  HOME: 36,\n  LEFT: 37,\n  UP: 38,\n  DOWN: 40,\n  PAGE_DOWN: 34,\n  PAGE_UP: 33,\n  PERIOD: 190,\n  RIGHT: 39,\n  SPACE: 32\n};\n\n/**\n * Representations of pressable keys that aren't text.  These are stored in\n * the Unicode PUA (Private Use Area) code points, 0xE000-0xF8FF.  Refer to\n * http://www.google.com.au/search?&q=unicode+pua&btnK=Search\n *\n * @enum {string}\n * @see <https://www.w3.org/TR/webdriver/#keyboard-actions>\n */\nconst Key = {\n  NULL: \"\\uE000\",\n  CANCEL: \"\\uE001\", // ^break\n  HELP: \"\\uE002\",\n  BACK_SPACE: \"\\uE003\",\n  TAB: \"\\uE004\",\n  CLEAR: \"\\uE005\",\n  RETURN: \"\\uE006\",\n  ENTER: \"\\uE007\",\n  SHIFT: \"\\uE008\",\n  CONTROL: \"\\uE009\",\n  ALT: \"\\uE00A\",\n  PAUSE: \"\\uE00B\",\n  ESCAPE: \"\\uE00C\",\n  SPACE: \"\\uE00D\",\n  PAGE_UP: \"\\uE00E\",\n  PAGE_DOWN: \"\\uE00F\",\n  END: \"\\uE010\",\n  HOME: \"\\uE011\",\n  ARROW_LEFT: \"\\uE012\",\n  LEFT: \"\\uE012\",\n  ARROW_UP: \"\\uE013\",\n  UP: \"\\uE013\",\n  ARROW_RIGHT: \"\\uE014\",\n  RIGHT: \"\\uE014\",\n  ARROW_DOWN: \"\\uE015\",\n  DOWN: \"\\uE015\",\n  INSERT: \"\\uE016\",\n  DELETE: \"\\uE017\",\n  SEMICOLON: \"\\uE018\",\n  EQUALS: \"\\uE019\",\n\n  NUMPAD0: \"\\uE01A\", // number pad keys\n  NUMPAD1: \"\\uE01B\",\n  NUMPAD2: \"\\uE01C\",\n  NUMPAD3: \"\\uE01D\",\n  NUMPAD4: \"\\uE01E\",\n  NUMPAD5: \"\\uE01F\",\n  NUMPAD6: \"\\uE020\",\n  NUMPAD7: \"\\uE021\",\n  NUMPAD8: \"\\uE022\",\n  NUMPAD9: \"\\uE023\",\n  MULTIPLY: \"\\uE024\",\n  ADD: \"\\uE025\",\n  SEPARATOR: \"\\uE026\",\n  SUBTRACT: \"\\uE027\",\n  DECIMAL: \"\\uE028\",\n  DIVIDE: \"\\uE029\",\n\n  F1: \"\\uE031\", // function keys\n  F2: \"\\uE032\",\n  F3: \"\\uE033\",\n  F4: \"\\uE034\",\n  F5: \"\\uE035\",\n  F6: \"\\uE036\",\n  F7: \"\\uE037\",\n  F8: \"\\uE038\",\n  F9: \"\\uE039\",\n  F10: \"\\uE03A\",\n  F11: \"\\uE03B\",\n  F12: \"\\uE03C\",\n\n  COMMAND: \"\\uE03D\", // Apple command key\n  META: \"\\uE03D\", // alias for Windows key\n\n  /**\n   * Japanese modifier key for switching between full- and half-width\n   * characters.\n   * @see <https://en.wikipedia.org/wiki/Language_input_keys>\n   */\n  ZENKAKU_HANKAKU: \"\\uE040\"\n};\n\nexport function getKeyCode(e: KeyboardEvent) {\n  if (e.key) {\n    return e.key; // e.key='u' | e.code='KeyU'\n  } else if (e.keyCode) {\n    return e.keyCode;\n  } else if (e.which) {\n    return e.which;\n  }\n}\n\n// 注意：不要与浏览器系统快捷键重合！\nexport interface HotKeyOptions {\n  keys: string[];\n  ctrl?: boolean;\n  shift?: boolean;\n  alt?: boolean;\n  target?: EventTarget;\n}\n\n/// UNDO 判断多个 keys 同时按下\nfunction matchHotKeyScheme(\n  event: KeyboardEvent, // WheelEvent | KeyboardEvent\n  options: HotKeyOptions\n): boolean {\n  const ctrlKey = options.ctrl || false;\n  const shiftKey = options.shift || false;\n  const altKey = options.alt || false;\n  return (\n    (ctrlKey === event.metaKey || ctrlKey === event.ctrlKey) &&\n    shiftKey === event.shiftKey &&\n    altKey === event.altKey &&\n    options.keys.map((k) => k.toLowerCase()).includes(event.key.toLowerCase())\n  );\n}\n\n// UNDO pause\n// UNDO resume\n\n// 注意：不要与浏览器系统快捷键重合！\nexport function hotKeyDown$(options: HotKeyOptions): Observable<void> {\n  return keyDown$(options.target || document || window).pipe(\n    filter((e: KeyboardEvent) => matchHotKeyScheme(e, options)),\n    map((e: KeyboardEvent) => {\n      e.stopPropagation();\n      e.preventDefault();\n      return;\n    })\n  );\n}\n\n// 注意：不要与浏览器系统快捷键重合！\nexport function hotKeyUp$(options: HotKeyOptions): Observable<void> {\n  return keyUp$(options.target || document || window).pipe(\n    filter((e: KeyboardEvent) => matchHotKeyScheme(e, options)),\n    map((e: KeyboardEvent) => {\n      e.stopPropagation();\n      e.preventDefault();\n      return;\n    })\n  );\n}\n\n// 注意：不要与浏览器系统快捷键重合！\nexport function hotKeyFile$(\n  hotKeyOptions: HotKeyOptions = { keys: [\"o\"] },\n  type: FileReaderResponseTypeInBrowser = FileReaderResponseTypeInBrowser.text\n) {\n  return hotKeyDown$(hotKeyOptions).pipe(\n    // 方法1：使用 switchMap 调用异步函数\n    switchMap(async () => {\n      return await selectFile(type);\n    })\n    // 方法2：将 Promise 转为 Observable\n    // switchMap(() => {\n    //   return from(selectFile(type));\n    // })\n  );\n}\n\n// 注意：不要与浏览器系统快捷键重合！\nexport async function hotKeyFile(\n  hotKeyOptions: HotKeyOptions = { keys: [\"o\"] },\n  type: FileReaderResponseTypeInBrowser = FileReaderResponseTypeInBrowser.text\n) {\n  return firstValueFrom(hotKeyFile$(hotKeyOptions, type)); // 将 Observable 转为 Promise\n}\n","import { EventBus, EventBusListeners } from \"@zyzgroup/core-common\";\nimport { createEventListener } from \"./createEventListener\";\nimport { resize } from \"./resize\";\nimport {\n  MousePointEvent,\n  getMousePositionInElement,\n  isSupportTouch\n} from \"./elementEvents\";\nimport { createGesture } from \"./loadHammer\";\n\n// deprecated 已过时！建议切换至：./elementEvents.ts\n\ndeclare const document: Document & {\n  attachEvent: any;\n  createEventObject: any;\n  onmousewheel: any;\n};\n\ntype MousePoint = {\n  x: number;\n  y: number;\n  dx: number;\n  dy: number;\n  dStartX: number;\n  dStartY: number;\n  isDown: boolean; // 是否已按下\n};\n\nfunction createMousePoint() {\n  const startMousePoint: MousePoint = {\n    x: 0,\n    y: 0,\n    dx: 0,\n    dy: 0,\n    dStartX: 0,\n    dStartY: 0,\n    isDown: false\n  };\n\n  const currentMousePoint: MousePoint = {\n    x: 0,\n    y: 0,\n    dx: 0,\n    dy: 0,\n    dStartX: 0,\n    dStartY: 0,\n    isDown: false\n  };\n\n  return {\n    mousePoint: currentMousePoint,\n\n    setStartMousePoint: function (\n      p: { x: number; y: number },\n      isDown?: boolean\n    ) {\n      startMousePoint.x = p.x;\n      startMousePoint.y = p.y;\n      startMousePoint.isDown = typeof isDown == \"boolean\" ? isDown : false;\n      this.setCurrentMousePoint(p, isDown);\n    },\n\n    setCurrentMousePoint: (p: { x: number; y: number }, isDown?: boolean) => {\n      const prevX = currentMousePoint.x;\n      const prevY = currentMousePoint.y;\n      currentMousePoint.x = p.x;\n      currentMousePoint.y = p.y;\n      currentMousePoint.dx = currentMousePoint.x - prevX;\n      currentMousePoint.dy = currentMousePoint.y - prevY;\n      currentMousePoint.dStartX = currentMousePoint.x - startMousePoint.x;\n      currentMousePoint.dStartY = currentMousePoint.y - startMousePoint.y;\n      currentMousePoint.isDown = typeof isDown == \"boolean\" ? isDown : false;\n    }\n  };\n}\n\nexport interface ElementEventBusListeners extends EventBusListeners {\n  mouseDown(e: MouseEvent): void;\n  mouseUp(e: MouseEvent): void;\n  mouseMove(e: MouseEvent): void;\n  mouseOver(e: MouseEvent): void;\n  mouseOut(e: MouseEvent): void;\n  mouseEnter(e: MouseEvent): void;\n  mouseLeave(e: MouseEvent): void;\n  mouseClick(e: MouseEvent): void;\n  mouseDoubleClick(e: MouseEvent): void;\n  mouseWheel(e: WheelEvent): void;\n  mouseContextMenu(e: MouseEvent): void;\n\n  touchStart(e: TouchEvent): void;\n  touchEnd(e: TouchEvent): void;\n  touchCancel(e: TouchEvent): void;\n  touchMove(e: TouchEvent): void;\n\n  pointerDown(e: PointerEvent): void;\n  pointerUp(e: PointerEvent): void;\n  pointerCancel(e: PointerEvent): void;\n  pointerMove(e: PointerEvent): void;\n\n  /// https://hammerjs.github.io/\n  // Pan : Recognized when the pointer is down and moved in the allowed direction.\n  pan(e: HammerInput): void;\n  panStart(e: HammerInput): void;\n  panMove(e: HammerInput): void;\n  panEnd(e: HammerInput): void;\n  panCancel(e: HammerInput): void;\n  panLeft(e: HammerInput): void;\n  panRight(e: HammerInput): void;\n  panUp(e: HammerInput): void;\n  panDown(e: HammerInput): void;\n\n  // 缩放 Pinch : Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n  pinch(e: HammerInput): void;\n  pinchin(e: HammerInput): void;\n  pinchout(e: HammerInput): void;\n\n  // 长按 Press : Recognized when the pointer is down for x ms without any movement.\n  press(e: HammerInput): void;\n\n  // 旋转 Rotate : Recognized when two or more pointer are moving in a circular motion.\n  rotate(e: HammerInput): void;\n\n  // Swipe : Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n  swipe(e: HammerInput): void;\n  swipeLeft(e: HammerInput): void;\n  swipeRight(e: HammerInput): void;\n  swipeUp(e: HammerInput): void;\n  swipeDown(e: HammerInput): void;\n\n  // Tap : Recognized when the pointer is doing a small tap/click.\n  tap(e: HammerInput): void;\n\n  // 在 el 之外点击\n  tapOutSide(e: Event): void;\n\n  transitionstart(e: TransitionEvent): void;\n  transitionend(e: TransitionEvent): void;\n  animationstart(e: AnimationEvent): void;\n  animationend(e: AnimationEvent): void;\n\n  resize: (rect: DOMRect) => void;\n}\n\nexport type ElementEventBus = EventBus<ElementEventBusListeners>;\n\nexport type ElementEventBusController = ReturnType<\n  typeof createElementEventBus\n>;\n\nexport function createElementEventBus(\n  el: HTMLElement = document.documentElement\n) {\n  const eb = new EventBus<ElementEventBusListeners>();\n  const gesture = createGesture(el);\n  let removes: (() => void)[] = [];\n\n  const ump = createMousePoint();\n  const mousePoint = ump.mousePoint;\n\n  const mouseDown = (e: MouseEvent) => {\n    // 影响性能\n    // el.style.userSelect = \"none\"; // if there's text\n    eb.emit(\"mouseDown\", e);\n  };\n  const mouseUp = (e: MouseEvent) => {\n    // 影响性能\n    // el.style.userSelect = \"\";\n    eb.emit(\"mouseUp\", e);\n  };\n  const mouseMove = (e: MouseEvent) => {\n    if (!mousePoint.isDown) {\n      ump.setCurrentMousePoint(getMousePositionInElement(e, el));\n    }\n    eb.emit(\"mouseMove\", e);\n  };\n  /// 如果触发的元素内部有其他的元素的时候当鼠标移上的时候会反复的触发 mouseover 和 mouseout 事件\n  /// 因为内部元素在鼠标移上的时候会向它的父对象派发事件，所以外面元素相当于也触发了mouseover 事件\n  const mouseOver = (e: MouseEvent) => {\n    eb.emit(\"mouseOver\", e);\n  };\n  const mouseOut = (e: MouseEvent) => {\n    eb.emit(\"mouseOut\", e);\n  };\n  const mouseEnter = (e: MouseEvent) => {\n    eb.emit(\"mouseEnter\", e);\n  };\n  const mouseLeave = (e: MouseEvent) => {\n    eb.emit(\"mouseLeave\", e);\n  };\n  const mouseClick = (e: MouseEvent) => {\n    eb.emit(\"mouseClick\", e);\n  };\n  const mouseDoubleClick = (e: MouseEvent) => {\n    eb.emit(\"mouseDoubleClick\", e);\n  };\n  const mouseWheel = (e: WheelEvent) => {\n    // const delta = e.deltaY || -e.wheelDelta || e.detail;\n    eb.emit(\"mouseWheel\", e);\n  };\n  const mouseContextMenu = (e: MouseEvent) => {\n    eb.emit(\"mouseContextMenu\", e);\n  };\n\n  const touchStart = (e: TouchEvent) => {\n    // const touch = e.changedTouches[0]; // first touch\n    eb.emit(\"touchStart\", e);\n  };\n  const touchEnd = (e: TouchEvent) => {\n    // const touch = e.changedTouches[0]; // first touch\n    eb.emit(\"touchEnd\", e);\n  };\n  const touchCancel = (e: TouchEvent) => {\n    // const touch = e.changedTouches[0]; // first touch\n    eb.emit(\"touchCancel\", e);\n  };\n  const touchMove = (e: TouchEvent) => {\n    // e.preventDefault(); // prevent scroll\n    const touch = e.changedTouches[0]; // first touch\n    if (!mousePoint.isDown) {\n      ump.setCurrentMousePoint(getMousePositionInElement(touch, el));\n    }\n    eb.emit(\"touchMove\", e);\n  };\n\n  const pointerDown = (e: PointerEvent) => {\n    // el.setPointerCapture(e.pointerId); // 捕获后续 pointermove / pointerup\n    eb.emit(\"pointerDown\", e);\n  };\n  const pointerUp = (e: PointerEvent) => {\n    // el.releasePointerCapture(e.pointerId);\n    eb.emit(\"pointerUp\", e);\n  };\n  const pointerCancel = (e: PointerEvent) => {\n    // el.releasePointerCapture(e.pointerId);\n    eb.emit(\"pointerCancel\", e);\n  };\n  const pointerMove = (e: PointerEvent) => {\n    eb.emit(\"pointerMove\", e);\n  };\n\n  const pan = (e: HammerInput) => {\n    eb.emit(\"pan\", e);\n  };\n  const panStart = (e: HammerInput) => {\n    eb.emit(\"panStart\", e);\n  };\n  const panMove = (e: HammerInput) => {\n    eb.emit(\"panMove\", e);\n  };\n  const panEnd = (e: HammerInput) => {\n    eb.emit(\"panEnd\", e);\n  };\n  const panCancel = (e: HammerInput) => {\n    eb.emit(\"panCancel\", e);\n  };\n  const panLeft = (e: HammerInput) => {\n    eb.emit(\"panLeft\", e);\n  };\n  const panRight = (e: HammerInput) => {\n    eb.emit(\"panRight\", e);\n  };\n  const panUp = (e: HammerInput) => {\n    eb.emit(\"panUp\", e);\n  };\n  const panDown = (e: HammerInput) => {\n    eb.emit(\"panDown\", e);\n  };\n\n  const pinch = (e: HammerInput) => {\n    eb.emit(\"pinch\", e);\n  };\n  const pinchin = (e: HammerInput) => {\n    eb.emit(\"pinchin\", e);\n  };\n  const pinchout = (e: HammerInput) => {\n    eb.emit(\"pinchout\", e);\n  };\n\n  const press = (e: HammerInput) => {\n    eb.emit(\"press\", e);\n  };\n\n  const rotate = (e: HammerInput) => {\n    eb.emit(\"rotate\", e);\n  };\n\n  const swipe = (e: HammerInput) => {\n    eb.emit(\"swipe\", e);\n  };\n  const swipeLeft = (e: HammerInput) => {\n    eb.emit(\"swipeLeft\", e);\n  };\n  const swipeRight = (e: HammerInput) => {\n    eb.emit(\"swipeRight\", e);\n  };\n  const swipeUp = (e: HammerInput) => {\n    eb.emit(\"swipeUp\", e);\n  };\n  const swipeDown = (e: HammerInput) => {\n    eb.emit(\"swipeDown\", e);\n  };\n\n  const tap = (e: HammerInput) => {\n    eb.emit(\"tap\", e);\n  };\n\n  const tapOutSide = (e: Event) => {\n    if (!e.target || el == e.target || el.contains(e.target as Node)) {\n      return;\n    }\n    eb.emit(\"tapOutSide\", e);\n  };\n\n  const transitionstart = (e: TransitionEvent) => {\n    eb.emit(\"transitionstart\", e);\n  };\n  const transitionend = (e: TransitionEvent) => {\n    eb.emit(\"transitionend\", e);\n  };\n  const animationstart = (e: AnimationEvent) => {\n    eb.emit(\"animationstart\", e);\n  };\n  const animationend = (e: AnimationEvent) => {\n    eb.emit(\"animationend\", e);\n  };\n\n  let _rect = {\n    ...el.getBoundingClientRect(),\n    width: el.offsetWidth,\n    height: el.offsetHeight\n  };\n\n  return {\n    el,\n    get rect() {\n      return _rect;\n    },\n    mousePoint,\n    eb,\n    start: async function () {\n      removes.push(createEventListener(el, \"mousedown\", mouseDown));\n      removes.push(createEventListener(el, \"mouseup\", mouseUp));\n      removes.push(createEventListener(el, \"mousemove\", mouseMove));\n      removes.push(createEventListener(el, \"mouseover\", mouseOver));\n      removes.push(createEventListener(el, \"mouseout\", mouseOut));\n      removes.push(createEventListener(el, \"mouseenter\", mouseEnter));\n      removes.push(createEventListener(el, \"mouseleave\", mouseLeave));\n      removes.push(createEventListener(el, \"click\", mouseClick));\n      removes.push(createEventListener(el, \"dblclick\", mouseDoubleClick));\n      removes.push(\n        createEventListener(\n          el,\n          \"onwheel\" in document.createElement(\"div\")\n            ? \"wheel\" // modern browsers\n            : document.onmousewheel !== undefined\n            ? \"mousewheel\" // Webkit and IE\n            : \"DOMMouseScroll\", // older Firefox\n          mouseWheel\n        )\n      );\n      removes.push(createEventListener(el, \"contextmenu\", mouseContextMenu));\n\n      removes.push(createEventListener(el, \"touchstart\", touchStart));\n      removes.push(createEventListener(el, \"touchend\", touchEnd));\n      removes.push(createEventListener(el, \"touchcancel\", touchCancel));\n      removes.push(createEventListener(el, \"touchmove\", touchMove));\n\n      removes.push(createEventListener(el, \"pointerdown\", pointerDown));\n      removes.push(createEventListener(el, \"pointerup\", pointerUp));\n      removes.push(createEventListener(el, \"pointercancel\", pointerCancel));\n      removes.push(createEventListener(el, \"pointermove\", pointerMove));\n\n      gesture.on(\"pan\", pan);\n      gesture.on(\"panstart\", panStart);\n      gesture.on(\"panmove\", panMove);\n      gesture.on(\"panend\", panEnd);\n      gesture.on(\"pancancel\", panCancel);\n      gesture.on(\"panleft\", panLeft);\n      gesture.on(\"panright\", panRight);\n      gesture.on(\"panup\", panUp);\n      gesture.on(\"pandown\", panDown);\n\n      gesture.on(\"pinch\", pinch);\n      gesture.on(\"pinchin\", pinchin);\n      gesture.on(\"pinchout\", pinchout);\n\n      gesture.on(\"press\", press);\n\n      gesture.on(\"rotate\", rotate);\n\n      gesture.on(\"swipe\", swipe);\n      gesture.on(\"swipeleft\", swipeLeft);\n      gesture.on(\"swiperight\", swipeRight);\n      gesture.on(\"swipeup\", swipeUp);\n      gesture.on(\"swipedown\", swipeDown);\n\n      gesture.on(\"tap\", tap);\n\n      // tapOutSide\n      removes.push(createEventListener(document, \"pointerdown\", tapOutSide));\n      // if (isSupportTouch()) {\n      //   removes.push(createEventListener(document, \"touchstart\", tapOutSide));\n      // } else {\n      //   removes.push(createEventListener(document, \"mousedown\", tapOutSide));\n      // }\n\n      // transition + animation\n      removes.push(createEventListener(el, \"transitionstart\", transitionstart));\n      removes.push(createEventListener(el, \"transitionend\", transitionend));\n      removes.push(createEventListener(el, \"animationstart\", animationstart));\n      removes.push(createEventListener(el, \"animationend\", animationend));\n\n      // resize\n      const end = await resize(el, (rect) => {\n        _rect = rect;\n        eb.emit(\"resize\", rect);\n      });\n      removes.push(end);\n\n      // mousePoint 鼠标相对el的位置\n      removes.push(\n        pressDownMove(this, {\n          start: (e) => {\n            ump.setStartMousePoint(getMousePositionInElement(e, el), true);\n          },\n          move: (e) => {\n            ump.setCurrentMousePoint(getMousePositionInElement(e, el));\n          },\n          end: (e) => {\n            ump.setCurrentMousePoint(getMousePositionInElement(e, el), false);\n          }\n        })\n      );\n    },\n    end: () => {\n      eb.removeAllListeners();\n\n      removes.forEach((r) => r());\n      removes = [];\n\n      gesture.off(\"pan\", pan);\n      gesture.off(\"panstart\", panStart);\n      gesture.off(\"panmove\", panMove);\n      gesture.off(\"panend\", panEnd);\n      gesture.off(\"pancancel\", panCancel);\n      gesture.off(\"panleft\", panLeft);\n      gesture.off(\"panright\", panRight);\n      gesture.off(\"panup\", panUp);\n      gesture.off(\"pandown\", panDown);\n\n      gesture.off(\"pinch\", pinch);\n      gesture.off(\"pinchin\", pinchin);\n      gesture.off(\"pinchout\", pinchout);\n\n      gesture.off(\"press\", press);\n\n      gesture.off(\"rotate\", rotate);\n\n      gesture.off(\"swipe\", swipe);\n      gesture.off(\"swipeleft\", swipeLeft);\n      gesture.off(\"swiperight\", swipeRight);\n      gesture.off(\"swipeup\", swipeUp);\n      gesture.off(\"swipedown\", swipeDown);\n\n      gesture.off(\"tap\", tap);\n    }\n  };\n}\n\ntype Options = {\n  start?: (e: MousePointEvent) => void;\n  move?: (e: MousePointEvent) => void;\n  end?: (e: MousePointEvent) => void;\n};\n\nexport function pressDownMove(\n  controller: ElementEventBusController,\n  options?: Options\n): () => void {\n  return pressDownMoveWithPointer(controller, options);\n  // if (isSupportTouch()) {\n  //   return pressDownMoveWithTouch(controller, options);\n  // } else {\n  //   return pressDownMoveWithMouse(controller, options);\n  // }\n}\n\nexport function pressDownMoveWithPointer(\n  controller: ElementEventBusController,\n  options?: Options\n): () => void {\n  const eb = controller.eb;\n\n  const start = (e: PointerEvent) => {\n    // e.preventDefault();\n    // e.stopPropagation();\n    eb.on(\"pointerMove\", move);\n    eb.on(\"pointerUp\", end);\n    eb.on(\"pointerCancel\", end);\n    options?.start?.(e);\n  };\n\n  const end = (e: PointerEvent) => {\n    // e.preventDefault();\n    // e.stopPropagation();\n    eb.off(\"pointerMove\", move);\n    eb.off(\"pointerUp\", end);\n    eb.off(\"pointerCancel\", end);\n    options?.end?.(e);\n  };\n\n  const move = (e: PointerEvent) => {\n    // e.preventDefault();\n    // e.stopPropagation();\n    options?.move?.(e);\n  };\n\n  eb.on(\"pointerDown\", start);\n\n  return () => eb.off(\"pointerDown\", start);\n}\n\nexport function pressDownMoveWithMouse(\n  controller: ElementEventBusController,\n  options?: Options\n): () => void {\n  const eb = controller.eb;\n\n  const start = (e: MouseEvent) => {\n    // e.preventDefault();\n    // e.stopPropagation();\n    document.addEventListener(\"mousemove\", move, false);\n    document.addEventListener(\"mouseup\", end, false);\n    options?.start?.(e);\n  };\n\n  const end = (e: MouseEvent) => {\n    // e.preventDefault();\n    // e.stopPropagation();\n    document.removeEventListener(\"mousemove\", move, false);\n    document.removeEventListener(\"mouseup\", end, false);\n    options?.end?.(e);\n  };\n\n  const move = (e: MouseEvent) => {\n    // e.preventDefault();\n    // e.stopPropagation();\n    options?.move?.(e);\n  };\n\n  eb.on(\"mouseDown\", start);\n\n  return () => eb.off(\"mouseDown\", start);\n}\n\nexport function pressDownMoveWithTouch(\n  controller: ElementEventBusController,\n  options?: Options\n): () => void {\n  const eb = controller.eb;\n\n  const start = (e: TouchEvent) => {\n    // e.preventDefault();\n    // e.stopPropagation();\n    eb.on(\"touchMove\", move);\n    eb.on(\"touchEnd\", end);\n    eb.on(\"touchCancel\", end);\n    const touch = e.changedTouches[0]; // first touch\n    options?.start?.(touch);\n  };\n\n  const end = (e: TouchEvent) => {\n    // e.preventDefault();\n    // e.stopPropagation();\n    eb.off(\"touchMove\", move);\n    eb.off(\"touchEnd\", end);\n    eb.off(\"touchCancel\", end);\n    const touch = e.changedTouches[0]; // first touch\n    options?.end?.(touch);\n  };\n\n  const move = (e: TouchEvent) => {\n    // e.preventDefault();\n    // e.stopPropagation();\n    const touch = e.changedTouches[0]; // first touch\n    options?.move?.(touch);\n  };\n\n  eb.on(\"touchStart\", start);\n\n  return () => eb.off(\"touchStart\", start);\n}\n","import { type AnyElement, toCamel } from \"@zyzgroup/core-common\";\n\nexport function dataset(el: AnyElement): Record<string, any>; // read all\nexport function dataset(el: AnyElement, key: string): string; // read single\nexport function dataset(el: AnyElement, key: string, value: string): void; // write single\nexport function dataset(el: AnyElement, key: Record<string, any>): void; // write all\nexport function dataset(\n  el: AnyElement,\n  key?: string | Record<string, any>,\n  value?: string\n) {\n  if (typeof key === \"string\") {\n    key = toCamel(key);\n  }\n  if ((typeof key === \"string\" || key === undefined) && value === undefined) {\n    // read\n    const data = Object.assign({}, el.dataset);\n    Object.keys(data).forEach((key) => {\n      if (data[key]?.startsWith(\"[\") || data[key]?.startsWith(\"{\")) {\n        try {\n          data[key] = JSON.parse(data[key] || \"\");\n        } catch (e) {\n          //\n        }\n      }\n    });\n    return typeof key === \"string\" ? data[key] : data;\n  } else {\n    // write\n    let obj: Record<string, any> = {};\n    if (typeof key == \"object\") {\n      obj = key;\n    } else if (typeof key == \"string\") {\n      obj[key] = value;\n    }\n    Object.entries(obj).forEach(([name, val]) => {\n      if (val) {\n        el.dataset[name] = val instanceof Object ? JSON.stringify(val) : val;\n      } else {\n        delete el.dataset[name];\n      }\n    });\n  }\n}\n\nexport function atomRemoveDataset(el: AnyElement, key: string) {\n  key.split(/[,\\s]+/).forEach((k) => {\n    if (k.trim() != \"\") {\n      delete el.dataset[k.trim()];\n    }\n  });\n}\n","import { Observable } from \"rxjs\";\nimport { type AnyElement } from \"@zyzgroup/core-common\";\n\n// 监控 DOM 改变\nexport function mutation$(\n  el: AnyElement | Document,\n  options: MutationObserverInit = {\n    attributes: true,\n    childList: true,\n    subtree: true\n  }\n): Observable<MutationRecord[]> {\n  return new Observable((observer) => {\n    const mo = new MutationObserver(\n      (records: MutationRecord[], _: MutationObserver) => {\n        // for (const mutation of records) {\n        //   if (mutation.type === \"childList\") {\n        //     mutation.addedNodes.forEach((node) => {\n        //       if (node.id === \"targetElement\") {\n        //         // 目标元素已经插入到 DOM 中\n        //         o.disconnect(); // 停止监听\n        //       }\n        //     });\n        //   }\n        // }\n        observer.next(records);\n      }\n    );\n    mo.observe(el, options);\n    return () => {\n      mo.disconnect(); // 停止监听\n    };\n  });\n}\n\n// 目标元素是否已经插入到 DOM\nexport function waitElementAddedInDOM(\n  parent: AnyElement | Document,\n  child: AnyElement\n): Promise<boolean> {\n  return new Promise((resolve) => {\n    const observer = new MutationObserver((mutationsList, observer) => {\n      for (const mutation of mutationsList) {\n        if (mutation.type === \"childList\") {\n          mutation.addedNodes.forEach((node) => {\n            if (node.isEqualNode(child)) {\n              observer.disconnect();\n              resolve(true);\n            }\n          });\n        }\n      }\n    });\n    observer.observe(parent, { childList: true });\n  });\n}\n","import { type AnyElement } from \"@zyzgroup/core-common\";\nimport { Observable } from \"rxjs\";\n\n// 跟踪元素的位置变化，如果 被观察元素 占 父元素 的 threshold 不变，则不会触发\nexport function intersection$(\n  el: AnyElement,\n  options: IntersectionObserverInit = {\n    root: null // default browser viewport 必须是目标元素的父级元素\n    // threshold: 0.5, // 表示重叠面积占被观察者的比例，从 0 - 1 取值，1 表示完全被包含\n  }\n): Observable<IntersectionObserverEntry> {\n  return new Observable((observer) => {\n    const io = new IntersectionObserver(\n      (entries: IntersectionObserverEntry[], _: IntersectionObserver) => {\n        // entry.time; // 触发的时间\n        // entry.rootBounds; // 视窗位置矩形\n        // entry.boundingClientRect; // 被观察者的位置矩形\n        // entry.intersectionRect; // 重叠区域的位置矩形\n        // entry.intersectionRatio; // 重叠区域占被观察者面积的比例（被观察者不是矩形时也按照矩形计算）\n        // entry.target; // 被观察者\n        if (entries.length) {\n          // const entry = entries.find(\n          //   // browsers can report isIntersecting as true, but intersectionRatio as 0, when something very slowly enters the viewport\n          //   (e, i) => e.isIntersecting\n          //   // &&\n          //   // e.intersectionRatio >=\n          //   //   (options?.threshold\n          //   //     ? typeof options.threshold == \"number\"\n          //   //       ? options.threshold\n          //   //       : options.threshold[i]\n          //   //     : 0.5)\n          // );\n          const entry = entries[entries.length - 1];\n          if (entry) {\n            observer.next(entry);\n          }\n        }\n      },\n      options\n    );\n    io.observe(el);\n    return () => {\n      io.unobserve(el);\n      io.disconnect();\n    };\n  });\n}\n","import { Observable, distinctUntilChanged, map, startWith } from \"rxjs\";\nimport { type AnyElement } from \"@zyzgroup/core-common\";\nimport { intersection$ } from \"./intersection\";\nimport { scroll$, getViewport } from \"./elementEvents\";\n\nfunction visibleNotGood$(\n  el: AnyElement,\n  options?: { root?: HTMLElement }\n): Observable<boolean> {\n  return scroll$().pipe(\n    startWith(null),\n    map(() => {\n      const { width, height } =\n        options?.root?.getBoundingClientRect() || getViewport();\n      const { top, left, right, bottom } = el.getBoundingClientRect();\n      return (\n        ((top >= 0 && top <= height) || (bottom >= 0 && bottom <= height)) &&\n        ((left >= 0 && left <= width) || (right >= 0 && right <= width))\n      );\n    }),\n    distinctUntilChanged()\n  );\n}\n\nexport function visible$(\n  el: AnyElement,\n  options?: {\n    threshold?: number; // 表示重叠面积占被观察者的比例，从 0 - 1 取值，1 表示完全被包含\n    root?: HTMLElement; // 必须是目标元素的父级元素\n  }\n): Observable<boolean> {\n  const threshold = options?.threshold ?? 0.5;\n  return intersection$(el, {\n    threshold,\n    root: options?.root\n  }).pipe(\n    map((entry: IntersectionObserverEntry) => {\n      // browsers can report isIntersecting as true, but intersectionRatio as 0, when something very slowly enters the viewport\n      return entry.isIntersecting && entry.intersectionRatio >= threshold;\n    }),\n    distinctUntilChanged()\n  );\n}\n","import {\n  createSignal,\n  createTimestampValue,\n  TimestampValue,\n  type TimestampValueOptions\n} from \"@zyzgroup/core-common\";\nimport { beforeUnload$ } from \"./dom\";\n\n// sessionStorage 存储会话数据\n// sessionStorage 只能被当前标签页访问\n// 即便是相同域名下的两个页面，只要它们 不在同一个浏览器窗口中 打开，那么它们的 Session Storage 内容也无法共享\n\n// 为什么 sessionStorage 在不同 Tab 页不共享？\n// 这是由 W3C 标准明确设计的,sessionStorage 的设计初衷就是为了“隔离”，而不是“共享”。\n// 在 sessionStorage 的语境下，“Session（会话）”的定义范围被严格限制在当前标签页（Tab）或当前窗口（Window）中。\n// LocalStorage 的范围： 同源（Same Origin） + 浏览器实例，只要域名一样，所有 Tab 共享数据\n// SessionStorage 的范围： 同源 + 顶级浏览上下文（Top-level Browsing Context） , 即：一个 Tab 就是一个独立的 Session\n\n// 设计目的：为了“多窗口并行操作”, 防止多窗口之间的数据干扰\n\n// 举个场景例子：假设你在一个订票网站上，同时打开了两个 Tab：\n// Tab A： 正在帮张三买去北京的票\n// Tab B： 正在帮李四买去上海的票\n\n// 如果 sessionStorage 是跨 Tab 共享的：\n// 你在 Tab A 选择了“北京”，存入 Storage\n// 你在 Tab B 选择了“上海”，数据被覆盖了\n// 回到 Tab A 点击提交，结果系统读取的是最新的“上海”，导致张三买错票\n\n// 因为有了 sessionStorage 的隔离特性：\n// Tab A 和 Tab B 拥有完全独立的存储空间，互不干扰\n// 这使得用户可以在同一个网站上同时进行多个独立的业务流程，而不用担心状态串台\n\n// 关闭 浏览器 或 标签页, 清除 sessionStorage\n\n// 刷新 标签页 或 恢复浏览器页面, 保留 sessionStorage\n\n// 复制标签页（浏览器标签右键菜单中的复制标签页，非复制 URL）或者在脚本中使用 window.open() 打开同源页面 时会复制当前 sessionStorage 到新的标签页中\n// 但是！ 这仅仅是拷贝（Copy） ，不是同步（Sync）\n// 复制完成后，两个 Tab 的数据就断开了联系, 你在新 Tab 修改数据，旧 Tab 不会变；反之亦然。\n\nexport function createSessionStorage(\n  key: string | symbol,\n  options?: TimestampValueOptions\n) {\n  const k = typeof key == \"string\" ? key : key.toString();\n\n  // read\n  const getInDom = () => {\n    try {\n      const fromLocal = window.sessionStorage.getItem(k);\n      if (fromLocal) {\n        return JSON.parse(fromLocal);\n      }\n    } catch (e) {\n      // do nothing\n    }\n    return undefined;\n  };\n\n  // write or remove\n  const setInDom = (timestampValue: TimestampValue) => {\n    try {\n      if (typeof timestampValue.value != \"undefined\") {\n        window.sessionStorage.setItem(k, JSON.stringify(timestampValue));\n      } else {\n        window.sessionStorage.removeItem(k);\n      }\n    } catch (e) {\n      // do nothing\n    }\n  };\n\n  return {\n    get: () => createTimestampValue(getInDom(), options).get().value,\n    set: (v: any) => setInDom(createTimestampValue(getInDom(), options).set(v))\n  };\n}\n\nexport function clearSessionStorage() {\n  window.sessionStorage.clear();\n}\n\n// BroadcastChannel 专门用于同源下的跨上下文通信（Tab、Iframe、Worker）\n// // Tab A\n// const channel = createBroadcastChannel('app_channel');\n// channel.postMessage('Hello Tab B');\n// // Tab B\n// const channel = createBroadcastChannel('app_channel');\n// channel.subscribe((msg) => {\n//   console.log(msg); // 收到 'Hello Tab B'\n// });\nexport function createBroadcastChannel<T = any>(key: string) {\n  const bc = new BroadcastChannel(key);\n\n  const subscription = beforeUnload$().subscribe(() => {\n    bc.close();\n    subscription.unsubscribe();\n  });\n\n  const signal = createSignal<[T]>();\n\n  // 接收数据\n  bc.onmessage = (ev: MessageEvent<T>) => {\n    signal.emit(ev.data);\n  };\n\n  return {\n    postMessage: (action: any) => {\n      bc.postMessage(action);\n    },\n    subscribe: signal.subscribe\n  };\n}\n","import { Observable } from \"rxjs\";\nimport { distinctUntilChanged, map, startWith } from \"rxjs/operators\";\nimport { createSessionStorage } from \"../createSessionStorage\";\nimport { clamp, State } from \"@zyzgroup/core-common\";\nimport { createEventListener$ } from \"./createEventListener\";\nimport { mutation$ } from \"./mutation\";\n\nexport function location$(): Observable<Location> {\n  return mutation$(document).pipe(\n    map(() => location), // const { pathname, search } = location;\n    startWith(location)\n  );\n}\n\nexport function urlChange$(): Observable<string> {\n  return location$().pipe(\n    map((location) => location.href),\n    startWith(location.href),\n    distinctUntilChanged()\n  );\n}\n\nexport function hashChange$(): Observable<string> {\n  return createEventListener$(window, \"hashchange\").pipe(\n    map((hashEvent: HashChangeEvent) =>\n      (hashEvent.target as Window).location.hash.replace(\"#\", \"\")\n    ),\n    startWith(window.location.hash.replace(\"#\", \"\")),\n    distinctUntilChanged()\n  );\n}\n\n// 浏览器维护一个“历史记录栈”，每访问一个页面或状态，就像往栈里“压入”一条记录 = 浏览器的“时间机”\n// - 用户点击浏览器的 前进/后退 按钮，实际上就是在这个栈里移动指针\n// - 当前页面 = 栈中的当前指针位置\n// - history.back() / history.go(-1) = 指针向前一个页面移动，相当于用户点击浏览器“后退”按钮\n// - history.forward() / history.go(1) = 指针向下一个页面移动，相当于用户点击浏览器“前进”按钮\n\n// window.history.pushState(state, title = \"\", url)\n// - 在不刷新页面的情况下向历史记录栈中“压入新状态”\n// - URL 地址栏更新为 url\n// - 页面内容不会自动刷新\n// - pushState 不会触发 popstate\n// - 如果有多个源头对同一个url进行 pushState 操作，浏览器会合并多个源头的 state\n\n// window.history.replaceState(state, title = \"\", url)\n// - 在不刷新页面的情况下向历史记录栈中“替换新状态”\n// - 页面内容不会自动刷新\n// - replaceState 不会触发 popstate\n\n// SPA 历史管理示意图\n// 历史栈: [page1] -> [page2] -> [page3]\n//           ↑       ↑        ↑\n//           |       |        |\n//         当前指针   pushState   pushState\n// 操作流程：\n// 1. 初始状态：当前指针指向 page1\n// 2. window.history.pushState({page:2}, \"\", \"/page2\")\n//    -> 栈中新增 page2，指针移动到 page2\n//    -> 不触发 popstate\n// 3. window.history.pushState({page:3}, \"\", \"/page3\")\n//    -> 栈中新增 page3，指针移动到 page3\n//    -> 不触发 popstate\n// 4. window.history.back()\n//    -> 指针回到 page2\n//    -> 触发 popstate, event.state = {page:2}\n// 5. window.history.back()\n//    -> 指针回到 page1\n//    -> 触发 popstate, event.state = {page:1}\n// 6. window.history.forward()\n//    -> 指针前进到 page2\n//    -> 触发 popstate, event.state = {page:2}\n\n// nameInState = state 中用于判断的 当前url 的字段名称，例如 vue-router 的 pop-state = {\n//   back: \"/\",\n//   current: \"/lot?n=739\",\n//   forward: \"/result\",\n//   position: 18,\n//   replaced: false,\n//   scroll: {left: 0, top: 0}\n// }\n// 监听：浏览器历史栈指针变化：\n// - 用户点击浏览器 后退/前进 按钮\n// - 或 history.back() / history.forward() / history.go(-1) / history.go(1) 时触发的 popstate 事件\nexport function popStateChange$(nameInState = \"current\"): Observable<any> {\n  return createEventListener$(window, \"popstate\").pipe(\n    // 注意：当页面刷新时，history.state（最近一次 pushState/replaceState 的 state对象） 可能为 null\n    // 即：浏览器可能不会自动恢复 state 对象\n    // startWith(null),\n    map((popStateEvent: PopStateEvent) => popStateEvent.state || {}),\n    map((state) => ({\n      ...state,\n      // pop-state 转换为 标准输出-state\n      [nameInState]:\n        state[nameInState] ||\n        window.location.pathname + window.location.search + window.location.hash\n    })),\n    distinctUntilChanged((a, b) => a[nameInState] === b[nameInState])\n  );\n  // window.dispatchEvent(new PopStateEvent(\"name\", { state }));\n}\n\n// 问题现象描述\n// 1. 用户在页面 A → 页面 B → 页面 C 进行了多次导航\n// 2. 浏览器刷新页面 C\n// 3. 浏览器的 返回按钮 仍可用，说明浏览器的原生 session history 还在\n// 4. 但是在本地维护的访问记录（比如 JS 的栈或历史数组）被清空了\n// 5. 结果导致 SPA 的页面切换动画逻辑认为是 push 操作（forward），而不是 back 操作，所以动画不符合预期\n// 解决方案：动画方向应基于 浏览器历史记录，而非内存栈\n\nexport type FeRouteDirection = \"forward\" | \"backward\" | \"keep\";\n\n/**\n *\n * @param nameInState state 中用于判断的 当前url 的字段名称\n * @param alreadyPushState 是否第三方库已自动 pushState，例如 Vue-Router 已自动操作 pushState\n * @returns\n */\nexport function createFeRoute(\n  options: { nameInState: string; alreadyPushState?: boolean } = {\n    nameInState: \"current\",\n    alreadyPushState: true\n  }\n) {\n  const nameInState = options.nameInState;\n  const alreadyPushState =\n    typeof options.alreadyPushState == \"boolean\"\n      ? options.alreadyPushState\n      : true;\n\n  type FeRouteState = { [nameInState]: string } & State;\n\n  // 历史记录内存栈 初始化为 浏览器历史记录\n  const { get: getHistoryInSession, set: setHistoryInSession } =\n    createSessionStorage(\"fe-route-history\");\n  const history: FeRouteState[] = getHistoryInSession() || [];\n\n  // 当前历史记录栈指针\n  const { get: getHistoryIndexInSession, set: setHistoryIndexInSession } =\n    createSessionStorage(\"fe-route-history-index\");\n  const initIndex = getHistoryIndexInSession();\n  let currentIndex =\n    typeof initIndex == \"number\" ? initIndex : history.length - 1;\n\n  function findIndexInHistory(state: FeRouteState) {\n    const index = history.findIndex(\n      (s) => s[nameInState] === state[nameInState]\n    );\n    return index;\n  }\n\n  // 路由变化\n  const route: {\n    currentIndex: number;\n    to?: string;\n    from?: string;\n    direction?: FeRouteDirection;\n    delta?: number;\n  } = { currentIndex };\n\n  function setCurrent(index: number) {\n    // console.log(\"before currentIndex: \", currentIndex);\n    index = clamp(index, -1, history.length - 1);\n    if (currentIndex < 0) {\n      // 无历史记录，第一次进入\n      route.direction = \"keep\";\n      route.delta = 0;\n    } else {\n      if (index < currentIndex) {\n        route.direction = \"backward\";\n      } else if (index > currentIndex) {\n        route.direction = \"forward\";\n      } else {\n        route.direction = \"keep\";\n      }\n      route.delta = index - currentIndex;\n    }\n    route.from = route.to;\n    route.to = history[index]?.[nameInState];\n    currentIndex = index;\n    route.currentIndex = currentIndex;\n    setHistoryIndexInSession(currentIndex);\n    // console.log(\"after currentIndex: \", currentIndex);\n  }\n\n  // 初始化\n  setCurrent(currentIndex);\n\n  function pushHistory(state: FeRouteState) {\n    history.push(state);\n    setHistoryInSession(history);\n    setCurrent(history.length - 1);\n  }\n  function replaceHistory(state: FeRouteState) {\n    const index = findIndexInHistory(state);\n    if (index >= 0) {\n      history.splice(index, 1, state);\n      setHistoryInSession(history);\n    } else {\n      pushHistory(state);\n    }\n  }\n  function pushState(url: string, origin: State) {\n    const state = { ...origin, [nameInState]: url };\n    window.history.pushState(state, \"\", url);\n    pushHistory(state);\n  }\n  function replaceState(url: string, origin: State) {\n    const state = { ...origin, [nameInState]: url };\n    window.history.replaceState(state, \"\", url);\n    replaceHistory(state);\n  }\n\n  // 前进或后退\n  function gotoHistory(state: FeRouteState, isPushedState = alreadyPushState) {\n    const index = findIndexInHistory(state);\n    if (index < 0) {\n      // 如果栈中没有，说明是 前进 或 刷新 或 直接访问URL，插入栈\n      if (currentIndex >= 0) {\n        // 与浏览器行为保持一致：删除部分记录\n        history.splice(currentIndex + 1);\n        setHistoryInSession(history);\n      }\n      isPushedState ? pushHistory(state) : pushState(state[nameInState], state);\n      return;\n    }\n    if (index == currentIndex) {\n      // 已是当前，忽略\n      return;\n    }\n    // 后退\n    // 与浏览器行为保持一致：不删除记录\n    setCurrent(index);\n  }\n\n  const popstate$ = popStateChange$().subscribe((state) => {\n    // console.log(\"popstate\", state);\n    // 前进或后退\n    gotoHistory(state, true);\n  });\n\n  return {\n    history,\n    route,\n    // 统一对外接口：前进或后退\n    // 注意与 popstate$ 的前后调用顺序\n    navigate: (url: string, origin: State) => {\n      gotoHistory({ ...origin, [nameInState]: url }, alreadyPushState);\n    },\n    go(delta: number) {\n      window.history.go(delta);\n    },\n    back() {\n      window.history.back();\n    },\n    forward() {\n      window.history.forward();\n    },\n    destroy: () => {\n      popstate$.unsubscribe();\n    }\n  };\n}\n","import { Observable } from \"rxjs\";\nimport { distinctUntilChanged, map, startWith } from \"rxjs/operators\";\nimport { createEventListener$ } from \"./createEventListener\";\n\n// (min-width: 600px)\n// (prefers-reduced-motion: reduce)\n// (prefers-color-scheme: light)\n// (prefers-color-scheme: dark)\nexport function matchMedia$(\n  query = \"(prefers-color-scheme: dark)\"\n): Observable<boolean> {\n  const mediaQueryList = window.matchMedia(query);\n  return createEventListener$(mediaQueryList, \"change\").pipe(\n    map((e: MediaQueryListEvent) => e.matches),\n    startWith(mediaQueryList.matches),\n    distinctUntilChanged()\n  );\n}\n","import { Observable, asyncScheduler } from \"rxjs\";\nimport { map, subscribeOn } from \"rxjs/operators\";\nimport { compareVersion } from \"@zyzgroup/core-common\";\nimport { injectStyle } from \"./style\";\nimport { resize$ } from \"./resize\";\n\nlet isInjected = false;\nfunction inject() {\n  if (isInjected) {\n    return;\n  }\n  isInjected = true;\n  // <meta name=\"viewport\" content=\"viewport-fit=cover\" />\n  // iPhoneX 可能有问题\n  // 注意注入时：--xxx:后面不要有空格\n  // if (isIOS() && compareVersion(getOperatingSystemVersion(), \"11.2\") < 0) {\n  //   // iOS < 11.2\n  //   injectStyle(`\n  //     :root {\n  //       --sat:constant(safe-area-inset-top, 0px);\n  //       --sar:constant(safe-area-inset-right, 0px);\n  //       --sab:constant(safe-area-inset-bottom, 0px);\n  //       --sal:constant(safe-area-inset-left, 0px);\n  //     }\n  //     :host {\n  //       --sat:constant(safe-area-inset-top, 0px);\n  //       --sar:constant(safe-area-inset-right, 0px);\n  //       --sab:constant(safe-area-inset-bottom, 0px);\n  //       --sal:constant(safe-area-inset-left, 0px);\n  //     }\n  //   `);\n  // } else {\n  // iOS > 11.2\n  injectStyle(`\n    :root {\n      --sat:env(safe-area-inset-top, 0px);\n      --sar:env(safe-area-inset-right, 0px);\n      --sab:env(safe-area-inset-bottom, 0px);\n      --sal:env(safe-area-inset-left, 0px);\n    }\n    :host {\n      --sat:env(safe-area-inset-top, 0px);\n      --sar:env(safe-area-inset-right, 0px);\n      --sab:env(safe-area-inset-bottom, 0px);\n      --sal:env(safe-area-inset-left, 0px);\n    }\n  `);\n  // }\n}\n\n// inject();\n\nexport function safeArea$(): Observable<{\n  bottom: string;\n  top: string;\n  right: string;\n  left: string;\n}> {\n  inject();\n  return resize$(document.documentElement).pipe(\n    subscribeOn(asyncScheduler), // next tick\n    map(() => {\n      const declaration = getComputedStyle(document.documentElement);\n      return {\n        bottom: declaration.getPropertyValue(\"--sab\"),\n        top: declaration.getPropertyValue(\"--sat\"),\n        right: declaration.getPropertyValue(\"--sar\"),\n        left: declaration.getPropertyValue(\"--sal\")\n      };\n    })\n  );\n}\n","import { Observable } from \"rxjs\";\n\nexport function coords$(\n  options: PositionOptions = {\n    enableHighAccuracy: true, // 使用高精度模式\n    timeout: 5000, // 设置最大超时时间\n    maximumAge: 0 // 每次都获取新的位置\n  }\n): Observable<{\n  longitude: number;\n  latitude: number;\n}> {\n  return new Observable((observer) => {\n    if (!(\"geolocation\" in navigator)) {\n      return observer.error(\"navigator.geolocation is not available.\");\n    }\n    let watchId: number;\n    new Promise<void>((resolve, reject) => {\n      navigator.geolocation.getCurrentPosition(\n        (position) => {\n          observer.next({\n            longitude: position.coords.longitude,\n            latitude: position.coords.latitude\n          });\n          resolve();\n        },\n        (error) => {\n          reject(error);\n        }\n      );\n    })\n      .then(() => {\n        watchId = navigator.geolocation.watchPosition(\n          (position) => {\n            observer.next({\n              longitude: position.coords.longitude,\n              latitude: position.coords.latitude\n            });\n          },\n          (error) => {\n            observer.error(error);\n          },\n          options\n        );\n      })\n      .catch((error) => {\n        observer.error(error);\n      });\n    return () => {\n      if (typeof watchId == \"number\") {\n        navigator.geolocation.clearWatch(watchId);\n      }\n    };\n  });\n}\n","/* eslint-disable no-case-declarations */\nimport { DOMParse } from \"../dom/DOMParse\";\nimport { parseCSS } from \"../dom/parseCSS\";\n\n// 合并 DOMParseListeners\ninterface DOMParseListeners {\n  result(items: Record<string, string>[]): void;\n}\n\nexport class SVGParse extends DOMParse {\n  currentItem: Record<string, string> = {};\n  items: Record<string, string>[] = [];\n\n  groups: Record<string, string>[] = [];\n\n  globalStyles: Record<string, string[]> = {};\n\n  grad: Record<string, any> = {};\n  idtops: Record<string, string> = {};\n  text = \"\";\n\n  constructor(sourceString: string) {\n    super(sourceString);\n\n    this.on(\"tag\", (tagname: string, attrs: Record<string, string>) => {\n      this.text = \"\";\n      this.currentItem = { type: tagname };\n      switch (tagname) {\n        case \"g\":\n          this.groups.push(this.currentItem);\n          break;\n      }\n      this.processAttrs(tagname, attrs);\n    });\n\n    this.on(\"text\", (text: string) => {\n      if (this.currentItem.type == \"style\") {\n        try {\n          const parsedCSS = parseCSS(text);\n          for (const rule of parsedCSS.stylesheet.rules) {\n            for (const declaration of rule.declarations) {\n              for (const selector of rule.selectors) {\n                this.globalStyles[selector] = this.globalStyles[selector] || [];\n                this.globalStyles[selector].push(\n                  `${declaration.property}:${declaration.value}`\n                );\n              }\n            }\n          }\n          // console.log(this.globalStyles);\n        } catch (e) {\n          console.error(\"CAN'T parse css text: \" + text);\n        }\n        return;\n      }\n      this.text += text;\n    });\n\n    this.on(\"/tag\", (tagname: string, attrs: Record<string, string>) => {\n      /// *.attrend\n      let i = this.groups.length;\n      while (i--) {\n        if (this.groups[i] != this.currentItem) {\n          let groupTransform = \"\";\n          let groupStyle = \"\";\n          for (const key in this.groups[i]) {\n            if (key == \"transform\") {\n              groupTransform = this.groups[i].transform as string;\n            } else if (\n              key == \"class\" &&\n              this.globalStyles[\".\" + this.groups[i][key]]\n            ) {\n              groupStyle =\n                this.globalStyles[\".\" + this.groups[i][key]].join(\";\") +\n                \";\" +\n                groupStyle;\n            } else if (\n              key == \"id\" &&\n              this.globalStyles[\"#\" + this.groups[i][key]]\n            ) {\n              groupStyle =\n                this.globalStyles[\"#\" + this.groups[i][key]].join(\";\") +\n                \";\" +\n                groupStyle;\n            } else if (typeof this.currentItem[key] === \"undefined\") {\n              // 除 transform 和 style , 使用group属性\n              this.currentItem[key] = this.groups[i][key];\n            }\n          }\n          if (typeof this.currentItem.transform === \"undefined\") {\n            this.currentItem.transform = groupTransform;\n          } else {\n            this.currentItem.transform += \" \" + groupTransform;\n          }\n          /// add group style\n          if (typeof this.currentItem.style === \"undefined\") {\n            this.currentItem.style = groupStyle;\n          } else {\n            this.currentItem.style = groupStyle + this.currentItem.style;\n          }\n          /// add self global style\n          if (\n            this.currentItem.class &&\n            this.globalStyles[\".\" + this.currentItem.class]\n          ) {\n            this.currentItem.style =\n              this.globalStyles[\".\" + this.currentItem.class].join(\";\") +\n              \";\" +\n              this.currentItem.style;\n          } else if (\n            this.currentItem.id &&\n            this.globalStyles[\"#\" + this.currentItem.id]\n          ) {\n            this.currentItem.style =\n              this.globalStyles[\"#\" + this.currentItem.id].join(\";\") +\n              \";\" +\n              this.currentItem.style;\n          }\n          applyStyle(\n            this.currentItem.style,\n            this.currentItem,\n            SVGAttributeRange\n          );\n        }\n      }\n\n      this.processAttrs(tagname, attrs);\n\n      switch (tagname) {\n        case \"g\":\n          this.groups.pop();\n          break;\n        case \"cirlce\":\n          this.addToItems();\n          break;\n        case \"ellipse\":\n          this.addToItems();\n          break;\n        case \"polygon\":\n          this.addToItems();\n          break;\n        case \"path\":\n          this.addToItems();\n          break;\n        case \"line\":\n          this.addToItems();\n          break;\n        case \"rect\":\n          this.addToItems();\n          break;\n        case \"image\":\n          this.addToItems();\n          break;\n        case \"text\":\n          this.currentItem.text = this.text;\n          this.currentItem[\"text-anchor\"] =\n            this.currentItem[\"text-anchor\"] || \"start\";\n          this.addToItems();\n          break;\n      }\n    });\n\n    this.on(\"finish\", () => {\n      this.emit(\"result\", this.items);\n    });\n  }\n\n  parse() {\n    super.parse();\n    return this.items;\n  }\n\n  processAttrs(tagname: string, attrs: Record<string, string>) {\n    let s: any[] = [];\n    let stop: any;\n\n    switch (tagname) {\n      case \"svg\":\n        let width = \"\";\n        let height = \"\";\n        if (attrs.width && attrs.height) {\n          width = attrs.width;\n          height = attrs.height;\n        } else if (attrs.viewBox) {\n          const viewBoxs = attrs.viewBox.split(/\\s+/gi);\n          if (viewBoxs.length == 4) {\n            width = String(parseFloat(viewBoxs[2]) - parseFloat(viewBoxs[0]));\n            height = String(parseFloat(viewBoxs[3]) - parseFloat(viewBoxs[1]));\n          }\n        }\n        if (width && height) {\n          this.items.push({\n            type: \"viewbox\",\n            width,\n            height\n          });\n        }\n        break;\n      case \"line\":\n        if (\n          typeof attrs.x1 == \"number\" &&\n          typeof attrs.y1 == \"number\" &&\n          typeof attrs.x2 == \"number\" &&\n          typeof attrs.y2 == \"number\"\n        ) {\n          this.currentItem.path =\n            \"M\" + [attrs.x1, attrs.y1, attrs.x2, attrs.y2];\n        }\n        break;\n      case \"stop\":\n        stop = {};\n        if (attrs.style) {\n          applyStyle(attrs.style, stop);\n        }\n        stop.offset = stop.offset || attrs.offset;\n        stop.color = stop[\"stop-color\"] || attrs[\"stop-color\"];\n        stop.opacity = stop[\"stop-opacity\"] || attrs[\"stop-opacity\"];\n        if (~(stop.offset + \"\").indexOf(\"%\")) {\n          stop.offset = parseFloat(stop.offset);\n        } else {\n          stop.offset = parseFloat(stop.offset) * 100;\n        }\n        stop.offset = +stop.offset.toFixed(2);\n        this.grad.stops.push(stop);\n        break;\n      case \"linearGradient\":\n        this.grad.angle = (\n          360 +\n          angle(\n            parseFloat(attrs.x1),\n            parseFloat(attrs.y1),\n            parseFloat(attrs.x2),\n            parseFloat(attrs.y2),\n            parseFloat(attrs.x1) + 100,\n            parseFloat(attrs.y1)\n          )\n        ).toFixed(2);\n        s = [this.grad.angle];\n        for (let i = 0, ii = this.grad.stops.length; i < ii; i++) {\n          stop = this.grad.stops[i];\n          if (i && i != ii - 1) {\n            s.push(stop.color + \":\" + stop.offset);\n          } else {\n            s.push(stop.color);\n          }\n        }\n        this.idtops[this.grad.id] = s.join(\"-\");\n        this.items.forEach((item) => {\n          if (item.fillid == this.grad.id) {\n            item.fill = this.idtops[this.grad.id];\n          }\n        });\n        break;\n      case \"radialGradient\":\n        s = [];\n        for (let i = 0, ii = this.grad.stops.length; i < ii; i++) {\n          stop = this.grad.stops[i];\n          if (i && i != ii - 1) {\n            s.push(stop.color + \":\" + stop.offset);\n          } else {\n            s.push(stop.color);\n          }\n        }\n        this.idtops[this.grad.id] = s.join(\"-\");\n        this.items.forEach((item) => {\n          if (item.fillid == this.grad.id) {\n            item.fill = this.idtops[this.grad.id];\n          }\n        });\n        break;\n    }\n\n    for (const key in attrs) {\n      const value = attrs[key];\n      /// 复制attribute\n      if (SVGAttributeRange.includes(key)) {\n        this.currentItem[key] = value;\n      }\n      if (key === \"id\") {\n        if (this.currentItem.type === \"linearGradient\") {\n          this.grad = {\n            id: key,\n            stops: []\n          };\n        }\n        if (this.currentItem.type === \"radialGradient\") {\n          this.grad = {\n            id: key,\n            stops: []\n          };\n        }\n      }\n      if (key === \"style\") {\n        /// 设置 svg element 样式\n        applyStyle(value, this.currentItem, SVGAttributeRange);\n      }\n      if (key === \"transform\") {\n        this.currentItem.transform =\n          value + (this.currentItem.transform || \" \");\n      }\n      if (key === \"fill\") {\n        const result = value.match(/url\\(#([^)]+)\\)/);\n        if (result) {\n          const id = result[1];\n          this.currentItem.fillid = id;\n          if (this.idtops[id]) {\n            this.currentItem.fill = this.idtops[id];\n          }\n        }\n      }\n      if (key === \"points\") {\n        if (this.currentItem.type == \"polygon\") {\n          this.currentItem.path = \"M\" + value + \"z\";\n        }\n      }\n      if (key === \"d\") {\n        if (this.currentItem.type == \"path\") {\n          this.currentItem.path = value;\n        }\n      }\n      if (key === \"xlink:href\") {\n        if (this.currentItem.type == \"image\") {\n          this.currentItem.src = value;\n        }\n      }\n    }\n  }\n\n  addToItems() {\n    this.items.push(this.currentItem);\n  }\n}\n\nexport default SVGParse;\n\nfunction angle(\n  x1: number,\n  y1: number,\n  x2: number,\n  y2: number,\n  x3?: number,\n  y3?: number\n): number {\n  if (typeof x3 == \"undefined\" || typeof y3 == \"undefined\") {\n    const x = x1 - x2;\n    const y = y1 - y2;\n    if (!x && !y) {\n      return 0;\n    }\n    return (180 + (Math.atan2(-y, -x) * 180) / Math.PI + 360) % 360;\n  } else {\n    return angle(x1, y1, x3, y3) - angle(x2, y2, x3, y3);\n  }\n}\n\nfunction applyStyle(\n  css: string,\n  el: { [index: string]: any },\n  SVGAttributeRange?: string[]\n) {\n  const rules = (css + \"\").split(\";\");\n  const trim = /^\\s+|\\s+$/g;\n  for (let i = 0, ii = rules.length; i < ii; i++) {\n    const pair = rules[i].split(\":\");\n    const key = pair[0].replace(trim, \"\").replace(/[A-Z]/g, function (letter) {\n      return \"-\" + letter.toLowerCase();\n    });\n    if (!SVGAttributeRange || SVGAttributeRange.includes(key)) {\n      el[key] = pair[1].replace(trim, \"\");\n    }\n  }\n}\n\nconst SVGAttributeRange: string[] = [\n  \"id\",\n  \"class\",\n  \"viewBox\",\n  \"width\",\n  \"height\",\n  \"x\",\n  \"y\",\n  \"cx\",\n  \"cy\",\n  \"r\",\n  \"rx\",\n  \"ry\",\n\n  \"cursor\",\n  \"opacity\",\n  \"src\",\n\n  \"fill\",\n  \"fill-opacity\",\n\n  \"stroke\",\n  \"stroke-dasharray\",\n  \"stroke-linecap\",\n  \"stroke-linejoin\",\n  \"stroke-miterlimit\",\n  \"stroke-opacity\",\n  \"stroke-width\",\n\n  \"text-anchor\",\n\n  \"font\",\n  \"font-family\",\n  \"font-size\",\n  \"font-style\",\n  \"font-weight\",\n  \"letter-spacing\"\n];\n","import {\n  Component,\n  MapCacheContext,\n  mergeObjectDeep,\n  Props,\n  scheduleIdle,\n  type ComponentContainer,\n  type VNode\n} from \"@zyzgroup/core-common\";\nimport {\n  atomReadAttributes,\n  atomWriteAttribute,\n  atomRemoveStyle,\n  atomWriteStyle\n} from \"../dom\";\nimport { createSVGElement, createSvgPath } from \"../svg\";\n\n// h(\"div\", { style: \"margin:10px; border:1px solid #ccc; padding:10px;\" }, [\n//   h(\"h2\", {}, `Count: ${count}`),\n//   h(\"button\", { onclick: () => setCount((c) => c + 1) }, \"Increment\"),\n//   h(\n//     \"button\",\n//     { onclick: () => setShowTimer((s) => !s) },\n//     showTimer ? \"Hide Timer\" : \"Show Timer\"\n//   ),\n//   showTimer && h(Timer, { start: 0 }) // 嵌套 Timer 组件\n// ]);\n// 将 tag / Component 转化为 vnode\nexport function h(\n  tag: string | Component,\n  props: Props = {},\n  children: (VNode | boolean)[] | string = [] // 支持条件渲染\n): VNode {\n  if (typeof tag == \"string\") {\n    // HTML原生元素\n    return {\n      tag,\n      props,\n      children:\n        typeof children == \"string\"\n          ? children\n          : children.filter((child) => typeof child != \"boolean\")\n    };\n  } else {\n    // Component\n    return tag(props);\n  }\n}\n\n// 前提：el已挂载到dom上！\nexport function hFromEl(el: ComponentContainer): VNode {\n  const vnode = h(\n    el.tagName,\n    atomReadAttributes(el),\n    Array.from(el.children).map((child) => hFromEl(child as ComponentContainer))\n  );\n  vnode.el = el;\n  return vnode;\n}\n\n// 将 vnode 挂载到 真实dom 上\nexport function mountVNode(\n  vnode: VNode | string,\n  parent: ComponentContainer = document.documentElement\n): ComponentContainer {\n  if (typeof vnode === \"string\") {\n    const el = document.createTextNode(vnode);\n    parent.appendChild(el);\n    // parent.textContent = String(vnode);\n    // parent.innerHTML = String(vnode);\n    return el as unknown as ComponentContainer;\n  }\n  if (vnode.el) {\n    return vnode.el;\n  }\n  // HTML原生元素\n  const el =\n    vnode.tag == \"path\" ? createSvgPath() : document.createElement(vnode.tag);\n  // const el = document.createDocumentFragment() as unknown as ComponentContainer;\n  // 添加属性\n  if (vnode.props) {\n    for (const [k, v] of Object.entries(vnode.props)) {\n      if (k.startsWith(\"on\")) {\n        el.addEventListener(k.slice(2).toLowerCase(), v);\n      } else if (k === \"style\") {\n        atomWriteStyle(el, v);\n      } else {\n        atomWriteAttribute(el, k, v);\n      }\n    }\n  }\n  parent.appendChild(el);\n  vnode.el = el;\n  // 递归\n  if (vnode.children) {\n    if (typeof vnode.children == \"string\") {\n      mountVNode(vnode.children, el);\n    } else {\n      vnode.children.forEach((child) => {\n        mountVNode(child, el);\n      });\n    }\n  }\n  return el;\n}\n\nexport function unmountVNode(\n  vnode: VNode | string,\n  parent: ComponentContainer\n): void {\n  if (typeof vnode === \"string\" || !vnode.el) {\n    return;\n  }\n  if (Array.isArray(vnode.children)) {\n    vnode.children.forEach((child) => {\n      if (!vnode.el) {\n        return;\n      }\n      unmountVNode(child, vnode.el);\n    });\n  }\n  parent.removeChild(vnode.el);\n}\n\n// diff vnode to 真实dom\nexport function patchVNode(\n  oldVNode: VNode,\n  newVNode: VNode,\n  parent?: ComponentContainer\n): void {\n  if (!oldVNode.el || !newVNode.el) {\n    return;\n  }\n  parent =\n    parent ||\n    oldVNode.el.parentElement ||\n    document.body ||\n    document.documentElement;\n  const oldKey = oldVNode.props.key;\n  const newKey = newVNode.props.key;\n  // 不同tag 或 不同el 或 不同key(key列表优化)\n  if (\n    oldVNode.tag !== newVNode.tag ||\n    oldVNode.el !== newVNode.el ||\n    ((newKey || oldKey) && newKey !== oldKey)\n  ) {\n    // 替换节点\n    // unmountVNode(oldVNode, parent);\n    // mountVNode(newVNode, parent);\n    parent.replaceChild(mountVNode(newVNode, parent), oldVNode.el);\n    return;\n  }\n  // 相同\n  const el = (newVNode.el = oldVNode.el);\n  const oldProps = oldVNode.props;\n  const newProps = newVNode.props;\n  // 删除旧属性\n  for (const k in oldProps) {\n    if (!(k in newProps)) {\n      if (k.startsWith(\"on\")) {\n        el.removeEventListener(k.slice(2).toLowerCase(), oldProps[k]);\n      } else {\n        el.removeAttribute(k);\n      }\n    }\n  }\n  // 新增新属性\n  for (const k in newProps) {\n    const oldValue = oldProps[k];\n    const newValue = newProps[k];\n    if (newValue != oldValue) {\n      if (k.startsWith(\"on\")) {\n        const name = k.slice(2).toLowerCase();\n        el.removeEventListener(name, oldValue);\n        el.addEventListener(name, newValue);\n      } else if (k === \"style\") {\n        for (const sk in oldValue) {\n          if (!(sk in newValue)) {\n            atomRemoveStyle(el, sk);\n          }\n        }\n        atomWriteStyle(el, newValue);\n      } else {\n        atomWriteAttribute(el, k, newValue);\n      }\n    }\n  }\n  // 递归\n  const oldChildren = oldVNode.children || [];\n  const newChildren = newVNode.children || [];\n  if (typeof newChildren == \"string\") {\n    el.innerHTML = \"\";\n    mountVNode(newChildren, el);\n  } else {\n    if (typeof oldChildren == \"string\") {\n      el.innerHTML = \"\";\n      newChildren.forEach((item) => {\n        mountVNode(item, el);\n      });\n    } else {\n      const commonMinLength = Math.min(oldChildren.length, newChildren.length);\n      for (let i = 0; i < commonMinLength; i++) {\n        patchVNode(oldChildren[i], newChildren[i], el);\n      }\n      if (newChildren.length > oldChildren.length) {\n        newChildren.slice(oldChildren.length).forEach((item) => {\n          mountVNode(item, el);\n        });\n      } else if (newChildren.length < oldChildren.length) {\n        oldChildren.slice(newChildren.length).forEach((item) => {\n          unmountVNode(item, el);\n        });\n      }\n    }\n  }\n}\n\n// 渲染\nexport function renderVNode(\n  parent: ComponentContainer = document.documentElement,\n  newVNode: VNode,\n  oldVNode?: VNode\n): void {\n  if (!newVNode.el) {\n    if (oldVNode) {\n      unmountVNode(oldVNode, parent);\n    }\n    mountVNode(newVNode, parent);\n  } else if (!oldVNode || !oldVNode.el) {\n    unmountVNode(newVNode, parent);\n    mountVNode(newVNode, parent);\n  } else {\n    patchVNode(oldVNode, newVNode, parent);\n  }\n}\n\n/////////////////////////////////////////////////////////////////\n\nconst globalVNodeCache = new Map();\n\n// 前提：el已挂载到dom上！\nexport function getVNode(\n  el: ComponentContainer,\n  cache: MapCacheContext = globalVNodeCache\n): VNode {\n  // 性能瓶颈：如何从 el 快速获得唯一id ?\n  let vnode = cache.get(el);\n  if (vnode) {\n    return vnode;\n  }\n  vnode = hFromEl(el);\n  cache.set(el, vnode);\n  return vnode;\n}\n\n// 前提：el已挂载到dom上！\nexport function updateVNode(\n  el: ComponentContainer,\n  update: (vnode: VNode) => void,\n  cache: MapCacheContext = globalVNodeCache\n) {\n  const vnode = getVNode(el, cache);\n  if (!vnode.alternate) {\n    vnode.alternate = hFromEl(el);\n    mergeObjectDeep(vnode.alternate.props, vnode.props, true);\n  }\n  update(vnode.alternate);\n}\n\n// 更新 vnode to 真实dom\n// 前提：el已挂载到dom上！\nexport function scheduleVNodeImmediately(cache = globalVNodeCache) {\n  const entries = Array.from(cache.entries());\n  for (const [el, vnode] of entries) {\n    const alternate = vnode.alternate;\n    if (alternate) {\n      patchVNode(vnode, alternate);\n      // 提高性能：不改变 cache 中 vnode 引用\n      vnode.props = alternate.props;\n      vnode.alternate = undefined;\n    }\n  }\n}\n\nexport function scheduleVNodeAsap(cache = globalVNodeCache) {\n  scheduleIdle(() => scheduleVNodeImmediately(cache), 50);\n}\n","/* eslint-disable no-case-declarations */\nimport {\n  Component,\n  ComponentContainer,\n  ComponentInstance,\n  Props,\n  Effect,\n  ValueUpdater,\n  createSignal,\n  Diff,\n  State,\n  isObjectLike,\n  isArray,\n  Callback,\n  appendUniqueArray,\n  deleteArrayItem,\n  getNestedValue,\n  setNestedValue,\n  CommonFn\n} from \"@zyzgroup/core-common\";\nimport { h, renderVNode } from \"./vnode\";\nimport { isInputCheckbox, isInputRadio, isSelect } from \"../dom\";\n\n// 为什么真正 cycle detection 很难？\n// 因为 JS effect 是动态的：\n// effect(() => {\n//   if (flag()) {\n//     a();\n//   } else {\n//     b();\n//   }\n// });\n// 依赖会变化：\n// effect -> a\n// effect -> b\n// 所以：\n// Reactive graph != 静态 graph\n\n// DFS\n// function hasCycle(\n//   node: ReactiveNode,\n//   visiting = new Set<ReactiveNode>(),\n//   visited = new Set<ReactiveNode>()\n// ): boolean {\n//   if (visited.has(node)) {\n//     return false;\n//   }\n//   if (visiting.has(node)) {\n//     return true;\n//   }\n//   visiting.add(node);\n//   for (const dep of node.deps) {\n//     if (hasCycle(dep, visiting, visited)) {\n//       return true;\n//     }\n//   }\n//   visiting.delete(node);\n//   visited.add(node);\n//   return false;\n// }\n\nexport function createMiniReact() {\n  // 存储每个组件实例的数据\n  const componentInstances = new Map<ComponentContainer, ComponentInstance>();\n  let currentComponentInstance: ComponentInstance | null = null;\n\n  // 批量渲染队列\n  const pendingRenders = new Set<ComponentInstance>();\n  let isRendering = false;\n\n  // ---------------- useState ----------------\n  function useState<T = any>(initialValue: T): [T, ValueUpdater<T>] {\n    const instance = currentComponentInstance as ComponentInstance;\n    const idx = instance.stateIndex;\n    if (!(idx in instance.states)) {\n      instance.states[idx] = initialValue;\n    }\n    function setState(newValue: T | ((prev: T) => T)): void {\n      let resolvedValue;\n      if (typeof newValue == \"function\") {\n        resolvedValue = (newValue as (v: T) => T)(instance.states[idx]);\n      } else {\n        resolvedValue = newValue;\n      }\n      // 实际上：React setState 会把一个 update 入队到 hook 的更新队列，保留旧的 memoized state\n      // 真正把这些 update 应用到 state 并得到 “本次渲染看到的 state” 是在下一次 render 过程中完成的\n      // 每个 update 闭包里引用的 state 仍是旧 render 中 state 的值\n\n      // “Rendering” means that React is calling your component, which is a function.\n      // The JSX you return from that function is like a snapshot of the UI in time.\n      // Its props, event handlers, and local variables were all calculated using its state at the time of the render.\n      // A state variable’s value never changes within a render, even if its event handler’s code is asynchronous.\n      // Setting state only changes it for the next render.\n\n      // But what if you wanted to read the latest state before a re-render? You’ll want to use a state updater function,\n      // It is an uncommon use case, but if you would like to update the same state variable multiple times before the next render,\n      // instead of passing the next state value like setNumber(number + 1),\n      // you can pass a function that calculates the next state based on the previous one in the queue, like setNumber(n => n + 1).\n      // It is a way to tell React to “do something with the state value” instead of just replacing it.\n      // During the re-render, React will process the queue. Updater functions run during rendering, so updater functions must be pure and only return the result.\n      // Don’t try to set state from inside of them or run other side effects.\n\n      // React waits until all code in the event handlers has run before processing your state updates.\n      // This lets you update multiple state variables, even from multiple components, without triggering too many re-renders.\n      // But this also means that the UI won’t be updated until after your event handler, and any code in it, completes.\n      // This behavior, also known as **batching**, makes your React app run much faster.\n      // It also avoids dealing with confusing “half-finished” renders where only some of the variables have been updated.\n      // React keeps the state values “fixed” within one render’s event handlers.\n      // but React does not batch across multiple intentional events like clicks, each click is handled separately.\n      // This ensures that, for example, if the first button click disables a form, the second click would not submit it again.\n\n      if (instance.states[idx] !== resolvedValue) {\n        instance.states[idx] = resolvedValue;\n        scheduleRender(instance); // setState 会导致 重新渲染\n      }\n    }\n    instance.stateIndex++;\n    return [instance.states[idx], setState as ValueUpdater<T>];\n  }\n\n  // ---------------- useRef ----------------\n  function useRef<T = any>(initialValue: T) {\n    const [ref, unused] = useState({ current: initialValue });\n    return ref;\n  }\n\n  // ---------------- useEffect ----------------\n  // Setting state immediately in an Effect is like :\n  // The Effect runs, it sets the state, which causes a re-render,\n  // which causes the Effect to run, it sets the state again, this causes another re-render, and so on.\n  // Effects should usually synchronize your components with an external system.\n  // If there’s no external system and you only want to adjust some state based on other state, you might not need an Effect.\n\n  // Effects don’t run on the server\n\n  function useEffect(effect: Effect, deps?: any[]): void {\n    const instance = currentComponentInstance as ComponentInstance;\n    const idx = instance.effectIndex;\n    if (!instance.pendingEffects) {\n      instance.pendingEffects = [];\n    }\n    instance.pendingEffects.push({ effect, deps, idx });\n    instance.effectIndex++;\n  }\n\n  function flushEffects(instance: ComponentInstance) {\n    if (!instance.pendingEffects) {\n      return;\n    }\n    instance.pendingEffects.forEach(({ effect, deps, idx }) => {\n      const prevEffect = instance.effects[idx];\n      const hasChanged =\n        !deps ||\n        !prevEffect ||\n        !prevEffect.deps ||\n        deps.length !== prevEffect.deps.length ||\n        deps.some((d, i) => d !== prevEffect.deps![i]);\n      if (hasChanged) {\n        prevEffect.cleanup?.();\n        const cleanup = effect();\n        if (cleanup instanceof Promise) {\n          throw new Error(\"useEffect callback must not return Promise\");\n        }\n        instance.effects[idx] = { deps: deps ? [...deps] : undefined, cleanup };\n      }\n    });\n    instance.pendingEffects = [];\n  }\n\n  function useEffectEvent(fn: (...args: any[]) => void) {\n    const ref = useRef(fn);\n    ref.current = fn;\n    return useCallback((...args) => ref.current(...args), []);\n  }\n\n  // ---------------- useCallback ----------------\n  function useCallback(fn: CommonFn, deps?: any[]): CommonFn {\n    const instance = currentComponentInstance as ComponentInstance;\n    const idx = instance.callbackIndex;\n    const cache = instance.callbacks[idx] || { fn: fn, deps: undefined };\n    const hasChanged =\n      !deps ||\n      !cache.deps ||\n      deps.length !== cache.deps.length ||\n      deps.some((dep, i) => dep !== cache.deps![i]);\n    if (hasChanged) {\n      cache.fn = fn;\n      cache.deps = deps ? [...deps] : undefined;\n    }\n    instance.callbacks[idx] = cache;\n    instance.callbackIndex++;\n    return cache.fn;\n  }\n\n  // ---------------- scheduleRender ----------------\n  function scheduleRender(instance: ComponentInstance): void {\n    pendingRenders.add(instance);\n    if (!isRendering) {\n      isRendering = true;\n      setTimeout(flushRenders, 0); // 批量渲染\n    }\n  }\n\n  function flushRenders() {\n    while (pendingRenders.size) {\n      const renders = [...pendingRenders];\n      pendingRenders.clear();\n      renders.forEach((instance) => {\n        render(instance.component, instance.container, instance.props);\n      });\n    }\n    isRendering = false;\n  }\n\n  // ---------------- render ----------------\n  function render(\n    component: Component,\n    container: ComponentContainer,\n    props: Props = {}\n  ): ComponentInstance {\n    let instance = componentInstances.get(container);\n    if (!instance || instance.component !== component) {\n      instance = {\n        component,\n        props,\n        states: [],\n        stateIndex: 0,\n        effects: [],\n        effectIndex: 0,\n        pendingEffects: [],\n        callbacks: [],\n        callbackIndex: 0,\n        children: [],\n        mounted: false,\n        container,\n        vnode: undefined\n      };\n      componentInstances.set(container, instance);\n    } else {\n      instance.props = props;\n    }\n\n    currentComponentInstance = instance;\n\n    // 每次调用 组件函数 前，重置索引\n    instance.stateIndex = 0;\n    instance.effectIndex = 0;\n    instance.callbackIndex = 0;\n\n    // 渲染组件\n    // since components don’t have side effects in render,\n    // React can pause rendering components that aren’t as important to update,\n    // and only come back to them later when it’s needed.\n    // this means that rendering logic can be run multiple times in a way that allows React to give your user a pleasant user experience\n    const newVNode = component(props); // 调用 组件函数，返回 vnode\n    renderVNode(container, newVNode, instance.vnode);\n    instance.vnode = newVNode;\n\n    instance.mounted = true;\n\n    currentComponentInstance = null;\n\n    // flush effects after render\n    // Side effects should not run in render\n    flushEffects(instance);\n\n    return instance;\n  }\n\n  // ---------------- unmount ----------------\n  function unmount(instance: ComponentInstance) {\n    instance.effects.forEach((e) => e.cleanup?.());\n    if (instance.children) {\n      instance.children.forEach(unmount);\n    }\n    if (instance.container && \"innerHTML\" in instance.container) {\n      instance.container.innerHTML = \"\";\n    }\n    componentInstances.delete(instance.container);\n  }\n\n  return {\n    useState,\n    useRef,\n    useEffect,\n    useEffectEvent,\n    useCallback,\n    render,\n    unmount,\n    scheduleRender\n  };\n}\n\n// const { useState, useEffect, render, unmount } = createMiniReact();\n\n// function Timer(props?: Props) {\n//   const [time, setTime] = useState<number>(props?.start || 0);\n//   useEffect(() => {\n//     const id = setInterval(() => setTime((t) => t + 1), 1000);\n//     return () => clearInterval(id);\n//   }, []);\n//   return h(\"div\", {}, `Timer: ${time}s`);\n// }\n\n// function Counter(props?: Props) {\n//   const [count, setCount] = useState<number>(props?.initial || 0);\n//   const [showTimer, setShowTimer] = useState(true);\n//   return h(\n//     \"div\",\n//     { style: \"margin:10px; border:1px solid #ccc; padding:10px;\" },\n//     [\n//       h(\"h2\", {}, `Count: ${count}`),\n//       h(\"button\", { onclick: () => setCount((c) => c + 1) }, \"Increment\"),\n//       h(\n//         \"button\",\n//         { onclick: () => setShowTimer((s) => !s) },\n//         showTimer ? \"Hide Timer\" : \"Show Timer\"\n//       ),\n//       showTimer && h(Timer, { start: 0 }) // 嵌套 Timer 组件\n//     ]\n//   );\n// }\n\n// function App() {\n//   return h(\"div\", {}, [\n//     h(\"h1\", {}, \"Mini React Demo\"),\n//     h(Counter, { initial: 5 })\n//   ]);\n// }\n\n// // 渲染到页面\n// const root = document.getElementById(\"root\"); // <div id=\"root\"></div>\n// if (root) {\n//   const appInstance = render(App, root);\n//   // // 10 秒后卸载组件\n//   // setTimeout(() => {\n//   //   console.log(\"Unmounting Counter...\");\n//   //   // unmount(Counter);\n//   //   unmount(appInstance.children[1]);\n//   // }, 10000);\n// }\n\nexport function createMiniVue() {\n  // 响应式系统 的核心就是 数据代理\n  // 数据 在 getter 时进行 依赖收集，在 setter 时对依赖 触发更新\n\n  // 测试用例：reactive.browser.test.js\n\n  let activeEffect: Effect | null;\n\n  // 订阅者 : 执行一次，自动收集依赖\n  function watchEffect(effect: Effect) {\n    activeEffect = effect;\n    // effect 里面使用 reactiveVue3代理的数据\n    // get时自动收集依赖，set时自动通知依赖更新\n    effect();\n    activeEffect = null;\n  }\n\n  // 订阅器 : 发布订阅\n  class Dep {\n    subscribers: Set<Effect> = new Set();\n    add() {\n      if (activeEffect && !this.subscribers.has(activeEffect)) {\n        this.subscribers.add(activeEffect);\n      }\n    }\n    notify() {\n      this.subscribers.forEach((effect) => effect());\n    }\n  }\n\n  const targetKeyDepMap = new WeakMap<State | any[], Map<PropertyKey, Dep>>();\n  // const targetKeyDepMap = new Map<State | any[], Map<PropertyKey, Dep>>();\n\n  function getDep(target: State | any[], key: PropertyKey) {\n    let keyDepMap = targetKeyDepMap.get(target);\n    if (!keyDepMap) {\n      keyDepMap = new Map();\n      targetKeyDepMap.set(target, keyDepMap);\n    }\n    let dep = keyDepMap.get(key);\n    if (!dep) {\n      dep = new Dep();\n      keyDepMap.set(key, dep);\n    }\n    return dep;\n  }\n\n  function reactiveArray(arr: any[], dep: Dep, deepReactive = reactiveVue2) {\n    if (!Array.isArray(arr)) {\n      return;\n    }\n    const originProto = Array.prototype;\n    const arrayProto = Object.create(originProto);\n    // 数组的变异方法\n    [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\", \"sort\", \"reverse\"].forEach(\n      (method) => {\n        arrayProto[method] = function (...args: any[]) {\n          // const oldValue = this.slice();\n          // 对新添加的对象递归响应式处理\n          if ([\"push\", \"unshift\", \"splice\"].includes(method)) {\n            (method === \"splice\" ? args.slice(2) : args).forEach(\n              (item, index) => {\n                if (isObjectLike(item)) {\n                  args[index] = deepReactive(item);\n                }\n                dep.add();\n              }\n            );\n          }\n          (originProto as any)[method].apply(this, args);\n          const newValue = this.slice();\n          return newValue;\n        };\n      }\n    );\n    // 这里每次赋值都会重新设置原型和劫持方法，如果外部频繁替换数组对象，可能产生性能问题（Vue2 也是这样处理的，但需要注意）\n    Object.setPrototypeOf(arr, arrayProto);\n\n    // 不可行： JavaScript 中原生限制：数组的 length 属性是不可配置的（configurable: false），不像普通对象的属性那样可以随意重新定义\n    // // 劫持 length 属性\n    // let currentLength = value.length;\n    // Object.defineProperty(value, \"length\", {\n    //   configurable: true,\n    //   enumerable: false,\n    //   get() {\n    //     return currentLength;\n    //   },\n    //   set(newLength) {\n    //     if (newLength !== currentLength) {\n    //       currentLength = newLength;\n    //       callback(); // 触发回调\n    //     }\n    //   }\n    // });\n\n    // 劫持已有索引\n    // 依赖收集 (dep) 会自动去重\n    arr.forEach((item: any, index: number) => {\n      if (isObjectLike(item)) {\n        arr[index] = deepReactive(item);\n      }\n      dep.add();\n    });\n  }\n\n  /**\n   * 监听器 : defineProperty 数据原型劫持\n   *\n   * 无法劫持新创建的属性\n   *\n   * 无法劫持数组 索引赋值 和 length修改，例如\n   * arr[0] = 123; // 不会触发 dep.notify()\n   * arr.length = 0; // 不会触发 dep.notify()\n   *\n   * @param raw\n   * @param deep\n   * @returns\n   */\n  function reactiveVue2<T extends State = State>(raw: T): T {\n    (Object.keys(raw) as Array<keyof T>).forEach((key) => {\n      const dep = getDep(raw, key);\n\n      let value = raw[key];\n\n      Object.defineProperty(raw, key, {\n        configurable: true, // 是否可删除、可配置\n        enumerable: true, // 是否可枚举\n\n        // 数据描述符\n        // value : 默认为 undefined\n        // writable : 是否可读写\n\n        // 存取描述符\n        get() {\n          if (isObjectLike(value)) {\n            if (Array.isArray(value)) {\n              // array\n              reactiveArray(value, dep, reactiveVue2);\n            } else {\n              // object\n              reactiveVue2(value);\n            }\n          }\n          // 通过 getter 自动收集依赖\n          dep.add();\n          return value; // 避免死循环\n        },\n\n        set(newValue) {\n          if (value !== newValue) {\n            // const oldValue = value;\n            value = newValue;\n            dep.notify();\n          }\n        }\n      });\n    });\n\n    return raw;\n  }\n\n  function ref<T = any>(value: T) {\n    return reactiveVue2({ value });\n  }\n\n  const reactive = reactiveVue3;\n\n  /**\n   * 监听器 : Proxy 数据代理\n   *\n   * 可以监听新创建的属性\n   *\n   * 可以监听数组的变化\n   *\n   * 可以监听利用索引修改数组元素\n   *\n   * @param raw\n   * @param deep\n   * @returns\n   */\n  function reactiveVue3<T extends State = State>(raw: T): T {\n    if (!isObjectLike(raw)) {\n      return raw;\n    }\n\n    const handler: ProxyHandler<T> = {\n      // 拦截对象属性的读取\n      // target 目标对象、key 键值、receiver 当前proxy实例\n      get(target, key, receiver) {\n        // console.log(\"get\", key);\n\n        // 只要 Proxy 对象具有的代理方法，Reflect 对象全部具有，以静态方法的形式存在\n        // - 修改某些 Object 方法的返回结果，让其变得更合理（定义不存在属性行为的时候不报错而是返回 false）\n        let result = Reflect.get(target, key, receiver);\n        // let result = target[key];\n\n        const dep = getDep(target, key);\n\n        // 递归\n        if (isObjectLike(result) && !(\"isYZProxy\" in result)) {\n          // array or object\n\n          // if (Array.isArray(result)) {\n          //   reactiveArray(result, dep, reactiveVue3, {\n          //     callback: (diff) => {\n          //       dep.notify(diff);\n          //       if (callback) {\n          //         callback(diff);\n          //       }\n          //     },\n          //     path: fullpath\n          //   });\n          //   return result;\n          // }\n\n          const deepProxy = reactiveVue3(result) as any;\n\n          if (Array.isArray(result)) {\n            deepProxy[\"YZProxyArrayDep\"] = dep;\n            // (deepProxy as any[]).forEach((r, i) => {\n            //   const depArray = getDep(r, i);\n            //   depArray.add(); // 自动收集依赖\n            //   // dep.add(); // 自动收集依赖\n            // });\n          }\n\n          // Reflect.set(target, key, deepProxy);\n          result = deepProxy;\n        }\n\n        dep.add(); // 自动收集依赖\n\n        return result;\n      },\n\n      // 拦截对象属性的设置\n      // target 目标对象、key 键值、value 值、receiver 当前proxy实例\n      set(target, key, value, receiver) {\n        // console.log(\"set\", key, value);\n\n        const oldValue = Reflect.get(target, key, receiver);\n        const result = Reflect.set(target, key, value, receiver);\n\n        if (key == \"YZProxyArrayDep\") {\n          return result;\n        }\n\n        if (oldValue !== value) {\n          // arr.push() 会触发2次 set\n          // 一次是 set arr.数字索引 key=index_number\n          // 一次是 set arr.length  key=length\n          // 通过 oldValue !== value 排除 第2次触发 set arr.length\n          let dep;\n          if (Array.isArray(target)) {\n            dep = target[\"YZProxyArrayDep\"];\n            // dep = getDep(target, key);\n          } else {\n            dep = getDep(target, key);\n          }\n\n          dep.notify(); // 通知依赖更新\n        }\n\n        return result;\n      },\n\n      // 拦截 `delete proxy[key]` 的操作，返回一个布尔值\n      deleteProperty(target, key) {\n        // console.log(\"delete\", target, key);\n\n        const hasKey = key in target;\n        if (!hasKey) {\n          return false;\n        }\n\n        let oldValue = typeof key === \"symbol\" ? undefined : target[key];\n        if (isObjectLike(oldValue)) {\n          oldValue = Array.isArray(oldValue) ? [...oldValue] : { ...oldValue };\n        }\n\n        const result = Reflect.deleteProperty(target, key);\n        // delete target[key];\n\n        if (result) {\n          let dep;\n          if (Array.isArray(target)) {\n            dep = target[\"YZProxyArrayDep\"];\n            // dep = getDep(target, key);\n          } else {\n            dep = getDep(target, key);\n          }\n\n          dep.notify();\n        }\n\n        return result;\n      },\n\n      // 拦截 `key in proxy` 的操作，返回一个布尔值\n      has(target, key) {\n        // console.log(\"has\", key);\n        return key === \"isYZProxy\" || key in target;\n      }\n\n      // 拦截 `Object.keys(proxy)`、`for...in` 等循环，返回一个数组\n      // ownKeys(target) {\n      //   return [];\n      // },\n\n      // 拦截 `Object.getOwnPropertyDescriptor(proxy, key)`，返回属性的描述对象\n      // getOwnPropertyDescriptor(target, key) {\n      //   return {};\n      // },\n\n      // 拦截 `Object.defineProperty(proxy, key, desc`，返回一个布尔值\n      // defineProperty(target, key, desc) {\n      //   return true;\n      // },\n\n      // 拦截 `Object.preventExtensions(proxy)`，返回一个布尔值\n      // preventExtensions(target) {\n      //   return true;\n      // },\n\n      // 拦截 `Object.getPrototypeOf(proxy)`，返回一个对象\n      // getPrototypeOf(target) {\n      //   return {};\n      // },\n\n      // 拦截 `Object.isExtensible(proxy)`，返回一个布尔值\n      // isExtensible(target) {\n      //   return true;\n      // },\n\n      // 拦截 `Object.setPrototypeOf(proxy, proto)`，返回一个布尔值\n      // setPrototypeOf(target, proto) {\n      //   return true;\n      // },\n\n      // 拦截 Proxy 实例作为函数调用的操作\n      // apply(target, thisArg, args) {\n      //   return target.apply(thisArg, args);\n      // },\n\n      // 拦截 Proxy 实例作为构造函数调用的操作\n      // construct(target, args) {\n      //   return {};\n      // }\n    };\n\n    const proxy = new Proxy(raw, handler);\n    // 取消代理 : Proxy.revocable(target, handler);\n\n    return proxy;\n  }\n\n  // Model-View-ViewModel 响应式系统\n  function mvvm(state: State, el: HTMLElement): State {\n    const reactiveState = reactiveVue3(state);\n    compile(reactiveState, el);\n    return reactiveState;\n  }\n\n  // 解析器\n  function compile(state: State, el: HTMLElement) {\n    el.childNodes.forEach((node) => {\n      switch (node.nodeType) {\n        case 1: // Element Node 元素节点\n          const elementNode = node as HTMLElement;\n          [...elementNode.attributes].forEach((attr) => {\n            const attrName = attr.name;\n            const attrValue = attr.value;\n            if (attrName === \"v-model\") {\n              // 数据双向绑定\n              if (isInputRadio(elementNode)) {\n                // radio 使用 checked 属性 和 change 事件\n                const finalNode = elementNode as HTMLInputElement;\n                // 数据 驱动 视图 更新\n                watchEffect(() => {\n                  finalNode.checked =\n                    getNestedValue(state, attrValue) == finalNode.value;\n                });\n                // 通过事件监听，视图 驱动 数据 更新\n                finalNode.addEventListener(\"change\", (e) => {\n                  setNestedValue(\n                    state,\n                    attrValue,\n                    (e.target as typeof finalNode).value\n                  );\n                });\n              } else if (isInputCheckbox(elementNode)) {\n                // checkbox 使用 checked 属性 和 change 事件\n                const finalNode = elementNode as HTMLInputElement;\n                // 数据 驱动 视图 更新\n                watchEffect(() => {\n                  finalNode.checked = getNestedValue(state, attrValue).includes(\n                    finalNode.value\n                  );\n                });\n                // 通过事件监听，视图 驱动 数据 更新\n                finalNode.addEventListener(\"change\", (e) => {\n                  const target = e.target as typeof finalNode;\n                  const value = target.value;\n                  if (target.checked) {\n                    appendUniqueArray(getNestedValue(state, attrValue), value);\n                  } else {\n                    deleteArrayItem(getNestedValue(state, attrValue), value);\n                  }\n                });\n              } else if (isSelect(elementNode)) {\n                // select 使用 value 属性 和 change 事件\n                const finalNode = elementNode as HTMLSelectElement;\n                // 数据 驱动 视图 更新\n                watchEffect(() => {\n                  finalNode.value = getNestedValue(state, attrValue);\n                });\n                // 通过事件监听，视图 驱动 数据 更新\n                finalNode.addEventListener(\"change\", (e) => {\n                  setNestedValue(\n                    state,\n                    attrValue,\n                    (e.target as typeof finalNode).value\n                  );\n                });\n              } else {\n                // input text number ...  和 textarea 使用 value 属性 和 input 事件\n                const finalNode = elementNode as\n                  | HTMLInputElement\n                  | HTMLTextAreaElement;\n                // 数据 驱动 视图 更新\n                watchEffect(() => {\n                  finalNode.value = getNestedValue(state, attrValue);\n                });\n                // 通过事件监听，视图 驱动 数据 更新\n                const cb = (e: Event) => {\n                  setNestedValue(\n                    state,\n                    attrValue,\n                    (e.target as typeof finalNode).value\n                  );\n                };\n                finalNode.addEventListener(\"input\", cb);\n                // finalNode.addEventListener(\"change\", cb);\n              }\n            } else if (attrName === \"v-text\") {\n              // 数据 驱动 视图 更新\n              watchEffect(() => {\n                elementNode.innerText = getNestedValue(state, attrValue);\n              });\n            } else if (attrName === \"v-html\") {\n              // 数据 驱动 视图 更新\n              watchEffect(() => {\n                elementNode.innerHTML = getNestedValue(state, attrValue);\n              });\n            }\n          });\n          // 递归子节点\n          if (elementNode.childNodes.length > 0) {\n            compile(state, elementNode);\n          }\n          break;\n        case 3: // Text Node 文本节点\n          const textContent = node.textContent || \"\";\n          const reg = /\\{\\{\\s*([^{}\\s]+)\\s*\\}\\}/g;\n          const matches = reg.exec(textContent);\n          if (matches && matches[1]) {\n            // 数据 驱动 视图 更新\n            watchEffect(() => {\n              node.textContent = textContent.replace(\n                reg,\n                getNestedValue(state, matches[1])\n              );\n            });\n          }\n          break;\n      }\n    });\n  }\n\n  return { watchEffect, reactiveVue2, ref, reactiveVue3, reactive, mvvm };\n}\n\nexport const miniVue = createMiniVue();\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n    isMounted: function () {\n      return !1;\n    },\n    enqueueForceUpdate: function () {},\n    enqueueReplaceState: function () {},\n    enqueueSetState: function () {}\n  },\n  assign = Object.assign,\n  emptyObject = {};\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n  if (\n    \"object\" !== typeof partialState &&\n    \"function\" !== typeof partialState &&\n    null != partialState\n  )\n    throw Error(\n      \"takes an object of state variables to update or a function which returns an object of state variables.\"\n    );\n  this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n  var refProp = props.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== refProp ? refProp : null,\n    props: props\n  };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n}\nfunction escape(key) {\n  var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n  return (\n    \"$\" +\n    key.replace(/[=:]/g, function (match) {\n      return escaperLookup[match];\n    })\n  );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n  return \"object\" === typeof element && null !== element && null != element.key\n    ? escape(\"\" + element.key)\n    : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw thenable.reason;\n    default:\n      switch (\n        (\"string\" === typeof thenable.status\n          ? thenable.then(noop, noop)\n          : ((thenable.status = \"pending\"),\n            thenable.then(\n              function (fulfilledValue) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"fulfilled\"),\n                  (thenable.value = fulfilledValue));\n              },\n              function (error) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"rejected\"), (thenable.reason = error));\n              }\n            )),\n        thenable.status)\n      ) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw thenable.reason;\n      }\n  }\n  throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n  if (\"undefined\" === type || \"boolean\" === type) children = null;\n  var invokeCallback = !1;\n  if (null === children) invokeCallback = !0;\n  else\n    switch (type) {\n      case \"bigint\":\n      case \"string\":\n      case \"number\":\n        invokeCallback = !0;\n        break;\n      case \"object\":\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = !0;\n            break;\n          case REACT_LAZY_TYPE:\n            return (\n              (invokeCallback = children._init),\n              mapIntoArray(\n                invokeCallback(children._payload),\n                array,\n                escapedPrefix,\n                nameSoFar,\n                callback\n              )\n            );\n        }\n    }\n  if (invokeCallback)\n    return (\n      (callback = callback(children)),\n      (invokeCallback =\n        \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n      isArrayImpl(callback)\n        ? ((escapedPrefix = \"\"),\n          null != invokeCallback &&\n            (escapedPrefix =\n              invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n          mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n            return c;\n          }))\n        : null != callback &&\n          (isValidElement(callback) &&\n            (callback = cloneAndReplaceKey(\n              callback,\n              escapedPrefix +\n                (null == callback.key ||\n                (children && children.key === callback.key)\n                  ? \"\"\n                  : (\"\" + callback.key).replace(\n                      userProvidedKeyEscapeRegex,\n                      \"$&/\"\n                    ) + \"/\") +\n                invokeCallback\n            )),\n          array.push(callback)),\n      1\n    );\n  invokeCallback = 0;\n  var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n  if (isArrayImpl(children))\n    for (var i = 0; i < children.length; i++)\n      (nameSoFar = children[i]),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n    for (\n      children = i.call(children), i = 0;\n      !(nameSoFar = children.next()).done;\n\n    )\n      (nameSoFar = nameSoFar.value),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (\"object\" === type) {\n    if (\"function\" === typeof children.then)\n      return mapIntoArray(\n        resolveThenable(children),\n        array,\n        escapedPrefix,\n        nameSoFar,\n        callback\n      );\n    array = String(children);\n    throw Error(\n      \"Objects are not valid as a React child (found: \" +\n        (\"[object Object]\" === array\n          ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n          : array) +\n        \"). If you meant to render a collection of children, use an array instead.\"\n    );\n  }\n  return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n  if (null == children) return children;\n  var result = [],\n    count = 0;\n  mapIntoArray(children, result, \"\", \"\", function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\nfunction lazyInitializer(payload) {\n  if (-1 === payload._status) {\n    var ctor = payload._result;\n    ctor = ctor();\n    ctor.then(\n      function (moduleObject) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 1), (payload._result = moduleObject);\n      },\n      function (error) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 2), (payload._result = error);\n      }\n    );\n    -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n  }\n  if (1 === payload._status) return payload._result.default;\n  throw payload._result;\n}\nvar reportGlobalError =\n    \"function\" === typeof reportError\n      ? reportError\n      : function (error) {\n          if (\n            \"object\" === typeof window &&\n            \"function\" === typeof window.ErrorEvent\n          ) {\n            var event = new window.ErrorEvent(\"error\", {\n              bubbles: !0,\n              cancelable: !0,\n              message:\n                \"object\" === typeof error &&\n                null !== error &&\n                \"string\" === typeof error.message\n                  ? String(error.message)\n                  : String(error),\n              error: error\n            });\n            if (!window.dispatchEvent(event)) return;\n          } else if (\n            \"object\" === typeof process &&\n            \"function\" === typeof process.emit\n          ) {\n            process.emit(\"uncaughtException\", error);\n            return;\n          }\n          console.error(error);\n        },\n  Children = {\n    map: mapChildren,\n    forEach: function (children, forEachFunc, forEachContext) {\n      mapChildren(\n        children,\n        function () {\n          forEachFunc.apply(this, arguments);\n        },\n        forEachContext\n      );\n    },\n    count: function (children) {\n      var n = 0;\n      mapChildren(children, function () {\n        n++;\n      });\n      return n;\n    },\n    toArray: function (children) {\n      return (\n        mapChildren(children, function (child) {\n          return child;\n        }) || []\n      );\n    },\n    only: function (children) {\n      if (!isValidElement(children))\n        throw Error(\n          \"React.Children.only expected to receive a single React element child.\"\n        );\n      return children;\n    }\n  };\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n  __proto__: null,\n  c: function (size) {\n    return ReactSharedInternals.H.useMemoCache(size);\n  }\n};\nexports.cache = function (fn) {\n  return function () {\n    return fn.apply(null, arguments);\n  };\n};\nexports.cacheSignal = function () {\n  return null;\n};\nexports.cloneElement = function (element, config, children) {\n  if (null === element || void 0 === element)\n    throw Error(\n      \"The argument must be a React element, but you passed \" + element + \".\"\n    );\n  var props = assign({}, element.props),\n    key = element.key;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      !hasOwnProperty.call(config, propName) ||\n        \"key\" === propName ||\n        \"__self\" === propName ||\n        \"__source\" === propName ||\n        (\"ref\" === propName && void 0 === config.ref) ||\n        (props[propName] = config[propName]);\n  var propName = arguments.length - 2;\n  if (1 === propName) props.children = children;\n  else if (1 < propName) {\n    for (var childArray = Array(propName), i = 0; i < propName; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n  defaultValue = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    _threadCount: 0,\n    Provider: null,\n    Consumer: null\n  };\n  defaultValue.Provider = defaultValue;\n  defaultValue.Consumer = {\n    $$typeof: REACT_CONSUMER_TYPE,\n    _context: defaultValue\n  };\n  return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n  var propName,\n    props = {},\n    key = null;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      hasOwnProperty.call(config, propName) &&\n        \"key\" !== propName &&\n        \"__self\" !== propName &&\n        \"__source\" !== propName &&\n        (props[propName] = config[propName]);\n  var childrenLength = arguments.length - 2;\n  if (1 === childrenLength) props.children = children;\n  else if (1 < childrenLength) {\n    for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  if (type && type.defaultProps)\n    for (propName in ((childrenLength = type.defaultProps), childrenLength))\n      void 0 === props[propName] &&\n        (props[propName] = childrenLength[propName]);\n  return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n  return { current: null };\n};\nexports.forwardRef = function (render) {\n  return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n  return {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: { _status: -1, _result: ctor },\n    _init: lazyInitializer\n  };\n};\nexports.memo = function (type, compare) {\n  return {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: void 0 === compare ? null : compare\n  };\n};\nexports.startTransition = function (scope) {\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  try {\n    var returnValue = scope(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    \"object\" === typeof returnValue &&\n      null !== returnValue &&\n      \"function\" === typeof returnValue.then &&\n      returnValue.then(noop, reportGlobalError);\n  } catch (error) {\n    reportGlobalError(error);\n  } finally {\n    null !== prevTransition &&\n      null !== currentTransition.types &&\n      (prevTransition.types = currentTransition.types),\n      (ReactSharedInternals.T = prevTransition);\n  }\n};\nexports.unstable_useCacheRefresh = function () {\n  return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n  return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n  return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n  return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n  return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n  return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n  return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n  return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n  return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n  return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n  return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n  return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n  return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n  return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n  return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n  return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot\n) {\n  return ReactSharedInternals.H.useSyncExternalStore(\n    subscribe,\n    getSnapshot,\n    getServerSnapshot\n  );\n};\nexports.useTransition = function () {\n  return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.2.5\";\n","/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\n\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function defineDeprecationWarning(methodName, info) {\n      Object.defineProperty(Component.prototype, methodName, {\n        get: function () {\n          console.warn(\n            \"%s(...) is deprecated in plain JavaScript React classes. %s\",\n            info[0],\n            info[1]\n          );\n        }\n      });\n    }\n    function getIteratorFn(maybeIterable) {\n      if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n        return null;\n      maybeIterable =\n        (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n        maybeIterable[\"@@iterator\"];\n      return \"function\" === typeof maybeIterable ? maybeIterable : null;\n    }\n    function warnNoop(publicInstance, callerName) {\n      publicInstance =\n        ((publicInstance = publicInstance.constructor) &&\n          (publicInstance.displayName || publicInstance.name)) ||\n        \"ReactClass\";\n      var warningKey = publicInstance + \".\" + callerName;\n      didWarnStateUpdateForUnmountedComponent[warningKey] ||\n        (console.error(\n          \"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.\",\n          callerName,\n          publicInstance\n        ),\n        (didWarnStateUpdateForUnmountedComponent[warningKey] = !0));\n    }\n    function Component(props, context, updater) {\n      this.props = props;\n      this.context = context;\n      this.refs = emptyObject;\n      this.updater = updater || ReactNoopUpdateQueue;\n    }\n    function ComponentDummy() {}\n    function PureComponent(props, context, updater) {\n      this.props = props;\n      this.context = context;\n      this.refs = emptyObject;\n      this.updater = updater || ReactNoopUpdateQueue;\n    }\n    function noop() {}\n    function testStringCoercion(value) {\n      return \"\" + value;\n    }\n    function checkKeyStringCoercion(value) {\n      try {\n        testStringCoercion(value);\n        var JSCompiler_inline_result = !1;\n      } catch (e) {\n        JSCompiler_inline_result = !0;\n      }\n      if (JSCompiler_inline_result) {\n        JSCompiler_inline_result = console;\n        var JSCompiler_temp_const = JSCompiler_inline_result.error;\n        var JSCompiler_inline_result$jscomp$0 =\n          (\"function\" === typeof Symbol &&\n            Symbol.toStringTag &&\n            value[Symbol.toStringTag]) ||\n          value.constructor.name ||\n          \"Object\";\n        JSCompiler_temp_const.call(\n          JSCompiler_inline_result,\n          \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n          JSCompiler_inline_result$jscomp$0\n        );\n        return testStringCoercion(value);\n      }\n    }\n    function getComponentNameFromType(type) {\n      if (null == type) return null;\n      if (\"function\" === typeof type)\n        return type.$$typeof === REACT_CLIENT_REFERENCE\n          ? null\n          : type.displayName || type.name || null;\n      if (\"string\" === typeof type) return type;\n      switch (type) {\n        case REACT_FRAGMENT_TYPE:\n          return \"Fragment\";\n        case REACT_PROFILER_TYPE:\n          return \"Profiler\";\n        case REACT_STRICT_MODE_TYPE:\n          return \"StrictMode\";\n        case REACT_SUSPENSE_TYPE:\n          return \"Suspense\";\n        case REACT_SUSPENSE_LIST_TYPE:\n          return \"SuspenseList\";\n        case REACT_ACTIVITY_TYPE:\n          return \"Activity\";\n      }\n      if (\"object\" === typeof type)\n        switch (\n          (\"number\" === typeof type.tag &&\n            console.error(\n              \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n            ),\n          type.$$typeof)\n        ) {\n          case REACT_PORTAL_TYPE:\n            return \"Portal\";\n          case REACT_CONTEXT_TYPE:\n            return type.displayName || \"Context\";\n          case REACT_CONSUMER_TYPE:\n            return (type._context.displayName || \"Context\") + \".Consumer\";\n          case REACT_FORWARD_REF_TYPE:\n            var innerType = type.render;\n            type = type.displayName;\n            type ||\n              ((type = innerType.displayName || innerType.name || \"\"),\n              (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n            return type;\n          case REACT_MEMO_TYPE:\n            return (\n              (innerType = type.displayName || null),\n              null !== innerType\n                ? innerType\n                : getComponentNameFromType(type.type) || \"Memo\"\n            );\n          case REACT_LAZY_TYPE:\n            innerType = type._payload;\n            type = type._init;\n            try {\n              return getComponentNameFromType(type(innerType));\n            } catch (x) {}\n        }\n      return null;\n    }\n    function getTaskName(type) {\n      if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n      if (\n        \"object\" === typeof type &&\n        null !== type &&\n        type.$$typeof === REACT_LAZY_TYPE\n      )\n        return \"<...>\";\n      try {\n        var name = getComponentNameFromType(type);\n        return name ? \"<\" + name + \">\" : \"<...>\";\n      } catch (x) {\n        return \"<...>\";\n      }\n    }\n    function getOwner() {\n      var dispatcher = ReactSharedInternals.A;\n      return null === dispatcher ? null : dispatcher.getOwner();\n    }\n    function UnknownOwner() {\n      return Error(\"react-stack-top-frame\");\n    }\n    function hasValidKey(config) {\n      if (hasOwnProperty.call(config, \"key\")) {\n        var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n        if (getter && getter.isReactWarning) return !1;\n      }\n      return void 0 !== config.key;\n    }\n    function defineKeyPropWarningGetter(props, displayName) {\n      function warnAboutAccessingKey() {\n        specialPropKeyWarningShown ||\n          ((specialPropKeyWarningShown = !0),\n          console.error(\n            \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n            displayName\n          ));\n      }\n      warnAboutAccessingKey.isReactWarning = !0;\n      Object.defineProperty(props, \"key\", {\n        get: warnAboutAccessingKey,\n        configurable: !0\n      });\n    }\n    function elementRefGetterWithDeprecationWarning() {\n      var componentName = getComponentNameFromType(this.type);\n      didWarnAboutElementRef[componentName] ||\n        ((didWarnAboutElementRef[componentName] = !0),\n        console.error(\n          \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n        ));\n      componentName = this.props.ref;\n      return void 0 !== componentName ? componentName : null;\n    }\n    function ReactElement(type, key, props, owner, debugStack, debugTask) {\n      var refProp = props.ref;\n      type = {\n        $$typeof: REACT_ELEMENT_TYPE,\n        type: type,\n        key: key,\n        props: props,\n        _owner: owner\n      };\n      null !== (void 0 !== refProp ? refProp : null)\n        ? Object.defineProperty(type, \"ref\", {\n            enumerable: !1,\n            get: elementRefGetterWithDeprecationWarning\n          })\n        : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n      type._store = {};\n      Object.defineProperty(type._store, \"validated\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: 0\n      });\n      Object.defineProperty(type, \"_debugInfo\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: null\n      });\n      Object.defineProperty(type, \"_debugStack\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugStack\n      });\n      Object.defineProperty(type, \"_debugTask\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugTask\n      });\n      Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n      return type;\n    }\n    function cloneAndReplaceKey(oldElement, newKey) {\n      newKey = ReactElement(\n        oldElement.type,\n        newKey,\n        oldElement.props,\n        oldElement._owner,\n        oldElement._debugStack,\n        oldElement._debugTask\n      );\n      oldElement._store &&\n        (newKey._store.validated = oldElement._store.validated);\n      return newKey;\n    }\n    function validateChildKeys(node) {\n      isValidElement(node)\n        ? node._store && (node._store.validated = 1)\n        : \"object\" === typeof node &&\n          null !== node &&\n          node.$$typeof === REACT_LAZY_TYPE &&\n          (\"fulfilled\" === node._payload.status\n            ? isValidElement(node._payload.value) &&\n              node._payload.value._store &&\n              (node._payload.value._store.validated = 1)\n            : node._store && (node._store.validated = 1));\n    }\n    function isValidElement(object) {\n      return (\n        \"object\" === typeof object &&\n        null !== object &&\n        object.$$typeof === REACT_ELEMENT_TYPE\n      );\n    }\n    function escape(key) {\n      var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n      return (\n        \"$\" +\n        key.replace(/[=:]/g, function (match) {\n          return escaperLookup[match];\n        })\n      );\n    }\n    function getElementKey(element, index) {\n      return \"object\" === typeof element &&\n        null !== element &&\n        null != element.key\n        ? (checkKeyStringCoercion(element.key), escape(\"\" + element.key))\n        : index.toString(36);\n    }\n    function resolveThenable(thenable) {\n      switch (thenable.status) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw thenable.reason;\n        default:\n          switch (\n            (\"string\" === typeof thenable.status\n              ? thenable.then(noop, noop)\n              : ((thenable.status = \"pending\"),\n                thenable.then(\n                  function (fulfilledValue) {\n                    \"pending\" === thenable.status &&\n                      ((thenable.status = \"fulfilled\"),\n                      (thenable.value = fulfilledValue));\n                  },\n                  function (error) {\n                    \"pending\" === thenable.status &&\n                      ((thenable.status = \"rejected\"),\n                      (thenable.reason = error));\n                  }\n                )),\n            thenable.status)\n          ) {\n            case \"fulfilled\":\n              return thenable.value;\n            case \"rejected\":\n              throw thenable.reason;\n          }\n      }\n      throw thenable;\n    }\n    function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n      var type = typeof children;\n      if (\"undefined\" === type || \"boolean\" === type) children = null;\n      var invokeCallback = !1;\n      if (null === children) invokeCallback = !0;\n      else\n        switch (type) {\n          case \"bigint\":\n          case \"string\":\n          case \"number\":\n            invokeCallback = !0;\n            break;\n          case \"object\":\n            switch (children.$$typeof) {\n              case REACT_ELEMENT_TYPE:\n              case REACT_PORTAL_TYPE:\n                invokeCallback = !0;\n                break;\n              case REACT_LAZY_TYPE:\n                return (\n                  (invokeCallback = children._init),\n                  mapIntoArray(\n                    invokeCallback(children._payload),\n                    array,\n                    escapedPrefix,\n                    nameSoFar,\n                    callback\n                  )\n                );\n            }\n        }\n      if (invokeCallback) {\n        invokeCallback = children;\n        callback = callback(invokeCallback);\n        var childKey =\n          \"\" === nameSoFar ? \".\" + getElementKey(invokeCallback, 0) : nameSoFar;\n        isArrayImpl(callback)\n          ? ((escapedPrefix = \"\"),\n            null != childKey &&\n              (escapedPrefix =\n                childKey.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n            mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n              return c;\n            }))\n          : null != callback &&\n            (isValidElement(callback) &&\n              (null != callback.key &&\n                ((invokeCallback && invokeCallback.key === callback.key) ||\n                  checkKeyStringCoercion(callback.key)),\n              (escapedPrefix = cloneAndReplaceKey(\n                callback,\n                escapedPrefix +\n                  (null == callback.key ||\n                  (invokeCallback && invokeCallback.key === callback.key)\n                    ? \"\"\n                    : (\"\" + callback.key).replace(\n                        userProvidedKeyEscapeRegex,\n                        \"$&/\"\n                      ) + \"/\") +\n                  childKey\n              )),\n              \"\" !== nameSoFar &&\n                null != invokeCallback &&\n                isValidElement(invokeCallback) &&\n                null == invokeCallback.key &&\n                invokeCallback._store &&\n                !invokeCallback._store.validated &&\n                (escapedPrefix._store.validated = 2),\n              (callback = escapedPrefix)),\n            array.push(callback));\n        return 1;\n      }\n      invokeCallback = 0;\n      childKey = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n      if (isArrayImpl(children))\n        for (var i = 0; i < children.length; i++)\n          (nameSoFar = children[i]),\n            (type = childKey + getElementKey(nameSoFar, i)),\n            (invokeCallback += mapIntoArray(\n              nameSoFar,\n              array,\n              escapedPrefix,\n              type,\n              callback\n            ));\n      else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n        for (\n          i === children.entries &&\n            (didWarnAboutMaps ||\n              console.warn(\n                \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n              ),\n            (didWarnAboutMaps = !0)),\n            children = i.call(children),\n            i = 0;\n          !(nameSoFar = children.next()).done;\n\n        )\n          (nameSoFar = nameSoFar.value),\n            (type = childKey + getElementKey(nameSoFar, i++)),\n            (invokeCallback += mapIntoArray(\n              nameSoFar,\n              array,\n              escapedPrefix,\n              type,\n              callback\n            ));\n      else if (\"object\" === type) {\n        if (\"function\" === typeof children.then)\n          return mapIntoArray(\n            resolveThenable(children),\n            array,\n            escapedPrefix,\n            nameSoFar,\n            callback\n          );\n        array = String(children);\n        throw Error(\n          \"Objects are not valid as a React child (found: \" +\n            (\"[object Object]\" === array\n              ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n              : array) +\n            \"). If you meant to render a collection of children, use an array instead.\"\n        );\n      }\n      return invokeCallback;\n    }\n    function mapChildren(children, func, context) {\n      if (null == children) return children;\n      var result = [],\n        count = 0;\n      mapIntoArray(children, result, \"\", \"\", function (child) {\n        return func.call(context, child, count++);\n      });\n      return result;\n    }\n    function lazyInitializer(payload) {\n      if (-1 === payload._status) {\n        var ioInfo = payload._ioInfo;\n        null != ioInfo && (ioInfo.start = ioInfo.end = performance.now());\n        ioInfo = payload._result;\n        var thenable = ioInfo();\n        thenable.then(\n          function (moduleObject) {\n            if (0 === payload._status || -1 === payload._status) {\n              payload._status = 1;\n              payload._result = moduleObject;\n              var _ioInfo = payload._ioInfo;\n              null != _ioInfo && (_ioInfo.end = performance.now());\n              void 0 === thenable.status &&\n                ((thenable.status = \"fulfilled\"),\n                (thenable.value = moduleObject));\n            }\n          },\n          function (error) {\n            if (0 === payload._status || -1 === payload._status) {\n              payload._status = 2;\n              payload._result = error;\n              var _ioInfo2 = payload._ioInfo;\n              null != _ioInfo2 && (_ioInfo2.end = performance.now());\n              void 0 === thenable.status &&\n                ((thenable.status = \"rejected\"), (thenable.reason = error));\n            }\n          }\n        );\n        ioInfo = payload._ioInfo;\n        if (null != ioInfo) {\n          ioInfo.value = thenable;\n          var displayName = thenable.displayName;\n          \"string\" === typeof displayName && (ioInfo.name = displayName);\n        }\n        -1 === payload._status &&\n          ((payload._status = 0), (payload._result = thenable));\n      }\n      if (1 === payload._status)\n        return (\n          (ioInfo = payload._result),\n          void 0 === ioInfo &&\n            console.error(\n              \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n  const MyComponent = lazy(() => import('./MyComponent'))\\n\\nDid you accidentally put curly braces around the import?\",\n              ioInfo\n            ),\n          \"default\" in ioInfo ||\n            console.error(\n              \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n  const MyComponent = lazy(() => import('./MyComponent'))\",\n              ioInfo\n            ),\n          ioInfo.default\n        );\n      throw payload._result;\n    }\n    function resolveDispatcher() {\n      var dispatcher = ReactSharedInternals.H;\n      null === dispatcher &&\n        console.error(\n          \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n        );\n      return dispatcher;\n    }\n    function releaseAsyncTransition() {\n      ReactSharedInternals.asyncTransitions--;\n    }\n    function enqueueTask(task) {\n      if (null === enqueueTaskImpl)\n        try {\n          var requireString = (\"require\" + Math.random()).slice(0, 7);\n          enqueueTaskImpl = (module && module[requireString]).call(\n            module,\n            \"timers\"\n          ).setImmediate;\n        } catch (_err) {\n          enqueueTaskImpl = function (callback) {\n            !1 === didWarnAboutMessageChannel &&\n              ((didWarnAboutMessageChannel = !0),\n              \"undefined\" === typeof MessageChannel &&\n                console.error(\n                  \"This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.\"\n                ));\n            var channel = new MessageChannel();\n            channel.port1.onmessage = callback;\n            channel.port2.postMessage(void 0);\n          };\n        }\n      return enqueueTaskImpl(task);\n    }\n    function aggregateErrors(errors) {\n      return 1 < errors.length && \"function\" === typeof AggregateError\n        ? new AggregateError(errors)\n        : errors[0];\n    }\n    function popActScope(prevActQueue, prevActScopeDepth) {\n      prevActScopeDepth !== actScopeDepth - 1 &&\n        console.error(\n          \"You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. \"\n        );\n      actScopeDepth = prevActScopeDepth;\n    }\n    function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n      var queue = ReactSharedInternals.actQueue;\n      if (null !== queue)\n        if (0 !== queue.length)\n          try {\n            flushActQueue(queue);\n            enqueueTask(function () {\n              return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n            });\n            return;\n          } catch (error) {\n            ReactSharedInternals.thrownErrors.push(error);\n          }\n        else ReactSharedInternals.actQueue = null;\n      0 < ReactSharedInternals.thrownErrors.length\n        ? ((queue = aggregateErrors(ReactSharedInternals.thrownErrors)),\n          (ReactSharedInternals.thrownErrors.length = 0),\n          reject(queue))\n        : resolve(returnValue);\n    }\n    function flushActQueue(queue) {\n      if (!isFlushing) {\n        isFlushing = !0;\n        var i = 0;\n        try {\n          for (; i < queue.length; i++) {\n            var callback = queue[i];\n            do {\n              ReactSharedInternals.didUsePromise = !1;\n              var continuation = callback(!1);\n              if (null !== continuation) {\n                if (ReactSharedInternals.didUsePromise) {\n                  queue[i] = callback;\n                  queue.splice(0, i);\n                  return;\n                }\n                callback = continuation;\n              } else break;\n            } while (1);\n          }\n          queue.length = 0;\n        } catch (error) {\n          queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);\n        } finally {\n          isFlushing = !1;\n        }\n      }\n    }\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n    var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n      REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n      REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n      REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n      REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n      REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n      REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n      REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n      REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n      REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n      REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n      REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n      REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n      MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n      didWarnStateUpdateForUnmountedComponent = {},\n      ReactNoopUpdateQueue = {\n        isMounted: function () {\n          return !1;\n        },\n        enqueueForceUpdate: function (publicInstance) {\n          warnNoop(publicInstance, \"forceUpdate\");\n        },\n        enqueueReplaceState: function (publicInstance) {\n          warnNoop(publicInstance, \"replaceState\");\n        },\n        enqueueSetState: function (publicInstance) {\n          warnNoop(publicInstance, \"setState\");\n        }\n      },\n      assign = Object.assign,\n      emptyObject = {};\n    Object.freeze(emptyObject);\n    Component.prototype.isReactComponent = {};\n    Component.prototype.setState = function (partialState, callback) {\n      if (\n        \"object\" !== typeof partialState &&\n        \"function\" !== typeof partialState &&\n        null != partialState\n      )\n        throw Error(\n          \"takes an object of state variables to update or a function which returns an object of state variables.\"\n        );\n      this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n    };\n    Component.prototype.forceUpdate = function (callback) {\n      this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n    };\n    var deprecatedAPIs = {\n      isMounted: [\n        \"isMounted\",\n        \"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\"\n      ],\n      replaceState: [\n        \"replaceState\",\n        \"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).\"\n      ]\n    };\n    for (fnName in deprecatedAPIs)\n      deprecatedAPIs.hasOwnProperty(fnName) &&\n        defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n    ComponentDummy.prototype = Component.prototype;\n    deprecatedAPIs = PureComponent.prototype = new ComponentDummy();\n    deprecatedAPIs.constructor = PureComponent;\n    assign(deprecatedAPIs, Component.prototype);\n    deprecatedAPIs.isPureReactComponent = !0;\n    var isArrayImpl = Array.isArray,\n      REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n      ReactSharedInternals = {\n        H: null,\n        A: null,\n        T: null,\n        S: null,\n        actQueue: null,\n        asyncTransitions: 0,\n        isBatchingLegacy: !1,\n        didScheduleLegacyUpdate: !1,\n        didUsePromise: !1,\n        thrownErrors: [],\n        getCurrentStack: null,\n        recentlyCreatedOwnerStacks: 0\n      },\n      hasOwnProperty = Object.prototype.hasOwnProperty,\n      createTask = console.createTask\n        ? console.createTask\n        : function () {\n            return null;\n          };\n    deprecatedAPIs = {\n      react_stack_bottom_frame: function (callStackForError) {\n        return callStackForError();\n      }\n    };\n    var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;\n    var didWarnAboutElementRef = {};\n    var unknownOwnerDebugStack = deprecatedAPIs.react_stack_bottom_frame.bind(\n      deprecatedAPIs,\n      UnknownOwner\n    )();\n    var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n    var didWarnAboutMaps = !1,\n      userProvidedKeyEscapeRegex = /\\/+/g,\n      reportGlobalError =\n        \"function\" === typeof reportError\n          ? reportError\n          : function (error) {\n              if (\n                \"object\" === typeof window &&\n                \"function\" === typeof window.ErrorEvent\n              ) {\n                var event = new window.ErrorEvent(\"error\", {\n                  bubbles: !0,\n                  cancelable: !0,\n                  message:\n                    \"object\" === typeof error &&\n                    null !== error &&\n                    \"string\" === typeof error.message\n                      ? String(error.message)\n                      : String(error),\n                  error: error\n                });\n                if (!window.dispatchEvent(event)) return;\n              } else if (\n                \"object\" === typeof process &&\n                \"function\" === typeof process.emit\n              ) {\n                process.emit(\"uncaughtException\", error);\n                return;\n              }\n              console.error(error);\n            },\n      didWarnAboutMessageChannel = !1,\n      enqueueTaskImpl = null,\n      actScopeDepth = 0,\n      didWarnNoAwaitAct = !1,\n      isFlushing = !1,\n      queueSeveralMicrotasks =\n        \"function\" === typeof queueMicrotask\n          ? function (callback) {\n              queueMicrotask(function () {\n                return queueMicrotask(callback);\n              });\n            }\n          : enqueueTask;\n    deprecatedAPIs = Object.freeze({\n      __proto__: null,\n      c: function (size) {\n        return resolveDispatcher().useMemoCache(size);\n      }\n    });\n    var fnName = {\n      map: mapChildren,\n      forEach: function (children, forEachFunc, forEachContext) {\n        mapChildren(\n          children,\n          function () {\n            forEachFunc.apply(this, arguments);\n          },\n          forEachContext\n        );\n      },\n      count: function (children) {\n        var n = 0;\n        mapChildren(children, function () {\n          n++;\n        });\n        return n;\n      },\n      toArray: function (children) {\n        return (\n          mapChildren(children, function (child) {\n            return child;\n          }) || []\n        );\n      },\n      only: function (children) {\n        if (!isValidElement(children))\n          throw Error(\n            \"React.Children.only expected to receive a single React element child.\"\n          );\n        return children;\n      }\n    };\n    exports.Activity = REACT_ACTIVITY_TYPE;\n    exports.Children = fnName;\n    exports.Component = Component;\n    exports.Fragment = REACT_FRAGMENT_TYPE;\n    exports.Profiler = REACT_PROFILER_TYPE;\n    exports.PureComponent = PureComponent;\n    exports.StrictMode = REACT_STRICT_MODE_TYPE;\n    exports.Suspense = REACT_SUSPENSE_TYPE;\n    exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n      ReactSharedInternals;\n    exports.__COMPILER_RUNTIME = deprecatedAPIs;\n    exports.act = function (callback) {\n      var prevActQueue = ReactSharedInternals.actQueue,\n        prevActScopeDepth = actScopeDepth;\n      actScopeDepth++;\n      var queue = (ReactSharedInternals.actQueue =\n          null !== prevActQueue ? prevActQueue : []),\n        didAwaitActCall = !1;\n      try {\n        var result = callback();\n      } catch (error) {\n        ReactSharedInternals.thrownErrors.push(error);\n      }\n      if (0 < ReactSharedInternals.thrownErrors.length)\n        throw (\n          (popActScope(prevActQueue, prevActScopeDepth),\n          (callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n          (ReactSharedInternals.thrownErrors.length = 0),\n          callback)\n        );\n      if (\n        null !== result &&\n        \"object\" === typeof result &&\n        \"function\" === typeof result.then\n      ) {\n        var thenable = result;\n        queueSeveralMicrotasks(function () {\n          didAwaitActCall ||\n            didWarnNoAwaitAct ||\n            ((didWarnNoAwaitAct = !0),\n            console.error(\n              \"You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);\"\n            ));\n        });\n        return {\n          then: function (resolve, reject) {\n            didAwaitActCall = !0;\n            thenable.then(\n              function (returnValue) {\n                popActScope(prevActQueue, prevActScopeDepth);\n                if (0 === prevActScopeDepth) {\n                  try {\n                    flushActQueue(queue),\n                      enqueueTask(function () {\n                        return recursivelyFlushAsyncActWork(\n                          returnValue,\n                          resolve,\n                          reject\n                        );\n                      });\n                  } catch (error$0) {\n                    ReactSharedInternals.thrownErrors.push(error$0);\n                  }\n                  if (0 < ReactSharedInternals.thrownErrors.length) {\n                    var _thrownError = aggregateErrors(\n                      ReactSharedInternals.thrownErrors\n                    );\n                    ReactSharedInternals.thrownErrors.length = 0;\n                    reject(_thrownError);\n                  }\n                } else resolve(returnValue);\n              },\n              function (error) {\n                popActScope(prevActQueue, prevActScopeDepth);\n                0 < ReactSharedInternals.thrownErrors.length\n                  ? ((error = aggregateErrors(\n                      ReactSharedInternals.thrownErrors\n                    )),\n                    (ReactSharedInternals.thrownErrors.length = 0),\n                    reject(error))\n                  : reject(error);\n              }\n            );\n          }\n        };\n      }\n      var returnValue$jscomp$0 = result;\n      popActScope(prevActQueue, prevActScopeDepth);\n      0 === prevActScopeDepth &&\n        (flushActQueue(queue),\n        0 !== queue.length &&\n          queueSeveralMicrotasks(function () {\n            didAwaitActCall ||\n              didWarnNoAwaitAct ||\n              ((didWarnNoAwaitAct = !0),\n              console.error(\n                \"A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\\n\\nawait act(() => ...)\"\n              ));\n          }),\n        (ReactSharedInternals.actQueue = null));\n      if (0 < ReactSharedInternals.thrownErrors.length)\n        throw (\n          ((callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n          (ReactSharedInternals.thrownErrors.length = 0),\n          callback)\n        );\n      return {\n        then: function (resolve, reject) {\n          didAwaitActCall = !0;\n          0 === prevActScopeDepth\n            ? ((ReactSharedInternals.actQueue = queue),\n              enqueueTask(function () {\n                return recursivelyFlushAsyncActWork(\n                  returnValue$jscomp$0,\n                  resolve,\n                  reject\n                );\n              }))\n            : resolve(returnValue$jscomp$0);\n        }\n      };\n    };\n    exports.cache = function (fn) {\n      return function () {\n        return fn.apply(null, arguments);\n      };\n    };\n    exports.cacheSignal = function () {\n      return null;\n    };\n    exports.captureOwnerStack = function () {\n      var getCurrentStack = ReactSharedInternals.getCurrentStack;\n      return null === getCurrentStack ? null : getCurrentStack();\n    };\n    exports.cloneElement = function (element, config, children) {\n      if (null === element || void 0 === element)\n        throw Error(\n          \"The argument must be a React element, but you passed \" +\n            element +\n            \".\"\n        );\n      var props = assign({}, element.props),\n        key = element.key,\n        owner = element._owner;\n      if (null != config) {\n        var JSCompiler_inline_result;\n        a: {\n          if (\n            hasOwnProperty.call(config, \"ref\") &&\n            (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(\n              config,\n              \"ref\"\n            ).get) &&\n            JSCompiler_inline_result.isReactWarning\n          ) {\n            JSCompiler_inline_result = !1;\n            break a;\n          }\n          JSCompiler_inline_result = void 0 !== config.ref;\n        }\n        JSCompiler_inline_result && (owner = getOwner());\n        hasValidKey(config) &&\n          (checkKeyStringCoercion(config.key), (key = \"\" + config.key));\n        for (propName in config)\n          !hasOwnProperty.call(config, propName) ||\n            \"key\" === propName ||\n            \"__self\" === propName ||\n            \"__source\" === propName ||\n            (\"ref\" === propName && void 0 === config.ref) ||\n            (props[propName] = config[propName]);\n      }\n      var propName = arguments.length - 2;\n      if (1 === propName) props.children = children;\n      else if (1 < propName) {\n        JSCompiler_inline_result = Array(propName);\n        for (var i = 0; i < propName; i++)\n          JSCompiler_inline_result[i] = arguments[i + 2];\n        props.children = JSCompiler_inline_result;\n      }\n      props = ReactElement(\n        element.type,\n        key,\n        props,\n        owner,\n        element._debugStack,\n        element._debugTask\n      );\n      for (key = 2; key < arguments.length; key++)\n        validateChildKeys(arguments[key]);\n      return props;\n    };\n    exports.createContext = function (defaultValue) {\n      defaultValue = {\n        $$typeof: REACT_CONTEXT_TYPE,\n        _currentValue: defaultValue,\n        _currentValue2: defaultValue,\n        _threadCount: 0,\n        Provider: null,\n        Consumer: null\n      };\n      defaultValue.Provider = defaultValue;\n      defaultValue.Consumer = {\n        $$typeof: REACT_CONSUMER_TYPE,\n        _context: defaultValue\n      };\n      defaultValue._currentRenderer = null;\n      defaultValue._currentRenderer2 = null;\n      return defaultValue;\n    };\n    exports.createElement = function (type, config, children) {\n      for (var i = 2; i < arguments.length; i++)\n        validateChildKeys(arguments[i]);\n      i = {};\n      var key = null;\n      if (null != config)\n        for (propName in (didWarnAboutOldJSXRuntime ||\n          !(\"__self\" in config) ||\n          \"key\" in config ||\n          ((didWarnAboutOldJSXRuntime = !0),\n          console.warn(\n            \"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\"\n          )),\n        hasValidKey(config) &&\n          (checkKeyStringCoercion(config.key), (key = \"\" + config.key)),\n        config))\n          hasOwnProperty.call(config, propName) &&\n            \"key\" !== propName &&\n            \"__self\" !== propName &&\n            \"__source\" !== propName &&\n            (i[propName] = config[propName]);\n      var childrenLength = arguments.length - 2;\n      if (1 === childrenLength) i.children = children;\n      else if (1 < childrenLength) {\n        for (\n          var childArray = Array(childrenLength), _i = 0;\n          _i < childrenLength;\n          _i++\n        )\n          childArray[_i] = arguments[_i + 2];\n        Object.freeze && Object.freeze(childArray);\n        i.children = childArray;\n      }\n      if (type && type.defaultProps)\n        for (propName in ((childrenLength = type.defaultProps), childrenLength))\n          void 0 === i[propName] && (i[propName] = childrenLength[propName]);\n      key &&\n        defineKeyPropWarningGetter(\n          i,\n          \"function\" === typeof type\n            ? type.displayName || type.name || \"Unknown\"\n            : type\n        );\n      var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n      return ReactElement(\n        type,\n        key,\n        i,\n        getOwner(),\n        propName ? Error(\"react-stack-top-frame\") : unknownOwnerDebugStack,\n        propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n      );\n    };\n    exports.createRef = function () {\n      var refObject = { current: null };\n      Object.seal(refObject);\n      return refObject;\n    };\n    exports.forwardRef = function (render) {\n      null != render && render.$$typeof === REACT_MEMO_TYPE\n        ? console.error(\n            \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).\"\n          )\n        : \"function\" !== typeof render\n          ? console.error(\n              \"forwardRef requires a render function but was given %s.\",\n              null === render ? \"null\" : typeof render\n            )\n          : 0 !== render.length &&\n            2 !== render.length &&\n            console.error(\n              \"forwardRef render functions accept exactly two parameters: props and ref. %s\",\n              1 === render.length\n                ? \"Did you forget to use the ref parameter?\"\n                : \"Any additional parameter will be undefined.\"\n            );\n      null != render &&\n        null != render.defaultProps &&\n        console.error(\n          \"forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?\"\n        );\n      var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render: render },\n        ownName;\n      Object.defineProperty(elementType, \"displayName\", {\n        enumerable: !1,\n        configurable: !0,\n        get: function () {\n          return ownName;\n        },\n        set: function (name) {\n          ownName = name;\n          render.name ||\n            render.displayName ||\n            (Object.defineProperty(render, \"name\", { value: name }),\n            (render.displayName = name));\n        }\n      });\n      return elementType;\n    };\n    exports.isValidElement = isValidElement;\n    exports.lazy = function (ctor) {\n      ctor = { _status: -1, _result: ctor };\n      var lazyType = {\n          $$typeof: REACT_LAZY_TYPE,\n          _payload: ctor,\n          _init: lazyInitializer\n        },\n        ioInfo = {\n          name: \"lazy\",\n          start: -1,\n          end: -1,\n          value: null,\n          owner: null,\n          debugStack: Error(\"react-stack-top-frame\"),\n          debugTask: console.createTask ? console.createTask(\"lazy()\") : null\n        };\n      ctor._ioInfo = ioInfo;\n      lazyType._debugInfo = [{ awaited: ioInfo }];\n      return lazyType;\n    };\n    exports.memo = function (type, compare) {\n      null == type &&\n        console.error(\n          \"memo: The first argument must be a component. Instead received: %s\",\n          null === type ? \"null\" : typeof type\n        );\n      compare = {\n        $$typeof: REACT_MEMO_TYPE,\n        type: type,\n        compare: void 0 === compare ? null : compare\n      };\n      var ownName;\n      Object.defineProperty(compare, \"displayName\", {\n        enumerable: !1,\n        configurable: !0,\n        get: function () {\n          return ownName;\n        },\n        set: function (name) {\n          ownName = name;\n          type.name ||\n            type.displayName ||\n            (Object.defineProperty(type, \"name\", { value: name }),\n            (type.displayName = name));\n        }\n      });\n      return compare;\n    };\n    exports.startTransition = function (scope) {\n      var prevTransition = ReactSharedInternals.T,\n        currentTransition = {};\n      currentTransition._updatedFibers = new Set();\n      ReactSharedInternals.T = currentTransition;\n      try {\n        var returnValue = scope(),\n          onStartTransitionFinish = ReactSharedInternals.S;\n        null !== onStartTransitionFinish &&\n          onStartTransitionFinish(currentTransition, returnValue);\n        \"object\" === typeof returnValue &&\n          null !== returnValue &&\n          \"function\" === typeof returnValue.then &&\n          (ReactSharedInternals.asyncTransitions++,\n          returnValue.then(releaseAsyncTransition, releaseAsyncTransition),\n          returnValue.then(noop, reportGlobalError));\n      } catch (error) {\n        reportGlobalError(error);\n      } finally {\n        null === prevTransition &&\n          currentTransition._updatedFibers &&\n          ((scope = currentTransition._updatedFibers.size),\n          currentTransition._updatedFibers.clear(),\n          10 < scope &&\n            console.warn(\n              \"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\"\n            )),\n          null !== prevTransition &&\n            null !== currentTransition.types &&\n            (null !== prevTransition.types &&\n              prevTransition.types !== currentTransition.types &&\n              console.error(\n                \"We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React.\"\n              ),\n            (prevTransition.types = currentTransition.types)),\n          (ReactSharedInternals.T = prevTransition);\n      }\n    };\n    exports.unstable_useCacheRefresh = function () {\n      return resolveDispatcher().useCacheRefresh();\n    };\n    exports.use = function (usable) {\n      return resolveDispatcher().use(usable);\n    };\n    exports.useActionState = function (action, initialState, permalink) {\n      return resolveDispatcher().useActionState(\n        action,\n        initialState,\n        permalink\n      );\n    };\n    exports.useCallback = function (callback, deps) {\n      return resolveDispatcher().useCallback(callback, deps);\n    };\n    exports.useContext = function (Context) {\n      var dispatcher = resolveDispatcher();\n      Context.$$typeof === REACT_CONSUMER_TYPE &&\n        console.error(\n          \"Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?\"\n        );\n      return dispatcher.useContext(Context);\n    };\n    exports.useDebugValue = function (value, formatterFn) {\n      return resolveDispatcher().useDebugValue(value, formatterFn);\n    };\n    exports.useDeferredValue = function (value, initialValue) {\n      return resolveDispatcher().useDeferredValue(value, initialValue);\n    };\n    exports.useEffect = function (create, deps) {\n      null == create &&\n        console.warn(\n          \"React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n        );\n      return resolveDispatcher().useEffect(create, deps);\n    };\n    exports.useEffectEvent = function (callback) {\n      return resolveDispatcher().useEffectEvent(callback);\n    };\n    exports.useId = function () {\n      return resolveDispatcher().useId();\n    };\n    exports.useImperativeHandle = function (ref, create, deps) {\n      return resolveDispatcher().useImperativeHandle(ref, create, deps);\n    };\n    exports.useInsertionEffect = function (create, deps) {\n      null == create &&\n        console.warn(\n          \"React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n        );\n      return resolveDispatcher().useInsertionEffect(create, deps);\n    };\n    exports.useLayoutEffect = function (create, deps) {\n      null == create &&\n        console.warn(\n          \"React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n        );\n      return resolveDispatcher().useLayoutEffect(create, deps);\n    };\n    exports.useMemo = function (create, deps) {\n      return resolveDispatcher().useMemo(create, deps);\n    };\n    exports.useOptimistic = function (passthrough, reducer) {\n      return resolveDispatcher().useOptimistic(passthrough, reducer);\n    };\n    exports.useReducer = function (reducer, initialArg, init) {\n      return resolveDispatcher().useReducer(reducer, initialArg, init);\n    };\n    exports.useRef = function (initialValue) {\n      return resolveDispatcher().useRef(initialValue);\n    };\n    exports.useState = function (initialState) {\n      return resolveDispatcher().useState(initialState);\n    };\n    exports.useSyncExternalStore = function (\n      subscribe,\n      getSnapshot,\n      getServerSnapshot\n    ) {\n      return resolveDispatcher().useSyncExternalStore(\n        subscribe,\n        getSnapshot,\n        getServerSnapshot\n      );\n    };\n    exports.useTransition = function () {\n      return resolveDispatcher().useTransition();\n    };\n    exports.version = \"19.2.5\";\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\n\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function getComponentNameFromType(type) {\n      if (null == type) return null;\n      if (\"function\" === typeof type)\n        return type.$$typeof === REACT_CLIENT_REFERENCE\n          ? null\n          : type.displayName || type.name || null;\n      if (\"string\" === typeof type) return type;\n      switch (type) {\n        case REACT_FRAGMENT_TYPE:\n          return \"Fragment\";\n        case REACT_PROFILER_TYPE:\n          return \"Profiler\";\n        case REACT_STRICT_MODE_TYPE:\n          return \"StrictMode\";\n        case REACT_SUSPENSE_TYPE:\n          return \"Suspense\";\n        case REACT_SUSPENSE_LIST_TYPE:\n          return \"SuspenseList\";\n        case REACT_ACTIVITY_TYPE:\n          return \"Activity\";\n      }\n      if (\"object\" === typeof type)\n        switch (\n          (\"number\" === typeof type.tag &&\n            console.error(\n              \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n            ),\n          type.$$typeof)\n        ) {\n          case REACT_PORTAL_TYPE:\n            return \"Portal\";\n          case REACT_CONTEXT_TYPE:\n            return type.displayName || \"Context\";\n          case REACT_CONSUMER_TYPE:\n            return (type._context.displayName || \"Context\") + \".Consumer\";\n          case REACT_FORWARD_REF_TYPE:\n            var innerType = type.render;\n            type = type.displayName;\n            type ||\n              ((type = innerType.displayName || innerType.name || \"\"),\n              (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n            return type;\n          case REACT_MEMO_TYPE:\n            return (\n              (innerType = type.displayName || null),\n              null !== innerType\n                ? innerType\n                : getComponentNameFromType(type.type) || \"Memo\"\n            );\n          case REACT_LAZY_TYPE:\n            innerType = type._payload;\n            type = type._init;\n            try {\n              return getComponentNameFromType(type(innerType));\n            } catch (x) {}\n        }\n      return null;\n    }\n    function testStringCoercion(value) {\n      return \"\" + value;\n    }\n    function checkKeyStringCoercion(value) {\n      try {\n        testStringCoercion(value);\n        var JSCompiler_inline_result = !1;\n      } catch (e) {\n        JSCompiler_inline_result = !0;\n      }\n      if (JSCompiler_inline_result) {\n        JSCompiler_inline_result = console;\n        var JSCompiler_temp_const = JSCompiler_inline_result.error;\n        var JSCompiler_inline_result$jscomp$0 =\n          (\"function\" === typeof Symbol &&\n            Symbol.toStringTag &&\n            value[Symbol.toStringTag]) ||\n          value.constructor.name ||\n          \"Object\";\n        JSCompiler_temp_const.call(\n          JSCompiler_inline_result,\n          \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n          JSCompiler_inline_result$jscomp$0\n        );\n        return testStringCoercion(value);\n      }\n    }\n    function getTaskName(type) {\n      if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n      if (\n        \"object\" === typeof type &&\n        null !== type &&\n        type.$$typeof === REACT_LAZY_TYPE\n      )\n        return \"<...>\";\n      try {\n        var name = getComponentNameFromType(type);\n        return name ? \"<\" + name + \">\" : \"<...>\";\n      } catch (x) {\n        return \"<...>\";\n      }\n    }\n    function getOwner() {\n      var dispatcher = ReactSharedInternals.A;\n      return null === dispatcher ? null : dispatcher.getOwner();\n    }\n    function UnknownOwner() {\n      return Error(\"react-stack-top-frame\");\n    }\n    function hasValidKey(config) {\n      if (hasOwnProperty.call(config, \"key\")) {\n        var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n        if (getter && getter.isReactWarning) return !1;\n      }\n      return void 0 !== config.key;\n    }\n    function defineKeyPropWarningGetter(props, displayName) {\n      function warnAboutAccessingKey() {\n        specialPropKeyWarningShown ||\n          ((specialPropKeyWarningShown = !0),\n          console.error(\n            \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n            displayName\n          ));\n      }\n      warnAboutAccessingKey.isReactWarning = !0;\n      Object.defineProperty(props, \"key\", {\n        get: warnAboutAccessingKey,\n        configurable: !0\n      });\n    }\n    function elementRefGetterWithDeprecationWarning() {\n      var componentName = getComponentNameFromType(this.type);\n      didWarnAboutElementRef[componentName] ||\n        ((didWarnAboutElementRef[componentName] = !0),\n        console.error(\n          \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n        ));\n      componentName = this.props.ref;\n      return void 0 !== componentName ? componentName : null;\n    }\n    function ReactElement(type, key, props, owner, debugStack, debugTask) {\n      var refProp = props.ref;\n      type = {\n        $$typeof: REACT_ELEMENT_TYPE,\n        type: type,\n        key: key,\n        props: props,\n        _owner: owner\n      };\n      null !== (void 0 !== refProp ? refProp : null)\n        ? Object.defineProperty(type, \"ref\", {\n            enumerable: !1,\n            get: elementRefGetterWithDeprecationWarning\n          })\n        : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n      type._store = {};\n      Object.defineProperty(type._store, \"validated\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: 0\n      });\n      Object.defineProperty(type, \"_debugInfo\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: null\n      });\n      Object.defineProperty(type, \"_debugStack\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugStack\n      });\n      Object.defineProperty(type, \"_debugTask\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugTask\n      });\n      Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n      return type;\n    }\n    function jsxDEVImpl(\n      type,\n      config,\n      maybeKey,\n      isStaticChildren,\n      debugStack,\n      debugTask\n    ) {\n      var children = config.children;\n      if (void 0 !== children)\n        if (isStaticChildren)\n          if (isArrayImpl(children)) {\n            for (\n              isStaticChildren = 0;\n              isStaticChildren < children.length;\n              isStaticChildren++\n            )\n              validateChildKeys(children[isStaticChildren]);\n            Object.freeze && Object.freeze(children);\n          } else\n            console.error(\n              \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n            );\n        else validateChildKeys(children);\n      if (hasOwnProperty.call(config, \"key\")) {\n        children = getComponentNameFromType(type);\n        var keys = Object.keys(config).filter(function (k) {\n          return \"key\" !== k;\n        });\n        isStaticChildren =\n          0 < keys.length\n            ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n            : \"{key: someKey}\";\n        didWarnAboutKeySpread[children + isStaticChildren] ||\n          ((keys =\n            0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n          console.error(\n            'A props object containing a \"key\" prop is being spread into JSX:\\n  let props = %s;\\n  <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n  let props = %s;\\n  <%s key={someKey} {...props} />',\n            isStaticChildren,\n            children,\n            keys,\n            children\n          ),\n          (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n      }\n      children = null;\n      void 0 !== maybeKey &&\n        (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n      hasValidKey(config) &&\n        (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n      if (\"key\" in config) {\n        maybeKey = {};\n        for (var propName in config)\n          \"key\" !== propName && (maybeKey[propName] = config[propName]);\n      } else maybeKey = config;\n      children &&\n        defineKeyPropWarningGetter(\n          maybeKey,\n          \"function\" === typeof type\n            ? type.displayName || type.name || \"Unknown\"\n            : type\n        );\n      return ReactElement(\n        type,\n        children,\n        maybeKey,\n        getOwner(),\n        debugStack,\n        debugTask\n      );\n    }\n    function validateChildKeys(node) {\n      isValidElement(node)\n        ? node._store && (node._store.validated = 1)\n        : \"object\" === typeof node &&\n          null !== node &&\n          node.$$typeof === REACT_LAZY_TYPE &&\n          (\"fulfilled\" === node._payload.status\n            ? isValidElement(node._payload.value) &&\n              node._payload.value._store &&\n              (node._payload.value._store.validated = 1)\n            : node._store && (node._store.validated = 1));\n    }\n    function isValidElement(object) {\n      return (\n        \"object\" === typeof object &&\n        null !== object &&\n        object.$$typeof === REACT_ELEMENT_TYPE\n      );\n    }\n    var React = require(\"react\"),\n      REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n      REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n      REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n      REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n      REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n      REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n      REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n      REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n      REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n      REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n      REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n      REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n      REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n      REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n      ReactSharedInternals =\n        React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n      hasOwnProperty = Object.prototype.hasOwnProperty,\n      isArrayImpl = Array.isArray,\n      createTask = console.createTask\n        ? console.createTask\n        : function () {\n            return null;\n          };\n    React = {\n      react_stack_bottom_frame: function (callStackForError) {\n        return callStackForError();\n      }\n    };\n    var specialPropKeyWarningShown;\n    var didWarnAboutElementRef = {};\n    var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n      React,\n      UnknownOwner\n    )();\n    var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n    var didWarnAboutKeySpread = {};\n    exports.Fragment = REACT_FRAGMENT_TYPE;\n    exports.jsx = function (type, config, maybeKey) {\n      var trackActualOwner =\n        1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n      return jsxDEVImpl(\n        type,\n        config,\n        maybeKey,\n        !1,\n        trackActualOwner\n          ? Error(\"react-stack-top-frame\")\n          : unknownOwnerDebugStack,\n        trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n      );\n    };\n    exports.jsxs = function (type, config, maybeKey) {\n      var trackActualOwner =\n        1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n      return jsxDEVImpl(\n        type,\n        config,\n        maybeKey,\n        !0,\n        trackActualOwner\n          ? Error(\"react-stack-top-frame\")\n          : unknownOwnerDebugStack,\n        trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n      );\n    };\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","function addUniqueItem(arr, item) {\n    if (arr.indexOf(item) === -1)\n        arr.push(item);\n}\nfunction removeItem(arr, item) {\n    const index = arr.indexOf(item);\n    if (index > -1)\n        arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n    const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n    if (startIndex >= 0 && startIndex < arr.length) {\n        const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n        const [item] = arr.splice(fromIndex, 1);\n        arr.splice(endIndex, 0, item);\n    }\n    return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n//# sourceMappingURL=array.mjs.map\n","const clamp = (min, max, v) => {\n    if (v > max)\n        return max;\n    if (v < min)\n        return min;\n    return v;\n};\n\nexport { clamp };\n//# sourceMappingURL=clamp.mjs.map\n","function formatErrorMessage(message, errorCode) {\n    return errorCode\n        ? `${message}. For more information and steps for solving, visit https://motion.dev/troubleshooting/${errorCode}`\n        : message;\n}\n\nexport { formatErrorMessage };\n//# sourceMappingURL=format-error-message.mjs.map\n","import { formatErrorMessage } from './format-error-message.mjs';\n\nlet warning = () => { };\nlet invariant = () => { };\nif (typeof process !== \"undefined\" &&\n    process.env?.NODE_ENV !== \"production\") {\n    warning = (check, message, errorCode) => {\n        if (!check && typeof console !== \"undefined\") {\n            console.warn(formatErrorMessage(message, errorCode));\n        }\n    };\n    invariant = (check, message, errorCode) => {\n        if (!check) {\n            throw new Error(formatErrorMessage(message, errorCode));\n        }\n    };\n}\n\nexport { invariant, warning };\n//# sourceMappingURL=errors.mjs.map\n","const MotionGlobalConfig = {};\n\nexport { MotionGlobalConfig };\n//# sourceMappingURL=global-config.mjs.map\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\nexport { isNumericalString };\n//# sourceMappingURL=is-numerical-string.mjs.map\n","const isObject = (value) => typeof value === \"object\" && value !== null;\n\nexport { isObject };\n//# sourceMappingURL=is-object.mjs.map\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\nexport { isZeroValueString };\n//# sourceMappingURL=is-zero-value-string.mjs.map\n","/*#__NO_SIDE_EFFECTS__*/\nfunction memo(callback) {\n    let result;\n    return () => {\n        if (result === undefined)\n            result = callback();\n        return result;\n    };\n}\n\nexport { memo };\n//# sourceMappingURL=memo.mjs.map\n","/*#__NO_SIDE_EFFECTS__*/\nconst noop = (any) => any;\n\nexport { noop };\n//# sourceMappingURL=noop.mjs.map\n","/**\n * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param  {...functions} transformers\n * @return {function}\n */\nconst pipe = (...transformers) => transformers.reduce((a, b) => (v) => b(a(v)));\n\nexport { pipe };\n//# sourceMappingURL=pipe.mjs.map\n","/*\n  Progress within given range\n\n  Given a lower limit and an upper limit, we return the progress\n  (expressed as a number 0-1) represented by the given value, and\n  limit that progress to within 0-1.\n*/\n/*#__NO_SIDE_EFFECTS__*/\nconst progress = (from, to, value) => {\n    const range = to - from;\n    return range ? (value - from) / range : 1;\n};\n\nexport { progress };\n//# sourceMappingURL=progress.mjs.map\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n    constructor() {\n        this.subscriptions = [];\n    }\n    add(handler) {\n        addUniqueItem(this.subscriptions, handler);\n        return () => removeItem(this.subscriptions, handler);\n    }\n    notify(a, b, c) {\n        const numSubscriptions = this.subscriptions.length;\n        if (!numSubscriptions)\n            return;\n        if (numSubscriptions === 1) {\n            /**\n             * If there's only a single handler we can just call it without invoking a loop.\n             */\n            this.subscriptions[0](a, b, c);\n        }\n        else {\n            for (let i = 0; i < numSubscriptions; i++) {\n                /**\n                 * Check whether the handler exists before firing as it's possible\n                 * the subscriptions were modified during this loop running.\n                 */\n                const handler = this.subscriptions[i];\n                handler && handler(a, b, c);\n            }\n        }\n    }\n    getSize() {\n        return this.subscriptions.length;\n    }\n    clear() {\n        this.subscriptions.length = 0;\n    }\n}\n\nexport { SubscriptionManager };\n//# sourceMappingURL=subscription-manager.mjs.map\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\n/*#__NO_SIDE_EFFECTS__*/\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\n/*#__NO_SIDE_EFFECTS__*/\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n//# sourceMappingURL=time-conversion.mjs.map\n","/*\n  Convert velocity into velocity per second\n*/\n/*#__NO_SIDE_EFFECTS__*/\nconst velocityPerSecond = (velocity, frameDuration) => frameDuration ? velocity * (1000 / frameDuration) : 0;\n\nexport { velocityPerSecond };\n//# sourceMappingURL=velocity-per-second.mjs.map\n","import { formatErrorMessage } from './format-error-message.mjs';\n\nconst warned = new Set();\nfunction hasWarned(message) {\n    return warned.has(message);\n}\nfunction warnOnce(condition, message, errorCode) {\n    if (condition || warned.has(message))\n        return;\n    console.warn(formatErrorMessage(message, errorCode));\n    warned.add(message);\n}\n\nexport { hasWarned, warnOnce };\n//# sourceMappingURL=warn-once.mjs.map\n","const wrap = (min, max, v) => {\n    const rangeSize = max - min;\n    return ((((v - min) % rangeSize) + rangeSize) % rangeSize) + min;\n};\n\nexport { wrap };\n//# sourceMappingURL=wrap.mjs.map\n","import { noop } from '../noop.mjs';\n\n/*\n  Bezier function generator\n  This has been modified from Gaëtan Renaudeau's BezierEasing\n  https://github.com/gre/bezier-easing/blob/master/src/index.js\n  https://github.com/gre/bezier-easing/blob/master/LICENSE\n  \n  I've removed the newtonRaphsonIterate algo because in benchmarking it\n  wasn't noticeably faster than binarySubdivision, indeed removing it\n  usually improved times, depending on the curve.\n  I also removed the lookup table, as for the added bundle size and loop we're\n  only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n  to 12 to compensate and this still tended to be faster for no perceivable\n  loss in accuracy.\n  Usage\n    const easeOut = cubicBezier(.17,.67,.83,.67);\n    const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n    t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n    let currentX;\n    let currentT;\n    let i = 0;\n    do {\n        currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n        currentX = calcBezier(currentT, mX1, mX2) - x;\n        if (currentX > 0.0) {\n            upperBound = currentT;\n        }\n        else {\n            lowerBound = currentT;\n        }\n    } while (Math.abs(currentX) > subdivisionPrecision &&\n        ++i < subdivisionMaxIterations);\n    return currentT;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n    // If this is a linear gradient, return linear easing\n    if (mX1 === mY1 && mX2 === mY2)\n        return noop;\n    const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n    // If animation is at start/end, return t without easing\n    return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n//# sourceMappingURL=cubic-bezier.mjs.map\n","// Accepts an easing function and returns a new one that outputs mirrored values for\n// the second half of the animation. Turns easeIn into easeInOut.\n/*#__NO_SIDE_EFFECTS__*/\nconst mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\nexport { mirrorEasing };\n//# sourceMappingURL=mirror.mjs.map\n","// Accepts an easing function and returns a new one that outputs reversed values.\n// Turns easeIn into easeOut.\n/*#__NO_SIDE_EFFECTS__*/\nconst reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\nexport { reverseEasing };\n//# sourceMappingURL=reverse.mjs.map\n","import { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = /*@__PURE__*/ cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = /*@__PURE__*/ reverseEasing(backOut);\nconst backInOut = /*@__PURE__*/ mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n//# sourceMappingURL=back.mjs.map\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => p >= 1\n    ? 1\n    : (p *= 2) < 1\n        ? 0.5 * backIn(p)\n        : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n//# sourceMappingURL=anticipate.mjs.map\n","import { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst circIn = (p) => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circIn);\n\nexport { circIn, circInOut, circOut };\n//# sourceMappingURL=circ.mjs.map\n","import { cubicBezier } from './cubic-bezier.mjs';\n\nconst easeIn = /*@__PURE__*/ cubicBezier(0.42, 0, 1, 1);\nconst easeOut = /*@__PURE__*/ cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = /*@__PURE__*/ cubicBezier(0.42, 0, 0.58, 1);\n\nexport { easeIn, easeInOut, easeOut };\n//# sourceMappingURL=ease.mjs.map\n","/*#__NO_SIDE_EFFECTS__*/\nconst isEasingArray = (ease) => {\n    return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n//# sourceMappingURL=is-easing-array.mjs.map\n","import { wrap } from '../../wrap.mjs';\nimport { isEasingArray } from './is-easing-array.mjs';\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction getEasingForSegment(easing, i) {\n    return isEasingArray(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\nexport { getEasingForSegment };\n//# sourceMappingURL=get-easing-for-segment.mjs.map\n","/*#__NO_SIDE_EFFECTS__*/\nconst isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\nexport { isBezierDefinition };\n//# sourceMappingURL=is-bezier-definition.mjs.map\n","import { invariant } from '../../errors.mjs';\nimport { noop } from '../../noop.mjs';\nimport { anticipate } from '../anticipate.mjs';\nimport { backOut, backInOut, backIn } from '../back.mjs';\nimport { circOut, circInOut, circIn } from '../circ.mjs';\nimport { cubicBezier } from '../cubic-bezier.mjs';\nimport { easeOut, easeInOut, easeIn } from '../ease.mjs';\nimport { isBezierDefinition } from './is-bezier-definition.mjs';\n\nconst easingLookup = {\n    linear: noop,\n    easeIn,\n    easeInOut,\n    easeOut,\n    circIn,\n    circInOut,\n    circOut,\n    backIn,\n    backInOut,\n    backOut,\n    anticipate,\n};\nconst isValidEasing = (easing) => {\n    return typeof easing === \"string\";\n};\nconst easingDefinitionToFunction = (definition) => {\n    if (isBezierDefinition(definition)) {\n        // If cubic bezier definition, create bezier curve\n        invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`, \"cubic-bezier-length\");\n        const [x1, y1, x2, y2] = definition;\n        return cubicBezier(x1, y1, x2, y2);\n    }\n    else if (isValidEasing(definition)) {\n        // Else lookup from table\n        invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`, \"invalid-easing-type\");\n        return easingLookup[definition];\n    }\n    return definition;\n};\n\nexport { easingDefinitionToFunction };\n//# sourceMappingURL=map.mjs.map\n","\"use client\";\nimport { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n//# sourceMappingURL=LayoutGroupContext.mjs.map\n","\"use client\";\nimport { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n//# sourceMappingURL=LazyContext.mjs.map\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n    transformPagePoint: (p) => p,\n    isStatic: false,\n    reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n//# sourceMappingURL=MotionConfigContext.mjs.map\n","\"use client\";\nimport { createContext } from 'react';\n\nconst MotionContext = /* @__PURE__ */ createContext({});\n\nexport { MotionContext };\n//# sourceMappingURL=index.mjs.map\n","const stepsOrder = [\n    \"setup\", // Compute\n    \"read\", // Read\n    \"resolveKeyframes\", // Write/Read/Write/Read\n    \"preUpdate\", // Compute\n    \"update\", // Compute\n    \"preRender\", // Compute\n    \"render\", // Write\n    \"postRender\", // Compute\n];\n\nexport { stepsOrder };\n//# sourceMappingURL=order.mjs.map\n","function createRenderStep(runNextFrame) {\n    /**\n     * We create and reuse two queues, one to queue jobs for the current frame\n     * and one for the next. We reuse to avoid triggering GC after x frames.\n     */\n    let thisFrame = new Set();\n    let nextFrame = new Set();\n    /**\n     * Track whether we're currently processing jobs in this step. This way\n     * we can decide whether to schedule new jobs for this frame or next.\n     */\n    let isProcessing = false;\n    let flushNextFrame = false;\n    /**\n     * A set of processes which were marked keepAlive when scheduled.\n     */\n    const toKeepAlive = new WeakSet();\n    let latestFrameData = {\n        delta: 0.0,\n        timestamp: 0.0,\n        isProcessing: false,\n    };\n    function triggerCallback(callback) {\n        if (toKeepAlive.has(callback)) {\n            step.schedule(callback);\n            runNextFrame();\n        }\n        callback(latestFrameData);\n    }\n    const step = {\n        /**\n         * Schedule a process to run on the next frame.\n         */\n        schedule: (callback, keepAlive = false, immediate = false) => {\n            const addToCurrentFrame = immediate && isProcessing;\n            const queue = addToCurrentFrame ? thisFrame : nextFrame;\n            if (keepAlive)\n                toKeepAlive.add(callback);\n            queue.add(callback);\n            return callback;\n        },\n        /**\n         * Cancel the provided callback from running on the next frame.\n         */\n        cancel: (callback) => {\n            nextFrame.delete(callback);\n            toKeepAlive.delete(callback);\n        },\n        /**\n         * Execute all schedule callbacks.\n         */\n        process: (frameData) => {\n            latestFrameData = frameData;\n            /**\n             * If we're already processing we've probably been triggered by a flushSync\n             * inside an existing process. Instead of executing, mark flushNextFrame\n             * as true and ensure we flush the following frame at the end of this one.\n             */\n            if (isProcessing) {\n                flushNextFrame = true;\n                return;\n            }\n            isProcessing = true;\n            // Swap this frame and the next to avoid GC\n            const prevFrame = thisFrame;\n            thisFrame = nextFrame;\n            nextFrame = prevFrame;\n            // Execute this frame\n            thisFrame.forEach(triggerCallback);\n            // Clear the frame so no callbacks remain. This is to avoid\n            // memory leaks should this render step not run for a while.\n            thisFrame.clear();\n            isProcessing = false;\n            if (flushNextFrame) {\n                flushNextFrame = false;\n                step.process(frameData);\n            }\n        },\n    };\n    return step;\n}\n\nexport { createRenderStep };\n//# sourceMappingURL=render-step.mjs.map\n","import { MotionGlobalConfig } from 'motion-utils';\nimport { stepsOrder } from './order.mjs';\nimport { createRenderStep } from './render-step.mjs';\n\nconst maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n    let runNextFrame = false;\n    let useDefaultElapsed = true;\n    const state = {\n        delta: 0.0,\n        timestamp: 0.0,\n        isProcessing: false,\n    };\n    const flagRunNextFrame = () => (runNextFrame = true);\n    const steps = stepsOrder.reduce((acc, key) => {\n        acc[key] = createRenderStep(flagRunNextFrame);\n        return acc;\n    }, {});\n    const { setup, read, resolveKeyframes, preUpdate, update, preRender, render, postRender, } = steps;\n    const processBatch = () => {\n        const useManualTiming = MotionGlobalConfig.useManualTiming;\n        const timestamp = useManualTiming\n            ? state.timestamp\n            : performance.now();\n        runNextFrame = false;\n        if (!useManualTiming) {\n            state.delta = useDefaultElapsed\n                ? 1000 / 60\n                : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n        }\n        state.timestamp = timestamp;\n        state.isProcessing = true;\n        // Unrolled render loop for better per-frame performance\n        setup.process(state);\n        read.process(state);\n        resolveKeyframes.process(state);\n        preUpdate.process(state);\n        update.process(state);\n        preRender.process(state);\n        render.process(state);\n        postRender.process(state);\n        state.isProcessing = false;\n        if (runNextFrame && allowKeepAlive) {\n            useDefaultElapsed = false;\n            scheduleNextBatch(processBatch);\n        }\n    };\n    const wake = () => {\n        runNextFrame = true;\n        useDefaultElapsed = true;\n        if (!state.isProcessing) {\n            scheduleNextBatch(processBatch);\n        }\n    };\n    const schedule = stepsOrder.reduce((acc, key) => {\n        const step = steps[key];\n        acc[key] = (process, keepAlive = false, immediate = false) => {\n            if (!runNextFrame)\n                wake();\n            return step.schedule(process, keepAlive, immediate);\n        };\n        return acc;\n    }, {});\n    const cancel = (process) => {\n        for (let i = 0; i < stepsOrder.length; i++) {\n            steps[stepsOrder[i]].cancel(process);\n        }\n    };\n    return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher };\n//# sourceMappingURL=batcher.mjs.map\n","import { noop } from 'motion-utils';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps, } = /* @__PURE__ */ createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, frameSteps };\n//# sourceMappingURL=frame.mjs.map\n","import { MotionGlobalConfig } from 'motion-utils';\nimport { frameData } from './frame.mjs';\n\nlet now;\nfunction clearTime() {\n    now = undefined;\n}\n/**\n * An eventloop-synchronous alternative to performance.now().\n *\n * Ensures that time measurements remain consistent within a synchronous context.\n * Usually calling performance.now() twice within the same synchronous context\n * will return different values which isn't useful for animations when we're usually\n * trying to sync animations to the same frame.\n */\nconst time = {\n    now: () => {\n        if (now === undefined) {\n            time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming\n                ? frameData.timestamp\n                : performance.now());\n        }\n        return now;\n    },\n    set: (newTime) => {\n        now = newTime;\n        queueMicrotask(clearTime);\n    },\n};\n\nexport { time };\n//# sourceMappingURL=sync-time.mjs.map\n","const checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = \n/*@__PURE__*/ checkStringStartsWith(\"--\");\nconst startsAsVariableToken = \n/*@__PURE__*/ checkStringStartsWith(\"var(--\");\nconst isCSSVariableToken = (value) => {\n    const startsWithToken = startsAsVariableToken(value);\n    if (!startsWithToken)\n        return false;\n    // Ensure any comments are stripped from the value as this can harm performance of the regex.\n    return singleCssVariableRegex.test(value.split(\"/*\")[0].trim());\n};\nconst singleCssVariableRegex = /var\\(--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)$/iu;\n/**\n * Check if a value contains a CSS variable anywhere (e.g. inside calc()).\n * Unlike isCSSVariableToken which checks if the value IS a var() token,\n * this checks if the value CONTAINS var() somewhere in the string.\n */\nfunction containsCSSVariable(value) {\n    if (typeof value !== \"string\")\n        return false;\n    // Strip comments to avoid false positives\n    return value.split(\"/*\")[0].includes(\"var(--\");\n}\n\nexport { containsCSSVariable, isCSSVariableName, isCSSVariableToken };\n//# sourceMappingURL=is-css-variable.mjs.map\n","import { clamp } from 'motion-utils';\n\nconst number = {\n    test: (v) => typeof v === \"number\",\n    parse: parseFloat,\n    transform: (v) => v,\n};\nconst alpha = {\n    ...number,\n    transform: (v) => clamp(0, 1, v),\n};\nconst scale = {\n    ...number,\n    default: 1,\n};\n\nexport { alpha, number, scale };\n//# sourceMappingURL=index.mjs.map\n","// If this number is a decimal, make it just five decimal places\n// to avoid exponents\nconst sanitize = (v) => Math.round(v * 100000) / 100000;\n\nexport { sanitize };\n//# sourceMappingURL=sanitize.mjs.map\n","const floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\n\nexport { floatRegex };\n//# sourceMappingURL=float-regex.mjs.map\n","function isNullish(v) {\n    return v == null;\n}\n\nexport { isNullish };\n//# sourceMappingURL=is-nullish.mjs.map\n","const singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\n\nexport { singleColorRegex };\n//# sourceMappingURL=single-color-regex.mjs.map\n","import { floatRegex } from '../utils/float-regex.mjs';\nimport { isNullish } from '../utils/is-nullish.mjs';\nimport { singleColorRegex } from '../utils/single-color-regex.mjs';\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n    return Boolean((typeof v === \"string\" &&\n        singleColorRegex.test(v) &&\n        v.startsWith(type)) ||\n        (testProp &&\n            !isNullish(v) &&\n            Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n    if (typeof v !== \"string\")\n        return v;\n    const [a, b, c, alpha] = v.match(floatRegex);\n    return {\n        [aName]: parseFloat(a),\n        [bName]: parseFloat(b),\n        [cName]: parseFloat(c),\n        alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n    };\n};\n\nexport { isColorString, splitColor };\n//# sourceMappingURL=utils.mjs.map\n","import { clamp } from 'motion-utils';\nimport { number, alpha } from '../numbers/index.mjs';\nimport { sanitize } from '../utils/sanitize.mjs';\nimport { splitColor, isColorString } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n    ...number,\n    transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n    test: /*@__PURE__*/ isColorString(\"rgb\", \"red\"),\n    parse: /*@__PURE__*/ splitColor(\"red\", \"green\", \"blue\"),\n    transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n        rgbUnit.transform(red) +\n        \", \" +\n        rgbUnit.transform(green) +\n        \", \" +\n        rgbUnit.transform(blue) +\n        \", \" +\n        sanitize(alpha.transform(alpha$1)) +\n        \")\",\n};\n\nexport { rgbUnit, rgba };\n//# sourceMappingURL=rgba.mjs.map\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n    let r = \"\";\n    let g = \"\";\n    let b = \"\";\n    let a = \"\";\n    // If we have 6 characters, ie #FF0000\n    if (v.length > 5) {\n        r = v.substring(1, 3);\n        g = v.substring(3, 5);\n        b = v.substring(5, 7);\n        a = v.substring(7, 9);\n        // Or we have 3 characters, ie #F00\n    }\n    else {\n        r = v.substring(1, 2);\n        g = v.substring(2, 3);\n        b = v.substring(3, 4);\n        a = v.substring(4, 5);\n        r += r;\n        g += g;\n        b += b;\n        a += a;\n    }\n    return {\n        red: parseInt(r, 16),\n        green: parseInt(g, 16),\n        blue: parseInt(b, 16),\n        alpha: a ? parseInt(a, 16) / 255 : 1,\n    };\n}\nconst hex = {\n    test: /*@__PURE__*/ isColorString(\"#\"),\n    parse: parseHex,\n    transform: rgba.transform,\n};\n\nexport { hex };\n//# sourceMappingURL=hex.mjs.map\n","/*#__NO_SIDE_EFFECTS__*/\nconst createUnitType = (unit) => ({\n    test: (v) => typeof v === \"string\" && v.endsWith(unit) && v.split(\" \").length === 1,\n    parse: parseFloat,\n    transform: (v) => `${v}${unit}`,\n});\nconst degrees = /*@__PURE__*/ createUnitType(\"deg\");\nconst percent = /*@__PURE__*/ createUnitType(\"%\");\nconst px = /*@__PURE__*/ createUnitType(\"px\");\nconst vh = /*@__PURE__*/ createUnitType(\"vh\");\nconst vw = /*@__PURE__*/ createUnitType(\"vw\");\nconst progressPercentage = /*@__PURE__*/ (() => ({\n    ...percent,\n    parse: (v) => percent.parse(v) / 100,\n    transform: (v) => percent.transform(v * 100),\n}))();\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n//# sourceMappingURL=units.mjs.map\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils/sanitize.mjs';\nimport { splitColor, isColorString } from './utils.mjs';\n\nconst hsla = {\n    test: /*@__PURE__*/ isColorString(\"hsl\", \"hue\"),\n    parse: /*@__PURE__*/ splitColor(\"hue\", \"saturation\", \"lightness\"),\n    transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n        return (\"hsla(\" +\n            Math.round(hue) +\n            \", \" +\n            percent.transform(sanitize(saturation)) +\n            \", \" +\n            percent.transform(sanitize(lightness)) +\n            \", \" +\n            sanitize(alpha.transform(alpha$1)) +\n            \")\");\n    },\n};\n\nexport { hsla };\n//# sourceMappingURL=hsla.mjs.map\n","import { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n    test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n    parse: (v) => {\n        if (rgba.test(v)) {\n            return rgba.parse(v);\n        }\n        else if (hsla.test(v)) {\n            return hsla.parse(v);\n        }\n        else {\n            return hex.parse(v);\n        }\n    },\n    transform: (v) => {\n        return typeof v === \"string\"\n            ? v\n            : v.hasOwnProperty(\"red\")\n                ? rgba.transform(v)\n                : hsla.transform(v);\n    },\n    getAnimatableNone: (v) => {\n        const parsed = color.parse(v);\n        parsed.alpha = 0;\n        return color.transform(parsed);\n    },\n};\n\nexport { color };\n//# sourceMappingURL=index.mjs.map\n","const colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\n\nexport { colorRegex };\n//# sourceMappingURL=color-regex.mjs.map\n","import { color } from '../color/index.mjs';\nimport { colorRegex } from '../utils/color-regex.mjs';\nimport { floatRegex } from '../utils/float-regex.mjs';\nimport { sanitize } from '../utils/sanitize.mjs';\n\nfunction test(v) {\n    return (isNaN(v) &&\n        typeof v === \"string\" &&\n        (v.match(floatRegex)?.length || 0) +\n            (v.match(colorRegex)?.length || 0) >\n            0);\n}\nconst NUMBER_TOKEN = \"number\";\nconst COLOR_TOKEN = \"color\";\nconst VAR_TOKEN = \"var\";\nconst VAR_FUNCTION_TOKEN = \"var(\";\nconst SPLIT_TOKEN = \"${}\";\n// this regex consists of the `singleCssVariableRegex|rgbHSLValueRegex|digitRegex`\nconst complexRegex = /var\\s*\\(\\s*--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)|#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\)|-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/giu;\nfunction analyseComplexValue(value) {\n    const originalValue = value.toString();\n    const values = [];\n    const indexes = {\n        color: [],\n        number: [],\n        var: [],\n    };\n    const types = [];\n    let i = 0;\n    const tokenised = originalValue.replace(complexRegex, (parsedValue) => {\n        if (color.test(parsedValue)) {\n            indexes.color.push(i);\n            types.push(COLOR_TOKEN);\n            values.push(color.parse(parsedValue));\n        }\n        else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {\n            indexes.var.push(i);\n            types.push(VAR_TOKEN);\n            values.push(parsedValue);\n        }\n        else {\n            indexes.number.push(i);\n            types.push(NUMBER_TOKEN);\n            values.push(parseFloat(parsedValue));\n        }\n        ++i;\n        return SPLIT_TOKEN;\n    });\n    const split = tokenised.split(SPLIT_TOKEN);\n    return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n    return analyseComplexValue(v).values;\n}\nfunction buildTransformer({ split, types }) {\n    const numSections = split.length;\n    return (v) => {\n        let output = \"\";\n        for (let i = 0; i < numSections; i++) {\n            output += split[i];\n            if (v[i] !== undefined) {\n                const type = types[i];\n                if (type === NUMBER_TOKEN) {\n                    output += sanitize(v[i]);\n                }\n                else if (type === COLOR_TOKEN) {\n                    output += color.transform(v[i]);\n                }\n                else {\n                    output += v[i];\n                }\n            }\n        }\n        return output;\n    };\n}\nfunction createTransformer(source) {\n    return buildTransformer(analyseComplexValue(source));\n}\nconst convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : color.test(v) ? color.getAnimatableNone(v) : v;\n/**\n * Convert a parsed value to its zero equivalent, but preserve numbers\n * that act as divisors in CSS calc() expressions.\n *\n * analyseComplexValue extracts numbers from CSS strings and puts the\n * surrounding text into a `split` template array. For example:\n *   \"calc(var(--gap) / 5)\"  →  values: [var(--gap), 5]\n *                               split:  [\"calc(\", \" / \", \")\"]\n *\n * When building a zero-equivalent for animation, naively zeroing all\n * numbers turns the divisor into 0 → \"calc(var(--gap) / 0)\" → NaN.\n * We detect this by checking whether the text preceding a number\n * (split[i]) ends with \"/\" — the CSS calc division operator.\n */\nconst convertToZero = (value, splitBefore) => {\n    if (typeof value === \"number\") {\n        return splitBefore?.trim().endsWith(\"/\") ? value : 0;\n    }\n    return convertNumbersToZero(value);\n};\nfunction getAnimatableNone(v) {\n    const info = analyseComplexValue(v);\n    const transformer = buildTransformer(info);\n    return transformer(info.values.map((value, i) => convertToZero(value, info.split[i])));\n}\nconst complex = {\n    test,\n    parse: parseComplexValue,\n    createTransformer,\n    getAnimatableNone,\n};\n\nexport { analyseComplexValue, complex };\n//# sourceMappingURL=index.mjs.map\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n    if (t < 0)\n        t += 1;\n    if (t > 1)\n        t -= 1;\n    if (t < 1 / 6)\n        return p + (q - p) * 6 * t;\n    if (t < 1 / 2)\n        return q;\n    if (t < 2 / 3)\n        return p + (q - p) * (2 / 3 - t) * 6;\n    return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n    hue /= 360;\n    saturation /= 100;\n    lightness /= 100;\n    let red = 0;\n    let green = 0;\n    let blue = 0;\n    if (!saturation) {\n        red = green = blue = lightness;\n    }\n    else {\n        const q = lightness < 0.5\n            ? lightness * (1 + saturation)\n            : lightness + saturation - lightness * saturation;\n        const p = 2 * lightness - q;\n        red = hueToRgb(p, q, hue + 1 / 3);\n        green = hueToRgb(p, q, hue);\n        blue = hueToRgb(p, q, hue - 1 / 3);\n    }\n    return {\n        red: Math.round(red * 255),\n        green: Math.round(green * 255),\n        blue: Math.round(blue * 255),\n        alpha,\n    };\n}\n\nexport { hslaToRgba };\n//# sourceMappingURL=hsla-to-rgba.mjs.map\n","function mixImmediate(a, b) {\n    return (p) => (p > 0 ? b : a);\n}\n\nexport { mixImmediate };\n//# sourceMappingURL=immediate.mjs.map\n","/*\n  Value in range from progress\n\n  Given a lower limit and an upper limit, we return the value within\n  that range as expressed by progress (usually a number from 0 to 1)\n\n  So progress = 0.5 would change\n\n  from -------- to\n\n  to\n\n  from ---- to\n\n  E.g. from = 10, to = 20, progress = 0.5 => 15\n\n  @param [number]: Lower limit of range\n  @param [number]: Upper limit of range\n  @param [number]: The progress between lower and upper limits expressed 0-1\n  @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mixNumber = (from, to, progress) => {\n    return from + (to - from) * progress;\n};\n\nexport { mixNumber };\n//# sourceMappingURL=number.mjs.map\n","import { warning } from 'motion-utils';\nimport { hex } from '../../value/types/color/hex.mjs';\nimport { hsla } from '../../value/types/color/hsla.mjs';\nimport { hslaToRgba } from '../../value/types/color/hsla-to-rgba.mjs';\nimport { rgba } from '../../value/types/color/rgba.mjs';\nimport { mixImmediate } from './immediate.mjs';\nimport { mixNumber } from './number.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n    const fromExpo = from * from;\n    const expo = v * (to * to - fromExpo) + fromExpo;\n    return expo < 0 ? 0 : Math.sqrt(expo);\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n    const type = getColorType(color);\n    warning(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`, \"color-not-animatable\");\n    if (!Boolean(type))\n        return false;\n    let model = type.parse(color);\n    if (type === hsla) {\n        // TODO Remove this cast - needed since Motion's stricter typing\n        model = hslaToRgba(model);\n    }\n    return model;\n}\nconst mixColor = (from, to) => {\n    const fromRGBA = asRGBA(from);\n    const toRGBA = asRGBA(to);\n    if (!fromRGBA || !toRGBA) {\n        return mixImmediate(from, to);\n    }\n    const blended = { ...fromRGBA };\n    return (v) => {\n        blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n        blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n        blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n        blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n        return rgba.transform(blended);\n    };\n};\n\nexport { mixColor, mixLinearColor };\n//# sourceMappingURL=color.mjs.map\n","const invisibleValues = new Set([\"none\", \"hidden\"]);\n/**\n * Returns a function that, when provided a progress value between 0 and 1,\n * will return the \"none\" or \"hidden\" string only when the progress is that of\n * the origin or target.\n */\nfunction mixVisibility(origin, target) {\n    if (invisibleValues.has(origin)) {\n        return (p) => (p <= 0 ? origin : target);\n    }\n    else {\n        return (p) => (p >= 1 ? target : origin);\n    }\n}\n\nexport { invisibleValues, mixVisibility };\n//# sourceMappingURL=visibility.mjs.map\n","import { pipe, warning } from 'motion-utils';\nimport { isCSSVariableToken } from '../../animation/utils/is-css-variable.mjs';\nimport { color } from '../../value/types/color/index.mjs';\nimport { complex, analyseComplexValue } from '../../value/types/complex/index.mjs';\nimport { mixColor } from './color.mjs';\nimport { mixImmediate } from './immediate.mjs';\nimport { mixNumber as mixNumber$1 } from './number.mjs';\nimport { invisibleValues, mixVisibility } from './visibility.mjs';\n\nfunction mixNumber(a, b) {\n    return (p) => mixNumber$1(a, b, p);\n}\nfunction getMixer(a) {\n    if (typeof a === \"number\") {\n        return mixNumber;\n    }\n    else if (typeof a === \"string\") {\n        return isCSSVariableToken(a)\n            ? mixImmediate\n            : color.test(a)\n                ? mixColor\n                : mixComplex;\n    }\n    else if (Array.isArray(a)) {\n        return mixArray;\n    }\n    else if (typeof a === \"object\") {\n        return color.test(a) ? mixColor : mixObject;\n    }\n    return mixImmediate;\n}\nfunction mixArray(a, b) {\n    const output = [...a];\n    const numValues = output.length;\n    const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n    return (p) => {\n        for (let i = 0; i < numValues; i++) {\n            output[i] = blendValue[i](p);\n        }\n        return output;\n    };\n}\nfunction mixObject(a, b) {\n    const output = { ...a, ...b };\n    const blendValue = {};\n    for (const key in output) {\n        if (a[key] !== undefined && b[key] !== undefined) {\n            blendValue[key] = getMixer(a[key])(a[key], b[key]);\n        }\n    }\n    return (v) => {\n        for (const key in blendValue) {\n            output[key] = blendValue[key](v);\n        }\n        return output;\n    };\n}\nfunction matchOrder(origin, target) {\n    const orderedOrigin = [];\n    const pointers = { color: 0, var: 0, number: 0 };\n    for (let i = 0; i < target.values.length; i++) {\n        const type = target.types[i];\n        const originIndex = origin.indexes[type][pointers[type]];\n        const originValue = origin.values[originIndex] ?? 0;\n        orderedOrigin[i] = originValue;\n        pointers[type]++;\n    }\n    return orderedOrigin;\n}\nconst mixComplex = (origin, target) => {\n    const template = complex.createTransformer(target);\n    const originStats = analyseComplexValue(origin);\n    const targetStats = analyseComplexValue(target);\n    const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length &&\n        originStats.indexes.color.length === targetStats.indexes.color.length &&\n        originStats.indexes.number.length >= targetStats.indexes.number.length;\n    if (canInterpolate) {\n        if ((invisibleValues.has(origin) &&\n            !targetStats.values.length) ||\n            (invisibleValues.has(target) &&\n                !originStats.values.length)) {\n            return mixVisibility(origin, target);\n        }\n        return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);\n    }\n    else {\n        warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`, \"complex-values-different\");\n        return mixImmediate(origin, target);\n    }\n};\n\nexport { getMixer, mixArray, mixComplex, mixObject };\n//# sourceMappingURL=complex.mjs.map\n","import { getMixer } from './complex.mjs';\nimport { mixNumber } from './number.mjs';\n\nfunction mix(from, to, p) {\n    if (typeof from === \"number\" &&\n        typeof to === \"number\" &&\n        typeof p === \"number\") {\n        return mixNumber(from, to, p);\n    }\n    const mixer = getMixer(from);\n    return mixer(from, to);\n}\n\nexport { mix };\n//# sourceMappingURL=index.mjs.map\n","import { time } from '../../frameloop/sync-time.mjs';\nimport { frameData, cancelFrame, frame } from '../../frameloop/frame.mjs';\n\nconst frameloopDriver = (update) => {\n    const passTimestamp = ({ timestamp }) => update(timestamp);\n    return {\n        start: (keepAlive = true) => frame.update(passTimestamp, keepAlive),\n        stop: () => cancelFrame(passTimestamp),\n        /**\n         * If we're processing this frame we can use the\n         * framelocked timestamp to keep things in sync.\n         */\n        now: () => (frameData.isProcessing ? frameData.timestamp : time.now()),\n    };\n};\n\nexport { frameloopDriver };\n//# sourceMappingURL=frame.mjs.map\n","const generateLinearEasing = (easing, duration, // as milliseconds\nresolution = 10 // as milliseconds\n) => {\n    let points = \"\";\n    const numPoints = Math.max(Math.round(duration / resolution), 2);\n    for (let i = 0; i < numPoints; i++) {\n        points += Math.round(easing(i / (numPoints - 1)) * 10000) / 10000 + \", \";\n    }\n    return `linear(${points.substring(0, points.length - 2)})`;\n};\n\nexport { generateLinearEasing };\n//# sourceMappingURL=linear.mjs.map\n","/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxGeneratorDuration = 20000;\nfunction calcGeneratorDuration(generator) {\n    let duration = 0;\n    const timeStep = 50;\n    let state = generator.next(duration);\n    while (!state.done && duration < maxGeneratorDuration) {\n        duration += timeStep;\n        state = generator.next(duration);\n    }\n    return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\nexport { calcGeneratorDuration, maxGeneratorDuration };\n//# sourceMappingURL=calc-duration.mjs.map\n","import { millisecondsToSeconds } from 'motion-utils';\nimport { calcGeneratorDuration, maxGeneratorDuration } from './calc-duration.mjs';\n\n/**\n * Create a progress => progress easing function from a generator.\n */\nfunction createGeneratorEasing(options, scale = 100, createGenerator) {\n    const generator = createGenerator({ ...options, keyframes: [0, scale] });\n    const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n    return {\n        type: \"keyframes\",\n        ease: (progress) => {\n            return generator.next(duration * progress).value / scale;\n        },\n        duration: millisecondsToSeconds(duration),\n    };\n}\n\nexport { createGeneratorEasing };\n//# sourceMappingURL=create-generator-easing.mjs.map\n","import { millisecondsToSeconds, clamp, secondsToMilliseconds, warning } from 'motion-utils';\nimport { generateLinearEasing } from '../waapi/utils/linear.mjs';\nimport { calcGeneratorDuration, maxGeneratorDuration } from './utils/calc-duration.mjs';\nimport { createGeneratorEasing } from './utils/create-generator-easing.mjs';\n\nconst springDefaults = {\n    // Default spring physics\n    stiffness: 100,\n    damping: 10,\n    mass: 1.0,\n    velocity: 0.0,\n    // Default duration/bounce-based options\n    duration: 800, // in ms\n    bounce: 0.3,\n    visualDuration: 0.3, // in seconds\n    // Rest thresholds\n    restSpeed: {\n        granular: 0.01,\n        default: 2,\n    },\n    restDelta: {\n        granular: 0.005,\n        default: 0.5,\n    },\n    // Limits\n    minDuration: 0.01, // in seconds\n    maxDuration: 10.0, // in seconds\n    minDamping: 0.05,\n    maxDamping: 1,\n};\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n    return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n    let result = initialGuess;\n    for (let i = 1; i < rootIterations; i++) {\n        result = result - envelope(result) / derivative(result);\n    }\n    return result;\n}\n/**\n * This is ported from the Framer implementation of duration-based spring resolution.\n */\nconst safeMin = 0.001;\nfunction findSpring({ duration = springDefaults.duration, bounce = springDefaults.bounce, velocity = springDefaults.velocity, mass = springDefaults.mass, }) {\n    let envelope;\n    let derivative;\n    warning(duration <= secondsToMilliseconds(springDefaults.maxDuration), \"Spring duration must be 10 seconds or less\", \"spring-duration-limit\");\n    let dampingRatio = 1 - bounce;\n    /**\n     * Restrict dampingRatio and duration to within acceptable ranges.\n     */\n    dampingRatio = clamp(springDefaults.minDamping, springDefaults.maxDamping, dampingRatio);\n    duration = clamp(springDefaults.minDuration, springDefaults.maxDuration, millisecondsToSeconds(duration));\n    if (dampingRatio < 1) {\n        /**\n         * Underdamped spring\n         */\n        envelope = (undampedFreq) => {\n            const exponentialDecay = undampedFreq * dampingRatio;\n            const delta = exponentialDecay * duration;\n            const a = exponentialDecay - velocity;\n            const b = calcAngularFreq(undampedFreq, dampingRatio);\n            const c = Math.exp(-delta);\n            return safeMin - (a / b) * c;\n        };\n        derivative = (undampedFreq) => {\n            const exponentialDecay = undampedFreq * dampingRatio;\n            const delta = exponentialDecay * duration;\n            const d = delta * velocity + velocity;\n            const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n            const f = Math.exp(-delta);\n            const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n            const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n            return (factor * ((d - e) * f)) / g;\n        };\n    }\n    else {\n        /**\n         * Critically-damped spring\n         */\n        envelope = (undampedFreq) => {\n            const a = Math.exp(-undampedFreq * duration);\n            const b = (undampedFreq - velocity) * duration + 1;\n            return -safeMin + a * b;\n        };\n        derivative = (undampedFreq) => {\n            const a = Math.exp(-undampedFreq * duration);\n            const b = (velocity - undampedFreq) * (duration * duration);\n            return a * b;\n        };\n    }\n    const initialGuess = 5 / duration;\n    const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n    duration = secondsToMilliseconds(duration);\n    if (isNaN(undampedFreq)) {\n        return {\n            stiffness: springDefaults.stiffness,\n            damping: springDefaults.damping,\n            duration,\n        };\n    }\n    else {\n        const stiffness = Math.pow(undampedFreq, 2) * mass;\n        return {\n            stiffness,\n            damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n            duration,\n        };\n    }\n}\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n    return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n    let springOptions = {\n        velocity: springDefaults.velocity,\n        stiffness: springDefaults.stiffness,\n        damping: springDefaults.damping,\n        mass: springDefaults.mass,\n        isResolvedFromDuration: false,\n        ...options,\n    };\n    // stiffness/damping/mass overrides duration/bounce\n    if (!isSpringType(options, physicsKeys) &&\n        isSpringType(options, durationKeys)) {\n        // Time-defined springs should ignore inherited velocity.\n        // Velocity from interrupted animations can cause findSpring()\n        // to compute wildly different spring parameters, leading to\n        // massive oscillation on small-range animations.\n        springOptions.velocity = 0;\n        if (options.visualDuration) {\n            const visualDuration = options.visualDuration;\n            const root = (2 * Math.PI) / (visualDuration * 1.2);\n            const stiffness = root * root;\n            const damping = 2 *\n                clamp(0.05, 1, 1 - (options.bounce || 0)) *\n                Math.sqrt(stiffness);\n            springOptions = {\n                ...springOptions,\n                mass: springDefaults.mass,\n                stiffness,\n                damping,\n            };\n        }\n        else {\n            const derived = findSpring({ ...options, velocity: 0 });\n            springOptions = {\n                ...springOptions,\n                ...derived,\n                mass: springDefaults.mass,\n            };\n            springOptions.isResolvedFromDuration = true;\n        }\n    }\n    return springOptions;\n}\nfunction spring(optionsOrVisualDuration = springDefaults.visualDuration, bounce = springDefaults.bounce) {\n    const options = typeof optionsOrVisualDuration !== \"object\"\n        ? {\n            visualDuration: optionsOrVisualDuration,\n            keyframes: [0, 1],\n            bounce,\n        }\n        : optionsOrVisualDuration;\n    let { restSpeed, restDelta } = options;\n    const origin = options.keyframes[0];\n    const target = options.keyframes[options.keyframes.length - 1];\n    /**\n     * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n     * to reduce GC during animation.\n     */\n    const state = { done: false, value: origin };\n    const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration, } = getSpringOptions({\n        ...options,\n        velocity: -millisecondsToSeconds(options.velocity || 0),\n    });\n    const initialVelocity = velocity || 0.0;\n    const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n    const initialDelta = target - origin;\n    const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n    /**\n     * If we're working on a granular scale, use smaller defaults for determining\n     * when the spring is finished.\n     *\n     * These defaults have been selected emprically based on what strikes a good\n     * ratio between feeling good and finishing as soon as changes are imperceptible.\n     */\n    const isGranularScale = Math.abs(initialDelta) < 5;\n    restSpeed || (restSpeed = isGranularScale\n        ? springDefaults.restSpeed.granular\n        : springDefaults.restSpeed.default);\n    restDelta || (restDelta = isGranularScale\n        ? springDefaults.restDelta.granular\n        : springDefaults.restDelta.default);\n    let resolveSpring;\n    let resolveVelocity;\n    // Underdamped coefficients, hoisted for use in the inlined next() hot path\n    let angularFreq;\n    let A;\n    let sinCoeff;\n    let cosCoeff;\n    if (dampingRatio < 1) {\n        angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n        A =\n            (initialVelocity +\n                dampingRatio * undampedAngularFreq * initialDelta) /\n                angularFreq;\n        // Underdamped spring\n        resolveSpring = (t) => {\n            const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n            return (target -\n                envelope *\n                    (A * Math.sin(angularFreq * t) +\n                        initialDelta * Math.cos(angularFreq * t)));\n        };\n        // Analytical derivative of underdamped spring (px/ms)\n        sinCoeff =\n            dampingRatio * undampedAngularFreq * A + initialDelta * angularFreq;\n        cosCoeff =\n            dampingRatio * undampedAngularFreq * initialDelta - A * angularFreq;\n        resolveVelocity = (t) => {\n            const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n            return envelope *\n                (sinCoeff * Math.sin(angularFreq * t) +\n                    cosCoeff * Math.cos(angularFreq * t));\n        };\n    }\n    else if (dampingRatio === 1) {\n        // Critically damped spring\n        resolveSpring = (t) => target -\n            Math.exp(-undampedAngularFreq * t) *\n                (initialDelta +\n                    (initialVelocity + undampedAngularFreq * initialDelta) * t);\n        // Analytical derivative of critically damped spring (px/ms)\n        const C = initialVelocity + undampedAngularFreq * initialDelta;\n        resolveVelocity = (t) => Math.exp(-undampedAngularFreq * t) *\n            (undampedAngularFreq * C * t - initialVelocity);\n    }\n    else {\n        // Overdamped spring\n        const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n        resolveSpring = (t) => {\n            const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n            // When performing sinh or cosh values can hit Infinity so we cap them here\n            const freqForT = Math.min(dampedAngularFreq * t, 300);\n            return (target -\n                (envelope *\n                    ((initialVelocity +\n                        dampingRatio * undampedAngularFreq * initialDelta) *\n                        Math.sinh(freqForT) +\n                        dampedAngularFreq *\n                            initialDelta *\n                            Math.cosh(freqForT))) /\n                    dampedAngularFreq);\n        };\n        // Analytical derivative of overdamped spring (px/ms)\n        const P = (initialVelocity +\n            dampingRatio * undampedAngularFreq * initialDelta) /\n            dampedAngularFreq;\n        const sinhCoeff = dampingRatio * undampedAngularFreq * P - initialDelta * dampedAngularFreq;\n        const coshCoeff = dampingRatio * undampedAngularFreq * initialDelta - P * dampedAngularFreq;\n        resolveVelocity = (t) => {\n            const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n            const freqForT = Math.min(dampedAngularFreq * t, 300);\n            return envelope *\n                (sinhCoeff * Math.sinh(freqForT) +\n                    coshCoeff * Math.cosh(freqForT));\n        };\n    }\n    const generator = {\n        calculatedDuration: isResolvedFromDuration ? duration || null : null,\n        velocity: (t) => secondsToMilliseconds(resolveVelocity(t)),\n        next: (t) => {\n            /**\n             * For underdamped physics springs we need both position and\n             * velocity each tick. Compute shared trig values once to avoid\n             * duplicate Math.exp/sin/cos calls on the hot path.\n             */\n            if (!isResolvedFromDuration && dampingRatio < 1) {\n                const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n                const sin = Math.sin(angularFreq * t);\n                const cos = Math.cos(angularFreq * t);\n                const current = target -\n                    envelope *\n                        (A * sin + initialDelta * cos);\n                const currentVelocity = secondsToMilliseconds(envelope *\n                    (sinCoeff * sin + cosCoeff * cos));\n                state.done =\n                    Math.abs(currentVelocity) <= restSpeed &&\n                        Math.abs(target - current) <= restDelta;\n                state.value = state.done ? target : current;\n                return state;\n            }\n            const current = resolveSpring(t);\n            if (!isResolvedFromDuration) {\n                const currentVelocity = secondsToMilliseconds(resolveVelocity(t));\n                state.done =\n                    Math.abs(currentVelocity) <= restSpeed &&\n                        Math.abs(target - current) <= restDelta;\n            }\n            else {\n                state.done = t >= duration;\n            }\n            state.value = state.done ? target : current;\n            return state;\n        },\n        toString: () => {\n            const calculatedDuration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n            const easing = generateLinearEasing((progress) => generator.next(calculatedDuration * progress).value, calculatedDuration, 30);\n            return calculatedDuration + \"ms \" + easing;\n        },\n        toTransition: () => { },\n    };\n    return generator;\n}\nspring.applyToOptions = (options) => {\n    const generatorOptions = createGeneratorEasing(options, 100, spring);\n    options.ease = generatorOptions.ease;\n    options.duration = secondsToMilliseconds(generatorOptions.duration);\n    options.type = \"keyframes\";\n    return options;\n};\n\nexport { spring };\n//# sourceMappingURL=spring.mjs.map\n","import { velocityPerSecond } from 'motion-utils';\n\nconst velocitySampleDuration = 5; // ms\nfunction getGeneratorVelocity(resolveValue, t, current) {\n    const prevT = Math.max(t - velocitySampleDuration, 0);\n    return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { getGeneratorVelocity };\n//# sourceMappingURL=velocity.mjs.map\n","import { spring } from './spring.mjs';\nimport { getGeneratorVelocity } from './utils/velocity.mjs';\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n    const origin = keyframes[0];\n    const state = {\n        done: false,\n        value: origin,\n    };\n    const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n    const nearestBoundary = (v) => {\n        if (min === undefined)\n            return max;\n        if (max === undefined)\n            return min;\n        return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n    };\n    let amplitude = power * velocity;\n    const ideal = origin + amplitude;\n    const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n    /**\n     * If the target has changed we need to re-calculate the amplitude, otherwise\n     * the animation will start from the wrong position.\n     */\n    if (target !== ideal)\n        amplitude = target - origin;\n    const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n    const calcLatest = (t) => target + calcDelta(t);\n    const applyFriction = (t) => {\n        const delta = calcDelta(t);\n        const latest = calcLatest(t);\n        state.done = Math.abs(delta) <= restDelta;\n        state.value = state.done ? target : latest;\n    };\n    /**\n     * Ideally this would resolve for t in a stateless way, we could\n     * do that by always precalculating the animation but as we know\n     * this will be done anyway we can assume that spring will\n     * be discovered during that.\n     */\n    let timeReachedBoundary;\n    let spring$1;\n    const checkCatchBoundary = (t) => {\n        if (!isOutOfBounds(state.value))\n            return;\n        timeReachedBoundary = t;\n        spring$1 = spring({\n            keyframes: [state.value, nearestBoundary(state.value)],\n            velocity: getGeneratorVelocity(calcLatest, t, state.value), // TODO: This should be passing * 1000\n            damping: bounceDamping,\n            stiffness: bounceStiffness,\n            restDelta,\n            restSpeed,\n        });\n    };\n    checkCatchBoundary(0);\n    return {\n        calculatedDuration: null,\n        next: (t) => {\n            /**\n             * We need to resolve the friction to figure out if we need a\n             * spring but we don't want to do this twice per frame. So here\n             * we flag if we updated for this frame and later if we did\n             * we can skip doing it again.\n             */\n            let hasUpdatedFrame = false;\n            if (!spring$1 && timeReachedBoundary === undefined) {\n                hasUpdatedFrame = true;\n                applyFriction(t);\n                checkCatchBoundary(t);\n            }\n            /**\n             * If we have a spring and the provided t is beyond the moment the friction\n             * animation crossed the min/max boundary, use the spring.\n             */\n            if (timeReachedBoundary !== undefined && t >= timeReachedBoundary) {\n                return spring$1.next(t - timeReachedBoundary);\n            }\n            else {\n                !hasUpdatedFrame && applyFriction(t);\n                return state;\n            }\n        },\n    };\n}\n\nexport { inertia };\n//# sourceMappingURL=inertia.mjs.map\n","import { invariant, clamp, MotionGlobalConfig, noop, pipe, progress } from 'motion-utils';\nimport { mix } from './mix/index.mjs';\n\nfunction createMixers(output, ease, customMixer) {\n    const mixers = [];\n    const mixerFactory = customMixer || MotionGlobalConfig.mix || mix;\n    const numMixers = output.length - 1;\n    for (let i = 0; i < numMixers; i++) {\n        let mixer = mixerFactory(output[i], output[i + 1]);\n        if (ease) {\n            const easingFunction = Array.isArray(ease) ? ease[i] || noop : ease;\n            mixer = pipe(easingFunction, mixer);\n        }\n        mixers.push(mixer);\n    }\n    return mixers;\n}\n/**\n * Create a function that maps from a numerical input array to a generic output array.\n *\n * Accepts:\n *   - Numbers\n *   - Colors (hex, hsl, hsla, rgb, rgba)\n *   - Complex (combinations of one or more numbers or strings)\n *\n * ```jsx\n * const mixColor = interpolate([0, 1], ['#fff', '#000'])\n *\n * mixColor(0.5) // 'rgba(128, 128, 128, 1)'\n * ```\n *\n * TODO Revisit this approach once we've moved to data models for values,\n * probably not needed to pregenerate mixer functions.\n *\n * @public\n */\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n    const inputLength = input.length;\n    invariant(inputLength === output.length, \"Both input and output ranges must be the same length\", \"range-length\");\n    /**\n     * If we're only provided a single input, we can just make a function\n     * that returns the output.\n     */\n    if (inputLength === 1)\n        return () => output[0];\n    if (inputLength === 2 && output[0] === output[1])\n        return () => output[1];\n    const isZeroDeltaRange = input[0] === input[1];\n    // If input runs highest -> lowest, reverse both arrays\n    if (input[0] > input[inputLength - 1]) {\n        input = [...input].reverse();\n        output = [...output].reverse();\n    }\n    const mixers = createMixers(output, ease, mixer);\n    const numMixers = mixers.length;\n    const interpolator = (v) => {\n        if (isZeroDeltaRange && v < input[0])\n            return output[0];\n        let i = 0;\n        if (numMixers > 1) {\n            for (; i < input.length - 2; i++) {\n                if (v < input[i + 1])\n                    break;\n            }\n        }\n        const progressInRange = progress(input[i], input[i + 1], v);\n        return mixers[i](progressInRange);\n    };\n    return isClamp\n        ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n        : interpolator;\n}\n\nexport { interpolate };\n//# sourceMappingURL=interpolate.mjs.map\n","import { progress } from 'motion-utils';\nimport { mixNumber } from '../../../utils/mix/number.mjs';\n\nfunction fillOffset(offset, remaining) {\n    const min = offset[offset.length - 1];\n    for (let i = 1; i <= remaining; i++) {\n        const offsetProgress = progress(0, remaining, i);\n        offset.push(mixNumber(min, 1, offsetProgress));\n    }\n}\n\nexport { fillOffset };\n//# sourceMappingURL=fill.mjs.map\n","import { fillOffset } from './fill.mjs';\n\nfunction defaultOffset(arr) {\n    const offset = [0];\n    fillOffset(offset, arr.length - 1);\n    return offset;\n}\n\nexport { defaultOffset };\n//# sourceMappingURL=default.mjs.map\n","function convertOffsetToTimes(offset, duration) {\n    return offset.map((o) => o * duration);\n}\n\nexport { convertOffsetToTimes };\n//# sourceMappingURL=time.mjs.map\n","import { easeInOut, isEasingArray, easingDefinitionToFunction } from 'motion-utils';\nimport { interpolate } from '../../utils/interpolate.mjs';\nimport { defaultOffset } from '../keyframes/offsets/default.mjs';\nimport { convertOffsetToTimes } from '../keyframes/offsets/time.mjs';\n\nfunction defaultEasing(values, easing) {\n    return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease = \"easeInOut\", }) {\n    /**\n     * Easing functions can be externally defined as strings. Here we convert them\n     * into actual functions.\n     */\n    const easingFunctions = isEasingArray(ease)\n        ? ease.map(easingDefinitionToFunction)\n        : easingDefinitionToFunction(ease);\n    /**\n     * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n     * to reduce GC during animation.\n     */\n    const state = {\n        done: false,\n        value: keyframeValues[0],\n    };\n    /**\n     * Create a times array based on the provided 0-1 offsets\n     */\n    const absoluteTimes = convertOffsetToTimes(\n    // Only use the provided offsets if they're the correct length\n    // TODO Maybe we should warn here if there's a length mismatch\n    times && times.length === keyframeValues.length\n        ? times\n        : defaultOffset(keyframeValues), duration);\n    const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n        ease: Array.isArray(easingFunctions)\n            ? easingFunctions\n            : defaultEasing(keyframeValues, easingFunctions),\n    });\n    return {\n        calculatedDuration: duration,\n        next: (t) => {\n            state.value = mapTimeToKeyframe(t);\n            state.done = t >= duration;\n            return state;\n        },\n    };\n}\n\nexport { defaultEasing, keyframes };\n//# sourceMappingURL=keyframes.mjs.map\n","const isNotNull = (value) => value !== null;\nfunction getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }, finalKeyframe, speed = 1) {\n    const resolvedKeyframes = keyframes.filter(isNotNull);\n    const useFirstKeyframe = speed < 0 || (repeat && repeatType !== \"loop\" && repeat % 2 === 1);\n    const index = useFirstKeyframe ? 0 : resolvedKeyframes.length - 1;\n    return !index || finalKeyframe === undefined\n        ? resolvedKeyframes[index]\n        : finalKeyframe;\n}\n\nexport { getFinalKeyframe };\n//# sourceMappingURL=get-final.mjs.map\n","import { inertia } from '../generators/inertia.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { spring } from '../generators/spring.mjs';\n\nconst transitionTypeMap = {\n    decay: inertia,\n    inertia,\n    tween: keyframes,\n    keyframes: keyframes,\n    spring,\n};\nfunction replaceTransitionType(transition) {\n    if (typeof transition.type === \"string\") {\n        transition.type = transitionTypeMap[transition.type];\n    }\n}\n\nexport { replaceTransitionType };\n//# sourceMappingURL=replace-transition-type.mjs.map\n","class WithPromise {\n    constructor() {\n        this.updateFinished();\n    }\n    get finished() {\n        return this._finished;\n    }\n    updateFinished() {\n        this._finished = new Promise((resolve) => {\n            this.resolve = resolve;\n        });\n    }\n    notifyFinished() {\n        this.resolve();\n    }\n    /**\n     * Allows the animation to be awaited.\n     *\n     * @deprecated Use `finished` instead.\n     */\n    then(onResolve, onReject) {\n        return this.finished.then(onResolve, onReject);\n    }\n}\n\nexport { WithPromise };\n//# sourceMappingURL=WithPromise.mjs.map\n","import { invariant, pipe, clamp, millisecondsToSeconds, secondsToMilliseconds } from 'motion-utils';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { mix } from '../utils/mix/index.mjs';\nimport { frameloopDriver } from './drivers/frame.mjs';\nimport { inertia } from './generators/inertia.mjs';\nimport { keyframes } from './generators/keyframes.mjs';\nimport { calcGeneratorDuration } from './generators/utils/calc-duration.mjs';\nimport { getGeneratorVelocity } from './generators/utils/velocity.mjs';\nimport { getFinalKeyframe } from './keyframes/get-final.mjs';\nimport { replaceTransitionType } from './utils/replace-transition-type.mjs';\nimport { WithPromise } from './utils/WithPromise.mjs';\n\nconst percentToProgress = (percent) => percent / 100;\nclass JSAnimation extends WithPromise {\n    constructor(options) {\n        super();\n        this.state = \"idle\";\n        this.startTime = null;\n        this.isStopped = false;\n        /**\n         * The current time of the animation.\n         */\n        this.currentTime = 0;\n        /**\n         * The time at which the animation was paused.\n         */\n        this.holdTime = null;\n        /**\n         * Playback speed as a factor. 0 would be stopped, -1 reverse and 2 double speed.\n         */\n        this.playbackSpeed = 1;\n        /**\n         * Reusable state object for the delay phase to avoid\n         * allocating a new object every frame.\n         */\n        this.delayState = {\n            done: false,\n            value: undefined,\n        };\n        /**\n         * This method is bound to the instance to fix a pattern where\n         * animation.stop is returned as a reference from a useEffect.\n         */\n        this.stop = () => {\n            const { motionValue } = this.options;\n            if (motionValue && motionValue.updatedAt !== time.now()) {\n                this.tick(time.now());\n            }\n            this.isStopped = true;\n            if (this.state === \"idle\")\n                return;\n            this.teardown();\n            this.options.onStop?.();\n        };\n        this.options = options;\n        this.initAnimation();\n        this.play();\n        if (options.autoplay === false)\n            this.pause();\n    }\n    initAnimation() {\n        const { options } = this;\n        replaceTransitionType(options);\n        const { type = keyframes, repeat = 0, repeatDelay = 0, repeatType, velocity = 0, } = options;\n        let { keyframes: keyframes$1 } = options;\n        const generatorFactory = type || keyframes;\n        if (process.env.NODE_ENV !== \"production\" &&\n            generatorFactory !== keyframes) {\n            invariant(keyframes$1.length <= 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`, \"spring-two-frames\");\n        }\n        if (generatorFactory !== keyframes &&\n            typeof keyframes$1[0] !== \"number\") {\n            this.mixKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n            keyframes$1 = [0, 100];\n        }\n        const generator = generatorFactory({ ...options, keyframes: keyframes$1 });\n        /**\n         * If we have a mirror repeat type we need to create a second generator that outputs the\n         * mirrored (not reversed) animation and later ping pong between the two generators.\n         */\n        if (repeatType === \"mirror\") {\n            this.mirroredGenerator = generatorFactory({\n                ...options,\n                keyframes: [...keyframes$1].reverse(),\n                velocity: -velocity,\n            });\n        }\n        /**\n         * If duration is undefined and we have repeat options,\n         * we need to calculate a duration from the generator.\n         *\n         * We set it to the generator itself to cache the duration.\n         * Any timeline resolver will need to have already precalculated\n         * the duration by this step.\n         */\n        if (generator.calculatedDuration === null) {\n            generator.calculatedDuration = calcGeneratorDuration(generator);\n        }\n        const { calculatedDuration } = generator;\n        this.calculatedDuration = calculatedDuration;\n        this.resolvedDuration = calculatedDuration + repeatDelay;\n        this.totalDuration = this.resolvedDuration * (repeat + 1) - repeatDelay;\n        this.generator = generator;\n    }\n    updateTime(timestamp) {\n        const animationTime = Math.round(timestamp - this.startTime) * this.playbackSpeed;\n        // Update currentTime\n        if (this.holdTime !== null) {\n            this.currentTime = this.holdTime;\n        }\n        else {\n            // Rounding the time because floating point arithmetic is not always accurate, e.g. 3000.367 - 1000.367 =\n            // 2000.0000000000002. This is a problem when we are comparing the currentTime with the duration, for\n            // example.\n            this.currentTime = animationTime;\n        }\n    }\n    tick(timestamp, sample = false) {\n        const { generator, totalDuration, mixKeyframes, mirroredGenerator, resolvedDuration, calculatedDuration, } = this;\n        if (this.startTime === null)\n            return generator.next(0);\n        const { delay = 0, keyframes, repeat, repeatType, repeatDelay, type, onUpdate, finalKeyframe, } = this.options;\n        /**\n         * requestAnimationFrame timestamps can come through as lower than\n         * the startTime as set by performance.now(). Here we prevent this,\n         * though in the future it could be possible to make setting startTime\n         * a pending operation that gets resolved here.\n         */\n        if (this.speed > 0) {\n            this.startTime = Math.min(this.startTime, timestamp);\n        }\n        else if (this.speed < 0) {\n            this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);\n        }\n        if (sample) {\n            this.currentTime = timestamp;\n        }\n        else {\n            this.updateTime(timestamp);\n        }\n        // Rebase on delay\n        const timeWithoutDelay = this.currentTime - delay * (this.playbackSpeed >= 0 ? 1 : -1);\n        const isInDelayPhase = this.playbackSpeed >= 0\n            ? timeWithoutDelay < 0\n            : timeWithoutDelay > totalDuration;\n        this.currentTime = Math.max(timeWithoutDelay, 0);\n        // If this animation has finished, set the current time  to the total duration.\n        if (this.state === \"finished\" && this.holdTime === null) {\n            this.currentTime = totalDuration;\n        }\n        let elapsed = this.currentTime;\n        let frameGenerator = generator;\n        if (repeat) {\n            /**\n             * Get the current progress (0-1) of the animation. If t is >\n             * than duration we'll get values like 2.5 (midway through the\n             * third iteration)\n             */\n            const progress = Math.min(this.currentTime, totalDuration) / resolvedDuration;\n            /**\n             * Get the current iteration (0 indexed). For instance the floor of\n             * 2.5 is 2.\n             */\n            let currentIteration = Math.floor(progress);\n            /**\n             * Get the current progress of the iteration by taking the remainder\n             * so 2.5 is 0.5 through iteration 2\n             */\n            let iterationProgress = progress % 1.0;\n            /**\n             * If iteration progress is 1 we count that as the end\n             * of the previous iteration.\n             */\n            if (!iterationProgress && progress >= 1) {\n                iterationProgress = 1;\n            }\n            iterationProgress === 1 && currentIteration--;\n            currentIteration = Math.min(currentIteration, repeat + 1);\n            /**\n             * Reverse progress if we're not running in \"normal\" direction\n             */\n            const isOddIteration = Boolean(currentIteration % 2);\n            if (isOddIteration) {\n                if (repeatType === \"reverse\") {\n                    iterationProgress = 1 - iterationProgress;\n                    if (repeatDelay) {\n                        iterationProgress -= repeatDelay / resolvedDuration;\n                    }\n                }\n                else if (repeatType === \"mirror\") {\n                    frameGenerator = mirroredGenerator;\n                }\n            }\n            elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;\n        }\n        /**\n         * If we're in negative time, set state as the initial keyframe.\n         * This prevents delay: x, duration: 0 animations from finishing\n         * instantly.\n         */\n        let state;\n        if (isInDelayPhase) {\n            this.delayState.value = keyframes[0];\n            state = this.delayState;\n        }\n        else {\n            state = frameGenerator.next(elapsed);\n        }\n        if (mixKeyframes && !isInDelayPhase) {\n            state.value = mixKeyframes(state.value);\n        }\n        let { done } = state;\n        if (!isInDelayPhase && calculatedDuration !== null) {\n            done =\n                this.playbackSpeed >= 0\n                    ? this.currentTime >= totalDuration\n                    : this.currentTime <= 0;\n        }\n        const isAnimationFinished = this.holdTime === null &&\n            (this.state === \"finished\" || (this.state === \"running\" && done));\n        // TODO: The exception for inertia could be cleaner here\n        if (isAnimationFinished && type !== inertia) {\n            state.value = getFinalKeyframe(keyframes, this.options, finalKeyframe, this.speed);\n        }\n        if (onUpdate) {\n            onUpdate(state.value);\n        }\n        if (isAnimationFinished) {\n            this.finish();\n        }\n        return state;\n    }\n    /**\n     * Allows the returned animation to be awaited or promise-chained. Currently\n     * resolves when the animation finishes at all but in a future update could/should\n     * reject if its cancels.\n     */\n    then(resolve, reject) {\n        return this.finished.then(resolve, reject);\n    }\n    get duration() {\n        return millisecondsToSeconds(this.calculatedDuration);\n    }\n    get iterationDuration() {\n        const { delay = 0 } = this.options || {};\n        return this.duration + millisecondsToSeconds(delay);\n    }\n    get time() {\n        return millisecondsToSeconds(this.currentTime);\n    }\n    set time(newTime) {\n        newTime = secondsToMilliseconds(newTime);\n        this.currentTime = newTime;\n        if (this.startTime === null ||\n            this.holdTime !== null ||\n            this.playbackSpeed === 0) {\n            this.holdTime = newTime;\n        }\n        else if (this.driver) {\n            this.startTime = this.driver.now() - newTime / this.playbackSpeed;\n        }\n        if (this.driver) {\n            this.driver.start(false);\n        }\n        else {\n            this.startTime = 0;\n            this.state = \"paused\";\n            this.holdTime = newTime;\n            this.tick(newTime);\n        }\n    }\n    /**\n     * Returns the generator's velocity at the current time in units/second.\n     * Uses the analytical derivative when available (springs), avoiding\n     * the MotionValue's frame-dependent velocity estimation.\n     */\n    getGeneratorVelocity() {\n        const t = this.currentTime;\n        if (t <= 0)\n            return this.options.velocity || 0;\n        if (this.generator.velocity) {\n            return this.generator.velocity(t);\n        }\n        // Fallback: finite difference\n        const current = this.generator.next(t).value;\n        return getGeneratorVelocity((s) => this.generator.next(s).value, t, current);\n    }\n    get speed() {\n        return this.playbackSpeed;\n    }\n    set speed(newSpeed) {\n        const hasChanged = this.playbackSpeed !== newSpeed;\n        if (hasChanged && this.driver) {\n            this.updateTime(time.now());\n        }\n        this.playbackSpeed = newSpeed;\n        if (hasChanged && this.driver) {\n            this.time = millisecondsToSeconds(this.currentTime);\n        }\n    }\n    play() {\n        if (this.isStopped)\n            return;\n        const { driver = frameloopDriver, startTime } = this.options;\n        if (!this.driver) {\n            this.driver = driver((timestamp) => this.tick(timestamp));\n        }\n        this.options.onPlay?.();\n        const now = this.driver.now();\n        if (this.state === \"finished\") {\n            this.updateFinished();\n            this.startTime = now;\n        }\n        else if (this.holdTime !== null) {\n            this.startTime = now - this.holdTime;\n        }\n        else if (!this.startTime) {\n            this.startTime = startTime ?? now;\n        }\n        if (this.state === \"finished\" && this.speed < 0) {\n            this.startTime += this.calculatedDuration;\n        }\n        this.holdTime = null;\n        /**\n         * Set playState to running only after we've used it in\n         * the previous logic.\n         */\n        this.state = \"running\";\n        this.driver.start();\n    }\n    pause() {\n        this.state = \"paused\";\n        this.updateTime(time.now());\n        this.holdTime = this.currentTime;\n    }\n    complete() {\n        if (this.state !== \"running\") {\n            this.play();\n        }\n        this.state = \"finished\";\n        this.holdTime = null;\n    }\n    finish() {\n        this.notifyFinished();\n        this.teardown();\n        this.state = \"finished\";\n        this.options.onComplete?.();\n    }\n    cancel() {\n        this.holdTime = null;\n        this.startTime = 0;\n        this.tick(0);\n        this.teardown();\n        this.options.onCancel?.();\n    }\n    teardown() {\n        this.state = \"idle\";\n        this.stopDriver();\n        this.startTime = this.holdTime = null;\n    }\n    stopDriver() {\n        if (!this.driver)\n            return;\n        this.driver.stop();\n        this.driver = undefined;\n    }\n    sample(sampleTime) {\n        this.startTime = 0;\n        return this.tick(sampleTime, true);\n    }\n    attachTimeline(timeline) {\n        if (this.options.allowFlatten) {\n            this.options.type = \"keyframes\";\n            this.options.ease = \"linear\";\n            this.initAnimation();\n        }\n        this.driver?.stop();\n        return timeline.observe(this);\n    }\n}\n// Legacy function support\nfunction animateValue(options) {\n    return new JSAnimation(options);\n}\n\nexport { JSAnimation, animateValue };\n//# sourceMappingURL=JSAnimation.mjs.map\n","function fillWildcards(keyframes) {\n    for (let i = 1; i < keyframes.length; i++) {\n        keyframes[i] ?? (keyframes[i] = keyframes[i - 1]);\n    }\n}\n\nexport { fillWildcards };\n//# sourceMappingURL=fill-wildcards.mjs.map\n","const radToDeg = (rad) => (rad * 180) / Math.PI;\nconst rotate = (v) => {\n    const angle = radToDeg(Math.atan2(v[1], v[0]));\n    return rebaseAngle(angle);\n};\nconst matrix2dParsers = {\n    x: 4,\n    y: 5,\n    translateX: 4,\n    translateY: 5,\n    scaleX: 0,\n    scaleY: 3,\n    scale: (v) => (Math.abs(v[0]) + Math.abs(v[3])) / 2,\n    rotate,\n    rotateZ: rotate,\n    skewX: (v) => radToDeg(Math.atan(v[1])),\n    skewY: (v) => radToDeg(Math.atan(v[2])),\n    skew: (v) => (Math.abs(v[1]) + Math.abs(v[2])) / 2,\n};\nconst rebaseAngle = (angle) => {\n    angle = angle % 360;\n    if (angle < 0)\n        angle += 360;\n    return angle;\n};\nconst rotateZ = rotate;\nconst scaleX = (v) => Math.sqrt(v[0] * v[0] + v[1] * v[1]);\nconst scaleY = (v) => Math.sqrt(v[4] * v[4] + v[5] * v[5]);\nconst matrix3dParsers = {\n    x: 12,\n    y: 13,\n    z: 14,\n    translateX: 12,\n    translateY: 13,\n    translateZ: 14,\n    scaleX,\n    scaleY,\n    scale: (v) => (scaleX(v) + scaleY(v)) / 2,\n    rotateX: (v) => rebaseAngle(radToDeg(Math.atan2(v[6], v[5]))),\n    rotateY: (v) => rebaseAngle(radToDeg(Math.atan2(-v[2], v[0]))),\n    rotateZ,\n    rotate: rotateZ,\n    skewX: (v) => radToDeg(Math.atan(v[4])),\n    skewY: (v) => radToDeg(Math.atan(v[1])),\n    skew: (v) => (Math.abs(v[1]) + Math.abs(v[4])) / 2,\n};\nfunction defaultTransformValue(name) {\n    return name.includes(\"scale\") ? 1 : 0;\n}\nfunction parseValueFromTransform(transform, name) {\n    if (!transform || transform === \"none\") {\n        return defaultTransformValue(name);\n    }\n    const matrix3dMatch = transform.match(/^matrix3d\\(([-\\d.e\\s,]+)\\)$/u);\n    let parsers;\n    let match;\n    if (matrix3dMatch) {\n        parsers = matrix3dParsers;\n        match = matrix3dMatch;\n    }\n    else {\n        const matrix2dMatch = transform.match(/^matrix\\(([-\\d.e\\s,]+)\\)$/u);\n        parsers = matrix2dParsers;\n        match = matrix2dMatch;\n    }\n    if (!match) {\n        return defaultTransformValue(name);\n    }\n    const valueParser = parsers[name];\n    const values = match[1].split(\",\").map(convertTransformToNumber);\n    return typeof valueParser === \"function\"\n        ? valueParser(values)\n        : values[valueParser];\n}\nconst readTransformValue = (instance, name) => {\n    const { transform = \"none\" } = getComputedStyle(instance);\n    return parseValueFromTransform(transform, name);\n};\nfunction convertTransformToNumber(value) {\n    return parseFloat(value.trim());\n}\n\nexport { defaultTransformValue, parseValueFromTransform, readTransformValue };\n//# sourceMappingURL=parse-transform.mjs.map\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n    \"transformPerspective\",\n    \"x\",\n    \"y\",\n    \"z\",\n    \"translateX\",\n    \"translateY\",\n    \"translateZ\",\n    \"scale\",\n    \"scaleX\",\n    \"scaleY\",\n    \"rotate\",\n    \"rotateX\",\n    \"rotateY\",\n    \"rotateZ\",\n    \"skew\",\n    \"skewX\",\n    \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n *\n * `pathRotation` is a transform for routing purposes (skipped from raw\n * style application, wired to the transform composite, flags transform\n * dirty) but is intentionally NOT in `transformPropOrder` — it is\n * composed onto `rotate` at the build sites, not serialized in its own\n * slot, and must stay out of the order-array consumers (parse-transform,\n * unit-conversion, keys-position).\n */\nconst transformProps = /*@__PURE__*/ (() => new Set([...transformPropOrder, \"pathRotation\"]))();\n\nexport { transformPropOrder, transformProps };\n//# sourceMappingURL=keys-transform.mjs.map\n","import { parseValueFromTransform } from '../../../render/dom/parse-transform.mjs';\nimport { transformPropOrder } from '../../../render/utils/keys-transform.mjs';\nimport { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\n\nconst isNumOrPxType = (v) => v === number || v === px;\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n    const removedTransforms = [];\n    nonTranslationalTransformKeys.forEach((key) => {\n        const value = visualElement.getValue(key);\n        if (value !== undefined) {\n            removedTransforms.push([key, value.get()]);\n            value.set(key.startsWith(\"scale\") ? 1 : 0);\n        }\n    });\n    return removedTransforms;\n}\nconst positionalValues = {\n    // Dimensions\n    width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\", boxSizing }) => {\n        const width = x.max - x.min;\n        return boxSizing === \"border-box\"\n            ? width\n            : width - parseFloat(paddingLeft) - parseFloat(paddingRight);\n    },\n    height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\", boxSizing }) => {\n        const height = y.max - y.min;\n        return boxSizing === \"border-box\"\n            ? height\n            : height - parseFloat(paddingTop) - parseFloat(paddingBottom);\n    },\n    top: (_bbox, { top }) => parseFloat(top),\n    left: (_bbox, { left }) => parseFloat(left),\n    bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n    right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n    // Transform\n    x: (_bbox, { transform }) => parseValueFromTransform(transform, \"x\"),\n    y: (_bbox, { transform }) => parseValueFromTransform(transform, \"y\"),\n};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\nexport { isNumOrPxType, positionalValues, removeNonTranslationalTransform };\n//# sourceMappingURL=unit-conversion.mjs.map\n","import { fillWildcards } from './utils/fill-wildcards.mjs';\nimport { removeNonTranslationalTransform } from './utils/unit-conversion.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst toResolve = new Set();\nlet isScheduled = false;\nlet anyNeedsMeasurement = false;\nlet isForced = false;\nfunction measureAllKeyframes() {\n    if (anyNeedsMeasurement) {\n        const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n        const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n        const transformsToRestore = new Map();\n        /**\n         * Write pass\n         * If we're measuring elements we want to remove bounding box-changing transforms.\n         */\n        elementsToMeasure.forEach((element) => {\n            const removedTransforms = removeNonTranslationalTransform(element);\n            if (!removedTransforms.length)\n                return;\n            transformsToRestore.set(element, removedTransforms);\n            element.render();\n        });\n        // Read\n        resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n        // Write\n        elementsToMeasure.forEach((element) => {\n            element.render();\n            const restore = transformsToRestore.get(element);\n            if (restore) {\n                restore.forEach(([key, value]) => {\n                    element.getValue(key)?.set(value);\n                });\n            }\n        });\n        // Read\n        resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n        // Write\n        resolversToMeasure.forEach((resolver) => {\n            if (resolver.suspendedScrollY !== undefined) {\n                window.scrollTo(0, resolver.suspendedScrollY);\n            }\n        });\n    }\n    anyNeedsMeasurement = false;\n    isScheduled = false;\n    toResolve.forEach((resolver) => resolver.complete(isForced));\n    toResolve.clear();\n}\nfunction readAllKeyframes() {\n    toResolve.forEach((resolver) => {\n        resolver.readKeyframes();\n        if (resolver.needsMeasurement) {\n            anyNeedsMeasurement = true;\n        }\n    });\n}\nfunction flushKeyframeResolvers() {\n    isForced = true;\n    readAllKeyframes();\n    measureAllKeyframes();\n    isForced = false;\n}\nclass KeyframeResolver {\n    constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) {\n        this.state = \"pending\";\n        /**\n         * Track whether this resolver is async. If it is, it'll be added to the\n         * resolver queue and flushed in the next frame. Resolvers that aren't going\n         * to trigger read/write thrashing don't need to be async.\n         */\n        this.isAsync = false;\n        /**\n         * Track whether this resolver needs to perform a measurement\n         * to resolve its keyframes.\n         */\n        this.needsMeasurement = false;\n        this.unresolvedKeyframes = [...unresolvedKeyframes];\n        this.onComplete = onComplete;\n        this.name = name;\n        this.motionValue = motionValue;\n        this.element = element;\n        this.isAsync = isAsync;\n    }\n    scheduleResolve() {\n        this.state = \"scheduled\";\n        if (this.isAsync) {\n            toResolve.add(this);\n            if (!isScheduled) {\n                isScheduled = true;\n                frame.read(readAllKeyframes);\n                frame.resolveKeyframes(measureAllKeyframes);\n            }\n        }\n        else {\n            this.readKeyframes();\n            this.complete();\n        }\n    }\n    readKeyframes() {\n        const { unresolvedKeyframes, name, element, motionValue } = this;\n        // If initial keyframe is null we need to read it from the DOM\n        if (unresolvedKeyframes[0] === null) {\n            const currentValue = motionValue?.get();\n            // TODO: This doesn't work if the final keyframe is a wildcard\n            const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n            if (currentValue !== undefined) {\n                unresolvedKeyframes[0] = currentValue;\n            }\n            else if (element && name) {\n                const valueAsRead = element.readValue(name, finalKeyframe);\n                if (valueAsRead !== undefined && valueAsRead !== null) {\n                    unresolvedKeyframes[0] = valueAsRead;\n                }\n            }\n            if (unresolvedKeyframes[0] === undefined) {\n                unresolvedKeyframes[0] = finalKeyframe;\n            }\n            if (motionValue && currentValue === undefined) {\n                motionValue.set(unresolvedKeyframes[0]);\n            }\n        }\n        fillWildcards(unresolvedKeyframes);\n    }\n    setFinalKeyframe() { }\n    measureInitialState() { }\n    renderEndStyles() { }\n    measureEndState() { }\n    complete(isForcedComplete = false) {\n        this.state = \"complete\";\n        this.onComplete(this.unresolvedKeyframes, this.finalKeyframe, isForcedComplete);\n        toResolve.delete(this);\n    }\n    cancel() {\n        if (this.state === \"scheduled\") {\n            toResolve.delete(this);\n            this.state = \"pending\";\n        }\n    }\n    resume() {\n        if (this.state === \"pending\")\n            this.scheduleResolve();\n    }\n}\n\nexport { KeyframeResolver, flushKeyframeResolvers };\n//# sourceMappingURL=KeyframesResolver.mjs.map\n","const isCSSVar = (name) => name.startsWith(\"--\");\n\nexport { isCSSVar };\n//# sourceMappingURL=is-css-var.mjs.map\n","import { isCSSVar } from './is-css-var.mjs';\n\nfunction setStyle(element, name, value) {\n    isCSSVar(name)\n        ? element.style.setProperty(name, value)\n        : (element.style[name] = value);\n}\n\nexport { setStyle };\n//# sourceMappingURL=style-set.mjs.map\n","/**\n * Add the ability for test suites to manually set support flags\n * to better test more environments.\n */\nconst supportsFlags = {};\n\nexport { supportsFlags };\n//# sourceMappingURL=flags.mjs.map\n","import { memo } from 'motion-utils';\nimport { supportsFlags } from './flags.mjs';\n\nfunction memoSupports(callback, supportsFlag) {\n    const memoized = memo(callback);\n    return () => supportsFlags[supportsFlag] ?? memoized();\n}\n\nexport { memoSupports };\n//# sourceMappingURL=memo.mjs.map\n","import { memoSupports } from './memo.mjs';\n\nconst supportsScrollTimeline = /* @__PURE__ */ memoSupports(() => window.ScrollTimeline !== undefined, \"scrollTimeline\");\nconst supportsViewTimeline = /* @__PURE__ */ memoSupports(() => window.ViewTimeline !== undefined, \"viewTimeline\");\n\nexport { supportsScrollTimeline, supportsViewTimeline };\n//# sourceMappingURL=scroll-timeline.mjs.map\n","import { memoSupports } from './memo.mjs';\n\nconst supportsLinearEasing = /*@__PURE__*/ memoSupports(() => {\n    try {\n        document\n            .createElement(\"div\")\n            .animate({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n    }\n    catch (e) {\n        return false;\n    }\n    return true;\n}, \"linearEasing\");\n\nexport { supportsLinearEasing };\n//# sourceMappingURL=linear-easing.mjs.map\n","const cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\n\nexport { cubicBezierAsString };\n//# sourceMappingURL=cubic-bezier.mjs.map\n","import { cubicBezierAsString } from './cubic-bezier.mjs';\n\nconst supportedWaapiEasing = {\n    linear: \"linear\",\n    ease: \"ease\",\n    easeIn: \"ease-in\",\n    easeOut: \"ease-out\",\n    easeInOut: \"ease-in-out\",\n    circIn: /*@__PURE__*/ cubicBezierAsString([0, 0.65, 0.55, 1]),\n    circOut: /*@__PURE__*/ cubicBezierAsString([0.55, 0, 1, 0.45]),\n    backIn: /*@__PURE__*/ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n    backOut: /*@__PURE__*/ cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\n\nexport { supportedWaapiEasing };\n//# sourceMappingURL=supported.mjs.map\n","import { isBezierDefinition } from 'motion-utils';\nimport { supportsLinearEasing } from '../../../utils/supports/linear-easing.mjs';\nimport { generateLinearEasing } from '../utils/linear.mjs';\nimport { cubicBezierAsString } from './cubic-bezier.mjs';\nimport { supportedWaapiEasing } from './supported.mjs';\n\nfunction mapEasingToNativeEasing(easing, duration) {\n    if (!easing) {\n        return undefined;\n    }\n    else if (typeof easing === \"function\") {\n        return supportsLinearEasing()\n            ? generateLinearEasing(easing, duration)\n            : \"ease-out\";\n    }\n    else if (isBezierDefinition(easing)) {\n        return cubicBezierAsString(easing);\n    }\n    else if (Array.isArray(easing)) {\n        return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) ||\n            supportedWaapiEasing.easeOut);\n    }\n    else {\n        return supportedWaapiEasing[easing];\n    }\n}\n\nexport { mapEasingToNativeEasing };\n//# sourceMappingURL=map-easing.mjs.map\n","import { mapEasingToNativeEasing } from './easing/map-easing.mjs';\n\nfunction startWaapiAnimation(element, valueName, keyframes, { delay = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease = \"easeOut\", times, } = {}, pseudoElement = undefined) {\n    const keyframeOptions = {\n        [valueName]: keyframes,\n    };\n    if (times)\n        keyframeOptions.offset = times;\n    const easing = mapEasingToNativeEasing(ease, duration);\n    /**\n     * If this is an easing array, apply to keyframes, not animation as a whole\n     */\n    if (Array.isArray(easing))\n        keyframeOptions.easing = easing;\n    const options = {\n        delay,\n        duration,\n        easing: !Array.isArray(easing) ? easing : \"linear\",\n        fill: \"both\",\n        iterations: repeat + 1,\n        direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\",\n    };\n    if (pseudoElement)\n        options.pseudoElement = pseudoElement;\n    return element.animate(keyframeOptions, options);\n}\n\nexport { startWaapiAnimation };\n//# sourceMappingURL=start-waapi-animation.mjs.map\n","function isGenerator(type) {\n    return typeof type === \"function\" && \"applyToOptions\" in type;\n}\n\nexport { isGenerator };\n//# sourceMappingURL=is-generator.mjs.map\n","import { supportsLinearEasing } from '../../../utils/supports/linear-easing.mjs';\nimport { isGenerator } from '../../generators/utils/is-generator.mjs';\n\nfunction applyGeneratorOptions({ type, ...options }) {\n    if (isGenerator(type) && supportsLinearEasing()) {\n        return type.applyToOptions(options);\n    }\n    else {\n        options.duration ?? (options.duration = 300);\n        options.ease ?? (options.ease = \"easeOut\");\n    }\n    return options;\n}\n\nexport { applyGeneratorOptions };\n//# sourceMappingURL=apply-generator.mjs.map\n","import { invariant, millisecondsToSeconds, secondsToMilliseconds, noop } from 'motion-utils';\nimport { setStyle } from '../render/dom/style-set.mjs';\nimport { supportsScrollTimeline } from '../utils/supports/scroll-timeline.mjs';\nimport { getFinalKeyframe } from './keyframes/get-final.mjs';\nimport { WithPromise } from './utils/WithPromise.mjs';\nimport { startWaapiAnimation } from './waapi/start-waapi-animation.mjs';\nimport { applyGeneratorOptions } from './waapi/utils/apply-generator.mjs';\n\n/**\n * NativeAnimation implements AnimationPlaybackControls for the browser's Web Animations API.\n */\nclass NativeAnimation extends WithPromise {\n    constructor(options) {\n        super();\n        this.finishedTime = null;\n        this.isStopped = false;\n        /**\n         * Tracks a manually-set start time that takes precedence over WAAPI's\n         * dynamic startTime. This is cleared when play() or time setter is called,\n         * allowing WAAPI to take over timing.\n         */\n        this.manualStartTime = null;\n        if (!options)\n            return;\n        const { element, name, keyframes, pseudoElement, allowFlatten = false, finalKeyframe, onComplete, } = options;\n        this.isPseudoElement = Boolean(pseudoElement);\n        this.allowFlatten = allowFlatten;\n        this.options = options;\n        invariant(typeof options.type !== \"string\", `Mini animate() doesn't support \"type\" as a string.`, \"mini-spring\");\n        const transition = applyGeneratorOptions(options);\n        this.animation = startWaapiAnimation(element, name, keyframes, transition, pseudoElement);\n        if (transition.autoplay === false) {\n            this.animation.pause();\n        }\n        this.animation.onfinish = () => {\n            this.finishedTime = this.time;\n            if (!pseudoElement) {\n                const keyframe = getFinalKeyframe(keyframes, this.options, finalKeyframe, this.speed);\n                if (this.updateMotionValue) {\n                    this.updateMotionValue(keyframe);\n                }\n                /**\n                 * If we can, we want to commit the final style as set by the user,\n                 * rather than the computed keyframe value supplied by the animation.\n                 * We always do this, even when a motion value is present, to prevent\n                 * a visual flash in Firefox where the WAAPI animation's fill is removed\n                 * during cancel() before the scheduled render can apply the correct value.\n                 */\n                setStyle(element, name, keyframe);\n                this.animation.cancel();\n            }\n            onComplete?.();\n            this.notifyFinished();\n        };\n    }\n    play() {\n        if (this.isStopped)\n            return;\n        this.manualStartTime = null;\n        this.animation.play();\n        if (this.state === \"finished\") {\n            this.updateFinished();\n        }\n    }\n    pause() {\n        this.animation.pause();\n    }\n    complete() {\n        this.animation.finish?.();\n    }\n    cancel() {\n        try {\n            this.animation.cancel();\n        }\n        catch (e) { }\n    }\n    stop() {\n        if (this.isStopped)\n            return;\n        this.isStopped = true;\n        const { state } = this;\n        if (state === \"idle\" || state === \"finished\") {\n            return;\n        }\n        if (this.updateMotionValue) {\n            this.updateMotionValue();\n        }\n        else {\n            this.commitStyles();\n        }\n        if (!this.isPseudoElement)\n            this.cancel();\n    }\n    /**\n     * WAAPI doesn't natively have any interruption capabilities.\n     *\n     * In this method, we commit styles back to the DOM before cancelling\n     * the animation.\n     *\n     * This is designed to be overridden by NativeAnimationExtended, which\n     * will create a renderless JS animation and sample it twice to calculate\n     * its current value, \"previous\" value, and therefore allow\n     * Motion to also correctly calculate velocity for any subsequent animation\n     * while deferring the commit until the next animation frame.\n     */\n    commitStyles() {\n        const element = this.options?.element;\n        if (!this.isPseudoElement && element?.isConnected) {\n            this.animation.commitStyles?.();\n        }\n    }\n    get duration() {\n        const duration = this.animation.effect?.getComputedTiming?.().duration || 0;\n        return millisecondsToSeconds(Number(duration));\n    }\n    get iterationDuration() {\n        const { delay = 0 } = this.options || {};\n        return this.duration + millisecondsToSeconds(delay);\n    }\n    get time() {\n        return millisecondsToSeconds(Number(this.animation.currentTime) || 0);\n    }\n    set time(newTime) {\n        const wasFinished = this.finishedTime !== null;\n        this.manualStartTime = null;\n        this.finishedTime = null;\n        this.animation.currentTime = secondsToMilliseconds(newTime);\n        if (wasFinished) {\n            this.animation.pause();\n        }\n    }\n    /**\n     * The playback speed of the animation.\n     * 1 = normal speed, 2 = double speed, 0.5 = half speed.\n     */\n    get speed() {\n        return this.animation.playbackRate;\n    }\n    set speed(newSpeed) {\n        // Allow backwards playback after finishing\n        if (newSpeed < 0)\n            this.finishedTime = null;\n        this.animation.playbackRate = newSpeed;\n    }\n    get state() {\n        return this.finishedTime !== null\n            ? \"finished\"\n            : this.animation.playState;\n    }\n    get startTime() {\n        return this.manualStartTime ?? Number(this.animation.startTime);\n    }\n    set startTime(newStartTime) {\n        this.manualStartTime = this.animation.startTime = newStartTime;\n    }\n    /**\n     * Attaches a timeline to the animation, for instance the `ScrollTimeline`.\n     */\n    attachTimeline({ timeline, rangeStart, rangeEnd, observe, }) {\n        if (this.allowFlatten) {\n            this.animation.effect?.updateTiming({ easing: \"linear\" });\n        }\n        this.animation.onfinish = null;\n        if (timeline && supportsScrollTimeline()) {\n            this.animation.timeline = timeline;\n            if (rangeStart)\n                this.animation.rangeStart = rangeStart;\n            if (rangeEnd)\n                this.animation.rangeEnd = rangeEnd;\n            return noop;\n        }\n        else {\n            return observe(this);\n        }\n    }\n}\n\nexport { NativeAnimation };\n//# sourceMappingURL=NativeAnimation.mjs.map\n","import { circInOut, backInOut, anticipate } from 'motion-utils';\n\nconst unsupportedEasingFunctions = {\n    anticipate,\n    backInOut,\n    circInOut,\n};\nfunction isUnsupportedEase(key) {\n    return key in unsupportedEasingFunctions;\n}\nfunction replaceStringEasing(transition) {\n    if (typeof transition.ease === \"string\" &&\n        isUnsupportedEase(transition.ease)) {\n        transition.ease = unsupportedEasingFunctions[transition.ease];\n    }\n}\n\nexport { replaceStringEasing };\n//# sourceMappingURL=unsupported-easing.mjs.map\n","import { clamp } from 'motion-utils';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { setStyle } from '../render/dom/style-set.mjs';\nimport { JSAnimation } from './JSAnimation.mjs';\nimport { NativeAnimation } from './NativeAnimation.mjs';\nimport { replaceTransitionType } from './utils/replace-transition-type.mjs';\nimport { replaceStringEasing } from './waapi/utils/unsupported-easing.mjs';\n\n/**\n * 10ms is chosen here as it strikes a balance between smooth\n * results (more than one keyframe per frame at 60fps) and\n * keyframe quantity.\n */\nconst sampleDelta = 10; //ms\nclass NativeAnimationExtended extends NativeAnimation {\n    constructor(options) {\n        /**\n         * The base NativeAnimation function only supports a subset\n         * of Motion easings, and WAAPI also only supports some\n         * easing functions via string/cubic-bezier definitions.\n         *\n         * This function replaces those unsupported easing functions\n         * with a JS easing function. This will later get compiled\n         * to a linear() easing function.\n         */\n        replaceStringEasing(options);\n        /**\n         * Ensure we replace the transition type with a generator function\n         * before passing to WAAPI.\n         *\n         * TODO: Does this have a better home? It could be shared with\n         * JSAnimation.\n         */\n        replaceTransitionType(options);\n        super(options);\n        /**\n         * Only set startTime when the animation should autoplay.\n         * Setting startTime on a paused WAAPI animation unpauses it\n         * (per the WAAPI spec), which breaks autoplay: false.\n         */\n        if (options.startTime !== undefined && options.autoplay !== false) {\n            this.startTime = options.startTime;\n        }\n        this.options = options;\n    }\n    /**\n     * WAAPI doesn't natively have any interruption capabilities.\n     *\n     * Rather than read committed styles back out of the DOM, we can\n     * create a renderless JS animation and sample it twice to calculate\n     * its current value, \"previous\" value, and therefore allow\n     * Motion to calculate velocity for any subsequent animation.\n     */\n    updateMotionValue(value) {\n        const { motionValue, onUpdate, onComplete, element, ...options } = this.options;\n        if (!motionValue)\n            return;\n        if (value !== undefined) {\n            motionValue.set(value);\n            return;\n        }\n        const sampleAnimation = new JSAnimation({\n            ...options,\n            autoplay: false,\n        });\n        /**\n         * Use wall-clock elapsed time for sampling.\n         * Under CPU load, WAAPI's currentTime may not reflect actual\n         * elapsed time, causing incorrect sampling and visual jumps.\n         */\n        const sampleTime = Math.max(sampleDelta, time.now() - this.startTime);\n        const delta = clamp(0, sampleDelta, sampleTime - sampleDelta);\n        const current = sampleAnimation.sample(sampleTime).value;\n        /**\n         * Write the estimated value to inline style so it persists\n         * after cancel(), covering the async gap before the next\n         * animation starts.\n         */\n        const { name } = this.options;\n        if (element && name)\n            setStyle(element, name, current);\n        motionValue.setWithVelocity(sampleAnimation.sample(Math.max(0, sampleTime - delta)).value, current, delta);\n        sampleAnimation.stop();\n    }\n}\n\nexport { NativeAnimationExtended };\n//# sourceMappingURL=NativeAnimationExtended.mjs.map\n","import { complex } from '../../value/types/complex/index.mjs';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (value, name) => {\n    // If the list of keys that might be non-animatable grows, replace with Set\n    if (name === \"zIndex\")\n        return false;\n    // If it's a number or a keyframes array, we can animate it. We might at some point\n    // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n    // but for now lets leave it like this for performance reasons\n    if (typeof value === \"number\" || Array.isArray(value))\n        return true;\n    if (typeof value === \"string\" && // It's animatable if we have a string\n        (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n        !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n    ) {\n        return true;\n    }\n    return false;\n};\n\nexport { isAnimatable };\n//# sourceMappingURL=is-animatable.mjs.map\n","import { warning } from 'motion-utils';\nimport { isGenerator } from '../generators/utils/is-generator.mjs';\nimport { isAnimatable } from './is-animatable.mjs';\n\nfunction hasKeyframesChanged(keyframes) {\n    const current = keyframes[0];\n    if (keyframes.length === 1)\n        return true;\n    for (let i = 0; i < keyframes.length; i++) {\n        if (keyframes[i] !== current)\n            return true;\n    }\n}\nfunction canAnimate(keyframes, name, type, velocity) {\n    /**\n     * Check if we're able to animate between the start and end keyframes,\n     * and throw a warning if we're attempting to animate between one that's\n     * animatable and another that isn't.\n     */\n    const originKeyframe = keyframes[0];\n    if (originKeyframe === null) {\n        return false;\n    }\n    /**\n     * These aren't traditionally animatable but we do support them.\n     * In future we could look into making this more generic or replacing\n     * this function with mix() === mixImmediate\n     */\n    if (name === \"display\" || name === \"visibility\")\n        return true;\n    const targetKeyframe = keyframes[keyframes.length - 1];\n    const isOriginAnimatable = isAnimatable(originKeyframe, name);\n    const isTargetAnimatable = isAnimatable(targetKeyframe, name);\n    warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from \"${originKeyframe}\" to \"${targetKeyframe}\". \"${isOriginAnimatable ? targetKeyframe : originKeyframe}\" is not an animatable value.`, \"value-not-animatable\");\n    // Always skip if any of these are true\n    if (!isOriginAnimatable || !isTargetAnimatable) {\n        return false;\n    }\n    return (hasKeyframesChanged(keyframes) ||\n        ((type === \"spring\" || isGenerator(type)) && velocity));\n}\n\nexport { canAnimate };\n//# sourceMappingURL=can-animate.mjs.map\n","function makeAnimationInstant(options) {\n    options.duration = 0;\n    options.type = \"keyframes\";\n}\n\nexport { makeAnimationInstant };\n//# sourceMappingURL=make-animation-instant.mjs.map\n","/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n    \"opacity\",\n    \"clipPath\",\n    \"filter\",\n    \"transform\",\n    // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n    // or until we implement support for linear() easing.\n    // \"background-color\"\n]);\n\nexport { acceleratedValues };\n//# sourceMappingURL=accelerated-values.mjs.map\n","const browserColorFunctions = /^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\\(/;\nfunction hasBrowserOnlyColors(keyframes) {\n    for (let i = 0; i < keyframes.length; i++) {\n        if (typeof keyframes[i] === \"string\" &&\n            browserColorFunctions.test(keyframes[i])) {\n            return true;\n        }\n    }\n    return false;\n}\n\nexport { hasBrowserOnlyColors };\n//# sourceMappingURL=is-browser-color.mjs.map\n","import { memo } from 'motion-utils';\nimport { acceleratedValues } from '../utils/accelerated-values.mjs';\nimport { hasBrowserOnlyColors } from '../utils/is-browser-color.mjs';\n\nconst colorProperties = new Set([\n    \"color\",\n    \"backgroundColor\",\n    \"outlineColor\",\n    \"fill\",\n    \"stroke\",\n    \"borderColor\",\n    \"borderTopColor\",\n    \"borderRightColor\",\n    \"borderBottomColor\",\n    \"borderLeftColor\",\n]);\nconst supportsWaapi = /*@__PURE__*/ memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\nfunction supportsBrowserAnimation(options) {\n    const { motionValue, name, repeatDelay, repeatType, damping, type, keyframes, } = options;\n    const subject = motionValue?.owner?.current;\n    /**\n     * We use this check instead of isHTMLElement() because we explicitly\n     * **don't** want elements in different timing contexts (i.e. popups)\n     * to be accelerated, as it's not possible to sync these animations\n     * properly with those driven from the main window frameloop.\n     */\n    if (!(subject instanceof HTMLElement)) {\n        return false;\n    }\n    const { onUpdate, transformTemplate } = motionValue.owner.getProps();\n    return (supportsWaapi() &&\n        name &&\n        /**\n         * Force WAAPI for color properties with browser-only color formats\n         * (oklch, oklab, lab, lch, etc.) that the JS animation path can't parse.\n         */\n        (acceleratedValues.has(name) ||\n            (colorProperties.has(name) &&\n                hasBrowserOnlyColors(keyframes))) &&\n        (name !== \"transform\" || !transformTemplate) &&\n        /**\n         * If we're outputting values to onUpdate then we can't use WAAPI as there's\n         * no way to read the value from WAAPI every frame.\n         */\n        !onUpdate &&\n        !repeatDelay &&\n        repeatType !== \"mirror\" &&\n        damping !== 0 &&\n        type !== \"inertia\");\n}\n\nexport { supportsBrowserAnimation };\n//# sourceMappingURL=waapi.mjs.map\n","import { MotionGlobalConfig, noop } from 'motion-utils';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { JSAnimation } from './JSAnimation.mjs';\nimport { getFinalKeyframe } from './keyframes/get-final.mjs';\nimport { KeyframeResolver, flushKeyframeResolvers } from './keyframes/KeyframesResolver.mjs';\nimport { NativeAnimationExtended } from './NativeAnimationExtended.mjs';\nimport { canAnimate } from './utils/can-animate.mjs';\nimport { makeAnimationInstant } from './utils/make-animation-instant.mjs';\nimport { WithPromise } from './utils/WithPromise.mjs';\nimport { supportsBrowserAnimation } from './waapi/supports/waapi.mjs';\n\n/**\n * Maximum time allowed between an animation being created and it being\n * resolved for us to use the latter as the start time.\n *\n * This is to ensure that while we prefer to \"start\" an animation as soon\n * as it's triggered, we also want to avoid a visual jump if there's a big delay\n * between these two moments.\n */\nconst MAX_RESOLVE_DELAY = 40;\nclass AsyncMotionValueAnimation extends WithPromise {\n    constructor({ autoplay = true, delay = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", keyframes, name, motionValue, element, ...options }) {\n        super();\n        /**\n         * Bound to support return animation.stop pattern\n         */\n        this.stop = () => {\n            if (this._animation) {\n                this._animation.stop();\n                this.stopTimeline?.();\n            }\n            this.keyframeResolver?.cancel();\n        };\n        this.createdAt = time.now();\n        const optionsWithDefaults = {\n            autoplay,\n            delay,\n            type,\n            repeat,\n            repeatDelay,\n            repeatType,\n            name,\n            motionValue,\n            element,\n            ...options,\n        };\n        const KeyframeResolver$1 = element?.KeyframeResolver || KeyframeResolver;\n        this.keyframeResolver = new KeyframeResolver$1(keyframes, (resolvedKeyframes, finalKeyframe, forced) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe, optionsWithDefaults, !forced), name, motionValue, element);\n        this.keyframeResolver?.scheduleResolve();\n    }\n    onKeyframesResolved(keyframes, finalKeyframe, options, sync) {\n        this.keyframeResolver = undefined;\n        const { name, type, velocity, delay, isHandoff, onUpdate } = options;\n        this.resolvedAt = time.now();\n        /**\n         * If we can't animate this value with the resolved keyframes\n         * then we should complete it immediately.\n         */\n        let canAnimateValue = true;\n        if (!canAnimate(keyframes, name, type, velocity)) {\n            canAnimateValue = false;\n            if (MotionGlobalConfig.instantAnimations || !delay) {\n                onUpdate?.(getFinalKeyframe(keyframes, options, finalKeyframe));\n            }\n            keyframes[0] = keyframes[keyframes.length - 1];\n            makeAnimationInstant(options);\n            options.repeat = 0;\n        }\n        /**\n         * Resolve startTime for the animation.\n         *\n         * This method uses the createdAt and resolvedAt to calculate the\n         * animation startTime. *Ideally*, we would use the createdAt time as t=0\n         * as the following frame would then be the first frame of the animation in\n         * progress, which would feel snappier.\n         *\n         * However, if there's a delay (main thread work) between the creation of\n         * the animation and the first committed frame, we prefer to use resolvedAt\n         * to avoid a sudden jump into the animation.\n         */\n        const startTime = sync\n            ? !this.resolvedAt\n                ? this.createdAt\n                : this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY\n                    ? this.resolvedAt\n                    : this.createdAt\n            : undefined;\n        const resolvedOptions = {\n            startTime,\n            finalKeyframe,\n            ...options,\n            keyframes,\n        };\n        /**\n         * Animate via WAAPI if possible. If this is a handoff animation, the optimised animation will be running via\n         * WAAPI. Therefore, this animation must be JS to ensure it runs \"under\" the\n         * optimised animation.\n         *\n         * Also skip WAAPI when keyframes aren't animatable, as the resolved\n         * values may not be valid CSS and would trigger browser warnings.\n         */\n        const useWaapi = canAnimateValue &&\n            !isHandoff &&\n            supportsBrowserAnimation(resolvedOptions);\n        const element = resolvedOptions.motionValue?.owner?.current;\n        let animation;\n        if (useWaapi) {\n            try {\n                animation = new NativeAnimationExtended({\n                    ...resolvedOptions,\n                    element,\n                });\n            }\n            catch {\n                animation = new JSAnimation(resolvedOptions);\n            }\n        }\n        else {\n            animation = new JSAnimation(resolvedOptions);\n        }\n        animation.finished.then(() => {\n            this.notifyFinished();\n        }).catch(noop);\n        if (this.pendingTimeline) {\n            this.stopTimeline = animation.attachTimeline(this.pendingTimeline);\n            this.pendingTimeline = undefined;\n        }\n        this._animation = animation;\n    }\n    get finished() {\n        if (!this._animation) {\n            return this._finished;\n        }\n        else {\n            return this.animation.finished;\n        }\n    }\n    then(onResolve, _onReject) {\n        return this.finished.finally(onResolve).then(() => { });\n    }\n    get animation() {\n        if (!this._animation) {\n            this.keyframeResolver?.resume();\n            flushKeyframeResolvers();\n        }\n        return this._animation;\n    }\n    get duration() {\n        return this.animation.duration;\n    }\n    get iterationDuration() {\n        return this.animation.iterationDuration;\n    }\n    get time() {\n        return this.animation.time;\n    }\n    set time(newTime) {\n        this.animation.time = newTime;\n    }\n    get speed() {\n        return this.animation.speed;\n    }\n    get state() {\n        return this.animation.state;\n    }\n    set speed(newSpeed) {\n        this.animation.speed = newSpeed;\n    }\n    get startTime() {\n        return this.animation.startTime;\n    }\n    attachTimeline(timeline) {\n        if (this._animation) {\n            this.stopTimeline = this.animation.attachTimeline(timeline);\n        }\n        else {\n            this.pendingTimeline = timeline;\n        }\n        return () => this.stop();\n    }\n    play() {\n        this.animation.play();\n    }\n    pause() {\n        this.animation.pause();\n    }\n    complete() {\n        this.animation.complete();\n    }\n    cancel() {\n        if (this._animation) {\n            this.animation.cancel();\n        }\n        this.keyframeResolver?.cancel();\n    }\n}\n\nexport { AsyncMotionValueAnimation };\n//# sourceMappingURL=AsyncMotionValueAnimation.mjs.map\n","class GroupAnimation {\n    constructor(animations) {\n        // Bound to accomadate common `return animation.stop` pattern\n        this.stop = () => this.runAll(\"stop\");\n        this.animations = animations.filter(Boolean);\n    }\n    get finished() {\n        return Promise.all(this.animations.map((animation) => animation.finished));\n    }\n    /**\n     * TODO: Filter out cancelled or stopped animations before returning\n     */\n    getAll(propName) {\n        return this.animations[0][propName];\n    }\n    setAll(propName, newValue) {\n        for (let i = 0; i < this.animations.length; i++) {\n            this.animations[i][propName] = newValue;\n        }\n    }\n    attachTimeline(timeline) {\n        const subscriptions = this.animations.map((animation) => animation.attachTimeline(timeline));\n        return () => {\n            subscriptions.forEach((cancel, i) => {\n                cancel && cancel();\n                this.animations[i].stop();\n            });\n        };\n    }\n    get time() {\n        return this.getAll(\"time\");\n    }\n    set time(time) {\n        this.setAll(\"time\", time);\n    }\n    get speed() {\n        return this.getAll(\"speed\");\n    }\n    set speed(speed) {\n        this.setAll(\"speed\", speed);\n    }\n    get state() {\n        return this.getAll(\"state\");\n    }\n    get startTime() {\n        return this.getAll(\"startTime\");\n    }\n    get duration() {\n        return getMax(this.animations, \"duration\");\n    }\n    get iterationDuration() {\n        return getMax(this.animations, \"iterationDuration\");\n    }\n    runAll(methodName) {\n        this.animations.forEach((controls) => controls[methodName]());\n    }\n    play() {\n        this.runAll(\"play\");\n    }\n    pause() {\n        this.runAll(\"pause\");\n    }\n    cancel() {\n        this.runAll(\"cancel\");\n    }\n    complete() {\n        this.runAll(\"complete\");\n    }\n}\nfunction getMax(animations, propName) {\n    let max = 0;\n    for (let i = 0; i < animations.length; i++) {\n        const value = animations[i][propName];\n        if (value !== null && value > max) {\n            max = value;\n        }\n    }\n    return max;\n}\n\nexport { GroupAnimation };\n//# sourceMappingURL=GroupAnimation.mjs.map\n","import { GroupAnimation } from './GroupAnimation.mjs';\n\nclass GroupAnimationWithThen extends GroupAnimation {\n    then(onResolve, _onReject) {\n        return this.finished.finally(onResolve).then(() => { });\n    }\n}\n\nexport { GroupAnimationWithThen };\n//# sourceMappingURL=GroupAnimationWithThen.mjs.map\n","function calcChildStagger(children, child, delayChildren, staggerChildren = 0, staggerDirection = 1) {\n    const index = Array.from(children)\n        .sort((a, b) => a.sortNodePosition(b))\n        .indexOf(child);\n    const numChildren = children.size;\n    const maxStaggerDuration = (numChildren - 1) * staggerChildren;\n    const delayIsFunction = typeof delayChildren === \"function\";\n    return delayIsFunction\n        ? delayChildren(index, numChildren)\n        : staggerDirection === 1\n            ? index * staggerChildren\n            : maxStaggerDuration - index * staggerChildren;\n}\n\nexport { calcChildStagger };\n//# sourceMappingURL=calc-child-stagger.mjs.map\n","import { warnOnce, SubscriptionManager, velocityPerSecond } from 'motion-utils';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\n/**\n * Maximum time between the value of two frames, beyond which we\n * assume the velocity has since been 0.\n */\nconst MAX_VELOCITY_DELTA = 30;\nconst isFloat = (value) => {\n    return !isNaN(parseFloat(value));\n};\nconst collectMotionValues = {\n    current: undefined,\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n    /**\n     * @param init - The initiating value\n     * @param config - Optional configuration options\n     *\n     * -  `transformer`: A function to transform incoming values with.\n     */\n    constructor(init, options = {}) {\n        /**\n         * Tracks whether this value can output a velocity. Currently this is only true\n         * if the value is numerical, but we might be able to widen the scope here and support\n         * other value types.\n         *\n         * @internal\n         */\n        this.canTrackVelocity = null;\n        /**\n         * An object containing a SubscriptionManager for each active event.\n         */\n        this.events = {};\n        this.updateAndNotify = (v) => {\n            const currentTime = time.now();\n            /**\n             * If we're updating the value during another frame or eventloop\n             * than the previous frame, then the we set the previous frame value\n             * to current.\n             */\n            if (this.updatedAt !== currentTime) {\n                this.setPrevFrameValue();\n            }\n            this.prev = this.current;\n            this.setCurrent(v);\n            // Update update subscribers\n            if (this.current !== this.prev) {\n                this.events.change?.notify(this.current);\n                if (this.dependents) {\n                    for (const dependent of this.dependents) {\n                        dependent.dirty();\n                    }\n                }\n            }\n        };\n        this.hasAnimated = false;\n        this.setCurrent(init);\n        this.owner = options.owner;\n    }\n    setCurrent(current) {\n        this.current = current;\n        this.updatedAt = time.now();\n        if (this.canTrackVelocity === null && current !== undefined) {\n            this.canTrackVelocity = isFloat(this.current);\n        }\n    }\n    setPrevFrameValue(prevFrameValue = this.current) {\n        this.prevFrameValue = prevFrameValue;\n        this.prevUpdatedAt = this.updatedAt;\n    }\n    /**\n     * Adds a function that will be notified when the `MotionValue` is updated.\n     *\n     * It returns a function that, when called, will cancel the subscription.\n     *\n     * When calling `onChange` inside a React component, it should be wrapped with the\n     * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n     * from the `useEffect` function to ensure you don't add duplicate subscribers..\n     *\n     * ```jsx\n     * export const MyComponent = () => {\n     *   const x = useMotionValue(0)\n     *   const y = useMotionValue(0)\n     *   const opacity = useMotionValue(1)\n     *\n     *   useEffect(() => {\n     *     function updateOpacity() {\n     *       const maxXY = Math.max(x.get(), y.get())\n     *       const newOpacity = transform(maxXY, [0, 100], [1, 0])\n     *       opacity.set(newOpacity)\n     *     }\n     *\n     *     const unsubscribeX = x.on(\"change\", updateOpacity)\n     *     const unsubscribeY = y.on(\"change\", updateOpacity)\n     *\n     *     return () => {\n     *       unsubscribeX()\n     *       unsubscribeY()\n     *     }\n     *   }, [])\n     *\n     *   return <motion.div style={{ x }} />\n     * }\n     * ```\n     *\n     * @param subscriber - A function that receives the latest value.\n     * @returns A function that, when called, will cancel this subscription.\n     *\n     * @deprecated\n     */\n    onChange(subscription) {\n        if (process.env.NODE_ENV !== \"production\") {\n            warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n        }\n        return this.on(\"change\", subscription);\n    }\n    on(eventName, callback) {\n        if (!this.events[eventName]) {\n            this.events[eventName] = new SubscriptionManager();\n        }\n        const unsubscribe = this.events[eventName].add(callback);\n        if (eventName === \"change\") {\n            return () => {\n                unsubscribe();\n                /**\n                 * If we have no more change listeners by the start\n                 * of the next frame, stop active animations.\n                 */\n                frame.read(() => {\n                    if (!this.events.change.getSize()) {\n                        this.stop();\n                    }\n                });\n            };\n        }\n        return unsubscribe;\n    }\n    clearListeners() {\n        for (const eventManagers in this.events) {\n            this.events[eventManagers].clear();\n        }\n    }\n    /**\n     * Attaches a passive effect to the `MotionValue`.\n     */\n    attach(passiveEffect, stopPassiveEffect) {\n        this.passiveEffect = passiveEffect;\n        this.stopPassiveEffect = stopPassiveEffect;\n    }\n    /**\n     * Sets the state of the `MotionValue`.\n     *\n     * @remarks\n     *\n     * ```jsx\n     * const x = useMotionValue(0)\n     * x.set(10)\n     * ```\n     *\n     * @param latest - Latest value to set.\n     * @param render - Whether to notify render subscribers. Defaults to `true`\n     *\n     * @public\n     */\n    set(v) {\n        if (!this.passiveEffect) {\n            this.updateAndNotify(v);\n        }\n        else {\n            this.passiveEffect(v, this.updateAndNotify);\n        }\n    }\n    setWithVelocity(prev, current, delta) {\n        this.set(current);\n        this.prev = undefined;\n        this.prevFrameValue = prev;\n        this.prevUpdatedAt = this.updatedAt - delta;\n    }\n    /**\n     * Set the state of the `MotionValue`, stopping any active animations,\n     * effects, and resets velocity to `0`.\n     */\n    jump(v, endAnimation = true) {\n        this.updateAndNotify(v);\n        this.prev = v;\n        this.prevUpdatedAt = this.prevFrameValue = undefined;\n        endAnimation && this.stop();\n        if (this.stopPassiveEffect)\n            this.stopPassiveEffect();\n    }\n    dirty() {\n        this.events.change?.notify(this.current);\n    }\n    addDependent(dependent) {\n        if (!this.dependents) {\n            this.dependents = new Set();\n        }\n        this.dependents.add(dependent);\n    }\n    removeDependent(dependent) {\n        if (this.dependents) {\n            this.dependents.delete(dependent);\n        }\n    }\n    /**\n     * Returns the latest state of `MotionValue`\n     *\n     * @returns - The latest state of `MotionValue`\n     *\n     * @public\n     */\n    get() {\n        if (collectMotionValues.current) {\n            collectMotionValues.current.push(this);\n        }\n        return this.current;\n    }\n    /**\n     * @public\n     */\n    getPrevious() {\n        return this.prev;\n    }\n    /**\n     * Returns the latest velocity of `MotionValue`\n     *\n     * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n     *\n     * @public\n     */\n    getVelocity() {\n        const currentTime = time.now();\n        if (!this.canTrackVelocity ||\n            this.prevFrameValue === undefined ||\n            currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n            return 0;\n        }\n        const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n        // Casts because of parseFloat's poor typing\n        return velocityPerSecond(parseFloat(this.current) -\n            parseFloat(this.prevFrameValue), delta);\n    }\n    /**\n     * Registers a new animation to control this `MotionValue`. Only one\n     * animation can drive a `MotionValue` at one time.\n     *\n     * ```jsx\n     * value.start()\n     * ```\n     *\n     * @param animation - A function that starts the provided animation\n     */\n    start(startAnimation) {\n        this.stop();\n        return new Promise((resolve) => {\n            this.hasAnimated = true;\n            this.animation = startAnimation(resolve);\n            if (this.events.animationStart) {\n                this.events.animationStart.notify();\n            }\n        }).then(() => {\n            if (this.events.animationComplete) {\n                this.events.animationComplete.notify();\n            }\n            this.clearAnimation();\n        });\n    }\n    /**\n     * Stop the currently active animation.\n     *\n     * @public\n     */\n    stop() {\n        if (this.animation) {\n            this.animation.stop();\n            if (this.events.animationCancel) {\n                this.events.animationCancel.notify();\n            }\n        }\n        this.clearAnimation();\n    }\n    /**\n     * Returns `true` if this value is currently animating.\n     *\n     * @public\n     */\n    isAnimating() {\n        return !!this.animation;\n    }\n    clearAnimation() {\n        delete this.animation;\n    }\n    /**\n     * Destroy and clean up subscribers to this `MotionValue`.\n     *\n     * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n     * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n     * created a `MotionValue` via the `motionValue` function.\n     *\n     * @public\n     */\n    destroy() {\n        this.dependents?.clear();\n        this.events.destroy?.notify();\n        this.clearListeners();\n        this.stop();\n        if (this.stopPassiveEffect) {\n            this.stopPassiveEffect();\n        }\n    }\n}\nfunction motionValue(init, options) {\n    return new MotionValue(init, options);\n}\n\nexport { MotionValue, collectMotionValues, motionValue };\n//# sourceMappingURL=index.mjs.map\n","/**\n * If `transition` has `inherit: true`, shallow-merge it with\n * `parentTransition` (child keys win) and strip the `inherit` key.\n * Otherwise return `transition` unchanged.\n */\nfunction resolveTransition(transition, parentTransition) {\n    if (transition?.inherit && parentTransition) {\n        const { inherit: _, ...rest } = transition;\n        return { ...parentTransition, ...rest };\n    }\n    return transition;\n}\n\nexport { resolveTransition };\n//# sourceMappingURL=resolve-transition.mjs.map\n","import { resolveTransition } from './resolve-transition.mjs';\n\nfunction getValueTransition(transition, key) {\n    const valueTransition = transition?.[key] ??\n        transition?.[\"default\"] ??\n        transition;\n    if (valueTransition !== transition) {\n        return resolveTransition(valueTransition, transition);\n    }\n    return valueTransition;\n}\n\nexport { getValueTransition };\n//# sourceMappingURL=get-value-transition.mjs.map\n","import { transformProps } from '../../render/utils/keys-transform.mjs';\n\nconst underDampedSpring = {\n    type: \"spring\",\n    stiffness: 500,\n    damping: 25,\n    restSpeed: 10,\n};\nconst criticallyDampedSpring = (target) => ({\n    type: \"spring\",\n    stiffness: 550,\n    damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n    restSpeed: 10,\n});\nconst keyframesTransition = {\n    type: \"keyframes\",\n    duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n    type: \"keyframes\",\n    ease: [0.25, 0.1, 0.35, 1],\n    duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n    if (keyframes.length > 2) {\n        return keyframesTransition;\n    }\n    else if (transformProps.has(valueKey)) {\n        return valueKey.startsWith(\"scale\")\n            ? criticallyDampedSpring(keyframes[1])\n            : underDampedSpring;\n    }\n    return ease;\n};\n\nexport { getDefaultTransition };\n//# sourceMappingURL=default-transitions.mjs.map\n","const orchestrationKeys = new Set([\n    \"when\",\n    \"delay\",\n    \"delayChildren\",\n    \"staggerChildren\",\n    \"staggerDirection\",\n    \"repeat\",\n    \"repeatType\",\n    \"repeatDelay\",\n    \"from\",\n    \"elapsed\",\n]);\n/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined(transition) {\n    for (const key in transition) {\n        if (!orchestrationKeys.has(key))\n            return true;\n    }\n    return false;\n}\n\nexport { isTransitionDefined };\n//# sourceMappingURL=is-transition-defined.mjs.map\n","import { secondsToMilliseconds, MotionGlobalConfig } from 'motion-utils';\nimport { AsyncMotionValueAnimation } from '../AsyncMotionValueAnimation.mjs';\nimport { JSAnimation } from '../JSAnimation.mjs';\nimport { getValueTransition } from '../utils/get-value-transition.mjs';\nimport { makeAnimationInstant } from '../utils/make-animation-instant.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.mjs';\nimport { getFinalKeyframe } from '../keyframes/get-final.mjs';\nimport { isTransitionDefined } from '../utils/is-transition-defined.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {\n    const valueTransition = getValueTransition(transition, name) || {};\n    /**\n     * Most transition values are currently completely overwritten by value-specific\n     * transitions. In the future it'd be nicer to blend these transitions. But for now\n     * delay actually does inherit from the root transition if not value-specific.\n     */\n    const delay = valueTransition.delay || transition.delay || 0;\n    /**\n     * Elapsed isn't a public transition option but can be passed through from\n     * optimized appear effects in milliseconds.\n     */\n    let { elapsed = 0 } = transition;\n    elapsed = elapsed - secondsToMilliseconds(delay);\n    const options = {\n        keyframes: Array.isArray(target) ? target : [null, target],\n        ease: \"easeOut\",\n        velocity: value.getVelocity(),\n        ...valueTransition,\n        delay: -elapsed,\n        onUpdate: (v) => {\n            value.set(v);\n            valueTransition.onUpdate && valueTransition.onUpdate(v);\n        },\n        onComplete: () => {\n            onComplete();\n            valueTransition.onComplete && valueTransition.onComplete();\n        },\n        name,\n        motionValue: value,\n        element: isHandoff ? undefined : element,\n    };\n    /**\n     * If there's no transition defined for this value, we can generate\n     * unique transition settings for this value.\n     */\n    if (!isTransitionDefined(valueTransition)) {\n        Object.assign(options, getDefaultTransition(name, options));\n    }\n    /**\n     * Both WAAPI and our internal animation functions use durations\n     * as defined by milliseconds, while our external API defines them\n     * as seconds.\n     */\n    options.duration && (options.duration = secondsToMilliseconds(options.duration));\n    options.repeatDelay && (options.repeatDelay = secondsToMilliseconds(options.repeatDelay));\n    /**\n     * Support deprecated way to set initial value. Prefer keyframe syntax.\n     */\n    if (options.from !== undefined) {\n        options.keyframes[0] = options.from;\n    }\n    let shouldSkip = false;\n    if (options.type === false ||\n        (options.duration === 0 && !options.repeatDelay)) {\n        makeAnimationInstant(options);\n        if (options.delay === 0) {\n            shouldSkip = true;\n        }\n    }\n    if (MotionGlobalConfig.instantAnimations ||\n        MotionGlobalConfig.skipAnimations ||\n        element?.shouldSkipAnimations ||\n        valueTransition.skipAnimations) {\n        shouldSkip = true;\n        makeAnimationInstant(options);\n        options.delay = 0;\n    }\n    /**\n     * If the transition type or easing has been explicitly set by the user\n     * then we don't want to allow flattening the animation.\n     */\n    options.allowFlatten = !valueTransition.type && !valueTransition.ease;\n    /**\n     * If we can or must skip creating the animation, and apply only\n     * the final keyframe, do so. We also check once keyframes are resolved but\n     * this early check prevents the need to create an animation at all.\n     */\n    if (shouldSkip && !isHandoff && value.get() !== undefined) {\n        const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);\n        if (finalKeyframe !== undefined) {\n            frame.update(() => {\n                options.onUpdate(finalKeyframe);\n                options.onComplete();\n            });\n            return;\n        }\n    }\n    return valueTransition.isSync\n        ? new JSAnimation(options)\n        : new AsyncMotionValueAnimation(options);\n};\n\nexport { animateMotionValue };\n//# sourceMappingURL=motion-value.mjs.map\n","import { invariant, isNumericalString } from 'motion-utils';\nimport { isCSSVariableToken } from './is-css-variable.mjs';\n\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst splitCSSVariableRegex = \n// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n/^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u;\nfunction parseCSSVariable(current) {\n    const match = splitCSSVariableRegex.exec(current);\n    if (!match)\n        return [,];\n    const [, token1, token2, fallback] = match;\n    return [`--${token1 ?? token2}`, fallback];\n}\nconst maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n    invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`, \"max-css-var-depth\");\n    const [token, fallback] = parseCSSVariable(current);\n    // No CSS variable detected\n    if (!token)\n        return;\n    // Attempt to read this CSS variable off the element\n    const resolved = window.getComputedStyle(element).getPropertyValue(token);\n    if (resolved) {\n        const trimmed = resolved.trim();\n        return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n    }\n    return isCSSVariableToken(fallback)\n        ? getVariableValue(fallback, element, depth + 1)\n        : fallback;\n}\n\nexport { getVariableValue, parseCSSVariable };\n//# sourceMappingURL=css-variables-conversion.mjs.map\n","function getValueState(visualElement) {\n    const state = [{}, {}];\n    visualElement?.values.forEach((value, key) => {\n        state[0][key] = value.get();\n        state[1][key] = value.getVelocity();\n    });\n    return state;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n    /**\n     * If the variant definition is a function, resolve.\n     */\n    if (typeof definition === \"function\") {\n        const [current, velocity] = getValueState(visualElement);\n        definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n    }\n    /**\n     * If the variant definition is a variant label, or\n     * the function returned a variant label, resolve.\n     */\n    if (typeof definition === \"string\") {\n        definition = props.variants && props.variants[definition];\n    }\n    /**\n     * At this point we've resolved both functions and variant labels,\n     * but the resolved variant label might itself have been a function.\n     * If so, resolve. This can only have returned a valid target object.\n     */\n    if (typeof definition === \"function\") {\n        const [current, velocity] = getValueState(visualElement);\n        definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n    }\n    return definition;\n}\n\nexport { resolveVariantFromProps };\n//# sourceMappingURL=resolve-variants.mjs.map\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\nfunction resolveVariant(visualElement, definition, custom) {\n    const props = visualElement.getProps();\n    return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, visualElement);\n}\n\nexport { resolveVariant };\n//# sourceMappingURL=resolve-dynamic-variants.mjs.map\n","import { transformPropOrder } from './keys-transform.mjs';\n\nconst positionalKeys = new Set([\n    \"width\",\n    \"height\",\n    \"top\",\n    \"left\",\n    \"right\",\n    \"bottom\",\n    ...transformPropOrder,\n]);\n\nexport { positionalKeys };\n//# sourceMappingURL=keys-position.mjs.map\n","const isKeyframesTarget = (v) => {\n    return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n//# sourceMappingURL=is-keyframes-target.mjs.map\n","import { motionValue } from '../../value/index.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { isKeyframesTarget } from './is-keyframes-target.mjs';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n    if (visualElement.hasValue(key)) {\n        visualElement.getValue(key).set(value);\n    }\n    else {\n        visualElement.addValue(key, motionValue(value));\n    }\n}\nfunction resolveFinalValueInKeyframes(v) {\n    // TODO maybe throw if v.length - 1 is placeholder token?\n    return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n}\nfunction setTarget(visualElement, definition) {\n    const resolved = resolveVariant(visualElement, definition);\n    let { transitionEnd = {}, transition = {}, ...target } = resolved || {};\n    target = { ...target, ...transitionEnd };\n    for (const key in target) {\n        const value = resolveFinalValueInKeyframes(target[key]);\n        setMotionValue(visualElement, key, value);\n    }\n}\n\nexport { setTarget };\n//# sourceMappingURL=setters.mjs.map\n","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\n//# sourceMappingURL=is-motion-value.mjs.map\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n    return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n//# sourceMappingURL=is.mjs.map\n","import { MotionGlobalConfig } from 'motion-utils';\nimport { isWillChangeMotionValue } from './is.mjs';\n\nfunction addValueToWillChange(visualElement, key) {\n    const willChange = visualElement.getValue(\"willChange\");\n    /**\n     * It could be that a user has set willChange to a regular MotionValue,\n     * in which case we can't add the value to it.\n     */\n    if (isWillChangeMotionValue(willChange)) {\n        return willChange.add(key);\n    }\n    else if (!willChange && MotionGlobalConfig.WillChange) {\n        const newWillChange = new MotionGlobalConfig.WillChange(\"auto\");\n        visualElement.addValue(\"willChange\", newWillChange);\n        newWillChange.add(key);\n    }\n}\n\nexport { addValueToWillChange };\n//# sourceMappingURL=add-will-change.mjs.map\n","function camelToDash(str) {\n    return str.replace(/([A-Z])/g, (match) => `-${match.toLowerCase()}`);\n}\n\nexport { camelToDash };\n//# sourceMappingURL=camel-to-dash.mjs.map\n","import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\n//# sourceMappingURL=data-id.mjs.map\n","import { optimizedAppearDataAttribute } from './data-id.mjs';\n\nfunction getOptimisedAppearId(visualElement) {\n    return visualElement.props[optimizedAppearDataAttribute];\n}\n\nexport { getOptimisedAppearId };\n//# sourceMappingURL=get-appear-id.mjs.map\n","import { getValueTransition } from '../utils/get-value-transition.mjs';\nimport { resolveTransition } from '../utils/resolve-transition.mjs';\nimport { positionalKeys } from '../../render/utils/keys-position.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { addValueToWillChange } from '../../value/will-change/add-will-change.mjs';\nimport { getOptimisedAppearId } from '../optimized-appear/get-appear-id.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n    const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n    needsAnimating[key] = false;\n    return shouldBlock;\n}\nfunction animateTarget(visualElement, targetAndTransition, { delay = 0, transitionOverride, type } = {}) {\n    let { transition, transitionEnd, ...target } = targetAndTransition;\n    const defaultTransition = visualElement.getDefaultTransition();\n    transition = transition\n        ? resolveTransition(transition, defaultTransition)\n        : defaultTransition;\n    const reduceMotion = transition?.reduceMotion;\n    const skipAnimations = transition?.skipAnimations;\n    if (transitionOverride)\n        transition = transitionOverride;\n    const animations = [];\n    const animationTypeState = type &&\n        visualElement.animationState &&\n        visualElement.animationState.getState()[type];\n    const path = transition?.path;\n    if (path) {\n        // path mutates `target` to claim x/y; loop below skips them.\n        path.animateVisualElement(visualElement, target, transition, delay, animations);\n    }\n    for (const key in target) {\n        const value = visualElement.getValue(key, visualElement.latestValues[key] ?? null);\n        const valueTarget = target[key];\n        if (valueTarget === undefined ||\n            (animationTypeState &&\n                shouldBlockAnimation(animationTypeState, key))) {\n            continue;\n        }\n        const valueTransition = {\n            delay,\n            ...getValueTransition(transition || {}, key),\n        };\n        if (skipAnimations)\n            valueTransition.skipAnimations = true;\n        /**\n         * If the value is already at the defined target, skip the animation.\n         * We still re-assert the value via frame.update to take precedence\n         * over any stale transitionEnd callbacks from previous animations.\n         */\n        const currentValue = value.get();\n        if (currentValue !== undefined &&\n            !value.isAnimating() &&\n            !Array.isArray(valueTarget) &&\n            valueTarget === currentValue &&\n            !valueTransition.velocity) {\n            frame.update(() => value.set(valueTarget));\n            continue;\n        }\n        /**\n         * If this is the first time a value is being animated, check\n         * to see if we're handling off from an existing animation.\n         */\n        let isHandoff = false;\n        if (window.MotionHandoffAnimation) {\n            const appearId = getOptimisedAppearId(visualElement);\n            if (appearId) {\n                const startTime = window.MotionHandoffAnimation(appearId, key, frame);\n                if (startTime !== null) {\n                    valueTransition.startTime = startTime;\n                    isHandoff = true;\n                }\n            }\n        }\n        addValueToWillChange(visualElement, key);\n        const shouldReduceMotion = reduceMotion ?? visualElement.shouldReduceMotion;\n        value.start(animateMotionValue(key, value, valueTarget, shouldReduceMotion && positionalKeys.has(key)\n            ? { type: false }\n            : valueTransition, visualElement, isHandoff));\n        const animation = value.animation;\n        if (animation) {\n            animations.push(animation);\n        }\n    }\n    if (transitionEnd) {\n        const applyTransitionEnd = () => frame.update(() => {\n            transitionEnd && setTarget(visualElement, transitionEnd);\n        });\n        if (animations.length) {\n            Promise.all(animations).then(applyTransitionEnd);\n        }\n        else {\n            applyTransitionEnd();\n        }\n    }\n    return animations;\n}\n\nexport { animateTarget };\n//# sourceMappingURL=visual-element-target.mjs.map\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { calcChildStagger } from '../utils/calc-child-stagger.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\n\nfunction animateVariant(visualElement, variant, options = {}) {\n    const resolved = resolveVariant(visualElement, variant, options.type === \"exit\"\n        ? visualElement.presenceContext?.custom\n        : undefined);\n    let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n    if (options.transitionOverride) {\n        transition = options.transitionOverride;\n    }\n    /**\n     * If we have a variant, create a callback that runs it as an animation.\n     * Otherwise, we resolve a Promise immediately for a composable no-op.\n     */\n    const getAnimation = resolved\n        ? () => Promise.all(animateTarget(visualElement, resolved, options))\n        : () => Promise.resolve();\n    /**\n     * If we have children, create a callback that runs all their animations.\n     * Otherwise, we resolve a Promise immediately for a composable no-op.\n     */\n    const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size\n        ? (forwardDelay = 0) => {\n            const { delayChildren = 0, staggerChildren, staggerDirection, } = transition;\n            return animateChildren(visualElement, variant, forwardDelay, delayChildren, staggerChildren, staggerDirection, options);\n        }\n        : () => Promise.resolve();\n    /**\n     * If the transition explicitly defines a \"when\" option, we need to resolve either\n     * this animation or all children animations before playing the other.\n     */\n    const { when } = transition;\n    if (when) {\n        const [first, last] = when === \"beforeChildren\"\n            ? [getAnimation, getChildAnimations]\n            : [getChildAnimations, getAnimation];\n        return first().then(() => last());\n    }\n    else {\n        return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n    }\n}\nfunction animateChildren(visualElement, variant, delay = 0, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n    const animations = [];\n    for (const child of visualElement.variantChildren) {\n        child.notify(\"AnimationStart\", variant);\n        animations.push(animateVariant(child, variant, {\n            ...options,\n            delay: delay +\n                (typeof delayChildren === \"function\" ? 0 : delayChildren) +\n                calcChildStagger(visualElement.variantChildren, child, delayChildren, staggerChildren, staggerDirection),\n        }).then(() => child.notify(\"AnimationComplete\", variant)));\n    }\n    return Promise.all(animations);\n}\n\nexport { animateVariant };\n//# sourceMappingURL=visual-element-variant.mjs.map\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\nimport { animateVariant } from './visual-element-variant.mjs';\n\nfunction animateVisualElement(visualElement, definition, options = {}) {\n    visualElement.notify(\"AnimationStart\", definition);\n    let animation;\n    if (Array.isArray(definition)) {\n        const animations = definition.map((variant) => animateVariant(visualElement, variant, options));\n        animation = Promise.all(animations);\n    }\n    else if (typeof definition === \"string\") {\n        animation = animateVariant(visualElement, definition, options);\n    }\n    else {\n        const resolvedDefinition = typeof definition === \"function\"\n            ? resolveVariant(visualElement, definition, options.custom)\n            : definition;\n        animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n    }\n    return animation.then(() => {\n        visualElement.notify(\"AnimationComplete\", definition);\n    });\n}\n\nexport { animateVisualElement };\n//# sourceMappingURL=visual-element.mjs.map\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n    test: (v) => v === \"auto\",\n    parse: (v) => v,\n};\n\nexport { auto };\n//# sourceMappingURL=auto.mjs.map\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n//# sourceMappingURL=test.mjs.map\n","import { auto } from './auto.mjs';\nimport { number } from './numbers/index.mjs';\nimport { px, percent, degrees, vw, vh } from './numbers/units.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n//# sourceMappingURL=dimensions.mjs.map\n","import { isZeroValueString } from 'motion-utils';\n\nfunction isNone(value) {\n    if (typeof value === \"number\") {\n        return value === 0;\n    }\n    else if (value !== null) {\n        return value === \"none\" || value === \"0\" || isZeroValueString(value);\n    }\n    else {\n        return true;\n    }\n}\n\nexport { isNone };\n//# sourceMappingURL=is-none.mjs.map\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils/float-regex.mjs';\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n    const [name, value] = v.slice(0, -1).split(\"(\");\n    if (name === \"drop-shadow\")\n        return v;\n    const [number] = value.match(floatRegex) || [];\n    if (!number)\n        return v;\n    const unit = value.replace(number, \"\");\n    let defaultValue = maxDefaults.has(name) ? 1 : 0;\n    if (number !== value)\n        defaultValue *= 100;\n    return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /\\b([a-z-]*)\\(.*?\\)/gu;\nconst filter = {\n    ...complex,\n    getAnimatableNone: (v) => {\n        const functions = v.match(functionRegex);\n        return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n    },\n};\n\nexport { filter };\n//# sourceMappingURL=filter.mjs.map\n","import { complex } from './index.mjs';\n\nconst mask = {\n    ...complex,\n    getAnimatableNone: (v) => {\n        const parsed = complex.parse(v);\n        const transformer = complex.createTransformer(v);\n        return transformer(parsed.map((v) => typeof v === \"number\" ? 0 : typeof v === \"object\" ? { ...v, alpha: 1 } : v));\n    },\n};\n\nexport { mask };\n//# sourceMappingURL=mask.mjs.map\n","import { number } from './numbers/index.mjs';\n\nconst int = {\n    ...number,\n    transform: Math.round,\n};\n\nexport { int };\n//# sourceMappingURL=int.mjs.map\n","import { int } from '../int.mjs';\nimport { alpha } from '../numbers/index.mjs';\nimport { px } from '../numbers/units.mjs';\nimport { transformValueTypes } from './transform.mjs';\n\nconst numberValueTypes = {\n    // Border props\n    borderWidth: px,\n    borderTopWidth: px,\n    borderRightWidth: px,\n    borderBottomWidth: px,\n    borderLeftWidth: px,\n    borderRadius: px,\n    borderTopLeftRadius: px,\n    borderTopRightRadius: px,\n    borderBottomRightRadius: px,\n    borderBottomLeftRadius: px,\n    // Positioning props\n    width: px,\n    maxWidth: px,\n    height: px,\n    maxHeight: px,\n    top: px,\n    right: px,\n    bottom: px,\n    left: px,\n    inset: px,\n    insetBlock: px,\n    insetBlockStart: px,\n    insetBlockEnd: px,\n    insetInline: px,\n    insetInlineStart: px,\n    insetInlineEnd: px,\n    // Spacing props\n    padding: px,\n    paddingTop: px,\n    paddingRight: px,\n    paddingBottom: px,\n    paddingLeft: px,\n    paddingBlock: px,\n    paddingBlockStart: px,\n    paddingBlockEnd: px,\n    paddingInline: px,\n    paddingInlineStart: px,\n    paddingInlineEnd: px,\n    margin: px,\n    marginTop: px,\n    marginRight: px,\n    marginBottom: px,\n    marginLeft: px,\n    marginBlock: px,\n    marginBlockStart: px,\n    marginBlockEnd: px,\n    marginInline: px,\n    marginInlineStart: px,\n    marginInlineEnd: px,\n    // Typography\n    fontSize: px,\n    // Misc\n    backgroundPositionX: px,\n    backgroundPositionY: px,\n    ...transformValueTypes,\n    zIndex: int,\n    // SVG\n    fillOpacity: alpha,\n    strokeOpacity: alpha,\n    numOctaves: int,\n};\n\nexport { numberValueTypes };\n//# sourceMappingURL=number.mjs.map\n","import { alpha, scale } from '../numbers/index.mjs';\nimport { px, progressPercentage, degrees } from '../numbers/units.mjs';\n\nconst transformValueTypes = {\n    rotate: degrees,\n    /**\n     * Internal channel for `transition.path` orientToPath. Composed onto\n     * `rotate` at the transform-build sites so the user's `rotate` is\n     * never read or overwritten. Not part of `transformPropOrder`.\n     */\n    pathRotation: degrees,\n    rotateX: degrees,\n    rotateY: degrees,\n    rotateZ: degrees,\n    scale,\n    scaleX: scale,\n    scaleY: scale,\n    scaleZ: scale,\n    skew: degrees,\n    skewX: degrees,\n    skewY: degrees,\n    distance: px,\n    translateX: px,\n    translateY: px,\n    translateZ: px,\n    x: px,\n    y: px,\n    z: px,\n    perspective: px,\n    transformPerspective: px,\n    opacity: alpha,\n    originX: progressPercentage,\n    originY: progressPercentage,\n    originZ: px,\n};\n\nexport { transformValueTypes };\n//# sourceMappingURL=transform.mjs.map\n","import { color } from '../color/index.mjs';\nimport { filter } from '../complex/filter.mjs';\nimport { mask } from '../complex/mask.mjs';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n    ...numberValueTypes,\n    // Color props\n    color,\n    backgroundColor: color,\n    outlineColor: color,\n    fill: color,\n    stroke: color,\n    // Border props\n    borderColor: color,\n    borderTopColor: color,\n    borderRightColor: color,\n    borderBottomColor: color,\n    borderLeftColor: color,\n    filter,\n    WebkitFilter: filter,\n    mask,\n    WebkitMask: mask,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n//# sourceMappingURL=defaults.mjs.map\n","import { complex } from '../complex/index.mjs';\nimport { filter } from '../complex/filter.mjs';\nimport { mask } from '../complex/mask.mjs';\nimport { getDefaultValueType } from '../maps/defaults.mjs';\n\nconst customTypes = /*@__PURE__*/ new Set([filter, mask]);\nfunction getAnimatableNone(key, value) {\n    let defaultValueType = getDefaultValueType(key);\n    if (!customTypes.has(defaultValueType))\n        defaultValueType = complex;\n    // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n    return defaultValueType.getAnimatableNone\n        ? defaultValueType.getAnimatableNone(value)\n        : undefined;\n}\n\nexport { getAnimatableNone };\n//# sourceMappingURL=animatable-none.mjs.map\n","import { analyseComplexValue } from '../../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../../../value/types/utils/animatable-none.mjs';\n\n/**\n * If we encounter keyframes like \"none\" or \"0\" and we also have keyframes like\n * \"#fff\" or \"200px 200px\" we want to find a keyframe to serve as a template for\n * the \"none\" keyframes. In this case \"#fff\" or \"200px 200px\" - then these get turned into\n * zero equivalents, i.e. \"#fff0\" or \"0px 0px\".\n */\nconst invalidTemplates = new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n    let i = 0;\n    let animatableTemplate = undefined;\n    while (i < unresolvedKeyframes.length && !animatableTemplate) {\n        const keyframe = unresolvedKeyframes[i];\n        if (typeof keyframe === \"string\" &&\n            !invalidTemplates.has(keyframe) &&\n            analyseComplexValue(keyframe).values.length) {\n            animatableTemplate = unresolvedKeyframes[i];\n        }\n        i++;\n    }\n    if (animatableTemplate && name) {\n        for (const noneIndex of noneKeyframeIndexes) {\n            unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);\n        }\n    }\n}\n\nexport { makeNoneKeyframesAnimatable };\n//# sourceMappingURL=make-none-animatable.mjs.map\n","import { positionalKeys } from '../../render/utils/keys-position.mjs';\nimport { findDimensionValueType } from '../../value/types/dimensions.mjs';\nimport { getVariableValue } from '../utils/css-variables-conversion.mjs';\nimport { isCSSVariableToken, containsCSSVariable } from '../utils/is-css-variable.mjs';\nimport { KeyframeResolver } from './KeyframesResolver.mjs';\nimport { isNone } from './utils/is-none.mjs';\nimport { makeNoneKeyframesAnimatable } from './utils/make-none-animatable.mjs';\nimport { positionalValues, isNumOrPxType } from './utils/unit-conversion.mjs';\n\nclass DOMKeyframesResolver extends KeyframeResolver {\n    constructor(unresolvedKeyframes, onComplete, name, motionValue, element) {\n        super(unresolvedKeyframes, onComplete, name, motionValue, element, true);\n    }\n    readKeyframes() {\n        const { unresolvedKeyframes, element, name } = this;\n        if (!element || !element.current)\n            return;\n        super.readKeyframes();\n        /**\n         * If any keyframe is a CSS variable, we need to find its value by sampling the element\n         */\n        for (let i = 0; i < unresolvedKeyframes.length; i++) {\n            let keyframe = unresolvedKeyframes[i];\n            if (typeof keyframe === \"string\") {\n                keyframe = keyframe.trim();\n                if (isCSSVariableToken(keyframe)) {\n                    const resolved = getVariableValue(keyframe, element.current);\n                    if (resolved !== undefined) {\n                        unresolvedKeyframes[i] = resolved;\n                    }\n                    if (i === unresolvedKeyframes.length - 1) {\n                        this.finalKeyframe = keyframe;\n                    }\n                }\n            }\n        }\n        /**\n         * Resolve \"none\" values. We do this potentially twice - once before and once after measuring keyframes.\n         * This could be seen as inefficient but it's a trade-off to avoid measurements in more situations, which\n         * have a far bigger performance impact.\n         */\n        this.resolveNoneKeyframes();\n        /**\n         * Check to see if unit type has changed. If so schedule jobs that will\n         * temporarily set styles to the destination keyframes.\n         * Skip if we have more than two keyframes or this isn't a positional value.\n         * TODO: We can throw if there are multiple keyframes and the value type changes.\n         */\n        if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n            return;\n        }\n        const [origin, target] = unresolvedKeyframes;\n        const originType = findDimensionValueType(origin);\n        const targetType = findDimensionValueType(target);\n        /**\n         * If one keyframe contains embedded CSS variables (e.g. in calc()) and the other\n         * doesn't, we need to measure to convert to pixels. This handles GitHub issue #3410.\n         */\n        const originHasVar = containsCSSVariable(origin);\n        const targetHasVar = containsCSSVariable(target);\n        if (originHasVar !== targetHasVar && positionalValues[name]) {\n            this.needsMeasurement = true;\n            return;\n        }\n        /**\n         * Either we don't recognise these value types or we can animate between them.\n         */\n        if (originType === targetType)\n            return;\n        /**\n         * If both values are numbers or pixels, we can animate between them by\n         * converting them to numbers.\n         */\n        if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n            for (let i = 0; i < unresolvedKeyframes.length; i++) {\n                const value = unresolvedKeyframes[i];\n                if (typeof value === \"string\") {\n                    unresolvedKeyframes[i] = parseFloat(value);\n                }\n            }\n        }\n        else if (positionalValues[name]) {\n            /**\n             * Else, the only way to resolve this is by measuring the element.\n             */\n            this.needsMeasurement = true;\n        }\n    }\n    resolveNoneKeyframes() {\n        const { unresolvedKeyframes, name } = this;\n        const noneKeyframeIndexes = [];\n        for (let i = 0; i < unresolvedKeyframes.length; i++) {\n            if (unresolvedKeyframes[i] === null ||\n                isNone(unresolvedKeyframes[i])) {\n                noneKeyframeIndexes.push(i);\n            }\n        }\n        if (noneKeyframeIndexes.length) {\n            makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n        }\n    }\n    measureInitialState() {\n        const { element, unresolvedKeyframes, name } = this;\n        if (!element || !element.current)\n            return;\n        if (name === \"height\") {\n            this.suspendedScrollY = window.pageYOffset;\n        }\n        this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n        unresolvedKeyframes[0] = this.measuredOrigin;\n        // Set final key frame to measure after next render\n        const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n        if (measureKeyframe !== undefined) {\n            element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n        }\n    }\n    measureEndState() {\n        const { element, name, unresolvedKeyframes } = this;\n        if (!element || !element.current)\n            return;\n        const value = element.getValue(name);\n        value && value.jump(this.measuredOrigin, false);\n        const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n        const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n        unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n        if (finalKeyframe !== null && this.finalKeyframe === undefined) {\n            this.finalKeyframe = finalKeyframe;\n        }\n        // If we removed transform values, reapply them before the next render\n        if (this.removedTransforms?.length) {\n            this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n                element\n                    .getValue(unsetTransformName)\n                    .set(unsetTransformValue);\n            });\n        }\n        this.resolveNoneKeyframes();\n    }\n}\n\nexport { DOMKeyframesResolver };\n//# sourceMappingURL=DOMKeyframesResolver.mjs.map\n","function resolveElements(elementOrSelector, scope, selectorCache) {\n    if (elementOrSelector == null) {\n        return [];\n    }\n    if (elementOrSelector instanceof EventTarget) {\n        return [elementOrSelector];\n    }\n    else if (typeof elementOrSelector === \"string\") {\n        let root = document;\n        if (scope) {\n            root = scope.current;\n        }\n        const elements = selectorCache?.[elementOrSelector] ??\n            root.querySelectorAll(elementOrSelector);\n        return elements ? Array.from(elements) : [];\n    }\n    return Array.from(elementOrSelector).filter((element) => element != null);\n}\n\nexport { resolveElements };\n//# sourceMappingURL=resolve-elements.mjs.map\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n    return type && typeof value === \"number\"\n        ? type.transform(value)\n        : value;\n};\n\nexport { getValueAsType };\n//# sourceMappingURL=get-as-type.mjs.map\n","import { isObject } from 'motion-utils';\n\n/**\n * Checks if an element is an HTML element in a way\n * that works across iframes\n */\nfunction isHTMLElement(element) {\n    return (isObject(element) &&\n        \"offsetHeight\" in element &&\n        !(\"ownerSVGElement\" in element));\n}\n\nexport { isHTMLElement };\n//# sourceMappingURL=is-html-element.mjs.map\n","import { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: microtask, cancel: cancelMicrotask } = \n/* @__PURE__ */ createRenderBatcher(queueMicrotask, false);\n\nexport { cancelMicrotask, microtask };\n//# sourceMappingURL=microtask.mjs.map\n","const isDragging = {\n    x: false,\n    y: false,\n};\nfunction isDragActive() {\n    return isDragging.x || isDragging.y;\n}\n\nexport { isDragActive, isDragging };\n//# sourceMappingURL=is-active.mjs.map\n","import { isDragging } from './is-active.mjs';\n\nfunction setDragLock(axis) {\n    if (axis === \"x\" || axis === \"y\") {\n        if (isDragging[axis]) {\n            return null;\n        }\n        else {\n            isDragging[axis] = true;\n            return () => {\n                isDragging[axis] = false;\n            };\n        }\n    }\n    else {\n        if (isDragging.x || isDragging.y) {\n            return null;\n        }\n        else {\n            isDragging.x = isDragging.y = true;\n            return () => {\n                isDragging.x = isDragging.y = false;\n            };\n        }\n    }\n}\n\nexport { setDragLock };\n//# sourceMappingURL=set-active.mjs.map\n","import { resolveElements } from '../../utils/resolve-elements.mjs';\n\nfunction setupGesture(elementOrSelector, options) {\n    const elements = resolveElements(elementOrSelector);\n    const gestureAbortController = new AbortController();\n    const eventOptions = {\n        passive: true,\n        ...options,\n        signal: gestureAbortController.signal,\n    };\n    const cancel = () => gestureAbortController.abort();\n    return [elements, eventOptions, cancel];\n}\n\nexport { setupGesture };\n//# sourceMappingURL=setup.mjs.map\n","import { isDragActive } from './drag/state/is-active.mjs';\nimport { setupGesture } from './utils/setup.mjs';\n\nfunction isValidHover(event) {\n    return !(event.pointerType === \"touch\" || isDragActive());\n}\n/**\n * Create a hover gesture. hover() is different to .addEventListener(\"pointerenter\")\n * in that it has an easier syntax, filters out polyfilled touch events, interoperates\n * with drag gestures, and automatically removes the \"pointerennd\" event listener when the hover ends.\n *\n * @public\n */\nfunction hover(elementOrSelector, onHoverStart, options = {}) {\n    const [elements, eventOptions, cancel] = setupGesture(elementOrSelector, options);\n    elements.forEach((element) => {\n        let isPressed = false;\n        let deferredHoverEnd = false;\n        let hoverEndCallback;\n        const removePointerLeave = () => {\n            element.removeEventListener(\"pointerleave\", onPointerLeave);\n        };\n        const endHover = (event) => {\n            if (hoverEndCallback) {\n                hoverEndCallback(event);\n                hoverEndCallback = undefined;\n            }\n            removePointerLeave();\n        };\n        const onPointerUp = (event) => {\n            isPressed = false;\n            window.removeEventListener(\"pointerup\", onPointerUp);\n            window.removeEventListener(\"pointercancel\", onPointerUp);\n            if (deferredHoverEnd) {\n                deferredHoverEnd = false;\n                endHover(event);\n            }\n        };\n        const onPointerDown = () => {\n            isPressed = true;\n            window.addEventListener(\"pointerup\", onPointerUp, eventOptions);\n            window.addEventListener(\"pointercancel\", onPointerUp, eventOptions);\n        };\n        const onPointerLeave = (leaveEvent) => {\n            if (leaveEvent.pointerType === \"touch\")\n                return;\n            if (isPressed) {\n                deferredHoverEnd = true;\n                return;\n            }\n            endHover(leaveEvent);\n        };\n        const onPointerEnter = (enterEvent) => {\n            if (!isValidHover(enterEvent))\n                return;\n            deferredHoverEnd = false;\n            const onHoverEnd = onHoverStart(element, enterEvent);\n            if (typeof onHoverEnd !== \"function\")\n                return;\n            hoverEndCallback = onHoverEnd;\n            element.addEventListener(\"pointerleave\", onPointerLeave, eventOptions);\n        };\n        element.addEventListener(\"pointerenter\", onPointerEnter, eventOptions);\n        element.addEventListener(\"pointerdown\", onPointerDown, eventOptions);\n    });\n    return cancel;\n}\n\nexport { hover };\n//# sourceMappingURL=hover.mjs.map\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n    if (!child) {\n        return false;\n    }\n    else if (parent === child) {\n        return true;\n    }\n    else {\n        return isNodeOrChild(parent, child.parentElement);\n    }\n};\n\nexport { isNodeOrChild };\n//# sourceMappingURL=is-node-or-child.mjs.map\n","const isPrimaryPointer = (event) => {\n    if (event.pointerType === \"mouse\") {\n        return typeof event.button !== \"number\" || event.button <= 0;\n    }\n    else {\n        /**\n         * isPrimary is true for all mice buttons, whereas every touch point\n         * is regarded as its own input. So subsequent concurrent touch points\n         * will be false.\n         *\n         * Specifically match against false here as incomplete versions of\n         * PointerEvents in very old browser might have it set as undefined.\n         */\n        return event.isPrimary !== false;\n    }\n};\n\nexport { isPrimaryPointer };\n//# sourceMappingURL=is-primary-pointer.mjs.map\n","const keyboardAccessibleElements = new Set([\n    \"BUTTON\",\n    \"INPUT\",\n    \"SELECT\",\n    \"TEXTAREA\",\n    \"A\",\n]);\n/**\n * Checks if an element is natively keyboard accessible (focusable).\n * Used by the press gesture to determine if we need to add tabIndex.\n */\nfunction isElementKeyboardAccessible(element) {\n    return (keyboardAccessibleElements.has(element.tagName) ||\n        element.isContentEditable === true);\n}\nconst textInputElements = new Set([\"INPUT\", \"SELECT\", \"TEXTAREA\"]);\n/**\n * Checks if an element has text selection or direct interaction behavior\n * that should block drag gestures from starting.\n *\n * This specifically targets form controls where the user might want to select\n * text or interact with the control (e.g., sliders, dropdowns).\n *\n * Buttons and links are NOT included because they don't have click-and-move\n * actions of their own - they only respond to click events, so dragging\n * should still work when initiated from these elements.\n */\nfunction isElementTextInput(element) {\n    return (textInputElements.has(element.tagName) ||\n        element.isContentEditable === true);\n}\n\nexport { isElementKeyboardAccessible, isElementTextInput };\n//# sourceMappingURL=is-keyboard-accessible.mjs.map\n","const isPressing = new WeakSet();\n\nexport { isPressing };\n//# sourceMappingURL=state.mjs.map\n","import { isPressing } from './state.mjs';\n\n/**\n * Filter out events that are not \"Enter\" keys.\n */\nfunction filterEvents(callback) {\n    return (event) => {\n        if (event.key !== \"Enter\")\n            return;\n        callback(event);\n    };\n}\nfunction firePointerEvent(target, type) {\n    target.dispatchEvent(new PointerEvent(\"pointer\" + type, { isPrimary: true, bubbles: true }));\n}\nconst enableKeyboardPress = (focusEvent, eventOptions) => {\n    const element = focusEvent.currentTarget;\n    if (!element)\n        return;\n    const handleKeydown = filterEvents(() => {\n        if (isPressing.has(element))\n            return;\n        firePointerEvent(element, \"down\");\n        const handleKeyup = filterEvents(() => {\n            firePointerEvent(element, \"up\");\n        });\n        const handleBlur = () => firePointerEvent(element, \"cancel\");\n        element.addEventListener(\"keyup\", handleKeyup, eventOptions);\n        element.addEventListener(\"blur\", handleBlur, eventOptions);\n    });\n    element.addEventListener(\"keydown\", handleKeydown, eventOptions);\n    /**\n     * Add an event listener that fires on blur to remove the keydown events.\n     */\n    element.addEventListener(\"blur\", () => element.removeEventListener(\"keydown\", handleKeydown), eventOptions);\n};\n\nexport { enableKeyboardPress };\n//# sourceMappingURL=keyboard.mjs.map\n","import { isHTMLElement } from '../../utils/is-html-element.mjs';\nimport { isDragActive } from '../drag/state/is-active.mjs';\nimport { isNodeOrChild } from '../utils/is-node-or-child.mjs';\nimport { isPrimaryPointer } from '../utils/is-primary-pointer.mjs';\nimport { setupGesture } from '../utils/setup.mjs';\nimport { isElementKeyboardAccessible } from './utils/is-keyboard-accessible.mjs';\nimport { enableKeyboardPress } from './utils/keyboard.mjs';\nimport { isPressing } from './utils/state.mjs';\n\n/**\n * Filter out events that are not primary pointer events, or are triggering\n * while a Motion gesture is active.\n */\nfunction isValidPressEvent(event) {\n    return isPrimaryPointer(event) && !isDragActive();\n}\nconst claimedPointerDownEvents = new WeakSet();\n/**\n * Create a press gesture.\n *\n * Press is different to `\"pointerdown\"`, `\"pointerup\"` in that it\n * automatically filters out secondary pointer events like right\n * click and multitouch.\n *\n * It also adds accessibility support for keyboards, where\n * an element with a press gesture will receive focus and\n *  trigger on Enter `\"keydown\"` and `\"keyup\"` events.\n *\n * This is different to a browser's `\"click\"` event, which does\n * respond to keyboards but only for the `\"click\"` itself, rather\n * than the press start and end/cancel. The element also needs\n * to be focusable for this to work, whereas a press gesture will\n * make an element focusable by default.\n *\n * @public\n */\nfunction press(targetOrSelector, onPressStart, options = {}) {\n    const [targets, eventOptions, cancelEvents] = setupGesture(targetOrSelector, options);\n    const startPress = (startEvent) => {\n        const target = startEvent.currentTarget;\n        if (!isValidPressEvent(startEvent))\n            return;\n        if (claimedPointerDownEvents.has(startEvent))\n            return;\n        isPressing.add(target);\n        if (options.stopPropagation) {\n            claimedPointerDownEvents.add(startEvent);\n        }\n        const onPressEnd = onPressStart(target, startEvent);\n        /**\n         * End listeners run in the capture phase so a descendant calling\n         * stopPropagation() in its own pointerup handler can't prevent the\n         * press gesture from ending. This also keeps the gesture-end\n         * ordering consistent with the drag gesture. See #2794.\n         */\n        const endEventOptions = { ...eventOptions, capture: true };\n        const onPointerEnd = (endEvent, success) => {\n            window.removeEventListener(\"pointerup\", onPointerUp, endEventOptions);\n            window.removeEventListener(\"pointercancel\", onPointerCancel, endEventOptions);\n            if (isPressing.has(target)) {\n                isPressing.delete(target);\n            }\n            if (!isValidPressEvent(endEvent)) {\n                return;\n            }\n            if (typeof onPressEnd === \"function\") {\n                onPressEnd(endEvent, { success });\n            }\n        };\n        const onPointerUp = (upEvent) => {\n            onPointerEnd(upEvent, target === window ||\n                target === document ||\n                options.useGlobalTarget ||\n                isNodeOrChild(target, upEvent.target));\n        };\n        const onPointerCancel = (cancelEvent) => {\n            onPointerEnd(cancelEvent, false);\n        };\n        window.addEventListener(\"pointerup\", onPointerUp, endEventOptions);\n        window.addEventListener(\"pointercancel\", onPointerCancel, endEventOptions);\n    };\n    targets.forEach((target) => {\n        const pointerDownTarget = options.useGlobalTarget ? window : target;\n        pointerDownTarget.addEventListener(\"pointerdown\", startPress, eventOptions);\n        if (isHTMLElement(target)) {\n            target.addEventListener(\"focus\", (event) => enableKeyboardPress(event, eventOptions));\n            if (!isElementKeyboardAccessible(target) &&\n                !target.hasAttribute(\"tabindex\")) {\n                target.tabIndex = 0;\n            }\n        }\n    });\n    return cancelEvents;\n}\n\nexport { press };\n//# sourceMappingURL=index.mjs.map\n","import { isObject } from 'motion-utils';\n\n/**\n * Checks if an element is an SVG element in a way\n * that works across iframes\n */\nfunction isSVGElement(element) {\n    return isObject(element) && \"ownerSVGElement\" in element;\n}\n\nexport { isSVGElement };\n//# sourceMappingURL=is-svg-element.mjs.map\n","import { isSVGElement } from '../utils/is-svg-element.mjs';\nimport { resolveElements } from '../utils/resolve-elements.mjs';\n\nconst resizeHandlers = new WeakMap();\nlet observer;\nconst getSize = (borderBoxAxis, svgAxis, htmlAxis) => (target, borderBoxSize) => {\n    if (borderBoxSize && borderBoxSize[0]) {\n        return borderBoxSize[0][(borderBoxAxis + \"Size\")];\n    }\n    else if (isSVGElement(target) && \"getBBox\" in target) {\n        return target.getBBox()[svgAxis];\n    }\n    else {\n        return target[htmlAxis];\n    }\n};\nconst getWidth = /*@__PURE__*/ getSize(\"inline\", \"width\", \"offsetWidth\");\nconst getHeight = /*@__PURE__*/ getSize(\"block\", \"height\", \"offsetHeight\");\nfunction notifyTarget({ target, borderBoxSize }) {\n    resizeHandlers.get(target)?.forEach((handler) => {\n        handler(target, {\n            get width() {\n                return getWidth(target, borderBoxSize);\n            },\n            get height() {\n                return getHeight(target, borderBoxSize);\n            },\n        });\n    });\n}\nfunction notifyAll(entries) {\n    entries.forEach(notifyTarget);\n}\nfunction createResizeObserver() {\n    if (typeof ResizeObserver === \"undefined\")\n        return;\n    observer = new ResizeObserver(notifyAll);\n}\nfunction resizeElement(target, handler) {\n    if (!observer)\n        createResizeObserver();\n    const elements = resolveElements(target);\n    elements.forEach((element) => {\n        let elementHandlers = resizeHandlers.get(element);\n        if (!elementHandlers) {\n            elementHandlers = new Set();\n            resizeHandlers.set(element, elementHandlers);\n        }\n        elementHandlers.add(handler);\n        observer?.observe(element);\n    });\n    return () => {\n        elements.forEach((element) => {\n            const elementHandlers = resizeHandlers.get(element);\n            elementHandlers?.delete(handler);\n            if (!elementHandlers?.size) {\n                observer?.unobserve(element);\n            }\n        });\n    };\n}\n\nexport { resizeElement };\n//# sourceMappingURL=handle-element.mjs.map\n","const windowCallbacks = new Set();\nlet windowResizeHandler;\nfunction createWindowResizeHandler() {\n    windowResizeHandler = () => {\n        const info = {\n            get width() {\n                return window.innerWidth;\n            },\n            get height() {\n                return window.innerHeight;\n            },\n        };\n        windowCallbacks.forEach((callback) => callback(info));\n    };\n    window.addEventListener(\"resize\", windowResizeHandler);\n}\nfunction resizeWindow(callback) {\n    windowCallbacks.add(callback);\n    if (!windowResizeHandler)\n        createWindowResizeHandler();\n    return () => {\n        windowCallbacks.delete(callback);\n        if (!windowCallbacks.size &&\n            typeof windowResizeHandler === \"function\") {\n            window.removeEventListener(\"resize\", windowResizeHandler);\n            windowResizeHandler = undefined;\n        }\n    };\n}\n\nexport { resizeWindow };\n//# sourceMappingURL=handle-window.mjs.map\n","import { resizeElement } from './handle-element.mjs';\nimport { resizeWindow } from './handle-window.mjs';\n\nfunction resize(a, b) {\n    return typeof a === \"function\" ? resizeWindow(a) : resizeElement(a, b);\n}\n\nexport { resize };\n//# sourceMappingURL=index.mjs.map\n","import { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nfunction observeTimeline(update, timeline) {\n    let prevProgress;\n    const onFrame = () => {\n        const { currentTime } = timeline;\n        const percentage = currentTime === null ? 0 : currentTime.value;\n        const progress = percentage / 100;\n        if (prevProgress !== progress) {\n            update(progress);\n        }\n        prevProgress = progress;\n    };\n    frame.preUpdate(onFrame, true);\n    return () => cancelFrame(onFrame);\n}\n\nexport { observeTimeline };\n//# sourceMappingURL=observe.mjs.map\n","import { isSVGElement } from './is-svg-element.mjs';\n\n/**\n * Checks if an element is specifically an SVGSVGElement (the root SVG element)\n * in a way that works across iframes\n */\nfunction isSVGSVGElement(element) {\n    return isSVGElement(element) && element.tagName === \"svg\";\n}\n\nexport { isSVGSVGElement };\n//# sourceMappingURL=is-svg-svg-element.mjs.map\n","import { interpolate } from './interpolate.mjs';\n\nfunction transform(...args) {\n    const useImmediate = !Array.isArray(args[0]);\n    const argOffset = useImmediate ? 0 : -1;\n    const inputValue = args[0 + argOffset];\n    const inputRange = args[1 + argOffset];\n    const outputRange = args[2 + argOffset];\n    const options = args[3 + argOffset];\n    const interpolator = interpolate(inputRange, outputRange, options);\n    return useImmediate ? interpolator(inputValue) : interpolator;\n}\n\nexport { transform };\n//# sourceMappingURL=transform.mjs.map\n","import { motionValue } from './index.mjs';\nimport { JSAnimation } from '../animation/JSAnimation.mjs';\nimport { isMotionValue } from './utils/is-motion-value.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\n/**\n * Create a `MotionValue` that animates to its latest value using any transition type.\n * Can either be a value or track another `MotionValue`.\n *\n * ```jsx\n * const x = motionValue(0)\n * const y = followValue(x, { type: \"spring\", stiffness: 300 })\n * // or with tween\n * const z = followValue(x, { type: \"tween\", duration: 0.5, ease: \"easeOut\" })\n * ```\n *\n * @param source - Initial value or MotionValue to track\n * @param options - Animation transition options\n * @returns `MotionValue`\n *\n * @public\n */\nfunction followValue(source, options) {\n    const initialValue = isMotionValue(source) ? source.get() : source;\n    const value = motionValue(initialValue);\n    attachFollow(value, source, options);\n    return value;\n}\n/**\n * Attach an animation to a MotionValue that will animate whenever the value changes.\n * Similar to attachSpring but supports any transition type (spring, tween, inertia, etc.)\n *\n * @param value - The MotionValue to animate\n * @param source - Initial value or MotionValue to track\n * @param options - Animation transition options\n * @returns Cleanup function\n *\n * @public\n */\nfunction attachFollow(value, source, options = {}) {\n    const initialValue = value.get();\n    let activeAnimation = null;\n    let latestValue = initialValue;\n    let latestSetter;\n    const unit = typeof initialValue === \"string\"\n        ? initialValue.replace(/[\\d.-]/g, \"\")\n        : undefined;\n    const stopAnimation = () => {\n        if (activeAnimation) {\n            activeAnimation.stop();\n            activeAnimation = null;\n        }\n        value.animation = undefined;\n    };\n    const startAnimation = () => {\n        const currentValue = asNumber(value.get());\n        const targetValue = asNumber(latestValue);\n        // Don't animate if we're already at the target\n        if (currentValue === targetValue) {\n            stopAnimation();\n            return;\n        }\n        // Use the running animation's analytical velocity for accuracy,\n        // falling back to the MotionValue's velocity for the initial animation.\n        // This prevents systematic velocity loss at high frame rates (240hz+).\n        const velocity = activeAnimation\n            ? activeAnimation.getGeneratorVelocity()\n            : value.getVelocity();\n        stopAnimation();\n        activeAnimation = new JSAnimation({\n            keyframes: [currentValue, targetValue],\n            velocity,\n            // Default to spring if no type specified (matches useSpring behavior)\n            type: \"spring\",\n            restDelta: 0.001,\n            restSpeed: 0.01,\n            ...options,\n            onUpdate: latestSetter,\n        });\n    };\n    // Use a stable function reference so the frame loop Set deduplicates\n    // multiple calls within the same frame (e.g. rapid mouse events)\n    const scheduleAnimation = () => {\n        startAnimation();\n        value.animation = activeAnimation ?? undefined;\n        value[\"events\"].animationStart?.notify();\n        activeAnimation?.then(() => {\n            value.animation = undefined;\n            value[\"events\"].animationComplete?.notify();\n        });\n    };\n    value.attach((v, set) => {\n        latestValue = v;\n        latestSetter = (latest) => set(parseValue(latest, unit));\n        frame.postRender(scheduleAnimation);\n    }, stopAnimation);\n    if (isMotionValue(source)) {\n        let skipNextAnimation = options.skipInitialAnimation === true;\n        const removeSourceOnChange = source.on(\"change\", (v) => {\n            if (skipNextAnimation) {\n                skipNextAnimation = false;\n                value.jump(parseValue(v, unit), false);\n            }\n            else {\n                value.set(parseValue(v, unit));\n            }\n        });\n        const removeValueOnDestroy = value.on(\"destroy\", removeSourceOnChange);\n        return () => {\n            removeSourceOnChange();\n            removeValueOnDestroy();\n        };\n    }\n    return stopAnimation;\n}\nfunction parseValue(v, unit) {\n    return unit ? v + unit : v;\n}\nfunction asNumber(v) {\n    return typeof v === \"number\" ? v : parseFloat(v);\n}\n\nexport { attachFollow, followValue };\n//# sourceMappingURL=follow-value.mjs.map\n","import { color } from '../color/index.mjs';\nimport { complex } from '../complex/index.mjs';\nimport { dimensionValueTypes } from '../dimensions.mjs';\nimport { testValueType } from '../test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n//# sourceMappingURL=find.mjs.map\n","const createAxisDelta = () => ({\n    translate: 0,\n    scale: 1,\n    origin: 0,\n    originPoint: 0,\n});\nconst createDelta = () => ({\n    x: createAxisDelta(),\n    y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n    x: createAxis(),\n    y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n//# sourceMappingURL=models.mjs.map\n","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\n//# sourceMappingURL=store.mjs.map\n","function isAnimationControls(v) {\n    return (v !== null &&\n        typeof v === \"object\" &&\n        typeof v.start === \"function\");\n}\n\nexport { isAnimationControls };\n//# sourceMappingURL=is-animation-controls.mjs.map\n","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n    return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n//# sourceMappingURL=is-variant-label.mjs.map\n","const variantPriorityOrder = [\n    \"animate\",\n    \"whileInView\",\n    \"whileFocus\",\n    \"whileHover\",\n    \"whileTap\",\n    \"whileDrag\",\n    \"exit\",\n];\nconst variantProps = [\"initial\", ...variantPriorityOrder];\n\nexport { variantPriorityOrder, variantProps };\n//# sourceMappingURL=variant-props.mjs.map\n","import { isAnimationControls } from './is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nfunction isControllingVariants(props) {\n    return (isAnimationControls(props.animate) ||\n        variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n    return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n//# sourceMappingURL=is-controlling-variants.mjs.map\n","import { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\n/**\n * Updates motion values from props changes.\n * Uses `any` type for element to avoid circular dependencies with VisualElement.\n */\nfunction updateMotionValuesFromProps(element, next, prev) {\n    for (const key in next) {\n        const nextValue = next[key];\n        const prevValue = prev[key];\n        if (isMotionValue(nextValue)) {\n            /**\n             * If this is a motion value found in props or style, we want to add it\n             * to our visual element's motion value map.\n             */\n            element.addValue(key, nextValue);\n        }\n        else if (isMotionValue(prevValue)) {\n            /**\n             * If we're swapping from a motion value to a static value,\n             * create a new motion value from that\n             */\n            element.addValue(key, motionValue(nextValue, { owner: element }));\n        }\n        else if (prevValue !== nextValue) {\n            /**\n             * If this is a flat value that has changed, update the motion value\n             * or create one if it doesn't exist. We only want to do this if we're\n             * not handling the value with our animation state.\n             */\n            if (element.hasValue(key)) {\n                const existingValue = element.getValue(key);\n                if (existingValue.liveStyle === true) {\n                    existingValue.jump(nextValue);\n                }\n                else if (!existingValue.hasAnimated) {\n                    existingValue.set(nextValue);\n                }\n            }\n            else {\n                const latestValue = element.getStaticValue(key);\n                element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));\n            }\n        }\n    }\n    // Handle removed values\n    for (const key in prev) {\n        if (next[key] === undefined)\n            element.removeValue(key);\n    }\n    return next;\n}\n\nexport { updateMotionValuesFromProps };\n//# sourceMappingURL=motion-values.mjs.map\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n//# sourceMappingURL=state.mjs.map\n","import { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\nconst isBrowser = typeof window !== \"undefined\";\nfunction initPrefersReducedMotion() {\n    hasReducedMotionListener.current = true;\n    if (!isBrowser)\n        return;\n    if (window.matchMedia) {\n        const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n        const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n        motionMediaQuery.addEventListener(\"change\", setReducedMotionPreferences);\n        setReducedMotionPreferences();\n    }\n    else {\n        prefersReducedMotion.current = false;\n    }\n}\n\nexport { hasReducedMotionListener, initPrefersReducedMotion, prefersReducedMotion };\n//# sourceMappingURL=index.mjs.map\n","import { warnOnce, secondsToMilliseconds, isNumericalString, isZeroValueString, SubscriptionManager } from 'motion-utils';\nimport { KeyframeResolver } from '../animation/keyframes/KeyframesResolver.mjs';\nimport { NativeAnimation } from '../animation/NativeAnimation.mjs';\nimport { acceleratedValues } from '../animation/waapi/utils/accelerated-values.mjs';\nimport { microtask } from '../frameloop/microtask.mjs';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { complex } from '../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../value/types/utils/animatable-none.mjs';\nimport { findValueType } from '../value/types/utils/find.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { transformProps } from './utils/keys-transform.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { initPrefersReducedMotion } from './utils/reduced-motion/index.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './utils/reduced-motion/state.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nconst propEventHandlers = [\n    \"AnimationStart\",\n    \"AnimationComplete\",\n    \"Update\",\n    \"BeforeLayoutMeasure\",\n    \"LayoutMeasure\",\n    \"LayoutAnimationStart\",\n    \"LayoutAnimationComplete\",\n];\n/**\n * Static feature definitions - can be injected by framework layer\n */\nlet featureDefinitions = {};\n/**\n * Set feature definitions for all VisualElements.\n * This should be called by the framework layer (e.g., framer-motion) during initialization.\n */\nfunction setFeatureDefinitions(definitions) {\n    featureDefinitions = definitions;\n}\n/**\n * Get the current feature definitions\n */\nfunction getFeatureDefinitions() {\n    return featureDefinitions;\n}\n/**\n * A VisualElement is an imperative abstraction around UI elements such as\n * HTMLElement, SVGElement, Three.Object3D etc.\n */\nclass VisualElement {\n    /**\n     * This method takes React props and returns found MotionValues. For example, HTML\n     * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n     *\n     * This isn't an abstract method as it needs calling in the constructor, but it is\n     * intended to be one.\n     */\n    scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {\n        return {};\n    }\n    constructor({ parent, props, presenceContext, reducedMotionConfig, skipAnimations, blockInitialAnimation, visualState, }, options = {}) {\n        /**\n         * A reference to the current underlying Instance, e.g. a HTMLElement\n         * or Three.Mesh etc.\n         */\n        this.current = null;\n        /**\n         * A set containing references to this VisualElement's children.\n         */\n        this.children = new Set();\n        /**\n         * Determine what role this visual element should take in the variant tree.\n         */\n        this.isVariantNode = false;\n        this.isControllingVariants = false;\n        /**\n         * Decides whether this VisualElement should animate in reduced motion\n         * mode.\n         *\n         * TODO: This is currently set on every individual VisualElement but feels\n         * like it could be set globally.\n         */\n        this.shouldReduceMotion = null;\n        /**\n         * Decides whether animations should be skipped for this VisualElement.\n         * Useful for E2E tests and visual regression testing.\n         */\n        this.shouldSkipAnimations = false;\n        /**\n         * A map of all motion values attached to this visual element. Motion\n         * values are source of truth for any given animated value. A motion\n         * value might be provided externally by the component via props.\n         */\n        this.values = new Map();\n        this.KeyframeResolver = KeyframeResolver;\n        /**\n         * Cleanup functions for active features (hover/tap/exit etc)\n         */\n        this.features = {};\n        /**\n         * A map of every subscription that binds the provided or generated\n         * motion values onChange listeners to this visual element.\n         */\n        this.valueSubscriptions = new Map();\n        /**\n         * A reference to the previously-provided motion values as returned\n         * from scrapeMotionValuesFromProps. We use the keys in here to determine\n         * if any motion values need to be removed after props are updated.\n         */\n        this.prevMotionValues = {};\n        /**\n         * Track whether this element has been mounted before, to detect\n         * remounts after Suspense unmount/remount cycles.\n         */\n        this.hasBeenMounted = false;\n        /**\n         * An object containing a SubscriptionManager for each active event.\n         */\n        this.events = {};\n        /**\n         * An object containing an unsubscribe function for each prop event subscription.\n         * For example, every \"Update\" event can have multiple subscribers via\n         * VisualElement.on(), but only one of those can be defined via the onUpdate prop.\n         */\n        this.propEventSubscriptions = {};\n        this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n        this.render = () => {\n            if (!this.current)\n                return;\n            this.triggerBuild();\n            this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n        };\n        this.renderScheduledAt = 0.0;\n        this.scheduleRender = () => {\n            const now = time.now();\n            if (this.renderScheduledAt < now) {\n                this.renderScheduledAt = now;\n                frame.render(this.render, false, true);\n            }\n        };\n        const { latestValues, renderState } = visualState;\n        this.latestValues = latestValues;\n        this.baseTarget = { ...latestValues };\n        this.initialValues = props.initial ? { ...latestValues } : {};\n        this.renderState = renderState;\n        this.parent = parent;\n        this.props = props;\n        this.presenceContext = presenceContext;\n        this.depth = parent ? parent.depth + 1 : 0;\n        this.reducedMotionConfig = reducedMotionConfig;\n        this.skipAnimationsConfig = skipAnimations;\n        this.options = options;\n        this.blockInitialAnimation = Boolean(blockInitialAnimation);\n        this.isControllingVariants = isControllingVariants(props);\n        this.isVariantNode = isVariantNode(props);\n        if (this.isVariantNode) {\n            this.variantChildren = new Set();\n        }\n        this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n        /**\n         * Any motion values that are provided to the element when created\n         * aren't yet bound to the element, as this would technically be impure.\n         * However, we iterate through the motion values and set them to the\n         * initial values for this component.\n         *\n         * TODO: This is impure and we should look at changing this to run on mount.\n         * Doing so will break some tests but this isn't necessarily a breaking change,\n         * more a reflection of the test.\n         */\n        const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);\n        for (const key in initialMotionValues) {\n            const value = initialMotionValues[key];\n            if (latestValues[key] !== undefined && isMotionValue(value)) {\n                value.set(latestValues[key]);\n            }\n        }\n    }\n    mount(instance) {\n        /**\n         * If this element has been mounted before (e.g. after a Suspense\n         * unmount/remount), reset motion values to their initial state\n         * so animations replay correctly from initial → animate.\n         */\n        if (this.hasBeenMounted) {\n            for (const key in this.initialValues) {\n                this.values.get(key)?.jump(this.initialValues[key]);\n                this.latestValues[key] = this.initialValues[key];\n            }\n        }\n        this.current = instance;\n        visualElementStore.set(instance, this);\n        if (this.projection && !this.projection.instance) {\n            this.projection.mount(instance);\n        }\n        if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n            this.removeFromVariantTree = this.parent.addVariantChild(this);\n        }\n        this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n        /**\n         * Determine reduced motion preference. Only initialize the matchMedia\n         * listener if we actually need the dynamic value (i.e., when config\n         * is neither \"never\" nor \"always\").\n         */\n        if (this.reducedMotionConfig === \"never\") {\n            this.shouldReduceMotion = false;\n        }\n        else if (this.reducedMotionConfig === \"always\") {\n            this.shouldReduceMotion = true;\n        }\n        else {\n            if (!hasReducedMotionListener.current) {\n                initPrefersReducedMotion();\n            }\n            this.shouldReduceMotion = prefersReducedMotion.current;\n        }\n        if (process.env.NODE_ENV !== \"production\") {\n            warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\", \"reduced-motion-disabled\");\n        }\n        /**\n         * Set whether animations should be skipped based on the config.\n         */\n        this.shouldSkipAnimations = this.skipAnimationsConfig ?? false;\n        this.parent?.addChild(this);\n        this.update(this.props, this.presenceContext);\n        this.hasBeenMounted = true;\n    }\n    unmount() {\n        this.projection && this.projection.unmount();\n        cancelFrame(this.notifyUpdate);\n        cancelFrame(this.render);\n        this.valueSubscriptions.forEach((remove) => remove());\n        this.valueSubscriptions.clear();\n        this.removeFromVariantTree && this.removeFromVariantTree();\n        this.parent?.removeChild(this);\n        for (const key in this.events) {\n            this.events[key].clear();\n        }\n        for (const key in this.features) {\n            const feature = this.features[key];\n            if (feature) {\n                feature.unmount();\n                feature.isMounted = false;\n            }\n        }\n        this.current = null;\n    }\n    addChild(child) {\n        this.children.add(child);\n        this.enteringChildren ?? (this.enteringChildren = new Set());\n        this.enteringChildren.add(child);\n    }\n    removeChild(child) {\n        this.children.delete(child);\n        this.enteringChildren && this.enteringChildren.delete(child);\n    }\n    bindToMotionValue(key, value) {\n        if (this.valueSubscriptions.has(key)) {\n            this.valueSubscriptions.get(key)();\n        }\n        if (value.accelerate &&\n            acceleratedValues.has(key) &&\n            this.current instanceof HTMLElement) {\n            const { factory, keyframes, times, ease, duration } = value.accelerate;\n            const animation = new NativeAnimation({\n                element: this.current,\n                name: key,\n                keyframes,\n                times,\n                ease,\n                duration: secondsToMilliseconds(duration),\n            });\n            const cleanup = factory(animation);\n            this.valueSubscriptions.set(key, () => {\n                cleanup();\n                animation.cancel();\n            });\n            return;\n        }\n        const valueIsTransform = transformProps.has(key);\n        if (valueIsTransform && this.onBindTransform) {\n            this.onBindTransform();\n        }\n        const removeOnChange = value.on(\"change\", (latestValue) => {\n            this.latestValues[key] = latestValue;\n            this.props.onUpdate && frame.preRender(this.notifyUpdate);\n            if (valueIsTransform && this.projection) {\n                this.projection.isTransformDirty = true;\n            }\n            this.scheduleRender();\n        });\n        let removeSyncCheck;\n        if (typeof window !== \"undefined\" &&\n            window.MotionCheckAppearSync) {\n            removeSyncCheck = window.MotionCheckAppearSync(this, key, value);\n        }\n        this.valueSubscriptions.set(key, () => {\n            removeOnChange();\n            if (removeSyncCheck)\n                removeSyncCheck();\n            // Defer to MotionValue.on(\"change\") auto-stop so React 19 remounts\n            // can resubscribe before the animation is cancelled (#3315).\n        });\n    }\n    sortNodePosition(other) {\n        /**\n         * If these nodes aren't even of the same type we can't compare their depth.\n         */\n        if (!this.current ||\n            !this.sortInstanceNodePosition ||\n            this.type !== other.type) {\n            return 0;\n        }\n        return this.sortInstanceNodePosition(this.current, other.current);\n    }\n    updateFeatures() {\n        let key = \"animation\";\n        for (key in featureDefinitions) {\n            const featureDefinition = featureDefinitions[key];\n            if (!featureDefinition)\n                continue;\n            const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n            /**\n             * If this feature is enabled but not active, make a new instance.\n             */\n            if (!this.features[key] &&\n                FeatureConstructor &&\n                isEnabled(this.props)) {\n                this.features[key] = new FeatureConstructor(this);\n            }\n            /**\n             * If we have a feature, mount or update it.\n             */\n            if (this.features[key]) {\n                const feature = this.features[key];\n                if (feature.isMounted) {\n                    feature.update();\n                }\n                else {\n                    feature.mount();\n                    feature.isMounted = true;\n                }\n            }\n        }\n    }\n    triggerBuild() {\n        this.build(this.renderState, this.latestValues, this.props);\n    }\n    /**\n     * Measure the current viewport box with or without transforms.\n     * Only measures axis-aligned boxes, rotate and skew must be manually\n     * removed with a re-render to work.\n     */\n    measureViewportBox() {\n        return this.current\n            ? this.measureInstanceViewportBox(this.current, this.props)\n            : createBox();\n    }\n    getStaticValue(key) {\n        return this.latestValues[key];\n    }\n    setStaticValue(key, value) {\n        this.latestValues[key] = value;\n    }\n    /**\n     * Update the provided props. Ensure any newly-added motion values are\n     * added to our map, old ones removed, and listeners updated.\n     */\n    update(props, presenceContext) {\n        if (props.transformTemplate || this.props.transformTemplate) {\n            this.scheduleRender();\n        }\n        this.prevProps = this.props;\n        this.props = props;\n        this.prevPresenceContext = this.presenceContext;\n        this.presenceContext = presenceContext;\n        /**\n         * Update prop event handlers ie onAnimationStart, onAnimationComplete\n         */\n        for (let i = 0; i < propEventHandlers.length; i++) {\n            const key = propEventHandlers[i];\n            if (this.propEventSubscriptions[key]) {\n                this.propEventSubscriptions[key]();\n                delete this.propEventSubscriptions[key];\n            }\n            const listenerName = (\"on\" + key);\n            const listener = props[listenerName];\n            if (listener) {\n                this.propEventSubscriptions[key] = this.on(key, listener);\n            }\n        }\n        this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps || {}, this), this.prevMotionValues);\n        if (this.handleChildMotionValue) {\n            this.handleChildMotionValue();\n        }\n    }\n    getProps() {\n        return this.props;\n    }\n    /**\n     * Returns the variant definition with a given name.\n     */\n    getVariant(name) {\n        return this.props.variants ? this.props.variants[name] : undefined;\n    }\n    /**\n     * Returns the defined default transition on this component.\n     */\n    getDefaultTransition() {\n        return this.props.transition;\n    }\n    getTransformPagePoint() {\n        return this.props.transformPagePoint;\n    }\n    getClosestVariantNode() {\n        return this.isVariantNode\n            ? this\n            : this.parent\n                ? this.parent.getClosestVariantNode()\n                : undefined;\n    }\n    /**\n     * Add a child visual element to our set of children.\n     */\n    addVariantChild(child) {\n        const closestVariantNode = this.getClosestVariantNode();\n        if (closestVariantNode) {\n            closestVariantNode.variantChildren &&\n                closestVariantNode.variantChildren.add(child);\n            return () => closestVariantNode.variantChildren.delete(child);\n        }\n    }\n    /**\n     * Add a motion value and bind it to this visual element.\n     */\n    addValue(key, value) {\n        // Remove existing value if it exists\n        const existingValue = this.values.get(key);\n        if (value !== existingValue) {\n            if (existingValue)\n                this.removeValue(key);\n            this.bindToMotionValue(key, value);\n            this.values.set(key, value);\n            this.latestValues[key] = value.get();\n        }\n    }\n    /**\n     * Remove a motion value and unbind any active subscriptions.\n     */\n    removeValue(key) {\n        this.values.delete(key);\n        const unsubscribe = this.valueSubscriptions.get(key);\n        if (unsubscribe) {\n            unsubscribe();\n            this.valueSubscriptions.delete(key);\n        }\n        delete this.latestValues[key];\n        this.removeValueFromRenderState(key, this.renderState);\n    }\n    /**\n     * Check whether we have a motion value for this key\n     */\n    hasValue(key) {\n        return this.values.has(key);\n    }\n    getValue(key, defaultValue) {\n        if (this.props.values && this.props.values[key]) {\n            return this.props.values[key];\n        }\n        let value = this.values.get(key);\n        if (value === undefined && defaultValue !== undefined) {\n            value = motionValue(defaultValue === null ? undefined : defaultValue, { owner: this });\n            this.addValue(key, value);\n        }\n        return value;\n    }\n    /**\n     * If we're trying to animate to a previously unencountered value,\n     * we need to check for it in our state and as a last resort read it\n     * directly from the instance (which might have performance implications).\n     */\n    readValue(key, target) {\n        let value = this.latestValues[key] !== undefined || !this.current\n            ? this.latestValues[key]\n            : this.getBaseTargetFromProps(this.props, key) ??\n                this.readValueFromInstance(this.current, key, this.options);\n        if (value !== undefined && value !== null) {\n            if (typeof value === \"string\" &&\n                (isNumericalString(value) || isZeroValueString(value))) {\n                // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n                value = parseFloat(value);\n            }\n            else if (!findValueType(value) && complex.test(target)) {\n                value = getAnimatableNone(key, target);\n            }\n            this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n        }\n        return isMotionValue(value) ? value.get() : value;\n    }\n    /**\n     * Set the base target to later animate back to. This is currently\n     * only hydrated on creation and when we first read a value.\n     */\n    setBaseTarget(key, value) {\n        this.baseTarget[key] = value;\n    }\n    /**\n     * Find the base target for a value thats been removed from all animation\n     * props.\n     */\n    getBaseTarget(key) {\n        const { initial } = this.props;\n        let valueFromInitial;\n        if (typeof initial === \"string\" || typeof initial === \"object\") {\n            const variant = resolveVariantFromProps(this.props, initial, this.presenceContext?.custom);\n            if (variant) {\n                valueFromInitial = variant[key];\n            }\n        }\n        /**\n         * If this value still exists in the current initial variant, read that.\n         */\n        if (initial && valueFromInitial !== undefined) {\n            return valueFromInitial;\n        }\n        /**\n         * Alternatively, if this VisualElement config has defined a getBaseTarget\n         * so we can read the value from an alternative source, try that.\n         */\n        const target = this.getBaseTargetFromProps(this.props, key);\n        if (target !== undefined && !isMotionValue(target))\n            return target;\n        /**\n         * If the value was initially defined on initial, but it doesn't any more,\n         * return undefined. Otherwise return the value as initially read from the DOM.\n         */\n        return this.initialValues[key] !== undefined &&\n            valueFromInitial === undefined\n            ? undefined\n            : this.baseTarget[key];\n    }\n    on(eventName, callback) {\n        if (!this.events[eventName]) {\n            this.events[eventName] = new SubscriptionManager();\n        }\n        return this.events[eventName].add(callback);\n    }\n    notify(eventName, ...args) {\n        if (this.events[eventName]) {\n            this.events[eventName].notify(...args);\n        }\n    }\n    scheduleRenderMicrotask() {\n        microtask.render(this.render);\n    }\n}\n\nexport { VisualElement, getFeatureDefinitions, setFeatureDefinitions };\n//# sourceMappingURL=VisualElement.mjs.map\n","import { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { DOMKeyframesResolver } from '../../animation/keyframes/DOMKeyframesResolver.mjs';\nimport { VisualElement } from '../VisualElement.mjs';\n\nclass DOMVisualElement extends VisualElement {\n    constructor() {\n        super(...arguments);\n        this.KeyframeResolver = DOMKeyframesResolver;\n    }\n    sortInstanceNodePosition(a, b) {\n        /**\n         * compareDocumentPosition returns a bitmask, by using the bitwise &\n         * we're returning true if 2 in that bitmask is set to true. 2 is set\n         * to true if b preceeds a.\n         */\n        return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n    }\n    getBaseTargetFromProps(props, key) {\n        const style = props.style;\n        return style ? style[key] : undefined;\n    }\n    removeValueFromRenderState(key, { vars, style }) {\n        delete vars[key];\n        delete style[key];\n    }\n    handleChildMotionValue() {\n        if (this.childSubscription) {\n            this.childSubscription();\n            delete this.childSubscription;\n        }\n        const { children } = this.props;\n        if (isMotionValue(children)) {\n            this.childSubscription = children.on(\"change\", (latest) => {\n                if (this.current) {\n                    this.current.textContent = `${latest}`;\n                }\n            });\n        }\n    }\n}\n\nexport { DOMVisualElement };\n//# sourceMappingURL=DOMVisualElement.mjs.map\n","/**\n * Feature base class for extending VisualElement functionality.\n * Features are plugins that can be mounted/unmounted to add behavior\n * like gestures, animations, or layout tracking.\n */\nclass Feature {\n    constructor(node) {\n        this.isMounted = false;\n        this.node = node;\n    }\n    update() { }\n}\n\nexport { Feature };\n//# sourceMappingURL=Feature.mjs.map\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n    return {\n        x: { min: left, max: right },\n        y: { min: top, max: bottom },\n    };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n    return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n    if (!transformPoint)\n        return point;\n    const topLeft = transformPoint({ x: point.left, y: point.top });\n    const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n    return {\n        top: topLeft.y,\n        left: topLeft.x,\n        bottom: bottomRight.y,\n        right: bottomRight.x,\n    };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n//# sourceMappingURL=conversion.mjs.map\n","function isIdentityScale(scale) {\n    return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n    return (!isIdentityScale(scale) ||\n        !isIdentityScale(scaleX) ||\n        !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n    return (hasScale(values) ||\n        has2DTranslate(values) ||\n        values.z ||\n        values.rotate ||\n        values.rotateX ||\n        values.rotateY ||\n        values.skewX ||\n        values.skewY);\n}\nfunction has2DTranslate(values) {\n    return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n    return value && value !== \"0%\";\n}\n\nexport { has2DTranslate, hasScale, hasTransform };\n//# sourceMappingURL=has-transform.mjs.map\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n    const distanceFromOrigin = point - originPoint;\n    const scaled = scale * distanceFromOrigin;\n    return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n    if (boxScale !== undefined) {\n        point = scalePoint(point, boxScale, originPoint);\n    }\n    return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n    axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n    axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n    applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n    applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\nconst TREE_SCALE_SNAP_MIN = 0.999999999999;\nconst TREE_SCALE_SNAP_MAX = 1.0000000000001;\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n    const treeLength = treePath.length;\n    if (!treeLength)\n        return;\n    // Reset the treeScale\n    treeScale.x = treeScale.y = 1;\n    let node;\n    let delta;\n    for (let i = 0; i < treeLength; i++) {\n        node = treePath[i];\n        delta = node.projectionDelta;\n        /**\n         * TODO: Prefer to remove this, but currently we have motion components with\n         * display: contents in Framer.\n         */\n        const { visualElement } = node.options;\n        if (visualElement &&\n            visualElement.props.style &&\n            visualElement.props.style.display === \"contents\") {\n            continue;\n        }\n        if (isSharedTransition &&\n            node.options.layoutScroll &&\n            node.scroll &&\n            node !== node.root) {\n            translateAxis(box.x, -node.scroll.offset.x);\n            translateAxis(box.y, -node.scroll.offset.y);\n        }\n        if (delta) {\n            // Incoporate each ancestor's scale into a cumulative treeScale for this component\n            treeScale.x *= delta.x.scale;\n            treeScale.y *= delta.y.scale;\n            // Apply each ancestor's calculated delta into this component's recorded layout box\n            applyBoxDelta(box, delta);\n        }\n        if (isSharedTransition && hasTransform(node.latestValues)) {\n            transformBox(box, node.latestValues, node.layout?.layoutBox);\n        }\n    }\n    /**\n     * Snap tree scale back to 1 if it's within a non-perceivable threshold.\n     * This will help reduce useless scales getting rendered.\n     */\n    if (treeScale.x < TREE_SCALE_SNAP_MAX &&\n        treeScale.x > TREE_SCALE_SNAP_MIN) {\n        treeScale.x = 1.0;\n    }\n    if (treeScale.y < TREE_SCALE_SNAP_MAX &&\n        treeScale.y > TREE_SCALE_SNAP_MIN) {\n        treeScale.y = 1.0;\n    }\n}\nfunction translateAxis(axis, distance) {\n    axis.min += distance;\n    axis.max += distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) {\n    const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n    // Apply the axis delta to the final axis\n    applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale);\n}\nfunction resolveAxisTranslate(value, axis) {\n    if (typeof value === \"string\") {\n        return (parseFloat(value) / 100) * (axis.max - axis.min);\n    }\n    return value;\n}\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform, sourceBox) {\n    const resolveBox = sourceBox ?? box;\n    transformAxis(box.x, resolveAxisTranslate(transform.x, resolveBox.x), transform.scaleX, transform.scale, transform.originX);\n    transformAxis(box.y, resolveAxisTranslate(transform.y, resolveBox.y), transform.scaleY, transform.scale, transform.originY);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n//# sourceMappingURL=delta-apply.mjs.map\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n    return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n    const viewportBox = measureViewportBox(element, transformPagePoint);\n    const { scroll } = rootProjectionNode;\n    if (scroll) {\n        translateAxis(viewportBox.x, scroll.offset.x);\n        translateAxis(viewportBox.y, scroll.offset.y);\n    }\n    return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n//# sourceMappingURL=measure.mjs.map\n","import { getValueAsType } from '../../../value/types/utils/get-as-type.mjs';\nimport { numberValueTypes } from '../../../value/types/maps/number.mjs';\nimport { transformPropOrder } from '../../utils/keys-transform.mjs';\n\nconst translateAlias = {\n    x: \"translateX\",\n    y: \"translateY\",\n    z: \"translateZ\",\n    transformPerspective: \"perspective\",\n};\nconst numTransforms = transformPropOrder.length;\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(latestValues, transform, transformTemplate) {\n    // The transform string we're going to build into.\n    let transformString = \"\";\n    let transformIsDefault = true;\n    /**\n     * Loop over all possible transforms in order, adding the ones that\n     * are present to the transform string.\n     */\n    for (let i = 0; i < numTransforms; i++) {\n        const key = transformPropOrder[i];\n        const value = latestValues[key];\n        if (value === undefined)\n            continue;\n        let valueIsDefault = true;\n        if (typeof value === \"number\") {\n            valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n        }\n        else {\n            const parsed = parseFloat(value);\n            valueIsDefault = key.startsWith(\"scale\") ? parsed === 1 : parsed === 0;\n        }\n        if (!valueIsDefault || transformTemplate) {\n            const valueAsType = getValueAsType(value, numberValueTypes[key]);\n            if (!valueIsDefault) {\n                transformIsDefault = false;\n                const transformName = translateAlias[key] || key;\n                transformString += `${transformName}(${valueAsType}) `;\n            }\n            if (transformTemplate) {\n                transform[key] = valueAsType;\n            }\n        }\n    }\n    // `pathRotation` composes onto `rotate` as a separate additive term so\n    // the user's `rotate` is never clobbered. Deliberately not a slot in\n    // `transformPropOrder`.\n    const pathRotation = latestValues.pathRotation;\n    if (pathRotation) {\n        transformIsDefault = false;\n        transformString += `rotate(${getValueAsType(pathRotation, numberValueTypes.pathRotation)}) `;\n    }\n    transformString = transformString.trim();\n    // If we have a custom `transform` template, pass our transform values and\n    // generated transformString to that before returning\n    if (transformTemplate) {\n        transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n    }\n    else if (transformIsDefault) {\n        transformString = \"none\";\n    }\n    return transformString;\n}\n\nexport { buildTransform };\n//# sourceMappingURL=build-transform.mjs.map\n","import { getValueAsType } from '../../../value/types/utils/get-as-type.mjs';\nimport { numberValueTypes } from '../../../value/types/maps/number.mjs';\nimport { transformProps } from '../../utils/keys-transform.mjs';\nimport { isCSSVariableName } from '../../../animation/utils/is-css-variable.mjs';\nimport { buildTransform } from './build-transform.mjs';\n\nfunction buildHTMLStyles(state, latestValues, transformTemplate) {\n    const { style, vars, transformOrigin } = state;\n    // Track whether we encounter any transform or transformOrigin values.\n    let hasTransform = false;\n    let hasTransformOrigin = false;\n    /**\n     * Loop over all our latest animated values and decide whether to handle them\n     * as a style or CSS variable.\n     *\n     * Transforms and transform origins are kept separately for further processing.\n     */\n    for (const key in latestValues) {\n        const value = latestValues[key];\n        if (transformProps.has(key)) {\n            // If this is a transform, flag to enable further transform processing\n            hasTransform = true;\n            continue;\n        }\n        else if (isCSSVariableName(key)) {\n            vars[key] = value;\n            continue;\n        }\n        else {\n            // Convert the value to its default value type, ie 0 -> \"0px\"\n            const valueAsType = getValueAsType(value, numberValueTypes[key]);\n            if (key.startsWith(\"origin\")) {\n                // If this is a transform origin, flag and enable further transform-origin processing\n                hasTransformOrigin = true;\n                transformOrigin[key] =\n                    valueAsType;\n            }\n            else {\n                style[key] = valueAsType;\n            }\n        }\n    }\n    if (!latestValues.transform) {\n        if (hasTransform || transformTemplate) {\n            style.transform = buildTransform(latestValues, state.transform, transformTemplate);\n        }\n        else if (style.transform) {\n            /**\n             * If we have previously created a transform but currently don't have any,\n             * reset transform style to none.\n             */\n            style.transform = \"none\";\n        }\n    }\n    /**\n     * Build a transformOrigin style. Uses the same defaults as the browser for\n     * undefined origins.\n     */\n    if (hasTransformOrigin) {\n        const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n        style.transformOrigin = `${originX} ${originY} ${originZ}`;\n    }\n}\n\nexport { buildHTMLStyles };\n//# sourceMappingURL=build-styles.mjs.map\n","function renderHTML(element, { style, vars }, styleProp, projection) {\n    const elementStyle = element.style;\n    let key;\n    for (key in style) {\n        // CSSStyleDeclaration has [index: number]: string; in the types, so we use that as key type.\n        elementStyle[key] = style[key];\n    }\n    // Write projection styles directly to element style\n    projection?.applyProjectionStyles(elementStyle, styleProp);\n    for (key in vars) {\n        // Loop over any CSS variables and assign those.\n        // They can only be assigned using `setProperty`.\n        elementStyle.setProperty(key, vars[key]);\n    }\n}\n\nexport { renderHTML };\n//# sourceMappingURL=render.mjs.map\n","import { px } from '../../value/types/numbers/units.mjs';\n\nfunction pixelsToPercent(pixels, axis) {\n    if (axis.max === axis.min)\n        return 0;\n    return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n    correct: (latest, node) => {\n        if (!node.target)\n            return latest;\n        /**\n         * If latest is a string, if it's a percentage we can return immediately as it's\n         * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n         */\n        if (typeof latest === \"string\") {\n            if (px.test(latest)) {\n                latest = parseFloat(latest);\n            }\n            else {\n                return latest;\n            }\n        }\n        /**\n         * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n         * pixel value as a percentage of each axis\n         */\n        const x = pixelsToPercent(latest, node.target.x);\n        const y = pixelsToPercent(latest, node.target.y);\n        return `${x}% ${y}%`;\n    },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n//# sourceMappingURL=scale-border-radius.mjs.map\n","import { complex } from '../../value/types/complex/index.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\n\nconst correctBoxShadow = {\n    correct: (latest, { treeScale, projectionDelta }) => {\n        const original = latest;\n        const shadow = complex.parse(latest);\n        // TODO: Doesn't support multiple shadows\n        if (shadow.length > 5)\n            return original;\n        const template = complex.createTransformer(latest);\n        const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n        // Calculate the overall context scale\n        const xScale = projectionDelta.x.scale * treeScale.x;\n        const yScale = projectionDelta.y.scale * treeScale.y;\n        shadow[0 + offset] /= xScale;\n        shadow[1 + offset] /= yScale;\n        /**\n         * Ideally we'd correct x and y scales individually, but because blur and\n         * spread apply to both we have to take a scale average and apply that instead.\n         * We could potentially improve the outcome of this by incorporating the ratio between\n         * the two scales.\n         */\n        const averageScale = mixNumber(xScale, yScale, 0.5);\n        // Blur\n        if (typeof shadow[2 + offset] === \"number\")\n            shadow[2 + offset] /= averageScale;\n        // Spread\n        if (typeof shadow[3 + offset] === \"number\")\n            shadow[3 + offset] /= averageScale;\n        return template(shadow);\n    },\n};\n\nexport { correctBoxShadow };\n//# sourceMappingURL=scale-box-shadow.mjs.map\n","import { isCSSVariableName } from '../../animation/utils/is-css-variable.mjs';\nimport { correctBorderRadius } from './scale-border-radius.mjs';\nimport { correctBoxShadow } from './scale-box-shadow.mjs';\n\nconst scaleCorrectors = {\n    borderRadius: {\n        ...correctBorderRadius,\n        applyTo: [\n            \"borderTopLeftRadius\",\n            \"borderTopRightRadius\",\n            \"borderBottomLeftRadius\",\n            \"borderBottomRightRadius\",\n        ],\n    },\n    borderTopLeftRadius: correctBorderRadius,\n    borderTopRightRadius: correctBorderRadius,\n    borderBottomLeftRadius: correctBorderRadius,\n    borderBottomRightRadius: correctBorderRadius,\n    boxShadow: correctBoxShadow,\n};\nfunction addScaleCorrector(correctors) {\n    for (const key in correctors) {\n        scaleCorrectors[key] = correctors[key];\n        if (isCSSVariableName(key)) {\n            scaleCorrectors[key].isCSSVariable = true;\n        }\n    }\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n//# sourceMappingURL=scale-correction.mjs.map\n","import { transformProps } from './keys-transform.mjs';\nimport { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nexport { addScaleCorrector } from '../../projection/styles/scale-correction.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n    return (transformProps.has(key) ||\n        key.startsWith(\"origin\") ||\n        ((layout || layoutId !== undefined) &&\n            (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue, scaleCorrectors };\n//# sourceMappingURL=is-forced-motion-value.mjs.map\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { isForcedMotionValue } from '../../utils/is-forced-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    const style = props.style;\n    const prevStyle = prevProps?.style;\n    const newValues = {};\n    if (!style)\n        return newValues;\n    for (const key in style) {\n        if (isMotionValue(style[key]) ||\n            (prevStyle && isMotionValue(prevStyle[key])) ||\n            isForcedMotionValue(key, props) ||\n            visualElement?.getValue(key)?.liveStyle !== undefined) {\n            newValues[key] = style[key];\n        }\n    }\n    return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n//# sourceMappingURL=scrape-motion-values.mjs.map\n","import { isCSSVariableName } from '../../animation/utils/is-css-variable.mjs';\nimport { transformProps } from '../utils/keys-transform.mjs';\nimport { defaultTransformValue, readTransformValue } from '../dom/parse-transform.mjs';\nimport { measureViewportBox } from '../../projection/utils/measure.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\n\nfunction getComputedStyle(element) {\n    return window.getComputedStyle(element);\n}\nclass HTMLVisualElement extends DOMVisualElement {\n    constructor() {\n        super(...arguments);\n        this.type = \"html\";\n        this.renderInstance = renderHTML;\n    }\n    readValueFromInstance(instance, key) {\n        if (transformProps.has(key)) {\n            return this.projection?.isProjecting\n                ? defaultTransformValue(key)\n                : readTransformValue(instance, key);\n        }\n        else {\n            const computedStyle = getComputedStyle(instance);\n            const value = (isCSSVariableName(key)\n                ? computedStyle.getPropertyValue(key)\n                : computedStyle[key]) || 0;\n            return typeof value === \"string\" ? value.trim() : value;\n        }\n    }\n    measureInstanceViewportBox(instance, { transformPagePoint }) {\n        return measureViewportBox(instance, transformPagePoint);\n    }\n    build(renderState, latestValues, props) {\n        buildHTMLStyles(renderState, latestValues, props.transformTemplate);\n    }\n    scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n        return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n    }\n}\n\nexport { HTMLVisualElement, getComputedStyle };\n//# sourceMappingURL=HTMLVisualElement.mjs.map\n","import { createBox } from '../../projection/geometry/models.mjs';\nimport { VisualElement } from '../VisualElement.mjs';\n\nfunction isObjectKey(key, object) {\n    return key in object;\n}\nclass ObjectVisualElement extends VisualElement {\n    constructor() {\n        super(...arguments);\n        this.type = \"object\";\n    }\n    readValueFromInstance(instance, key) {\n        if (isObjectKey(key, instance)) {\n            const value = instance[key];\n            if (typeof value === \"string\" || typeof value === \"number\") {\n                return value;\n            }\n        }\n        return undefined;\n    }\n    getBaseTargetFromProps() {\n        return undefined;\n    }\n    removeValueFromRenderState(key, renderState) {\n        delete renderState.output[key];\n    }\n    measureInstanceViewportBox() {\n        return createBox();\n    }\n    build(renderState, latestValues) {\n        Object.assign(renderState.output, latestValues);\n    }\n    renderInstance(instance, { output }) {\n        Object.assign(instance, output);\n    }\n    sortInstanceNodePosition() {\n        return 0;\n    }\n}\n\nexport { ObjectVisualElement };\n//# sourceMappingURL=ObjectVisualElement.mjs.map\n","const dashKeys = {\n    offset: \"stroke-dashoffset\",\n    array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n    offset: \"strokeDashoffset\",\n    array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n *\n * Note: We use unitless values for stroke-dasharray and stroke-dashoffset\n * because Safari incorrectly scales px values when the page is zoomed.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n    // Normalise path length by setting SVG attribute pathLength to 1\n    attrs.pathLength = 1;\n    // We use dash case when setting attributes directly to the DOM node and camel case\n    // when defining props on a React component.\n    const keys = useDashCase ? dashKeys : camelKeys;\n    // Build the dash offset (unitless to avoid Safari zoom bug)\n    attrs[keys.offset] = `${-offset}`;\n    // Build the dash array (unitless to avoid Safari zoom bug)\n    attrs[keys.array] = `${length} ${spacing}`;\n}\n\nexport { buildSVGPath };\n//# sourceMappingURL=path.mjs.map\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * CSS Motion Path properties that should remain as CSS styles on SVG elements.\n */\nconst cssMotionPathProperties = [\n    \"offsetDistance\",\n    \"offsetPath\",\n    \"offsetRotate\",\n    \"offsetAnchor\",\n];\n/**\n * Build SVG visual attributes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, attrScale, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, isSVGTag, transformTemplate, styleProp) {\n    buildHTMLStyles(state, latest, transformTemplate);\n    /**\n     * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n     * as normal HTML tags.\n     */\n    if (isSVGTag) {\n        if (state.style.viewBox) {\n            state.attrs.viewBox = state.style.viewBox;\n        }\n        return;\n    }\n    state.attrs = state.style;\n    state.style = {};\n    const { attrs, style } = state;\n    /**\n     * However, we apply transforms as CSS transforms.\n     * So if we detect a transform, transformOrigin we take it from attrs and copy it into style.\n     */\n    if (attrs.transform) {\n        style.transform = attrs.transform;\n        delete attrs.transform;\n    }\n    if (style.transform || attrs.transformOrigin) {\n        style.transformOrigin = attrs.transformOrigin ?? \"50% 50%\";\n        delete attrs.transformOrigin;\n    }\n    if (style.transform) {\n        /**\n         * SVG's element transform-origin uses its own median as a reference.\n         * Therefore, transformBox becomes a fill-box\n         */\n        style.transformBox = styleProp?.transformBox ?? \"fill-box\";\n        delete attrs.transformBox;\n    }\n    for (const key of cssMotionPathProperties) {\n        if (attrs[key] !== undefined) {\n            style[key] = attrs[key];\n            delete attrs[key];\n        }\n    }\n    // Render attrX/attrY/attrScale as attributes\n    if (attrX !== undefined)\n        attrs.x = attrX;\n    if (attrY !== undefined)\n        attrs.y = attrY;\n    if (attrScale !== undefined)\n        attrs.scale = attrScale;\n    // Build SVG path if one has been defined\n    if (pathLength !== undefined) {\n        buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n    }\n}\n\nexport { buildSVGAttrs };\n//# sourceMappingURL=build-attrs.mjs.map\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = new Set([\n    \"baseFrequency\",\n    \"diffuseConstant\",\n    \"kernelMatrix\",\n    \"kernelUnitLength\",\n    \"keySplines\",\n    \"keyTimes\",\n    \"limitingConeAngle\",\n    \"markerHeight\",\n    \"markerWidth\",\n    \"numOctaves\",\n    \"targetX\",\n    \"targetY\",\n    \"surfaceScale\",\n    \"specularConstant\",\n    \"specularExponent\",\n    \"stdDeviation\",\n    \"tableValues\",\n    \"viewBox\",\n    \"gradientTransform\",\n    \"pathLength\",\n    \"startOffset\",\n    \"textLength\",\n    \"lengthAdjust\",\n]);\n\nexport { camelCaseAttributes };\n//# sourceMappingURL=camel-case-attrs.mjs.map\n","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\n//# sourceMappingURL=is-svg-tag.mjs.map\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n    renderHTML(element, renderState, undefined, projection);\n    for (const key in renderState.attrs) {\n        element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n    }\n}\n\nexport { renderSVG };\n//# sourceMappingURL=render.mjs.map\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { transformPropOrder } from '../../utils/keys-transform.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);\n    for (const key in props) {\n        if (isMotionValue(props[key]) ||\n            isMotionValue(prevProps[key])) {\n            const targetKey = transformPropOrder.indexOf(key) !== -1\n                ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1)\n                : key;\n            newValues[targetKey] = props[key];\n        }\n    }\n    return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n//# sourceMappingURL=scrape-motion-values.mjs.map\n","import { transformProps } from '../utils/keys-transform.mjs';\nimport { getDefaultValueType } from '../../value/types/maps/defaults.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\n\nclass SVGVisualElement extends DOMVisualElement {\n    constructor() {\n        super(...arguments);\n        this.type = \"svg\";\n        this.isSVGTag = false;\n        this.measureInstanceViewportBox = createBox;\n    }\n    getBaseTargetFromProps(props, key) {\n        return props[key];\n    }\n    readValueFromInstance(instance, key) {\n        if (transformProps.has(key)) {\n            const defaultType = getDefaultValueType(key);\n            return defaultType ? defaultType.default || 0 : 0;\n        }\n        key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n        return instance.getAttribute(key);\n    }\n    scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n        return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n    }\n    build(renderState, latestValues, props) {\n        buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate, props.style);\n    }\n    renderInstance(instance, renderState, styleProp, projection) {\n        renderSVG(instance, renderState, styleProp, projection);\n    }\n    mount(instance) {\n        this.isSVGTag = isSVGTag(instance.tagName);\n        super.mount(instance);\n    }\n}\n\nexport { SVGVisualElement };\n//# sourceMappingURL=SVGVisualElement.mjs.map\n","import { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nconst numVariantProps = variantProps.length;\n/**\n * Get variant context from a visual element's parent chain.\n * Uses `any` type for visualElement to avoid circular dependencies.\n */\nfunction getVariantContext(visualElement) {\n    if (!visualElement)\n        return undefined;\n    if (!visualElement.isControllingVariants) {\n        const context = visualElement.parent\n            ? getVariantContext(visualElement.parent) || {}\n            : {};\n        if (visualElement.props.initial !== undefined) {\n            context.initial = visualElement.props.initial;\n        }\n        return context;\n    }\n    const context = {};\n    for (let i = 0; i < numVariantProps; i++) {\n        const name = variantProps[i];\n        const prop = visualElement.props[name];\n        if (isVariantLabel(prop) || prop === false) {\n            context[name] = prop;\n        }\n    }\n    return context;\n}\n\nexport { getVariantContext };\n//# sourceMappingURL=get-variant-context.mjs.map\n","function shallowCompare(next, prev) {\n    if (!Array.isArray(prev))\n        return false;\n    const prevLength = prev.length;\n    if (prevLength !== next.length)\n        return false;\n    for (let i = 0; i < prevLength; i++) {\n        if (prev[i] !== next[i])\n            return false;\n    }\n    return true;\n}\n\nexport { shallowCompare };\n//# sourceMappingURL=shallow-compare.mjs.map\n","import { animateVisualElement } from '../../animation/interfaces/visual-element.mjs';\nimport { calcChildStagger } from '../../animation/utils/calc-child-stagger.mjs';\nimport { getVariantContext } from './get-variant-context.mjs';\nimport { isAnimationControls } from './is-animation-controls.mjs';\nimport { isKeyframesTarget } from './is-keyframes-target.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { shallowCompare } from './shallow-compare.mjs';\nimport { variantPriorityOrder } from './variant-props.mjs';\n\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction createAnimateFunction(visualElement) {\n    return (animations) => {\n        return Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n    };\n}\nfunction createAnimationState(visualElement) {\n    let animate = createAnimateFunction(visualElement);\n    let state = createState();\n    let isInitialRender = true;\n    /**\n     * Track whether the animation state has been reset (e.g. via StrictMode\n     * double-invocation or Suspense unmount/remount). On the first\n     * animateChanges() call after a reset we need to behave like the initial\n     * render for variant-inheritance checks, even though isInitialRender is\n     * already false.\n     */\n    let wasReset = false;\n    /**\n     * This function will be used to reduce the animation definitions for\n     * each active animation type into an object of resolved values for it.\n     */\n    const buildResolvedTypeValues = (type) => (acc, definition) => {\n        const resolved = resolveVariant(visualElement, definition, type === \"exit\"\n            ? visualElement.presenceContext?.custom\n            : undefined);\n        if (resolved) {\n            const { transition, transitionEnd, ...target } = resolved;\n            acc = { ...acc, ...target, ...transitionEnd };\n        }\n        return acc;\n    };\n    /**\n     * This just allows us to inject mocked animation functions\n     * @internal\n     */\n    function setAnimateFunction(makeAnimator) {\n        animate = makeAnimator(visualElement);\n    }\n    /**\n     * When we receive new props, we need to:\n     * 1. Create a list of protected keys for each type. This is a directory of\n     *    value keys that are currently being \"handled\" by types of a higher priority\n     *    so that whenever an animation is played of a given type, these values are\n     *    protected from being animated.\n     * 2. Determine if an animation type needs animating.\n     * 3. Determine if any values have been removed from a type and figure out\n     *    what to animate those to.\n     */\n    function animateChanges(changedActiveType) {\n        const { props } = visualElement;\n        const context = getVariantContext(visualElement.parent) || {};\n        /**\n         * A list of animations that we'll build into as we iterate through the animation\n         * types. This will get executed at the end of the function.\n         */\n        const animations = [];\n        /**\n         * Keep track of which values have been removed. Then, as we hit lower priority\n         * animation types, we can check if they contain removed values and animate to that.\n         */\n        const removedKeys = new Set();\n        /**\n         * A dictionary of all encountered keys. This is an object to let us build into and\n         * copy it without iteration. Each time we hit an animation type we set its protected\n         * keys - the keys its not allowed to animate - to the latest version of this object.\n         */\n        let encounteredKeys = {};\n        /**\n         * If a variant has been removed at a given index, and this component is controlling\n         * variant animations, we want to ensure lower-priority variants are forced to animate.\n         */\n        let removedVariantIndex = Infinity;\n        /**\n         * Iterate through all animation types in reverse priority order. For each, we want to\n         * detect which values it's handling and whether or not they've changed (and therefore\n         * need to be animated). If any values have been removed, we want to detect those in\n         * lower priority props and flag for animation.\n         */\n        for (let i = 0; i < numAnimationTypes; i++) {\n            const type = reversePriorityOrder[i];\n            const typeState = state[type];\n            const prop = props[type] !== undefined\n                ? props[type]\n                : context[type];\n            const propIsVariant = isVariantLabel(prop);\n            /**\n             * If this type has *just* changed isActive status, set activeDelta\n             * to that status. Otherwise set to null.\n             */\n            const activeDelta = type === changedActiveType ? typeState.isActive : null;\n            if (activeDelta === false)\n                removedVariantIndex = i;\n            /**\n             * If this prop is an inherited variant, rather than been set directly on the\n             * component itself, we want to make sure we allow the parent to trigger animations.\n             *\n             * TODO: Can probably change this to a !isControllingVariants check\n             */\n            let isInherited = prop === context[type] &&\n                prop !== props[type] &&\n                propIsVariant;\n            if (isInherited &&\n                (isInitialRender || wasReset) &&\n                visualElement.manuallyAnimateOnMount) {\n                isInherited = false;\n            }\n            /**\n             * Set all encountered keys so far as the protected keys for this type. This will\n             * be any key that has been animated or otherwise handled by active, higher-priortiy types.\n             */\n            typeState.protectedKeys = { ...encounteredKeys };\n            // Check if we can skip analysing this prop early\n            if (\n            // If it isn't active and hasn't *just* been set as inactive\n            (!typeState.isActive && activeDelta === null) ||\n                // If we didn't and don't have any defined prop for this animation type\n                (!prop && !typeState.prevProp) ||\n                // Or if the prop doesn't define an animation\n                isAnimationControls(prop) ||\n                typeof prop === \"boolean\") {\n                continue;\n            }\n            /**\n             * If exit is already active and wasn't just activated, skip\n             * re-processing to prevent interrupting running exit animations.\n             * Re-resolving exit with a changed custom value can start new\n             * value animations that stop the originals, leaving the exit\n             * animation promise unresolved and the component stuck in the DOM.\n             */\n            if (type === \"exit\" && typeState.isActive && activeDelta !== true) {\n                if (typeState.prevResolvedValues) {\n                    encounteredKeys = {\n                        ...encounteredKeys,\n                        ...typeState.prevResolvedValues,\n                    };\n                }\n                continue;\n            }\n            /**\n             * As we go look through the values defined on this type, if we detect\n             * a changed value or a value that was removed in a higher priority, we set\n             * this to true and add this prop to the animation list.\n             */\n            const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n            let shouldAnimateType = variantDidChange ||\n                // If we're making this variant active, we want to always make it active\n                (type === changedActiveType &&\n                    typeState.isActive &&\n                    !isInherited &&\n                    propIsVariant) ||\n                // If we removed a higher-priority variant (i is in reverse order)\n                (i > removedVariantIndex && propIsVariant);\n            let handledRemovedValues = false;\n            /**\n             * As animations can be set as variant lists, variants or target objects, we\n             * coerce everything to an array if it isn't one already\n             */\n            const definitionList = Array.isArray(prop) ? prop : [prop];\n            /**\n             * Build an object of all the resolved values. We'll use this in the subsequent\n             * animateChanges calls to determine whether a value has changed.\n             */\n            let resolvedValues = definitionList.reduce(buildResolvedTypeValues(type), {});\n            if (activeDelta === false)\n                resolvedValues = {};\n            /**\n             * Now we need to loop through all the keys in the prev prop and this prop,\n             * and decide:\n             * 1. If the value has changed, and needs animating\n             * 2. If it has been removed, and needs adding to the removedKeys set\n             * 3. If it has been removed in a higher priority type and needs animating\n             * 4. If it hasn't been removed in a higher priority but hasn't changed, and\n             *    needs adding to the type's protectedKeys list.\n             */\n            const { prevResolvedValues = {} } = typeState;\n            const allKeys = {\n                ...prevResolvedValues,\n                ...resolvedValues,\n            };\n            const markToAnimate = (key) => {\n                shouldAnimateType = true;\n                if (removedKeys.has(key)) {\n                    handledRemovedValues = true;\n                    removedKeys.delete(key);\n                }\n                typeState.needsAnimating[key] = true;\n                const motionValue = visualElement.getValue(key);\n                if (motionValue)\n                    motionValue.liveStyle = false;\n            };\n            for (const key in allKeys) {\n                const next = resolvedValues[key];\n                const prev = prevResolvedValues[key];\n                // If we've already handled this we can just skip ahead\n                if (encounteredKeys.hasOwnProperty(key))\n                    continue;\n                /**\n                 * If the value has changed, we probably want to animate it.\n                 */\n                let valueHasChanged = false;\n                if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n                    valueHasChanged =\n                        !shallowCompare(next, prev) || variantDidChange;\n                }\n                else {\n                    valueHasChanged = next !== prev;\n                }\n                if (valueHasChanged) {\n                    if (next !== undefined && next !== null) {\n                        // If next is defined and doesn't equal prev, it needs animating\n                        markToAnimate(key);\n                    }\n                    else {\n                        // If it's undefined, it's been removed.\n                        removedKeys.add(key);\n                    }\n                }\n                else if (next !== undefined && removedKeys.has(key)) {\n                    /**\n                     * If next hasn't changed and it isn't undefined, we want to check if it's\n                     * been removed by a higher priority\n                     */\n                    markToAnimate(key);\n                }\n                else {\n                    /**\n                     * If it hasn't changed, we add it to the list of protected values\n                     * to ensure it doesn't get animated.\n                     */\n                    typeState.protectedKeys[key] = true;\n                }\n            }\n            /**\n             * Update the typeState so next time animateChanges is called we can compare the\n             * latest prop and resolvedValues to these.\n             */\n            typeState.prevProp = prop;\n            typeState.prevResolvedValues = resolvedValues;\n            if (typeState.isActive) {\n                encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n            }\n            if ((isInitialRender || wasReset) &&\n                visualElement.blockInitialAnimation) {\n                shouldAnimateType = false;\n            }\n            /**\n             * If this is an inherited prop we want to skip this animation\n             * unless the inherited variants haven't changed on this render.\n             */\n            const willAnimateViaParent = isInherited && variantDidChange;\n            const needsAnimating = !willAnimateViaParent || handledRemovedValues;\n            if (shouldAnimateType && needsAnimating) {\n                animations.push(...definitionList.map((animation) => {\n                    const options = { type };\n                    /**\n                     * If we're performing the initial animation, but we're not\n                     * rendering at the same time as the variant-controlling parent,\n                     * we want to use the parent's transition to calculate the stagger.\n                     */\n                    if (typeof animation === \"string\" &&\n                        (isInitialRender || wasReset) &&\n                        !willAnimateViaParent &&\n                        visualElement.manuallyAnimateOnMount &&\n                        visualElement.parent) {\n                        const { parent } = visualElement;\n                        const parentVariant = resolveVariant(parent, animation);\n                        if (parent.enteringChildren && parentVariant) {\n                            const { delayChildren } = parentVariant.transition || {};\n                            options.delay = calcChildStagger(parent.enteringChildren, visualElement, delayChildren);\n                        }\n                    }\n                    return {\n                        animation: animation,\n                        options,\n                    };\n                }));\n            }\n        }\n        /**\n         * If there are some removed value that haven't been dealt with,\n         * we need to create a new animation that falls back either to the value\n         * defined in the style prop, or the last read value.\n         */\n        if (removedKeys.size) {\n            const fallbackAnimation = {};\n            /**\n             * If the initial prop contains a transition we can use that, otherwise\n             * allow the animation function to use the visual element's default.\n             */\n            if (typeof props.initial !== \"boolean\") {\n                const initialTransition = resolveVariant(visualElement, Array.isArray(props.initial)\n                    ? props.initial[0]\n                    : props.initial);\n                if (initialTransition && initialTransition.transition) {\n                    fallbackAnimation.transition = initialTransition.transition;\n                }\n            }\n            removedKeys.forEach((key) => {\n                const fallbackTarget = visualElement.getBaseTarget(key);\n                const motionValue = visualElement.getValue(key);\n                if (motionValue)\n                    motionValue.liveStyle = true;\n                // @ts-expect-error - @mattgperry to figure if we should do something here\n                fallbackAnimation[key] = fallbackTarget ?? null;\n            });\n            animations.push({ animation: fallbackAnimation });\n        }\n        let shouldAnimate = Boolean(animations.length);\n        if (isInitialRender &&\n            (props.initial === false || props.initial === props.animate) &&\n            !visualElement.manuallyAnimateOnMount) {\n            shouldAnimate = false;\n        }\n        isInitialRender = false;\n        wasReset = false;\n        return shouldAnimate ? animate(animations) : Promise.resolve();\n    }\n    /**\n     * Change whether a certain animation type is active.\n     */\n    function setActive(type, isActive) {\n        // If the active state hasn't changed, we can safely do nothing here\n        if (state[type].isActive === isActive)\n            return Promise.resolve();\n        // Propagate active change to children\n        visualElement.variantChildren?.forEach((child) => child.animationState?.setActive(type, isActive));\n        state[type].isActive = isActive;\n        const animations = animateChanges(type);\n        for (const key in state) {\n            state[key].protectedKeys = {};\n        }\n        return animations;\n    }\n    return {\n        animateChanges,\n        setActive,\n        setAnimateFunction,\n        getState: () => state,\n        reset: () => {\n            state = createState();\n            wasReset = true;\n        },\n    };\n}\nfunction checkVariantsDidChange(prev, next) {\n    if (typeof next === \"string\") {\n        return next !== prev;\n    }\n    else if (Array.isArray(next)) {\n        return !shallowCompare(next, prev);\n    }\n    return false;\n}\nfunction createTypeState(isActive = false) {\n    return {\n        isActive,\n        protectedKeys: {},\n        needsAnimating: {},\n        prevResolvedValues: {},\n    };\n}\nfunction createState() {\n    return {\n        animate: createTypeState(true),\n        whileInView: createTypeState(),\n        whileHover: createTypeState(),\n        whileTap: createTypeState(),\n        whileDrag: createTypeState(),\n        whileFocus: createTypeState(),\n        exit: createTypeState(),\n    };\n}\n\nexport { checkVariantsDidChange, createAnimationState };\n//# sourceMappingURL=animation-state.mjs.map\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n    axis.min = originAxis.min;\n    axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n    copyAxisInto(box.x, originBox.x);\n    copyAxisInto(box.y, originBox.y);\n}\n/**\n * Reset a delta to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisDeltaInto(delta, originDelta) {\n    delta.translate = originDelta.translate;\n    delta.scale = originDelta.scale;\n    delta.originPoint = originDelta.originPoint;\n    delta.origin = originDelta.origin;\n}\n\nexport { copyAxisDeltaInto, copyAxisInto, copyBoxInto };\n//# sourceMappingURL=copy.mjs.map\n","import { mixNumber } from '../../utils/mix/number.mjs';\n\nconst SCALE_PRECISION = 0.0001;\nconst SCALE_MIN = 1 - SCALE_PRECISION;\nconst SCALE_MAX = 1 + SCALE_PRECISION;\nconst TRANSLATE_PRECISION = 0.01;\nconst TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;\nconst TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;\nfunction calcLength(axis) {\n    return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n    return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n    delta.origin = origin;\n    delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n    delta.scale = calcLength(target) / calcLength(source);\n    delta.translate =\n        mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n    if ((delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX) ||\n        isNaN(delta.scale)) {\n        delta.scale = 1.0;\n    }\n    if ((delta.translate >= TRANSLATE_MIN &&\n        delta.translate <= TRANSLATE_MAX) ||\n        isNaN(delta.translate)) {\n        delta.translate = 0.0;\n    }\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n    calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined);\n    calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined);\n}\nfunction calcRelativeAxis(target, relative, parent, anchor = 0) {\n    const anchorPoint = anchor\n        ? mixNumber(parent.min, parent.max, anchor)\n        : parent.min;\n    target.min = anchorPoint + relative.min;\n    target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent, anchor) {\n    calcRelativeAxis(target.x, relative.x, parent.x, anchor?.x);\n    calcRelativeAxis(target.y, relative.y, parent.y, anchor?.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent, anchor = 0) {\n    const anchorPoint = anchor\n        ? mixNumber(parent.min, parent.max, anchor)\n        : parent.min;\n    target.min = layout.min - anchorPoint;\n    target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent, anchor) {\n    calcRelativeAxisPosition(target.x, layout.x, parent.x, anchor?.x);\n    calcRelativeAxisPosition(target.y, layout.y, parent.y, anchor?.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n//# sourceMappingURL=delta-calc.mjs.map\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n    point -= translate;\n    point = scalePoint(point, 1 / scale, originPoint);\n    if (boxScale !== undefined) {\n        point = scalePoint(point, 1 / boxScale, originPoint);\n    }\n    return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n    if (percent.test(translate)) {\n        translate = parseFloat(translate);\n        const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n        translate = relativeProgress - sourceAxis.min;\n    }\n    if (typeof translate !== \"number\")\n        return;\n    let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n    if (axis === originAxis)\n        originPoint -= translate;\n    axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n    axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n    removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n    removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined);\n    removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n//# sourceMappingURL=delta-remove.mjs.map\n","import { calcLength } from './delta-calc.mjs';\n\nfunction isAxisDeltaZero(delta) {\n    return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n    return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction axisEquals(a, b) {\n    return a.min === b.min && a.max === b.max;\n}\nfunction boxEquals(a, b) {\n    return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);\n}\nfunction axisEqualsRounded(a, b) {\n    return (Math.round(a.min) === Math.round(b.min) &&\n        Math.round(a.max) === Math.round(b.max));\n}\nfunction boxEqualsRounded(a, b) {\n    return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);\n}\nfunction aspectRatio(box) {\n    return calcLength(box.x) / calcLength(box.y);\n}\nfunction axisDeltaEquals(a, b) {\n    return (a.translate === b.translate &&\n        a.scale === b.scale &&\n        a.originPoint === b.originPoint);\n}\n\nexport { aspectRatio, axisDeltaEquals, axisEquals, axisEqualsRounded, boxEquals, boxEqualsRounded, isDeltaZero };\n//# sourceMappingURL=utils.mjs.map\n","function eachAxis(callback) {\n    return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n//# sourceMappingURL=each-axis.mjs.map\n","function buildProjectionTransform(delta, treeScale, latestTransform) {\n    let transform = \"\";\n    /**\n     * The translations we use to calculate are always relative to the viewport coordinate space.\n     * But when we apply scales, we also scale the coordinate space of an element and its children.\n     * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n     * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n     */\n    const xTranslate = delta.x.translate / treeScale.x;\n    const yTranslate = delta.y.translate / treeScale.y;\n    const zTranslate = latestTransform?.z || 0;\n    if (xTranslate || yTranslate || zTranslate) {\n        transform = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n    }\n    /**\n     * Apply scale correction for the tree transform.\n     * This will apply scale to the screen-orientated axes.\n     */\n    if (treeScale.x !== 1 || treeScale.y !== 1) {\n        transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n    }\n    if (latestTransform) {\n        const { transformPerspective, rotate, pathRotation, rotateX, rotateY, skewX, skewY, } = latestTransform;\n        if (transformPerspective)\n            transform = `perspective(${transformPerspective}px) ${transform}`;\n        if (rotate)\n            transform += `rotate(${rotate}deg) `;\n        // Additive `rotate()` so user `rotate` isn't clobbered.\n        if (pathRotation)\n            transform += `rotate(${pathRotation}deg) `;\n        if (rotateX)\n            transform += `rotateX(${rotateX}deg) `;\n        if (rotateY)\n            transform += `rotateY(${rotateY}deg) `;\n        if (skewX)\n            transform += `skewX(${skewX}deg) `;\n        if (skewY)\n            transform += `skewY(${skewY}deg) `;\n    }\n    /**\n     * Apply scale to match the size of the element to the size we want it.\n     * This will apply scale to the element-orientated axes.\n     */\n    const elementScaleX = delta.x.scale * treeScale.x;\n    const elementScaleY = delta.y.scale * treeScale.y;\n    if (elementScaleX !== 1 || elementScaleY !== 1) {\n        transform += `scale(${elementScaleX}, ${elementScaleY})`;\n    }\n    return transform || \"none\";\n}\n\nexport { buildProjectionTransform };\n//# sourceMappingURL=transform.mjs.map\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent, px } from '../../value/types/numbers/units.mjs';\nimport { progress, circOut, noop } from 'motion-utils';\n\nconst borderLabels = [\n    \"borderTopLeftRadius\",\n    \"borderTopRightRadius\",\n    \"borderBottomLeftRadius\",\n    \"borderBottomRightRadius\",\n];\nconst numBorders = borderLabels.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n    if (shouldCrossfadeOpacity) {\n        target.opacity = mixNumber(0, lead.opacity ?? 1, easeCrossfadeIn(progress));\n        target.opacityExit = mixNumber(follow.opacity ?? 1, 0, easeCrossfadeOut(progress));\n    }\n    else if (isOnlyMember) {\n        target.opacity = mixNumber(follow.opacity ?? 1, lead.opacity ?? 1, progress);\n    }\n    /**\n     * Mix border radius\n     */\n    for (let i = 0; i < numBorders; i++) {\n        const borderLabel = borderLabels[i];\n        let followRadius = getRadius(follow, borderLabel);\n        let leadRadius = getRadius(lead, borderLabel);\n        if (followRadius === undefined && leadRadius === undefined)\n            continue;\n        followRadius || (followRadius = 0);\n        leadRadius || (leadRadius = 0);\n        const canMix = followRadius === 0 ||\n            leadRadius === 0 ||\n            isPx(followRadius) === isPx(leadRadius);\n        if (canMix) {\n            target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n            if (percent.test(leadRadius) || percent.test(followRadius)) {\n                target[borderLabel] += \"%\";\n            }\n        }\n        else {\n            target[borderLabel] = leadRadius;\n        }\n    }\n    /**\n     * Mix rotation\n     */\n    if (follow.rotate || lead.rotate) {\n        target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress);\n    }\n}\nfunction getRadius(values, radiusName) {\n    return values[radiusName] !== undefined\n        ? values[radiusName]\n        : values.borderRadius;\n}\nconst easeCrossfadeIn = /*@__PURE__*/ compress(0, 0.5, circOut);\nconst easeCrossfadeOut = /*@__PURE__*/ compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n    return (p) => {\n        // Could replace ifs with clamp\n        if (p < min)\n            return 0;\n        if (p > max)\n            return 1;\n        return easing(progress(min, max, p));\n    };\n}\n\nexport { mixValues };\n//# sourceMappingURL=mix-values.mjs.map\n","import { animateMotionValue } from '../interfaces/motion-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction animateSingleValue(value, keyframes, options) {\n    const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n    motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n    return motionValue$1.animation;\n}\n\nexport { animateSingleValue };\n//# sourceMappingURL=single-value.mjs.map\n","function addDomEvent(target, eventName, handler, options = { passive: true }) {\n    target.addEventListener(eventName, handler, options);\n    return () => target.removeEventListener(eventName, handler, options);\n}\n\nexport { addDomEvent };\n//# sourceMappingURL=add-dom-event.mjs.map\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n//# sourceMappingURL=compare-by-depth.mjs.map\n","import { addUniqueItem, removeItem } from 'motion-utils';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n    constructor() {\n        this.children = [];\n        this.isDirty = false;\n    }\n    add(child) {\n        addUniqueItem(this.children, child);\n        this.isDirty = true;\n    }\n    remove(child) {\n        removeItem(this.children, child);\n        this.isDirty = true;\n    }\n    forEach(callback) {\n        this.isDirty && this.children.sort(compareByDepth);\n        this.isDirty = false;\n        this.children.forEach(callback);\n    }\n}\n\nexport { FlatTree };\n//# sourceMappingURL=flat-tree.mjs.map\n","import { time } from '../frameloop/sync-time.mjs';\nimport { secondsToMilliseconds } from 'motion-utils';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n    const start = time.now();\n    const checkElapsed = ({ timestamp }) => {\n        const elapsed = timestamp - start;\n        if (elapsed >= timeout) {\n            cancelFrame(checkElapsed);\n            callback(elapsed - timeout);\n        }\n    };\n    frame.setup(checkElapsed, true);\n    return () => cancelFrame(checkElapsed);\n}\nfunction delayInSeconds(callback, timeout) {\n    return delay(callback, secondsToMilliseconds(timeout));\n}\n\nexport { delay, delayInSeconds };\n//# sourceMappingURL=delay.mjs.map\n","import { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n */\nfunction resolveMotionValue(value) {\n    return isMotionValue(value) ? value.get() : value;\n}\n\nexport { resolveMotionValue };\n//# sourceMappingURL=resolve-motion-value.mjs.map\n","import { addUniqueItem, removeItem } from 'motion-utils';\n\nclass NodeStack {\n    constructor() {\n        this.members = [];\n    }\n    add(node) {\n        addUniqueItem(this.members, node);\n        for (let i = this.members.length - 1; i >= 0; i--) {\n            const member = this.members[i];\n            if (member === node || member === this.lead || member === this.prevLead)\n                continue;\n            const inst = member.instance;\n            if ((!inst || inst.isConnected === false) && !member.snapshot) {\n                removeItem(this.members, member);\n                member.unmount();\n            }\n        }\n        node.scheduleRender();\n    }\n    remove(node) {\n        removeItem(this.members, node);\n        if (node === this.prevLead)\n            this.prevLead = undefined;\n        if (node === this.lead) {\n            const prevLead = this.members[this.members.length - 1];\n            if (prevLead)\n                this.promote(prevLead);\n        }\n    }\n    relegate(node) {\n        for (let i = this.members.indexOf(node) - 1; i >= 0; i--) {\n            const member = this.members[i];\n            if (member.isPresent !== false && member.instance?.isConnected !== false) {\n                this.promote(member);\n                return true;\n            }\n        }\n        return false;\n    }\n    promote(node, preserveFollowOpacity) {\n        const prevLead = this.lead;\n        if (node === prevLead)\n            return;\n        this.prevLead = prevLead;\n        this.lead = node;\n        node.show();\n        if (prevLead) {\n            prevLead.updateSnapshot();\n            node.scheduleRender();\n            const { layoutDependency: prevDep } = prevLead.options;\n            const { layoutDependency: nextDep } = node.options;\n            if (prevDep === undefined || prevDep !== nextDep) {\n                node.resumeFrom = prevLead;\n                if (preserveFollowOpacity)\n                    prevLead.preserveOpacity = true;\n                if (prevLead.snapshot) {\n                    node.snapshot = prevLead.snapshot;\n                    node.snapshot.latestValues =\n                        prevLead.animationValues || prevLead.latestValues;\n                }\n                if (node.root?.isUpdating)\n                    node.isLayoutDirty = true;\n            }\n            if (node.options.crossfade === false)\n                prevLead.hide();\n        }\n    }\n    exitAnimationComplete() {\n        this.members.forEach((member) => {\n            member.options.onExitComplete?.();\n            member.resumingFrom?.options.onExitComplete?.();\n        });\n    }\n    scheduleRender() {\n        this.members.forEach((member) => member.instance && member.scheduleRender(false));\n    }\n    removeLeadSnapshot() {\n        if (this.lead?.snapshot)\n            this.lead.snapshot = undefined;\n    }\n}\n\nexport { NodeStack };\n//# sourceMappingURL=stack.mjs.map\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n    /**\n     * Global flag as to whether the tree has animated since the last time\n     * we resized the window\n     */\n    hasAnimatedSinceResize: true,\n    /**\n     * We set this to true once, on the first update. Any nodes added to the tree beyond that\n     * update will be given a `data-projection-id` attribute.\n     */\n    hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n//# sourceMappingURL=state.mjs.map\n","import { SubscriptionManager, clamp, noop } from 'motion-utils';\nimport { animateSingleValue } from '../../animation/animate/single-value.mjs';\nimport { getOptimisedAppearId } from '../../animation/optimized-appear/get-appear-id.mjs';\nimport { getValueTransition } from '../../animation/utils/get-value-transition.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { time } from '../../frameloop/sync-time.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { statsBuffer } from '../../stats/buffer.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { isSVGElement } from '../../utils/is-svg-element.mjs';\nimport { isSVGSVGElement } from '../../utils/is-svg-svg-element.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto, copyAxisDeltaInto, copyAxisInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcLength, calcRelativeBox, calcRelativePosition, calcBoxDelta, isNear } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\nimport { boxEqualsRounded, isDeltaZero, axisDeltaEquals, boxEquals, aspectRatio } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { FlatTree } from '../utils/flat-tree.mjs';\nimport { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs';\nimport { globalProjectionState } from './state.mjs';\nimport { frame, cancelFrame, frameData, frameSteps } from '../../frameloop/frame.mjs';\n\nconst metrics = {\n    nodes: 0,\n    calculatedTargetDeltas: 0,\n    calculatedProjections: 0,\n};\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nconst animationTarget = 1000;\nlet id = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n    const { latestValues } = visualElement;\n    // Record the distorting transform and then temporarily set it to 0\n    if (latestValues[key]) {\n        values[key] = latestValues[key];\n        visualElement.setStaticValue(key, 0);\n        if (sharedAnimationValues) {\n            sharedAnimationValues[key] = 0;\n        }\n    }\n}\nfunction cancelTreeOptimisedTransformAnimations(projectionNode) {\n    projectionNode.hasCheckedOptimisedAppear = true;\n    if (projectionNode.root === projectionNode)\n        return;\n    const { visualElement } = projectionNode.options;\n    if (!visualElement)\n        return;\n    const appearId = getOptimisedAppearId(visualElement);\n    if (window.MotionHasOptimisedAnimation(appearId, \"transform\")) {\n        const { layout, layoutId } = projectionNode.options;\n        window.MotionCancelOptimisedAnimation(appearId, \"transform\", frame, !(layout || layoutId));\n    }\n    const { parent } = projectionNode;\n    if (parent && !parent.hasCheckedOptimisedAppear) {\n        cancelTreeOptimisedTransformAnimations(parent);\n    }\n}\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n    return class ProjectionNode {\n        constructor(latestValues = {}, parent = defaultParent?.()) {\n            /**\n             * A unique ID generated for every projection node.\n             */\n            this.id = id++;\n            /**\n             * An id that represents a unique session instigated by startUpdate.\n             */\n            this.animationId = 0;\n            this.animationCommitId = 0;\n            /**\n             * A Set containing all this component's children. This is used to iterate\n             * through the children.\n             *\n             * TODO: This could be faster to iterate as a flat array stored on the root node.\n             */\n            this.children = new Set();\n            /**\n             * Options for the node. We use this to configure what kind of layout animations\n             * we should perform (if any).\n             */\n            this.options = {};\n            /**\n             * We use this to detect when its safe to shut down part of a projection tree.\n             * We have to keep projecting children for scale correction and relative projection\n             * until all their parents stop performing layout animations.\n             */\n            this.isTreeAnimating = false;\n            this.isAnimationBlocked = false;\n            /**\n             * Flag to true if we think this layout has been changed. We can't always know this,\n             * currently we set it to true every time a component renders, or if it has a layoutDependency\n             * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n             * and if one node is dirtied, they all are.\n             */\n            this.isLayoutDirty = false;\n            /**\n             * Flag to true if we think the projection calculations for this node needs\n             * recalculating as a result of an updated transform or layout animation.\n             */\n            this.isProjectionDirty = false;\n            /**\n             * Flag to true if the layout *or* transform has changed. This then gets propagated\n             * throughout the projection tree, forcing any element below to recalculate on the next frame.\n             */\n            this.isSharedProjectionDirty = false;\n            /**\n             * Flag transform dirty. This gets propagated throughout the whole tree but is only\n             * respected by shared nodes.\n             */\n            this.isTransformDirty = false;\n            /**\n             * Block layout updates for instant layout transitions throughout the tree.\n             */\n            this.updateManuallyBlocked = false;\n            this.updateBlockedByResize = false;\n            /**\n             * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n             * call.\n             */\n            this.isUpdating = false;\n            /**\n             * If this is an SVG element we currently disable projection transforms\n             */\n            this.isSVG = false;\n            /**\n             * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n             * its projection styles.\n             */\n            this.needsReset = false;\n            /**\n             * Flags whether this node should have its transform reset prior to measuring.\n             */\n            this.shouldResetTransform = false;\n            /**\n             * Store whether this node has been checked for optimised appear animations. As\n             * effects fire bottom-up, and we want to look up the tree for appear animations,\n             * this makes sure we only check each path once, stopping at nodes that\n             * have already been checked.\n             */\n            this.hasCheckedOptimisedAppear = false;\n            /**\n             * An object representing the calculated contextual/accumulated/tree scale.\n             * This will be used to scale calculcated projection transforms, as these are\n             * calculated in screen-space but need to be scaled for elements to layoutly\n             * make it to their calculated destinations.\n             *\n             * TODO: Lazy-init\n             */\n            this.treeScale = { x: 1, y: 1 };\n            /**\n             *\n             */\n            this.eventHandlers = new Map();\n            this.hasTreeAnimated = false;\n            this.layoutVersion = 0;\n            // Note: Currently only running on root node\n            this.updateScheduled = false;\n            this.scheduleUpdate = () => this.update();\n            this.projectionUpdateScheduled = false;\n            this.checkUpdateFailed = () => {\n                if (this.isUpdating) {\n                    this.isUpdating = false;\n                    this.clearAllSnapshots();\n                }\n            };\n            /**\n             * This is a multi-step process as shared nodes might be of different depths. Nodes\n             * are sorted by depth order, so we need to resolve the entire tree before moving to\n             * the next step.\n             */\n            this.updateProjection = () => {\n                this.projectionUpdateScheduled = false;\n                /**\n                 * Reset debug counts. Manually resetting rather than creating a new\n                 * object each frame.\n                 */\n                if (statsBuffer.value) {\n                    metrics.nodes =\n                        metrics.calculatedTargetDeltas =\n                            metrics.calculatedProjections =\n                                0;\n                }\n                this.nodes.forEach(propagateDirtyNodes);\n                this.nodes.forEach(resolveTargetDelta);\n                this.nodes.forEach(calcProjection);\n                this.nodes.forEach(cleanDirtyNodes);\n                if (statsBuffer.addProjectionMetrics) {\n                    statsBuffer.addProjectionMetrics(metrics);\n                }\n            };\n            /**\n             * Frame calculations\n             */\n            this.resolvedRelativeTargetAt = 0.0;\n            this.linkedParentVersion = 0;\n            this.hasProjected = false;\n            this.isVisible = true;\n            this.animationProgress = 0;\n            /**\n             * Shared layout\n             */\n            // TODO Only running on root node\n            this.sharedNodes = new Map();\n            this.latestValues = latestValues;\n            this.root = parent ? parent.root || parent : this;\n            this.path = parent ? [...parent.path, parent] : [];\n            this.parent = parent;\n            this.depth = parent ? parent.depth + 1 : 0;\n            for (let i = 0; i < this.path.length; i++) {\n                this.path[i].shouldResetTransform = true;\n            }\n            if (this.root === this)\n                this.nodes = new FlatTree();\n        }\n        addEventListener(name, handler) {\n            if (!this.eventHandlers.has(name)) {\n                this.eventHandlers.set(name, new SubscriptionManager());\n            }\n            return this.eventHandlers.get(name).add(handler);\n        }\n        notifyListeners(name, ...args) {\n            const subscriptionManager = this.eventHandlers.get(name);\n            subscriptionManager && subscriptionManager.notify(...args);\n        }\n        hasListeners(name) {\n            return this.eventHandlers.has(name);\n        }\n        /**\n         * Lifecycles\n         */\n        mount(instance) {\n            if (this.instance)\n                return;\n            this.isSVG = isSVGElement(instance) && !isSVGSVGElement(instance);\n            this.instance = instance;\n            const { layoutId, layout, visualElement } = this.options;\n            if (visualElement && !visualElement.current) {\n                visualElement.mount(instance);\n            }\n            this.root.nodes.add(this);\n            this.parent && this.parent.children.add(this);\n            if (this.root.hasTreeAnimated && (layout || layoutId)) {\n                this.isLayoutDirty = true;\n            }\n            if (attachResizeListener) {\n                let cancelDelay;\n                let innerWidth = 0;\n                const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n                // Set initial innerWidth in a frame.read callback to batch the read\n                frame.read(() => {\n                    innerWidth = window.innerWidth;\n                });\n                attachResizeListener(instance, () => {\n                    const newInnerWidth = window.innerWidth;\n                    if (newInnerWidth === innerWidth)\n                        return;\n                    innerWidth = newInnerWidth;\n                    this.root.updateBlockedByResize = true;\n                    cancelDelay && cancelDelay();\n                    cancelDelay = delay(resizeUnblockUpdate, 250);\n                    if (globalProjectionState.hasAnimatedSinceResize) {\n                        globalProjectionState.hasAnimatedSinceResize = false;\n                        this.nodes.forEach(finishAnimation);\n                    }\n                });\n            }\n            if (layoutId) {\n                this.root.registerSharedNode(layoutId, this);\n            }\n            // Only register the handler if it requires layout animation\n            if (this.options.animate !== false &&\n                visualElement &&\n                (layoutId || layout)) {\n                this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeLayoutChanged, layout: newLayout, }) => {\n                    if (this.isTreeAnimationBlocked()) {\n                        this.target = undefined;\n                        this.relativeTarget = undefined;\n                        return;\n                    }\n                    // TODO: Check here if an animation exists\n                    const layoutTransition = this.options.transition ||\n                        visualElement.getDefaultTransition() ||\n                        defaultLayoutTransition;\n                    const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n                    /**\n                     * The target layout of the element might stay the same,\n                     * but its position relative to its parent has changed.\n                     */\n                    const hasTargetChanged = !this.targetLayout ||\n                        !boxEqualsRounded(this.targetLayout, newLayout);\n                    /*\n                     * Note: Disabled to fix relative animations always triggering new\n                     * layout animations. If this causes further issues, we can try\n                     * a different approach to detecting relative target changes.\n                     */\n                    // || hasRelativeLayoutChanged\n                    /**\n                     * If the layout hasn't seemed to have changed, it might be that the\n                     * element is visually in the same place in the document but its position\n                     * relative to its parent has indeed changed. So here we check for that.\n                     */\n                    const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeLayoutChanged;\n                    if (this.options.layoutRoot ||\n                        this.resumeFrom ||\n                        hasOnlyRelativeTargetChanged ||\n                        (hasLayoutChanged &&\n                            (hasTargetChanged || !this.currentAnimation))) {\n                        if (this.resumeFrom) {\n                            this.resumingFrom = this.resumeFrom;\n                            this.resumingFrom.resumingFrom = undefined;\n                        }\n                        const animationOptions = {\n                            ...getValueTransition(layoutTransition, \"layout\"),\n                            onPlay: onLayoutAnimationStart,\n                            onComplete: onLayoutAnimationComplete,\n                        };\n                        if (visualElement.shouldReduceMotion ||\n                            this.options.layoutRoot) {\n                            animationOptions.delay = 0;\n                            animationOptions.type = false;\n                        }\n                        this.startAnimation(animationOptions);\n                        /**\n                         * Set animation origin after starting animation to avoid layout jump\n                         * caused by stopping previous layout animation\n                         */\n                        this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged, animationOptions\n                            .path);\n                    }\n                    else {\n                        /**\n                         * If the layout hasn't changed and we have an animation that hasn't started yet,\n                         * finish it immediately. Otherwise it will be animating from a location\n                         * that was probably never committed to screen and look like a jumpy box.\n                         */\n                        if (!hasLayoutChanged) {\n                            finishAnimation(this);\n                        }\n                        if (this.isLead() && this.options.onExitComplete) {\n                            this.options.onExitComplete();\n                        }\n                    }\n                    this.targetLayout = newLayout;\n                });\n            }\n        }\n        unmount() {\n            this.options.layoutId && this.willUpdate();\n            this.root.nodes.remove(this);\n            const stack = this.getStack();\n            stack && stack.remove(this);\n            this.parent && this.parent.children.delete(this);\n            this.instance = undefined;\n            this.eventHandlers.clear();\n            cancelFrame(this.updateProjection);\n        }\n        // only on the root\n        blockUpdate() {\n            this.updateManuallyBlocked = true;\n        }\n        unblockUpdate() {\n            this.updateManuallyBlocked = false;\n        }\n        isUpdateBlocked() {\n            return this.updateManuallyBlocked || this.updateBlockedByResize;\n        }\n        isTreeAnimationBlocked() {\n            return (this.isAnimationBlocked ||\n                (this.parent && this.parent.isTreeAnimationBlocked()) ||\n                false);\n        }\n        // Note: currently only running on root node\n        startUpdate() {\n            if (this.isUpdateBlocked())\n                return;\n            this.isUpdating = true;\n            this.nodes && this.nodes.forEach(resetSkewAndRotation);\n            this.animationId++;\n        }\n        getTransformTemplate() {\n            const { visualElement } = this.options;\n            return visualElement && visualElement.getProps().transformTemplate;\n        }\n        willUpdate(shouldNotifyListeners = true) {\n            this.root.hasTreeAnimated = true;\n            if (this.root.isUpdateBlocked()) {\n                this.options.onExitComplete && this.options.onExitComplete();\n                return;\n            }\n            /**\n             * If we're running optimised appear animations then these must be\n             * cancelled before measuring the DOM. This is so we can measure\n             * the true layout of the element rather than the WAAPI animation\n             * which will be unaffected by the resetSkewAndRotate step.\n             *\n             * Note: This is a DOM write. Worst case scenario is this is sandwiched\n             * between other snapshot reads which will cause unnecessary style recalculations.\n             * This has to happen here though, as we don't yet know which nodes will need\n             * snapshots in startUpdate(), but we only want to cancel optimised animations\n             * if a layout animation measurement is actually going to be affected by them.\n             */\n            if (window.MotionCancelOptimisedAnimation &&\n                !this.hasCheckedOptimisedAppear) {\n                cancelTreeOptimisedTransformAnimations(this);\n            }\n            !this.root.isUpdating && this.root.startUpdate();\n            if (this.isLayoutDirty)\n                return;\n            this.isLayoutDirty = true;\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                node.shouldResetTransform = true;\n                /**\n                 * Percentage translates resolve against layoutBox dimensions,\n                 * so ancestors with them must be re-measured after transform reset.\n                 */\n                if (typeof node.latestValues.x === \"string\" ||\n                    typeof node.latestValues.y === \"string\") {\n                    node.isLayoutDirty = true;\n                }\n                node.updateScroll(\"snapshot\");\n                if (node.options.layoutRoot) {\n                    node.willUpdate(false);\n                }\n            }\n            const { layoutId, layout } = this.options;\n            if (layoutId === undefined && !layout)\n                return;\n            const transformTemplate = this.getTransformTemplate();\n            this.prevTransformTemplateValue = transformTemplate\n                ? transformTemplate(this.latestValues, \"\")\n                : undefined;\n            this.updateSnapshot();\n            shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n        }\n        update() {\n            this.updateScheduled = false;\n            const updateWasBlocked = this.isUpdateBlocked();\n            // When doing an instant transition, we skip the layout update,\n            // but should still clean up the measurements so that the next\n            // snapshot could be taken correctly.\n            if (updateWasBlocked) {\n                const wasBlockedByResize = this.updateBlockedByResize;\n                this.unblockUpdate();\n                this.updateBlockedByResize = false;\n                this.clearAllSnapshots();\n                /**\n                 * When blocked by resize, still measure layouts so\n                 * callbacks like onLayoutMeasure fire (e.g. Reorder).\n                 * Skip notifyLayoutUpdate to prevent animations.\n                 */\n                if (wasBlockedByResize) {\n                    this.nodes.forEach(forceLayoutMeasure);\n                }\n                this.nodes.forEach(clearMeasurements);\n                return;\n            }\n            /**\n             * If this is a repeat of didUpdate then ignore the animation.\n             */\n            if (this.animationId <= this.animationCommitId) {\n                this.nodes.forEach(clearIsLayoutDirty);\n                return;\n            }\n            this.animationCommitId = this.animationId;\n            if (!this.isUpdating) {\n                this.nodes.forEach(clearIsLayoutDirty);\n            }\n            else {\n                this.isUpdating = false;\n                /**\n                 * Ensure animation-blocked nodes (e.g. during drag)\n                 * get measured even when memoized (willUpdate skipped).\n                 */\n                this.nodes.forEach(ensureDraggedNodesSnapshotted);\n                /**\n                 * Write\n                 */\n                this.nodes.forEach(resetTransformStyle);\n                /**\n                 * Read ==================\n                 */\n                // Update layout measurements of updated children\n                this.nodes.forEach(updateLayout);\n                /**\n                 * Write\n                 */\n                // Notify listeners that the layout is updated\n                this.nodes.forEach(notifyLayoutUpdate);\n            }\n            this.clearAllSnapshots();\n            /**\n             * Manually flush any pending updates. Ideally\n             * we could leave this to the following requestAnimationFrame but this seems\n             * to leave a flash of incorrectly styled content.\n             */\n            const now = time.now();\n            frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n            frameData.timestamp = now;\n            frameData.isProcessing = true;\n            frameSteps.update.process(frameData);\n            frameSteps.preRender.process(frameData);\n            frameSteps.render.process(frameData);\n            frameData.isProcessing = false;\n        }\n        didUpdate() {\n            if (!this.updateScheduled) {\n                this.updateScheduled = true;\n                microtask.read(this.scheduleUpdate);\n            }\n        }\n        clearAllSnapshots() {\n            this.nodes.forEach(clearSnapshot);\n            this.sharedNodes.forEach(removeLeadSnapshots);\n        }\n        scheduleUpdateProjection() {\n            if (!this.projectionUpdateScheduled) {\n                this.projectionUpdateScheduled = true;\n                frame.preRender(this.updateProjection, false, true);\n            }\n        }\n        scheduleCheckAfterUnmount() {\n            /**\n             * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n             * we manually call didUpdate to give a chance to the siblings to animate.\n             * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n             */\n            frame.postRender(() => {\n                if (this.isLayoutDirty) {\n                    this.root.didUpdate();\n                }\n                else {\n                    this.root.checkUpdateFailed();\n                }\n            });\n        }\n        /**\n         * Update measurements\n         */\n        updateSnapshot() {\n            if (this.snapshot || !this.instance)\n                return;\n            this.snapshot = this.measure();\n            if (this.snapshot &&\n                !calcLength(this.snapshot.measuredBox.x) &&\n                !calcLength(this.snapshot.measuredBox.y)) {\n                this.snapshot = undefined;\n            }\n        }\n        updateLayout() {\n            if (!this.instance)\n                return;\n            this.updateScroll();\n            if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n                !this.isLayoutDirty) {\n                return;\n            }\n            /**\n             * When a node is mounted, it simply resumes from the prevLead's\n             * snapshot instead of taking a new one, but the ancestors scroll\n             * might have updated while the prevLead is unmounted. We need to\n             * update the scroll again to make sure the layout we measure is\n             * up to date.\n             */\n            if (this.resumeFrom && !this.resumeFrom.instance) {\n                for (let i = 0; i < this.path.length; i++) {\n                    const node = this.path[i];\n                    node.updateScroll();\n                }\n            }\n            const prevLayout = this.layout;\n            this.layout = this.measure(false);\n            this.layoutVersion++;\n            if (!this.layoutCorrected)\n                this.layoutCorrected = createBox();\n            this.isLayoutDirty = false;\n            this.projectionDelta = undefined;\n            this.notifyListeners(\"measure\", this.layout.layoutBox);\n            const { visualElement } = this.options;\n            visualElement &&\n                visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined);\n        }\n        updateScroll(phase = \"measure\") {\n            let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n            if (this.scroll &&\n                this.scroll.animationId === this.root.animationId &&\n                this.scroll.phase === phase) {\n                needsMeasurement = false;\n            }\n            if (needsMeasurement && this.instance) {\n                const isRoot = checkIsScrollRoot(this.instance);\n                this.scroll = {\n                    animationId: this.root.animationId,\n                    phase,\n                    isRoot,\n                    offset: measureScroll(this.instance),\n                    wasRoot: this.scroll ? this.scroll.isRoot : isRoot,\n                };\n            }\n        }\n        resetTransform() {\n            if (!resetTransform)\n                return;\n            const isResetRequested = this.isLayoutDirty ||\n                this.shouldResetTransform ||\n                this.options.alwaysMeasureLayout;\n            const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n            const transformTemplate = this.getTransformTemplate();\n            const transformTemplateValue = transformTemplate\n                ? transformTemplate(this.latestValues, \"\")\n                : undefined;\n            const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n            if (isResetRequested &&\n                this.instance &&\n                (hasProjection ||\n                    hasTransform(this.latestValues) ||\n                    transformTemplateHasChanged)) {\n                resetTransform(this.instance, transformTemplateValue);\n                this.shouldResetTransform = false;\n                this.scheduleRender();\n            }\n        }\n        measure(removeTransform = true) {\n            const pageBox = this.measurePageBox();\n            let layoutBox = this.removeElementScroll(pageBox);\n            /**\n             * Measurements taken during the pre-render stage\n             * still have transforms applied so we remove them\n             * via calculation.\n             */\n            if (removeTransform) {\n                layoutBox = this.removeTransform(layoutBox);\n            }\n            roundBox(layoutBox);\n            return {\n                animationId: this.root.animationId,\n                measuredBox: pageBox,\n                layoutBox,\n                latestValues: {},\n                source: this.id,\n            };\n        }\n        measurePageBox() {\n            const { visualElement } = this.options;\n            if (!visualElement)\n                return createBox();\n            const box = visualElement.measureViewportBox();\n            const wasInScrollRoot = this.scroll?.wasRoot || this.path.some(checkNodeWasScrollRoot);\n            if (!wasInScrollRoot) {\n                // Remove viewport scroll to give page-relative coordinates\n                const { scroll } = this.root;\n                if (scroll) {\n                    translateAxis(box.x, scroll.offset.x);\n                    translateAxis(box.y, scroll.offset.y);\n                }\n            }\n            return box;\n        }\n        removeElementScroll(box) {\n            const boxWithoutScroll = createBox();\n            copyBoxInto(boxWithoutScroll, box);\n            if (this.scroll?.wasRoot) {\n                return boxWithoutScroll;\n            }\n            /**\n             * Performance TODO: Keep a cumulative scroll offset down the tree\n             * rather than loop back up the path.\n             */\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                const { scroll, options } = node;\n                if (node !== this.root && scroll && options.layoutScroll) {\n                    /**\n                     * If this is a new scroll root, we want to remove all previous scrolls\n                     * from the viewport box.\n                     */\n                    if (scroll.wasRoot) {\n                        copyBoxInto(boxWithoutScroll, box);\n                    }\n                    translateAxis(boxWithoutScroll.x, scroll.offset.x);\n                    translateAxis(boxWithoutScroll.y, scroll.offset.y);\n                }\n            }\n            return boxWithoutScroll;\n        }\n        applyTransform(box, transformOnly = false, output) {\n            const withTransforms = output || createBox();\n            copyBoxInto(withTransforms, box);\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                if (!transformOnly &&\n                    node.options.layoutScroll &&\n                    node.scroll &&\n                    node !== node.root) {\n                    translateAxis(withTransforms.x, -node.scroll.offset.x);\n                    translateAxis(withTransforms.y, -node.scroll.offset.y);\n                }\n                if (!hasTransform(node.latestValues))\n                    continue;\n                transformBox(withTransforms, node.latestValues, node.layout?.layoutBox);\n            }\n            if (hasTransform(this.latestValues)) {\n                transformBox(withTransforms, this.latestValues, this.layout?.layoutBox);\n            }\n            return withTransforms;\n        }\n        removeTransform(box) {\n            const boxWithoutTransform = createBox();\n            copyBoxInto(boxWithoutTransform, box);\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                if (!hasTransform(node.latestValues))\n                    continue;\n                let sourceBox;\n                if (node.instance) {\n                    hasScale(node.latestValues) && node.updateSnapshot();\n                    sourceBox = createBox();\n                    copyBoxInto(sourceBox, node.measurePageBox());\n                }\n                removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot?.layoutBox, sourceBox);\n            }\n            if (hasTransform(this.latestValues)) {\n                removeBoxTransforms(boxWithoutTransform, this.latestValues);\n            }\n            return boxWithoutTransform;\n        }\n        setTargetDelta(delta) {\n            this.targetDelta = delta;\n            this.root.scheduleUpdateProjection();\n            this.isProjectionDirty = true;\n        }\n        setOptions(options) {\n            this.options = {\n                ...this.options,\n                ...options,\n                crossfade: options.crossfade !== undefined ? options.crossfade : true,\n            };\n        }\n        clearMeasurements() {\n            this.scroll = undefined;\n            this.layout = undefined;\n            this.snapshot = undefined;\n            this.prevTransformTemplateValue = undefined;\n            this.targetDelta = undefined;\n            this.target = undefined;\n            this.isLayoutDirty = false;\n        }\n        forceRelativeParentToResolveTarget() {\n            if (!this.relativeParent)\n                return;\n            /**\n             * If the parent target isn't up-to-date, force it to update.\n             * This is an unfortunate de-optimisation as it means any updating relative\n             * projection will cause all the relative parents to recalculate back\n             * up the tree.\n             */\n            if (this.relativeParent.resolvedRelativeTargetAt !==\n                frameData.timestamp) {\n                this.relativeParent.resolveTargetDelta(true);\n            }\n        }\n        resolveTargetDelta(forceRecalculation = false) {\n            /**\n             * Once the dirty status of nodes has been spread through the tree, we also\n             * need to check if we have a shared node of a different depth that has itself\n             * been dirtied.\n             */\n            const lead = this.getLead();\n            this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n            this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n            this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n            const isShared = Boolean(this.resumingFrom) || this !== lead;\n            /**\n             * We don't use transform for this step of processing so we don't\n             * need to check whether any nodes have changed transform.\n             */\n            const canSkip = !(forceRecalculation ||\n                (isShared && this.isSharedProjectionDirty) ||\n                this.isProjectionDirty ||\n                this.parent?.isProjectionDirty ||\n                this.attemptToResolveRelativeTarget ||\n                this.root.updateBlockedByResize);\n            if (canSkip)\n                return;\n            const { layout, layoutId } = this.options;\n            /**\n             * If we have no layout, we can't perform projection, so early return\n             */\n            if (!this.layout || !(layout || layoutId))\n                return;\n            this.resolvedRelativeTargetAt = frameData.timestamp;\n            const relativeParent = this.getClosestProjectingParent();\n            if (relativeParent &&\n                this.linkedParentVersion !== relativeParent.layoutVersion &&\n                !relativeParent.options.layoutRoot) {\n                this.removeRelativeTarget();\n            }\n            /**\n             * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n             * a relativeParent. This will allow a component to perform scale correction\n             * even if no animation has started.\n             */\n            if (!this.targetDelta && !this.relativeTarget) {\n                if (this.options.layoutAnchor !== false &&\n                    relativeParent &&\n                    relativeParent.layout) {\n                    this.createRelativeTarget(relativeParent, this.layout.layoutBox, relativeParent.layout.layoutBox);\n                }\n                else {\n                    this.removeRelativeTarget();\n                }\n            }\n            /**\n             * If we have no relative target or no target delta our target isn't valid\n             * for this frame.\n             */\n            if (!this.relativeTarget && !this.targetDelta)\n                return;\n            /**\n             * Lazy-init target data structure\n             */\n            if (!this.target) {\n                this.target = createBox();\n                this.targetWithTransforms = createBox();\n            }\n            /**\n             * If we've got a relative box for this component, resolve it into a target relative to the parent.\n             */\n            if (this.relativeTarget &&\n                this.relativeTargetOrigin &&\n                this.relativeParent &&\n                this.relativeParent.target) {\n                this.forceRelativeParentToResolveTarget();\n                calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target, this.options.layoutAnchor || undefined);\n                /**\n                 * If we've only got a targetDelta, resolve it into a target\n                 */\n            }\n            else if (this.targetDelta) {\n                if (Boolean(this.resumingFrom)) {\n                    this.applyTransform(this.layout.layoutBox, false, this.target);\n                }\n                else {\n                    copyBoxInto(this.target, this.layout.layoutBox);\n                }\n                applyBoxDelta(this.target, this.targetDelta);\n            }\n            else {\n                /**\n                 * If no target, use own layout as target\n                 */\n                copyBoxInto(this.target, this.layout.layoutBox);\n            }\n            /**\n             * If we've been told to attempt to resolve a relative target, do so.\n             */\n            if (this.attemptToResolveRelativeTarget) {\n                this.attemptToResolveRelativeTarget = false;\n                if (this.options.layoutAnchor !== false &&\n                    relativeParent &&\n                    Boolean(relativeParent.resumingFrom) ===\n                        Boolean(this.resumingFrom) &&\n                    !relativeParent.options.layoutScroll &&\n                    relativeParent.target &&\n                    this.animationProgress !== 1) {\n                    this.createRelativeTarget(relativeParent, this.target, relativeParent.target);\n                }\n                else {\n                    this.relativeParent = this.relativeTarget = undefined;\n                }\n            }\n            /**\n             * Increase debug counter for resolved target deltas\n             */\n            if (statsBuffer.value) {\n                metrics.calculatedTargetDeltas++;\n            }\n        }\n        getClosestProjectingParent() {\n            if (!this.parent ||\n                hasScale(this.parent.latestValues) ||\n                has2DTranslate(this.parent.latestValues)) {\n                return undefined;\n            }\n            if (this.parent.isProjecting()) {\n                return this.parent;\n            }\n            else {\n                return this.parent.getClosestProjectingParent();\n            }\n        }\n        isProjecting() {\n            return Boolean((this.relativeTarget ||\n                this.targetDelta ||\n                this.options.layoutRoot) &&\n                this.layout);\n        }\n        createRelativeTarget(relativeParent, layout, parentLayout) {\n            this.relativeParent = relativeParent;\n            this.linkedParentVersion = relativeParent.layoutVersion;\n            this.forceRelativeParentToResolveTarget();\n            this.relativeTarget = createBox();\n            this.relativeTargetOrigin = createBox();\n            calcRelativePosition(this.relativeTargetOrigin, layout, parentLayout, this.options.layoutAnchor || undefined);\n            copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n        }\n        removeRelativeTarget() {\n            this.relativeParent = this.relativeTarget = undefined;\n        }\n        calcProjection() {\n            const lead = this.getLead();\n            const isShared = Boolean(this.resumingFrom) || this !== lead;\n            let canSkip = true;\n            /**\n             * If this is a normal layout animation and neither this node nor its nearest projecting\n             * is dirty then we can't skip.\n             */\n            if (this.isProjectionDirty || this.parent?.isProjectionDirty) {\n                canSkip = false;\n            }\n            /**\n             * If this is a shared layout animation and this node's shared projection is dirty then\n             * we can't skip.\n             */\n            if (isShared &&\n                (this.isSharedProjectionDirty || this.isTransformDirty)) {\n                canSkip = false;\n            }\n            /**\n             * If we have resolved the target this frame we must recalculate the\n             * projection to ensure it visually represents the internal calculations.\n             */\n            if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n                canSkip = false;\n            }\n            if (canSkip)\n                return;\n            const { layout, layoutId } = this.options;\n            /**\n             * If this section of the tree isn't animating we can\n             * delete our target sources for the following frame.\n             */\n            this.isTreeAnimating = Boolean((this.parent && this.parent.isTreeAnimating) ||\n                this.currentAnimation ||\n                this.pendingAnimation);\n            if (!this.isTreeAnimating) {\n                this.targetDelta = this.relativeTarget = undefined;\n            }\n            if (!this.layout || !(layout || layoutId))\n                return;\n            /**\n             * Reset the corrected box with the latest values from box, as we're then going\n             * to perform mutative operations on it.\n             */\n            copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n            /**\n             * Record previous tree scales before updating.\n             */\n            const prevTreeScaleX = this.treeScale.x;\n            const prevTreeScaleY = this.treeScale.y;\n            /**\n             * Apply all the parent deltas to this box to produce the corrected box. This\n             * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n             */\n            applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n            /**\n             * If this layer needs to perform scale correction but doesn't have a target,\n             * use the layout as the target.\n             */\n            if (lead.layout &&\n                !lead.target &&\n                (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n                lead.target = lead.layout.layoutBox;\n                lead.targetWithTransforms = createBox();\n            }\n            const { target } = lead;\n            if (!target) {\n                /**\n                 * If we don't have a target to project into, but we were previously\n                 * projecting, we want to remove the stored transform and schedule\n                 * a render to ensure the elements reflect the removed transform.\n                 */\n                if (this.prevProjectionDelta) {\n                    this.createProjectionDeltas();\n                    this.scheduleRender();\n                }\n                return;\n            }\n            if (!this.projectionDelta || !this.prevProjectionDelta) {\n                this.createProjectionDeltas();\n            }\n            else {\n                copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n                copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n            }\n            /**\n             * Update the delta between the corrected box and the target box before user-set transforms were applied.\n             * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n             * for our layout reprojection, but still allow them to be scaled correctly by the user.\n             * It might be that to simplify this we may want to accept that user-set scale is also corrected\n             * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n             * to allow people to choose whether these styles are corrected based on just the\n             * layout reprojection or the final bounding box.\n             */\n            calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n            if (this.treeScale.x !== prevTreeScaleX ||\n                this.treeScale.y !== prevTreeScaleY ||\n                !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) ||\n                !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n                this.hasProjected = true;\n                this.scheduleRender();\n                this.notifyListeners(\"projectionUpdate\", target);\n            }\n            /**\n             * Increase debug counter for recalculated projections\n             */\n            if (statsBuffer.value) {\n                metrics.calculatedProjections++;\n            }\n        }\n        hide() {\n            this.isVisible = false;\n            // TODO: Schedule render\n        }\n        show() {\n            this.isVisible = true;\n            // TODO: Schedule render\n        }\n        scheduleRender(notifyAll = true) {\n            this.options.visualElement?.scheduleRender();\n            if (notifyAll) {\n                const stack = this.getStack();\n                stack && stack.scheduleRender();\n            }\n            if (this.resumingFrom && !this.resumingFrom.instance) {\n                this.resumingFrom = undefined;\n            }\n        }\n        createProjectionDeltas() {\n            this.prevProjectionDelta = createDelta();\n            this.projectionDelta = createDelta();\n            this.projectionDeltaWithTransform = createDelta();\n        }\n        setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false, pathFn) {\n            const snapshot = this.snapshot;\n            const snapshotLatestValues = snapshot ? snapshot.latestValues : {};\n            const mixedValues = { ...this.latestValues };\n            const targetDelta = createDelta();\n            if (!this.relativeParent ||\n                !this.relativeParent.options.layoutRoot) {\n                this.relativeTarget = this.relativeTargetOrigin = undefined;\n            }\n            this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n            const relativeLayout = createBox();\n            const snapshotSource = snapshot ? snapshot.source : undefined;\n            const layoutSource = this.layout ? this.layout.source : undefined;\n            const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n            const stack = this.getStack();\n            const isOnlyMember = !stack || stack.members.length <= 1;\n            const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n                !isOnlyMember &&\n                this.options.crossfade === true &&\n                !this.path.some(hasOpacityCrossfade));\n            this.animationProgress = 0;\n            let prevRelativeTarget;\n            // The path decides whether the layout shift is worth curving\n            // (distance floor) and resolves the interpolator from the delta.\n            const interpolate = pathFn?.interpolateProjection(delta);\n            this.mixTargetDelta = (latest) => {\n                const progress = latest / 1000;\n                const point = interpolate?.(progress);\n                if (point) {\n                    targetDelta.x.translate = point.x;\n                    targetDelta.x.scale = mixNumber(delta.x.scale, 1, progress);\n                    targetDelta.x.origin = delta.x.origin;\n                    targetDelta.x.originPoint = delta.x.originPoint;\n                    targetDelta.y.translate = point.y;\n                    targetDelta.y.scale = mixNumber(delta.y.scale, 1, progress);\n                    targetDelta.y.origin = delta.y.origin;\n                    targetDelta.y.originPoint = delta.y.originPoint;\n                }\n                else {\n                    mixAxisDeltaLinear(targetDelta.x, delta.x, progress);\n                    mixAxisDeltaLinear(targetDelta.y, delta.y, progress);\n                }\n                this.setTargetDelta(targetDelta);\n                if (this.relativeTarget &&\n                    this.relativeTargetOrigin &&\n                    this.layout &&\n                    this.relativeParent &&\n                    this.relativeParent.layout) {\n                    calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox, this.options.layoutAnchor || undefined);\n                    mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n                    /**\n                     * If this is an unchanged relative target we can consider the\n                     * projection not dirty.\n                     */\n                    if (prevRelativeTarget &&\n                        boxEquals(this.relativeTarget, prevRelativeTarget)) {\n                        this.isProjectionDirty = false;\n                    }\n                    if (!prevRelativeTarget)\n                        prevRelativeTarget = createBox();\n                    copyBoxInto(prevRelativeTarget, this.relativeTarget);\n                }\n                if (isSharedLayoutAnimation) {\n                    this.animationValues = mixedValues;\n                    mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n                }\n                if (point && point.rotate !== undefined) {\n                    // Dedicated `pathRotation` channel, not `rotate`, so an\n                    // animating `rotate` is composed with, never clobbered.\n                    if (!this.animationValues)\n                        this.animationValues = mixedValues;\n                    this.animationValues.pathRotation = point.rotate;\n                }\n                this.root.scheduleUpdateProjection();\n                this.scheduleRender();\n                this.animationProgress = progress;\n            };\n            this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0);\n        }\n        startAnimation(options) {\n            this.notifyListeners(\"animationStart\");\n            this.currentAnimation?.stop();\n            this.resumingFrom?.currentAnimation?.stop();\n            if (this.pendingAnimation) {\n                cancelFrame(this.pendingAnimation);\n                this.pendingAnimation = undefined;\n            }\n            /**\n             * Start the animation in the next frame to have a frame with progress 0,\n             * where the target is the same as when the animation started, so we can\n             * calculate the relative positions correctly for instant transitions.\n             */\n            this.pendingAnimation = frame.update(() => {\n                globalProjectionState.hasAnimatedSinceResize = true;\n                this.motionValue || (this.motionValue = motionValue(0));\n                this.motionValue.jump(0, false);\n                this.currentAnimation = animateSingleValue(this.motionValue, [0, 1000], {\n                    ...options,\n                    velocity: 0,\n                    isSync: true,\n                    onUpdate: (latest) => {\n                        this.mixTargetDelta(latest);\n                        options.onUpdate && options.onUpdate(latest);\n                    },\n                    onComplete: () => {\n                        options.onComplete && options.onComplete();\n                        this.completeAnimation();\n                    },\n                });\n                if (this.resumingFrom) {\n                    this.resumingFrom.currentAnimation = this.currentAnimation;\n                }\n                this.pendingAnimation = undefined;\n            });\n        }\n        completeAnimation() {\n            if (this.resumingFrom) {\n                this.resumingFrom.currentAnimation = undefined;\n                this.resumingFrom.preserveOpacity = undefined;\n            }\n            const stack = this.getStack();\n            stack && stack.exitAnimationComplete();\n            this.resumingFrom =\n                this.currentAnimation =\n                    this.animationValues =\n                        undefined;\n            this.notifyListeners(\"animationComplete\");\n        }\n        finishAnimation() {\n            if (this.currentAnimation) {\n                this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n                this.currentAnimation.stop();\n            }\n            this.completeAnimation();\n        }\n        applyTransformsToTarget() {\n            const lead = this.getLead();\n            let { targetWithTransforms, target, layout, latestValues } = lead;\n            if (!targetWithTransforms || !target || !layout)\n                return;\n            /**\n             * If we're only animating position, and this element isn't the lead element,\n             * then instead of projecting into the lead box we instead want to calculate\n             * a new target that aligns the two boxes but maintains the layout shape.\n             */\n            if (this !== lead &&\n                this.layout &&\n                layout &&\n                shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n                target = this.target || createBox();\n                const xLength = calcLength(this.layout.layoutBox.x);\n                target.x.min = lead.target.x.min;\n                target.x.max = target.x.min + xLength;\n                const yLength = calcLength(this.layout.layoutBox.y);\n                target.y.min = lead.target.y.min;\n                target.y.max = target.y.min + yLength;\n            }\n            copyBoxInto(targetWithTransforms, target);\n            /**\n             * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n             * This is the final box that we will then project into by calculating a transform delta and\n             * applying it to the corrected box.\n             */\n            transformBox(targetWithTransforms, latestValues);\n            /**\n             * Update the delta between the corrected box and the final target box, after\n             * user-set transforms are applied to it. This will be used by the renderer to\n             * create a transform style that will reproject the element from its layout layout\n             * into the desired bounding box.\n             */\n            calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n        }\n        registerSharedNode(layoutId, node) {\n            if (!this.sharedNodes.has(layoutId)) {\n                this.sharedNodes.set(layoutId, new NodeStack());\n            }\n            const stack = this.sharedNodes.get(layoutId);\n            stack.add(node);\n            const config = node.options.initialPromotionConfig;\n            node.promote({\n                transition: config ? config.transition : undefined,\n                preserveFollowOpacity: config && config.shouldPreserveFollowOpacity\n                    ? config.shouldPreserveFollowOpacity(node)\n                    : undefined,\n            });\n        }\n        isLead() {\n            const stack = this.getStack();\n            return stack ? stack.lead === this : true;\n        }\n        getLead() {\n            const { layoutId } = this.options;\n            return layoutId ? this.getStack()?.lead || this : this;\n        }\n        getPrevLead() {\n            const { layoutId } = this.options;\n            return layoutId ? this.getStack()?.prevLead : undefined;\n        }\n        getStack() {\n            const { layoutId } = this.options;\n            if (layoutId)\n                return this.root.sharedNodes.get(layoutId);\n        }\n        promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n            const stack = this.getStack();\n            if (stack)\n                stack.promote(this, preserveFollowOpacity);\n            if (needsReset) {\n                this.projectionDelta = undefined;\n                this.needsReset = true;\n            }\n            if (transition)\n                this.setOptions({ transition });\n        }\n        relegate() {\n            const stack = this.getStack();\n            if (stack) {\n                return stack.relegate(this);\n            }\n            else {\n                return false;\n            }\n        }\n        resetSkewAndRotation() {\n            const { visualElement } = this.options;\n            if (!visualElement)\n                return;\n            // If there's no detected skew or rotation values, we can early return without a forced render.\n            let hasDistortingTransform = false;\n            /**\n             * An unrolled check for rotation values. Most elements don't have any rotation and\n             * skipping the nested loop and new object creation is 50% faster.\n             */\n            const { latestValues } = visualElement;\n            if (latestValues.z ||\n                latestValues.rotate ||\n                latestValues.rotateX ||\n                latestValues.rotateY ||\n                latestValues.rotateZ ||\n                latestValues.skewX ||\n                latestValues.skewY) {\n                hasDistortingTransform = true;\n            }\n            // If there's no distorting values, we don't need to do any more.\n            if (!hasDistortingTransform)\n                return;\n            const resetValues = {};\n            if (latestValues.z) {\n                resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n            }\n            // Check the skew and rotate value of all axes and reset to 0\n            for (let i = 0; i < transformAxes.length; i++) {\n                resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n                resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n            }\n            // Force a render of this element to apply the transform with all skews and rotations\n            // set to 0.\n            visualElement.render();\n            // Put back all the values we reset\n            for (const key in resetValues) {\n                visualElement.setStaticValue(key, resetValues[key]);\n                if (this.animationValues) {\n                    this.animationValues[key] = resetValues[key];\n                }\n            }\n            // Schedule a render for the next frame. This ensures we won't visually\n            // see the element with the reset rotate value applied.\n            visualElement.scheduleRender();\n        }\n        applyProjectionStyles(targetStyle, // CSSStyleDeclaration - doesn't allow numbers to be assigned to properties\n        styleProp) {\n            if (!this.instance || this.isSVG)\n                return;\n            if (!this.isVisible) {\n                targetStyle.visibility = \"hidden\";\n                return;\n            }\n            const transformTemplate = this.getTransformTemplate();\n            if (this.needsReset) {\n                this.needsReset = false;\n                targetStyle.visibility = \"\";\n                targetStyle.opacity = \"\";\n                targetStyle.pointerEvents =\n                    resolveMotionValue(styleProp?.pointerEvents) || \"\";\n                targetStyle.transform = transformTemplate\n                    ? transformTemplate(this.latestValues, \"\")\n                    : \"none\";\n                return;\n            }\n            const lead = this.getLead();\n            if (!this.projectionDelta || !this.layout || !lead.target) {\n                if (this.options.layoutId) {\n                    targetStyle.opacity =\n                        this.latestValues.opacity !== undefined\n                            ? this.latestValues.opacity\n                            : 1;\n                    targetStyle.pointerEvents =\n                        resolveMotionValue(styleProp?.pointerEvents) || \"\";\n                }\n                if (this.hasProjected && !hasTransform(this.latestValues)) {\n                    targetStyle.transform = transformTemplate\n                        ? transformTemplate({}, \"\")\n                        : \"none\";\n                    this.hasProjected = false;\n                }\n                return;\n            }\n            targetStyle.visibility = \"\";\n            const valuesToRender = lead.animationValues || lead.latestValues;\n            this.applyTransformsToTarget();\n            let transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n            if (transformTemplate) {\n                transform = transformTemplate(valuesToRender, transform);\n            }\n            targetStyle.transform = transform;\n            const { x, y } = this.projectionDelta;\n            targetStyle.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n            if (lead.animationValues) {\n                /**\n                 * If the lead component is animating, assign this either the entering/leaving\n                 * opacity\n                 */\n                targetStyle.opacity =\n                    lead === this\n                        ? valuesToRender.opacity ??\n                            this.latestValues.opacity ??\n                            1\n                        : this.preserveOpacity\n                            ? this.latestValues.opacity\n                            : valuesToRender.opacityExit;\n            }\n            else {\n                /**\n                 * Or we're not animating at all, set the lead component to its layout\n                 * opacity and other components to hidden.\n                 */\n                targetStyle.opacity =\n                    lead === this\n                        ? valuesToRender.opacity !== undefined\n                            ? valuesToRender.opacity\n                            : \"\"\n                        : valuesToRender.opacityExit !== undefined\n                            ? valuesToRender.opacityExit\n                            : 0;\n            }\n            /**\n             * Apply scale correction\n             */\n            for (const key in scaleCorrectors) {\n                if (valuesToRender[key] === undefined)\n                    continue;\n                const { correct, applyTo, isCSSVariable } = scaleCorrectors[key];\n                /**\n                 * Only apply scale correction to the value if we have an\n                 * active projection transform. Otherwise these values become\n                 * vulnerable to distortion if the element changes size without\n                 * a corresponding layout animation.\n                 */\n                const corrected = transform === \"none\"\n                    ? valuesToRender[key]\n                    : correct(valuesToRender[key], lead);\n                if (applyTo) {\n                    const num = applyTo.length;\n                    for (let i = 0; i < num; i++) {\n                        targetStyle[applyTo[i]] = corrected;\n                    }\n                }\n                else {\n                    // If this is a CSS variable, set it directly on the instance.\n                    // Replacing this function from creating styles to setting them\n                    // would be a good place to remove per frame object creation\n                    if (isCSSVariable) {\n                        this.options.visualElement.renderState.vars[key] = corrected;\n                    }\n                    else {\n                        targetStyle[key] = corrected;\n                    }\n                }\n            }\n            /**\n             * Disable pointer events on follow components. This is to ensure\n             * that if a follow component covers a lead component it doesn't block\n             * pointer events on the lead.\n             */\n            if (this.options.layoutId) {\n                targetStyle.pointerEvents =\n                    lead === this\n                        ? resolveMotionValue(styleProp?.pointerEvents) || \"\"\n                        : \"none\";\n            }\n        }\n        clearSnapshot() {\n            this.resumeFrom = this.snapshot = undefined;\n        }\n        // Only run on root\n        resetTree() {\n            this.root.nodes.forEach((node) => node.currentAnimation?.stop());\n            this.root.nodes.forEach(clearMeasurements);\n            this.root.sharedNodes.clear();\n        }\n    };\n}\nfunction updateLayout(node) {\n    node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n    const snapshot = node.resumeFrom?.snapshot || node.snapshot;\n    if (node.isLead() &&\n        node.layout &&\n        snapshot &&\n        node.hasListeners(\"didUpdate\")) {\n        const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n        const { animationType } = node.options;\n        const isShared = snapshot.source !== node.layout.source;\n        // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n        // animations for instance if layout=\"size\" and an element has only changed position\n        if (animationType === \"size\") {\n            eachAxis((axis) => {\n                const axisSnapshot = isShared\n                    ? snapshot.measuredBox[axis]\n                    : snapshot.layoutBox[axis];\n                const length = calcLength(axisSnapshot);\n                axisSnapshot.min = layout[axis].min;\n                axisSnapshot.max = axisSnapshot.min + length;\n            });\n        }\n        else if (animationType === \"x\" || animationType === \"y\") {\n            const snapAxis = animationType === \"x\" ? \"y\" : \"x\";\n            copyAxisInto(isShared\n                ? snapshot.measuredBox[snapAxis]\n                : snapshot.layoutBox[snapAxis], layout[snapAxis]);\n        }\n        else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n            eachAxis((axis) => {\n                const axisSnapshot = isShared\n                    ? snapshot.measuredBox[axis]\n                    : snapshot.layoutBox[axis];\n                const length = calcLength(layout[axis]);\n                axisSnapshot.max = axisSnapshot.min + length;\n                /**\n                 * Ensure relative target gets resized and rerendererd\n                 */\n                if (node.relativeTarget && !node.currentAnimation) {\n                    node.isProjectionDirty = true;\n                    node.relativeTarget[axis].max =\n                        node.relativeTarget[axis].min + length;\n                }\n            });\n        }\n        const layoutDelta = createDelta();\n        calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n        const visualDelta = createDelta();\n        if (isShared) {\n            calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n        }\n        else {\n            calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n        }\n        const hasLayoutChanged = !isDeltaZero(layoutDelta);\n        let hasRelativeLayoutChanged = false;\n        if (!node.resumeFrom) {\n            const relativeParent = node.getClosestProjectingParent();\n            /**\n             * If the relativeParent is itself resuming from a different element then\n             * the relative snapshot is not relavent\n             */\n            if (relativeParent && !relativeParent.resumeFrom) {\n                const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n                if (parentSnapshot && parentLayout) {\n                    const anchor = node.options.layoutAnchor || undefined;\n                    const relativeSnapshot = createBox();\n                    calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox, anchor);\n                    const relativeLayout = createBox();\n                    calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox, anchor);\n                    if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n                        hasRelativeLayoutChanged = true;\n                    }\n                    if (relativeParent.options.layoutRoot) {\n                        node.relativeTarget = relativeLayout;\n                        node.relativeTargetOrigin = relativeSnapshot;\n                        node.relativeParent = relativeParent;\n                    }\n                }\n            }\n        }\n        node.notifyListeners(\"didUpdate\", {\n            layout,\n            snapshot,\n            delta: visualDelta,\n            layoutDelta,\n            hasLayoutChanged,\n            hasRelativeLayoutChanged,\n        });\n    }\n    else if (node.isLead()) {\n        const { onExitComplete } = node.options;\n        onExitComplete && onExitComplete();\n    }\n    /**\n     * Clearing transition\n     * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n     * and why we need it at all\n     */\n    node.options.transition = undefined;\n}\nfunction propagateDirtyNodes(node) {\n    /**\n     * Increase debug counter for nodes encountered this frame\n     */\n    if (statsBuffer.value) {\n        metrics.nodes++;\n    }\n    if (!node.parent)\n        return;\n    /**\n     * If this node isn't projecting, propagate isProjectionDirty. It will have\n     * no performance impact but it will allow the next child that *is* projecting\n     * but *isn't* dirty to just check its parent to see if *any* ancestor needs\n     * correcting.\n     */\n    if (!node.isProjecting()) {\n        node.isProjectionDirty = node.parent.isProjectionDirty;\n    }\n    /**\n     * Propagate isSharedProjectionDirty and isTransformDirty\n     * throughout the whole tree. A future revision can take another look at\n     * this but for safety we still recalcualte shared nodes.\n     */\n    node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty ||\n        node.parent.isProjectionDirty ||\n        node.parent.isSharedProjectionDirty));\n    node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n    node.isProjectionDirty =\n        node.isSharedProjectionDirty =\n            node.isTransformDirty =\n                false;\n}\nfunction clearSnapshot(node) {\n    node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n    node.clearMeasurements();\n}\nfunction forceLayoutMeasure(node) {\n    node.isLayoutDirty = true;\n    node.updateLayout();\n}\nfunction clearIsLayoutDirty(node) {\n    node.isLayoutDirty = false;\n}\n/**\n * When a node is animation-blocked (e.g. during drag) and its component\n * didn't re-render (memoized), willUpdate() is never called so there's\n * no snapshot. Use the previous layout as a snapshot and mark dirty so\n * resetTransform/updateLayout/notifyLayoutUpdate process it normally.\n */\nfunction ensureDraggedNodesSnapshotted(node) {\n    if (node.isAnimationBlocked && node.layout && !node.isLayoutDirty) {\n        node.snapshot = node.layout;\n        node.isLayoutDirty = true;\n    }\n}\nfunction resetTransformStyle(node) {\n    const { visualElement } = node.options;\n    if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n        visualElement.notify(\"BeforeLayoutMeasure\");\n    }\n    node.resetTransform();\n}\nfunction finishAnimation(node) {\n    node.finishAnimation();\n    node.targetDelta = node.relativeTarget = node.target = undefined;\n    node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n    node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n    node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n    node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n    stack.removeLeadSnapshot();\n}\nfunction mixAxisDeltaLinear(output, delta, p) {\n    output.translate = mixNumber(delta.translate, 0, p);\n    output.scale = mixNumber(delta.scale, 1, p);\n    output.origin = delta.origin;\n    output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n    output.min = mixNumber(from.min, to.min, p);\n    output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n    mixAxis(output.x, from.x, to.x, p);\n    mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n    return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nconst defaultLayoutTransition = {\n    duration: 0.45,\n    ease: [0.4, 0, 0.1, 1],\n};\nconst userAgentContains = (string) => typeof navigator !== \"undefined\" &&\n    navigator.userAgent &&\n    navigator.userAgent.toLowerCase().includes(string);\n/**\n * Measured bounding boxes must be rounded in Safari and\n * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements\n * can appear to jump.\n */\nconst roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\")\n    ? Math.round\n    : noop;\nfunction roundAxis(axis) {\n    // Round to the nearest .5 pixels to support subpixel layouts\n    axis.min = roundPoint(axis.min);\n    axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n    roundAxis(box.x);\n    roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n    return (animationType === \"position\" ||\n        (animationType === \"preserve-aspect\" &&\n            !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\nfunction checkNodeWasScrollRoot(node) {\n    return node !== node.root && node.scroll?.wasRoot;\n}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixBox, propagateDirtyNodes };\n//# sourceMappingURL=create-projection-node.mjs.map\n","import { addDomEvent } from '../../events/add-dom-event.mjs';\nimport { createProjectionNode } from './create-projection-node.mjs';\n\nconst DocumentProjectionNode = createProjectionNode({\n    attachResizeListener: (ref, notify) => addDomEvent(ref, \"resize\", notify),\n    measureScroll: () => ({\n        x: document.documentElement.scrollLeft || document.body?.scrollLeft || 0,\n        y: document.documentElement.scrollTop || document.body?.scrollTop || 0,\n    }),\n    checkIsScrollRoot: () => true,\n});\n\nexport { DocumentProjectionNode };\n//# sourceMappingURL=DocumentProjectionNode.mjs.map\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nconst rootProjectionNode = {\n    current: undefined,\n};\nconst HTMLProjectionNode = createProjectionNode({\n    measureScroll: (instance) => ({\n        x: instance.scrollLeft,\n        y: instance.scrollTop,\n    }),\n    defaultParent: () => {\n        if (!rootProjectionNode.current) {\n            const documentNode = new DocumentProjectionNode({});\n            documentNode.mount(window);\n            documentNode.setOptions({ layoutScroll: true });\n            rootProjectionNode.current = documentNode;\n        }\n        return rootProjectionNode.current;\n    },\n    resetTransform: (instance, value) => {\n        instance.style.transform = value !== undefined ? value : \"none\";\n    },\n    checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\"),\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n//# sourceMappingURL=HTMLProjectionNode.mjs.map\n","import { isControllingVariants, isVariantLabel } from 'motion-dom';\n\nfunction getCurrentTreeVariants(props, context) {\n    if (isControllingVariants(props)) {\n        const { initial, animate } = props;\n        return {\n            initial: initial === false || isVariantLabel(initial)\n                ? initial\n                : undefined,\n            animate: isVariantLabel(animate) ? animate : undefined,\n        };\n    }\n    return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n//# sourceMappingURL=utils.mjs.map\n","\"use client\";\nimport { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n    const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n    return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n    return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n//# sourceMappingURL=create.mjs.map\n","const createHtmlRenderState = () => ({\n    style: {},\n    transform: {},\n    transformOrigin: {},\n    vars: {},\n});\n\nexport { createHtmlRenderState };\n//# sourceMappingURL=create-render-state.mjs.map\n","\"use client\";\nimport { isMotionValue, isForcedMotionValue, buildHTMLStyles } from 'motion-dom';\nimport { useMemo } from 'react';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n    for (const key in source) {\n        if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n            target[key] = source[key];\n        }\n    }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState) {\n    return useMemo(() => {\n        const state = createHtmlRenderState();\n        buildHTMLStyles(state, visualState, transformTemplate);\n        return Object.assign({}, state.vars, state.style);\n    }, [visualState]);\n}\nfunction useStyle(props, visualState) {\n    const styleProp = props.style || {};\n    const style = {};\n    /**\n     * Copy non-Motion Values straight into style\n     */\n    copyRawValuesOnly(style, styleProp, props);\n    Object.assign(style, useInitialMotionValues(props, visualState));\n    return style;\n}\nfunction useHTMLProps(props, visualState) {\n    // The `any` isn't ideal but it is the type of createElement props argument\n    const htmlProps = {};\n    const style = useStyle(props, visualState);\n    if (props.drag && props.dragListener !== false) {\n        // Disable the ghost element when a user drags\n        htmlProps.draggable = false;\n        // Disable text selection\n        style.userSelect =\n            style.WebkitUserSelect =\n                style.WebkitTouchCallout =\n                    \"none\";\n        // Disable scrolling on the draggable direction\n        style.touchAction =\n            props.drag === true\n                ? \"none\"\n                : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n    }\n    if (props.tabIndex === undefined &&\n        (props.onTap || props.onTapStart || props.whileTap)) {\n        htmlProps.tabIndex = 0;\n    }\n    htmlProps.style = style;\n    return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n//# sourceMappingURL=use-props.mjs.map\n","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n    ...createHtmlRenderState(),\n    attrs: {},\n});\n\nexport { createSvgRenderState };\n//# sourceMappingURL=create-render-state.mjs.map\n","\"use client\";\nimport { buildSVGAttrs, isSVGTag } from 'motion-dom';\nimport { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\n\nfunction useSVGProps(props, visualState, _isStatic, Component) {\n    const visualProps = useMemo(() => {\n        const state = createSvgRenderState();\n        buildSVGAttrs(state, visualState, isSVGTag(Component), props.transformTemplate, props.style);\n        return {\n            ...state.attrs,\n            style: { ...state.style },\n        };\n    }, [visualState]);\n    if (props.style) {\n        const rawStyles = {};\n        copyRawValuesOnly(rawStyles, props.style, props);\n        visualProps.style = { ...rawStyles, ...visualProps.style };\n    }\n    return visualProps;\n}\n\nexport { useSVGProps };\n//# sourceMappingURL=use-props.mjs.map\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n    \"animate\",\n    \"exit\",\n    \"variants\",\n    \"initial\",\n    \"style\",\n    \"values\",\n    \"variants\",\n    \"transition\",\n    \"transformTemplate\",\n    \"custom\",\n    \"inherit\",\n    \"onBeforeLayoutMeasure\",\n    \"onAnimationStart\",\n    \"onAnimationComplete\",\n    \"onUpdate\",\n    \"onDragStart\",\n    \"onDrag\",\n    \"onDragEnd\",\n    \"onMeasureDragConstraints\",\n    \"onDirectionLock\",\n    \"onDragTransitionEnd\",\n    \"_dragX\",\n    \"_dragY\",\n    \"onHoverStart\",\n    \"onHoverEnd\",\n    \"onViewportEnter\",\n    \"onViewportLeave\",\n    \"globalTapTarget\",\n    \"propagate\",\n    \"ignoreStrict\",\n    \"viewport\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n    return (key.startsWith(\"while\") ||\n        (key.startsWith(\"drag\") && key !== \"draggable\") ||\n        key.startsWith(\"layout\") ||\n        key.startsWith(\"onTap\") ||\n        key.startsWith(\"onPan\") ||\n        key.startsWith(\"onLayout\") ||\n        validMotionProps.has(key));\n}\n\nexport { isValidMotionProp };\n//# sourceMappingURL=valid-prop.mjs.map\n","import { isMotionValue } from 'motion-dom';\nimport { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n    if (typeof isValidProp !== \"function\")\n        return;\n    // Explicitly filter our events\n    shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n    /**\n     * We attempt to import this package but require won't be defined in esm environments, in that case\n     * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n     * in favour of explicit injection.\n     *\n     * String concatenation prevents bundlers like webpack (e.g. Storybook)\n     * from statically resolving this optional dependency at build time.\n     */\n    const emotionPkg = \"@emotion/is-prop-\" + \"valid\";\n    loadExternalIsValidProp(require(emotionPkg).default);\n}\ncatch {\n    // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n    const filteredProps = {};\n    for (const key in props) {\n        /**\n         * values is considered a valid prop by Emotion, so if it's present\n         * this will be rendered out to the DOM unless explicitly filtered.\n         *\n         * We check the type as it could be used with the `feColorMatrix`\n         * element, which we support.\n         */\n        if (key === \"values\" && typeof props.values === \"object\")\n            continue;\n        if (isMotionValue(props[key]))\n            continue;\n        if (shouldForward(key) ||\n            (forwardMotionProps === true && isValidMotionProp(key)) ||\n            (!isDom && !isValidMotionProp(key)) ||\n            // If trying to use native HTML drag events, forward drag listeners\n            (props[\"draggable\"] &&\n                key.startsWith(\"onDrag\"))) {\n            filteredProps[key] =\n                props[key];\n        }\n    }\n    return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n//# sourceMappingURL=filter-props.mjs.map\n","/**\n * We keep these listed separately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst lowercaseSVGElements = [\n    \"animate\",\n    \"circle\",\n    \"defs\",\n    \"desc\",\n    \"ellipse\",\n    \"g\",\n    \"image\",\n    \"line\",\n    \"filter\",\n    \"marker\",\n    \"mask\",\n    \"metadata\",\n    \"path\",\n    \"pattern\",\n    \"polygon\",\n    \"polyline\",\n    \"rect\",\n    \"stop\",\n    \"switch\",\n    \"symbol\",\n    \"svg\",\n    \"text\",\n    \"tspan\",\n    \"use\",\n    \"view\",\n];\n\nexport { lowercaseSVGElements };\n//# sourceMappingURL=lowercase-elements.mjs.map\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n    if (\n    /**\n     * If it's not a string, it's a custom React component. Currently we only support\n     * HTML custom React components.\n     */\n    typeof Component !== \"string\" ||\n        /**\n         * If it contains a dash, the element is a custom HTML webcomponent.\n         */\n        Component.includes(\"-\")) {\n        return false;\n    }\n    else if (\n    /**\n     * If it's in our list of lowercase SVG tags, it's an SVG component\n     */\n    lowercaseSVGElements.indexOf(Component) > -1 ||\n        /**\n         * If it contains a capital letter, it's an SVG component\n         */\n        /[A-Z]/u.test(Component)) {\n        return true;\n    }\n    return false;\n}\n\nexport { isSVGComponent };\n//# sourceMappingURL=is-svg-component.mjs.map\n","\"use client\";\nimport { isMotionValue } from 'motion-dom';\nimport { Fragment, useMemo, createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.mjs';\nimport { useSVGProps } from '../svg/use-props.mjs';\nimport { filterProps } from './utils/filter-props.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nfunction useRender(Component, props, ref, { latestValues, }, isStatic, forwardMotionProps = false, isSVG) {\n    const useVisualProps = (isSVG ?? isSVGComponent(Component)) ? useSVGProps : useHTMLProps;\n    const visualProps = useVisualProps(props, latestValues, isStatic, Component);\n    const filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n    const elementProps = Component !== Fragment ? { ...filteredProps, ...visualProps, ref } : {};\n    /**\n     * If component has been handed a motion value as its child,\n     * memoise its initial value and render that. Subsequent updates\n     * will be handled by the onChange handler\n     */\n    const { children } = props;\n    const renderedChildren = useMemo(() => (isMotionValue(children) ? children.get() : children), [children]);\n    return createElement(Component, {\n        ...elementProps,\n        children: renderedChildren,\n    });\n}\n\nexport { useRender };\n//# sourceMappingURL=use-render.mjs.map\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = \n/* @__PURE__ */ createContext(null);\n\nexport { PresenceContext };\n//# sourceMappingURL=PresenceContext.mjs.map\n","\"use client\";\nimport { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n    const ref = useRef(null);\n    if (ref.current === null) {\n        ref.current = init();\n    }\n    return ref.current;\n}\n\nexport { useConstant };\n//# sourceMappingURL=use-constant.mjs.map\n","\"use client\";\nimport { resolveMotionValue, isControllingVariants, isVariantNode, isAnimationControls, resolveVariantFromProps } from 'motion-dom';\nimport { useContext } from 'react';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, }, props, context, presenceContext) {\n    const state = {\n        latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n        renderState: createRenderState(),\n    };\n    return state;\n}\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n    const values = {};\n    const motionValues = scrapeMotionValues(props, {});\n    for (const key in motionValues) {\n        values[key] = resolveMotionValue(motionValues[key]);\n    }\n    let { initial, animate } = props;\n    const isControllingVariants$1 = isControllingVariants(props);\n    const isVariantNode$1 = isVariantNode(props);\n    if (context &&\n        isVariantNode$1 &&\n        !isControllingVariants$1 &&\n        props.inherit !== false) {\n        if (initial === undefined)\n            initial = context.initial;\n        if (animate === undefined)\n            animate = context.animate;\n    }\n    let isInitialAnimationBlocked = presenceContext\n        ? presenceContext.initial === false\n        : false;\n    isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n    const variantToSet = isInitialAnimationBlocked ? animate : initial;\n    if (variantToSet &&\n        typeof variantToSet !== \"boolean\" &&\n        !isAnimationControls(variantToSet)) {\n        const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n        for (let i = 0; i < list.length; i++) {\n            const resolved = resolveVariantFromProps(props, list[i]);\n            if (resolved) {\n                const { transitionEnd, transition, ...target } = resolved;\n                for (const key in target) {\n                    let valueTarget = target[key];\n                    if (Array.isArray(valueTarget)) {\n                        /**\n                         * Take final keyframe if the initial animation is blocked because\n                         * we want to initialise at the end of that blocked animation.\n                         */\n                        const index = isInitialAnimationBlocked\n                            ? valueTarget.length - 1\n                            : 0;\n                        valueTarget = valueTarget[index];\n                    }\n                    if (valueTarget !== null) {\n                        values[key] = valueTarget;\n                    }\n                }\n                for (const key in transitionEnd) {\n                    values[key] = transitionEnd[key];\n                }\n            }\n        }\n    }\n    return values;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n    const context = useContext(MotionContext);\n    const presenceContext = useContext(PresenceContext);\n    const make = () => makeState(config, props, context, presenceContext);\n    return isStatic ? make() : useConstant(make);\n};\n\nexport { makeUseVisualState };\n//# sourceMappingURL=use-visual-state.mjs.map\n","\"use client\";\nimport { scrapeHTMLMotionValuesFromProps } from 'motion-dom';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst useHTMLVisualState = /*@__PURE__*/ makeUseVisualState({\n    scrapeMotionValuesFromProps: scrapeHTMLMotionValuesFromProps,\n    createRenderState: createHtmlRenderState,\n});\n\nexport { useHTMLVisualState };\n//# sourceMappingURL=use-html-visual-state.mjs.map\n","\"use client\";\nimport { scrapeSVGMotionValuesFromProps } from 'motion-dom';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\n\nconst useSVGVisualState = /*@__PURE__*/ makeUseVisualState({\n    scrapeMotionValuesFromProps: scrapeSVGMotionValuesFromProps,\n    createRenderState: createSvgRenderState,\n});\n\nexport { useSVGVisualState };\n//# sourceMappingURL=use-svg-visual-state.mjs.map\n","import { getFeatureDefinitions, setFeatureDefinitions } from 'motion-dom';\n\nconst featureProps = {\n    animation: [\n        \"animate\",\n        \"variants\",\n        \"whileHover\",\n        \"whileTap\",\n        \"exit\",\n        \"whileInView\",\n        \"whileFocus\",\n        \"whileDrag\",\n    ],\n    exit: [\"exit\"],\n    drag: [\"drag\", \"dragControls\"],\n    focus: [\"whileFocus\"],\n    hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n    tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n    pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n    inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n    layout: [\"layout\", \"layoutId\"],\n};\nlet isInitialized = false;\n/**\n * Initialize feature definitions with isEnabled checks.\n * This must be called before any motion components are rendered.\n */\nfunction initFeatureDefinitions() {\n    if (isInitialized)\n        return;\n    const initialFeatureDefinitions = {};\n    for (const key in featureProps) {\n        initialFeatureDefinitions[key] = {\n            isEnabled: (props) => featureProps[key].some((name) => !!props[name]),\n        };\n    }\n    setFeatureDefinitions(initialFeatureDefinitions);\n    isInitialized = true;\n}\n/**\n * Get the current feature definitions, initializing if needed.\n */\nfunction getInitializedFeatureDefinitions() {\n    initFeatureDefinitions();\n    return getFeatureDefinitions();\n}\n\nexport { getInitializedFeatureDefinitions, initFeatureDefinitions };\n//# sourceMappingURL=definitions.mjs.map\n","import { setFeatureDefinitions } from 'motion-dom';\nimport { getInitializedFeatureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n    const featureDefinitions = getInitializedFeatureDefinitions();\n    for (const key in features) {\n        featureDefinitions[key] = {\n            ...featureDefinitions[key],\n            ...features[key],\n        };\n    }\n    setFeatureDefinitions(featureDefinitions);\n}\n\nexport { loadFeatures };\n//# sourceMappingURL=load-features.mjs.map\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n//# sourceMappingURL=symbol.mjs.map\n","\"use client\";\nimport { useRef, useInsertionEffect, useCallback } from 'react';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n    /**\n     * Store externalRef in a ref to avoid including it in the useCallback\n     * dependency array. Including externalRef in dependencies causes issues\n     * with libraries like Radix UI that create new callback refs on each render\n     * when using asChild - this would cause the callback to be recreated,\n     * triggering element remounts and breaking AnimatePresence exit animations.\n     */\n    const externalRefContainer = useRef(externalRef);\n    useInsertionEffect(() => {\n        externalRefContainer.current = externalRef;\n    });\n    // Store cleanup function returned by callback refs (React 19 feature)\n    const refCleanup = useRef(null);\n    return useCallback((instance) => {\n        if (instance) {\n            visualState.onMount?.(instance);\n        }\n        if (visualElement) {\n            instance ? visualElement.mount(instance) : visualElement.unmount();\n        }\n        const ref = externalRefContainer.current;\n        if (typeof ref === \"function\") {\n            if (instance) {\n                const cleanup = ref(instance);\n                if (typeof cleanup === \"function\") {\n                    refCleanup.current = cleanup;\n                }\n            }\n            else if (refCleanup.current) {\n                refCleanup.current();\n                refCleanup.current = null;\n            }\n            else {\n                ref(instance);\n            }\n        }\n        else if (ref) {\n            ref.current = instance;\n        }\n    }, [visualElement]);\n}\n\nexport { useMotionRef };\n//# sourceMappingURL=use-motion-ref.mjs.map\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n//# sourceMappingURL=SwitchLayoutGroupContext.mjs.map\n","function isRefObject(ref) {\n    return (ref &&\n        typeof ref === \"object\" &&\n        Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n//# sourceMappingURL=is-ref-object.mjs.map\n","\"use client\";\nimport { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n//# sourceMappingURL=use-isomorphic-effect.mjs.map\n","const isBrowser = typeof window !== \"undefined\";\n\nexport { isBrowser };\n//# sourceMappingURL=is-browser.mjs.map\n","\"use client\";\nimport { optimizedAppearDataAttribute } from 'motion-dom';\nimport { useContext, useRef, useInsertionEffect, useEffect } from 'react';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../context/SwitchLayoutGroupContext.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement, ProjectionNodeConstructor, isSVG) {\n    const { visualElement: parent } = useContext(MotionContext);\n    const lazyContext = useContext(LazyContext);\n    const presenceContext = useContext(PresenceContext);\n    const motionConfig = useContext(MotionConfigContext);\n    const reducedMotionConfig = motionConfig.reducedMotion;\n    const skipAnimations = motionConfig.skipAnimations;\n    const visualElementRef = useRef(null);\n    /**\n     * Track whether the component has been through React's commit phase.\n     * Used to detect when LazyMotion features load after the component has mounted.\n     */\n    const hasMountedOnce = useRef(false);\n    /**\n     * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n     */\n    createVisualElement =\n        createVisualElement ||\n            lazyContext.renderer;\n    if (!visualElementRef.current && createVisualElement) {\n        visualElementRef.current = createVisualElement(Component, {\n            visualState,\n            parent,\n            props,\n            presenceContext,\n            blockInitialAnimation: presenceContext\n                ? presenceContext.initial === false\n                : false,\n            reducedMotionConfig,\n            skipAnimations,\n            isSVG,\n        });\n        /**\n         * If the component has already mounted before features loaded (e.g. via\n         * LazyMotion with async feature loading), we need to force the initial\n         * animation to run. Otherwise state changes that occurred before features\n         * loaded will be lost and the element will snap to its final state.\n         */\n        if (hasMountedOnce.current && visualElementRef.current) {\n            visualElementRef.current.manuallyAnimateOnMount = true;\n        }\n    }\n    const visualElement = visualElementRef.current;\n    /**\n     * Load Motion gesture and animation features. These are rendered as renderless\n     * components so each feature can optionally make use of React lifecycle methods.\n     */\n    const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n    if (visualElement &&\n        !visualElement.projection &&\n        ProjectionNodeConstructor &&\n        (visualElement.type === \"html\" || visualElement.type === \"svg\")) {\n        createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);\n    }\n    const isMounted = useRef(false);\n    useInsertionEffect(() => {\n        /**\n         * Check the component has already mounted before calling\n         * `update` unnecessarily. This ensures we skip the initial update.\n         */\n        if (visualElement && isMounted.current) {\n            visualElement.update(props, presenceContext);\n        }\n    });\n    /**\n     * Cache this value as we want to know whether HandoffAppearAnimations\n     * was present on initial render - it will be deleted after this.\n     */\n    const optimisedAppearId = props[optimizedAppearDataAttribute];\n    const wantsHandoff = useRef(Boolean(optimisedAppearId) &&\n        typeof window !== \"undefined\" &&\n        !window.MotionHandoffIsComplete?.(optimisedAppearId) &&\n        window.MotionHasOptimisedAnimation?.(optimisedAppearId));\n    useIsomorphicLayoutEffect(() => {\n        /**\n         * Track that this component has mounted. This is used to detect when\n         * LazyMotion features load after the component has already committed.\n         */\n        hasMountedOnce.current = true;\n        if (!visualElement)\n            return;\n        isMounted.current = true;\n        window.MotionIsMounted = true;\n        visualElement.updateFeatures();\n        visualElement.scheduleRenderMicrotask();\n        /**\n         * Ideally this function would always run in a useEffect.\n         *\n         * However, if we have optimised appear animations to handoff from,\n         * it needs to happen synchronously to ensure there's no flash of\n         * incorrect styles in the event of a hydration error.\n         *\n         * So if we detect a situtation where optimised appear animations\n         * are running, we use useLayoutEffect to trigger animations.\n         */\n        if (wantsHandoff.current && visualElement.animationState) {\n            visualElement.animationState.animateChanges();\n        }\n    });\n    useEffect(() => {\n        if (!visualElement)\n            return;\n        if (!wantsHandoff.current && visualElement.animationState) {\n            visualElement.animationState.animateChanges();\n        }\n        if (wantsHandoff.current) {\n            // This ensures all future calls to animateChanges() in this component will run in useEffect\n            queueMicrotask(() => {\n                window.MotionHandoffMarkAsComplete?.(optimisedAppearId);\n            });\n            wantsHandoff.current = false;\n        }\n        /**\n         * Now we've finished triggering animations for this element we\n         * can wipe the enteringChildren set for the next render.\n         */\n        visualElement.enteringChildren = undefined;\n    });\n    return visualElement;\n}\nfunction createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {\n    const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, layoutAnchor, layoutCrossfade, } = props;\n    visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props[\"data-framer-portal-id\"]\n        ? undefined\n        : getClosestProjectingNode(visualElement.parent));\n    visualElement.projection.setOptions({\n        layoutId,\n        layout,\n        alwaysMeasureLayout: Boolean(drag) || (dragConstraints && isRefObject(dragConstraints)),\n        visualElement,\n        /**\n         * TODO: Update options in an effect. This could be tricky as it'll be too late\n         * to update by the time layout animations run.\n         * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n         * ensuring it gets called if there's no potential layout animations.\n         *\n         */\n        animationType: typeof layout === \"string\" ? layout : \"both\",\n        initialPromotionConfig,\n        crossfade: layoutCrossfade,\n        layoutScroll,\n        layoutRoot,\n        layoutAnchor,\n    });\n}\nfunction getClosestProjectingNode(visualElement) {\n    if (!visualElement)\n        return undefined;\n    return visualElement.options.allowProjection !== false\n        ? visualElement.projection\n        : getClosestProjectingNode(visualElement.parent);\n}\n\nexport { useVisualElement };\n//# sourceMappingURL=use-visual-element.mjs.map\n","\"use client\";\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { warning, invariant } from 'motion-utils';\nimport { forwardRef, useContext } from 'react';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { useRender } from '../render/dom/use-render.mjs';\nimport { isSVGComponent } from '../render/dom/utils/is-svg-component.mjs';\nimport { useHTMLVisualState } from '../render/html/use-html-visual-state.mjs';\nimport { useSVGVisualState } from '../render/svg/use-svg-visual-state.mjs';\nimport { getInitializedFeatureDefinitions } from './features/definitions.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createMotionComponent(Component, { forwardMotionProps = false, type } = {}, preloadedFeatures, createVisualElement) {\n    preloadedFeatures && loadFeatures(preloadedFeatures);\n    /**\n     * Determine whether to use SVG or HTML rendering based on:\n     * 1. Explicit `type` option (highest priority)\n     * 2. Auto-detection via `isSVGComponent`\n     */\n    const isSVG = type ? type === \"svg\" : isSVGComponent(Component);\n    const useVisualState = isSVG ? useSVGVisualState : useHTMLVisualState;\n    function MotionDOMComponent(props, externalRef) {\n        /**\n         * If we need to measure the element we load this functionality in a\n         * separate class component in order to gain access to getSnapshotBeforeUpdate.\n         */\n        let MeasureLayout;\n        const configAndProps = {\n            ...useContext(MotionConfigContext),\n            ...props,\n            layoutId: useLayoutId(props),\n        };\n        const { isStatic } = configAndProps;\n        const context = useCreateMotionContext(props);\n        const visualState = useVisualState(props, isStatic);\n        if (!isStatic && typeof window !== \"undefined\") {\n            useStrictMode(configAndProps, preloadedFeatures);\n            const layoutProjection = getProjectionFunctionality(configAndProps);\n            MeasureLayout = layoutProjection.MeasureLayout;\n            /**\n             * Create a VisualElement for this component. A VisualElement provides a common\n             * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n             * providing a way of rendering to these APIs outside of the React render loop\n             * for more performant animations and interactions\n             */\n            context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement, layoutProjection.ProjectionNode, isSVG);\n        }\n        /**\n         * The mount order and hierarchy is specific to ensure our element ref\n         * is hydrated by the time features fire their effects.\n         */\n        return (jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout && context.visualElement ? (jsx(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null, useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, forwardMotionProps, isSVG)] }));\n    }\n    MotionDOMComponent.displayName = `motion.${typeof Component === \"string\"\n        ? Component\n        : `create(${Component.displayName ?? Component.name ?? \"\"})`}`;\n    const ForwardRefMotionComponent = forwardRef(MotionDOMComponent);\n    ForwardRefMotionComponent[motionComponentSymbol] = Component;\n    return ForwardRefMotionComponent;\n}\nfunction useLayoutId({ layoutId }) {\n    const layoutGroupId = useContext(LayoutGroupContext).id;\n    return layoutGroupId && layoutId !== undefined\n        ? layoutGroupId + \"-\" + layoutId\n        : layoutId;\n}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n    const isStrict = useContext(LazyContext).strict;\n    /**\n     * If we're in development mode, check to make sure we're not rendering a motion component\n     * as a child of LazyMotion, as this will break the file-size benefits of using it.\n     */\n    if (process.env.NODE_ENV !== \"production\" &&\n        preloadedFeatures &&\n        isStrict) {\n        const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n        configAndProps.ignoreStrict\n            ? warning(false, strictMessage, \"lazy-strict-mode\")\n            : invariant(false, strictMessage, \"lazy-strict-mode\");\n    }\n}\nfunction getProjectionFunctionality(props) {\n    const featureDefinitions = getInitializedFeatureDefinitions();\n    const { drag, layout } = featureDefinitions;\n    if (!drag && !layout)\n        return {};\n    const combined = { ...drag, ...layout };\n    return {\n        MeasureLayout: drag?.isEnabled(props) || layout?.isEnabled(props)\n            ? combined.MeasureLayout\n            : undefined,\n        ProjectionNode: combined.ProjectionNode,\n    };\n}\n\nexport { createMotionComponent };\n//# sourceMappingURL=index.mjs.map\n","import { SVGVisualElement, HTMLVisualElement } from 'motion-dom';\nimport { Fragment } from 'react';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n    /**\n     * Use explicit isSVG override if provided, otherwise auto-detect\n     */\n    const isSVG = options.isSVG ?? isSVGComponent(Component);\n    return isSVG\n        ? new SVGVisualElement(options)\n        : new HTMLVisualElement(options, {\n            allowProjection: Component !== Fragment,\n        });\n};\n\nexport { createDomVisualElement };\n//# sourceMappingURL=create-visual-element.mjs.map\n","import { Feature, createAnimationState, isAnimationControls } from 'motion-dom';\n\nclass AnimationFeature extends Feature {\n    /**\n     * We dynamically generate the AnimationState manager as it contains a reference\n     * to the underlying animation library. We only want to load that if we load this,\n     * so people can optionally code split it out using the `m` component.\n     */\n    constructor(node) {\n        super(node);\n        node.animationState || (node.animationState = createAnimationState(node));\n    }\n    updateAnimationControlsSubscription() {\n        const { animate } = this.node.getProps();\n        if (isAnimationControls(animate)) {\n            this.unmountControls = animate.subscribe(this.node);\n        }\n    }\n    /**\n     * Subscribe any provided AnimationControls to the component's VisualElement\n     */\n    mount() {\n        this.updateAnimationControlsSubscription();\n    }\n    update() {\n        const { animate } = this.node.getProps();\n        const { animate: prevAnimate } = this.node.prevProps || {};\n        if (animate !== prevAnimate) {\n            this.updateAnimationControlsSubscription();\n        }\n    }\n    unmount() {\n        this.node.animationState.reset();\n        this.unmountControls?.();\n    }\n}\n\nexport { AnimationFeature };\n//# sourceMappingURL=index.mjs.map\n","import { Feature, resolveVariant } from 'motion-dom';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n    constructor() {\n        super(...arguments);\n        this.id = id++;\n        this.isExitComplete = false;\n    }\n    update() {\n        if (!this.node.presenceContext)\n            return;\n        const { isPresent, onExitComplete } = this.node.presenceContext;\n        const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n        if (!this.node.animationState || isPresent === prevIsPresent) {\n            return;\n        }\n        if (isPresent && prevIsPresent === false) {\n            /**\n             * When re-entering, if the exit animation already completed\n             * (element is at rest), reset to initial values so the enter\n             * animation replays from the correct position.\n             */\n            if (this.isExitComplete) {\n                const { initial, custom } = this.node.getProps();\n                if (typeof initial === \"string\" ||\n                    (typeof initial === \"object\" &&\n                        initial !== null &&\n                        !Array.isArray(initial))) {\n                    const resolved = resolveVariant(this.node, initial, custom);\n                    if (resolved) {\n                        const { transition, transitionEnd, ...target } = resolved;\n                        for (const key in target) {\n                            this.node\n                                .getValue(key)\n                                ?.jump(target[key]);\n                        }\n                    }\n                }\n                this.node.animationState.reset();\n                this.node.animationState.animateChanges();\n            }\n            else {\n                this.node.animationState.setActive(\"exit\", false);\n            }\n            this.isExitComplete = false;\n            return;\n        }\n        const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent);\n        if (onExitComplete && !isPresent) {\n            exitAnimation.then(() => {\n                this.isExitComplete = true;\n                onExitComplete(this.id);\n            });\n        }\n    }\n    mount() {\n        const { register, onExitComplete } = this.node.presenceContext || {};\n        if (onExitComplete) {\n            onExitComplete(this.id);\n        }\n        if (register) {\n            this.unmount = register(this.id);\n        }\n    }\n    unmount() { }\n}\n\nexport { ExitAnimationFeature };\n//# sourceMappingURL=exit.mjs.map\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n    animation: {\n        Feature: AnimationFeature,\n    },\n    exit: {\n        Feature: ExitAnimationFeature,\n    },\n};\n\nexport { animations };\n//# sourceMappingURL=animations.mjs.map\n","import { isPrimaryPointer } from 'motion-dom';\n\nfunction extractEventInfo(event) {\n    return {\n        point: {\n            x: event.pageX,\n            y: event.pageY,\n        },\n    };\n}\nconst addPointerInfo = (handler) => (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n\nexport { addPointerInfo, extractEventInfo };\n//# sourceMappingURL=event-info.mjs.map\n","import { addDomEvent } from 'motion-dom';\nimport { addPointerInfo } from './event-info.mjs';\n\nfunction addPointerEvent(target, eventName, handler, options) {\n    return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\nexport { addPointerEvent };\n//# sourceMappingURL=add-pointer-event.mjs.map\n","// Fixes https://github.com/motiondivision/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n    return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n//# sourceMappingURL=get-context-window.mjs.map\n","const distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n    // Multi-dimensional\n    const xDelta = distance(a.x, b.x);\n    const yDelta = distance(a.y, b.y);\n    return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\nexport { distance, distance2D };\n//# sourceMappingURL=distance.mjs.map\n","import { frameData, frame, isPrimaryPointer, cancelFrame } from 'motion-dom';\nimport { pipe, secondsToMilliseconds, millisecondsToSeconds } from 'motion-utils';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\n\nconst overflowStyles = /*#__PURE__*/ new Set([\"auto\", \"scroll\"]);\n/**\n * @internal\n */\nclass PanSession {\n    constructor(event, handlers, { transformPagePoint, contextWindow = window, dragSnapToOrigin = false, distanceThreshold = 3, element, } = {}) {\n        /**\n         * @internal\n         */\n        this.startEvent = null;\n        /**\n         * @internal\n         */\n        this.lastMoveEvent = null;\n        /**\n         * @internal\n         */\n        this.lastMoveEventInfo = null;\n        /**\n         * Raw (untransformed) event info, re-transformed each frame\n         * so transformPagePoint sees the current parent matrix.\n         * @internal\n         */\n        this.lastRawMoveEventInfo = null;\n        /**\n         * @internal\n         */\n        this.handlers = {};\n        /**\n         * @internal\n         */\n        this.contextWindow = window;\n        /**\n         * Scroll positions of scrollable ancestors and window.\n         * @internal\n         */\n        this.scrollPositions = new Map();\n        /**\n         * Cleanup function for scroll listeners.\n         * @internal\n         */\n        this.removeScrollListeners = null;\n        this.onElementScroll = (event) => {\n            this.handleScroll(event.target);\n        };\n        this.onWindowScroll = () => {\n            this.handleScroll(window);\n        };\n        this.updatePoint = () => {\n            if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n                return;\n            // Re-transform raw point through current transformPagePoint so\n            // animated parent transforms (e.g. rotation) are picked up each frame\n            if (this.lastRawMoveEventInfo) {\n                this.lastMoveEventInfo = transformPoint(this.lastRawMoveEventInfo, this.transformPagePoint);\n            }\n            const info = getPanInfo(this.lastMoveEventInfo, this.history);\n            const isPanStarted = this.startEvent !== null;\n            // Only start panning if the offset is larger than 3 pixels. If we make it\n            // any larger than this we'll want to reset the pointer history\n            // on the first update to avoid visual snapping to the cursor.\n            const isDistancePastThreshold = distance2D(info.offset, { x: 0, y: 0 }) >= this.distanceThreshold;\n            if (!isPanStarted && !isDistancePastThreshold)\n                return;\n            const { point } = info;\n            const { timestamp } = frameData;\n            this.history.push({ ...point, timestamp });\n            const { onStart, onMove } = this.handlers;\n            if (!isPanStarted) {\n                onStart && onStart(this.lastMoveEvent, info);\n                this.startEvent = this.lastMoveEvent;\n            }\n            onMove && onMove(this.lastMoveEvent, info);\n        };\n        this.handlePointerMove = (event, info) => {\n            this.lastMoveEvent = event;\n            this.lastRawMoveEventInfo = info;\n            this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n            // Throttle mouse move event to once per frame\n            frame.update(this.updatePoint, true);\n        };\n        this.handlePointerUp = (event, info) => {\n            this.end();\n            const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n            // Resume animation if dragSnapToOrigin is set OR if no drag started (user just clicked)\n            // This ensures constraint animations continue when interrupted by a click\n            if (this.dragSnapToOrigin || !this.startEvent) {\n                resumeAnimation && resumeAnimation();\n            }\n            if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n                return;\n            const panInfo = getPanInfo(event.type === \"pointercancel\"\n                ? this.lastMoveEventInfo\n                : transformPoint(info, this.transformPagePoint), this.history);\n            if (this.startEvent && onEnd) {\n                onEnd(event, panInfo);\n            }\n            onSessionEnd && onSessionEnd(event, panInfo);\n        };\n        // If we have more than one touch, don't start detecting this gesture\n        if (!isPrimaryPointer(event))\n            return;\n        this.dragSnapToOrigin = dragSnapToOrigin;\n        this.handlers = handlers;\n        this.transformPagePoint = transformPagePoint;\n        this.distanceThreshold = distanceThreshold;\n        this.contextWindow = contextWindow || window;\n        const info = extractEventInfo(event);\n        const initialInfo = transformPoint(info, this.transformPagePoint);\n        const { point } = initialInfo;\n        const { timestamp } = frameData;\n        this.history = [{ ...point, timestamp }];\n        const { onSessionStart } = handlers;\n        onSessionStart &&\n            onSessionStart(event, getPanInfo(initialInfo, this.history));\n        // Listen in the capture phase so a descendant calling\n        // stopPropagation() (e.g. in its own pointerup handler) can't\n        // prevent the gesture from ending. See #2794.\n        const eventOptions = { passive: true, capture: true };\n        this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove, eventOptions), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp, eventOptions), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp, eventOptions));\n        // Start scroll tracking if element provided\n        if (element) {\n            this.startScrollTracking(element);\n        }\n    }\n    /**\n     * Start tracking scroll on ancestors and window.\n     */\n    startScrollTracking(element) {\n        // Store initial scroll positions for scrollable ancestors\n        let current = element.parentElement;\n        while (current) {\n            const style = getComputedStyle(current);\n            if (overflowStyles.has(style.overflowX) ||\n                overflowStyles.has(style.overflowY)) {\n                this.scrollPositions.set(current, {\n                    x: current.scrollLeft,\n                    y: current.scrollTop,\n                });\n            }\n            current = current.parentElement;\n        }\n        // Track window scroll\n        this.scrollPositions.set(window, {\n            x: window.scrollX,\n            y: window.scrollY,\n        });\n        // Capture listener catches element scroll events as they bubble\n        window.addEventListener(\"scroll\", this.onElementScroll, {\n            capture: true,\n        });\n        // Direct window scroll listener (window scroll doesn't bubble)\n        window.addEventListener(\"scroll\", this.onWindowScroll);\n        this.removeScrollListeners = () => {\n            window.removeEventListener(\"scroll\", this.onElementScroll, {\n                capture: true,\n            });\n            window.removeEventListener(\"scroll\", this.onWindowScroll);\n        };\n    }\n    /**\n     * Handle scroll compensation during drag.\n     *\n     * For element scroll: adjusts history origin since pageX/pageY doesn't change.\n     * For window scroll: adjusts lastMoveEventInfo since pageX/pageY would change.\n     */\n    handleScroll(target) {\n        const initial = this.scrollPositions.get(target);\n        if (!initial)\n            return;\n        const isWindow = target === window;\n        const current = isWindow\n            ? { x: window.scrollX, y: window.scrollY }\n            : {\n                x: target.scrollLeft,\n                y: target.scrollTop,\n            };\n        const delta = { x: current.x - initial.x, y: current.y - initial.y };\n        if (delta.x === 0 && delta.y === 0)\n            return;\n        if (isWindow) {\n            // Window scroll: pageX/pageY changes, so update lastMoveEventInfo\n            if (this.lastMoveEventInfo) {\n                this.lastMoveEventInfo.point.x += delta.x;\n                this.lastMoveEventInfo.point.y += delta.y;\n            }\n        }\n        else {\n            // Element scroll: pageX/pageY unchanged, so adjust history origin\n            if (this.history.length > 0) {\n                this.history[0].x -= delta.x;\n                this.history[0].y -= delta.y;\n            }\n        }\n        this.scrollPositions.set(target, current);\n        frame.update(this.updatePoint, true);\n    }\n    updateHandlers(handlers) {\n        this.handlers = handlers;\n    }\n    end() {\n        this.removeListeners && this.removeListeners();\n        this.removeScrollListeners && this.removeScrollListeners();\n        this.scrollPositions.clear();\n        cancelFrame(this.updatePoint);\n    }\n}\nfunction transformPoint(info, transformPagePoint) {\n    return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n    return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n    return {\n        point,\n        delta: subtractPoint(point, lastDevicePoint(history)),\n        offset: subtractPoint(point, startDevicePoint(history)),\n        velocity: getVelocity(history, 0.1),\n    };\n}\nfunction startDevicePoint(history) {\n    return history[0];\n}\nfunction lastDevicePoint(history) {\n    return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n    if (history.length < 2) {\n        return { x: 0, y: 0 };\n    }\n    let i = history.length - 1;\n    let timestampedPoint = null;\n    const lastPoint = lastDevicePoint(history);\n    while (i >= 0) {\n        timestampedPoint = history[i];\n        if (lastPoint.timestamp - timestampedPoint.timestamp >\n            secondsToMilliseconds(timeDelta)) {\n            break;\n        }\n        i--;\n    }\n    if (!timestampedPoint) {\n        return { x: 0, y: 0 };\n    }\n    /**\n     * If the selected point is the pointer-down origin (history[0]),\n     * there are better movement points available, and the time gap\n     * is suspiciously large (>2x timeDelta), use the next point instead.\n     * This prevents stale pointer-down points from diluting velocity\n     * in hold-then-flick gestures.\n     */\n    if (timestampedPoint === history[0] &&\n        history.length > 2 &&\n        lastPoint.timestamp - timestampedPoint.timestamp >\n            secondsToMilliseconds(timeDelta) * 2) {\n        timestampedPoint = history[1];\n    }\n    const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n    if (time === 0) {\n        return { x: 0, y: 0 };\n    }\n    const currentVelocity = {\n        x: (lastPoint.x - timestampedPoint.x) / time,\n        y: (lastPoint.y - timestampedPoint.y) / time,\n    };\n    if (currentVelocity.x === Infinity) {\n        currentVelocity.x = 0;\n    }\n    if (currentVelocity.y === Infinity) {\n        currentVelocity.y = 0;\n    }\n    return currentVelocity;\n}\n\nexport { PanSession };\n//# sourceMappingURL=PanSession.mjs.map\n","import { mixNumber, calcLength } from 'motion-dom';\nimport { progress, clamp } from 'motion-utils';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n    if (min !== undefined && point < min) {\n        // If we have a min point defined, and this is outside of that, constrain\n        point = elastic\n            ? mixNumber(min, point, elastic.min)\n            : Math.max(point, min);\n    }\n    else if (max !== undefined && point > max) {\n        // If we have a max point defined, and this is outside of that, constrain\n        point = elastic\n            ? mixNumber(max, point, elastic.max)\n            : Math.min(point, max);\n    }\n    return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n    return {\n        min: min !== undefined ? axis.min + min : undefined,\n        max: max !== undefined\n            ? axis.max + max - (axis.max - axis.min)\n            : undefined,\n    };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n    return {\n        x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n        y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n    };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n    let min = constraintsAxis.min - layoutAxis.min;\n    let max = constraintsAxis.max - layoutAxis.max;\n    // If the constraints axis is actually smaller than the layout axis then we can\n    // flip the constraints\n    if (constraintsAxis.max - constraintsAxis.min <\n        layoutAxis.max - layoutAxis.min) {\n        [min, max] = [max, min];\n    }\n    return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n    return {\n        x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n        y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n    };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n    let origin = 0.5;\n    const sourceLength = calcLength(source);\n    const targetLength = calcLength(target);\n    if (targetLength > sourceLength) {\n        origin = progress(target.min, target.max - sourceLength, source.min);\n    }\n    else if (sourceLength > targetLength) {\n        origin = progress(source.min, source.max - targetLength, target.min);\n    }\n    return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n    const relativeConstraints = {};\n    if (constraints.min !== undefined) {\n        relativeConstraints.min = constraints.min - layout.min;\n    }\n    if (constraints.max !== undefined) {\n        relativeConstraints.max = constraints.max - layout.min;\n    }\n    return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n    if (dragElastic === false) {\n        dragElastic = 0;\n    }\n    else if (dragElastic === true) {\n        dragElastic = defaultElastic;\n    }\n    return {\n        x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n        y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n    };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n    return {\n        min: resolvePointElastic(dragElastic, minLabel),\n        max: resolvePointElastic(dragElastic, maxLabel),\n    };\n}\nfunction resolvePointElastic(dragElastic, label) {\n    return typeof dragElastic === \"number\"\n        ? dragElastic\n        : dragElastic[label] || 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n//# sourceMappingURL=constraints.mjs.map\n","import { createBox, frame, eachAxis, measurePageBox, convertBoxToBoundingBox, convertBoundingBoxToBox, addValueToWillChange, animateMotionValue, mixNumber, addDomEvent, setDragLock, percent, calcLength, resize, isElementTextInput } from 'motion-dom';\nimport { invariant } from 'motion-utils';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\n\nconst elementDragControls = new WeakMap();\nclass VisualElementDragControls {\n    constructor(visualElement) {\n        this.openDragLock = null;\n        this.isDragging = false;\n        this.currentDirection = null;\n        this.originPoint = { x: 0, y: 0 };\n        /**\n         * The permitted boundaries of travel, in pixels.\n         */\n        this.constraints = false;\n        this.hasMutatedConstraints = false;\n        /**\n         * The per-axis resolved elastic values.\n         */\n        this.elastic = createBox();\n        /**\n         * The latest pointer event. Used as fallback when the `cancel` and `stop` functions are called without arguments.\n         */\n        this.latestPointerEvent = null;\n        /**\n         * The latest pan info. Used as fallback when the `cancel` and `stop` functions are called without arguments.\n         */\n        this.latestPanInfo = null;\n        this.visualElement = visualElement;\n    }\n    start(originEvent, { snapToCursor = false, distanceThreshold } = {}) {\n        /**\n         * Don't start dragging if this component is exiting\n         */\n        const { presenceContext } = this.visualElement;\n        if (presenceContext && presenceContext.isPresent === false)\n            return;\n        const onSessionStart = (event) => {\n            if (snapToCursor) {\n                this.snapToCursor(extractEventInfo(event).point);\n            }\n            this.stopAnimation();\n        };\n        const onStart = (event, info) => {\n            // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n            const { drag, dragPropagation, onDragStart } = this.getProps();\n            if (drag && !dragPropagation) {\n                if (this.openDragLock)\n                    this.openDragLock();\n                this.openDragLock = setDragLock(drag);\n                // If we don 't have the lock, don't start dragging\n                if (!this.openDragLock)\n                    return;\n            }\n            this.latestPointerEvent = event;\n            this.latestPanInfo = info;\n            this.isDragging = true;\n            this.currentDirection = null;\n            this.resolveConstraints();\n            if (this.visualElement.projection) {\n                this.visualElement.projection.isAnimationBlocked = true;\n                this.visualElement.projection.target = undefined;\n            }\n            /**\n             * Record gesture origin and pointer offset\n             */\n            eachAxis((axis) => {\n                let current = this.getAxisMotionValue(axis).get() || 0;\n                /**\n                 * If the MotionValue is a percentage value convert to px\n                 */\n                if (percent.test(current)) {\n                    const { projection } = this.visualElement;\n                    if (projection && projection.layout) {\n                        const measuredAxis = projection.layout.layoutBox[axis];\n                        if (measuredAxis) {\n                            const length = calcLength(measuredAxis);\n                            current = length * (parseFloat(current) / 100);\n                        }\n                    }\n                }\n                this.originPoint[axis] = current;\n            });\n            // Fire onDragStart event\n            if (onDragStart) {\n                frame.update(() => onDragStart(event, info), false, true);\n            }\n            addValueToWillChange(this.visualElement, \"transform\");\n            const { animationState } = this.visualElement;\n            animationState && animationState.setActive(\"whileDrag\", true);\n        };\n        const onMove = (event, info) => {\n            this.latestPointerEvent = event;\n            this.latestPanInfo = info;\n            const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n            // If we didn't successfully receive the gesture lock, early return.\n            if (!dragPropagation && !this.openDragLock)\n                return;\n            const { offset } = info;\n            // Attempt to detect drag direction if directionLock is true\n            if (dragDirectionLock && this.currentDirection === null) {\n                this.currentDirection = getCurrentDirection(offset);\n                // If we've successfully set a direction, notify listener\n                if (this.currentDirection !== null) {\n                    onDirectionLock && onDirectionLock(this.currentDirection);\n                }\n                return;\n            }\n            // Update each point with the latest position\n            this.updateAxis(\"x\", info.point, offset);\n            this.updateAxis(\"y\", info.point, offset);\n            /**\n             * Ideally we would leave the renderer to fire naturally at the end of\n             * this frame but if the element is about to change layout as the result\n             * of a re-render we want to ensure the browser can read the latest\n             * bounding box to ensure the pointer and element don't fall out of sync.\n             */\n            this.visualElement.render();\n            /**\n             * This must fire after the render call as it might trigger a state\n             * change which itself might trigger a layout update.\n             */\n            if (onDrag) {\n                frame.update(() => onDrag(event, info), false, true);\n            }\n        };\n        const onSessionEnd = (event, info) => {\n            this.latestPointerEvent = event;\n            this.latestPanInfo = info;\n            this.stop(event, info);\n            this.latestPointerEvent = null;\n            this.latestPanInfo = null;\n        };\n        const resumeAnimation = () => {\n            const { dragSnapToOrigin: snap } = this.getProps();\n            if (snap || this.constraints) {\n                this.startAnimation({ x: 0, y: 0 });\n            }\n        };\n        const { dragSnapToOrigin } = this.getProps();\n        this.panSession = new PanSession(originEvent, {\n            onSessionStart,\n            onStart,\n            onMove,\n            onSessionEnd,\n            resumeAnimation,\n        }, {\n            transformPagePoint: this.visualElement.getTransformPagePoint(),\n            dragSnapToOrigin,\n            distanceThreshold,\n            contextWindow: getContextWindow(this.visualElement),\n            element: this.visualElement.current,\n        });\n    }\n    /**\n     * @internal\n     */\n    stop(event, panInfo) {\n        const finalEvent = event || this.latestPointerEvent;\n        const finalPanInfo = panInfo || this.latestPanInfo;\n        const isDragging = this.isDragging;\n        this.cancel();\n        if (!isDragging || !finalPanInfo || !finalEvent)\n            return;\n        const { velocity } = finalPanInfo;\n        this.startAnimation(velocity);\n        const { onDragEnd } = this.getProps();\n        if (onDragEnd) {\n            frame.postRender(() => onDragEnd(finalEvent, finalPanInfo));\n        }\n    }\n    /**\n     * @internal\n     */\n    cancel() {\n        this.isDragging = false;\n        const { projection, animationState } = this.visualElement;\n        if (projection) {\n            projection.isAnimationBlocked = false;\n        }\n        this.endPanSession();\n        const { dragPropagation } = this.getProps();\n        if (!dragPropagation && this.openDragLock) {\n            this.openDragLock();\n            this.openDragLock = null;\n        }\n        animationState && animationState.setActive(\"whileDrag\", false);\n    }\n    /**\n     * Clean up the pan session without modifying other drag state.\n     * This is used during unmount to ensure event listeners are removed\n     * without affecting projection animations or drag locks.\n     * @internal\n     */\n    endPanSession() {\n        this.panSession && this.panSession.end();\n        this.panSession = undefined;\n    }\n    updateAxis(axis, _point, offset) {\n        const { drag } = this.getProps();\n        // If we're not dragging this axis, do an early return.\n        if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n            return;\n        const axisValue = this.getAxisMotionValue(axis);\n        let next = this.originPoint[axis] + offset[axis];\n        // Apply constraints\n        if (this.constraints && this.constraints[axis]) {\n            next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n        }\n        axisValue.set(next);\n    }\n    resolveConstraints() {\n        const { dragConstraints, dragElastic } = this.getProps();\n        const layout = this.visualElement.projection &&\n            !this.visualElement.projection.layout\n            ? this.visualElement.projection.measure(false)\n            : this.visualElement.projection?.layout;\n        const prevConstraints = this.constraints;\n        if (dragConstraints && isRefObject(dragConstraints)) {\n            if (!this.constraints) {\n                this.constraints = this.resolveRefConstraints();\n            }\n        }\n        else {\n            if (dragConstraints && layout) {\n                this.constraints = calcRelativeConstraints(layout.layoutBox, dragConstraints);\n            }\n            else {\n                this.constraints = false;\n            }\n        }\n        this.elastic = resolveDragElastic(dragElastic);\n        /**\n         * If we're outputting to external MotionValues, we want to rebase the measured constraints\n         * from viewport-relative to component-relative. This only applies to relative (non-ref)\n         * constraints, as ref-based constraints from calcViewportConstraints are already in the\n         * correct coordinate space for the motion value transform offset.\n         */\n        if (prevConstraints !== this.constraints &&\n            !isRefObject(dragConstraints) &&\n            layout &&\n            this.constraints &&\n            !this.hasMutatedConstraints) {\n            eachAxis((axis) => {\n                if (this.constraints !== false &&\n                    this.getAxisMotionValue(axis)) {\n                    this.constraints[axis] = rebaseAxisConstraints(layout.layoutBox[axis], this.constraints[axis]);\n                }\n            });\n        }\n    }\n    resolveRefConstraints() {\n        const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n        if (!constraints || !isRefObject(constraints))\n            return false;\n        const constraintsElement = constraints.current;\n        invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\", \"drag-constraints-ref\");\n        const { projection } = this.visualElement;\n        // TODO\n        if (!projection || !projection.layout)\n            return false;\n        /**\n         * Refresh the root scroll offset so the constraint's viewport box\n         * translates to correct page coordinates. The scroll captured at\n         * drag mount can be stale if the document was scrolled afterwards —\n         * e.g. via the browser restoring scroll on refresh, or an ancestor\n         * layout effect running after this element's mount (#2829).\n         *\n         * Clear the cached scroll first so `updateScroll` bypasses its\n         * per-animationId cache and re-reads the live value.\n         */\n        if (projection.root) {\n            projection.root.scroll = undefined;\n            projection.root.updateScroll();\n        }\n        const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n        let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n        /**\n         * If there's an onMeasureDragConstraints listener we call it and\n         * if different constraints are returned, set constraints to that\n         */\n        if (onMeasureDragConstraints) {\n            const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n            this.hasMutatedConstraints = !!userConstraints;\n            if (userConstraints) {\n                measuredConstraints = convertBoundingBoxToBox(userConstraints);\n            }\n        }\n        return measuredConstraints;\n    }\n    startAnimation(velocity) {\n        const { drag, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd, } = this.getProps();\n        const constraints = this.constraints || {};\n        const momentumAnimations = eachAxis((axis) => {\n            if (!shouldDrag(axis, drag, this.currentDirection)) {\n                return;\n            }\n            let transition = (constraints && constraints[axis]) || {};\n            if (dragSnapToOrigin === true ||\n                dragSnapToOrigin === axis)\n                transition = { min: 0, max: 0 };\n            /**\n             * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n             * of spring animations so we should look into adding a disable spring option to `inertia`.\n             * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n             * using the value of `dragElastic`.\n             */\n            const bounceStiffness = dragElastic ? 200 : 1000000;\n            const bounceDamping = dragElastic ? 40 : 10000000;\n            const inertia = {\n                type: \"inertia\",\n                velocity: dragMomentum ? velocity[axis] : 0,\n                bounceStiffness,\n                bounceDamping,\n                timeConstant: 750,\n                restDelta: 1,\n                restSpeed: 10,\n                ...dragTransition,\n                ...transition,\n            };\n            // If we're not animating on an externally-provided `MotionValue` we can use the\n            // component's animation controls which will handle interactions with whileHover (etc),\n            // otherwise we just have to animate the `MotionValue` itself.\n            return this.startAxisValueAnimation(axis, inertia);\n        });\n        // Run all animations and then resolve the new drag constraints.\n        return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n    }\n    startAxisValueAnimation(axis, transition) {\n        const axisValue = this.getAxisMotionValue(axis);\n        addValueToWillChange(this.visualElement, axis);\n        return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement, false));\n    }\n    stopAnimation() {\n        eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n    }\n    /**\n     * Drag works differently depending on which props are provided.\n     *\n     * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n     * - Otherwise, we apply the delta to the x/y motion values.\n     */\n    getAxisMotionValue(axis) {\n        const dragKey = `_drag${axis.toUpperCase()}`;\n        const props = this.visualElement.getProps();\n        const externalMotionValue = props[dragKey];\n        return externalMotionValue\n            ? externalMotionValue\n            : this.visualElement.getValue(axis, this.visualElement.latestValues[axis] ?? 0);\n    }\n    snapToCursor(point) {\n        eachAxis((axis) => {\n            const { drag } = this.getProps();\n            // If we're not dragging this axis, do an early return.\n            if (!shouldDrag(axis, drag, this.currentDirection))\n                return;\n            const { projection } = this.visualElement;\n            const axisValue = this.getAxisMotionValue(axis);\n            if (projection && projection.layout) {\n                const { min, max } = projection.layout.layoutBox[axis];\n                /**\n                 * The layout measurement includes the current transform value,\n                 * so we need to add it back to get the correct snap position.\n                 * This fixes an issue where elements with initial coordinates\n                 * would snap to the wrong position on the first drag.\n                 */\n                const current = axisValue.get() || 0;\n                axisValue.set(point[axis] - mixNumber(min, max, 0.5) + current);\n            }\n        });\n    }\n    /**\n     * When the viewport resizes we want to check if the measured constraints\n     * have changed and, if so, reposition the element within those new constraints\n     * relative to where it was before the resize.\n     */\n    scalePositionWithinConstraints() {\n        if (!this.visualElement.current)\n            return;\n        const { drag, dragConstraints } = this.getProps();\n        const { projection } = this.visualElement;\n        if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n            return;\n        /**\n         * Stop current animations as there can be visual glitching if we try to do\n         * this mid-animation\n         */\n        this.stopAnimation();\n        /**\n         * Record the relative position of the dragged element relative to the\n         * constraints box and save as a progress value.\n         */\n        const boxProgress = { x: 0, y: 0 };\n        eachAxis((axis) => {\n            const axisValue = this.getAxisMotionValue(axis);\n            if (axisValue && this.constraints !== false) {\n                const latest = axisValue.get();\n                boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n            }\n        });\n        /**\n         * Update the layout of this element and resolve the latest drag constraints\n         */\n        const { transformTemplate } = this.visualElement.getProps();\n        this.visualElement.current.style.transform = transformTemplate\n            ? transformTemplate({}, \"\")\n            : \"none\";\n        projection.root && projection.root.updateScroll();\n        projection.updateLayout();\n        /**\n         * Reset constraints so resolveConstraints() will recalculate them\n         * with the freshly measured layout rather than returning the cached value.\n         */\n        this.constraints = false;\n        this.resolveConstraints();\n        /**\n         * For each axis, calculate the current progress of the layout axis\n         * within the new constraints.\n         */\n        eachAxis((axis) => {\n            if (!shouldDrag(axis, drag, null))\n                return;\n            /**\n             * Calculate a new transform based on the previous box progress\n             */\n            const axisValue = this.getAxisMotionValue(axis);\n            const { min, max } = this.constraints[axis];\n            axisValue.set(mixNumber(min, max, boxProgress[axis]));\n        });\n        /**\n         * Flush the updated transform to the DOM synchronously to prevent\n         * a visual flash at the element's CSS layout position (0,0) when\n         * the transform was stripped for measurement.\n         */\n        this.visualElement.render();\n    }\n    addListeners() {\n        if (!this.visualElement.current)\n            return;\n        elementDragControls.set(this.visualElement, this);\n        const element = this.visualElement.current;\n        /**\n         * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n         */\n        const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n            const { drag, dragListener = true } = this.getProps();\n            const target = event.target;\n            /**\n             * Only block drag if clicking on a text input child element\n             * (input, textarea, select, contenteditable) where users might\n             * want to select text or interact with the control.\n             *\n             * Buttons and links don't block drag since they don't have\n             * click-and-move actions of their own.\n             */\n            const isClickingTextInputChild = target !== element && isElementTextInput(target);\n            if (drag && dragListener && !isClickingTextInputChild) {\n                this.start(event);\n            }\n        });\n        /**\n         * If using ref-based constraints, observe both the draggable element\n         * and the constraint container for size changes via ResizeObserver.\n         * Setup is deferred because dragConstraints.current is null when\n         * addListeners first runs (React hasn't committed the ref yet).\n         */\n        let stopResizeObservers;\n        const measureDragConstraints = () => {\n            const { dragConstraints } = this.getProps();\n            if (isRefObject(dragConstraints) && dragConstraints.current) {\n                this.constraints = this.resolveRefConstraints();\n                if (!stopResizeObservers) {\n                    stopResizeObservers = startResizeObservers(element, dragConstraints.current, () => this.scalePositionWithinConstraints());\n                }\n            }\n        };\n        const { projection } = this.visualElement;\n        const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n        if (projection && !projection.layout) {\n            projection.root && projection.root.updateScroll();\n            projection.updateLayout();\n        }\n        frame.read(measureDragConstraints);\n        /**\n         * Attach a window resize listener to scale the draggable target within its defined\n         * constraints as the window resizes.\n         */\n        const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n        /**\n         * If the element's layout changes, calculate the delta and apply that to\n         * the drag gesture's origin point.\n         */\n        const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n            if (this.isDragging && hasLayoutChanged) {\n                eachAxis((axis) => {\n                    const motionValue = this.getAxisMotionValue(axis);\n                    if (!motionValue)\n                        return;\n                    this.originPoint[axis] += delta[axis].translate;\n                    motionValue.set(motionValue.get() + delta[axis].translate);\n                });\n                this.visualElement.render();\n            }\n        }));\n        return () => {\n            stopResizeListener();\n            stopPointerListener();\n            stopMeasureLayoutListener();\n            stopLayoutUpdateListener && stopLayoutUpdateListener();\n            stopResizeObservers && stopResizeObservers();\n        };\n    }\n    getProps() {\n        const props = this.visualElement.getProps();\n        const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n        return {\n            ...props,\n            drag,\n            dragDirectionLock,\n            dragPropagation,\n            dragConstraints,\n            dragElastic,\n            dragMomentum,\n        };\n    }\n}\nfunction skipFirstCall(callback) {\n    let isFirst = true;\n    return () => {\n        if (isFirst) {\n            isFirst = false;\n            return;\n        }\n        callback();\n    };\n}\nfunction startResizeObservers(element, constraintsElement, onResize) {\n    const stopElement = resize(element, skipFirstCall(onResize));\n    const stopContainer = resize(constraintsElement, skipFirstCall(onResize));\n    return () => {\n        stopElement();\n        stopContainer();\n    };\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n    return ((drag === true || drag === direction) &&\n        (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n    let direction = null;\n    if (Math.abs(offset.y) > lockThreshold) {\n        direction = \"y\";\n    }\n    else if (Math.abs(offset.x) > lockThreshold) {\n        direction = \"x\";\n    }\n    return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n//# sourceMappingURL=VisualElementDragControls.mjs.map\n","import { Feature } from 'motion-dom';\nimport { noop } from 'motion-utils';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\n\nclass DragGesture extends Feature {\n    constructor(node) {\n        super(node);\n        this.removeGroupControls = noop;\n        this.removeListeners = noop;\n        this.controls = new VisualElementDragControls(node);\n    }\n    mount() {\n        // If we've been provided a DragControls for manual control over the drag gesture,\n        // subscribe this component to it on mount.\n        const { dragControls } = this.node.getProps();\n        if (dragControls) {\n            this.removeGroupControls = dragControls.subscribe(this.controls);\n        }\n        this.removeListeners = this.controls.addListeners() || noop;\n    }\n    update() {\n        const { dragControls } = this.node.getProps();\n        const { dragControls: prevDragControls } = this.node.prevProps || {};\n        if (dragControls !== prevDragControls) {\n            this.removeGroupControls();\n            if (dragControls) {\n                this.removeGroupControls = dragControls.subscribe(this.controls);\n            }\n        }\n    }\n    unmount() {\n        this.removeGroupControls();\n        this.removeListeners();\n        /**\n         * In React 19, during list reorder reconciliation, components may\n         * briefly unmount and remount while the drag is still active. If we're\n         * actively dragging, we should NOT end the pan session - it will\n         * continue tracking pointer events via its window-level listeners.\n         *\n         * The pan session will be properly cleaned up when:\n         * 1. The drag ends naturally (pointerup/pointercancel)\n         * 2. The component is truly removed from the DOM\n         */\n        if (!this.controls.isDragging) {\n            this.controls.endPanSession();\n        }\n    }\n}\n\nexport { DragGesture };\n//# sourceMappingURL=index.mjs.map\n","import { Feature, frame } from 'motion-dom';\nimport { noop } from 'motion-utils';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { PanSession } from './PanSession.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n    if (handler) {\n        frame.update(() => handler(event, info), false, true);\n    }\n};\nclass PanGesture extends Feature {\n    constructor() {\n        super(...arguments);\n        this.removePointerDownListener = noop;\n    }\n    onPointerDown(pointerDownEvent) {\n        this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n            transformPagePoint: this.node.getTransformPagePoint(),\n            contextWindow: getContextWindow(this.node),\n        });\n    }\n    createPanHandlers() {\n        const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n        return {\n            onSessionStart: asyncHandler(onPanSessionStart),\n            onStart: asyncHandler(onPanStart),\n            onMove: asyncHandler(onPan),\n            onEnd: (event, info) => {\n                delete this.session;\n                if (onPanEnd) {\n                    frame.postRender(() => onPanEnd(event, info));\n                }\n            },\n        };\n    }\n    mount() {\n        this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n    }\n    update() {\n        this.session && this.session.updateHandlers(this.createPanHandlers());\n    }\n    unmount() {\n        this.removePointerDownListener();\n        this.session && this.session.end();\n    }\n}\n\nexport { PanGesture };\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nimport { useContext, useId, useEffect, useCallback } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n *   const [isPresent, safeToRemove] = usePresence()\n *\n *   useEffect(() => {\n *     !isPresent && setTimeout(safeToRemove, 1000)\n *   }, [isPresent])\n *\n *   return <div />\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed from the tree,\n * but `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence(subscribe = true) {\n    const context = useContext(PresenceContext);\n    if (context === null)\n        return [true, null];\n    const { isPresent, onExitComplete, register } = context;\n    // It's safe to call the following hooks conditionally (after an early return) because the context will always\n    // either be null or non-null for the lifespan of the component.\n    const id = useId();\n    useEffect(() => {\n        if (subscribe) {\n            return register(id);\n        }\n    }, [subscribe]);\n    const safeToRemove = useCallback(() => subscribe && onExitComplete && onExitComplete(id), [id, onExitComplete, subscribe]);\n    return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n *   const isPresent = useIsPresent()\n *\n *   useEffect(() => {\n *     !isPresent && console.log(\"I've been removed!\")\n *   }, [isPresent])\n *\n *   return <div />\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n    return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n    return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n//# sourceMappingURL=use-presence.mjs.map\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { globalProjectionState, frame, microtask } from 'motion-dom';\nimport { useContext, Component } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\n\n/**\n * Track whether we've taken any snapshots yet. If not,\n * we can safely skip notification of didUpdate.\n *\n * Difficult to capture in a test but to prevent flickering\n * we must set this to true either on update or unmount.\n * Running `next-env/layout-id` in Safari will show this behaviour if broken.\n */\nlet hasTakenAnySnapshot = false;\nclass MeasureLayoutWithContext extends Component {\n    /**\n     * This only mounts projection nodes for components that\n     * need measuring, we might want to do it for all components\n     * in order to incorporate transforms\n     */\n    componentDidMount() {\n        const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n        const { projection } = visualElement;\n        if (projection) {\n            if (layoutGroup.group)\n                layoutGroup.group.add(projection);\n            if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n                switchLayoutGroup.register(projection);\n            }\n            if (hasTakenAnySnapshot) {\n                projection.root.didUpdate();\n            }\n            projection.addEventListener(\"animationComplete\", () => {\n                this.safeToRemove();\n            });\n            projection.setOptions({\n                ...projection.options,\n                layoutDependency: this.props.layoutDependency,\n                onExitComplete: () => this.safeToRemove(),\n            });\n        }\n        globalProjectionState.hasEverUpdated = true;\n    }\n    getSnapshotBeforeUpdate(prevProps) {\n        const { layoutDependency, visualElement, drag, isPresent } = this.props;\n        const { projection } = visualElement;\n        if (!projection)\n            return null;\n        /**\n         * TODO: We use this data in relegate to determine whether to\n         * promote a previous element. There's no guarantee its presence data\n         * will have updated by this point - if a bug like this arises it will\n         * have to be that we markForRelegation and then find a new lead some other way,\n         * perhaps in didUpdate\n         */\n        projection.isPresent = isPresent;\n        if (prevProps.layoutDependency !== layoutDependency) {\n            projection.setOptions({\n                ...projection.options,\n                layoutDependency,\n            });\n        }\n        hasTakenAnySnapshot = true;\n        if (drag ||\n            prevProps.layoutDependency !== layoutDependency ||\n            layoutDependency === undefined ||\n            prevProps.isPresent !== isPresent) {\n            projection.willUpdate();\n        }\n        else {\n            this.safeToRemove();\n        }\n        if (prevProps.isPresent !== isPresent) {\n            if (isPresent) {\n                projection.promote();\n            }\n            else if (!projection.relegate()) {\n                /**\n                 * If there's another stack member taking over from this one,\n                 * it's in charge of the exit animation and therefore should\n                 * be in charge of the safe to remove. Otherwise we call it here.\n                 */\n                frame.postRender(() => {\n                    const stack = projection.getStack();\n                    if (!stack || !stack.members.length) {\n                        this.safeToRemove();\n                    }\n                });\n            }\n        }\n        return null;\n    }\n    componentDidUpdate() {\n        const { visualElement, layoutAnchor } = this.props;\n        const { projection } = visualElement;\n        if (projection) {\n            projection.options.layoutAnchor = layoutAnchor;\n            projection.root.didUpdate();\n            microtask.postRender(() => {\n                if (!projection.currentAnimation && projection.isLead()) {\n                    this.safeToRemove();\n                }\n            });\n        }\n    }\n    componentWillUnmount() {\n        const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n        const { projection } = visualElement;\n        hasTakenAnySnapshot = true;\n        if (projection) {\n            projection.scheduleCheckAfterUnmount();\n            if (layoutGroup && layoutGroup.group)\n                layoutGroup.group.remove(projection);\n            if (promoteContext && promoteContext.deregister)\n                promoteContext.deregister(projection);\n        }\n    }\n    safeToRemove() {\n        const { safeToRemove } = this.props;\n        safeToRemove && safeToRemove();\n    }\n    render() {\n        return null;\n    }\n}\nfunction MeasureLayout(props) {\n    const [isPresent, safeToRemove] = usePresence();\n    const layoutGroup = useContext(LayoutGroupContext);\n    return (jsx(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\n\nexport { MeasureLayout };\n//# sourceMappingURL=MeasureLayout.mjs.map\n","import { DragGesture } from '../../gestures/drag/index.mjs';\nimport { PanGesture } from '../../gestures/pan/index.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\nimport { HTMLProjectionNode } from 'motion-dom';\n\nconst drag = {\n    pan: {\n        Feature: PanGesture,\n    },\n    drag: {\n        Feature: DragGesture,\n        ProjectionNode: HTMLProjectionNode,\n        MeasureLayout,\n    },\n};\n\nexport { drag };\n//# sourceMappingURL=drag.mjs.map\n","import { Feature, hover, frame } from 'motion-dom';\nimport { extractEventInfo } from '../events/event-info.mjs';\n\nfunction handleHoverEvent(node, event, lifecycle) {\n    const { props } = node;\n    if (node.animationState && props.whileHover) {\n        node.animationState.setActive(\"whileHover\", lifecycle === \"Start\");\n    }\n    const eventName = (\"onHover\" + lifecycle);\n    const callback = props[eventName];\n    if (callback) {\n        frame.postRender(() => callback(event, extractEventInfo(event)));\n    }\n}\nclass HoverGesture extends Feature {\n    mount() {\n        const { current } = this.node;\n        if (!current)\n            return;\n        this.unmount = hover(current, (_element, startEvent) => {\n            handleHoverEvent(this.node, startEvent, \"Start\");\n            return (endEvent) => handleHoverEvent(this.node, endEvent, \"End\");\n        });\n    }\n    unmount() { }\n}\n\nexport { HoverGesture };\n//# sourceMappingURL=hover.mjs.map\n","import { Feature, addDomEvent } from 'motion-dom';\nimport { pipe } from 'motion-utils';\n\nclass FocusGesture extends Feature {\n    constructor() {\n        super(...arguments);\n        this.isActive = false;\n    }\n    onFocus() {\n        let isFocusVisible = false;\n        /**\n         * If this element doesn't match focus-visible then don't\n         * apply whileHover. But, if matches throws that focus-visible\n         * is not a valid selector then in that browser outline styles will be applied\n         * to the element by default and we want to match that behaviour with whileFocus.\n         */\n        try {\n            isFocusVisible = this.node.current.matches(\":focus-visible\");\n        }\n        catch (e) {\n            isFocusVisible = true;\n        }\n        if (!isFocusVisible || !this.node.animationState)\n            return;\n        this.node.animationState.setActive(\"whileFocus\", true);\n        this.isActive = true;\n    }\n    onBlur() {\n        if (!this.isActive || !this.node.animationState)\n            return;\n        this.node.animationState.setActive(\"whileFocus\", false);\n        this.isActive = false;\n    }\n    mount() {\n        this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n    }\n    unmount() { }\n}\n\nexport { FocusGesture };\n//# sourceMappingURL=focus.mjs.map\n","import { Feature, press, frame } from 'motion-dom';\nimport { extractEventInfo } from '../events/event-info.mjs';\n\nfunction handlePressEvent(node, event, lifecycle) {\n    const { props } = node;\n    if (node.current instanceof HTMLButtonElement && node.current.disabled) {\n        return;\n    }\n    if (node.animationState && props.whileTap) {\n        node.animationState.setActive(\"whileTap\", lifecycle === \"Start\");\n    }\n    const eventName = (\"onTap\" + (lifecycle === \"End\" ? \"\" : lifecycle));\n    const callback = props[eventName];\n    if (callback) {\n        frame.postRender(() => callback(event, extractEventInfo(event)));\n    }\n}\nclass PressGesture extends Feature {\n    mount() {\n        const { current } = this.node;\n        if (!current)\n            return;\n        const { globalTapTarget, propagate } = this.node.props;\n        this.unmount = press(current, (_element, startEvent) => {\n            handlePressEvent(this.node, startEvent, \"Start\");\n            return (endEvent, { success }) => handlePressEvent(this.node, endEvent, success ? \"End\" : \"Cancel\");\n        }, {\n            useGlobalTarget: globalTapTarget,\n            stopPropagation: propagate?.tap === false,\n        });\n    }\n    unmount() { }\n}\n\nexport { PressGesture };\n//# sourceMappingURL=press.mjs.map\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n    const callback = observerCallbacks.get(entry.target);\n    callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n    entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n    const lookupRoot = root || document;\n    /**\n     * If we don't have an observer lookup map for this root, create one.\n     */\n    if (!observers.has(lookupRoot)) {\n        observers.set(lookupRoot, {});\n    }\n    const rootObservers = observers.get(lookupRoot);\n    const key = JSON.stringify(options);\n    /**\n     * If we don't have an observer for this combination of root and settings,\n     * create one.\n     */\n    if (!rootObservers[key]) {\n        rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n    }\n    return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n    const rootInteresectionObserver = initIntersectionObserver(options);\n    observerCallbacks.set(element, callback);\n    rootInteresectionObserver.observe(element);\n    return () => {\n        observerCallbacks.delete(element);\n        rootInteresectionObserver.unobserve(element);\n    };\n}\n\nexport { observeIntersection };\n//# sourceMappingURL=observers.mjs.map\n","import { Feature } from 'motion-dom';\nimport { observeIntersection } from './observers.mjs';\n\nconst thresholdNames = {\n    some: 0,\n    all: 1,\n};\nclass InViewFeature extends Feature {\n    constructor() {\n        super(...arguments);\n        this.hasEnteredView = false;\n        this.isInView = false;\n    }\n    startObserver() {\n        this.stopObserver?.();\n        const { viewport = {} } = this.node.getProps();\n        const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n        const options = {\n            root: root ? root.current : undefined,\n            rootMargin,\n            threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n        };\n        const onIntersectionUpdate = (entry) => {\n            const { isIntersecting } = entry;\n            /**\n             * If there's been no change in the viewport state, early return.\n             */\n            if (this.isInView === isIntersecting)\n                return;\n            this.isInView = isIntersecting;\n            /**\n             * Handle hasEnteredView. If this is only meant to run once, and\n             * element isn't visible, early return. Otherwise set hasEnteredView to true.\n             */\n            if (once && !isIntersecting && this.hasEnteredView) {\n                return;\n            }\n            else if (isIntersecting) {\n                this.hasEnteredView = true;\n            }\n            if (this.node.animationState) {\n                this.node.animationState.setActive(\"whileInView\", isIntersecting);\n            }\n            /**\n             * Use the latest committed props rather than the ones in scope\n             * when this observer is created\n             */\n            const { onViewportEnter, onViewportLeave } = this.node.getProps();\n            const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n            callback && callback(entry);\n        };\n        this.stopObserver = observeIntersection(this.node.current, options, onIntersectionUpdate);\n    }\n    mount() {\n        this.startObserver();\n    }\n    update() {\n        if (typeof IntersectionObserver === \"undefined\")\n            return;\n        const { props, prevProps } = this.node;\n        const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n        if (hasOptionsChanged) {\n            this.startObserver();\n        }\n    }\n    unmount() {\n        this.stopObserver?.();\n        this.hasEnteredView = false;\n        this.isInView = false;\n    }\n}\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n    return (name) => viewport[name] !== prevViewport[name];\n}\n\nexport { InViewFeature };\n//# sourceMappingURL=index.mjs.map\n","import { animations } from '../../../motion/features/animations.mjs';\nimport { drag } from '../../../motion/features/drag.mjs';\nimport { gestureAnimations } from '../../../motion/features/gestures.mjs';\nimport { layout } from '../../../motion/features/layout.mjs';\n\nconst featureBundle = {\n    ...animations,\n    ...gestureAnimations,\n    ...drag,\n    ...layout,\n};\n\nexport { featureBundle };\n//# sourceMappingURL=feature-bundle.mjs.map\n","import { HoverGesture } from '../../gestures/hover.mjs';\nimport { FocusGesture } from '../../gestures/focus.mjs';\nimport { PressGesture } from '../../gestures/press.mjs';\nimport { InViewFeature } from './viewport/index.mjs';\n\nconst gestureAnimations = {\n    inView: {\n        Feature: InViewFeature,\n    },\n    tap: {\n        Feature: PressGesture,\n    },\n    focus: {\n        Feature: FocusGesture,\n    },\n    hover: {\n        Feature: HoverGesture,\n    },\n};\n\nexport { gestureAnimations };\n//# sourceMappingURL=gestures.mjs.map\n","import { HTMLProjectionNode } from 'motion-dom';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\n\nconst layout = {\n    layout: {\n        ProjectionNode: HTMLProjectionNode,\n        MeasureLayout,\n    },\n};\n\nexport { layout };\n//# sourceMappingURL=layout.mjs.map\n","import { createMotionComponent } from '../../../motion/index.mjs';\nimport { createDomVisualElement } from '../../dom/create-visual-element.mjs';\nimport { featureBundle } from './feature-bundle.mjs';\n\nfunction createMotionComponentWithFeatures(Component, options) {\n    return createMotionComponent(Component, options, featureBundle, createDomVisualElement);\n}\n\nexport { createMotionComponentWithFeatures };\n//# sourceMappingURL=create.mjs.map\n","\"use client\";\nimport { createMotionComponentWithFeatures } from './create.mjs';\n\n/**\n * HTML components\n */\nconst MotionA = /*@__PURE__*/ createMotionComponentWithFeatures(\"a\");\nconst MotionAbbr = /*@__PURE__*/ createMotionComponentWithFeatures(\"abbr\");\nconst MotionAddress = /*@__PURE__*/ createMotionComponentWithFeatures(\"address\");\nconst MotionArea = /*@__PURE__*/ createMotionComponentWithFeatures(\"area\");\nconst MotionArticle = /*@__PURE__*/ createMotionComponentWithFeatures(\"article\");\nconst MotionAside = /*@__PURE__*/ createMotionComponentWithFeatures(\"aside\");\nconst MotionAudio = /*@__PURE__*/ createMotionComponentWithFeatures(\"audio\");\nconst MotionB = /*@__PURE__*/ createMotionComponentWithFeatures(\"b\");\nconst MotionBase = /*@__PURE__*/ createMotionComponentWithFeatures(\"base\");\nconst MotionBdi = /*@__PURE__*/ createMotionComponentWithFeatures(\"bdi\");\nconst MotionBdo = /*@__PURE__*/ createMotionComponentWithFeatures(\"bdo\");\nconst MotionBig = /*@__PURE__*/ createMotionComponentWithFeatures(\"big\");\nconst MotionBlockquote = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"blockquote\");\nconst MotionBody = /*@__PURE__*/ createMotionComponentWithFeatures(\"body\");\nconst MotionButton = /*@__PURE__*/ createMotionComponentWithFeatures(\"button\");\nconst MotionCanvas = /*@__PURE__*/ createMotionComponentWithFeatures(\"canvas\");\nconst MotionCaption = /*@__PURE__*/ createMotionComponentWithFeatures(\"caption\");\nconst MotionCite = /*@__PURE__*/ createMotionComponentWithFeatures(\"cite\");\nconst MotionCode = /*@__PURE__*/ createMotionComponentWithFeatures(\"code\");\nconst MotionCol = /*@__PURE__*/ createMotionComponentWithFeatures(\"col\");\nconst MotionColgroup = /*@__PURE__*/ createMotionComponentWithFeatures(\"colgroup\");\nconst MotionData = /*@__PURE__*/ createMotionComponentWithFeatures(\"data\");\nconst MotionDatalist = /*@__PURE__*/ createMotionComponentWithFeatures(\"datalist\");\nconst MotionDd = /*@__PURE__*/ createMotionComponentWithFeatures(\"dd\");\nconst MotionDel = /*@__PURE__*/ createMotionComponentWithFeatures(\"del\");\nconst MotionDetails = /*@__PURE__*/ createMotionComponentWithFeatures(\"details\");\nconst MotionDfn = /*@__PURE__*/ createMotionComponentWithFeatures(\"dfn\");\nconst MotionDialog = /*@__PURE__*/ createMotionComponentWithFeatures(\"dialog\");\nconst MotionDiv = /*@__PURE__*/ createMotionComponentWithFeatures(\"div\");\nconst MotionDl = /*@__PURE__*/ createMotionComponentWithFeatures(\"dl\");\nconst MotionDt = /*@__PURE__*/ createMotionComponentWithFeatures(\"dt\");\nconst MotionEm = /*@__PURE__*/ createMotionComponentWithFeatures(\"em\");\nconst MotionEmbed = /*@__PURE__*/ createMotionComponentWithFeatures(\"embed\");\nconst MotionFieldset = /*@__PURE__*/ createMotionComponentWithFeatures(\"fieldset\");\nconst MotionFigcaption = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"figcaption\");\nconst MotionFigure = /*@__PURE__*/ createMotionComponentWithFeatures(\"figure\");\nconst MotionFooter = /*@__PURE__*/ createMotionComponentWithFeatures(\"footer\");\nconst MotionForm = /*@__PURE__*/ createMotionComponentWithFeatures(\"form\");\nconst MotionH1 = /*@__PURE__*/ createMotionComponentWithFeatures(\"h1\");\nconst MotionH2 = /*@__PURE__*/ createMotionComponentWithFeatures(\"h2\");\nconst MotionH3 = /*@__PURE__*/ createMotionComponentWithFeatures(\"h3\");\nconst MotionH4 = /*@__PURE__*/ createMotionComponentWithFeatures(\"h4\");\nconst MotionH5 = /*@__PURE__*/ createMotionComponentWithFeatures(\"h5\");\nconst MotionH6 = /*@__PURE__*/ createMotionComponentWithFeatures(\"h6\");\nconst MotionHead = /*@__PURE__*/ createMotionComponentWithFeatures(\"head\");\nconst MotionHeader = /*@__PURE__*/ createMotionComponentWithFeatures(\"header\");\nconst MotionHgroup = /*@__PURE__*/ createMotionComponentWithFeatures(\"hgroup\");\nconst MotionHr = /*@__PURE__*/ createMotionComponentWithFeatures(\"hr\");\nconst MotionHtml = /*@__PURE__*/ createMotionComponentWithFeatures(\"html\");\nconst MotionI = /*@__PURE__*/ createMotionComponentWithFeatures(\"i\");\nconst MotionIframe = /*@__PURE__*/ createMotionComponentWithFeatures(\"iframe\");\nconst MotionImg = /*@__PURE__*/ createMotionComponentWithFeatures(\"img\");\nconst MotionInput = /*@__PURE__*/ createMotionComponentWithFeatures(\"input\");\nconst MotionIns = /*@__PURE__*/ createMotionComponentWithFeatures(\"ins\");\nconst MotionKbd = /*@__PURE__*/ createMotionComponentWithFeatures(\"kbd\");\nconst MotionKeygen = /*@__PURE__*/ createMotionComponentWithFeatures(\"keygen\");\nconst MotionLabel = /*@__PURE__*/ createMotionComponentWithFeatures(\"label\");\nconst MotionLegend = /*@__PURE__*/ createMotionComponentWithFeatures(\"legend\");\nconst MotionLi = /*@__PURE__*/ createMotionComponentWithFeatures(\"li\");\nconst MotionLink = /*@__PURE__*/ createMotionComponentWithFeatures(\"link\");\nconst MotionMain = /*@__PURE__*/ createMotionComponentWithFeatures(\"main\");\nconst MotionMap = /*@__PURE__*/ createMotionComponentWithFeatures(\"map\");\nconst MotionMark = /*@__PURE__*/ createMotionComponentWithFeatures(\"mark\");\nconst MotionMenu = /*@__PURE__*/ createMotionComponentWithFeatures(\"menu\");\nconst MotionMenuitem = /*@__PURE__*/ createMotionComponentWithFeatures(\"menuitem\");\nconst MotionMeter = /*@__PURE__*/ createMotionComponentWithFeatures(\"meter\");\nconst MotionNav = /*@__PURE__*/ createMotionComponentWithFeatures(\"nav\");\nconst MotionObject = /*@__PURE__*/ createMotionComponentWithFeatures(\"object\");\nconst MotionOl = /*@__PURE__*/ createMotionComponentWithFeatures(\"ol\");\nconst MotionOptgroup = /*@__PURE__*/ createMotionComponentWithFeatures(\"optgroup\");\nconst MotionOption = /*@__PURE__*/ createMotionComponentWithFeatures(\"option\");\nconst MotionOutput = /*@__PURE__*/ createMotionComponentWithFeatures(\"output\");\nconst MotionP = /*@__PURE__*/ createMotionComponentWithFeatures(\"p\");\nconst MotionParam = /*@__PURE__*/ createMotionComponentWithFeatures(\"param\");\nconst MotionPicture = /*@__PURE__*/ createMotionComponentWithFeatures(\"picture\");\nconst MotionPre = /*@__PURE__*/ createMotionComponentWithFeatures(\"pre\");\nconst MotionProgress = /*@__PURE__*/ createMotionComponentWithFeatures(\"progress\");\nconst MotionQ = /*@__PURE__*/ createMotionComponentWithFeatures(\"q\");\nconst MotionRp = /*@__PURE__*/ createMotionComponentWithFeatures(\"rp\");\nconst MotionRt = /*@__PURE__*/ createMotionComponentWithFeatures(\"rt\");\nconst MotionRuby = /*@__PURE__*/ createMotionComponentWithFeatures(\"ruby\");\nconst MotionS = /*@__PURE__*/ createMotionComponentWithFeatures(\"s\");\nconst MotionSamp = /*@__PURE__*/ createMotionComponentWithFeatures(\"samp\");\nconst MotionScript = /*@__PURE__*/ createMotionComponentWithFeatures(\"script\");\nconst MotionSection = /*@__PURE__*/ createMotionComponentWithFeatures(\"section\");\nconst MotionSelect = /*@__PURE__*/ createMotionComponentWithFeatures(\"select\");\nconst MotionSmall = /*@__PURE__*/ createMotionComponentWithFeatures(\"small\");\nconst MotionSource = /*@__PURE__*/ createMotionComponentWithFeatures(\"source\");\nconst MotionSpan = /*@__PURE__*/ createMotionComponentWithFeatures(\"span\");\nconst MotionStrong = /*@__PURE__*/ createMotionComponentWithFeatures(\"strong\");\nconst MotionStyle = /*@__PURE__*/ createMotionComponentWithFeatures(\"style\");\nconst MotionSub = /*@__PURE__*/ createMotionComponentWithFeatures(\"sub\");\nconst MotionSummary = /*@__PURE__*/ createMotionComponentWithFeatures(\"summary\");\nconst MotionSup = /*@__PURE__*/ createMotionComponentWithFeatures(\"sup\");\nconst MotionTable = /*@__PURE__*/ createMotionComponentWithFeatures(\"table\");\nconst MotionTbody = /*@__PURE__*/ createMotionComponentWithFeatures(\"tbody\");\nconst MotionTd = /*@__PURE__*/ createMotionComponentWithFeatures(\"td\");\nconst MotionTextarea = /*@__PURE__*/ createMotionComponentWithFeatures(\"textarea\");\nconst MotionTfoot = /*@__PURE__*/ createMotionComponentWithFeatures(\"tfoot\");\nconst MotionTh = /*@__PURE__*/ createMotionComponentWithFeatures(\"th\");\nconst MotionThead = /*@__PURE__*/ createMotionComponentWithFeatures(\"thead\");\nconst MotionTime = /*@__PURE__*/ createMotionComponentWithFeatures(\"time\");\nconst MotionTitle = /*@__PURE__*/ createMotionComponentWithFeatures(\"title\");\nconst MotionTr = /*@__PURE__*/ createMotionComponentWithFeatures(\"tr\");\nconst MotionTrack = /*@__PURE__*/ createMotionComponentWithFeatures(\"track\");\nconst MotionU = /*@__PURE__*/ createMotionComponentWithFeatures(\"u\");\nconst MotionUl = /*@__PURE__*/ createMotionComponentWithFeatures(\"ul\");\nconst MotionVideo = /*@__PURE__*/ createMotionComponentWithFeatures(\"video\");\nconst MotionWbr = /*@__PURE__*/ createMotionComponentWithFeatures(\"wbr\");\nconst MotionWebview = /*@__PURE__*/ createMotionComponentWithFeatures(\"webview\");\n/**\n * SVG components\n */\nconst MotionAnimate = /*@__PURE__*/ createMotionComponentWithFeatures(\"animate\");\nconst MotionCircle = /*@__PURE__*/ createMotionComponentWithFeatures(\"circle\");\nconst MotionDefs = /*@__PURE__*/ createMotionComponentWithFeatures(\"defs\");\nconst MotionDesc = /*@__PURE__*/ createMotionComponentWithFeatures(\"desc\");\nconst MotionEllipse = /*@__PURE__*/ createMotionComponentWithFeatures(\"ellipse\");\nconst MotionG = /*@__PURE__*/ createMotionComponentWithFeatures(\"g\");\nconst MotionImage = /*@__PURE__*/ createMotionComponentWithFeatures(\"image\");\nconst MotionLine = /*@__PURE__*/ createMotionComponentWithFeatures(\"line\");\nconst MotionFilter = /*@__PURE__*/ createMotionComponentWithFeatures(\"filter\");\nconst MotionMarker = /*@__PURE__*/ createMotionComponentWithFeatures(\"marker\");\nconst MotionMask = /*@__PURE__*/ createMotionComponentWithFeatures(\"mask\");\nconst MotionMetadata = /*@__PURE__*/ createMotionComponentWithFeatures(\"metadata\");\nconst MotionPath = /*@__PURE__*/ createMotionComponentWithFeatures(\"path\");\nconst MotionPattern = /*@__PURE__*/ createMotionComponentWithFeatures(\"pattern\");\nconst MotionPolygon = /*@__PURE__*/ createMotionComponentWithFeatures(\"polygon\");\nconst MotionPolyline = /*@__PURE__*/ createMotionComponentWithFeatures(\"polyline\");\nconst MotionRect = /*@__PURE__*/ createMotionComponentWithFeatures(\"rect\");\nconst MotionStop = /*@__PURE__*/ createMotionComponentWithFeatures(\"stop\");\nconst MotionSvg = /*@__PURE__*/ createMotionComponentWithFeatures(\"svg\");\nconst MotionSymbol = /*@__PURE__*/ createMotionComponentWithFeatures(\"symbol\");\nconst MotionText = /*@__PURE__*/ createMotionComponentWithFeatures(\"text\");\nconst MotionTspan = /*@__PURE__*/ createMotionComponentWithFeatures(\"tspan\");\nconst MotionUse = /*@__PURE__*/ createMotionComponentWithFeatures(\"use\");\nconst MotionView = /*@__PURE__*/ createMotionComponentWithFeatures(\"view\");\nconst MotionClipPath = /*@__PURE__*/ createMotionComponentWithFeatures(\"clipPath\");\nconst MotionFeBlend = /*@__PURE__*/ createMotionComponentWithFeatures(\"feBlend\");\nconst MotionFeColorMatrix = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feColorMatrix\");\nconst MotionFeComponentTransfer = /*@__PURE__*/ createMotionComponentWithFeatures(\"feComponentTransfer\");\nconst MotionFeComposite = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feComposite\");\nconst MotionFeConvolveMatrix = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feConvolveMatrix\");\nconst MotionFeDiffuseLighting = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feDiffuseLighting\");\nconst MotionFeDisplacementMap = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feDisplacementMap\");\nconst MotionFeDistantLight = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feDistantLight\");\nconst MotionFeDropShadow = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feDropShadow\");\nconst MotionFeFlood = /*@__PURE__*/ createMotionComponentWithFeatures(\"feFlood\");\nconst MotionFeFuncA = /*@__PURE__*/ createMotionComponentWithFeatures(\"feFuncA\");\nconst MotionFeFuncB = /*@__PURE__*/ createMotionComponentWithFeatures(\"feFuncB\");\nconst MotionFeFuncG = /*@__PURE__*/ createMotionComponentWithFeatures(\"feFuncG\");\nconst MotionFeFuncR = /*@__PURE__*/ createMotionComponentWithFeatures(\"feFuncR\");\nconst MotionFeGaussianBlur = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feGaussianBlur\");\nconst MotionFeImage = /*@__PURE__*/ createMotionComponentWithFeatures(\"feImage\");\nconst MotionFeMerge = /*@__PURE__*/ createMotionComponentWithFeatures(\"feMerge\");\nconst MotionFeMergeNode = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feMergeNode\");\nconst MotionFeMorphology = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feMorphology\");\nconst MotionFeOffset = /*@__PURE__*/ createMotionComponentWithFeatures(\"feOffset\");\nconst MotionFePointLight = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"fePointLight\");\nconst MotionFeSpecularLighting = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feSpecularLighting\");\nconst MotionFeSpotLight = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feSpotLight\");\nconst MotionFeTile = /*@__PURE__*/ createMotionComponentWithFeatures(\"feTile\");\nconst MotionFeTurbulence = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"feTurbulence\");\nconst MotionForeignObject = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"foreignObject\");\nconst MotionLinearGradient = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"linearGradient\");\nconst MotionRadialGradient = \n/*@__PURE__*/ createMotionComponentWithFeatures(\"radialGradient\");\nconst MotionTextPath = /*@__PURE__*/ createMotionComponentWithFeatures(\"textPath\");\n\nexport { MotionA, MotionAbbr, MotionAddress, MotionAnimate, MotionArea, MotionArticle, MotionAside, MotionAudio, MotionB, MotionBase, MotionBdi, MotionBdo, MotionBig, MotionBlockquote, MotionBody, MotionButton, MotionCanvas, MotionCaption, MotionCircle, MotionCite, MotionClipPath, MotionCode, MotionCol, MotionColgroup, MotionData, MotionDatalist, MotionDd, MotionDefs, MotionDel, MotionDesc, MotionDetails, MotionDfn, MotionDialog, MotionDiv, MotionDl, MotionDt, MotionEllipse, MotionEm, MotionEmbed, MotionFeBlend, MotionFeColorMatrix, MotionFeComponentTransfer, MotionFeComposite, MotionFeConvolveMatrix, MotionFeDiffuseLighting, MotionFeDisplacementMap, MotionFeDistantLight, MotionFeDropShadow, MotionFeFlood, MotionFeFuncA, MotionFeFuncB, MotionFeFuncG, MotionFeFuncR, MotionFeGaussianBlur, MotionFeImage, MotionFeMerge, MotionFeMergeNode, MotionFeMorphology, MotionFeOffset, MotionFePointLight, MotionFeSpecularLighting, MotionFeSpotLight, MotionFeTile, MotionFeTurbulence, MotionFieldset, MotionFigcaption, MotionFigure, MotionFilter, MotionFooter, MotionForeignObject, MotionForm, MotionG, MotionH1, MotionH2, MotionH3, MotionH4, MotionH5, MotionH6, MotionHead, MotionHeader, MotionHgroup, MotionHr, MotionHtml, MotionI, MotionIframe, MotionImage, MotionImg, MotionInput, MotionIns, MotionKbd, MotionKeygen, MotionLabel, MotionLegend, MotionLi, MotionLine, MotionLinearGradient, MotionLink, MotionMain, MotionMap, MotionMark, MotionMarker, MotionMask, MotionMenu, MotionMenuitem, MotionMetadata, MotionMeter, MotionNav, MotionObject, MotionOl, MotionOptgroup, MotionOption, MotionOutput, MotionP, MotionParam, MotionPath, MotionPattern, MotionPicture, MotionPolygon, MotionPolyline, MotionPre, MotionProgress, MotionQ, MotionRadialGradient, MotionRect, MotionRp, MotionRt, MotionRuby, MotionS, MotionSamp, MotionScript, MotionSection, MotionSelect, MotionSmall, MotionSource, MotionSpan, MotionStop, MotionStrong, MotionStyle, MotionSub, MotionSummary, MotionSup, MotionSvg, MotionSymbol, MotionTable, MotionTbody, MotionTd, MotionText, MotionTextPath, MotionTextarea, MotionTfoot, MotionTh, MotionThead, MotionTime, MotionTitle, MotionTr, MotionTrack, MotionTspan, MotionU, MotionUl, MotionUse, MotionVideo, MotionView, MotionWbr, MotionWebview };\n//# sourceMappingURL=elements.mjs.map\n","/**\n* @vue/shared v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n  const map = /* @__PURE__ */ Object.create(null);\n  for (const key of str.split(\",\")) map[key] = 1;\n  return (val) => val in map;\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n  const i = arr.indexOf(el);\n  if (i > -1) {\n    arr.splice(i, 1);\n  }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n  return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n  return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n  // the leading comma is intentional so empty string \"\" is also included\n  \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n  \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction(\n  (str) => {\n    return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n  }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n  (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n  (str) => {\n    const s = str ? `on${capitalize(str)}` : ``;\n    return s;\n  }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n  for (let i = 0; i < fns.length; i++) {\n    fns[i](...arg);\n  }\n};\nconst def = (obj, key, value, writable = false) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    writable,\n    value\n  });\n};\nconst looseToNumber = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n  const n = isString(val) ? Number(val) : NaN;\n  return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n  return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n  return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n  return source + JSON.stringify(\n    options,\n    (_, val) => typeof val === \"function\" ? val.toString() : val\n  );\n}\n\nconst PatchFlags = {\n  \"TEXT\": 1,\n  \"1\": \"TEXT\",\n  \"CLASS\": 2,\n  \"2\": \"CLASS\",\n  \"STYLE\": 4,\n  \"4\": \"STYLE\",\n  \"PROPS\": 8,\n  \"8\": \"PROPS\",\n  \"FULL_PROPS\": 16,\n  \"16\": \"FULL_PROPS\",\n  \"NEED_HYDRATION\": 32,\n  \"32\": \"NEED_HYDRATION\",\n  \"STABLE_FRAGMENT\": 64,\n  \"64\": \"STABLE_FRAGMENT\",\n  \"KEYED_FRAGMENT\": 128,\n  \"128\": \"KEYED_FRAGMENT\",\n  \"UNKEYED_FRAGMENT\": 256,\n  \"256\": \"UNKEYED_FRAGMENT\",\n  \"NEED_PATCH\": 512,\n  \"512\": \"NEED_PATCH\",\n  \"DYNAMIC_SLOTS\": 1024,\n  \"1024\": \"DYNAMIC_SLOTS\",\n  \"DEV_ROOT_FRAGMENT\": 2048,\n  \"2048\": \"DEV_ROOT_FRAGMENT\",\n  \"CACHED\": -1,\n  \"-1\": \"CACHED\",\n  \"BAIL\": -2,\n  \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n  [1]: `TEXT`,\n  [2]: `CLASS`,\n  [4]: `STYLE`,\n  [8]: `PROPS`,\n  [16]: `FULL_PROPS`,\n  [32]: `NEED_HYDRATION`,\n  [64]: `STABLE_FRAGMENT`,\n  [128]: `KEYED_FRAGMENT`,\n  [256]: `UNKEYED_FRAGMENT`,\n  [512]: `NEED_PATCH`,\n  [1024]: `DYNAMIC_SLOTS`,\n  [2048]: `DEV_ROOT_FRAGMENT`,\n  [-1]: `HOISTED`,\n  [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n  \"ELEMENT\": 1,\n  \"1\": \"ELEMENT\",\n  \"FUNCTIONAL_COMPONENT\": 2,\n  \"2\": \"FUNCTIONAL_COMPONENT\",\n  \"STATEFUL_COMPONENT\": 4,\n  \"4\": \"STATEFUL_COMPONENT\",\n  \"TEXT_CHILDREN\": 8,\n  \"8\": \"TEXT_CHILDREN\",\n  \"ARRAY_CHILDREN\": 16,\n  \"16\": \"ARRAY_CHILDREN\",\n  \"SLOTS_CHILDREN\": 32,\n  \"32\": \"SLOTS_CHILDREN\",\n  \"TELEPORT\": 64,\n  \"64\": \"TELEPORT\",\n  \"SUSPENSE\": 128,\n  \"128\": \"SUSPENSE\",\n  \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n  \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n  \"COMPONENT_KEPT_ALIVE\": 512,\n  \"512\": \"COMPONENT_KEPT_ALIVE\",\n  \"COMPONENT\": 6,\n  \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n  \"STABLE\": 1,\n  \"1\": \"STABLE\",\n  \"DYNAMIC\": 2,\n  \"2\": \"DYNAMIC\",\n  \"FORWARDED\": 3,\n  \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n  [1]: \"STABLE\",\n  [2]: \"DYNAMIC\",\n  [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n  start = Math.max(0, Math.min(start, source.length));\n  end = Math.max(0, Math.min(end, source.length));\n  if (start > end) return \"\";\n  let lines = source.split(/(\\r?\\n)/);\n  const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n  lines = lines.filter((_, idx) => idx % 2 === 0);\n  let count = 0;\n  const res = [];\n  for (let i = 0; i < lines.length; i++) {\n    count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n    if (count >= start) {\n      for (let j = i - range; j <= i + range || end > count; j++) {\n        if (j < 0 || j >= lines.length) continue;\n        const line = j + 1;\n        res.push(\n          `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}|  ${lines[j]}`\n        );\n        const lineLength = lines[j].length;\n        const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n        if (j === i) {\n          const pad = start - (count - (lineLength + newLineSeqLength));\n          const length = Math.max(\n            1,\n            end > count ? lineLength - pad : end - start\n          );\n          res.push(`   |  ` + \" \".repeat(pad) + \"^\".repeat(length));\n        } else if (j > i) {\n          if (end > count) {\n            const length = Math.max(Math.min(end - count, lineLength), 1);\n            res.push(`   |  ` + \"^\".repeat(length));\n          }\n          count += lineLength + newLineSeqLength;\n        }\n      }\n      break;\n    }\n  }\n  return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n  if (isArray(value)) {\n    const res = {};\n    for (let i = 0; i < value.length; i++) {\n      const item = value[i];\n      const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n      if (normalized) {\n        for (const key in normalized) {\n          res[key] = normalized[key];\n        }\n      }\n    }\n    return res;\n  } else if (isString(value) || isObject(value)) {\n    return value;\n  }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n  const ret = {};\n  cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n    if (item) {\n      const tmp = item.split(propertyDelimiterRE);\n      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return ret;\n}\nfunction stringifyStyle(styles) {\n  if (!styles) return \"\";\n  if (isString(styles)) return styles;\n  let ret = \"\";\n  for (const key in styles) {\n    const value = styles[key];\n    if (isString(value) || typeof value === \"number\") {\n      const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n      ret += `${normalizedKey}:${value};`;\n    }\n  }\n  return ret;\n}\nfunction normalizeClass(value) {\n  let res = \"\";\n  if (isString(value)) {\n    res = value;\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      const normalized = normalizeClass(value[i]);\n      if (normalized) {\n        res += normalized + \" \";\n      }\n    }\n  } else if (isObject(value)) {\n    for (const name in value) {\n      if (value[name]) {\n        res += name + \" \";\n      }\n    }\n  }\n  return res.trim();\n}\nfunction normalizeProps(props) {\n  if (!props) return null;\n  let { class: klass, style } = props;\n  if (klass && !isString(klass)) {\n    props.class = normalizeClass(klass);\n  }\n  if (style) {\n    props.style = normalizeStyle(style);\n  }\n  return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n  specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n  return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n  if (attrValidationCache.hasOwnProperty(name)) {\n    return attrValidationCache[name];\n  }\n  const isUnsafe = unsafeAttrCharRE.test(name);\n  if (isUnsafe) {\n    console.error(`unsafe attribute name: ${name}`);\n  }\n  return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n  acceptCharset: \"accept-charset\",\n  className: \"class\",\n  htmlFor: \"for\",\n  httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n  `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n  `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nconst isKnownMathMLAttr = /* @__PURE__ */ makeMap(\n  `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`\n);\nfunction isRenderableAttrValue(value) {\n  if (value == null) {\n    return false;\n  }\n  const type = typeof value;\n  return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n  const str = \"\" + string;\n  const match = escapeRE.exec(str);\n  if (!match) {\n    return str;\n  }\n  let html = \"\";\n  let escaped;\n  let index;\n  let lastIndex = 0;\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        escaped = \"&quot;\";\n        break;\n      case 38:\n        escaped = \"&amp;\";\n        break;\n      case 39:\n        escaped = \"&#39;\";\n        break;\n      case 60:\n        escaped = \"&lt;\";\n        break;\n      case 62:\n        escaped = \"&gt;\";\n        break;\n      default:\n        continue;\n    }\n    if (lastIndex !== index) {\n      html += str.slice(lastIndex, index);\n    }\n    lastIndex = index + 1;\n    html += escaped;\n  }\n  return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n  return src.replace(commentStripRE, \"\");\n}\nconst cssVarNameEscapeSymbolsRE = /[ !\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~]/g;\nfunction getEscapedCssVarName(key, doubleEscape) {\n  return key.replace(\n    cssVarNameEscapeSymbolsRE,\n    (s) => doubleEscape ? s === '\"' ? '\\\\\\\\\\\\\"' : `\\\\\\\\${s}` : `\\\\${s}`\n  );\n}\n\nfunction looseCompareArrays(a, b) {\n  if (a.length !== b.length) return false;\n  let equal = true;\n  for (let i = 0; equal && i < a.length; i++) {\n    equal = looseEqual(a[i], b[i]);\n  }\n  return equal;\n}\nfunction looseEqual(a, b) {\n  if (a === b) return true;\n  let aValidType = isDate(a);\n  let bValidType = isDate(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n  }\n  aValidType = isSymbol(a);\n  bValidType = isSymbol(b);\n  if (aValidType || bValidType) {\n    return a === b;\n  }\n  aValidType = isArray(a);\n  bValidType = isArray(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n  }\n  aValidType = isObject(a);\n  bValidType = isObject(b);\n  if (aValidType || bValidType) {\n    if (!aValidType || !bValidType) {\n      return false;\n    }\n    const aKeysCount = Object.keys(a).length;\n    const bKeysCount = Object.keys(b).length;\n    if (aKeysCount !== bKeysCount) {\n      return false;\n    }\n    for (const key in a) {\n      const aHasKey = a.hasOwnProperty(key);\n      const bHasKey = b.hasOwnProperty(key);\n      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n  }\n  return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n  return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n  return !!(val && val[\"__v_isRef\"] === true);\n};\nconst toDisplayString = (val) => {\n  return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n  if (isRef(val)) {\n    return replacer(_key, val.value);\n  } else if (isMap(val)) {\n    return {\n      [`Map(${val.size})`]: [...val.entries()].reduce(\n        (entries, [key, val2], i) => {\n          entries[stringifySymbol(key, i) + \" =>\"] = val2;\n          return entries;\n        },\n        {}\n      )\n    };\n  } else if (isSet(val)) {\n    return {\n      [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n    };\n  } else if (isSymbol(val)) {\n    return stringifySymbol(val);\n  } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n    return String(val);\n  }\n  return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n  var _a;\n  return (\n    // Symbol.description in es2019+ so we need to cast here to pass\n    // the lib: es2016 check\n    isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n  );\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, cssVarNameEscapeSymbolsRE, def, escapeHtml, escapeHtmlComment, extend, genCacheKey, genPropsAccessExp, generateCodeFrame, getEscapedCssVarName, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownMathMLAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { hasChanged, extend, isArray, isIntegerKey, isSymbol, isMap, hasOwn, isObject, makeMap, toRawType, capitalize, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, NOOP, remove } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n  console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n  constructor(detached = false) {\n    this.detached = detached;\n    /**\n     * @internal\n     */\n    this._active = true;\n    /**\n     * @internal\n     */\n    this.effects = [];\n    /**\n     * @internal\n     */\n    this.cleanups = [];\n    this._isPaused = false;\n    this.parent = activeEffectScope;\n    if (!detached && activeEffectScope) {\n      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n        this\n      ) - 1;\n    }\n  }\n  get active() {\n    return this._active;\n  }\n  pause() {\n    if (this._active) {\n      this._isPaused = true;\n      let i, l;\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].pause();\n        }\n      }\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].pause();\n      }\n    }\n  }\n  /**\n   * Resumes the effect scope, including all child scopes and effects.\n   */\n  resume() {\n    if (this._active) {\n      if (this._isPaused) {\n        this._isPaused = false;\n        let i, l;\n        if (this.scopes) {\n          for (i = 0, l = this.scopes.length; i < l; i++) {\n            this.scopes[i].resume();\n          }\n        }\n        for (i = 0, l = this.effects.length; i < l; i++) {\n          this.effects[i].resume();\n        }\n      }\n    }\n  }\n  run(fn) {\n    if (this._active) {\n      const currentEffectScope = activeEffectScope;\n      try {\n        activeEffectScope = this;\n        return fn();\n      } finally {\n        activeEffectScope = currentEffectScope;\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(`cannot run an inactive effect scope.`);\n    }\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  on() {\n    activeEffectScope = this;\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  off() {\n    activeEffectScope = this.parent;\n  }\n  stop(fromParent) {\n    if (this._active) {\n      this._active = false;\n      let i, l;\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].stop();\n      }\n      this.effects.length = 0;\n      for (i = 0, l = this.cleanups.length; i < l; i++) {\n        this.cleanups[i]();\n      }\n      this.cleanups.length = 0;\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].stop(true);\n        }\n        this.scopes.length = 0;\n      }\n      if (!this.detached && this.parent && !fromParent) {\n        const last = this.parent.scopes.pop();\n        if (last && last !== this) {\n          this.parent.scopes[this.index] = last;\n          last.index = this.index;\n        }\n      }\n      this.parent = void 0;\n    }\n  }\n}\nfunction effectScope(detached) {\n  return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n  return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n  if (activeEffectScope) {\n    activeEffectScope.cleanups.push(fn);\n  } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n    warn(\n      `onScopeDispose() is called when there is no active effect scope to be associated with.`\n    );\n  }\n}\n\nlet activeSub;\nconst EffectFlags = {\n  \"ACTIVE\": 1,\n  \"1\": \"ACTIVE\",\n  \"RUNNING\": 2,\n  \"2\": \"RUNNING\",\n  \"TRACKING\": 4,\n  \"4\": \"TRACKING\",\n  \"NOTIFIED\": 8,\n  \"8\": \"NOTIFIED\",\n  \"DIRTY\": 16,\n  \"16\": \"DIRTY\",\n  \"ALLOW_RECURSE\": 32,\n  \"32\": \"ALLOW_RECURSE\",\n  \"PAUSED\": 64,\n  \"64\": \"PAUSED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n  constructor(fn) {\n    this.fn = fn;\n    /**\n     * @internal\n     */\n    this.deps = void 0;\n    /**\n     * @internal\n     */\n    this.depsTail = void 0;\n    /**\n     * @internal\n     */\n    this.flags = 1 | 4;\n    /**\n     * @internal\n     */\n    this.next = void 0;\n    /**\n     * @internal\n     */\n    this.cleanup = void 0;\n    this.scheduler = void 0;\n    if (activeEffectScope && activeEffectScope.active) {\n      activeEffectScope.effects.push(this);\n    }\n  }\n  pause() {\n    this.flags |= 64;\n  }\n  resume() {\n    if (this.flags & 64) {\n      this.flags &= ~64;\n      if (pausedQueueEffects.has(this)) {\n        pausedQueueEffects.delete(this);\n        this.trigger();\n      }\n    }\n  }\n  /**\n   * @internal\n   */\n  notify() {\n    if (this.flags & 2 && !(this.flags & 32)) {\n      return;\n    }\n    if (!(this.flags & 8)) {\n      batch(this);\n    }\n  }\n  run() {\n    if (!(this.flags & 1)) {\n      return this.fn();\n    }\n    this.flags |= 2;\n    cleanupEffect(this);\n    prepareDeps(this);\n    const prevEffect = activeSub;\n    const prevShouldTrack = shouldTrack;\n    activeSub = this;\n    shouldTrack = true;\n    try {\n      return this.fn();\n    } finally {\n      if (!!(process.env.NODE_ENV !== \"production\") && activeSub !== this) {\n        warn(\n          \"Active effect was not restored correctly - this is likely a Vue internal bug.\"\n        );\n      }\n      cleanupDeps(this);\n      activeSub = prevEffect;\n      shouldTrack = prevShouldTrack;\n      this.flags &= ~2;\n    }\n  }\n  stop() {\n    if (this.flags & 1) {\n      for (let link = this.deps; link; link = link.nextDep) {\n        removeSub(link);\n      }\n      this.deps = this.depsTail = void 0;\n      cleanupEffect(this);\n      this.onStop && this.onStop();\n      this.flags &= ~1;\n    }\n  }\n  trigger() {\n    if (this.flags & 64) {\n      pausedQueueEffects.add(this);\n    } else if (this.scheduler) {\n      this.scheduler();\n    } else {\n      this.runIfDirty();\n    }\n  }\n  /**\n   * @internal\n   */\n  runIfDirty() {\n    if (isDirty(this)) {\n      this.run();\n    }\n  }\n  get dirty() {\n    return isDirty(this);\n  }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n  sub.flags |= 8;\n  if (isComputed) {\n    sub.next = batchedComputed;\n    batchedComputed = sub;\n    return;\n  }\n  sub.next = batchedSub;\n  batchedSub = sub;\n}\nfunction startBatch() {\n  batchDepth++;\n}\nfunction endBatch() {\n  if (--batchDepth > 0) {\n    return;\n  }\n  if (batchedComputed) {\n    let e = batchedComputed;\n    batchedComputed = void 0;\n    while (e) {\n      const next = e.next;\n      e.next = void 0;\n      e.flags &= ~8;\n      e = next;\n    }\n  }\n  let error;\n  while (batchedSub) {\n    let e = batchedSub;\n    batchedSub = void 0;\n    while (e) {\n      const next = e.next;\n      e.next = void 0;\n      e.flags &= ~8;\n      if (e.flags & 1) {\n        try {\n          ;\n          e.trigger();\n        } catch (err) {\n          if (!error) error = err;\n        }\n      }\n      e = next;\n    }\n  }\n  if (error) throw error;\n}\nfunction prepareDeps(sub) {\n  for (let link = sub.deps; link; link = link.nextDep) {\n    link.version = -1;\n    link.prevActiveLink = link.dep.activeLink;\n    link.dep.activeLink = link;\n  }\n}\nfunction cleanupDeps(sub) {\n  let head;\n  let tail = sub.depsTail;\n  let link = tail;\n  while (link) {\n    const prev = link.prevDep;\n    if (link.version === -1) {\n      if (link === tail) tail = prev;\n      removeSub(link);\n      removeDep(link);\n    } else {\n      head = link;\n    }\n    link.dep.activeLink = link.prevActiveLink;\n    link.prevActiveLink = void 0;\n    link = prev;\n  }\n  sub.deps = head;\n  sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n  for (let link = sub.deps; link; link = link.nextDep) {\n    if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n      return true;\n    }\n  }\n  if (sub._dirty) {\n    return true;\n  }\n  return false;\n}\nfunction refreshComputed(computed) {\n  if (computed.flags & 4 && !(computed.flags & 16)) {\n    return;\n  }\n  computed.flags &= ~16;\n  if (computed.globalVersion === globalVersion) {\n    return;\n  }\n  computed.globalVersion = globalVersion;\n  const dep = computed.dep;\n  computed.flags |= 2;\n  if (dep.version > 0 && !computed.isSSR && computed.deps && !isDirty(computed)) {\n    computed.flags &= ~2;\n    return;\n  }\n  const prevSub = activeSub;\n  const prevShouldTrack = shouldTrack;\n  activeSub = computed;\n  shouldTrack = true;\n  try {\n    prepareDeps(computed);\n    const value = computed.fn(computed._value);\n    if (dep.version === 0 || hasChanged(value, computed._value)) {\n      computed._value = value;\n      dep.version++;\n    }\n  } catch (err) {\n    dep.version++;\n    throw err;\n  } finally {\n    activeSub = prevSub;\n    shouldTrack = prevShouldTrack;\n    cleanupDeps(computed);\n    computed.flags &= ~2;\n  }\n}\nfunction removeSub(link, soft = false) {\n  const { dep, prevSub, nextSub } = link;\n  if (prevSub) {\n    prevSub.nextSub = nextSub;\n    link.prevSub = void 0;\n  }\n  if (nextSub) {\n    nextSub.prevSub = prevSub;\n    link.nextSub = void 0;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && dep.subsHead === link) {\n    dep.subsHead = nextSub;\n  }\n  if (dep.subs === link) {\n    dep.subs = prevSub;\n    if (!prevSub && dep.computed) {\n      dep.computed.flags &= ~4;\n      for (let l = dep.computed.deps; l; l = l.nextDep) {\n        removeSub(l, true);\n      }\n    }\n  }\n  if (!soft && !--dep.sc && dep.map) {\n    dep.map.delete(dep.key);\n  }\n}\nfunction removeDep(link) {\n  const { prevDep, nextDep } = link;\n  if (prevDep) {\n    prevDep.nextDep = nextDep;\n    link.prevDep = void 0;\n  }\n  if (nextDep) {\n    nextDep.prevDep = prevDep;\n    link.nextDep = void 0;\n  }\n}\nfunction effect(fn, options) {\n  if (fn.effect instanceof ReactiveEffect) {\n    fn = fn.effect.fn;\n  }\n  const e = new ReactiveEffect(fn);\n  if (options) {\n    extend(e, options);\n  }\n  try {\n    e.run();\n  } catch (err) {\n    e.stop();\n    throw err;\n  }\n  const runner = e.run.bind(e);\n  runner.effect = e;\n  return runner;\n}\nfunction stop(runner) {\n  runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction enableTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = true;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n  if (activeSub instanceof ReactiveEffect) {\n    activeSub.cleanup = fn;\n  } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n    warn(\n      `onEffectCleanup() was called when there was no active effect to associate with.`\n    );\n  }\n}\nfunction cleanupEffect(e) {\n  const { cleanup } = e;\n  e.cleanup = void 0;\n  if (cleanup) {\n    const prevSub = activeSub;\n    activeSub = void 0;\n    try {\n      cleanup();\n    } finally {\n      activeSub = prevSub;\n    }\n  }\n}\n\nlet globalVersion = 0;\nclass Link {\n  constructor(sub, dep) {\n    this.sub = sub;\n    this.dep = dep;\n    this.version = dep.version;\n    this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n  }\n}\nclass Dep {\n  constructor(computed) {\n    this.computed = computed;\n    this.version = 0;\n    /**\n     * Link between this dep and the current active effect\n     */\n    this.activeLink = void 0;\n    /**\n     * Doubly linked list representing the subscribing effects (tail)\n     */\n    this.subs = void 0;\n    /**\n     * For object property deps cleanup\n     */\n    this.map = void 0;\n    this.key = void 0;\n    /**\n     * Subscriber counter\n     */\n    this.sc = 0;\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      this.subsHead = void 0;\n    }\n  }\n  track(debugInfo) {\n    if (!activeSub || !shouldTrack || activeSub === this.computed) {\n      return;\n    }\n    let link = this.activeLink;\n    if (link === void 0 || link.sub !== activeSub) {\n      link = this.activeLink = new Link(activeSub, this);\n      if (!activeSub.deps) {\n        activeSub.deps = activeSub.depsTail = link;\n      } else {\n        link.prevDep = activeSub.depsTail;\n        activeSub.depsTail.nextDep = link;\n        activeSub.depsTail = link;\n      }\n      addSub(link);\n    } else if (link.version === -1) {\n      link.version = this.version;\n      if (link.nextDep) {\n        const next = link.nextDep;\n        next.prevDep = link.prevDep;\n        if (link.prevDep) {\n          link.prevDep.nextDep = next;\n        }\n        link.prevDep = activeSub.depsTail;\n        link.nextDep = void 0;\n        activeSub.depsTail.nextDep = link;\n        activeSub.depsTail = link;\n        if (activeSub.deps === link) {\n          activeSub.deps = next;\n        }\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && activeSub.onTrack) {\n      activeSub.onTrack(\n        extend(\n          {\n            effect: activeSub\n          },\n          debugInfo\n        )\n      );\n    }\n    return link;\n  }\n  trigger(debugInfo) {\n    this.version++;\n    globalVersion++;\n    this.notify(debugInfo);\n  }\n  notify(debugInfo) {\n    startBatch();\n    try {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        for (let head = this.subsHead; head; head = head.nextSub) {\n          if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n            head.sub.onTrigger(\n              extend(\n                {\n                  effect: head.sub\n                },\n                debugInfo\n              )\n            );\n          }\n        }\n      }\n      for (let link = this.subs; link; link = link.prevSub) {\n        if (link.sub.notify()) {\n          ;\n          link.sub.dep.notify();\n        }\n      }\n    } finally {\n      endBatch();\n    }\n  }\n}\nfunction addSub(link) {\n  link.dep.sc++;\n  if (link.sub.flags & 4) {\n    const computed = link.dep.computed;\n    if (computed && !link.dep.subs) {\n      computed.flags |= 4 | 16;\n      for (let l = computed.deps; l; l = l.nextDep) {\n        addSub(l);\n      }\n    }\n    const currentTail = link.dep.subs;\n    if (currentTail !== link) {\n      link.prevSub = currentTail;\n      if (currentTail) currentTail.nextSub = link;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && link.dep.subsHead === void 0) {\n      link.dep.subsHead = link;\n    }\n    link.dep.subs = link;\n  }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(\n  !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nconst MAP_KEY_ITERATE_KEY = Symbol(\n  !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nconst ARRAY_ITERATE_KEY = Symbol(\n  !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n  if (shouldTrack && activeSub) {\n    let depsMap = targetMap.get(target);\n    if (!depsMap) {\n      targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n    }\n    let dep = depsMap.get(key);\n    if (!dep) {\n      depsMap.set(key, dep = new Dep());\n      dep.map = depsMap;\n      dep.key = key;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      dep.track({\n        target,\n        type,\n        key\n      });\n    } else {\n      dep.track();\n    }\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    globalVersion++;\n    return;\n  }\n  const run = (dep) => {\n    if (dep) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        dep.trigger({\n          target,\n          type,\n          key,\n          newValue,\n          oldValue,\n          oldTarget\n        });\n      } else {\n        dep.trigger();\n      }\n    }\n  };\n  startBatch();\n  if (type === \"clear\") {\n    depsMap.forEach(run);\n  } else {\n    const targetIsArray = isArray(target);\n    const isArrayIndex = targetIsArray && isIntegerKey(key);\n    if (targetIsArray && key === \"length\") {\n      const newLength = Number(newValue);\n      depsMap.forEach((dep, key2) => {\n        if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {\n          run(dep);\n        }\n      });\n    } else {\n      if (key !== void 0 || depsMap.has(void 0)) {\n        run(depsMap.get(key));\n      }\n      if (isArrayIndex) {\n        run(depsMap.get(ARRAY_ITERATE_KEY));\n      }\n      switch (type) {\n        case \"add\":\n          if (!targetIsArray) {\n            run(depsMap.get(ITERATE_KEY));\n            if (isMap(target)) {\n              run(depsMap.get(MAP_KEY_ITERATE_KEY));\n            }\n          } else if (isArrayIndex) {\n            run(depsMap.get(\"length\"));\n          }\n          break;\n        case \"delete\":\n          if (!targetIsArray) {\n            run(depsMap.get(ITERATE_KEY));\n            if (isMap(target)) {\n              run(depsMap.get(MAP_KEY_ITERATE_KEY));\n            }\n          }\n          break;\n        case \"set\":\n          if (isMap(target)) {\n            run(depsMap.get(ITERATE_KEY));\n          }\n          break;\n      }\n    }\n  }\n  endBatch();\n}\nfunction getDepFromReactive(object, key) {\n  const depMap = targetMap.get(object);\n  return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n  const raw = toRaw(array);\n  if (raw === array) return raw;\n  track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n  return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n  track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n  return arr;\n}\nconst arrayInstrumentations = {\n  __proto__: null,\n  [Symbol.iterator]() {\n    return iterator(this, Symbol.iterator, toReactive);\n  },\n  concat(...args) {\n    return reactiveReadArray(this).concat(\n      ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)\n    );\n  },\n  entries() {\n    return iterator(this, \"entries\", (value) => {\n      value[1] = toReactive(value[1]);\n      return value;\n    });\n  },\n  every(fn, thisArg) {\n    return apply(this, \"every\", fn, thisArg, void 0, arguments);\n  },\n  filter(fn, thisArg) {\n    return apply(this, \"filter\", fn, thisArg, (v) => v.map(toReactive), arguments);\n  },\n  find(fn, thisArg) {\n    return apply(this, \"find\", fn, thisArg, toReactive, arguments);\n  },\n  findIndex(fn, thisArg) {\n    return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n  },\n  findLast(fn, thisArg) {\n    return apply(this, \"findLast\", fn, thisArg, toReactive, arguments);\n  },\n  findLastIndex(fn, thisArg) {\n    return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n  },\n  // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n  forEach(fn, thisArg) {\n    return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n  },\n  includes(...args) {\n    return searchProxy(this, \"includes\", args);\n  },\n  indexOf(...args) {\n    return searchProxy(this, \"indexOf\", args);\n  },\n  join(separator) {\n    return reactiveReadArray(this).join(separator);\n  },\n  // keys() iterator only reads `length`, no optimisation required\n  lastIndexOf(...args) {\n    return searchProxy(this, \"lastIndexOf\", args);\n  },\n  map(fn, thisArg) {\n    return apply(this, \"map\", fn, thisArg, void 0, arguments);\n  },\n  pop() {\n    return noTracking(this, \"pop\");\n  },\n  push(...args) {\n    return noTracking(this, \"push\", args);\n  },\n  reduce(fn, ...args) {\n    return reduce(this, \"reduce\", fn, args);\n  },\n  reduceRight(fn, ...args) {\n    return reduce(this, \"reduceRight\", fn, args);\n  },\n  shift() {\n    return noTracking(this, \"shift\");\n  },\n  // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n  some(fn, thisArg) {\n    return apply(this, \"some\", fn, thisArg, void 0, arguments);\n  },\n  splice(...args) {\n    return noTracking(this, \"splice\", args);\n  },\n  toReversed() {\n    return reactiveReadArray(this).toReversed();\n  },\n  toSorted(comparer) {\n    return reactiveReadArray(this).toSorted(comparer);\n  },\n  toSpliced(...args) {\n    return reactiveReadArray(this).toSpliced(...args);\n  },\n  unshift(...args) {\n    return noTracking(this, \"unshift\", args);\n  },\n  values() {\n    return iterator(this, \"values\", toReactive);\n  }\n};\nfunction iterator(self, method, wrapValue) {\n  const arr = shallowReadArray(self);\n  const iter = arr[method]();\n  if (arr !== self && !isShallow(self)) {\n    iter._next = iter.next;\n    iter.next = () => {\n      const result = iter._next();\n      if (result.value) {\n        result.value = wrapValue(result.value);\n      }\n      return result;\n    };\n  }\n  return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n  const arr = shallowReadArray(self);\n  const needsWrap = arr !== self && !isShallow(self);\n  const methodFn = arr[method];\n  if (methodFn !== arrayProto[method]) {\n    const result2 = methodFn.apply(self, args);\n    return needsWrap ? toReactive(result2) : result2;\n  }\n  let wrappedFn = fn;\n  if (arr !== self) {\n    if (needsWrap) {\n      wrappedFn = function(item, index) {\n        return fn.call(this, toReactive(item), index, self);\n      };\n    } else if (fn.length > 2) {\n      wrappedFn = function(item, index) {\n        return fn.call(this, item, index, self);\n      };\n    }\n  }\n  const result = methodFn.call(arr, wrappedFn, thisArg);\n  return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n  const arr = shallowReadArray(self);\n  let wrappedFn = fn;\n  if (arr !== self) {\n    if (!isShallow(self)) {\n      wrappedFn = function(acc, item, index) {\n        return fn.call(this, acc, toReactive(item), index, self);\n      };\n    } else if (fn.length > 3) {\n      wrappedFn = function(acc, item, index) {\n        return fn.call(this, acc, item, index, self);\n      };\n    }\n  }\n  return arr[method](wrappedFn, ...args);\n}\nfunction searchProxy(self, method, args) {\n  const arr = toRaw(self);\n  track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n  const res = arr[method](...args);\n  if ((res === -1 || res === false) && isProxy(args[0])) {\n    args[0] = toRaw(args[0]);\n    return arr[method](...args);\n  }\n  return res;\n}\nfunction noTracking(self, method, args = []) {\n  pauseTracking();\n  startBatch();\n  const res = toRaw(self)[method].apply(self, args);\n  endBatch();\n  resetTracking();\n  return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nfunction hasOwnProperty(key) {\n  if (!isSymbol(key)) key = String(key);\n  const obj = toRaw(this);\n  track(obj, \"has\", key);\n  return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n  constructor(_isReadonly = false, _isShallow = false) {\n    this._isReadonly = _isReadonly;\n    this._isShallow = _isShallow;\n  }\n  get(target, key, receiver) {\n    if (key === \"__v_skip\") return target[\"__v_skip\"];\n    const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_isShallow\") {\n      return isShallow2;\n    } else if (key === \"__v_raw\") {\n      if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n      // this means the receiver is a user proxy of the reactive proxy\n      Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n        return target;\n      }\n      return;\n    }\n    const targetIsArray = isArray(target);\n    if (!isReadonly2) {\n      let fn;\n      if (targetIsArray && (fn = arrayInstrumentations[key])) {\n        return fn;\n      }\n      if (key === \"hasOwnProperty\") {\n        return hasOwnProperty;\n      }\n    }\n    const res = Reflect.get(\n      target,\n      key,\n      // if this is a proxy wrapping a ref, return methods using the raw ref\n      // as receiver so that we don't have to call `toRaw` on the ref in all\n      // its class methods\n      isRef(target) ? target : receiver\n    );\n    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly2) {\n      track(target, \"get\", key);\n    }\n    if (isShallow2) {\n      return res;\n    }\n    if (isRef(res)) {\n      return targetIsArray && isIntegerKey(key) ? res : res.value;\n    }\n    if (isObject(res)) {\n      return isReadonly2 ? readonly(res) : reactive(res);\n    }\n    return res;\n  }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n  constructor(isShallow2 = false) {\n    super(false, isShallow2);\n  }\n  set(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (!this._isShallow) {\n      const isOldValueReadonly = isReadonly(oldValue);\n      if (!isShallow(value) && !isReadonly(value)) {\n        oldValue = toRaw(oldValue);\n        value = toRaw(value);\n      }\n      if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n        if (isOldValueReadonly) {\n          return false;\n        } else {\n          oldValue.value = value;\n          return true;\n        }\n      }\n    }\n    const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n    const result = Reflect.set(\n      target,\n      key,\n      value,\n      isRef(target) ? target : receiver\n    );\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (hasChanged(value, oldValue)) {\n        trigger(target, \"set\", key, value, oldValue);\n      }\n    }\n    return result;\n  }\n  deleteProperty(target, key) {\n    const hadKey = hasOwn(target, key);\n    const oldValue = target[key];\n    const result = Reflect.deleteProperty(target, key);\n    if (result && hadKey) {\n      trigger(target, \"delete\", key, void 0, oldValue);\n    }\n    return result;\n  }\n  has(target, key) {\n    const result = Reflect.has(target, key);\n    if (!isSymbol(key) || !builtInSymbols.has(key)) {\n      track(target, \"has\", key);\n    }\n    return result;\n  }\n  ownKeys(target) {\n    track(\n      target,\n      \"iterate\",\n      isArray(target) ? \"length\" : ITERATE_KEY\n    );\n    return Reflect.ownKeys(target);\n  }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n  constructor(isShallow2 = false) {\n    super(true, isShallow2);\n  }\n  set(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(\n        `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  }\n  deleteProperty(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(\n        `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n  return function(...args) {\n    const target = this[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const targetIsMap = isMap(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n    !isReadonly2 && track(\n      rawTarget,\n      \"iterate\",\n      isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n    );\n    return {\n      // iterator protocol\n      next() {\n        const { value, done } = innerIterator.next();\n        return done ? { value, done } : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      // iterable protocol\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n      warn(\n        `${capitalize(type)} operation ${key}failed: target is readonly.`,\n        toRaw(this)\n      );\n    }\n    return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n  };\n}\nfunction createInstrumentations(readonly, shallow) {\n  const instrumentations = {\n    get(key) {\n      const target = this[\"__v_raw\"];\n      const rawTarget = toRaw(target);\n      const rawKey = toRaw(key);\n      if (!readonly) {\n        if (hasChanged(key, rawKey)) {\n          track(rawTarget, \"get\", key);\n        }\n        track(rawTarget, \"get\", rawKey);\n      }\n      const { has } = getProto(rawTarget);\n      const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n      if (has.call(rawTarget, key)) {\n        return wrap(target.get(key));\n      } else if (has.call(rawTarget, rawKey)) {\n        return wrap(target.get(rawKey));\n      } else if (target !== rawTarget) {\n        target.get(key);\n      }\n    },\n    get size() {\n      const target = this[\"__v_raw\"];\n      !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n      return Reflect.get(target, \"size\", target);\n    },\n    has(key) {\n      const target = this[\"__v_raw\"];\n      const rawTarget = toRaw(target);\n      const rawKey = toRaw(key);\n      if (!readonly) {\n        if (hasChanged(key, rawKey)) {\n          track(rawTarget, \"has\", key);\n        }\n        track(rawTarget, \"has\", rawKey);\n      }\n      return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n    },\n    forEach(callback, thisArg) {\n      const observed = this;\n      const target = observed[\"__v_raw\"];\n      const rawTarget = toRaw(target);\n      const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n      !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n      return target.forEach((value, key) => {\n        return callback.call(thisArg, wrap(value), wrap(key), observed);\n      });\n    }\n  };\n  extend(\n    instrumentations,\n    readonly ? {\n      add: createReadonlyMethod(\"add\"),\n      set: createReadonlyMethod(\"set\"),\n      delete: createReadonlyMethod(\"delete\"),\n      clear: createReadonlyMethod(\"clear\")\n    } : {\n      add(value) {\n        if (!shallow && !isShallow(value) && !isReadonly(value)) {\n          value = toRaw(value);\n        }\n        const target = toRaw(this);\n        const proto = getProto(target);\n        const hadKey = proto.has.call(target, value);\n        if (!hadKey) {\n          target.add(value);\n          trigger(target, \"add\", value, value);\n        }\n        return this;\n      },\n      set(key, value) {\n        if (!shallow && !isShallow(value) && !isReadonly(value)) {\n          value = toRaw(value);\n        }\n        const target = toRaw(this);\n        const { has, get } = getProto(target);\n        let hadKey = has.call(target, key);\n        if (!hadKey) {\n          key = toRaw(key);\n          hadKey = has.call(target, key);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          checkIdentityKeys(target, has, key);\n        }\n        const oldValue = get.call(target, key);\n        target.set(key, value);\n        if (!hadKey) {\n          trigger(target, \"add\", key, value);\n        } else if (hasChanged(value, oldValue)) {\n          trigger(target, \"set\", key, value, oldValue);\n        }\n        return this;\n      },\n      delete(key) {\n        const target = toRaw(this);\n        const { has, get } = getProto(target);\n        let hadKey = has.call(target, key);\n        if (!hadKey) {\n          key = toRaw(key);\n          hadKey = has.call(target, key);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          checkIdentityKeys(target, has, key);\n        }\n        const oldValue = get ? get.call(target, key) : void 0;\n        const result = target.delete(key);\n        if (hadKey) {\n          trigger(target, \"delete\", key, void 0, oldValue);\n        }\n        return result;\n      },\n      clear() {\n        const target = toRaw(this);\n        const hadItems = target.size !== 0;\n        const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n        const result = target.clear();\n        if (hadItems) {\n          trigger(\n            target,\n            \"clear\",\n            void 0,\n            void 0,\n            oldTarget\n          );\n        }\n        return result;\n      }\n    }\n  );\n  const iteratorMethods = [\n    \"keys\",\n    \"values\",\n    \"entries\",\n    Symbol.iterator\n  ];\n  iteratorMethods.forEach((method) => {\n    instrumentations[method] = createIterableMethod(method, readonly, shallow);\n  });\n  return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n  const instrumentations = createInstrumentations(isReadonly2, shallow);\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(\n      hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n      key,\n      receiver\n    );\n  };\n}\nconst mutableCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n  const rawKey = toRaw(key);\n  if (rawKey !== key && has.call(target, rawKey)) {\n    const type = toRawType(target);\n    warn(\n      `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n    );\n  }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1 /* COMMON */;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2 /* COLLECTION */;\n    default:\n      return 0 /* INVALID */;\n  }\n}\nfunction getTargetType(value) {\n  return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n  if (isReadonly(target)) {\n    return target;\n  }\n  return createReactiveObject(\n    target,\n    false,\n    mutableHandlers,\n    mutableCollectionHandlers,\n    reactiveMap\n  );\n}\nfunction shallowReactive(target) {\n  return createReactiveObject(\n    target,\n    false,\n    shallowReactiveHandlers,\n    shallowCollectionHandlers,\n    shallowReactiveMap\n  );\n}\nfunction readonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    readonlyHandlers,\n    readonlyCollectionHandlers,\n    readonlyMap\n  );\n}\nfunction shallowReadonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    shallowReadonlyHandlers,\n    shallowReadonlyCollectionHandlers,\n    shallowReadonlyMap\n  );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n  if (!isObject(target)) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(\n        `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n          target\n        )}`\n      );\n    }\n    return target;\n  }\n  if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0 /* INVALID */) {\n    return target;\n  }\n  const proxy = new Proxy(\n    target,\n    targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n  );\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction isReactive(value) {\n  if (isReadonly(value)) {\n    return isReactive(value[\"__v_raw\"]);\n  }\n  return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n  return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n  return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n  return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n  const raw = observed && observed[\"__v_raw\"];\n  return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n  if (!hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n    def(value, \"__v_skip\", true);\n  }\n  return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction isRef(r) {\n  return r ? r[\"__v_isRef\"] === true : false;\n}\nfunction ref(value) {\n  return createRef(value, false);\n}\nfunction shallowRef(value) {\n  return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n  if (isRef(rawValue)) {\n    return rawValue;\n  }\n  return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n  constructor(value, isShallow2) {\n    this.dep = new Dep();\n    this[\"__v_isRef\"] = true;\n    this[\"__v_isShallow\"] = false;\n    this._rawValue = isShallow2 ? value : toRaw(value);\n    this._value = isShallow2 ? value : toReactive(value);\n    this[\"__v_isShallow\"] = isShallow2;\n  }\n  get value() {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      this.dep.track({\n        target: this,\n        type: \"get\",\n        key: \"value\"\n      });\n    } else {\n      this.dep.track();\n    }\n    return this._value;\n  }\n  set value(newValue) {\n    const oldValue = this._rawValue;\n    const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n    newValue = useDirectValue ? newValue : toRaw(newValue);\n    if (hasChanged(newValue, oldValue)) {\n      this._rawValue = newValue;\n      this._value = useDirectValue ? newValue : toReactive(newValue);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        this.dep.trigger({\n          target: this,\n          type: \"set\",\n          key: \"value\",\n          newValue,\n          oldValue\n        });\n      } else {\n        this.dep.trigger();\n      }\n    }\n  }\n}\nfunction triggerRef(ref2) {\n  if (ref2.dep) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      ref2.dep.trigger({\n        target: ref2,\n        type: \"set\",\n        key: \"value\",\n        newValue: ref2._value\n      });\n    } else {\n      ref2.dep.trigger();\n    }\n  }\n}\nfunction unref(ref2) {\n  return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n  return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n  get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n  set: (target, key, value, receiver) => {\n    const oldValue = target[key];\n    if (isRef(oldValue) && !isRef(value)) {\n      oldValue.value = value;\n      return true;\n    } else {\n      return Reflect.set(target, key, value, receiver);\n    }\n  }\n};\nfunction proxyRefs(objectWithRefs) {\n  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n  constructor(factory) {\n    this[\"__v_isRef\"] = true;\n    this._value = void 0;\n    const dep = this.dep = new Dep();\n    const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n    this._get = get;\n    this._set = set;\n  }\n  get value() {\n    return this._value = this._get();\n  }\n  set value(newVal) {\n    this._set(newVal);\n  }\n}\nfunction customRef(factory) {\n  return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n    warn(`toRefs() expects a reactive object but received a plain one.`);\n  }\n  const ret = isArray(object) ? new Array(object.length) : {};\n  for (const key in object) {\n    ret[key] = propertyToRef(object, key);\n  }\n  return ret;\n}\nclass ObjectRefImpl {\n  constructor(_object, _key, _defaultValue) {\n    this._object = _object;\n    this._key = _key;\n    this._defaultValue = _defaultValue;\n    this[\"__v_isRef\"] = true;\n    this._value = void 0;\n  }\n  get value() {\n    const val = this._object[this._key];\n    return this._value = val === void 0 ? this._defaultValue : val;\n  }\n  set value(newVal) {\n    this._object[this._key] = newVal;\n  }\n  get dep() {\n    return getDepFromReactive(toRaw(this._object), this._key);\n  }\n}\nclass GetterRefImpl {\n  constructor(_getter) {\n    this._getter = _getter;\n    this[\"__v_isRef\"] = true;\n    this[\"__v_isReadonly\"] = true;\n    this._value = void 0;\n  }\n  get value() {\n    return this._value = this._getter();\n  }\n}\nfunction toRef(source, key, defaultValue) {\n  if (isRef(source)) {\n    return source;\n  } else if (isFunction(source)) {\n    return new GetterRefImpl(source);\n  } else if (isObject(source) && arguments.length > 1) {\n    return propertyToRef(source, key, defaultValue);\n  } else {\n    return ref(source);\n  }\n}\nfunction propertyToRef(source, key, defaultValue) {\n  const val = source[key];\n  return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n  constructor(fn, setter, isSSR) {\n    this.fn = fn;\n    this.setter = setter;\n    /**\n     * @internal\n     */\n    this._value = void 0;\n    /**\n     * @internal\n     */\n    this.dep = new Dep(this);\n    /**\n     * @internal\n     */\n    this.__v_isRef = true;\n    // TODO isolatedDeclarations \"__v_isReadonly\"\n    // A computed is also a subscriber that tracks other deps\n    /**\n     * @internal\n     */\n    this.deps = void 0;\n    /**\n     * @internal\n     */\n    this.depsTail = void 0;\n    /**\n     * @internal\n     */\n    this.flags = 16;\n    /**\n     * @internal\n     */\n    this.globalVersion = globalVersion - 1;\n    /**\n     * @internal\n     */\n    this.next = void 0;\n    // for backwards compat\n    this.effect = this;\n    this[\"__v_isReadonly\"] = !setter;\n    this.isSSR = isSSR;\n  }\n  /**\n   * @internal\n   */\n  notify() {\n    this.flags |= 16;\n    if (!(this.flags & 8) && // avoid infinite self recursion\n    activeSub !== this) {\n      batch(this, true);\n      return true;\n    } else if (!!(process.env.NODE_ENV !== \"production\")) ;\n  }\n  get value() {\n    const link = !!(process.env.NODE_ENV !== \"production\") ? this.dep.track({\n      target: this,\n      type: \"get\",\n      key: \"value\"\n    }) : this.dep.track();\n    refreshComputed(this);\n    if (link) {\n      link.version = this.dep.version;\n    }\n    return this._value;\n  }\n  set value(newValue) {\n    if (this.setter) {\n      this.setter(newValue);\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(\"Write operation failed: computed value is readonly\");\n    }\n  }\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n  let getter;\n  let setter;\n  if (isFunction(getterOrOptions)) {\n    getter = getterOrOptions;\n  } else {\n    getter = getterOrOptions.get;\n    setter = getterOrOptions.set;\n  }\n  const cRef = new ComputedRefImpl(getter, setter, isSSR);\n  if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n    cRef.onTrack = debugOptions.onTrack;\n    cRef.onTrigger = debugOptions.onTrigger;\n  }\n  return cRef;\n}\n\nconst TrackOpTypes = {\n  \"GET\": \"get\",\n  \"HAS\": \"has\",\n  \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n  \"SET\": \"set\",\n  \"ADD\": \"add\",\n  \"DELETE\": \"delete\",\n  \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n  \"SKIP\": \"__v_skip\",\n  \"IS_REACTIVE\": \"__v_isReactive\",\n  \"IS_READONLY\": \"__v_isReadonly\",\n  \"IS_SHALLOW\": \"__v_isShallow\",\n  \"RAW\": \"__v_raw\",\n  \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n  \"WATCH_GETTER\": 2,\n  \"2\": \"WATCH_GETTER\",\n  \"WATCH_CALLBACK\": 3,\n  \"3\": \"WATCH_CALLBACK\",\n  \"WATCH_CLEANUP\": 4,\n  \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n  return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n  if (owner) {\n    let cleanups = cleanupMap.get(owner);\n    if (!cleanups) cleanupMap.set(owner, cleanups = []);\n    cleanups.push(cleanupFn);\n  } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n    warn(\n      `onWatcherCleanup() was called when there was no active watcher to associate with.`\n    );\n  }\n}\nfunction watch(source, cb, options = EMPTY_OBJ) {\n  const { immediate, deep, once, scheduler, augmentJob, call } = options;\n  const warnInvalidSource = (s) => {\n    (options.onWarn || warn)(\n      `Invalid watch source: `,\n      s,\n      `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n    );\n  };\n  const reactiveGetter = (source2) => {\n    if (deep) return source2;\n    if (isShallow(source2) || deep === false || deep === 0)\n      return traverse(source2, 1);\n    return traverse(source2);\n  };\n  let effect;\n  let getter;\n  let cleanup;\n  let boundCleanup;\n  let forceTrigger = false;\n  let isMultiSource = false;\n  if (isRef(source)) {\n    getter = () => source.value;\n    forceTrigger = isShallow(source);\n  } else if (isReactive(source)) {\n    getter = () => reactiveGetter(source);\n    forceTrigger = true;\n  } else if (isArray(source)) {\n    isMultiSource = true;\n    forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n    getter = () => source.map((s) => {\n      if (isRef(s)) {\n        return s.value;\n      } else if (isReactive(s)) {\n        return reactiveGetter(s);\n      } else if (isFunction(s)) {\n        return call ? call(s, 2) : s();\n      } else {\n        !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n      }\n    });\n  } else if (isFunction(source)) {\n    if (cb) {\n      getter = call ? () => call(source, 2) : source;\n    } else {\n      getter = () => {\n        if (cleanup) {\n          pauseTracking();\n          try {\n            cleanup();\n          } finally {\n            resetTracking();\n          }\n        }\n        const currentEffect = activeWatcher;\n        activeWatcher = effect;\n        try {\n          return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n        } finally {\n          activeWatcher = currentEffect;\n        }\n      };\n    }\n  } else {\n    getter = NOOP;\n    !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n  }\n  if (cb && deep) {\n    const baseGetter = getter;\n    const depth = deep === true ? Infinity : deep;\n    getter = () => traverse(baseGetter(), depth);\n  }\n  const scope = getCurrentScope();\n  const watchHandle = () => {\n    effect.stop();\n    if (scope && scope.active) {\n      remove(scope.effects, effect);\n    }\n  };\n  if (once && cb) {\n    const _cb = cb;\n    cb = (...args) => {\n      _cb(...args);\n      watchHandle();\n    };\n  }\n  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n  const job = (immediateFirstRun) => {\n    if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n      return;\n    }\n    if (cb) {\n      const newValue = effect.run();\n      if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {\n        if (cleanup) {\n          cleanup();\n        }\n        const currentWatcher = activeWatcher;\n        activeWatcher = effect;\n        try {\n          const args = [\n            newValue,\n            // pass undefined as the old value when it's changed for the first time\n            oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n            boundCleanup\n          ];\n          call ? call(cb, 3, args) : (\n            // @ts-expect-error\n            cb(...args)\n          );\n          oldValue = newValue;\n        } finally {\n          activeWatcher = currentWatcher;\n        }\n      }\n    } else {\n      effect.run();\n    }\n  };\n  if (augmentJob) {\n    augmentJob(job);\n  }\n  effect = new ReactiveEffect(getter);\n  effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n  boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n  cleanup = effect.onStop = () => {\n    const cleanups = cleanupMap.get(effect);\n    if (cleanups) {\n      if (call) {\n        call(cleanups, 4);\n      } else {\n        for (const cleanup2 of cleanups) cleanup2();\n      }\n      cleanupMap.delete(effect);\n    }\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    effect.onTrack = options.onTrack;\n    effect.onTrigger = options.onTrigger;\n  }\n  if (cb) {\n    if (immediate) {\n      job(true);\n    } else {\n      oldValue = effect.run();\n    }\n  } else if (scheduler) {\n    scheduler(job.bind(null, true), true);\n  } else {\n    effect.run();\n  }\n  watchHandle.pause = effect.pause.bind(effect);\n  watchHandle.resume = effect.resume.bind(effect);\n  watchHandle.stop = watchHandle;\n  return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n  if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n    return value;\n  }\n  seen = seen || /* @__PURE__ */ new Set();\n  if (seen.has(value)) {\n    return value;\n  }\n  seen.add(value);\n  depth--;\n  if (isRef(value)) {\n    traverse(value.value, depth, seen);\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      traverse(value[i], depth, seen);\n    }\n  } else if (isSet(value) || isMap(value)) {\n    value.forEach((v) => {\n      traverse(v, depth, seen);\n    });\n  } else if (isPlainObject(value)) {\n    for (const key in value) {\n      traverse(value[key], depth, seen);\n    }\n    for (const key of Object.getOwnPropertySymbols(value)) {\n      if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n        traverse(value[key], depth, seen);\n      }\n    }\n  }\n  return value;\n}\n\nexport { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };\n","/**\n* @vue/runtime-core v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, traverse, shallowRef, readonly, isReactive, ref, isShallow, shallowReadArray, toReactive, shallowReadonly, track, reactive, shallowReactive, trigger, ReactiveEffect, watch as watch$1, customRef, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, EMPTY_OBJ, NOOP, getGlobalThis, extend, isBuiltInDirective, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, capitalize, camelize, isSymbol, isGloballyAllowed, NO, hyphenate, EMPTY_ARR, toRawType, makeMap, hasChanged, looseToNumber, isModelListener, toNumber } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n  stack.push(vnode);\n}\nfunction popWarningContext() {\n  stack.pop();\n}\nlet isWarning = false;\nfunction warn$1(msg, ...args) {\n  if (isWarning) return;\n  isWarning = true;\n  pauseTracking();\n  const instance = stack.length ? stack[stack.length - 1].component : null;\n  const appWarnHandler = instance && instance.appContext.config.warnHandler;\n  const trace = getComponentTrace();\n  if (appWarnHandler) {\n    callWithErrorHandling(\n      appWarnHandler,\n      instance,\n      11,\n      [\n        // eslint-disable-next-line no-restricted-syntax\n        msg + args.map((a) => {\n          var _a, _b;\n          return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n        }).join(\"\"),\n        instance && instance.proxy,\n        trace.map(\n          ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n        ).join(\"\\n\"),\n        trace\n      ]\n    );\n  } else {\n    const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n    if (trace.length && // avoid spamming console during tests\n    true) {\n      warnArgs.push(`\n`, ...formatTrace(trace));\n    }\n    console.warn(...warnArgs);\n  }\n  resetTracking();\n  isWarning = false;\n}\nfunction getComponentTrace() {\n  let currentVNode = stack[stack.length - 1];\n  if (!currentVNode) {\n    return [];\n  }\n  const normalizedStack = [];\n  while (currentVNode) {\n    const last = normalizedStack[0];\n    if (last && last.vnode === currentVNode) {\n      last.recurseCount++;\n    } else {\n      normalizedStack.push({\n        vnode: currentVNode,\n        recurseCount: 0\n      });\n    }\n    const parentInstance = currentVNode.component && currentVNode.component.parent;\n    currentVNode = parentInstance && parentInstance.vnode;\n  }\n  return normalizedStack;\n}\nfunction formatTrace(trace) {\n  const logs = [];\n  trace.forEach((entry, i) => {\n    logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n  });\n  return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n  const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n  const isRoot = vnode.component ? vnode.component.parent == null : false;\n  const open = ` at <${formatComponentName(\n    vnode.component,\n    vnode.type,\n    isRoot\n  )}`;\n  const close = `>` + postfix;\n  return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n  const res = [];\n  const keys = Object.keys(props);\n  keys.slice(0, 3).forEach((key) => {\n    res.push(...formatProp(key, props[key]));\n  });\n  if (keys.length > 3) {\n    res.push(` ...`);\n  }\n  return res;\n}\nfunction formatProp(key, value, raw) {\n  if (isString(value)) {\n    value = JSON.stringify(value);\n    return raw ? value : [`${key}=${value}`];\n  } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n    return raw ? value : [`${key}=${value}`];\n  } else if (isRef(value)) {\n    value = formatProp(key, toRaw(value.value), true);\n    return raw ? value : [`${key}=Ref<`, value, `>`];\n  } else if (isFunction(value)) {\n    return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n  } else {\n    value = toRaw(value);\n    return raw ? value : [`${key}=`, value];\n  }\n}\nfunction assertNumber(val, type) {\n  if (!!!(process.env.NODE_ENV !== \"production\")) return;\n  if (val === void 0) {\n    return;\n  } else if (typeof val !== \"number\") {\n    warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n  } else if (isNaN(val)) {\n    warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n  }\n}\n\nconst ErrorCodes = {\n  \"SETUP_FUNCTION\": 0,\n  \"0\": \"SETUP_FUNCTION\",\n  \"RENDER_FUNCTION\": 1,\n  \"1\": \"RENDER_FUNCTION\",\n  \"NATIVE_EVENT_HANDLER\": 5,\n  \"5\": \"NATIVE_EVENT_HANDLER\",\n  \"COMPONENT_EVENT_HANDLER\": 6,\n  \"6\": \"COMPONENT_EVENT_HANDLER\",\n  \"VNODE_HOOK\": 7,\n  \"7\": \"VNODE_HOOK\",\n  \"DIRECTIVE_HOOK\": 8,\n  \"8\": \"DIRECTIVE_HOOK\",\n  \"TRANSITION_HOOK\": 9,\n  \"9\": \"TRANSITION_HOOK\",\n  \"APP_ERROR_HANDLER\": 10,\n  \"10\": \"APP_ERROR_HANDLER\",\n  \"APP_WARN_HANDLER\": 11,\n  \"11\": \"APP_WARN_HANDLER\",\n  \"FUNCTION_REF\": 12,\n  \"12\": \"FUNCTION_REF\",\n  \"ASYNC_COMPONENT_LOADER\": 13,\n  \"13\": \"ASYNC_COMPONENT_LOADER\",\n  \"SCHEDULER\": 14,\n  \"14\": \"SCHEDULER\",\n  \"COMPONENT_UPDATE\": 15,\n  \"15\": \"COMPONENT_UPDATE\",\n  \"APP_UNMOUNT_CLEANUP\": 16,\n  \"16\": \"APP_UNMOUNT_CLEANUP\"\n};\nconst ErrorTypeStrings$1 = {\n  [\"sp\"]: \"serverPrefetch hook\",\n  [\"bc\"]: \"beforeCreate hook\",\n  [\"c\"]: \"created hook\",\n  [\"bm\"]: \"beforeMount hook\",\n  [\"m\"]: \"mounted hook\",\n  [\"bu\"]: \"beforeUpdate hook\",\n  [\"u\"]: \"updated\",\n  [\"bum\"]: \"beforeUnmount hook\",\n  [\"um\"]: \"unmounted hook\",\n  [\"a\"]: \"activated hook\",\n  [\"da\"]: \"deactivated hook\",\n  [\"ec\"]: \"errorCaptured hook\",\n  [\"rtc\"]: \"renderTracked hook\",\n  [\"rtg\"]: \"renderTriggered hook\",\n  [0]: \"setup function\",\n  [1]: \"render function\",\n  [2]: \"watcher getter\",\n  [3]: \"watcher callback\",\n  [4]: \"watcher cleanup function\",\n  [5]: \"native event handler\",\n  [6]: \"component event handler\",\n  [7]: \"vnode hook\",\n  [8]: \"directive hook\",\n  [9]: \"transition hook\",\n  [10]: \"app errorHandler\",\n  [11]: \"app warnHandler\",\n  [12]: \"ref function\",\n  [13]: \"async component loader\",\n  [14]: \"scheduler flush\",\n  [15]: \"component update\",\n  [16]: \"app unmount cleanup function\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n  try {\n    return args ? fn(...args) : fn();\n  } catch (err) {\n    handleError(err, instance, type);\n  }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n  if (isFunction(fn)) {\n    const res = callWithErrorHandling(fn, instance, type, args);\n    if (res && isPromise(res)) {\n      res.catch((err) => {\n        handleError(err, instance, type);\n      });\n    }\n    return res;\n  }\n  if (isArray(fn)) {\n    const values = [];\n    for (let i = 0; i < fn.length; i++) {\n      values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n    }\n    return values;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n    );\n  }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n  const contextVNode = instance ? instance.vnode : null;\n  const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;\n  if (instance) {\n    let cur = instance.parent;\n    const exposedInstance = instance.proxy;\n    const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n    while (cur) {\n      const errorCapturedHooks = cur.ec;\n      if (errorCapturedHooks) {\n        for (let i = 0; i < errorCapturedHooks.length; i++) {\n          if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n            return;\n          }\n        }\n      }\n      cur = cur.parent;\n    }\n    if (errorHandler) {\n      pauseTracking();\n      callWithErrorHandling(errorHandler, null, 10, [\n        err,\n        exposedInstance,\n        errorInfo\n      ]);\n      resetTracking();\n      return;\n    }\n  }\n  logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);\n}\nfunction logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const info = ErrorTypeStrings$1[type];\n    if (contextVNode) {\n      pushWarningContext(contextVNode);\n    }\n    warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n    if (contextVNode) {\n      popWarningContext();\n    }\n    if (throwInDev) {\n      throw err;\n    } else {\n      console.error(err);\n    }\n  } else if (throwInProd) {\n    throw err;\n  } else {\n    console.error(err);\n  }\n}\n\nconst queue = [];\nlet flushIndex = -1;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n  const p = currentFlushPromise || resolvedPromise;\n  return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n  let start = flushIndex + 1;\n  let end = queue.length;\n  while (start < end) {\n    const middle = start + end >>> 1;\n    const middleJob = queue[middle];\n    const middleJobId = getId(middleJob);\n    if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {\n      start = middle + 1;\n    } else {\n      end = middle;\n    }\n  }\n  return start;\n}\nfunction queueJob(job) {\n  if (!(job.flags & 1)) {\n    const jobId = getId(job);\n    const lastJob = queue[queue.length - 1];\n    if (!lastJob || // fast path when the job id is larger than the tail\n    !(job.flags & 2) && jobId >= getId(lastJob)) {\n      queue.push(job);\n    } else {\n      queue.splice(findInsertionIndex(jobId), 0, job);\n    }\n    job.flags |= 1;\n    queueFlush();\n  }\n}\nfunction queueFlush() {\n  if (!currentFlushPromise) {\n    currentFlushPromise = resolvedPromise.then(flushJobs);\n  }\n}\nfunction queuePostFlushCb(cb) {\n  if (!isArray(cb)) {\n    if (activePostFlushCbs && cb.id === -1) {\n      activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);\n    } else if (!(cb.flags & 1)) {\n      pendingPostFlushCbs.push(cb);\n      cb.flags |= 1;\n    }\n  } else {\n    pendingPostFlushCbs.push(...cb);\n  }\n  queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = flushIndex + 1) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  for (; i < queue.length; i++) {\n    const cb = queue[i];\n    if (cb && cb.flags & 2) {\n      if (instance && cb.id !== instance.uid) {\n        continue;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n        continue;\n      }\n      queue.splice(i, 1);\n      i--;\n      if (cb.flags & 4) {\n        cb.flags &= ~1;\n      }\n      cb();\n      if (!(cb.flags & 4)) {\n        cb.flags &= ~1;\n      }\n    }\n  }\n}\nfunction flushPostFlushCbs(seen) {\n  if (pendingPostFlushCbs.length) {\n    const deduped = [...new Set(pendingPostFlushCbs)].sort(\n      (a, b) => getId(a) - getId(b)\n    );\n    pendingPostFlushCbs.length = 0;\n    if (activePostFlushCbs) {\n      activePostFlushCbs.push(...deduped);\n      return;\n    }\n    activePostFlushCbs = deduped;\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      seen = seen || /* @__PURE__ */ new Map();\n    }\n    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n      const cb = activePostFlushCbs[postFlushIndex];\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n        continue;\n      }\n      if (cb.flags & 4) {\n        cb.flags &= ~1;\n      }\n      if (!(cb.flags & 8)) cb();\n      cb.flags &= ~1;\n    }\n    activePostFlushCbs = null;\n    postFlushIndex = 0;\n  }\n}\nconst getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;\nfunction flushJobs(seen) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n  try {\n    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job && !(job.flags & 8)) {\n        if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n          continue;\n        }\n        if (job.flags & 4) {\n          job.flags &= ~1;\n        }\n        callWithErrorHandling(\n          job,\n          job.i,\n          job.i ? 15 : 14\n        );\n        if (!(job.flags & 4)) {\n          job.flags &= ~1;\n        }\n      }\n    }\n  } finally {\n    for (; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job) {\n        job.flags &= ~1;\n      }\n    }\n    flushIndex = -1;\n    queue.length = 0;\n    flushPostFlushCbs(seen);\n    currentFlushPromise = null;\n    if (queue.length || pendingPostFlushCbs.length) {\n      flushJobs(seen);\n    }\n  }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n  const count = seen.get(fn) || 0;\n  if (count > RECURSION_LIMIT) {\n    const instance = fn.i;\n    const componentName = instance && getComponentName(instance.type);\n    handleError(\n      `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n      null,\n      10\n    );\n    return true;\n  }\n  seen.set(fn, count + 1);\n  return false;\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Map();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  getGlobalThis().__VUE_HMR_RUNTIME__ = {\n    createRecord: tryWrap(createRecord),\n    rerender: tryWrap(rerender),\n    reload: tryWrap(reload)\n  };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n  const id = instance.type.__hmrId;\n  let record = map.get(id);\n  if (!record) {\n    createRecord(id, instance.type);\n    record = map.get(id);\n  }\n  record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n  map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n  if (map.has(id)) {\n    return false;\n  }\n  map.set(id, {\n    initialDef: normalizeClassComponent(initialDef),\n    instances: /* @__PURE__ */ new Set()\n  });\n  return true;\n}\nfunction normalizeClassComponent(component) {\n  return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n  const record = map.get(id);\n  if (!record) {\n    return;\n  }\n  record.initialDef.render = newRender;\n  [...record.instances].forEach((instance) => {\n    if (newRender) {\n      instance.render = newRender;\n      normalizeClassComponent(instance.type).render = newRender;\n    }\n    instance.renderCache = [];\n    isHmrUpdating = true;\n    instance.update();\n    isHmrUpdating = false;\n  });\n}\nfunction reload(id, newComp) {\n  const record = map.get(id);\n  if (!record) return;\n  newComp = normalizeClassComponent(newComp);\n  updateComponentDef(record.initialDef, newComp);\n  const instances = [...record.instances];\n  for (let i = 0; i < instances.length; i++) {\n    const instance = instances[i];\n    const oldComp = normalizeClassComponent(instance.type);\n    let dirtyInstances = hmrDirtyComponents.get(oldComp);\n    if (!dirtyInstances) {\n      if (oldComp !== record.initialDef) {\n        updateComponentDef(oldComp, newComp);\n      }\n      hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());\n    }\n    dirtyInstances.add(instance);\n    instance.appContext.propsCache.delete(instance.type);\n    instance.appContext.emitsCache.delete(instance.type);\n    instance.appContext.optionsCache.delete(instance.type);\n    if (instance.ceReload) {\n      dirtyInstances.add(instance);\n      instance.ceReload(newComp.styles);\n      dirtyInstances.delete(instance);\n    } else if (instance.parent) {\n      queueJob(() => {\n        isHmrUpdating = true;\n        instance.parent.update();\n        isHmrUpdating = false;\n        dirtyInstances.delete(instance);\n      });\n    } else if (instance.appContext.reload) {\n      instance.appContext.reload();\n    } else if (typeof window !== \"undefined\") {\n      window.location.reload();\n    } else {\n      console.warn(\n        \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n      );\n    }\n    if (instance.root.ce && instance !== instance.root) {\n      instance.root.ce._removeChildStyle(oldComp);\n    }\n  }\n  queuePostFlushCb(() => {\n    hmrDirtyComponents.clear();\n  });\n}\nfunction updateComponentDef(oldComp, newComp) {\n  extend(oldComp, newComp);\n  for (const key in oldComp) {\n    if (key !== \"__file\" && !(key in newComp)) {\n      delete oldComp[key];\n    }\n  }\n}\nfunction tryWrap(fn) {\n  return (id, arg) => {\n    try {\n      return fn(id, arg);\n    } catch (e) {\n      console.error(e);\n      console.warn(\n        `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n      );\n    }\n  };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n  if (devtools$1) {\n    devtools$1.emit(event, ...args);\n  } else if (!devtoolsNotInstalled) {\n    buffer.push({ event, args });\n  }\n}\nfunction setDevtoolsHook$1(hook, target) {\n  var _a, _b;\n  devtools$1 = hook;\n  if (devtools$1) {\n    devtools$1.enabled = true;\n    buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n    buffer = [];\n  } else if (\n    // handle late devtools injection - only do this if we are in an actual\n    // browser environment to avoid the timer handle stalling test runner exit\n    // (#4815)\n    typeof window !== \"undefined\" && // some envs mock window but not fully\n    window.HTMLElement && // also exclude jsdom\n    // eslint-disable-next-line no-restricted-syntax\n    !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n  ) {\n    const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n    replay.push((newHook) => {\n      setDevtoolsHook$1(newHook, target);\n    });\n    setTimeout(() => {\n      if (!devtools$1) {\n        target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n        devtoolsNotInstalled = true;\n        buffer = [];\n      }\n    }, 3e3);\n  } else {\n    devtoolsNotInstalled = true;\n    buffer = [];\n  }\n}\nfunction devtoolsInitApp(app, version) {\n  emit$1(\"app:init\" /* APP_INIT */, app, version, {\n    Fragment,\n    Text,\n    Comment,\n    Static\n  });\n}\nfunction devtoolsUnmountApp(app) {\n  emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n  \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n  if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n  !devtools$1.cleanupBuffer(component)) {\n    _devtoolsComponentRemoved(component);\n  }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n  return (component) => {\n    emit$1(\n      hook,\n      component.appContext.app,\n      component.uid,\n      component.parent ? component.parent.uid : void 0,\n      component\n    );\n  };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n  return (component, type, time) => {\n    emit$1(hook, component.appContext.app, component.uid, component, type, time);\n  };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n  emit$1(\n    \"component:emit\" /* COMPONENT_EMIT */,\n    component.appContext.app,\n    component,\n    event,\n    params\n  );\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n  const prev = currentRenderingInstance;\n  currentRenderingInstance = instance;\n  currentScopeId = instance && instance.type.__scopeId || null;\n  return prev;\n}\nfunction pushScopeId(id) {\n  currentScopeId = id;\n}\nfunction popScopeId() {\n  currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n  if (!ctx) return fn;\n  if (fn._n) {\n    return fn;\n  }\n  const renderFnWithContext = (...args) => {\n    if (renderFnWithContext._d) {\n      setBlockTracking(-1);\n    }\n    const prevInstance = setCurrentRenderingInstance(ctx);\n    let res;\n    try {\n      res = fn(...args);\n    } finally {\n      setCurrentRenderingInstance(prevInstance);\n      if (renderFnWithContext._d) {\n        setBlockTracking(1);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentUpdated(ctx);\n    }\n    return res;\n  };\n  renderFnWithContext._n = true;\n  renderFnWithContext._c = true;\n  renderFnWithContext._d = true;\n  return renderFnWithContext;\n}\n\nfunction validateDirectiveName(name) {\n  if (isBuiltInDirective(name)) {\n    warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n  }\n}\nfunction withDirectives(vnode, directives) {\n  if (currentRenderingInstance === null) {\n    !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n    return vnode;\n  }\n  const instance = getComponentPublicInstance(currentRenderingInstance);\n  const bindings = vnode.dirs || (vnode.dirs = []);\n  for (let i = 0; i < directives.length; i++) {\n    let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n    if (dir) {\n      if (isFunction(dir)) {\n        dir = {\n          mounted: dir,\n          updated: dir\n        };\n      }\n      if (dir.deep) {\n        traverse(value);\n      }\n      bindings.push({\n        dir,\n        instance,\n        value,\n        oldValue: void 0,\n        arg,\n        modifiers\n      });\n    }\n  }\n  return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n  const bindings = vnode.dirs;\n  const oldBindings = prevVNode && prevVNode.dirs;\n  for (let i = 0; i < bindings.length; i++) {\n    const binding = bindings[i];\n    if (oldBindings) {\n      binding.oldValue = oldBindings[i].value;\n    }\n    let hook = binding.dir[name];\n    if (hook) {\n      pauseTracking();\n      callWithAsyncErrorHandling(hook, instance, 8, [\n        vnode.el,\n        binding,\n        vnode,\n        prevVNode\n      ]);\n      resetTracking();\n    }\n  }\n}\n\nconst TeleportEndKey = Symbol(\"_vte\");\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTeleportDeferred = (props) => props && (props.defer || props.defer === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n  const targetSelector = props && props.to;\n  if (isString(targetSelector)) {\n    if (!select) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n      );\n      return null;\n    } else {\n      const target = select(targetSelector);\n      if (!!(process.env.NODE_ENV !== \"production\") && !target && !isTeleportDisabled(props)) {\n        warn$1(\n          `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n        );\n      }\n      return target;\n    }\n  } else {\n    if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n      warn$1(`Invalid Teleport target: ${targetSelector}`);\n    }\n    return targetSelector;\n  }\n};\nconst TeleportImpl = {\n  name: \"Teleport\",\n  __isTeleport: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n    const {\n      mc: mountChildren,\n      pc: patchChildren,\n      pbc: patchBlockChildren,\n      o: { insert, querySelector, createText, createComment }\n    } = internals;\n    const disabled = isTeleportDisabled(n2.props);\n    let { shapeFlag, children, dynamicChildren } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (n1 == null) {\n      const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n      const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n      insert(placeholder, container, anchor);\n      insert(mainAnchor, container, anchor);\n      const mount = (container2, anchor2) => {\n        if (shapeFlag & 16) {\n          if (parentComponent && parentComponent.isCE) {\n            parentComponent.ce._teleportTarget = container2;\n          }\n          mountChildren(\n            children,\n            container2,\n            anchor2,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      };\n      const mountToTarget = () => {\n        const target = n2.target = resolveTarget(n2.props, querySelector);\n        const targetAnchor = prepareAnchor(target, n2, createText, insert);\n        if (target) {\n          if (namespace !== \"svg\" && isTargetSVG(target)) {\n            namespace = \"svg\";\n          } else if (namespace !== \"mathml\" && isTargetMathML(target)) {\n            namespace = \"mathml\";\n          }\n          if (!disabled) {\n            mount(target, targetAnchor);\n            updateCssVars(n2, false);\n          }\n        } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n          warn$1(\n            \"Invalid Teleport target on mount:\",\n            target,\n            `(${typeof target})`\n          );\n        }\n      };\n      if (disabled) {\n        mount(container, mainAnchor);\n        updateCssVars(n2, true);\n      }\n      if (isTeleportDeferred(n2.props)) {\n        queuePostRenderEffect(() => {\n          mountToTarget();\n          n2.el.__isMounted = true;\n        }, parentSuspense);\n      } else {\n        mountToTarget();\n      }\n    } else {\n      if (isTeleportDeferred(n2.props) && !n1.el.__isMounted) {\n        queuePostRenderEffect(() => {\n          TeleportImpl.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n          delete n1.el.__isMounted;\n        }, parentSuspense);\n        return;\n      }\n      n2.el = n1.el;\n      n2.targetStart = n1.targetStart;\n      const mainAnchor = n2.anchor = n1.anchor;\n      const target = n2.target = n1.target;\n      const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n      const wasDisabled = isTeleportDisabled(n1.props);\n      const currentContainer = wasDisabled ? container : target;\n      const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n      if (namespace === \"svg\" || isTargetSVG(target)) {\n        namespace = \"svg\";\n      } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n        namespace = \"mathml\";\n      }\n      if (dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          currentContainer,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        traverseStaticChildren(n1, n2, true);\n      } else if (!optimized) {\n        patchChildren(\n          n1,\n          n2,\n          currentContainer,\n          currentAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          false\n        );\n      }\n      if (disabled) {\n        if (!wasDisabled) {\n          moveTeleport(\n            n2,\n            container,\n            mainAnchor,\n            internals,\n            1\n          );\n        } else {\n          if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n            n2.props.to = n1.props.to;\n          }\n        }\n      } else {\n        if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n          const nextTarget = n2.target = resolveTarget(\n            n2.props,\n            querySelector\n          );\n          if (nextTarget) {\n            moveTeleport(\n              n2,\n              nextTarget,\n              null,\n              internals,\n              0\n            );\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn$1(\n              \"Invalid Teleport target on update:\",\n              target,\n              `(${typeof target})`\n            );\n          }\n        } else if (wasDisabled) {\n          moveTeleport(\n            n2,\n            target,\n            targetAnchor,\n            internals,\n            1\n          );\n        }\n      }\n      updateCssVars(n2, disabled);\n    }\n  },\n  remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n    const {\n      shapeFlag,\n      children,\n      anchor,\n      targetStart,\n      targetAnchor,\n      target,\n      props\n    } = vnode;\n    if (target) {\n      hostRemove(targetStart);\n      hostRemove(targetAnchor);\n    }\n    doRemove && hostRemove(anchor);\n    if (shapeFlag & 16) {\n      const shouldRemove = doRemove || !isTeleportDisabled(props);\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        unmount(\n          child,\n          parentComponent,\n          parentSuspense,\n          shouldRemove,\n          !!child.dynamicChildren\n        );\n      }\n    }\n  },\n  move: moveTeleport,\n  hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n  if (moveType === 0) {\n    insert(vnode.targetAnchor, container, parentAnchor);\n  }\n  const { el, anchor, shapeFlag, children, props } = vnode;\n  const isReorder = moveType === 2;\n  if (isReorder) {\n    insert(el, container, parentAnchor);\n  }\n  if (!isReorder || isTeleportDisabled(props)) {\n    if (shapeFlag & 16) {\n      for (let i = 0; i < children.length; i++) {\n        move(\n          children[i],\n          container,\n          parentAnchor,\n          2\n        );\n      }\n    }\n  }\n  if (isReorder) {\n    insert(anchor, container, parentAnchor);\n  }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n  o: { nextSibling, parentNode, querySelector, insert, createText }\n}, hydrateChildren) {\n  const target = vnode.target = resolveTarget(\n    vnode.props,\n    querySelector\n  );\n  if (target) {\n    const disabled = isTeleportDisabled(vnode.props);\n    const targetNode = target._lpa || target.firstChild;\n    if (vnode.shapeFlag & 16) {\n      if (disabled) {\n        vnode.anchor = hydrateChildren(\n          nextSibling(node),\n          vnode,\n          parentNode(node),\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        vnode.targetStart = targetNode;\n        vnode.targetAnchor = targetNode && nextSibling(targetNode);\n      } else {\n        vnode.anchor = nextSibling(node);\n        let targetAnchor = targetNode;\n        while (targetAnchor) {\n          if (targetAnchor && targetAnchor.nodeType === 8) {\n            if (targetAnchor.data === \"teleport start anchor\") {\n              vnode.targetStart = targetAnchor;\n            } else if (targetAnchor.data === \"teleport anchor\") {\n              vnode.targetAnchor = targetAnchor;\n              target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n              break;\n            }\n          }\n          targetAnchor = nextSibling(targetAnchor);\n        }\n        if (!vnode.targetAnchor) {\n          prepareAnchor(target, vnode, createText, insert);\n        }\n        hydrateChildren(\n          targetNode && nextSibling(targetNode),\n          vnode,\n          target,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n    updateCssVars(vnode, disabled);\n  }\n  return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode, isDisabled) {\n  const ctx = vnode.ctx;\n  if (ctx && ctx.ut) {\n    let node, anchor;\n    if (isDisabled) {\n      node = vnode.el;\n      anchor = vnode.anchor;\n    } else {\n      node = vnode.targetStart;\n      anchor = vnode.targetAnchor;\n    }\n    while (node && node !== anchor) {\n      if (node.nodeType === 1) node.setAttribute(\"data-v-owner\", ctx.uid);\n      node = node.nextSibling;\n    }\n    ctx.ut();\n  }\n}\nfunction prepareAnchor(target, vnode, createText, insert) {\n  const targetStart = vnode.targetStart = createText(\"\");\n  const targetAnchor = vnode.targetAnchor = createText(\"\");\n  targetStart[TeleportEndKey] = targetAnchor;\n  if (target) {\n    insert(targetStart, target);\n    insert(targetAnchor, target);\n  }\n  return targetAnchor;\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n  const state = {\n    isMounted: false,\n    isLeaving: false,\n    isUnmounting: false,\n    leavingVNodes: /* @__PURE__ */ new Map()\n  };\n  onMounted(() => {\n    state.isMounted = true;\n  });\n  onBeforeUnmount(() => {\n    state.isUnmounting = true;\n  });\n  return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n  mode: String,\n  appear: Boolean,\n  persisted: Boolean,\n  // enter\n  onBeforeEnter: TransitionHookValidator,\n  onEnter: TransitionHookValidator,\n  onAfterEnter: TransitionHookValidator,\n  onEnterCancelled: TransitionHookValidator,\n  // leave\n  onBeforeLeave: TransitionHookValidator,\n  onLeave: TransitionHookValidator,\n  onAfterLeave: TransitionHookValidator,\n  onLeaveCancelled: TransitionHookValidator,\n  // appear\n  onBeforeAppear: TransitionHookValidator,\n  onAppear: TransitionHookValidator,\n  onAfterAppear: TransitionHookValidator,\n  onAppearCancelled: TransitionHookValidator\n};\nconst recursiveGetSubtree = (instance) => {\n  const subTree = instance.subTree;\n  return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;\n};\nconst BaseTransitionImpl = {\n  name: `BaseTransition`,\n  props: BaseTransitionPropsValidators,\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    return () => {\n      const children = slots.default && getTransitionRawChildren(slots.default(), true);\n      if (!children || !children.length) {\n        return;\n      }\n      const child = findNonCommentChild(children);\n      const rawProps = toRaw(props);\n      const { mode } = rawProps;\n      if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n        warn$1(`invalid <transition> mode: ${mode}`);\n      }\n      if (state.isLeaving) {\n        return emptyPlaceholder(child);\n      }\n      const innerChild = getInnerChild$1(child);\n      if (!innerChild) {\n        return emptyPlaceholder(child);\n      }\n      let enterHooks = resolveTransitionHooks(\n        innerChild,\n        rawProps,\n        state,\n        instance,\n        // #11061, ensure enterHooks is fresh after clone\n        (hooks) => enterHooks = hooks\n      );\n      if (innerChild.type !== Comment) {\n        setTransitionHooks(innerChild, enterHooks);\n      }\n      let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);\n      if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {\n        let leavingHooks = resolveTransitionHooks(\n          oldInnerChild,\n          rawProps,\n          state,\n          instance\n        );\n        setTransitionHooks(oldInnerChild, leavingHooks);\n        if (mode === \"out-in\" && innerChild.type !== Comment) {\n          state.isLeaving = true;\n          leavingHooks.afterLeave = () => {\n            state.isLeaving = false;\n            if (!(instance.job.flags & 8)) {\n              instance.update();\n            }\n            delete leavingHooks.afterLeave;\n            oldInnerChild = void 0;\n          };\n          return emptyPlaceholder(child);\n        } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n          leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n            const leavingVNodesCache = getLeavingNodesForType(\n              state,\n              oldInnerChild\n            );\n            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n            el[leaveCbKey] = () => {\n              earlyRemove();\n              el[leaveCbKey] = void 0;\n              delete enterHooks.delayedLeave;\n              oldInnerChild = void 0;\n            };\n            enterHooks.delayedLeave = () => {\n              delayedLeave();\n              delete enterHooks.delayedLeave;\n              oldInnerChild = void 0;\n            };\n          };\n        } else {\n          oldInnerChild = void 0;\n        }\n      } else if (oldInnerChild) {\n        oldInnerChild = void 0;\n      }\n      return child;\n    };\n  }\n};\nfunction findNonCommentChild(children) {\n  let child = children[0];\n  if (children.length > 1) {\n    let hasFound = false;\n    for (const c of children) {\n      if (c.type !== Comment) {\n        if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n          warn$1(\n            \"<transition> can only be used on a single element or component. Use <transition-group> for lists.\"\n          );\n          break;\n        }\n        child = c;\n        hasFound = true;\n        if (!!!(process.env.NODE_ENV !== \"production\")) break;\n      }\n    }\n  }\n  return child;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n  const { leavingVNodes } = state;\n  let leavingVNodesCache = leavingVNodes.get(vnode.type);\n  if (!leavingVNodesCache) {\n    leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n    leavingVNodes.set(vnode.type, leavingVNodesCache);\n  }\n  return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance, postClone) {\n  const {\n    appear,\n    mode,\n    persisted = false,\n    onBeforeEnter,\n    onEnter,\n    onAfterEnter,\n    onEnterCancelled,\n    onBeforeLeave,\n    onLeave,\n    onAfterLeave,\n    onLeaveCancelled,\n    onBeforeAppear,\n    onAppear,\n    onAfterAppear,\n    onAppearCancelled\n  } = props;\n  const key = String(vnode.key);\n  const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n  const callHook = (hook, args) => {\n    hook && callWithAsyncErrorHandling(\n      hook,\n      instance,\n      9,\n      args\n    );\n  };\n  const callAsyncHook = (hook, args) => {\n    const done = args[1];\n    callHook(hook, args);\n    if (isArray(hook)) {\n      if (hook.every((hook2) => hook2.length <= 1)) done();\n    } else if (hook.length <= 1) {\n      done();\n    }\n  };\n  const hooks = {\n    mode,\n    persisted,\n    beforeEnter(el) {\n      let hook = onBeforeEnter;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onBeforeAppear || onBeforeEnter;\n        } else {\n          return;\n        }\n      }\n      if (el[leaveCbKey]) {\n        el[leaveCbKey](\n          true\n          /* cancelled */\n        );\n      }\n      const leavingVNode = leavingVNodesCache[key];\n      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n        leavingVNode.el[leaveCbKey]();\n      }\n      callHook(hook, [el]);\n    },\n    enter(el) {\n      let hook = onEnter;\n      let afterHook = onAfterEnter;\n      let cancelHook = onEnterCancelled;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onAppear || onEnter;\n          afterHook = onAfterAppear || onAfterEnter;\n          cancelHook = onAppearCancelled || onEnterCancelled;\n        } else {\n          return;\n        }\n      }\n      let called = false;\n      const done = el[enterCbKey] = (cancelled) => {\n        if (called) return;\n        called = true;\n        if (cancelled) {\n          callHook(cancelHook, [el]);\n        } else {\n          callHook(afterHook, [el]);\n        }\n        if (hooks.delayedLeave) {\n          hooks.delayedLeave();\n        }\n        el[enterCbKey] = void 0;\n      };\n      if (hook) {\n        callAsyncHook(hook, [el, done]);\n      } else {\n        done();\n      }\n    },\n    leave(el, remove) {\n      const key2 = String(vnode.key);\n      if (el[enterCbKey]) {\n        el[enterCbKey](\n          true\n          /* cancelled */\n        );\n      }\n      if (state.isUnmounting) {\n        return remove();\n      }\n      callHook(onBeforeLeave, [el]);\n      let called = false;\n      const done = el[leaveCbKey] = (cancelled) => {\n        if (called) return;\n        called = true;\n        remove();\n        if (cancelled) {\n          callHook(onLeaveCancelled, [el]);\n        } else {\n          callHook(onAfterLeave, [el]);\n        }\n        el[leaveCbKey] = void 0;\n        if (leavingVNodesCache[key2] === vnode) {\n          delete leavingVNodesCache[key2];\n        }\n      };\n      leavingVNodesCache[key2] = vnode;\n      if (onLeave) {\n        callAsyncHook(onLeave, [el, done]);\n      } else {\n        done();\n      }\n    },\n    clone(vnode2) {\n      const hooks2 = resolveTransitionHooks(\n        vnode2,\n        props,\n        state,\n        instance,\n        postClone\n      );\n      if (postClone) postClone(hooks2);\n      return hooks2;\n    }\n  };\n  return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n  if (isKeepAlive(vnode)) {\n    vnode = cloneVNode(vnode);\n    vnode.children = null;\n    return vnode;\n  }\n}\nfunction getInnerChild$1(vnode) {\n  if (!isKeepAlive(vnode)) {\n    if (isTeleport(vnode.type) && vnode.children) {\n      return findNonCommentChild(vnode.children);\n    }\n    return vnode;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && vnode.component) {\n    return vnode.component.subTree;\n  }\n  const { shapeFlag, children } = vnode;\n  if (children) {\n    if (shapeFlag & 16) {\n      return children[0];\n    }\n    if (shapeFlag & 32 && isFunction(children.default)) {\n      return children.default();\n    }\n  }\n}\nfunction setTransitionHooks(vnode, hooks) {\n  if (vnode.shapeFlag & 6 && vnode.component) {\n    vnode.transition = hooks;\n    setTransitionHooks(vnode.component.subTree, hooks);\n  } else if (vnode.shapeFlag & 128) {\n    vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n  } else {\n    vnode.transition = hooks;\n  }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n  let ret = [];\n  let keyedFragmentCount = 0;\n  for (let i = 0; i < children.length; i++) {\n    let child = children[i];\n    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n    if (child.type === Fragment) {\n      if (child.patchFlag & 128) keyedFragmentCount++;\n      ret = ret.concat(\n        getTransitionRawChildren(child.children, keepComment, key)\n      );\n    } else if (keepComment || child.type !== Comment) {\n      ret.push(key != null ? cloneVNode(child, { key }) : child);\n    }\n  }\n  if (keyedFragmentCount > 1) {\n    for (let i = 0; i < ret.length; i++) {\n      ret[i].patchFlag = -2;\n    }\n  }\n  return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n  return isFunction(options) ? (\n    // #8236: extend call and options.name access are considered side-effects\n    // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n    /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n  ) : options;\n}\n\nfunction useId() {\n  const i = getCurrentInstance();\n  if (i) {\n    return (i.appContext.config.idPrefix || \"v\") + \"-\" + i.ids[0] + i.ids[1]++;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `useId() is called when there is no active component instance to be associated with.`\n    );\n  }\n  return \"\";\n}\nfunction markAsyncBoundary(instance) {\n  instance.ids = [instance.ids[0] + instance.ids[2]++ + \"-\", 0, 0];\n}\n\nconst knownTemplateRefs = /* @__PURE__ */ new WeakSet();\nfunction useTemplateRef(key) {\n  const i = getCurrentInstance();\n  const r = shallowRef(null);\n  if (i) {\n    const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;\n    let desc;\n    if (!!(process.env.NODE_ENV !== \"production\") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {\n      warn$1(`useTemplateRef('${key}') already exists.`);\n    } else {\n      Object.defineProperty(refs, key, {\n        enumerable: true,\n        get: () => r.value,\n        set: (val) => r.value = val\n      });\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `useTemplateRef() is called when there is no active component instance to be associated with.`\n    );\n  }\n  const ret = !!(process.env.NODE_ENV !== \"production\") ? readonly(r) : r;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    knownTemplateRefs.add(ret);\n  }\n  return ret;\n}\n\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n  if (isArray(rawRef)) {\n    rawRef.forEach(\n      (r, i) => setRef(\n        r,\n        oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n        parentSuspense,\n        vnode,\n        isUnmount\n      )\n    );\n    return;\n  }\n  if (isAsyncWrapper(vnode) && !isUnmount) {\n    if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {\n      setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);\n    }\n    return;\n  }\n  const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;\n  const value = isUnmount ? null : refValue;\n  const { i: owner, r: ref } = rawRef;\n  if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n    warn$1(\n      `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n    );\n    return;\n  }\n  const oldRef = oldRawRef && oldRawRef.r;\n  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n  const setupState = owner.setupState;\n  const rawSetupState = toRaw(setupState);\n  const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {\n        warn$1(\n          `Template ref \"${key}\" used on a non-ref value. It will not work in the production build.`\n        );\n      }\n      if (knownTemplateRefs.has(rawSetupState[key])) {\n        return false;\n      }\n    }\n    return hasOwn(rawSetupState, key);\n  };\n  if (oldRef != null && oldRef !== ref) {\n    if (isString(oldRef)) {\n      refs[oldRef] = null;\n      if (canSetSetupRef(oldRef)) {\n        setupState[oldRef] = null;\n      }\n    } else if (isRef(oldRef)) {\n      oldRef.value = null;\n    }\n  }\n  if (isFunction(ref)) {\n    callWithErrorHandling(ref, owner, 12, [value, refs]);\n  } else {\n    const _isString = isString(ref);\n    const _isRef = isRef(ref);\n    if (_isString || _isRef) {\n      const doSet = () => {\n        if (rawRef.f) {\n          const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value;\n          if (isUnmount) {\n            isArray(existing) && remove(existing, refValue);\n          } else {\n            if (!isArray(existing)) {\n              if (_isString) {\n                refs[ref] = [refValue];\n                if (canSetSetupRef(ref)) {\n                  setupState[ref] = refs[ref];\n                }\n              } else {\n                ref.value = [refValue];\n                if (rawRef.k) refs[rawRef.k] = ref.value;\n              }\n            } else if (!existing.includes(refValue)) {\n              existing.push(refValue);\n            }\n          }\n        } else if (_isString) {\n          refs[ref] = value;\n          if (canSetSetupRef(ref)) {\n            setupState[ref] = value;\n          }\n        } else if (_isRef) {\n          ref.value = value;\n          if (rawRef.k) refs[rawRef.k] = value;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n        }\n      };\n      if (value) {\n        doSet.id = -1;\n        queuePostRenderEffect(doSet, parentSuspense);\n      } else {\n        doSet();\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n    }\n  }\n}\n\nlet hasLoggedMismatchError = false;\nconst logMismatchError = () => {\n  if (hasLoggedMismatchError) {\n    return;\n  }\n  console.error(\"Hydration completed but contains mismatches.\");\n  hasLoggedMismatchError = true;\n};\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n  if (container.nodeType !== 1) return void 0;\n  if (isSVGContainer(container)) return \"svg\";\n  if (isMathMLContainer(container)) return \"mathml\";\n  return void 0;\n};\nconst isComment = (node) => node.nodeType === 8;\nfunction createHydrationFunctions(rendererInternals) {\n  const {\n    mt: mountComponent,\n    p: patch,\n    o: {\n      patchProp,\n      createText,\n      nextSibling,\n      parentNode,\n      remove,\n      insert,\n      createComment\n    }\n  } = rendererInternals;\n  const hydrate = (vnode, container) => {\n    if (!container.hasChildNodes()) {\n      (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n        `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n      );\n      patch(null, vnode, container);\n      flushPostFlushCbs();\n      container._vnode = vnode;\n      return;\n    }\n    hydrateNode(container.firstChild, vnode, null, null, null);\n    flushPostFlushCbs();\n    container._vnode = vnode;\n  };\n  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n    optimized = optimized || !!vnode.dynamicChildren;\n    const isFragmentStart = isComment(node) && node.data === \"[\";\n    const onMismatch = () => handleMismatch(\n      node,\n      vnode,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      isFragmentStart\n    );\n    const { type, ref, shapeFlag, patchFlag } = vnode;\n    let domType = node.nodeType;\n    vnode.el = node;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      def(node, \"__vnode\", vnode, true);\n      def(node, \"__vueParentComponent\", parentComponent, true);\n    }\n    if (patchFlag === -2) {\n      optimized = false;\n      vnode.dynamicChildren = null;\n    }\n    let nextNode = null;\n    switch (type) {\n      case Text:\n        if (domType !== 3) {\n          if (vnode.children === \"\") {\n            insert(vnode.el = createText(\"\"), parentNode(node), node);\n            nextNode = node;\n          } else {\n            nextNode = onMismatch();\n          }\n        } else {\n          if (node.data !== vnode.children) {\n            (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n              `Hydration text mismatch in`,\n              node.parentNode,\n              `\n  - rendered on server: ${JSON.stringify(\n                node.data\n              )}\n  - expected on client: ${JSON.stringify(vnode.children)}`\n            );\n            logMismatchError();\n            node.data = vnode.children;\n          }\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Comment:\n        if (isTemplateNode(node)) {\n          nextNode = nextSibling(node);\n          replaceNode(\n            vnode.el = node.content.firstChild,\n            node,\n            parentComponent\n          );\n        } else if (domType !== 8 || isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Static:\n        if (isFragmentStart) {\n          node = nextSibling(node);\n          domType = node.nodeType;\n        }\n        if (domType === 1 || domType === 3) {\n          nextNode = node;\n          const needToAdoptContent = !vnode.children.length;\n          for (let i = 0; i < vnode.staticCount; i++) {\n            if (needToAdoptContent)\n              vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;\n            if (i === vnode.staticCount - 1) {\n              vnode.anchor = nextNode;\n            }\n            nextNode = nextSibling(nextNode);\n          }\n          return isFragmentStart ? nextSibling(nextNode) : nextNode;\n        } else {\n          onMismatch();\n        }\n        break;\n      case Fragment:\n        if (!isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = hydrateFragment(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            slotScopeIds,\n            optimized\n          );\n        }\n        break;\n      default:\n        if (shapeFlag & 1) {\n          if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = hydrateElement(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized\n            );\n          }\n        } else if (shapeFlag & 6) {\n          vnode.slotScopeIds = slotScopeIds;\n          const container = parentNode(node);\n          if (isFragmentStart) {\n            nextNode = locateClosingAnchor(node);\n          } else if (isComment(node) && node.data === \"teleport start\") {\n            nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n          } else {\n            nextNode = nextSibling(node);\n          }\n          mountComponent(\n            vnode,\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            getContainerType(container),\n            optimized\n          );\n          if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) {\n            let subTree;\n            if (isFragmentStart) {\n              subTree = createVNode(Fragment);\n              subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n            } else {\n              subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n            }\n            subTree.el = node;\n            vnode.component.subTree = subTree;\n          }\n        } else if (shapeFlag & 64) {\n          if (domType !== 8) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = vnode.type.hydrate(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized,\n              rendererInternals,\n              hydrateChildren\n            );\n          }\n        } else if (shapeFlag & 128) {\n          nextNode = vnode.type.hydrate(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            getContainerType(parentNode(node)),\n            slotScopeIds,\n            optimized,\n            rendererInternals,\n            hydrateNode\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n          warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode);\n    }\n    return nextNode;\n  };\n  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!vnode.dynamicChildren;\n    const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n    const forcePatch = type === \"input\" || type === \"option\";\n    if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n      }\n      let needCallTransitionHooks = false;\n      if (isTemplateNode(el)) {\n        needCallTransitionHooks = needTransition(\n          null,\n          // no need check parentSuspense in hydration\n          transition\n        ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n        const content = el.content.firstChild;\n        if (needCallTransitionHooks) {\n          transition.beforeEnter(content);\n        }\n        replaceNode(content, el, parentComponent);\n        vnode.el = el = content;\n      }\n      if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n      !(props && (props.innerHTML || props.textContent))) {\n        let next = hydrateChildren(\n          el.firstChild,\n          vnode,\n          el,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        let hasWarned = false;\n        while (next) {\n          if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {\n            if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n              warn$1(\n                `Hydration children mismatch on`,\n                el,\n                `\nServer rendered element contains more child nodes than client vdom.`\n              );\n              hasWarned = true;\n            }\n            logMismatchError();\n          }\n          const cur = next;\n          next = next.nextSibling;\n          remove(cur);\n        }\n      } else if (shapeFlag & 8) {\n        let clientText = vnode.children;\n        if (clientText[0] === \"\\n\" && (el.tagName === \"PRE\" || el.tagName === \"TEXTAREA\")) {\n          clientText = clientText.slice(1);\n        }\n        if (el.textContent !== clientText) {\n          if (!isMismatchAllowed(el, 0 /* TEXT */)) {\n            (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n              `Hydration text content mismatch on`,\n              el,\n              `\n  - rendered on server: ${el.textContent}\n  - expected on client: ${vnode.children}`\n            );\n            logMismatchError();\n          }\n          el.textContent = vnode.children;\n        }\n      }\n      if (props) {\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ || forcePatch || !optimized || patchFlag & (16 | 32)) {\n          const isCustomElement = el.tagName.includes(\"-\");\n          for (const key in props) {\n            if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && // #11189 skip if this node has directives that have created hooks\n            // as it could have mutated the DOM in any possible way\n            !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) {\n              logMismatchError();\n            }\n            if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n            key[0] === \".\" || isCustomElement) {\n              patchProp(el, key, null, props[key], void 0, parentComponent);\n            }\n          }\n        } else if (props.onClick) {\n          patchProp(\n            el,\n            \"onClick\",\n            null,\n            props.onClick,\n            void 0,\n            parentComponent\n          );\n        } else if (patchFlag & 4 && isReactive(props.style)) {\n          for (const key in props.style) props.style[key];\n        }\n      }\n      let vnodeHooks;\n      if (vnodeHooks = props && props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n      }\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n      }\n      if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n        queueEffectWithSuspense(() => {\n          vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n          needCallTransitionHooks && transition.enter(el);\n          dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n        }, parentSuspense);\n      }\n    }\n    return el.nextSibling;\n  };\n  const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!parentVNode.dynamicChildren;\n    const children = parentVNode.children;\n    const l = children.length;\n    let hasWarned = false;\n    for (let i = 0; i < l; i++) {\n      const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n      const isText = vnode.type === Text;\n      if (node) {\n        if (isText && !optimized) {\n          if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {\n            insert(\n              createText(\n                node.data.slice(vnode.children.length)\n              ),\n              container,\n              nextSibling(node)\n            );\n            node.data = vnode.children;\n          }\n        }\n        node = hydrateNode(\n          node,\n          vnode,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      } else if (isText && !vnode.children) {\n        insert(vnode.el = createText(\"\"), container);\n      } else {\n        if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {\n          if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n            warn$1(\n              `Hydration children mismatch on`,\n              container,\n              `\nServer rendered element contains fewer child nodes than client vdom.`\n            );\n            hasWarned = true;\n          }\n          logMismatchError();\n        }\n        patch(\n          null,\n          vnode,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          getContainerType(container),\n          slotScopeIds\n        );\n      }\n    }\n    return node;\n  };\n  const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    const container = parentNode(node);\n    const next = hydrateChildren(\n      nextSibling(node),\n      vnode,\n      container,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      optimized\n    );\n    if (next && isComment(next) && next.data === \"]\") {\n      return nextSibling(vnode.anchor = next);\n    } else {\n      logMismatchError();\n      insert(vnode.anchor = createComment(`]`), container, next);\n      return next;\n    }\n  };\n  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n    if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {\n      (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n        `Hydration node mismatch:\n- rendered on server:`,\n        node,\n        node.nodeType === 3 ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n        `\n- expected on client:`,\n        vnode.type\n      );\n      logMismatchError();\n    }\n    vnode.el = null;\n    if (isFragment) {\n      const end = locateClosingAnchor(node);\n      while (true) {\n        const next2 = nextSibling(node);\n        if (next2 && next2 !== end) {\n          remove(next2);\n        } else {\n          break;\n        }\n      }\n    }\n    const next = nextSibling(node);\n    const container = parentNode(node);\n    remove(node);\n    patch(\n      null,\n      vnode,\n      container,\n      next,\n      parentComponent,\n      parentSuspense,\n      getContainerType(container),\n      slotScopeIds\n    );\n    if (parentComponent) {\n      parentComponent.vnode.el = vnode.el;\n      updateHOCHostEl(parentComponent, vnode.el);\n    }\n    return next;\n  };\n  const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n    let match = 0;\n    while (node) {\n      node = nextSibling(node);\n      if (node && isComment(node)) {\n        if (node.data === open) match++;\n        if (node.data === close) {\n          if (match === 0) {\n            return nextSibling(node);\n          } else {\n            match--;\n          }\n        }\n      }\n    }\n    return node;\n  };\n  const replaceNode = (newNode, oldNode, parentComponent) => {\n    const parentNode2 = oldNode.parentNode;\n    if (parentNode2) {\n      parentNode2.replaceChild(newNode, oldNode);\n    }\n    let parent = parentComponent;\n    while (parent) {\n      if (parent.vnode.el === oldNode) {\n        parent.vnode.el = parent.subTree.el = newNode;\n      }\n      parent = parent.parent;\n    }\n  };\n  const isTemplateNode = (node) => {\n    return node.nodeType === 1 && node.tagName === \"TEMPLATE\";\n  };\n  return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode, instance) {\n  let mismatchType;\n  let mismatchKey;\n  let actual;\n  let expected;\n  if (key === \"class\") {\n    actual = el.getAttribute(\"class\");\n    expected = normalizeClass(clientValue);\n    if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n      mismatchType = 2 /* CLASS */;\n      mismatchKey = `class`;\n    }\n  } else if (key === \"style\") {\n    actual = el.getAttribute(\"style\") || \"\";\n    expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n    const actualMap = toStyleMap(actual);\n    const expectedMap = toStyleMap(expected);\n    if (vnode.dirs) {\n      for (const { dir, value } of vnode.dirs) {\n        if (dir.name === \"show\" && !value) {\n          expectedMap.set(\"display\", \"none\");\n        }\n      }\n    }\n    if (instance) {\n      resolveCssVars(instance, vnode, expectedMap);\n    }\n    if (!isMapEqual(actualMap, expectedMap)) {\n      mismatchType = 3 /* STYLE */;\n      mismatchKey = \"style\";\n    }\n  } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n    if (isBooleanAttr(key)) {\n      actual = el.hasAttribute(key);\n      expected = includeBooleanAttr(clientValue);\n    } else if (clientValue == null) {\n      actual = el.hasAttribute(key);\n      expected = false;\n    } else {\n      if (el.hasAttribute(key)) {\n        actual = el.getAttribute(key);\n      } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n        actual = el.value;\n      } else {\n        actual = false;\n      }\n      expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n    }\n    if (actual !== expected) {\n      mismatchType = 4 /* ATTRIBUTE */;\n      mismatchKey = key;\n    }\n  }\n  if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) {\n    const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n    const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`;\n    const postSegment = `\n  - rendered on server: ${format(actual)}\n  - expected on client: ${format(expected)}\n  Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n  You should fix the source of the mismatch.`;\n    {\n      warn$1(preSegment, el, postSegment);\n    }\n    return true;\n  }\n  return false;\n}\nfunction toClassSet(str) {\n  return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const s of a) {\n    if (!b.has(s)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction toStyleMap(str) {\n  const styleMap = /* @__PURE__ */ new Map();\n  for (const item of str.split(\";\")) {\n    let [key, value] = item.split(\":\");\n    key = key.trim();\n    value = value && value.trim();\n    if (key && value) {\n      styleMap.set(key, value);\n    }\n  }\n  return styleMap;\n}\nfunction isMapEqual(a, b) {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const [key, value] of a) {\n    if (value !== b.get(key)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction resolveCssVars(instance, vnode, expectedMap) {\n  const root = instance.subTree;\n  if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {\n    const cssVars = instance.getCssVars();\n    for (const key in cssVars) {\n      expectedMap.set(\n        `--${getEscapedCssVarName(key, false)}`,\n        String(cssVars[key])\n      );\n    }\n  }\n  if (vnode === root && instance.parent) {\n    resolveCssVars(instance.parent, instance.vnode, expectedMap);\n  }\n}\nconst allowMismatchAttr = \"data-allow-mismatch\";\nconst MismatchTypeString = {\n  [0 /* TEXT */]: \"text\",\n  [1 /* CHILDREN */]: \"children\",\n  [2 /* CLASS */]: \"class\",\n  [3 /* STYLE */]: \"style\",\n  [4 /* ATTRIBUTE */]: \"attribute\"\n};\nfunction isMismatchAllowed(el, allowedType) {\n  if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) {\n    while (el && !el.hasAttribute(allowMismatchAttr)) {\n      el = el.parentElement;\n    }\n  }\n  const allowedAttr = el && el.getAttribute(allowMismatchAttr);\n  if (allowedAttr == null) {\n    return false;\n  } else if (allowedAttr === \"\") {\n    return true;\n  } else {\n    const list = allowedAttr.split(\",\");\n    if (allowedType === 0 /* TEXT */ && list.includes(\"children\")) {\n      return true;\n    }\n    return allowedAttr.split(\",\").includes(MismatchTypeString[allowedType]);\n  }\n}\n\nconst requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));\nconst cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));\nconst hydrateOnIdle = (timeout = 1e4) => (hydrate) => {\n  const id = requestIdleCallback(hydrate, { timeout });\n  return () => cancelIdleCallback(id);\n};\nfunction elementIsVisibleInViewport(el) {\n  const { top, left, bottom, right } = el.getBoundingClientRect();\n  const { innerHeight, innerWidth } = window;\n  return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);\n}\nconst hydrateOnVisible = (opts) => (hydrate, forEach) => {\n  const ob = new IntersectionObserver((entries) => {\n    for (const e of entries) {\n      if (!e.isIntersecting) continue;\n      ob.disconnect();\n      hydrate();\n      break;\n    }\n  }, opts);\n  forEach((el) => {\n    if (!(el instanceof Element)) return;\n    if (elementIsVisibleInViewport(el)) {\n      hydrate();\n      ob.disconnect();\n      return false;\n    }\n    ob.observe(el);\n  });\n  return () => ob.disconnect();\n};\nconst hydrateOnMediaQuery = (query) => (hydrate) => {\n  if (query) {\n    const mql = matchMedia(query);\n    if (mql.matches) {\n      hydrate();\n    } else {\n      mql.addEventListener(\"change\", hydrate, { once: true });\n      return () => mql.removeEventListener(\"change\", hydrate);\n    }\n  }\n};\nconst hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {\n  if (isString(interactions)) interactions = [interactions];\n  let hasHydrated = false;\n  const doHydrate = (e) => {\n    if (!hasHydrated) {\n      hasHydrated = true;\n      teardown();\n      hydrate();\n      e.target.dispatchEvent(new e.constructor(e.type, e));\n    }\n  };\n  const teardown = () => {\n    forEach((el) => {\n      for (const i of interactions) {\n        el.removeEventListener(i, doHydrate);\n      }\n    });\n  };\n  forEach((el) => {\n    for (const i of interactions) {\n      el.addEventListener(i, doHydrate, { once: true });\n    }\n  });\n  return teardown;\n};\nfunction forEachElement(node, cb) {\n  if (isComment(node) && node.data === \"[\") {\n    let depth = 1;\n    let next = node.nextSibling;\n    while (next) {\n      if (next.nodeType === 1) {\n        const result = cb(next);\n        if (result === false) {\n          break;\n        }\n      } else if (isComment(next)) {\n        if (next.data === \"]\") {\n          if (--depth === 0) break;\n        } else if (next.data === \"[\") {\n          depth++;\n        }\n      }\n      next = next.nextSibling;\n    }\n  } else {\n    cb(node);\n  }\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n  if (isFunction(source)) {\n    source = { loader: source };\n  }\n  const {\n    loader,\n    loadingComponent,\n    errorComponent,\n    delay = 200,\n    hydrate: hydrateStrategy,\n    timeout,\n    // undefined = never times out\n    suspensible = true,\n    onError: userOnError\n  } = source;\n  let pendingRequest = null;\n  let resolvedComp;\n  let retries = 0;\n  const retry = () => {\n    retries++;\n    pendingRequest = null;\n    return load();\n  };\n  const load = () => {\n    let thisRequest;\n    return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n      err = err instanceof Error ? err : new Error(String(err));\n      if (userOnError) {\n        return new Promise((resolve, reject) => {\n          const userRetry = () => resolve(retry());\n          const userFail = () => reject(err);\n          userOnError(err, userRetry, userFail, retries + 1);\n        });\n      } else {\n        throw err;\n      }\n    }).then((comp) => {\n      if (thisRequest !== pendingRequest && pendingRequest) {\n        return pendingRequest;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n        warn$1(\n          `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n        );\n      }\n      if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n        comp = comp.default;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n        throw new Error(`Invalid async component load result: ${comp}`);\n      }\n      resolvedComp = comp;\n      return comp;\n    }));\n  };\n  return defineComponent({\n    name: \"AsyncComponentWrapper\",\n    __asyncLoader: load,\n    __asyncHydrate(el, instance, hydrate) {\n      const doHydrate = hydrateStrategy ? () => {\n        const teardown = hydrateStrategy(\n          hydrate,\n          (cb) => forEachElement(el, cb)\n        );\n        if (teardown) {\n          (instance.bum || (instance.bum = [])).push(teardown);\n        }\n      } : hydrate;\n      if (resolvedComp) {\n        doHydrate();\n      } else {\n        load().then(() => !instance.isUnmounted && doHydrate());\n      }\n    },\n    get __asyncResolved() {\n      return resolvedComp;\n    },\n    setup() {\n      const instance = currentInstance;\n      markAsyncBoundary(instance);\n      if (resolvedComp) {\n        return () => createInnerComp(resolvedComp, instance);\n      }\n      const onError = (err) => {\n        pendingRequest = null;\n        handleError(\n          err,\n          instance,\n          13,\n          !errorComponent\n        );\n      };\n      if (suspensible && instance.suspense || isInSSRComponentSetup) {\n        return load().then((comp) => {\n          return () => createInnerComp(comp, instance);\n        }).catch((err) => {\n          onError(err);\n          return () => errorComponent ? createVNode(errorComponent, {\n            error: err\n          }) : null;\n        });\n      }\n      const loaded = ref(false);\n      const error = ref();\n      const delayed = ref(!!delay);\n      if (delay) {\n        setTimeout(() => {\n          delayed.value = false;\n        }, delay);\n      }\n      if (timeout != null) {\n        setTimeout(() => {\n          if (!loaded.value && !error.value) {\n            const err = new Error(\n              `Async component timed out after ${timeout}ms.`\n            );\n            onError(err);\n            error.value = err;\n          }\n        }, timeout);\n      }\n      load().then(() => {\n        loaded.value = true;\n        if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n          instance.parent.update();\n        }\n      }).catch((err) => {\n        onError(err);\n        error.value = err;\n      });\n      return () => {\n        if (loaded.value && resolvedComp) {\n          return createInnerComp(resolvedComp, instance);\n        } else if (error.value && errorComponent) {\n          return createVNode(errorComponent, {\n            error: error.value\n          });\n        } else if (loadingComponent && !delayed.value) {\n          return createVNode(loadingComponent);\n        }\n      };\n    }\n  });\n}\nfunction createInnerComp(comp, parent) {\n  const { ref: ref2, props, children, ce } = parent.vnode;\n  const vnode = createVNode(comp, props, children);\n  vnode.ref = ref2;\n  vnode.ce = ce;\n  delete parent.vnode.ce;\n  return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n  name: `KeepAlive`,\n  // Marker for special handling inside the renderer. We are not using a ===\n  // check directly on KeepAlive in the renderer, because importing it directly\n  // would prevent it from being tree-shaken.\n  __isKeepAlive: true,\n  props: {\n    include: [String, RegExp, Array],\n    exclude: [String, RegExp, Array],\n    max: [String, Number]\n  },\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const sharedContext = instance.ctx;\n    if (!sharedContext.renderer) {\n      return () => {\n        const children = slots.default && slots.default();\n        return children && children.length === 1 ? children[0] : children;\n      };\n    }\n    const cache = /* @__PURE__ */ new Map();\n    const keys = /* @__PURE__ */ new Set();\n    let current = null;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.__v_cache = cache;\n    }\n    const parentSuspense = instance.suspense;\n    const {\n      renderer: {\n        p: patch,\n        m: move,\n        um: _unmount,\n        o: { createElement }\n      }\n    } = sharedContext;\n    const storageContainer = createElement(\"div\");\n    sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n      const instance2 = vnode.component;\n      move(vnode, container, anchor, 0, parentSuspense);\n      patch(\n        instance2.vnode,\n        vnode,\n        container,\n        anchor,\n        instance2,\n        parentSuspense,\n        namespace,\n        vnode.slotScopeIds,\n        optimized\n      );\n      queuePostRenderEffect(() => {\n        instance2.isDeactivated = false;\n        if (instance2.a) {\n          invokeArrayFns(instance2.a);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    sharedContext.deactivate = (vnode) => {\n      const instance2 = vnode.component;\n      invalidateMount(instance2.m);\n      invalidateMount(instance2.a);\n      move(vnode, storageContainer, null, 1, parentSuspense);\n      queuePostRenderEffect(() => {\n        if (instance2.da) {\n          invokeArrayFns(instance2.da);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n        instance2.isDeactivated = true;\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    function unmount(vnode) {\n      resetShapeFlag(vnode);\n      _unmount(vnode, instance, parentSuspense, true);\n    }\n    function pruneCache(filter) {\n      cache.forEach((vnode, key) => {\n        const name = getComponentName(vnode.type);\n        if (name && !filter(name)) {\n          pruneCacheEntry(key);\n        }\n      });\n    }\n    function pruneCacheEntry(key) {\n      const cached = cache.get(key);\n      if (cached && (!current || !isSameVNodeType(cached, current))) {\n        unmount(cached);\n      } else if (current) {\n        resetShapeFlag(current);\n      }\n      cache.delete(key);\n      keys.delete(key);\n    }\n    watch(\n      () => [props.include, props.exclude],\n      ([include, exclude]) => {\n        include && pruneCache((name) => matches(include, name));\n        exclude && pruneCache((name) => !matches(exclude, name));\n      },\n      // prune post-render after `current` has been updated\n      { flush: \"post\", deep: true }\n    );\n    let pendingCacheKey = null;\n    const cacheSubtree = () => {\n      if (pendingCacheKey != null) {\n        if (isSuspense(instance.subTree.type)) {\n          queuePostRenderEffect(() => {\n            cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n          }, instance.subTree.suspense);\n        } else {\n          cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n        }\n      }\n    };\n    onMounted(cacheSubtree);\n    onUpdated(cacheSubtree);\n    onBeforeUnmount(() => {\n      cache.forEach((cached) => {\n        const { subTree, suspense } = instance;\n        const vnode = getInnerChild(subTree);\n        if (cached.type === vnode.type && cached.key === vnode.key) {\n          resetShapeFlag(vnode);\n          const da = vnode.component.da;\n          da && queuePostRenderEffect(da, suspense);\n          return;\n        }\n        unmount(cached);\n      });\n    });\n    return () => {\n      pendingCacheKey = null;\n      if (!slots.default) {\n        return current = null;\n      }\n      const children = slots.default();\n      const rawVNode = children[0];\n      if (children.length > 1) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(`KeepAlive should contain exactly one component child.`);\n        }\n        current = null;\n        return children;\n      } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n        current = null;\n        return rawVNode;\n      }\n      let vnode = getInnerChild(rawVNode);\n      if (vnode.type === Comment) {\n        current = null;\n        return vnode;\n      }\n      const comp = vnode.type;\n      const name = getComponentName(\n        isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n      );\n      const { include, exclude, max } = props;\n      if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n        vnode.shapeFlag &= ~256;\n        current = vnode;\n        return rawVNode;\n      }\n      const key = vnode.key == null ? comp : vnode.key;\n      const cachedVNode = cache.get(key);\n      if (vnode.el) {\n        vnode = cloneVNode(vnode);\n        if (rawVNode.shapeFlag & 128) {\n          rawVNode.ssContent = vnode;\n        }\n      }\n      pendingCacheKey = key;\n      if (cachedVNode) {\n        vnode.el = cachedVNode.el;\n        vnode.component = cachedVNode.component;\n        if (vnode.transition) {\n          setTransitionHooks(vnode, vnode.transition);\n        }\n        vnode.shapeFlag |= 512;\n        keys.delete(key);\n        keys.add(key);\n      } else {\n        keys.add(key);\n        if (max && keys.size > parseInt(max, 10)) {\n          pruneCacheEntry(keys.values().next().value);\n        }\n      }\n      vnode.shapeFlag |= 256;\n      current = vnode;\n      return isSuspense(rawVNode.type) ? rawVNode : vnode;\n    };\n  }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n  if (isArray(pattern)) {\n    return pattern.some((p) => matches(p, name));\n  } else if (isString(pattern)) {\n    return pattern.split(\",\").includes(name);\n  } else if (isRegExp(pattern)) {\n    pattern.lastIndex = 0;\n    return pattern.test(name);\n  }\n  return false;\n}\nfunction onActivated(hook, target) {\n  registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n  registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n  const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n    let current = target;\n    while (current) {\n      if (current.isDeactivated) {\n        return;\n      }\n      current = current.parent;\n    }\n    return hook();\n  });\n  injectHook(type, wrappedHook, target);\n  if (target) {\n    let current = target.parent;\n    while (current && current.parent) {\n      if (isKeepAlive(current.parent.vnode)) {\n        injectToKeepAliveRoot(wrappedHook, type, target, current);\n      }\n      current = current.parent;\n    }\n  }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n  const injected = injectHook(\n    type,\n    hook,\n    keepAliveRoot,\n    true\n    /* prepend */\n  );\n  onUnmounted(() => {\n    remove(keepAliveRoot[type], injected);\n  }, target);\n}\nfunction resetShapeFlag(vnode) {\n  vnode.shapeFlag &= ~256;\n  vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n  return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n  if (target) {\n    const hooks = target[type] || (target[type] = []);\n    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n      pauseTracking();\n      const reset = setCurrentInstance(target);\n      const res = callWithAsyncErrorHandling(hook, target, type, args);\n      reset();\n      resetTracking();\n      return res;\n    });\n    if (prepend) {\n      hooks.unshift(wrappedHook);\n    } else {\n      hooks.push(wrappedHook);\n    }\n    return wrappedHook;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n    warn$1(\n      `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n    );\n  }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n  if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n    injectHook(lifecycle, (...args) => hook(...args), target);\n  }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\n  \"bu\"\n);\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\n  \"bum\"\n);\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\n  \"sp\"\n);\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n  injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n  return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n  if (isString(component)) {\n    return resolveAsset(COMPONENTS, component, false) || component;\n  } else {\n    return component || NULL_DYNAMIC_COMPONENT;\n  }\n}\nfunction resolveDirective(name) {\n  return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n  const instance = currentRenderingInstance || currentInstance;\n  if (instance) {\n    const Component = instance.type;\n    if (type === COMPONENTS) {\n      const selfName = getComponentName(\n        Component,\n        false\n      );\n      if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n        return Component;\n      }\n    }\n    const res = (\n      // local registration\n      // check instance[type] first which is resolved for options API\n      resolve(instance[type] || Component[type], name) || // global registration\n      resolve(instance.appContext[type], name)\n    );\n    if (!res && maybeSelfReference) {\n      return Component;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n      const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n      warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n    }\n    return res;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n    );\n  }\n}\nfunction resolve(registry, name) {\n  return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n  let ret;\n  const cached = cache && cache[index];\n  const sourceIsArray = isArray(source);\n  if (sourceIsArray || isString(source)) {\n    const sourceIsReactiveArray = sourceIsArray && isReactive(source);\n    let needsWrap = false;\n    if (sourceIsReactiveArray) {\n      needsWrap = !isShallow(source);\n      source = shallowReadArray(source);\n    }\n    ret = new Array(source.length);\n    for (let i = 0, l = source.length; i < l; i++) {\n      ret[i] = renderItem(\n        needsWrap ? toReactive(source[i]) : source[i],\n        i,\n        void 0,\n        cached && cached[i]\n      );\n    }\n  } else if (typeof source === \"number\") {\n    if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n      warn$1(`The v-for range expect an integer value but got ${source}.`);\n    }\n    ret = new Array(source);\n    for (let i = 0; i < source; i++) {\n      ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n    }\n  } else if (isObject(source)) {\n    if (source[Symbol.iterator]) {\n      ret = Array.from(\n        source,\n        (item, i) => renderItem(item, i, void 0, cached && cached[i])\n      );\n    } else {\n      const keys = Object.keys(source);\n      ret = new Array(keys.length);\n      for (let i = 0, l = keys.length; i < l; i++) {\n        const key = keys[i];\n        ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n      }\n    }\n  } else {\n    ret = [];\n  }\n  if (cache) {\n    cache[index] = ret;\n  }\n  return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n  for (let i = 0; i < dynamicSlots.length; i++) {\n    const slot = dynamicSlots[i];\n    if (isArray(slot)) {\n      for (let j = 0; j < slot.length; j++) {\n        slots[slot[j].name] = slot[j].fn;\n      }\n    } else if (slot) {\n      slots[slot.name] = slot.key ? (...args) => {\n        const res = slot.fn(...args);\n        if (res) res.key = slot.key;\n        return res;\n      } : slot.fn;\n    }\n  }\n  return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n  if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {\n    if (name !== \"default\") props.name = name;\n    return openBlock(), createBlock(\n      Fragment,\n      null,\n      [createVNode(\"slot\", props, fallback && fallback())],\n      64\n    );\n  }\n  let slot = slots[name];\n  if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n    warn$1(\n      `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n    );\n    slot = () => [];\n  }\n  if (slot && slot._c) {\n    slot._d = false;\n  }\n  openBlock();\n  const validSlotContent = slot && ensureValidVNode(slot(props));\n  const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch\n  // key attached in the `createSlots` helper, respect that\n  validSlotContent && validSlotContent.key;\n  const rendered = createBlock(\n    Fragment,\n    {\n      key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content\n      (!validSlotContent && fallback ? \"_fb\" : \"\")\n    },\n    validSlotContent || (fallback ? fallback() : []),\n    validSlotContent && slots._ === 1 ? 64 : -2\n  );\n  if (!noSlotted && rendered.scopeId) {\n    rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n  }\n  if (slot && slot._c) {\n    slot._d = true;\n  }\n  return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n  return vnodes.some((child) => {\n    if (!isVNode(child)) return true;\n    if (child.type === Comment) return false;\n    if (child.type === Fragment && !ensureValidVNode(child.children))\n      return false;\n    return true;\n  }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n  const ret = {};\n  if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n    warn$1(`v-on with no argument expects an object value.`);\n    return ret;\n  }\n  for (const key in obj) {\n    ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n  }\n  return ret;\n}\n\nconst getPublicInstance = (i) => {\n  if (!i) return null;\n  if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n  return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n  // Move PURE marker to new line to workaround compiler discarding it\n  // due to type annotation\n  /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n    $: (i) => i,\n    $el: (i) => i.vnode.el,\n    $data: (i) => i.data,\n    $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n    $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n    $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n    $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n    $parent: (i) => getPublicInstance(i.parent),\n    $root: (i) => getPublicInstance(i.root),\n    $host: (i) => i.ce,\n    $emit: (i) => i.emit,\n    $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n    $forceUpdate: (i) => i.f || (i.f = () => {\n      queueJob(i.update);\n    }),\n    $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n    $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n  })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n  get({ _: instance }, key) {\n    if (key === \"__v_skip\") {\n      return true;\n    }\n    const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n    if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n      return true;\n    }\n    let normalizedProps;\n    if (key[0] !== \"$\") {\n      const n = accessCache[key];\n      if (n !== void 0) {\n        switch (n) {\n          case 1 /* SETUP */:\n            return setupState[key];\n          case 2 /* DATA */:\n            return data[key];\n          case 4 /* CONTEXT */:\n            return ctx[key];\n          case 3 /* PROPS */:\n            return props[key];\n        }\n      } else if (hasSetupBinding(setupState, key)) {\n        accessCache[key] = 1 /* SETUP */;\n        return setupState[key];\n      } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n        accessCache[key] = 2 /* DATA */;\n        return data[key];\n      } else if (\n        // only cache other properties when instance has declared (thus stable)\n        // props\n        (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n      ) {\n        accessCache[key] = 3 /* PROPS */;\n        return props[key];\n      } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n        accessCache[key] = 4 /* CONTEXT */;\n        return ctx[key];\n      } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n        accessCache[key] = 0 /* OTHER */;\n      }\n    }\n    const publicGetter = publicPropertiesMap[key];\n    let cssModule, globalProperties;\n    if (publicGetter) {\n      if (key === \"$attrs\") {\n        track(instance.attrs, \"get\", \"\");\n        !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n      } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n        track(instance, \"get\", key);\n      }\n      return publicGetter(instance);\n    } else if (\n      // css module (injected by vue-loader)\n      (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n    ) {\n      return cssModule;\n    } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n      accessCache[key] = 4 /* CONTEXT */;\n      return ctx[key];\n    } else if (\n      // global properties\n      globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n    ) {\n      {\n        return globalProperties[key];\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n    // to infinite warning loop\n    key.indexOf(\"__v\") !== 0)) {\n      if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n        warn$1(\n          `Property ${JSON.stringify(\n            key\n          )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n        );\n      } else if (instance === currentRenderingInstance) {\n        warn$1(\n          `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n        );\n      }\n    }\n  },\n  set({ _: instance }, key, value) {\n    const { data, setupState, ctx } = instance;\n    if (hasSetupBinding(setupState, key)) {\n      setupState[key] = value;\n      return true;\n    } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n      warn$1(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n      return false;\n    } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n      data[key] = value;\n      return true;\n    } else if (hasOwn(instance.props, key)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n      return false;\n    }\n    if (key[0] === \"$\" && key.slice(1) in instance) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Attempting to mutate public property \"${key}\". Properties starting with $ are reserved and readonly.`\n      );\n      return false;\n    } else {\n      if (!!(process.env.NODE_ENV !== \"production\") && key in instance.appContext.config.globalProperties) {\n        Object.defineProperty(ctx, key, {\n          enumerable: true,\n          configurable: true,\n          value\n        });\n      } else {\n        ctx[key] = value;\n      }\n    }\n    return true;\n  },\n  has({\n    _: { data, setupState, accessCache, ctx, appContext, propsOptions }\n  }, key) {\n    let normalizedProps;\n    return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);\n  },\n  defineProperty(target, key, descriptor) {\n    if (descriptor.get != null) {\n      target._.accessCache[key] = 0;\n    } else if (hasOwn(descriptor, \"value\")) {\n      this.set(target, key, descriptor.value, null);\n    }\n    return Reflect.defineProperty(target, key, descriptor);\n  }\n};\nif (!!(process.env.NODE_ENV !== \"production\") && true) {\n  PublicInstanceProxyHandlers.ownKeys = (target) => {\n    warn$1(\n      `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`\n    );\n    return Reflect.ownKeys(target);\n  };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend({}, PublicInstanceProxyHandlers, {\n  get(target, key) {\n    if (key === Symbol.unscopables) {\n      return;\n    }\n    return PublicInstanceProxyHandlers.get(target, key, target);\n  },\n  has(_, key) {\n    const has = key[0] !== \"_\" && !isGloballyAllowed(key);\n    if (!!(process.env.NODE_ENV !== \"production\") && !has && PublicInstanceProxyHandlers.has(_, key)) {\n      warn$1(\n        `Property ${JSON.stringify(\n          key\n        )} should not start with _ which is a reserved prefix for Vue internals.`\n      );\n    }\n    return has;\n  }\n});\nfunction createDevRenderContext(instance) {\n  const target = {};\n  Object.defineProperty(target, `_`, {\n    configurable: true,\n    enumerable: false,\n    get: () => instance\n  });\n  Object.keys(publicPropertiesMap).forEach((key) => {\n    Object.defineProperty(target, key, {\n      configurable: true,\n      enumerable: false,\n      get: () => publicPropertiesMap[key](instance),\n      // intercepted by the proxy so no need for implementation,\n      // but needed to prevent set errors\n      set: NOOP\n    });\n  });\n  return target;\n}\nfunction exposePropsOnRenderContext(instance) {\n  const {\n    ctx,\n    propsOptions: [propsOptions]\n  } = instance;\n  if (propsOptions) {\n    Object.keys(propsOptions).forEach((key) => {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => instance.props[key],\n        set: NOOP\n      });\n    });\n  }\n}\nfunction exposeSetupStateOnRenderContext(instance) {\n  const { ctx, setupState } = instance;\n  Object.keys(toRaw(setupState)).forEach((key) => {\n    if (!setupState.__isScriptSetup) {\n      if (isReservedPrefix(key[0])) {\n        warn$1(\n          `setup() return property ${JSON.stringify(\n            key\n          )} should not start with \"$\" or \"_\" which are reserved prefixes for Vue internals.`\n        );\n        return;\n      }\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => setupState[key],\n        set: NOOP\n      });\n    }\n  });\n}\n\nconst warnRuntimeUsage = (method) => warn$1(\n  `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`\n);\nfunction defineProps() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineProps`);\n  }\n  return null;\n}\nfunction defineEmits() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineEmits`);\n  }\n  return null;\n}\nfunction defineExpose(exposed) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineExpose`);\n  }\n}\nfunction defineOptions(options) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineOptions`);\n  }\n}\nfunction defineSlots() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineSlots`);\n  }\n  return null;\n}\nfunction defineModel() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(\"defineModel\");\n  }\n}\nfunction withDefaults(props, defaults) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`withDefaults`);\n  }\n  return null;\n}\nfunction useSlots() {\n  return getContext().slots;\n}\nfunction useAttrs() {\n  return getContext().attrs;\n}\nfunction getContext() {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn$1(`useContext() called without active instance.`);\n  }\n  return i.setupContext || (i.setupContext = createSetupContext(i));\n}\nfunction normalizePropsOrEmits(props) {\n  return isArray(props) ? props.reduce(\n    (normalized, p) => (normalized[p] = null, normalized),\n    {}\n  ) : props;\n}\nfunction mergeDefaults(raw, defaults) {\n  const props = normalizePropsOrEmits(raw);\n  for (const key in defaults) {\n    if (key.startsWith(\"__skip\")) continue;\n    let opt = props[key];\n    if (opt) {\n      if (isArray(opt) || isFunction(opt)) {\n        opt = props[key] = { type: opt, default: defaults[key] };\n      } else {\n        opt.default = defaults[key];\n      }\n    } else if (opt === null) {\n      opt = props[key] = { default: defaults[key] };\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`props default key \"${key}\" has no corresponding declaration.`);\n    }\n    if (opt && defaults[`__skip_${key}`]) {\n      opt.skipFactory = true;\n    }\n  }\n  return props;\n}\nfunction mergeModels(a, b) {\n  if (!a || !b) return a || b;\n  if (isArray(a) && isArray(b)) return a.concat(b);\n  return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));\n}\nfunction createPropsRestProxy(props, excludedKeys) {\n  const ret = {};\n  for (const key in props) {\n    if (!excludedKeys.includes(key)) {\n      Object.defineProperty(ret, key, {\n        enumerable: true,\n        get: () => props[key]\n      });\n    }\n  }\n  return ret;\n}\nfunction withAsyncContext(getAwaitable) {\n  const ctx = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !ctx) {\n    warn$1(\n      `withAsyncContext called without active current instance. This is likely a bug.`\n    );\n  }\n  let awaitable = getAwaitable();\n  unsetCurrentInstance();\n  if (isPromise(awaitable)) {\n    awaitable = awaitable.catch((e) => {\n      setCurrentInstance(ctx);\n      throw e;\n    });\n  }\n  return [awaitable, () => setCurrentInstance(ctx)];\n}\n\nfunction createDuplicateChecker() {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (type, key) => {\n    if (cache[key]) {\n      warn$1(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n    } else {\n      cache[key] = type;\n    }\n  };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n  const options = resolveMergedOptions(instance);\n  const publicThis = instance.proxy;\n  const ctx = instance.ctx;\n  shouldCacheAccess = false;\n  if (options.beforeCreate) {\n    callHook(options.beforeCreate, instance, \"bc\");\n  }\n  const {\n    // state\n    data: dataOptions,\n    computed: computedOptions,\n    methods,\n    watch: watchOptions,\n    provide: provideOptions,\n    inject: injectOptions,\n    // lifecycle\n    created,\n    beforeMount,\n    mounted,\n    beforeUpdate,\n    updated,\n    activated,\n    deactivated,\n    beforeDestroy,\n    beforeUnmount,\n    destroyed,\n    unmounted,\n    render,\n    renderTracked,\n    renderTriggered,\n    errorCaptured,\n    serverPrefetch,\n    // public API\n    expose,\n    inheritAttrs,\n    // assets\n    components,\n    directives,\n    filters\n  } = options;\n  const checkDuplicateProperties = !!(process.env.NODE_ENV !== \"production\") ? createDuplicateChecker() : null;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const [propsOptions] = instance.propsOptions;\n    if (propsOptions) {\n      for (const key in propsOptions) {\n        checkDuplicateProperties(\"Props\" /* PROPS */, key);\n      }\n    }\n  }\n  if (injectOptions) {\n    resolveInjections(injectOptions, ctx, checkDuplicateProperties);\n  }\n  if (methods) {\n    for (const key in methods) {\n      const methodHandler = methods[key];\n      if (isFunction(methodHandler)) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          Object.defineProperty(ctx, key, {\n            value: methodHandler.bind(publicThis),\n            configurable: true,\n            enumerable: true,\n            writable: true\n          });\n        } else {\n          ctx[key] = methodHandler.bind(publicThis);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          checkDuplicateProperties(\"Methods\" /* METHODS */, key);\n        }\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn$1(\n          `Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. Did you reference the function correctly?`\n        );\n      }\n    }\n  }\n  if (dataOptions) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(dataOptions)) {\n      warn$1(\n        `The data option must be a function. Plain object usage is no longer supported.`\n      );\n    }\n    const data = dataOptions.call(publicThis, publicThis);\n    if (!!(process.env.NODE_ENV !== \"production\") && isPromise(data)) {\n      warn$1(\n        `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`\n      );\n    }\n    if (!isObject(data)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`data() should return an object.`);\n    } else {\n      instance.data = reactive(data);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        for (const key in data) {\n          checkDuplicateProperties(\"Data\" /* DATA */, key);\n          if (!isReservedPrefix(key[0])) {\n            Object.defineProperty(ctx, key, {\n              configurable: true,\n              enumerable: true,\n              get: () => data[key],\n              set: NOOP\n            });\n          }\n        }\n      }\n    }\n  }\n  shouldCacheAccess = true;\n  if (computedOptions) {\n    for (const key in computedOptions) {\n      const opt = computedOptions[key];\n      const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n      if (!!(process.env.NODE_ENV !== \"production\") && get === NOOP) {\n        warn$1(`Computed property \"${key}\" has no getter.`);\n      }\n      const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : !!(process.env.NODE_ENV !== \"production\") ? () => {\n        warn$1(\n          `Write operation failed: computed property \"${key}\" is readonly.`\n        );\n      } : NOOP;\n      const c = computed({\n        get,\n        set\n      });\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => c.value,\n        set: (v) => c.value = v\n      });\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\n      }\n    }\n  }\n  if (watchOptions) {\n    for (const key in watchOptions) {\n      createWatcher(watchOptions[key], ctx, publicThis, key);\n    }\n  }\n  if (provideOptions) {\n    const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n    Reflect.ownKeys(provides).forEach((key) => {\n      provide(key, provides[key]);\n    });\n  }\n  if (created) {\n    callHook(created, instance, \"c\");\n  }\n  function registerLifecycleHook(register, hook) {\n    if (isArray(hook)) {\n      hook.forEach((_hook) => register(_hook.bind(publicThis)));\n    } else if (hook) {\n      register(hook.bind(publicThis));\n    }\n  }\n  registerLifecycleHook(onBeforeMount, beforeMount);\n  registerLifecycleHook(onMounted, mounted);\n  registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n  registerLifecycleHook(onUpdated, updated);\n  registerLifecycleHook(onActivated, activated);\n  registerLifecycleHook(onDeactivated, deactivated);\n  registerLifecycleHook(onErrorCaptured, errorCaptured);\n  registerLifecycleHook(onRenderTracked, renderTracked);\n  registerLifecycleHook(onRenderTriggered, renderTriggered);\n  registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n  registerLifecycleHook(onUnmounted, unmounted);\n  registerLifecycleHook(onServerPrefetch, serverPrefetch);\n  if (isArray(expose)) {\n    if (expose.length) {\n      const exposed = instance.exposed || (instance.exposed = {});\n      expose.forEach((key) => {\n        Object.defineProperty(exposed, key, {\n          get: () => publicThis[key],\n          set: (val) => publicThis[key] = val\n        });\n      });\n    } else if (!instance.exposed) {\n      instance.exposed = {};\n    }\n  }\n  if (render && instance.render === NOOP) {\n    instance.render = render;\n  }\n  if (inheritAttrs != null) {\n    instance.inheritAttrs = inheritAttrs;\n  }\n  if (components) instance.components = components;\n  if (directives) instance.directives = directives;\n  if (serverPrefetch) {\n    markAsyncBoundary(instance);\n  }\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {\n  if (isArray(injectOptions)) {\n    injectOptions = normalizeInject(injectOptions);\n  }\n  for (const key in injectOptions) {\n    const opt = injectOptions[key];\n    let injected;\n    if (isObject(opt)) {\n      if (\"default\" in opt) {\n        injected = inject(\n          opt.from || key,\n          opt.default,\n          true\n        );\n      } else {\n        injected = inject(opt.from || key);\n      }\n    } else {\n      injected = inject(opt);\n    }\n    if (isRef(injected)) {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => injected.value,\n        set: (v) => injected.value = v\n      });\n    } else {\n      ctx[key] = injected;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      checkDuplicateProperties(\"Inject\" /* INJECT */, key);\n    }\n  }\n}\nfunction callHook(hook, instance, type) {\n  callWithAsyncErrorHandling(\n    isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),\n    instance,\n    type\n  );\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n  let getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n  if (isString(raw)) {\n    const handler = ctx[raw];\n    if (isFunction(handler)) {\n      {\n        watch(getter, handler);\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`Invalid watch handler specified by key \"${raw}\"`, handler);\n    }\n  } else if (isFunction(raw)) {\n    {\n      watch(getter, raw.bind(publicThis));\n    }\n  } else if (isObject(raw)) {\n    if (isArray(raw)) {\n      raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n    } else {\n      const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n      if (isFunction(handler)) {\n        watch(getter, handler, raw);\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn$1(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n      }\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`Invalid watch option: \"${key}\"`, raw);\n  }\n}\nfunction resolveMergedOptions(instance) {\n  const base = instance.type;\n  const { mixins, extends: extendsOptions } = base;\n  const {\n    mixins: globalMixins,\n    optionsCache: cache,\n    config: { optionMergeStrategies }\n  } = instance.appContext;\n  const cached = cache.get(base);\n  let resolved;\n  if (cached) {\n    resolved = cached;\n  } else if (!globalMixins.length && !mixins && !extendsOptions) {\n    {\n      resolved = base;\n    }\n  } else {\n    resolved = {};\n    if (globalMixins.length) {\n      globalMixins.forEach(\n        (m) => mergeOptions(resolved, m, optionMergeStrategies, true)\n      );\n    }\n    mergeOptions(resolved, base, optionMergeStrategies);\n  }\n  if (isObject(base)) {\n    cache.set(base, resolved);\n  }\n  return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n  const { mixins, extends: extendsOptions } = from;\n  if (extendsOptions) {\n    mergeOptions(to, extendsOptions, strats, true);\n  }\n  if (mixins) {\n    mixins.forEach(\n      (m) => mergeOptions(to, m, strats, true)\n    );\n  }\n  for (const key in from) {\n    if (asMixin && key === \"expose\") {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `\"expose\" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`\n      );\n    } else {\n      const strat = internalOptionMergeStrats[key] || strats && strats[key];\n      to[key] = strat ? strat(to[key], from[key]) : from[key];\n    }\n  }\n  return to;\n}\nconst internalOptionMergeStrats = {\n  data: mergeDataFn,\n  props: mergeEmitsOrPropsOptions,\n  emits: mergeEmitsOrPropsOptions,\n  // objects\n  methods: mergeObjectOptions,\n  computed: mergeObjectOptions,\n  // lifecycle\n  beforeCreate: mergeAsArray,\n  created: mergeAsArray,\n  beforeMount: mergeAsArray,\n  mounted: mergeAsArray,\n  beforeUpdate: mergeAsArray,\n  updated: mergeAsArray,\n  beforeDestroy: mergeAsArray,\n  beforeUnmount: mergeAsArray,\n  destroyed: mergeAsArray,\n  unmounted: mergeAsArray,\n  activated: mergeAsArray,\n  deactivated: mergeAsArray,\n  errorCaptured: mergeAsArray,\n  serverPrefetch: mergeAsArray,\n  // assets\n  components: mergeObjectOptions,\n  directives: mergeObjectOptions,\n  // watch\n  watch: mergeWatchOptions,\n  // provide / inject\n  provide: mergeDataFn,\n  inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n  if (!from) {\n    return to;\n  }\n  if (!to) {\n    return from;\n  }\n  return function mergedDataFn() {\n    return (extend)(\n      isFunction(to) ? to.call(this, this) : to,\n      isFunction(from) ? from.call(this, this) : from\n    );\n  };\n}\nfunction mergeInject(to, from) {\n  return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n  if (isArray(raw)) {\n    const res = {};\n    for (let i = 0; i < raw.length; i++) {\n      res[raw[i]] = raw[i];\n    }\n    return res;\n  }\n  return raw;\n}\nfunction mergeAsArray(to, from) {\n  return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n  return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;\n}\nfunction mergeEmitsOrPropsOptions(to, from) {\n  if (to) {\n    if (isArray(to) && isArray(from)) {\n      return [.../* @__PURE__ */ new Set([...to, ...from])];\n    }\n    return extend(\n      /* @__PURE__ */ Object.create(null),\n      normalizePropsOrEmits(to),\n      normalizePropsOrEmits(from != null ? from : {})\n    );\n  } else {\n    return from;\n  }\n}\nfunction mergeWatchOptions(to, from) {\n  if (!to) return from;\n  if (!from) return to;\n  const merged = extend(/* @__PURE__ */ Object.create(null), to);\n  for (const key in from) {\n    merged[key] = mergeAsArray(to[key], from[key]);\n  }\n  return merged;\n}\n\nfunction createAppContext() {\n  return {\n    app: null,\n    config: {\n      isNativeTag: NO,\n      performance: false,\n      globalProperties: {},\n      optionMergeStrategies: {},\n      errorHandler: void 0,\n      warnHandler: void 0,\n      compilerOptions: {}\n    },\n    mixins: [],\n    components: {},\n    directives: {},\n    provides: /* @__PURE__ */ Object.create(null),\n    optionsCache: /* @__PURE__ */ new WeakMap(),\n    propsCache: /* @__PURE__ */ new WeakMap(),\n    emitsCache: /* @__PURE__ */ new WeakMap()\n  };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n  return function createApp(rootComponent, rootProps = null) {\n    if (!isFunction(rootComponent)) {\n      rootComponent = extend({}, rootComponent);\n    }\n    if (rootProps != null && !isObject(rootProps)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`root props passed to app.mount() must be an object.`);\n      rootProps = null;\n    }\n    const context = createAppContext();\n    const installedPlugins = /* @__PURE__ */ new WeakSet();\n    const pluginCleanupFns = [];\n    let isMounted = false;\n    const app = context.app = {\n      _uid: uid$1++,\n      _component: rootComponent,\n      _props: rootProps,\n      _container: null,\n      _context: context,\n      _instance: null,\n      version,\n      get config() {\n        return context.config;\n      },\n      set config(v) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `app.config cannot be replaced. Modify individual options instead.`\n          );\n        }\n      },\n      use(plugin, ...options) {\n        if (installedPlugins.has(plugin)) {\n          !!(process.env.NODE_ENV !== \"production\") && warn$1(`Plugin has already been applied to target app.`);\n        } else if (plugin && isFunction(plugin.install)) {\n          installedPlugins.add(plugin);\n          plugin.install(app, ...options);\n        } else if (isFunction(plugin)) {\n          installedPlugins.add(plugin);\n          plugin(app, ...options);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `A plugin must either be a function or an object with an \"install\" function.`\n          );\n        }\n        return app;\n      },\n      mixin(mixin) {\n        if (__VUE_OPTIONS_API__) {\n          if (!context.mixins.includes(mixin)) {\n            context.mixins.push(mixin);\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn$1(\n              \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n            );\n          }\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Mixins are only available in builds supporting Options API\");\n        }\n        return app;\n      },\n      component(name, component) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateComponentName(name, context.config);\n        }\n        if (!component) {\n          return context.components[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n          warn$1(`Component \"${name}\" has already been registered in target app.`);\n        }\n        context.components[name] = component;\n        return app;\n      },\n      directive(name, directive) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateDirectiveName(name);\n        }\n        if (!directive) {\n          return context.directives[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n          warn$1(`Directive \"${name}\" has already been registered in target app.`);\n        }\n        context.directives[name] = directive;\n        return app;\n      },\n      mount(rootContainer, isHydrate, namespace) {\n        if (!isMounted) {\n          if (!!(process.env.NODE_ENV !== \"production\") && rootContainer.__vue_app__) {\n            warn$1(\n              `There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling \\`app.unmount()\\` first.`\n            );\n          }\n          const vnode = app._ceVNode || createVNode(rootComponent, rootProps);\n          vnode.appContext = context;\n          if (namespace === true) {\n            namespace = \"svg\";\n          } else if (namespace === false) {\n            namespace = void 0;\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            context.reload = () => {\n              render(\n                cloneVNode(vnode),\n                rootContainer,\n                namespace\n              );\n            };\n          }\n          if (isHydrate && hydrate) {\n            hydrate(vnode, rootContainer);\n          } else {\n            render(vnode, rootContainer, namespace);\n          }\n          isMounted = true;\n          app._container = rootContainer;\n          rootContainer.__vue_app__ = app;\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = vnode.component;\n            devtoolsInitApp(app, version);\n          }\n          return getComponentPublicInstance(vnode.component);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \\`const createMyApp = () => createApp(App)\\``\n          );\n        }\n      },\n      onUnmount(cleanupFn) {\n        if (!!(process.env.NODE_ENV !== \"production\") && typeof cleanupFn !== \"function\") {\n          warn$1(\n            `Expected function as first argument to app.onUnmount(), but got ${typeof cleanupFn}`\n          );\n        }\n        pluginCleanupFns.push(cleanupFn);\n      },\n      unmount() {\n        if (isMounted) {\n          callWithAsyncErrorHandling(\n            pluginCleanupFns,\n            app._instance,\n            16\n          );\n          render(null, app._container);\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = null;\n            devtoolsUnmountApp(app);\n          }\n          delete app._container.__vue_app__;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(`Cannot unmount an app that is not mounted.`);\n        }\n      },\n      provide(key, value) {\n        if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n          warn$1(\n            `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n          );\n        }\n        context.provides[key] = value;\n        return app;\n      },\n      runWithContext(fn) {\n        const lastApp = currentApp;\n        currentApp = app;\n        try {\n          return fn();\n        } finally {\n          currentApp = lastApp;\n        }\n      }\n    };\n    return app;\n  };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n  if (!currentInstance) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`provide() can only be used inside setup().`);\n    }\n  } else {\n    let provides = currentInstance.provides;\n    const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n    if (parentProvides === provides) {\n      provides = currentInstance.provides = Object.create(parentProvides);\n    }\n    provides[key] = value;\n  }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n  const instance = currentInstance || currentRenderingInstance;\n  if (instance || currentApp) {\n    const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;\n    if (provides && key in provides) {\n      return provides[key];\n    } else if (arguments.length > 1) {\n      return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`injection \"${String(key)}\" not found.`);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`inject() can only be used inside setup() or functional components.`);\n  }\n}\nfunction hasInjectionContext() {\n  return !!(currentInstance || currentRenderingInstance || currentApp);\n}\n\nconst internalObjectProto = {};\nconst createInternalObject = () => Object.create(internalObjectProto);\nconst isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;\n\nfunction initProps(instance, rawProps, isStateful, isSSR = false) {\n  const props = {};\n  const attrs = createInternalObject();\n  instance.propsDefaults = /* @__PURE__ */ Object.create(null);\n  setFullProps(instance, rawProps, props, attrs);\n  for (const key in instance.propsOptions[0]) {\n    if (!(key in props)) {\n      props[key] = void 0;\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n  if (isStateful) {\n    instance.props = isSSR ? props : shallowReactive(props);\n  } else {\n    if (!instance.type.props) {\n      instance.props = attrs;\n    } else {\n      instance.props = props;\n    }\n  }\n  instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n  while (instance) {\n    if (instance.type.__hmrId) return true;\n    instance = instance.parent;\n  }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n  const {\n    props,\n    attrs,\n    vnode: { patchFlag }\n  } = instance;\n  const rawCurrentProps = toRaw(props);\n  const [options] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  if (\n    // always force full diff in dev\n    // - #1942 if hmr is enabled with sfc component\n    // - vite#872 non-sfc component used by sfc component\n    !(!!(process.env.NODE_ENV !== \"production\") && isInHmrContext(instance)) && (optimized || patchFlag > 0) && !(patchFlag & 16)\n  ) {\n    if (patchFlag & 8) {\n      const propsToUpdate = instance.vnode.dynamicProps;\n      for (let i = 0; i < propsToUpdate.length; i++) {\n        let key = propsToUpdate[i];\n        if (isEmitListener(instance.emitsOptions, key)) {\n          continue;\n        }\n        const value = rawProps[key];\n        if (options) {\n          if (hasOwn(attrs, key)) {\n            if (value !== attrs[key]) {\n              attrs[key] = value;\n              hasAttrsChanged = true;\n            }\n          } else {\n            const camelizedKey = camelize(key);\n            props[camelizedKey] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              camelizedKey,\n              value,\n              instance,\n              false\n            );\n          }\n        } else {\n          if (value !== attrs[key]) {\n            attrs[key] = value;\n            hasAttrsChanged = true;\n          }\n        }\n      }\n    }\n  } else {\n    if (setFullProps(instance, rawProps, props, attrs)) {\n      hasAttrsChanged = true;\n    }\n    let kebabKey;\n    for (const key in rawCurrentProps) {\n      if (!rawProps || // for camelCase\n      !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case\n      // and converted to camelCase (#955)\n      ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {\n        if (options) {\n          if (rawPrevProps && // for camelCase\n          (rawPrevProps[key] !== void 0 || // for kebab-case\n          rawPrevProps[kebabKey] !== void 0)) {\n            props[key] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              key,\n              void 0,\n              instance,\n              true\n            );\n          }\n        } else {\n          delete props[key];\n        }\n      }\n    }\n    if (attrs !== rawCurrentProps) {\n      for (const key in attrs) {\n        if (!rawProps || !hasOwn(rawProps, key) && true) {\n          delete attrs[key];\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (hasAttrsChanged) {\n    trigger(instance.attrs, \"set\", \"\");\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n  const [options, needCastKeys] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  let rawCastValues;\n  if (rawProps) {\n    for (let key in rawProps) {\n      if (isReservedProp(key)) {\n        continue;\n      }\n      const value = rawProps[key];\n      let camelKey;\n      if (options && hasOwn(options, camelKey = camelize(key))) {\n        if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n          props[camelKey] = value;\n        } else {\n          (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n        }\n      } else if (!isEmitListener(instance.emitsOptions, key)) {\n        if (!(key in attrs) || value !== attrs[key]) {\n          attrs[key] = value;\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (needCastKeys) {\n    const rawCurrentProps = toRaw(props);\n    const castValues = rawCastValues || EMPTY_OBJ;\n    for (let i = 0; i < needCastKeys.length; i++) {\n      const key = needCastKeys[i];\n      props[key] = resolvePropValue(\n        options,\n        rawCurrentProps,\n        key,\n        castValues[key],\n        instance,\n        !hasOwn(castValues, key)\n      );\n    }\n  }\n  return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n  const opt = options[key];\n  if (opt != null) {\n    const hasDefault = hasOwn(opt, \"default\");\n    if (hasDefault && value === void 0) {\n      const defaultValue = opt.default;\n      if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {\n        const { propsDefaults } = instance;\n        if (key in propsDefaults) {\n          value = propsDefaults[key];\n        } else {\n          const reset = setCurrentInstance(instance);\n          value = propsDefaults[key] = defaultValue.call(\n            null,\n            props\n          );\n          reset();\n        }\n      } else {\n        value = defaultValue;\n      }\n      if (instance.ce) {\n        instance.ce._setProp(key, value);\n      }\n    }\n    if (opt[0 /* shouldCast */]) {\n      if (isAbsent && !hasDefault) {\n        value = false;\n      } else if (opt[1 /* shouldCastTrue */] && (value === \"\" || value === hyphenate(key))) {\n        value = true;\n      }\n    }\n  }\n  return value;\n}\nconst mixinPropsCache = /* @__PURE__ */ new WeakMap();\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n  const cache = __VUE_OPTIONS_API__ && asMixin ? mixinPropsCache : appContext.propsCache;\n  const cached = cache.get(comp);\n  if (cached) {\n    return cached;\n  }\n  const raw = comp.props;\n  const normalized = {};\n  const needCastKeys = [];\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendProps = (raw2) => {\n      hasExtends = true;\n      const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n      extend(normalized, props);\n      if (keys) needCastKeys.push(...keys);\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendProps);\n    }\n    if (comp.extends) {\n      extendProps(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendProps);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, EMPTY_ARR);\n    }\n    return EMPTY_ARR;\n  }\n  if (isArray(raw)) {\n    for (let i = 0; i < raw.length; i++) {\n      if (!!(process.env.NODE_ENV !== \"production\") && !isString(raw[i])) {\n        warn$1(`props must be strings when using array syntax.`, raw[i]);\n      }\n      const normalizedKey = camelize(raw[i]);\n      if (validatePropName(normalizedKey)) {\n        normalized[normalizedKey] = EMPTY_OBJ;\n      }\n    }\n  } else if (raw) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isObject(raw)) {\n      warn$1(`invalid props options`, raw);\n    }\n    for (const key in raw) {\n      const normalizedKey = camelize(key);\n      if (validatePropName(normalizedKey)) {\n        const opt = raw[key];\n        const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);\n        const propType = prop.type;\n        let shouldCast = false;\n        let shouldCastTrue = true;\n        if (isArray(propType)) {\n          for (let index = 0; index < propType.length; ++index) {\n            const type = propType[index];\n            const typeName = isFunction(type) && type.name;\n            if (typeName === \"Boolean\") {\n              shouldCast = true;\n              break;\n            } else if (typeName === \"String\") {\n              shouldCastTrue = false;\n            }\n          }\n        } else {\n          shouldCast = isFunction(propType) && propType.name === \"Boolean\";\n        }\n        prop[0 /* shouldCast */] = shouldCast;\n        prop[1 /* shouldCastTrue */] = shouldCastTrue;\n        if (shouldCast || hasOwn(prop, \"default\")) {\n          needCastKeys.push(normalizedKey);\n        }\n      }\n    }\n  }\n  const res = [normalized, needCastKeys];\n  if (isObject(comp)) {\n    cache.set(comp, res);\n  }\n  return res;\n}\nfunction validatePropName(key) {\n  if (key[0] !== \"$\" && !isReservedProp(key)) {\n    return true;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`Invalid prop name: \"${key}\" is a reserved property.`);\n  }\n  return false;\n}\nfunction getType(ctor) {\n  if (ctor === null) {\n    return \"null\";\n  }\n  if (typeof ctor === \"function\") {\n    return ctor.name || \"\";\n  } else if (typeof ctor === \"object\") {\n    const name = ctor.constructor && ctor.constructor.name;\n    return name || \"\";\n  }\n  return \"\";\n}\nfunction validateProps(rawProps, props, instance) {\n  const resolvedValues = toRaw(props);\n  const options = instance.propsOptions[0];\n  const camelizePropsKey = Object.keys(rawProps).map((key) => camelize(key));\n  for (const key in options) {\n    let opt = options[key];\n    if (opt == null) continue;\n    validateProp(\n      key,\n      resolvedValues[key],\n      opt,\n      !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(resolvedValues) : resolvedValues,\n      !camelizePropsKey.includes(key)\n    );\n  }\n}\nfunction validateProp(name, value, prop, props, isAbsent) {\n  const { type, required, validator, skipCheck } = prop;\n  if (required && isAbsent) {\n    warn$1('Missing required prop: \"' + name + '\"');\n    return;\n  }\n  if (value == null && !required) {\n    return;\n  }\n  if (type != null && type !== true && !skipCheck) {\n    let isValid = false;\n    const types = isArray(type) ? type : [type];\n    const expectedTypes = [];\n    for (let i = 0; i < types.length && !isValid; i++) {\n      const { valid, expectedType } = assertType(value, types[i]);\n      expectedTypes.push(expectedType || \"\");\n      isValid = valid;\n    }\n    if (!isValid) {\n      warn$1(getInvalidTypeMessage(name, value, expectedTypes));\n      return;\n    }\n  }\n  if (validator && !validator(value, props)) {\n    warn$1('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n  }\n}\nconst isSimpleType = /* @__PURE__ */ makeMap(\n  \"String,Number,Boolean,Function,Symbol,BigInt\"\n);\nfunction assertType(value, type) {\n  let valid;\n  const expectedType = getType(type);\n  if (expectedType === \"null\") {\n    valid = value === null;\n  } else if (isSimpleType(expectedType)) {\n    const t = typeof value;\n    valid = t === expectedType.toLowerCase();\n    if (!valid && t === \"object\") {\n      valid = value instanceof type;\n    }\n  } else if (expectedType === \"Object\") {\n    valid = isObject(value);\n  } else if (expectedType === \"Array\") {\n    valid = isArray(value);\n  } else {\n    valid = value instanceof type;\n  }\n  return {\n    valid,\n    expectedType\n  };\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n  if (expectedTypes.length === 0) {\n    return `Prop type [] for prop \"${name}\" won't match anything. Did you mean to use type Array instead?`;\n  }\n  let message = `Invalid prop: type check failed for prop \"${name}\". Expected ${expectedTypes.map(capitalize).join(\" | \")}`;\n  const expectedType = expectedTypes[0];\n  const receivedType = toRawType(value);\n  const expectedValue = styleValue(value, expectedType);\n  const receivedValue = styleValue(value, receivedType);\n  if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {\n    message += ` with value ${expectedValue}`;\n  }\n  message += `, got ${receivedType} `;\n  if (isExplicable(receivedType)) {\n    message += `with value ${receivedValue}.`;\n  }\n  return message;\n}\nfunction styleValue(value, type) {\n  if (type === \"String\") {\n    return `\"${value}\"`;\n  } else if (type === \"Number\") {\n    return `${Number(value)}`;\n  } else {\n    return `${value}`;\n  }\n}\nfunction isExplicable(type) {\n  const explicitTypes = [\"string\", \"number\", \"boolean\"];\n  return explicitTypes.some((elem) => type.toLowerCase() === elem);\n}\nfunction isBoolean(...args) {\n  return args.some((elem) => elem.toLowerCase() === \"boolean\");\n}\n\nconst isInternalKey = (key) => key[0] === \"_\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n  if (rawSlot._n) {\n    return rawSlot;\n  }\n  const normalized = withCtx((...args) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && currentInstance && (!ctx || ctx.root === currentInstance.root)) {\n      warn$1(\n        `Slot \"${key}\" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`\n      );\n    }\n    return normalizeSlotValue(rawSlot(...args));\n  }, ctx);\n  normalized._c = false;\n  return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n  const ctx = rawSlots._ctx;\n  for (const key in rawSlots) {\n    if (isInternalKey(key)) continue;\n    const value = rawSlots[key];\n    if (isFunction(value)) {\n      slots[key] = normalizeSlot(key, value, ctx);\n    } else if (value != null) {\n      if (!!(process.env.NODE_ENV !== \"production\") && true) {\n        warn$1(\n          `Non-function value encountered for slot \"${key}\". Prefer function slots for better performance.`\n        );\n      }\n      const normalized = normalizeSlotValue(value);\n      slots[key] = () => normalized;\n    }\n  }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isKeepAlive(instance.vnode) && true) {\n    warn$1(\n      `Non-function value encountered for default slot. Prefer function slots for better performance.`\n    );\n  }\n  const normalized = normalizeSlotValue(children);\n  instance.slots.default = () => normalized;\n};\nconst assignSlots = (slots, children, optimized) => {\n  for (const key in children) {\n    if (optimized || key !== \"_\") {\n      slots[key] = children[key];\n    }\n  }\n};\nconst initSlots = (instance, children, optimized) => {\n  const slots = instance.slots = createInternalObject();\n  if (instance.vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      assignSlots(slots, children, optimized);\n      if (optimized) {\n        def(slots, \"_\", type, true);\n      }\n    } else {\n      normalizeObjectSlots(children, slots);\n    }\n  } else if (children) {\n    normalizeVNodeSlots(instance, children);\n  }\n};\nconst updateSlots = (instance, children, optimized) => {\n  const { vnode, slots } = instance;\n  let needDeletionCheck = true;\n  let deletionComparisonTarget = EMPTY_OBJ;\n  if (vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n        assignSlots(slots, children, optimized);\n        trigger(instance, \"set\", \"$slots\");\n      } else if (optimized && type === 1) {\n        needDeletionCheck = false;\n      } else {\n        assignSlots(slots, children, optimized);\n      }\n    } else {\n      needDeletionCheck = !children.$stable;\n      normalizeObjectSlots(children, slots);\n    }\n    deletionComparisonTarget = children;\n  } else if (children) {\n    normalizeVNodeSlots(instance, children);\n    deletionComparisonTarget = { default: 1 };\n  }\n  if (needDeletionCheck) {\n    for (const key in slots) {\n      if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {\n        delete slots[key];\n      }\n    }\n  }\n};\n\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    perf.mark(`vue-${type}-${instance.uid}`);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction endMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    const startTag = `vue-${type}-${instance.uid}`;\n    const endTag = startTag + `:end`;\n    perf.mark(endTag);\n    perf.measure(\n      `<${formatComponentName(instance, instance.type)}> ${type}`,\n      startTag,\n      endTag\n    );\n    perf.clearMarks(startTag);\n    perf.clearMarks(endTag);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction isSupported() {\n  if (supported !== void 0) {\n    return supported;\n  }\n  if (typeof window !== \"undefined\" && window.performance) {\n    supported = true;\n    perf = window.performance;\n  } else {\n    supported = false;\n  }\n  return supported;\n}\n\nfunction initFeatureFlags() {\n  const needWarn = [];\n  if (typeof __VUE_OPTIONS_API__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_OPTIONS_API__`);\n    getGlobalThis().__VUE_OPTIONS_API__ = true;\n  }\n  if (typeof __VUE_PROD_DEVTOOLS__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n    getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n  }\n  if (typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`);\n    getGlobalThis().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = false;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && needWarn.length) {\n    const multi = needWarn.length > 1;\n    console.warn(\n      `Feature flag${multi ? `s` : ``} ${needWarn.join(\", \")} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.\n\nFor more details, see https://link.vuejs.org/feature-flags.`\n    );\n  }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense ;\nfunction createRenderer(options) {\n  return baseCreateRenderer(options);\n}\nfunction createHydrationRenderer(options) {\n  return baseCreateRenderer(options, createHydrationFunctions);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n  {\n    initFeatureFlags();\n  }\n  const target = getGlobalThis();\n  target.__VUE__ = true;\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n  }\n  const {\n    insert: hostInsert,\n    remove: hostRemove,\n    patchProp: hostPatchProp,\n    createElement: hostCreateElement,\n    createText: hostCreateText,\n    createComment: hostCreateComment,\n    setText: hostSetText,\n    setElementText: hostSetElementText,\n    parentNode: hostParentNode,\n    nextSibling: hostNextSibling,\n    setScopeId: hostSetScopeId = NOOP,\n    insertStaticContent: hostInsertStaticContent\n  } = options;\n  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!(process.env.NODE_ENV !== \"production\") && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n    if (n1 === n2) {\n      return;\n    }\n    if (n1 && !isSameVNodeType(n1, n2)) {\n      anchor = getNextHostNode(n1);\n      unmount(n1, parentComponent, parentSuspense, true);\n      n1 = null;\n    }\n    if (n2.patchFlag === -2) {\n      optimized = false;\n      n2.dynamicChildren = null;\n    }\n    const { type, ref, shapeFlag } = n2;\n    switch (type) {\n      case Text:\n        processText(n1, n2, container, anchor);\n        break;\n      case Comment:\n        processCommentNode(n1, n2, container, anchor);\n        break;\n      case Static:\n        if (n1 == null) {\n          mountStaticNode(n2, container, anchor, namespace);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          patchStaticNode(n1, n2, container, namespace);\n        }\n        break;\n      case Fragment:\n        processFragment(\n          n1,\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        break;\n      default:\n        if (shapeFlag & 1) {\n          processElement(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 6) {\n          processComponent(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 64) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (shapeFlag & 128) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Invalid VNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null && parentComponent) {\n      setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n    }\n  };\n  const processText = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateText(n2.children),\n        container,\n        anchor\n      );\n    } else {\n      const el = n2.el = n1.el;\n      if (n2.children !== n1.children) {\n        hostSetText(el, n2.children);\n      }\n    }\n  };\n  const processCommentNode = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateComment(n2.children || \"\"),\n        container,\n        anchor\n      );\n    } else {\n      n2.el = n1.el;\n    }\n  };\n  const mountStaticNode = (n2, container, anchor, namespace) => {\n    [n2.el, n2.anchor] = hostInsertStaticContent(\n      n2.children,\n      container,\n      anchor,\n      namespace,\n      n2.el,\n      n2.anchor\n    );\n  };\n  const patchStaticNode = (n1, n2, container, namespace) => {\n    if (n2.children !== n1.children) {\n      const anchor = hostNextSibling(n1.anchor);\n      removeStaticNode(n1);\n      [n2.el, n2.anchor] = hostInsertStaticContent(\n        n2.children,\n        container,\n        anchor,\n        namespace\n      );\n    } else {\n      n2.el = n1.el;\n      n2.anchor = n1.anchor;\n    }\n  };\n  const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostInsert(el, container, nextSibling);\n      el = next;\n    }\n    hostInsert(anchor, container, nextSibling);\n  };\n  const removeStaticNode = ({ el, anchor }) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostRemove(el);\n      el = next;\n    }\n    hostRemove(anchor);\n  };\n  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    if (n2.type === \"svg\") {\n      namespace = \"svg\";\n    } else if (n2.type === \"math\") {\n      namespace = \"mathml\";\n    }\n    if (n1 == null) {\n      mountElement(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      patchElement(\n        n1,\n        n2,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let el;\n    let vnodeHook;\n    const { props, shapeFlag, transition, dirs } = vnode;\n    el = vnode.el = hostCreateElement(\n      vnode.type,\n      namespace,\n      props && props.is,\n      props\n    );\n    if (shapeFlag & 8) {\n      hostSetElementText(el, vnode.children);\n    } else if (shapeFlag & 16) {\n      mountChildren(\n        vnode.children,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(vnode, namespace),\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n    }\n    setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n    if (props) {\n      for (const key in props) {\n        if (key !== \"value\" && !isReservedProp(key)) {\n          hostPatchProp(el, key, null, props[key], namespace, parentComponent);\n        }\n      }\n      if (\"value\" in props) {\n        hostPatchProp(el, \"value\", null, props.value, namespace);\n      }\n      if (vnodeHook = props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHook, parentComponent, vnode);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      def(el, \"__vnode\", vnode, true);\n      def(el, \"__vueParentComponent\", parentComponent, true);\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n    }\n    const needCallTransitionHooks = needTransition(parentSuspense, transition);\n    if (needCallTransitionHooks) {\n      transition.beforeEnter(el);\n    }\n    hostInsert(el, container, anchor);\n    if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        needCallTransitionHooks && transition.enter(el);\n        dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n      }, parentSuspense);\n    }\n  };\n  const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n    if (scopeId) {\n      hostSetScopeId(el, scopeId);\n    }\n    if (slotScopeIds) {\n      for (let i = 0; i < slotScopeIds.length; i++) {\n        hostSetScopeId(el, slotScopeIds[i]);\n      }\n    }\n    if (parentComponent) {\n      let subTree = parentComponent.subTree;\n      if (!!(process.env.NODE_ENV !== \"production\") && subTree.patchFlag > 0 && subTree.patchFlag & 2048) {\n        subTree = filterSingleRoot(subTree.children) || subTree;\n      }\n      if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {\n        const parentVNode = parentComponent.vnode;\n        setScopeId(\n          el,\n          parentVNode,\n          parentVNode.scopeId,\n          parentVNode.slotScopeIds,\n          parentComponent.parent\n        );\n      }\n    }\n  };\n  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n      patch(\n        null,\n        child,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const el = n2.el = n1.el;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      el.__vnode = n2;\n    }\n    let { patchFlag, dynamicChildren, dirs } = n2;\n    patchFlag |= n1.patchFlag & 16;\n    const oldProps = n1.props || EMPTY_OBJ;\n    const newProps = n2.props || EMPTY_OBJ;\n    let vnodeHook;\n    parentComponent && toggleRecurse(parentComponent, false);\n    if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n    }\n    if (dirs) {\n      invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n    }\n    parentComponent && toggleRecurse(parentComponent, true);\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) {\n      hostSetElementText(el, \"\");\n    }\n    if (dynamicChildren) {\n      patchBlockChildren(\n        n1.dynamicChildren,\n        dynamicChildren,\n        el,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds\n      );\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        traverseStaticChildren(n1, n2);\n      }\n    } else if (!optimized) {\n      patchChildren(\n        n1,\n        n2,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds,\n        false\n      );\n    }\n    if (patchFlag > 0) {\n      if (patchFlag & 16) {\n        patchProps(el, oldProps, newProps, parentComponent, namespace);\n      } else {\n        if (patchFlag & 2) {\n          if (oldProps.class !== newProps.class) {\n            hostPatchProp(el, \"class\", null, newProps.class, namespace);\n          }\n        }\n        if (patchFlag & 4) {\n          hostPatchProp(el, \"style\", oldProps.style, newProps.style, namespace);\n        }\n        if (patchFlag & 8) {\n          const propsToUpdate = n2.dynamicProps;\n          for (let i = 0; i < propsToUpdate.length; i++) {\n            const key = propsToUpdate[i];\n            const prev = oldProps[key];\n            const next = newProps[key];\n            if (next !== prev || key === \"value\") {\n              hostPatchProp(el, key, prev, next, namespace, parentComponent);\n            }\n          }\n        }\n      }\n      if (patchFlag & 1) {\n        if (n1.children !== n2.children) {\n          hostSetElementText(el, n2.children);\n        }\n      }\n    } else if (!optimized && dynamicChildren == null) {\n      patchProps(el, oldProps, newProps, parentComponent, namespace);\n    }\n    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n        dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n      }, parentSuspense);\n    }\n  };\n  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {\n    for (let i = 0; i < newChildren.length; i++) {\n      const oldVNode = oldChildren[i];\n      const newVNode = newChildren[i];\n      const container = (\n        // oldVNode may be an errored async setup() component inside Suspense\n        // which will not have a mounted element\n        oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent\n        // of the Fragment itself so it can move its children.\n        (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement\n        // which also requires the correct parent container\n        !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.\n        oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (\n          // In other cases, the parent container is not actually used so we\n          // just pass the block element here to avoid a DOM parentNode call.\n          fallbackContainer\n        )\n      );\n      patch(\n        oldVNode,\n        newVNode,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        true\n      );\n    }\n  };\n  const patchProps = (el, oldProps, newProps, parentComponent, namespace) => {\n    if (oldProps !== newProps) {\n      if (oldProps !== EMPTY_OBJ) {\n        for (const key in oldProps) {\n          if (!isReservedProp(key) && !(key in newProps)) {\n            hostPatchProp(\n              el,\n              key,\n              oldProps[key],\n              null,\n              namespace,\n              parentComponent\n            );\n          }\n        }\n      }\n      for (const key in newProps) {\n        if (isReservedProp(key)) continue;\n        const next = newProps[key];\n        const prev = oldProps[key];\n        if (next !== prev && key !== \"value\") {\n          hostPatchProp(el, key, prev, next, namespace, parentComponent);\n        }\n      }\n      if (\"value\" in newProps) {\n        hostPatchProp(el, \"value\", oldProps.value, newProps.value, namespace);\n      }\n    }\n  };\n  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && // #5523 dev root fragment may inherit directives\n    (isHmrUpdating || patchFlag & 2048)) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    if (n1 == null) {\n      hostInsert(fragmentStartAnchor, container, anchor);\n      hostInsert(fragmentEndAnchor, container, anchor);\n      mountChildren(\n        // #10007\n        // such fragment like `<></>` will be compiled into\n        // a fragment which doesn't have a children.\n        // In this case fallback to an empty array\n        n2.children || [],\n        container,\n        fragmentEndAnchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result\n      // of renderSlot() with no valid children\n      n1.dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          container,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          traverseStaticChildren(n1, n2);\n        } else if (\n          // #2080 if the stable fragment has a key, it's a <template v-for> that may\n          //  get moved around. Make sure all root level vnodes inherit el.\n          // #2134 or if it's a component root, it may also get moved around\n          // as the component is being moved.\n          n2.key != null || parentComponent && n2 === parentComponent.subTree\n        ) {\n          traverseStaticChildren(\n            n1,\n            n2,\n            true\n            /* shallow */\n          );\n        }\n      } else {\n        patchChildren(\n          n1,\n          n2,\n          container,\n          fragmentEndAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n  };\n  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    n2.slotScopeIds = slotScopeIds;\n    if (n1 == null) {\n      if (n2.shapeFlag & 512) {\n        parentComponent.ctx.activate(\n          n2,\n          container,\n          anchor,\n          namespace,\n          optimized\n        );\n      } else {\n        mountComponent(\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          optimized\n        );\n      }\n    } else {\n      updateComponent(n1, n2, optimized);\n    }\n  };\n  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {\n    const instance = (initialVNode.component = createComponentInstance(\n      initialVNode,\n      parentComponent,\n      parentSuspense\n    ));\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      registerHMR(instance);\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      pushWarningContext(initialVNode);\n      startMeasure(instance, `mount`);\n    }\n    if (isKeepAlive(initialVNode)) {\n      instance.ctx.renderer = internals;\n    }\n    {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        startMeasure(instance, `init`);\n      }\n      setupComponent(instance, false, optimized);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        endMeasure(instance, `init`);\n      }\n    }\n    if (instance.asyncDep) {\n      if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) initialVNode.el = null;\n      parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);\n      if (!initialVNode.el) {\n        const placeholder = instance.subTree = createVNode(Comment);\n        processCommentNode(null, placeholder, container, anchor);\n      }\n    } else {\n      setupRenderEffect(\n        instance,\n        initialVNode,\n        container,\n        anchor,\n        parentSuspense,\n        namespace,\n        optimized\n      );\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      popWarningContext();\n      endMeasure(instance, `mount`);\n    }\n  };\n  const updateComponent = (n1, n2, optimized) => {\n    const instance = n2.component = n1.component;\n    if (shouldUpdateComponent(n1, n2, optimized)) {\n      if (instance.asyncDep && !instance.asyncResolved) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(n2);\n        }\n        updateComponentPreRender(instance, n2, optimized);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        return;\n      } else {\n        instance.next = n2;\n        instance.update();\n      }\n    } else {\n      n2.el = n1.el;\n      instance.vnode = n2;\n    }\n  };\n  const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {\n    const componentUpdateFn = () => {\n      if (!instance.isMounted) {\n        let vnodeHook;\n        const { el, props } = initialVNode;\n        const { bm, m, parent, root, type } = instance;\n        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n        toggleRecurse(instance, false);\n        if (bm) {\n          invokeArrayFns(bm);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n          invokeVNodeHook(vnodeHook, parent, initialVNode);\n        }\n        toggleRecurse(instance, true);\n        if (el && hydrateNode) {\n          const hydrateSubTree = () => {\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `render`);\n            }\n            instance.subTree = renderComponentRoot(instance);\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `render`);\n            }\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `hydrate`);\n            }\n            hydrateNode(\n              el,\n              instance.subTree,\n              instance,\n              parentSuspense,\n              null\n            );\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `hydrate`);\n            }\n          };\n          if (isAsyncWrapperVNode && type.__asyncHydrate) {\n            type.__asyncHydrate(\n              el,\n              instance,\n              hydrateSubTree\n            );\n          } else {\n            hydrateSubTree();\n          }\n        } else {\n          if (root.ce) {\n            root.ce._injectChildStyle(type);\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `render`);\n          }\n          const subTree = instance.subTree = renderComponentRoot(instance);\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `render`);\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `patch`);\n          }\n          patch(\n            null,\n            subTree,\n            container,\n            anchor,\n            instance,\n            parentSuspense,\n            namespace\n          );\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `patch`);\n          }\n          initialVNode.el = subTree.el;\n        }\n        if (m) {\n          queuePostRenderEffect(m, parentSuspense);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n          const scopedInitialVNode = initialVNode;\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),\n            parentSuspense\n          );\n        }\n        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n          instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n        }\n        instance.isMounted = true;\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentAdded(instance);\n        }\n        initialVNode = container = anchor = null;\n      } else {\n        let { next, bu, u, parent, vnode } = instance;\n        {\n          const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);\n          if (nonHydratedAsyncRoot) {\n            if (next) {\n              next.el = vnode.el;\n              updateComponentPreRender(instance, next, optimized);\n            }\n            nonHydratedAsyncRoot.asyncDep.then(() => {\n              if (!instance.isUnmounted) {\n                componentUpdateFn();\n              }\n            });\n            return;\n          }\n        }\n        let originNext = next;\n        let vnodeHook;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(next || instance.vnode);\n        }\n        toggleRecurse(instance, false);\n        if (next) {\n          next.el = vnode.el;\n          updateComponentPreRender(instance, next, optimized);\n        } else {\n          next = vnode;\n        }\n        if (bu) {\n          invokeArrayFns(bu);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n          invokeVNodeHook(vnodeHook, parent, next, vnode);\n        }\n        toggleRecurse(instance, true);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `render`);\n        }\n        const nextTree = renderComponentRoot(instance);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `render`);\n        }\n        const prevTree = instance.subTree;\n        instance.subTree = nextTree;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `patch`);\n        }\n        patch(\n          prevTree,\n          nextTree,\n          // parent may have changed if it's in a teleport\n          hostParentNode(prevTree.el),\n          // anchor may have changed if it's in a fragment\n          getNextHostNode(prevTree),\n          instance,\n          parentSuspense,\n          namespace\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `patch`);\n        }\n        next.el = nextTree.el;\n        if (originNext === null) {\n          updateHOCHostEl(instance, nextTree.el);\n        }\n        if (u) {\n          queuePostRenderEffect(u, parentSuspense);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, next, vnode),\n            parentSuspense\n          );\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentUpdated(instance);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n      }\n    };\n    instance.scope.on();\n    const effect = instance.effect = new ReactiveEffect(componentUpdateFn);\n    instance.scope.off();\n    const update = instance.update = effect.run.bind(effect);\n    const job = instance.job = effect.runIfDirty.bind(effect);\n    job.i = instance;\n    job.id = instance.uid;\n    effect.scheduler = () => queueJob(job);\n    toggleRecurse(instance, true);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;\n      effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;\n    }\n    update();\n  };\n  const updateComponentPreRender = (instance, nextVNode, optimized) => {\n    nextVNode.component = instance;\n    const prevProps = instance.vnode.props;\n    instance.vnode = nextVNode;\n    instance.next = null;\n    updateProps(instance, nextVNode.props, prevProps, optimized);\n    updateSlots(instance, nextVNode.children, optimized);\n    pauseTracking();\n    flushPreFlushCbs(instance);\n    resetTracking();\n  };\n  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {\n    const c1 = n1 && n1.children;\n    const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n    const c2 = n2.children;\n    const { patchFlag, shapeFlag } = n2;\n    if (patchFlag > 0) {\n      if (patchFlag & 128) {\n        patchKeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      } else if (patchFlag & 256) {\n        patchUnkeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      }\n    }\n    if (shapeFlag & 8) {\n      if (prevShapeFlag & 16) {\n        unmountChildren(c1, parentComponent, parentSuspense);\n      }\n      if (c2 !== c1) {\n        hostSetElementText(container, c2);\n      }\n    } else {\n      if (prevShapeFlag & 16) {\n        if (shapeFlag & 16) {\n          patchKeyedChildren(\n            c1,\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else {\n          unmountChildren(c1, parentComponent, parentSuspense, true);\n        }\n      } else {\n        if (prevShapeFlag & 8) {\n          hostSetElementText(container, \"\");\n        }\n        if (shapeFlag & 16) {\n          mountChildren(\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      }\n    }\n  };\n  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    c1 = c1 || EMPTY_ARR;\n    c2 = c2 || EMPTY_ARR;\n    const oldLength = c1.length;\n    const newLength = c2.length;\n    const commonLength = Math.min(oldLength, newLength);\n    let i;\n    for (i = 0; i < commonLength; i++) {\n      const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      patch(\n        c1[i],\n        nextChild,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (oldLength > newLength) {\n      unmountChildren(\n        c1,\n        parentComponent,\n        parentSuspense,\n        true,\n        false,\n        commonLength\n      );\n    } else {\n      mountChildren(\n        c2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        commonLength\n      );\n    }\n  };\n  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let i = 0;\n    const l2 = c2.length;\n    let e1 = c1.length - 1;\n    let e2 = l2 - 1;\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[i];\n      const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      i++;\n    }\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[e1];\n      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      e1--;\n      e2--;\n    }\n    if (i > e1) {\n      if (i <= e2) {\n        const nextPos = e2 + 1;\n        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n        while (i <= e2) {\n          patch(\n            null,\n            c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          i++;\n        }\n      }\n    } else if (i > e2) {\n      while (i <= e1) {\n        unmount(c1[i], parentComponent, parentSuspense, true);\n        i++;\n      }\n    } else {\n      const s1 = i;\n      const s2 = i;\n      const keyToNewIndexMap = /* @__PURE__ */ new Map();\n      for (i = s2; i <= e2; i++) {\n        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n        if (nextChild.key != null) {\n          if (!!(process.env.NODE_ENV !== \"production\") && keyToNewIndexMap.has(nextChild.key)) {\n            warn$1(\n              `Duplicate keys found during update:`,\n              JSON.stringify(nextChild.key),\n              `Make sure keys are unique.`\n            );\n          }\n          keyToNewIndexMap.set(nextChild.key, i);\n        }\n      }\n      let j;\n      let patched = 0;\n      const toBePatched = e2 - s2 + 1;\n      let moved = false;\n      let maxNewIndexSoFar = 0;\n      const newIndexToOldIndexMap = new Array(toBePatched);\n      for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0;\n      for (i = s1; i <= e1; i++) {\n        const prevChild = c1[i];\n        if (patched >= toBePatched) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n          continue;\n        }\n        let newIndex;\n        if (prevChild.key != null) {\n          newIndex = keyToNewIndexMap.get(prevChild.key);\n        } else {\n          for (j = s2; j <= e2; j++) {\n            if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n              newIndex = j;\n              break;\n            }\n          }\n        }\n        if (newIndex === void 0) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n        } else {\n          newIndexToOldIndexMap[newIndex - s2] = i + 1;\n          if (newIndex >= maxNewIndexSoFar) {\n            maxNewIndexSoFar = newIndex;\n          } else {\n            moved = true;\n          }\n          patch(\n            prevChild,\n            c2[newIndex],\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          patched++;\n        }\n      }\n      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;\n      j = increasingNewIndexSequence.length - 1;\n      for (i = toBePatched - 1; i >= 0; i--) {\n        const nextIndex = s2 + i;\n        const nextChild = c2[nextIndex];\n        const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n        if (newIndexToOldIndexMap[i] === 0) {\n          patch(\n            null,\n            nextChild,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (moved) {\n          if (j < 0 || i !== increasingNewIndexSequence[j]) {\n            move(nextChild, container, anchor, 2);\n          } else {\n            j--;\n          }\n        }\n      }\n    }\n  };\n  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n    const { el, type, transition, children, shapeFlag } = vnode;\n    if (shapeFlag & 6) {\n      move(vnode.component.subTree, container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 128) {\n      vnode.suspense.move(container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 64) {\n      type.move(vnode, container, anchor, internals);\n      return;\n    }\n    if (type === Fragment) {\n      hostInsert(el, container, anchor);\n      for (let i = 0; i < children.length; i++) {\n        move(children[i], container, anchor, moveType);\n      }\n      hostInsert(vnode.anchor, container, anchor);\n      return;\n    }\n    if (type === Static) {\n      moveStaticNode(vnode, container, anchor);\n      return;\n    }\n    const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;\n    if (needTransition2) {\n      if (moveType === 0) {\n        transition.beforeEnter(el);\n        hostInsert(el, container, anchor);\n        queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n      } else {\n        const { leave, delayLeave, afterLeave } = transition;\n        const remove2 = () => hostInsert(el, container, anchor);\n        const performLeave = () => {\n          leave(el, () => {\n            remove2();\n            afterLeave && afterLeave();\n          });\n        };\n        if (delayLeave) {\n          delayLeave(el, remove2, performLeave);\n        } else {\n          performLeave();\n        }\n      }\n    } else {\n      hostInsert(el, container, anchor);\n    }\n  };\n  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n    const {\n      type,\n      props,\n      ref,\n      children,\n      dynamicChildren,\n      shapeFlag,\n      patchFlag,\n      dirs,\n      cacheIndex\n    } = vnode;\n    if (patchFlag === -2) {\n      optimized = false;\n    }\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode, true);\n    }\n    if (cacheIndex != null) {\n      parentComponent.renderCache[cacheIndex] = void 0;\n    }\n    if (shapeFlag & 256) {\n      parentComponent.ctx.deactivate(vnode);\n      return;\n    }\n    const shouldInvokeDirs = shapeFlag & 1 && dirs;\n    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n    let vnodeHook;\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n      invokeVNodeHook(vnodeHook, parentComponent, vnode);\n    }\n    if (shapeFlag & 6) {\n      unmountComponent(vnode.component, parentSuspense, doRemove);\n    } else {\n      if (shapeFlag & 128) {\n        vnode.suspense.unmount(parentSuspense, doRemove);\n        return;\n      }\n      if (shouldInvokeDirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n      }\n      if (shapeFlag & 64) {\n        vnode.type.remove(\n          vnode,\n          parentComponent,\n          parentSuspense,\n          internals,\n          doRemove\n        );\n      } else if (dynamicChildren && // #5154\n      // when v-once is used inside a block, setBlockTracking(-1) marks the\n      // parent block with hasOnce: true\n      // so that it doesn't take the fast path during unmount - otherwise\n      // components nested in v-once are never unmounted.\n      !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments\n      (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n        unmountChildren(\n          dynamicChildren,\n          parentComponent,\n          parentSuspense,\n          false,\n          true\n        );\n      } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n        unmountChildren(children, parentComponent, parentSuspense);\n      }\n      if (doRemove) {\n        remove(vnode);\n      }\n    }\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n      }, parentSuspense);\n    }\n  };\n  const remove = (vnode) => {\n    const { type, el, anchor, transition } = vnode;\n    if (type === Fragment) {\n      if (!!(process.env.NODE_ENV !== \"production\") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {\n        vnode.children.forEach((child) => {\n          if (child.type === Comment) {\n            hostRemove(child.el);\n          } else {\n            remove(child);\n          }\n        });\n      } else {\n        removeFragment(el, anchor);\n      }\n      return;\n    }\n    if (type === Static) {\n      removeStaticNode(vnode);\n      return;\n    }\n    const performRemove = () => {\n      hostRemove(el);\n      if (transition && !transition.persisted && transition.afterLeave) {\n        transition.afterLeave();\n      }\n    };\n    if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n      const { leave, delayLeave } = transition;\n      const performLeave = () => leave(el, performRemove);\n      if (delayLeave) {\n        delayLeave(vnode.el, performRemove, performLeave);\n      } else {\n        performLeave();\n      }\n    } else {\n      performRemove();\n    }\n  };\n  const removeFragment = (cur, end) => {\n    let next;\n    while (cur !== end) {\n      next = hostNextSibling(cur);\n      hostRemove(cur);\n      cur = next;\n    }\n    hostRemove(end);\n  };\n  const unmountComponent = (instance, parentSuspense, doRemove) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      unregisterHMR(instance);\n    }\n    const { bum, scope, job, subTree, um, m, a } = instance;\n    invalidateMount(m);\n    invalidateMount(a);\n    if (bum) {\n      invokeArrayFns(bum);\n    }\n    scope.stop();\n    if (job) {\n      job.flags |= 8;\n      unmount(subTree, instance, parentSuspense, doRemove);\n    }\n    if (um) {\n      queuePostRenderEffect(um, parentSuspense);\n    }\n    queuePostRenderEffect(() => {\n      instance.isUnmounted = true;\n    }, parentSuspense);\n    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {\n      parentSuspense.deps--;\n      if (parentSuspense.deps === 0) {\n        parentSuspense.resolve();\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentRemoved(instance);\n    }\n  };\n  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n    }\n  };\n  const getNextHostNode = (vnode) => {\n    if (vnode.shapeFlag & 6) {\n      return getNextHostNode(vnode.component.subTree);\n    }\n    if (vnode.shapeFlag & 128) {\n      return vnode.suspense.next();\n    }\n    const el = hostNextSibling(vnode.anchor || vnode.el);\n    const teleportEnd = el && el[TeleportEndKey];\n    return teleportEnd ? hostNextSibling(teleportEnd) : el;\n  };\n  let isFlushing = false;\n  const render = (vnode, container, namespace) => {\n    if (vnode == null) {\n      if (container._vnode) {\n        unmount(container._vnode, null, null, true);\n      }\n    } else {\n      patch(\n        container._vnode || null,\n        vnode,\n        container,\n        null,\n        null,\n        null,\n        namespace\n      );\n    }\n    container._vnode = vnode;\n    if (!isFlushing) {\n      isFlushing = true;\n      flushPreFlushCbs();\n      flushPostFlushCbs();\n      isFlushing = false;\n    }\n  };\n  const internals = {\n    p: patch,\n    um: unmount,\n    m: move,\n    r: remove,\n    mt: mountComponent,\n    mc: mountChildren,\n    pc: patchChildren,\n    pbc: patchBlockChildren,\n    n: getNextHostNode,\n    o: options\n  };\n  let hydrate;\n  let hydrateNode;\n  if (createHydrationFns) {\n    [hydrate, hydrateNode] = createHydrationFns(\n      internals\n    );\n  }\n  return {\n    render,\n    hydrate,\n    createApp: createAppAPI(render, hydrate)\n  };\n}\nfunction resolveChildrenNamespace({ type, props }, currentNamespace) {\n  return currentNamespace === \"svg\" && type === \"foreignObject\" || currentNamespace === \"mathml\" && type === \"annotation-xml\" && props && props.encoding && props.encoding.includes(\"html\") ? void 0 : currentNamespace;\n}\nfunction toggleRecurse({ effect, job }, allowed) {\n  if (allowed) {\n    effect.flags |= 32;\n    job.flags |= 4;\n  } else {\n    effect.flags &= ~32;\n    job.flags &= ~4;\n  }\n}\nfunction needTransition(parentSuspense, transition) {\n  return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n  const ch1 = n1.children;\n  const ch2 = n2.children;\n  if (isArray(ch1) && isArray(ch2)) {\n    for (let i = 0; i < ch1.length; i++) {\n      const c1 = ch1[i];\n      let c2 = ch2[i];\n      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n          c2 = ch2[i] = cloneIfMounted(ch2[i]);\n          c2.el = c1.el;\n        }\n        if (!shallow && c2.patchFlag !== -2)\n          traverseStaticChildren(c1, c2);\n      }\n      if (c2.type === Text) {\n        c2.el = c1.el;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && c2.type === Comment && !c2.el) {\n        c2.el = c1.el;\n      }\n    }\n  }\n}\nfunction getSequence(arr) {\n  const p = arr.slice();\n  const result = [0];\n  let i, j, u, v, c;\n  const len = arr.length;\n  for (i = 0; i < len; i++) {\n    const arrI = arr[i];\n    if (arrI !== 0) {\n      j = result[result.length - 1];\n      if (arr[j] < arrI) {\n        p[i] = j;\n        result.push(i);\n        continue;\n      }\n      u = 0;\n      v = result.length - 1;\n      while (u < v) {\n        c = u + v >> 1;\n        if (arr[result[c]] < arrI) {\n          u = c + 1;\n        } else {\n          v = c;\n        }\n      }\n      if (arrI < arr[result[u]]) {\n        if (u > 0) {\n          p[i] = result[u - 1];\n        }\n        result[u] = i;\n      }\n    }\n  }\n  u = result.length;\n  v = result[u - 1];\n  while (u-- > 0) {\n    result[u] = v;\n    v = p[v];\n  }\n  return result;\n}\nfunction locateNonHydratedAsyncRoot(instance) {\n  const subComponent = instance.subTree.component;\n  if (subComponent) {\n    if (subComponent.asyncDep && !subComponent.asyncResolved) {\n      return subComponent;\n    } else {\n      return locateNonHydratedAsyncRoot(subComponent);\n    }\n  }\n}\nfunction invalidateMount(hooks) {\n  if (hooks) {\n    for (let i = 0; i < hooks.length; i++)\n      hooks[i].flags |= 8;\n  }\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n  {\n    const ctx = inject(ssrContextKey);\n    if (!ctx) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n      );\n    }\n    return ctx;\n  }\n};\n\nfunction watchEffect(effect, options) {\n  return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n  );\n}\nfunction watchSyncEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n  );\n}\nfunction watch(source, cb, options) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n    warn$1(\n      `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n    );\n  }\n  return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, options = EMPTY_OBJ) {\n  const { immediate, deep, flush, once } = options;\n  if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n    if (immediate !== void 0) {\n      warn$1(\n        `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n    if (deep !== void 0) {\n      warn$1(\n        `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n    if (once !== void 0) {\n      warn$1(\n        `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n  }\n  const baseWatchOptions = extend({}, options);\n  if (!!(process.env.NODE_ENV !== \"production\")) baseWatchOptions.onWarn = warn$1;\n  const runsImmediately = cb && immediate || !cb && flush !== \"post\";\n  let ssrCleanup;\n  if (isInSSRComponentSetup) {\n    if (flush === \"sync\") {\n      const ctx = useSSRContext();\n      ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n    } else if (!runsImmediately) {\n      const watchStopHandle = () => {\n      };\n      watchStopHandle.stop = NOOP;\n      watchStopHandle.resume = NOOP;\n      watchStopHandle.pause = NOOP;\n      return watchStopHandle;\n    }\n  }\n  const instance = currentInstance;\n  baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args);\n  let isPre = false;\n  if (flush === \"post\") {\n    baseWatchOptions.scheduler = (job) => {\n      queuePostRenderEffect(job, instance && instance.suspense);\n    };\n  } else if (flush !== \"sync\") {\n    isPre = true;\n    baseWatchOptions.scheduler = (job, isFirstRun) => {\n      if (isFirstRun) {\n        job();\n      } else {\n        queueJob(job);\n      }\n    };\n  }\n  baseWatchOptions.augmentJob = (job) => {\n    if (cb) {\n      job.flags |= 4;\n    }\n    if (isPre) {\n      job.flags |= 2;\n      if (instance) {\n        job.id = instance.uid;\n        job.i = instance;\n      }\n    }\n  };\n  const watchHandle = watch$1(source, cb, baseWatchOptions);\n  if (isInSSRComponentSetup) {\n    if (ssrCleanup) {\n      ssrCleanup.push(watchHandle);\n    } else if (runsImmediately) {\n      watchHandle();\n    }\n  }\n  return watchHandle;\n}\nfunction instanceWatch(source, value, options) {\n  const publicThis = this.proxy;\n  const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n  let cb;\n  if (isFunction(value)) {\n    cb = value;\n  } else {\n    cb = value.handler;\n    options = value;\n  }\n  const reset = setCurrentInstance(this);\n  const res = doWatch(getter, cb.bind(publicThis), options);\n  reset();\n  return res;\n}\nfunction createPathGetter(ctx, path) {\n  const segments = path.split(\".\");\n  return () => {\n    let cur = ctx;\n    for (let i = 0; i < segments.length && cur; i++) {\n      cur = cur[segments[i]];\n    }\n    return cur;\n  };\n}\n\nfunction useModel(props, name, options = EMPTY_OBJ) {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn$1(`useModel() called without active instance.`);\n    return ref();\n  }\n  const camelizedName = camelize(name);\n  if (!!(process.env.NODE_ENV !== \"production\") && !i.propsOptions[0][camelizedName]) {\n    warn$1(`useModel() called with prop \"${name}\" which is not declared.`);\n    return ref();\n  }\n  const hyphenatedName = hyphenate(name);\n  const modifiers = getModelModifiers(props, camelizedName);\n  const res = customRef((track, trigger) => {\n    let localValue;\n    let prevSetValue = EMPTY_OBJ;\n    let prevEmittedValue;\n    watchSyncEffect(() => {\n      const propValue = props[camelizedName];\n      if (hasChanged(localValue, propValue)) {\n        localValue = propValue;\n        trigger();\n      }\n    });\n    return {\n      get() {\n        track();\n        return options.get ? options.get(localValue) : localValue;\n      },\n      set(value) {\n        const emittedValue = options.set ? options.set(value) : value;\n        if (!hasChanged(emittedValue, localValue) && !(prevSetValue !== EMPTY_OBJ && hasChanged(value, prevSetValue))) {\n          return;\n        }\n        const rawProps = i.vnode.props;\n        if (!(rawProps && // check if parent has passed v-model\n        (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) {\n          localValue = value;\n          trigger();\n        }\n        i.emit(`update:${name}`, emittedValue);\n        if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) {\n          trigger();\n        }\n        prevSetValue = value;\n        prevEmittedValue = emittedValue;\n      }\n    };\n  });\n  res[Symbol.iterator] = () => {\n    let i2 = 0;\n    return {\n      next() {\n        if (i2 < 2) {\n          return { value: i2++ ? modifiers || EMPTY_OBJ : res, done: false };\n        } else {\n          return { done: true };\n        }\n      }\n    };\n  };\n  return res;\n}\nconst getModelModifiers = (props, modelName) => {\n  return modelName === \"modelValue\" || modelName === \"model-value\" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${camelize(modelName)}Modifiers`] || props[`${hyphenate(modelName)}Modifiers`];\n};\n\nfunction emit(instance, event, ...rawArgs) {\n  if (instance.isUnmounted) return;\n  const props = instance.vnode.props || EMPTY_OBJ;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const {\n      emitsOptions,\n      propsOptions: [propsOptions]\n    } = instance;\n    if (emitsOptions) {\n      if (!(event in emitsOptions) && true) {\n        if (!propsOptions || !(toHandlerKey(camelize(event)) in propsOptions)) {\n          warn$1(\n            `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(camelize(event))}\" prop.`\n          );\n        }\n      } else {\n        const validator = emitsOptions[event];\n        if (isFunction(validator)) {\n          const isValid = validator(...rawArgs);\n          if (!isValid) {\n            warn$1(\n              `Invalid event arguments: event validation failed for event \"${event}\".`\n            );\n          }\n        }\n      }\n    }\n  }\n  let args = rawArgs;\n  const isModelListener = event.startsWith(\"update:\");\n  const modifiers = isModelListener && getModelModifiers(props, event.slice(7));\n  if (modifiers) {\n    if (modifiers.trim) {\n      args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n    }\n    if (modifiers.number) {\n      args = rawArgs.map(looseToNumber);\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsComponentEmit(instance, event, args);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const lowerCaseEvent = event.toLowerCase();\n    if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n      warn$1(\n        `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n          instance,\n          instance.type\n        )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n          event\n        )}\" instead of \"${event}\".`\n      );\n    }\n  }\n  let handlerName;\n  let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n  props[handlerName = toHandlerKey(camelize(event))];\n  if (!handler && isModelListener) {\n    handler = props[handlerName = toHandlerKey(hyphenate(event))];\n  }\n  if (handler) {\n    callWithAsyncErrorHandling(\n      handler,\n      instance,\n      6,\n      args\n    );\n  }\n  const onceHandler = props[handlerName + `Once`];\n  if (onceHandler) {\n    if (!instance.emitted) {\n      instance.emitted = {};\n    } else if (instance.emitted[handlerName]) {\n      return;\n    }\n    instance.emitted[handlerName] = true;\n    callWithAsyncErrorHandling(\n      onceHandler,\n      instance,\n      6,\n      args\n    );\n  }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.emitsCache;\n  const cached = cache.get(comp);\n  if (cached !== void 0) {\n    return cached;\n  }\n  const raw = comp.emits;\n  let normalized = {};\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendEmits = (raw2) => {\n      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n      if (normalizedFromExtend) {\n        hasExtends = true;\n        extend(normalized, normalizedFromExtend);\n      }\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendEmits);\n    }\n    if (comp.extends) {\n      extendEmits(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendEmits);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, null);\n    }\n    return null;\n  }\n  if (isArray(raw)) {\n    raw.forEach((key) => normalized[key] = null);\n  } else {\n    extend(normalized, raw);\n  }\n  if (isObject(comp)) {\n    cache.set(comp, normalized);\n  }\n  return normalized;\n}\nfunction isEmitListener(options, key) {\n  if (!options || !isOn(key)) {\n    return false;\n  }\n  key = key.slice(2).replace(/Once$/, \"\");\n  return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n  accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n  const {\n    type: Component,\n    vnode,\n    proxy,\n    withProxy,\n    propsOptions: [propsOptions],\n    slots,\n    attrs,\n    emit,\n    render,\n    renderCache,\n    props,\n    data,\n    setupState,\n    ctx,\n    inheritAttrs\n  } = instance;\n  const prev = setCurrentRenderingInstance(instance);\n  let result;\n  let fallthroughAttrs;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    accessedAttrs = false;\n  }\n  try {\n    if (vnode.shapeFlag & 4) {\n      const proxyToUse = withProxy || proxy;\n      const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n        get(target, key, receiver) {\n          warn$1(\n            `Property '${String(\n              key\n            )}' was accessed via 'this'. Avoid using 'this' in templates.`\n          );\n          return Reflect.get(target, key, receiver);\n        }\n      }) : proxyToUse;\n      result = normalizeVNode(\n        render.call(\n          thisProxy,\n          proxyToUse,\n          renderCache,\n          !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n          setupState,\n          data,\n          ctx\n        )\n      );\n      fallthroughAttrs = attrs;\n    } else {\n      const render2 = Component;\n      if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n        markAttrsAccessed();\n      }\n      result = normalizeVNode(\n        render2.length > 1 ? render2(\n          !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n          !!(process.env.NODE_ENV !== \"production\") ? {\n            get attrs() {\n              markAttrsAccessed();\n              return shallowReadonly(attrs);\n            },\n            slots,\n            emit\n          } : { attrs, slots, emit }\n        ) : render2(\n          !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n          null\n        )\n      );\n      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n    }\n  } catch (err) {\n    blockStack.length = 0;\n    handleError(err, instance, 1);\n    result = createVNode(Comment);\n  }\n  let root = result;\n  let setRoot = void 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n    [root, setRoot] = getChildRoot(result);\n  }\n  if (fallthroughAttrs && inheritAttrs !== false) {\n    const keys = Object.keys(fallthroughAttrs);\n    const { shapeFlag } = root;\n    if (keys.length) {\n      if (shapeFlag & (1 | 6)) {\n        if (propsOptions && keys.some(isModelListener)) {\n          fallthroughAttrs = filterModelListeners(\n            fallthroughAttrs,\n            propsOptions\n          );\n        }\n        root = cloneVNode(root, fallthroughAttrs, false, true);\n      } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n        const allAttrs = Object.keys(attrs);\n        const eventAttrs = [];\n        const extraAttrs = [];\n        for (let i = 0, l = allAttrs.length; i < l; i++) {\n          const key = allAttrs[i];\n          if (isOn(key)) {\n            if (!isModelListener(key)) {\n              eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n            }\n          } else {\n            extraAttrs.push(key);\n          }\n        }\n        if (extraAttrs.length) {\n          warn$1(\n            `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes.`\n          );\n        }\n        if (eventAttrs.length) {\n          warn$1(\n            `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n          );\n        }\n      }\n    }\n  }\n  if (vnode.dirs) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn$1(\n        `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n      );\n    }\n    root = cloneVNode(root, null, false, true);\n    root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n  }\n  if (vnode.transition) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn$1(\n        `Component inside <Transition> renders non-element root node that cannot be animated.`\n      );\n    }\n    setTransitionHooks(root, vnode.transition);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n    setRoot(root);\n  } else {\n    result = root;\n  }\n  setCurrentRenderingInstance(prev);\n  return result;\n}\nconst getChildRoot = (vnode) => {\n  const rawChildren = vnode.children;\n  const dynamicChildren = vnode.dynamicChildren;\n  const childRoot = filterSingleRoot(rawChildren, false);\n  if (!childRoot) {\n    return [vnode, void 0];\n  } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n    return getChildRoot(childRoot);\n  }\n  const index = rawChildren.indexOf(childRoot);\n  const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n  const setRoot = (updatedRoot) => {\n    rawChildren[index] = updatedRoot;\n    if (dynamicChildren) {\n      if (dynamicIndex > -1) {\n        dynamicChildren[dynamicIndex] = updatedRoot;\n      } else if (updatedRoot.patchFlag > 0) {\n        vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n      }\n    }\n  };\n  return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n  let singleRoot;\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i];\n    if (isVNode(child)) {\n      if (child.type !== Comment || child.children === \"v-if\") {\n        if (singleRoot) {\n          return;\n        } else {\n          singleRoot = child;\n          if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n            return filterSingleRoot(singleRoot.children);\n          }\n        }\n      }\n    } else {\n      return;\n    }\n  }\n  return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n  let res;\n  for (const key in attrs) {\n    if (key === \"class\" || key === \"style\" || isOn(key)) {\n      (res || (res = {}))[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst filterModelListeners = (attrs, props) => {\n  const res = {};\n  for (const key in attrs) {\n    if (!isModelListener(key) || !(key.slice(9) in props)) {\n      res[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst isElementRoot = (vnode) => {\n  return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n  const { props: prevProps, children: prevChildren, component } = prevVNode;\n  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n  const emits = component.emitsOptions;\n  if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n    return true;\n  }\n  if (nextVNode.dirs || nextVNode.transition) {\n    return true;\n  }\n  if (optimized && patchFlag >= 0) {\n    if (patchFlag & 1024) {\n      return true;\n    }\n    if (patchFlag & 16) {\n      if (!prevProps) {\n        return !!nextProps;\n      }\n      return hasPropsChanged(prevProps, nextProps, emits);\n    } else if (patchFlag & 8) {\n      const dynamicProps = nextVNode.dynamicProps;\n      for (let i = 0; i < dynamicProps.length; i++) {\n        const key = dynamicProps[i];\n        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n          return true;\n        }\n      }\n    }\n  } else {\n    if (prevChildren || nextChildren) {\n      if (!nextChildren || !nextChildren.$stable) {\n        return true;\n      }\n    }\n    if (prevProps === nextProps) {\n      return false;\n    }\n    if (!prevProps) {\n      return !!nextProps;\n    }\n    if (!nextProps) {\n      return true;\n    }\n    return hasPropsChanged(prevProps, nextProps, emits);\n  }\n  return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n  const nextKeys = Object.keys(nextProps);\n  if (nextKeys.length !== Object.keys(prevProps).length) {\n    return true;\n  }\n  for (let i = 0; i < nextKeys.length; i++) {\n    const key = nextKeys[i];\n    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n  while (parent) {\n    const root = parent.subTree;\n    if (root.suspense && root.suspense.activeBranch === vnode) {\n      root.el = vnode.el;\n    }\n    if (root === vnode) {\n      (vnode = parent.vnode).el = el;\n      parent = parent.parent;\n    } else {\n      break;\n    }\n  }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n  name: \"Suspense\",\n  // In order to make Suspense tree-shakable, we need to avoid importing it\n  // directly in the renderer. The renderer checks for the __isSuspense flag\n  // on a vnode's type and calls the `process` method, passing in renderer\n  // internals.\n  __isSuspense: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n    if (n1 == null) {\n      mountSuspense(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    } else {\n      if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n        n2.suspense = n1.suspense;\n        n2.suspense.vnode = n2;\n        n2.el = n1.el;\n        return;\n      }\n      patchSuspense(\n        n1,\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    }\n  },\n  hydrate: hydrateSuspense,\n  normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n  const eventListener = vnode.props && vnode.props[name];\n  if (isFunction(eventListener)) {\n    eventListener();\n  }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n  const {\n    p: patch,\n    o: { createElement }\n  } = rendererInternals;\n  const hiddenContainer = createElement(\"div\");\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    container,\n    hiddenContainer,\n    anchor,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals\n  );\n  patch(\n    null,\n    suspense.pendingBranch = vnode.ssContent,\n    hiddenContainer,\n    null,\n    parentComponent,\n    suspense,\n    namespace,\n    slotScopeIds\n  );\n  if (suspense.deps > 0) {\n    triggerEvent(vnode, \"onPending\");\n    triggerEvent(vnode, \"onFallback\");\n    patch(\n      null,\n      vnode.ssFallback,\n      container,\n      anchor,\n      parentComponent,\n      null,\n      // fallback tree will not have suspense context\n      namespace,\n      slotScopeIds\n    );\n    setActiveBranch(suspense, vnode.ssFallback);\n  } else {\n    suspense.resolve(false, true);\n  }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n  const suspense = n2.suspense = n1.suspense;\n  suspense.vnode = n2;\n  n2.el = n1.el;\n  const newBranch = n2.ssContent;\n  const newFallback = n2.ssFallback;\n  const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n  if (pendingBranch) {\n    suspense.pendingBranch = newBranch;\n    if (isSameVNodeType(newBranch, pendingBranch)) {\n      patch(\n        pendingBranch,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else if (isInFallback) {\n        if (!isHydrating) {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      }\n    } else {\n      suspense.pendingId = suspenseId++;\n      if (isHydrating) {\n        suspense.isHydrating = false;\n        suspense.activeBranch = pendingBranch;\n      } else {\n        unmount(pendingBranch, parentComponent, suspense);\n      }\n      suspense.deps = 0;\n      suspense.effects.length = 0;\n      suspense.hiddenContainer = createElement(\"div\");\n      if (isInFallback) {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        } else {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n        patch(\n          activeBranch,\n          newBranch,\n          container,\n          anchor,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        suspense.resolve(true);\n      } else {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        }\n      }\n    }\n  } else {\n    if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n      patch(\n        activeBranch,\n        newBranch,\n        container,\n        anchor,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      setActiveBranch(suspense, newBranch);\n    } else {\n      triggerEvent(n2, \"onPending\");\n      suspense.pendingBranch = newBranch;\n      if (newBranch.shapeFlag & 512) {\n        suspense.pendingId = newBranch.component.suspenseId;\n      } else {\n        suspense.pendingId = suspenseId++;\n      }\n      patch(\n        null,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else {\n        const { timeout, pendingId } = suspense;\n        if (timeout > 0) {\n          setTimeout(() => {\n            if (suspense.pendingId === pendingId) {\n              suspense.fallback(newFallback);\n            }\n          }, timeout);\n        } else if (timeout === 0) {\n          suspense.fallback(newFallback);\n        }\n      }\n    }\n  }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n  if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n    hasWarned = true;\n    console[console.info ? \"info\" : \"log\"](\n      `<Suspense> is an experimental feature and its API will likely change.`\n    );\n  }\n  const {\n    p: patch,\n    m: move,\n    um: unmount,\n    n: next,\n    o: { parentNode, remove }\n  } = rendererInternals;\n  let parentSuspenseId;\n  const isSuspensible = isVNodeSuspensible(vnode);\n  if (isSuspensible) {\n    if (parentSuspense && parentSuspense.pendingBranch) {\n      parentSuspenseId = parentSuspense.pendingId;\n      parentSuspense.deps++;\n    }\n  }\n  const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    assertNumber(timeout, `Suspense timeout`);\n  }\n  const initialAnchor = anchor;\n  const suspense = {\n    vnode,\n    parent: parentSuspense,\n    parentComponent,\n    namespace,\n    container,\n    hiddenContainer,\n    deps: 0,\n    pendingId: suspenseId++,\n    timeout: typeof timeout === \"number\" ? timeout : -1,\n    activeBranch: null,\n    pendingBranch: null,\n    isInFallback: !isHydrating,\n    isHydrating,\n    isUnmounted: false,\n    effects: [],\n    resolve(resume = false, sync = false) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        if (!resume && !suspense.pendingBranch) {\n          throw new Error(\n            `suspense.resolve() is called without a pending branch.`\n          );\n        }\n        if (suspense.isUnmounted) {\n          throw new Error(\n            `suspense.resolve() is called on an already unmounted suspense boundary.`\n          );\n        }\n      }\n      const {\n        vnode: vnode2,\n        activeBranch,\n        pendingBranch,\n        pendingId,\n        effects,\n        parentComponent: parentComponent2,\n        container: container2\n      } = suspense;\n      let delayEnter = false;\n      if (suspense.isHydrating) {\n        suspense.isHydrating = false;\n      } else if (!resume) {\n        delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n        if (delayEnter) {\n          activeBranch.transition.afterLeave = () => {\n            if (pendingId === suspense.pendingId) {\n              move(\n                pendingBranch,\n                container2,\n                anchor === initialAnchor ? next(activeBranch) : anchor,\n                0\n              );\n              queuePostFlushCb(effects);\n            }\n          };\n        }\n        if (activeBranch) {\n          if (parentNode(activeBranch.el) === container2) {\n            anchor = next(activeBranch);\n          }\n          unmount(activeBranch, parentComponent2, suspense, true);\n        }\n        if (!delayEnter) {\n          move(pendingBranch, container2, anchor, 0);\n        }\n      }\n      setActiveBranch(suspense, pendingBranch);\n      suspense.pendingBranch = null;\n      suspense.isInFallback = false;\n      let parent = suspense.parent;\n      let hasUnresolvedAncestor = false;\n      while (parent) {\n        if (parent.pendingBranch) {\n          parent.effects.push(...effects);\n          hasUnresolvedAncestor = true;\n          break;\n        }\n        parent = parent.parent;\n      }\n      if (!hasUnresolvedAncestor && !delayEnter) {\n        queuePostFlushCb(effects);\n      }\n      suspense.effects = [];\n      if (isSuspensible) {\n        if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n          parentSuspense.deps--;\n          if (parentSuspense.deps === 0 && !sync) {\n            parentSuspense.resolve();\n          }\n        }\n      }\n      triggerEvent(vnode2, \"onResolve\");\n    },\n    fallback(fallbackVNode) {\n      if (!suspense.pendingBranch) {\n        return;\n      }\n      const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n      triggerEvent(vnode2, \"onFallback\");\n      const anchor2 = next(activeBranch);\n      const mountFallback = () => {\n        if (!suspense.isInFallback) {\n          return;\n        }\n        patch(\n          null,\n          fallbackVNode,\n          container2,\n          anchor2,\n          parentComponent2,\n          null,\n          // fallback tree will not have suspense context\n          namespace2,\n          slotScopeIds,\n          optimized\n        );\n        setActiveBranch(suspense, fallbackVNode);\n      };\n      const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n      if (delayEnter) {\n        activeBranch.transition.afterLeave = mountFallback;\n      }\n      suspense.isInFallback = true;\n      unmount(\n        activeBranch,\n        parentComponent2,\n        null,\n        // no suspense so unmount hooks fire now\n        true\n        // shouldRemove\n      );\n      if (!delayEnter) {\n        mountFallback();\n      }\n    },\n    move(container2, anchor2, type) {\n      suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n      suspense.container = container2;\n    },\n    next() {\n      return suspense.activeBranch && next(suspense.activeBranch);\n    },\n    registerDep(instance, setupRenderEffect, optimized2) {\n      const isInPendingSuspense = !!suspense.pendingBranch;\n      if (isInPendingSuspense) {\n        suspense.deps++;\n      }\n      const hydratedEl = instance.vnode.el;\n      instance.asyncDep.catch((err) => {\n        handleError(err, instance, 0);\n      }).then((asyncSetupResult) => {\n        if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n          return;\n        }\n        instance.asyncResolved = true;\n        const { vnode: vnode2 } = instance;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(vnode2);\n        }\n        handleSetupResult(instance, asyncSetupResult, false);\n        if (hydratedEl) {\n          vnode2.el = hydratedEl;\n        }\n        const placeholder = !hydratedEl && instance.subTree.el;\n        setupRenderEffect(\n          instance,\n          vnode2,\n          // component may have been moved before resolve.\n          // if this is not a hydration, instance.subTree will be the comment\n          // placeholder.\n          parentNode(hydratedEl || instance.subTree.el),\n          // anchor will not be used if this is hydration, so only need to\n          // consider the comment placeholder case.\n          hydratedEl ? null : next(instance.subTree),\n          suspense,\n          namespace,\n          optimized2\n        );\n        if (placeholder) {\n          remove(placeholder);\n        }\n        updateHOCHostEl(instance, vnode2.el);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        if (isInPendingSuspense && --suspense.deps === 0) {\n          suspense.resolve();\n        }\n      });\n    },\n    unmount(parentSuspense2, doRemove) {\n      suspense.isUnmounted = true;\n      if (suspense.activeBranch) {\n        unmount(\n          suspense.activeBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n      if (suspense.pendingBranch) {\n        unmount(\n          suspense.pendingBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n    }\n  };\n  return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    node.parentNode,\n    // eslint-disable-next-line no-restricted-globals\n    document.createElement(\"div\"),\n    null,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals,\n    true\n  );\n  const result = hydrateNode(\n    node,\n    suspense.pendingBranch = vnode.ssContent,\n    parentComponent,\n    suspense,\n    slotScopeIds,\n    optimized\n  );\n  if (suspense.deps === 0) {\n    suspense.resolve(false, true);\n  }\n  return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n  const { shapeFlag, children } = vnode;\n  const isSlotChildren = shapeFlag & 32;\n  vnode.ssContent = normalizeSuspenseSlot(\n    isSlotChildren ? children.default : children\n  );\n  vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n  let block;\n  if (isFunction(s)) {\n    const trackBlock = isBlockTreeEnabled && s._c;\n    if (trackBlock) {\n      s._d = false;\n      openBlock();\n    }\n    s = s();\n    if (trackBlock) {\n      s._d = true;\n      block = currentBlock;\n      closeBlock();\n    }\n  }\n  if (isArray(s)) {\n    const singleChild = filterSingleRoot(s);\n    if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n      warn$1(`<Suspense> slots expect a single root node.`);\n    }\n    s = singleChild;\n  }\n  s = normalizeVNode(s);\n  if (block && !s.dynamicChildren) {\n    s.dynamicChildren = block.filter((c) => c !== s);\n  }\n  return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n  if (suspense && suspense.pendingBranch) {\n    if (isArray(fn)) {\n      suspense.effects.push(...fn);\n    } else {\n      suspense.effects.push(fn);\n    }\n  } else {\n    queuePostFlushCb(fn);\n  }\n}\nfunction setActiveBranch(suspense, branch) {\n  suspense.activeBranch = branch;\n  const { vnode, parentComponent } = suspense;\n  let el = branch.el;\n  while (!el && branch.component) {\n    branch = branch.component.subTree;\n    el = branch.el;\n  }\n  vnode.el = el;\n  if (parentComponent && parentComponent.subTree === vnode) {\n    parentComponent.vnode.el = el;\n    updateHOCHostEl(parentComponent, el);\n  }\n}\nfunction isVNodeSuspensible(vnode) {\n  const suspensible = vnode.props && vnode.props.suspensible;\n  return suspensible != null && suspensible !== false;\n}\n\nconst Fragment = Symbol.for(\"v-fgt\");\nconst Text = Symbol.for(\"v-txt\");\nconst Comment = Symbol.for(\"v-cmt\");\nconst Static = Symbol.for(\"v-stc\");\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n  blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n  blockStack.pop();\n  currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value, inVOnce = false) {\n  isBlockTreeEnabled += value;\n  if (value < 0 && currentBlock && inVOnce) {\n    currentBlock.hasOnce = true;\n  }\n}\nfunction setupBlock(vnode) {\n  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n  closeBlock();\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n  return setupBlock(\n    createBaseVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      shapeFlag,\n      true\n    )\n  );\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n  return setupBlock(\n    createVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      true\n    )\n  );\n}\nfunction isVNode(value) {\n  return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n  if (!!(process.env.NODE_ENV !== \"production\") && n2.shapeFlag & 6 && n1.component) {\n    const dirtyInstances = hmrDirtyComponents.get(n2.type);\n    if (dirtyInstances && dirtyInstances.has(n1.component)) {\n      n1.shapeFlag &= ~256;\n      n2.shapeFlag &= ~512;\n      return false;\n    }\n  }\n  return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\nfunction transformVNodeArgs(transformer) {\n  vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n  return _createVNode(\n    ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args\n  );\n};\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({\n  ref,\n  ref_key,\n  ref_for\n}) => {\n  if (typeof ref === \"number\") {\n    ref = \"\" + ref;\n  }\n  return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n  const vnode = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type,\n    props,\n    key: props && normalizeKey(props),\n    ref: props && normalizeRef(props),\n    scopeId: currentScopeId,\n    slotScopeIds: null,\n    children,\n    component: null,\n    suspense: null,\n    ssContent: null,\n    ssFallback: null,\n    dirs: null,\n    transition: null,\n    el: null,\n    anchor: null,\n    target: null,\n    targetStart: null,\n    targetAnchor: null,\n    staticCount: 0,\n    shapeFlag,\n    patchFlag,\n    dynamicProps,\n    dynamicChildren: null,\n    appContext: null,\n    ctx: currentRenderingInstance\n  };\n  if (needFullChildrenNormalization) {\n    normalizeChildren(vnode, children);\n    if (shapeFlag & 128) {\n      type.normalize(vnode);\n    }\n  } else if (children) {\n    vnode.shapeFlag |= isString(children) ? 8 : 16;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && vnode.key !== vnode.key) {\n    warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n  }\n  if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself\n  !isBlockNode && // has current parent block\n  currentBlock && // presence of a patch flag indicates this node needs patching on updates.\n  // component nodes also should always be patched, because even if the\n  // component doesn't need to update, it needs to persist the instance on to\n  // the next vnode so that it can be properly unmounted later.\n  (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the\n  // vnode should not be considered dynamic due to handler caching.\n  vnode.patchFlag !== 32) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nconst createVNode = !!(process.env.NODE_ENV !== \"production\") ? createVNodeWithArgsTransform : _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n  if (!type || type === NULL_DYNAMIC_COMPONENT) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !type) {\n      warn$1(`Invalid vnode type when creating vnode: ${type}.`);\n    }\n    type = Comment;\n  }\n  if (isVNode(type)) {\n    const cloned = cloneVNode(\n      type,\n      props,\n      true\n      /* mergeRef: true */\n    );\n    if (children) {\n      normalizeChildren(cloned, children);\n    }\n    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n      if (cloned.shapeFlag & 6) {\n        currentBlock[currentBlock.indexOf(type)] = cloned;\n      } else {\n        currentBlock.push(cloned);\n      }\n    }\n    cloned.patchFlag = -2;\n    return cloned;\n  }\n  if (isClassComponent(type)) {\n    type = type.__vccOpts;\n  }\n  if (props) {\n    props = guardReactiveProps(props);\n    let { class: klass, style } = props;\n    if (klass && !isString(klass)) {\n      props.class = normalizeClass(klass);\n    }\n    if (isObject(style)) {\n      if (isProxy(style) && !isArray(style)) {\n        style = extend({}, style);\n      }\n      props.style = normalizeStyle(style);\n    }\n  }\n  const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && shapeFlag & 4 && isProxy(type)) {\n    type = toRaw(type);\n    warn$1(\n      `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \\`markRaw\\` or using \\`shallowRef\\` instead of \\`ref\\`.`,\n      `\nComponent that was made reactive: `,\n      type\n    );\n  }\n  return createBaseVNode(\n    type,\n    props,\n    children,\n    patchFlag,\n    dynamicProps,\n    shapeFlag,\n    isBlockNode,\n    true\n  );\n}\nfunction guardReactiveProps(props) {\n  if (!props) return null;\n  return isProxy(props) || isInternalObject(props) ? extend({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) {\n  const { props, ref, patchFlag, children, transition } = vnode;\n  const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n  const cloned = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type: vnode.type,\n    props: mergedProps,\n    key: mergedProps && normalizeKey(mergedProps),\n    ref: extraProps && extraProps.ref ? (\n      // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n      // if the vnode itself already has a ref, cloneVNode will need to merge\n      // the refs so the single vnode can be set on multiple refs\n      mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)\n    ) : ref,\n    scopeId: vnode.scopeId,\n    slotScopeIds: vnode.slotScopeIds,\n    children: !!(process.env.NODE_ENV !== \"production\") && patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,\n    target: vnode.target,\n    targetStart: vnode.targetStart,\n    targetAnchor: vnode.targetAnchor,\n    staticCount: vnode.staticCount,\n    shapeFlag: vnode.shapeFlag,\n    // if the vnode is cloned with extra props, we can no longer assume its\n    // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n    // note: preserve flag for fragments since they use the flag for children\n    // fast paths only.\n    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n    dynamicProps: vnode.dynamicProps,\n    dynamicChildren: vnode.dynamicChildren,\n    appContext: vnode.appContext,\n    dirs: vnode.dirs,\n    transition,\n    // These should technically only be non-null on mounted VNodes. However,\n    // they *should* be copied for kept-alive vnodes. So we just always copy\n    // them since them being non-null during a mount doesn't affect the logic as\n    // they will simply be overwritten.\n    component: vnode.component,\n    suspense: vnode.suspense,\n    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n    el: vnode.el,\n    anchor: vnode.anchor,\n    ctx: vnode.ctx,\n    ce: vnode.ce\n  };\n  if (transition && cloneTransition) {\n    setTransitionHooks(\n      cloned,\n      transition.clone(cloned)\n    );\n  }\n  return cloned;\n}\nfunction deepCloneVNode(vnode) {\n  const cloned = cloneVNode(vnode);\n  if (isArray(vnode.children)) {\n    cloned.children = vnode.children.map(deepCloneVNode);\n  }\n  return cloned;\n}\nfunction createTextVNode(text = \" \", flag = 0) {\n  return createVNode(Text, null, text, flag);\n}\nfunction createStaticVNode(content, numberOfNodes) {\n  const vnode = createVNode(Static, null, content);\n  vnode.staticCount = numberOfNodes;\n  return vnode;\n}\nfunction createCommentVNode(text = \"\", asBlock = false) {\n  return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n  if (child == null || typeof child === \"boolean\") {\n    return createVNode(Comment);\n  } else if (isArray(child)) {\n    return createVNode(\n      Fragment,\n      null,\n      // #3666, avoid reference pollution when reusing vnode\n      child.slice()\n    );\n  } else if (isVNode(child)) {\n    return cloneIfMounted(child);\n  } else {\n    return createVNode(Text, null, String(child));\n  }\n}\nfunction cloneIfMounted(child) {\n  return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n  let type = 0;\n  const { shapeFlag } = vnode;\n  if (children == null) {\n    children = null;\n  } else if (isArray(children)) {\n    type = 16;\n  } else if (typeof children === \"object\") {\n    if (shapeFlag & (1 | 64)) {\n      const slot = children.default;\n      if (slot) {\n        slot._c && (slot._d = false);\n        normalizeChildren(vnode, slot());\n        slot._c && (slot._d = true);\n      }\n      return;\n    } else {\n      type = 32;\n      const slotFlag = children._;\n      if (!slotFlag && !isInternalObject(children)) {\n        children._ctx = currentRenderingInstance;\n      } else if (slotFlag === 3 && currentRenderingInstance) {\n        if (currentRenderingInstance.slots._ === 1) {\n          children._ = 1;\n        } else {\n          children._ = 2;\n          vnode.patchFlag |= 1024;\n        }\n      }\n    }\n  } else if (isFunction(children)) {\n    children = { default: children, _ctx: currentRenderingInstance };\n    type = 32;\n  } else {\n    children = String(children);\n    if (shapeFlag & 64) {\n      type = 16;\n      children = [createTextVNode(children)];\n    } else {\n      type = 8;\n    }\n  }\n  vnode.children = children;\n  vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n  const ret = {};\n  for (let i = 0; i < args.length; i++) {\n    const toMerge = args[i];\n    for (const key in toMerge) {\n      if (key === \"class\") {\n        if (ret.class !== toMerge.class) {\n          ret.class = normalizeClass([ret.class, toMerge.class]);\n        }\n      } else if (key === \"style\") {\n        ret.style = normalizeStyle([ret.style, toMerge.style]);\n      } else if (isOn(key)) {\n        const existing = ret[key];\n        const incoming = toMerge[key];\n        if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {\n          ret[key] = existing ? [].concat(existing, incoming) : incoming;\n        }\n      } else if (key !== \"\") {\n        ret[key] = toMerge[key];\n      }\n    }\n  }\n  return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n  callWithAsyncErrorHandling(hook, instance, 7, [\n    vnode,\n    prevVNode\n  ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n  const type = vnode.type;\n  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n  const instance = {\n    uid: uid++,\n    vnode,\n    type,\n    parent,\n    appContext,\n    root: null,\n    // to be immediately set\n    next: null,\n    subTree: null,\n    // will be set synchronously right after creation\n    effect: null,\n    update: null,\n    // will be set synchronously right after creation\n    job: null,\n    scope: new EffectScope(\n      true\n      /* detached */\n    ),\n    render: null,\n    proxy: null,\n    exposed: null,\n    exposeProxy: null,\n    withProxy: null,\n    provides: parent ? parent.provides : Object.create(appContext.provides),\n    ids: parent ? parent.ids : [\"\", 0, 0],\n    accessCache: null,\n    renderCache: [],\n    // local resolved assets\n    components: null,\n    directives: null,\n    // resolved props and emits options\n    propsOptions: normalizePropsOptions(type, appContext),\n    emitsOptions: normalizeEmitsOptions(type, appContext),\n    // emit\n    emit: null,\n    // to be set immediately\n    emitted: null,\n    // props default value\n    propsDefaults: EMPTY_OBJ,\n    // inheritAttrs\n    inheritAttrs: type.inheritAttrs,\n    // state\n    ctx: EMPTY_OBJ,\n    data: EMPTY_OBJ,\n    props: EMPTY_OBJ,\n    attrs: EMPTY_OBJ,\n    slots: EMPTY_OBJ,\n    refs: EMPTY_OBJ,\n    setupState: EMPTY_OBJ,\n    setupContext: null,\n    // suspense related\n    suspense,\n    suspenseId: suspense ? suspense.pendingId : 0,\n    asyncDep: null,\n    asyncResolved: false,\n    // lifecycle hooks\n    // not using enums here because it results in computed properties\n    isMounted: false,\n    isUnmounted: false,\n    isDeactivated: false,\n    bc: null,\n    c: null,\n    bm: null,\n    m: null,\n    bu: null,\n    u: null,\n    um: null,\n    bum: null,\n    da: null,\n    a: null,\n    rtg: null,\n    rtc: null,\n    ec: null,\n    sp: null\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    instance.ctx = createDevRenderContext(instance);\n  } else {\n    instance.ctx = { _: instance };\n  }\n  instance.root = parent ? parent.root : instance;\n  instance.emit = emit.bind(null, instance);\n  if (vnode.ce) {\n    vnode.ce(instance);\n  }\n  return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nlet internalSetCurrentInstance;\nlet setInSSRSetupState;\n{\n  const g = getGlobalThis();\n  const registerGlobalSetter = (key, setter) => {\n    let setters;\n    if (!(setters = g[key])) setters = g[key] = [];\n    setters.push(setter);\n    return (v) => {\n      if (setters.length > 1) setters.forEach((set) => set(v));\n      else setters[0](v);\n    };\n  };\n  internalSetCurrentInstance = registerGlobalSetter(\n    `__VUE_INSTANCE_SETTERS__`,\n    (v) => currentInstance = v\n  );\n  setInSSRSetupState = registerGlobalSetter(\n    `__VUE_SSR_SETTERS__`,\n    (v) => isInSSRComponentSetup = v\n  );\n}\nconst setCurrentInstance = (instance) => {\n  const prev = currentInstance;\n  internalSetCurrentInstance(instance);\n  instance.scope.on();\n  return () => {\n    instance.scope.off();\n    internalSetCurrentInstance(prev);\n  };\n};\nconst unsetCurrentInstance = () => {\n  currentInstance && currentInstance.scope.off();\n  internalSetCurrentInstance(null);\n};\nconst isBuiltInTag = /* @__PURE__ */ makeMap(\"slot,component\");\nfunction validateComponentName(name, { isNativeTag }) {\n  if (isBuiltInTag(name) || isNativeTag(name)) {\n    warn$1(\n      \"Do not use built-in or reserved HTML elements as component id: \" + name\n    );\n  }\n}\nfunction isStatefulComponent(instance) {\n  return instance.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false, optimized = false) {\n  isSSR && setInSSRSetupState(isSSR);\n  const { props, children } = instance.vnode;\n  const isStateful = isStatefulComponent(instance);\n  initProps(instance, props, isStateful, isSSR);\n  initSlots(instance, children, optimized);\n  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;\n  isSSR && setInSSRSetupState(false);\n  return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n  var _a;\n  const Component = instance.type;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    if (Component.name) {\n      validateComponentName(Component.name, instance.appContext.config);\n    }\n    if (Component.components) {\n      const names = Object.keys(Component.components);\n      for (let i = 0; i < names.length; i++) {\n        validateComponentName(names[i], instance.appContext.config);\n      }\n    }\n    if (Component.directives) {\n      const names = Object.keys(Component.directives);\n      for (let i = 0; i < names.length; i++) {\n        validateDirectiveName(names[i]);\n      }\n    }\n    if (Component.compilerOptions && isRuntimeOnly()) {\n      warn$1(\n        `\"compilerOptions\" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`\n      );\n    }\n  }\n  instance.accessCache = /* @__PURE__ */ Object.create(null);\n  instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    exposePropsOnRenderContext(instance);\n  }\n  const { setup } = Component;\n  if (setup) {\n    pauseTracking();\n    const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;\n    const reset = setCurrentInstance(instance);\n    const setupResult = callWithErrorHandling(\n      setup,\n      instance,\n      0,\n      [\n        !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(instance.props) : instance.props,\n        setupContext\n      ]\n    );\n    const isAsyncSetup = isPromise(setupResult);\n    resetTracking();\n    reset();\n    if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) {\n      markAsyncBoundary(instance);\n    }\n    if (isAsyncSetup) {\n      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n      if (isSSR) {\n        return setupResult.then((resolvedResult) => {\n          handleSetupResult(instance, resolvedResult, isSSR);\n        }).catch((e) => {\n          handleError(e, instance, 0);\n        });\n      } else {\n        instance.asyncDep = setupResult;\n        if (!!(process.env.NODE_ENV !== \"production\") && !instance.suspense) {\n          const name = (_a = Component.name) != null ? _a : \"Anonymous\";\n          warn$1(\n            `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`\n          );\n        }\n      }\n    } else {\n      handleSetupResult(instance, setupResult, isSSR);\n    }\n  } else {\n    finishComponentSetup(instance, isSSR);\n  }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n  if (isFunction(setupResult)) {\n    if (instance.type.__ssrInlineRender) {\n      instance.ssrRender = setupResult;\n    } else {\n      instance.render = setupResult;\n    }\n  } else if (isObject(setupResult)) {\n    if (!!(process.env.NODE_ENV !== \"production\") && isVNode(setupResult)) {\n      warn$1(\n        `setup() should not return VNodes directly - return a render function instead.`\n      );\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.devtoolsRawSetupState = setupResult;\n    }\n    instance.setupState = proxyRefs(setupResult);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      exposeSetupStateOnRenderContext(instance);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\") && setupResult !== void 0) {\n    warn$1(\n      `setup() should return an object. Received: ${setupResult === null ? \"null\" : typeof setupResult}`\n    );\n  }\n  finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\nfunction registerRuntimeCompiler(_compile) {\n  compile = _compile;\n  installWithProxy = (i) => {\n    if (i.render._rc) {\n      i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n    }\n  };\n}\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n  const Component = instance.type;\n  if (!instance.render) {\n    if (!isSSR && compile && !Component.render) {\n      const template = Component.template || __VUE_OPTIONS_API__ && resolveMergedOptions(instance).template;\n      if (template) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `compile`);\n        }\n        const { isCustomElement, compilerOptions } = instance.appContext.config;\n        const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n        const finalCompilerOptions = extend(\n          extend(\n            {\n              isCustomElement,\n              delimiters\n            },\n            compilerOptions\n          ),\n          componentCompilerOptions\n        );\n        Component.render = compile(template, finalCompilerOptions);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `compile`);\n        }\n      }\n    }\n    instance.render = Component.render || NOOP;\n    if (installWithProxy) {\n      installWithProxy(instance);\n    }\n  }\n  if (__VUE_OPTIONS_API__ && true) {\n    const reset = setCurrentInstance(instance);\n    pauseTracking();\n    try {\n      applyOptions(instance);\n    } finally {\n      resetTracking();\n      reset();\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !Component.render && instance.render === NOOP && !isSSR) {\n    if (!compile && Component.template) {\n      warn$1(\n        `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n      );\n    } else {\n      warn$1(`Component is missing template or render function: `, Component);\n    }\n  }\n}\nconst attrsProxyHandlers = !!(process.env.NODE_ENV !== \"production\") ? {\n  get(target, key) {\n    markAttrsAccessed();\n    track(target, \"get\", \"\");\n    return target[key];\n  },\n  set() {\n    warn$1(`setupContext.attrs is readonly.`);\n    return false;\n  },\n  deleteProperty() {\n    warn$1(`setupContext.attrs is readonly.`);\n    return false;\n  }\n} : {\n  get(target, key) {\n    track(target, \"get\", \"\");\n    return target[key];\n  }\n};\nfunction getSlotsProxy(instance) {\n  return new Proxy(instance.slots, {\n    get(target, key) {\n      track(instance, \"get\", \"$slots\");\n      return target[key];\n    }\n  });\n}\nfunction createSetupContext(instance) {\n  const expose = (exposed) => {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (instance.exposed) {\n        warn$1(`expose() should be called only once per setup().`);\n      }\n      if (exposed != null) {\n        let exposedType = typeof exposed;\n        if (exposedType === \"object\") {\n          if (isArray(exposed)) {\n            exposedType = \"array\";\n          } else if (isRef(exposed)) {\n            exposedType = \"ref\";\n          }\n        }\n        if (exposedType !== \"object\") {\n          warn$1(\n            `expose() should be passed a plain object, received ${exposedType}.`\n          );\n        }\n      }\n    }\n    instance.exposed = exposed || {};\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    let attrsProxy;\n    let slotsProxy;\n    return Object.freeze({\n      get attrs() {\n        return attrsProxy || (attrsProxy = new Proxy(instance.attrs, attrsProxyHandlers));\n      },\n      get slots() {\n        return slotsProxy || (slotsProxy = getSlotsProxy(instance));\n      },\n      get emit() {\n        return (event, ...args) => instance.emit(event, ...args);\n      },\n      expose\n    });\n  } else {\n    return {\n      attrs: new Proxy(instance.attrs, attrsProxyHandlers),\n      slots: instance.slots,\n      emit: instance.emit,\n      expose\n    };\n  }\n}\nfunction getComponentPublicInstance(instance) {\n  if (instance.exposed) {\n    return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n      get(target, key) {\n        if (key in target) {\n          return target[key];\n        } else if (key in publicPropertiesMap) {\n          return publicPropertiesMap[key](instance);\n        }\n      },\n      has(target, key) {\n        return key in target || key in publicPropertiesMap;\n      }\n    }));\n  } else {\n    return instance.proxy;\n  }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, \"\");\nfunction getComponentName(Component, includeInferred = true) {\n  return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction formatComponentName(instance, Component, isRoot = false) {\n  let name = getComponentName(Component);\n  if (!name && Component.__file) {\n    const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n    if (match) {\n      name = match[1];\n    }\n  }\n  if (!name && instance && instance.parent) {\n    const inferFromRegistry = (registry) => {\n      for (const key in registry) {\n        if (registry[key] === Component) {\n          return key;\n        }\n      }\n    };\n    name = inferFromRegistry(\n      instance.components || instance.parent.type.components\n    ) || inferFromRegistry(instance.appContext.components);\n  }\n  return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n  return isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst computed = (getterOrOptions, debugOptions) => {\n  const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const i = getCurrentInstance();\n    if (i && i.appContext.config.warnRecursiveComputed) {\n      c._warnRecursive = true;\n    }\n  }\n  return c;\n};\n\nfunction h(type, propsOrChildren, children) {\n  const l = arguments.length;\n  if (l === 2) {\n    if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n      if (isVNode(propsOrChildren)) {\n        return createVNode(type, null, [propsOrChildren]);\n      }\n      return createVNode(type, propsOrChildren);\n    } else {\n      return createVNode(type, null, propsOrChildren);\n    }\n  } else {\n    if (l > 3) {\n      children = Array.prototype.slice.call(arguments, 2);\n    } else if (l === 3 && isVNode(children)) {\n      children = [children];\n    }\n    return createVNode(type, propsOrChildren, children);\n  }\n}\n\nfunction initCustomFormatter() {\n  if (!!!(process.env.NODE_ENV !== \"production\") || typeof window === \"undefined\") {\n    return;\n  }\n  const vueStyle = { style: \"color:#3ba776\" };\n  const numberStyle = { style: \"color:#1677ff\" };\n  const stringStyle = { style: \"color:#f5222d\" };\n  const keywordStyle = { style: \"color:#eb2f96\" };\n  const formatter = {\n    __vue_custom_formatter: true,\n    header(obj) {\n      if (!isObject(obj)) {\n        return null;\n      }\n      if (obj.__isVue) {\n        return [\"div\", vueStyle, `VueInstance`];\n      } else if (isRef(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, genRefFlag(obj)],\n          \"<\",\n          // avoid debugger accessing value affecting behavior\n          formatValue(\"_value\" in obj ? obj._value : obj),\n          `>`\n        ];\n      } else if (isReactive(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReactive\" : \"Reactive\"],\n          \"<\",\n          formatValue(obj),\n          `>${isReadonly(obj) ? ` (readonly)` : ``}`\n        ];\n      } else if (isReadonly(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReadonly\" : \"Readonly\"],\n          \"<\",\n          formatValue(obj),\n          \">\"\n        ];\n      }\n      return null;\n    },\n    hasBody(obj) {\n      return obj && obj.__isVue;\n    },\n    body(obj) {\n      if (obj && obj.__isVue) {\n        return [\n          \"div\",\n          {},\n          ...formatInstance(obj.$)\n        ];\n      }\n    }\n  };\n  function formatInstance(instance) {\n    const blocks = [];\n    if (instance.type.props && instance.props) {\n      blocks.push(createInstanceBlock(\"props\", toRaw(instance.props)));\n    }\n    if (instance.setupState !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"setup\", instance.setupState));\n    }\n    if (instance.data !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"data\", toRaw(instance.data)));\n    }\n    const computed = extractKeys(instance, \"computed\");\n    if (computed) {\n      blocks.push(createInstanceBlock(\"computed\", computed));\n    }\n    const injected = extractKeys(instance, \"inject\");\n    if (injected) {\n      blocks.push(createInstanceBlock(\"injected\", injected));\n    }\n    blocks.push([\n      \"div\",\n      {},\n      [\n        \"span\",\n        {\n          style: keywordStyle.style + \";opacity:0.66\"\n        },\n        \"$ (internal): \"\n      ],\n      [\"object\", { object: instance }]\n    ]);\n    return blocks;\n  }\n  function createInstanceBlock(type, target) {\n    target = extend({}, target);\n    if (!Object.keys(target).length) {\n      return [\"span\", {}];\n    }\n    return [\n      \"div\",\n      { style: \"line-height:1.25em;margin-bottom:0.6em\" },\n      [\n        \"div\",\n        {\n          style: \"color:#476582\"\n        },\n        type\n      ],\n      [\n        \"div\",\n        {\n          style: \"padding-left:1.25em\"\n        },\n        ...Object.keys(target).map((key) => {\n          return [\n            \"div\",\n            {},\n            [\"span\", keywordStyle, key + \": \"],\n            formatValue(target[key], false)\n          ];\n        })\n      ]\n    ];\n  }\n  function formatValue(v, asRaw = true) {\n    if (typeof v === \"number\") {\n      return [\"span\", numberStyle, v];\n    } else if (typeof v === \"string\") {\n      return [\"span\", stringStyle, JSON.stringify(v)];\n    } else if (typeof v === \"boolean\") {\n      return [\"span\", keywordStyle, v];\n    } else if (isObject(v)) {\n      return [\"object\", { object: asRaw ? toRaw(v) : v }];\n    } else {\n      return [\"span\", stringStyle, String(v)];\n    }\n  }\n  function extractKeys(instance, type) {\n    const Comp = instance.type;\n    if (isFunction(Comp)) {\n      return;\n    }\n    const extracted = {};\n    for (const key in instance.ctx) {\n      if (isKeyOfType(Comp, key, type)) {\n        extracted[key] = instance.ctx[key];\n      }\n    }\n    return extracted;\n  }\n  function isKeyOfType(Comp, key, type) {\n    const opts = Comp[type];\n    if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) {\n      return true;\n    }\n    if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n      return true;\n    }\n    if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) {\n      return true;\n    }\n  }\n  function genRefFlag(v) {\n    if (isShallow(v)) {\n      return `ShallowRef`;\n    }\n    if (v.effect) {\n      return `ComputedRef`;\n    }\n    return `Ref`;\n  }\n  if (window.devtoolsFormatters) {\n    window.devtoolsFormatters.push(formatter);\n  } else {\n    window.devtoolsFormatters = [formatter];\n  }\n}\n\nfunction withMemo(memo, render, cache, index) {\n  const cached = cache[index];\n  if (cached && isMemoSame(cached, memo)) {\n    return cached;\n  }\n  const ret = render();\n  ret.memo = memo.slice();\n  ret.cacheIndex = index;\n  return cache[index] = ret;\n}\nfunction isMemoSame(cached, memo) {\n  const prev = cached.memo;\n  if (prev.length != memo.length) {\n    return false;\n  }\n  for (let i = 0; i < prev.length; i++) {\n    if (hasChanged(prev[i], memo[i])) {\n      return false;\n    }\n  }\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(cached);\n  }\n  return true;\n}\n\nconst version = \"3.5.13\";\nconst warn = !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP;\nconst ErrorTypeStrings = ErrorTypeStrings$1 ;\nconst devtools = !!(process.env.NODE_ENV !== \"production\") || true ? devtools$1 : void 0;\nconst setDevtoolsHook = !!(process.env.NODE_ENV !== \"production\") || true ? setDevtoolsHook$1 : NOOP;\nconst _ssrUtils = {\n  createComponentInstance,\n  setupComponent,\n  renderComponentRoot,\n  setCurrentRenderingInstance,\n  isVNode: isVNode,\n  normalizeVNode,\n  getComponentPublicInstance,\n  ensureValidVNode,\n  pushWarningContext,\n  popWarningContext\n};\nconst ssrUtils = _ssrUtils ;\nconst resolveFilter = null;\nconst compatUtils = null;\nconst DeprecationTypes = null;\n\nexport { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, Static, Suspense, Teleport, Text, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSlots, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeModels, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useId, useModel, useSSRContext, useSlots, useTemplateRef, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n","/**\n* vue v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { initCustomFormatter, warn } from '@vue/runtime-dom';\nexport * from '@vue/runtime-dom';\n\nfunction initDev() {\n  {\n    initCustomFormatter();\n  }\n}\n\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  initDev();\n}\nconst compile = () => {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn(\n      `Runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n    );\n  }\n};\n\nexport { compile };\n","// 框架会提供不同的响应式机制：\n// - React 是 useState/useEffect\n// - Vue 是 ref/watchEffect\n// - Angular 可以用 RxJS + service\n\n// 直接用 RxJS 的问题 / 局限\n// 1. 框架原生优化被绕过\n// - React 的 useState/useReducer 有批量更新优化\n// - Vue 的 ref/reactive 有依赖追踪和模板更新优化\n// - 如果完全用 RxJS，你需要手动在每个组件里订阅，并处理卸载/更新\n// - 换句话说，会破坏框架对响应式的天然集成，性能可能不如原生 Hook\n// 2. 使用体验不一致\n// - React 中你必须用 useEffect 或 useSyncExternalStore 来订阅 RxJS\n// - Vue 中用 watchEffect 或 from 转成 ref\n// - Angular 自然支持 Observable，但模板绑定习惯可能不一样\n// - 所以跨框架“用法一致性”还是需要封装一层适配器\n// 3. 不够轻量\n// - 对于简单状态管理（如计数器、开关）直接用 RxJS 引入库会显得重\n// - 对于小型项目，使用 RxJS 可能有点“大材小用”\n\n// 适配器模式的好处\n// - 解耦业务逻辑和响应式实现\n//   业务逻辑只写一次，不关心 RxJS、Vue Ref 还是 React State\n// - 可灵活切换底层实现\n//   小项目可以用 React/Vue 原生状态\n//   大项目需要复杂流式管理，可以换成 RxJS\n// - 统一接口\n//   state.getState() / state.setState() 和 actions，组件代码完全不用改\n\nimport {\n  useState,\n  useEffect,\n  useLayoutEffect,\n  useSyncExternalStore,\n  useRef,\n  useMemo,\n  useCallback,\n  useTransition\n} from \"react\";\nimport { nextTick, ref, watch, watchEffect } from \"vue\";\nimport { BehaviorSubject } from \"rxjs\";\nimport {\n  Callback,\n  StateStoreLike,\n  Diff,\n  State,\n  ReduxStore,\n  deepEqual,\n  deepDiff,\n  isArray,\n  isPrimitive,\n  createSignal,\n  execNoThrow\n} from \"@zyzgroup/core-common\";\n\nfunction createPathMatcher(paths: string[]) {\n  const set = new Set(paths);\n  return (path: string): boolean => {\n    let current = path;\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n      if (set.has(current)) {\n        return true;\n      }\n      const idx = current.lastIndexOf(\".\");\n      if (idx < 0) {\n        return false;\n      }\n      current = current.slice(0, idx);\n    }\n  };\n}\n\nfunction getOverlap(diffs: Diff[], watchPaths?: string[]): Diff[] {\n  if (!watchPaths || watchPaths.length == 0) {\n    return diffs;\n  }\n  return diffs.filter((diff) =>\n    // watchPaths.some((wp) => diff.path.indexOf(wp) >= 0)\n    watchPaths.some((wp) => diff.path === wp || diff.path.startsWith(wp + \".\"))\n  );\n}\n\n// React：组件重新 render 会反复执行整个 Hook，注意多次渲染过程中不要重复创建function\nexport function useReactState<T = any>(initial: T): StateStoreLike<T> {\n  const [value, setValue] = useState<T>(initial);\n  const valueRef = useRef(value); // 解决 stale closure\n  // const pendingDiffs = useRef<Diff[]>([]);\n  // const signalRef = useRef(createSignal<[T, Diff[]]>());\n  const signalRef = useRef(createSignal<[T]>());\n\n  // 使用 useEffect: 确保订阅者在 渲染前 不会读到 旧DOM 或 中间状态\n  // useEffect(() => {\n  // 保证 DOM commit 前同步\n  // useLayoutEffect(() => {\n  //   const diffs = pendingDiffs.current;\n  //   if (diffs.length) {\n  //     signalRef.current.emit(value, diffs);\n  //   }\n  //   pendingDiffs.current = [];\n  // }, [value]);\n\n  // 尝试解决潜在的无限循环: subscribe回调里 最好不要直接修改同一个状态 useReactState.set\n  const safeSetValue = useCallback((newValue: T | ((prev: T) => T)) => {\n    setValue((prev) => {\n      const resolved =\n        typeof newValue === \"function\"\n          ? (newValue as (prev: T) => T)(prev)\n          : newValue;\n      // state is immutable\n      if (Object.is(prev, resolved)) {\n        // Object.is(NaN, NaN) // true\n        // NaN === NaN         // false\n        // Object.is(+0, -0)  // false\n        // +0 === -0          // true\n        // null === null      // true\n        // undefined === undefined // true\n        return prev;\n      }\n      // 仅在值真正不同的时候更新\n      valueRef.current = resolved;\n      // pendingDiffs.current.push(...deepDiff(prev, resolved));\n      signalRef.current.emit(resolved);\n      return resolved;\n    });\n  }, []);\n\n  return useMemo(\n    () => ({\n      getState: () => valueRef.current, // 避免读取的是闭包的 value\n      setState: safeSetValue,\n      subscribe: (listener: Callback<[T]>) => {\n        // 在订阅时立即获取最新值\n        execNoThrow(() => listener(valueRef.current));\n        const unsubscribe = signalRef.current.subscribe((v) => {\n          execNoThrow(() => listener(v));\n        });\n        return () => unsubscribe();\n      }\n      // subscribe: (listener: Callback<[T, Diff[]]>, watchPaths?: string[]) => {\n      //   const match = watchPaths?.length ? createPathMatcher(watchPaths) : null;\n      //   // 在订阅时立即获取最新值\n      //   execNoThrow(() => {\n      //     listener(valueRef.current, []);\n      //   });\n      //   return signalRef.current.subscribe((v, d) => {\n      //     if (!match) {\n      //       execNoThrow(() => {\n      //         listener(v, d);\n      //       });\n      //       return;\n      //     }\n      //     const overlap = d.filter((x) => match(x.path));\n      //     if (overlap.length) {\n      //       execNoThrow(() => {\n      //         listener(v, overlap);\n      //       });\n      //     }\n      //   });\n      // }\n    }),\n    []\n  );\n}\n\n// Vue\nexport function useVueState<T = any>(initial: T): StateStoreLike<T> {\n  const state = ref<T>(initial);\n  // const diffs = ref<Diff[]>([]);\n  // const signal = createSignal<[T, Diff[]]>();\n  const signal = createSignal<[T]>();\n\n  // watch(\n  //   state,\n  //   () => {\n  //     signal.emit(state.value, diffs.value);\n  //   },\n  //   { flush: \"post\" } // 保证 DOM 已更新，已是 nextTick\n  // );\n\n  // 尝试解决潜在的无限循环: subscribe回调里 最好不要直接修改同一个状态 useVueState.set\n  const safeSet = (v: T | ((prev: T) => T)) => {\n    const resolved =\n      typeof v === \"function\" ? (v as (prev: T) => T)(state.value) : v;\n    // state is immutable\n    if (Object.is(state.value, resolved)) {\n      // diffs.value = [];\n      return;\n    }\n    // 仅在值真正不同的时候更新\n    // diffs.value = deepDiff(state.value, resolved);\n    state.value = resolved;\n    signal.emit(resolved);\n  };\n\n  return {\n    getState: () => state.value,\n    setState: safeSet,\n    subscribe: (listener: Callback<[T]>) => {\n      // 在订阅时立即获取最新值\n      execNoThrow(() => listener(state.value));\n      return signal.subscribe((v) => {\n        execNoThrow(() => listener(v));\n      });\n    }\n    // subscribe: (listener: Callback<[T, Diff[]]>, watchPaths?: string[]) => {\n    //   const match = watchPaths?.length ? createPathMatcher(watchPaths) : null;\n    //   // 在订阅时立即获取最新值\n    //   execNoThrow(() => {\n    //     listener(state.value, []);\n    //   });\n    //   return signal.subscribe((v, d) => {\n    //     if (!match) {\n    //       execNoThrow(() => {\n    //         listener(v, d);\n    //       });\n    //       return;\n    //     }\n    //     const overlap = d.filter((x) => match(x.path));\n    //     if (overlap.length) {\n    //       execNoThrow(() => {\n    //         listener(v, overlap);\n    //       });\n    //     }\n    //   });\n    // }\n  };\n}\n\n// Reducer must be pure\n// 一个巨大的 reducer\n// export function defaultStateStoreReducer<T = any>(prevState: T): T {\n//   if (isPrimitive(prevState)) {\n//     return prevState;\n//   }\n//   const nextState: T = isArray(prevState)\n//     ? ([...(prevState as any[])] as T)\n//     : { ...prevState };\n//   return nextState;\n// }\n\n// ** Demo in Once **\n// export function useCounter(state: StateStoreLike<number>) {\n//   const increment = () => state.set(state.get() + 1);\n//   const decrement = () => state.set(state.get() - 1);\n//   return { state, increment, decrement };\n// }\n\n// ** React use Demo **\n// function Counter() {\n//   const { state, increment, decrement } = useCounter(useReactState(0));\n//   return (\n//     <div>\n//       <p>{state.get()}</p>\n//       <button onClick={increment}>+</button>\n//       <button onClick={decrement}>-</button>\n//     </div>\n//   );\n// }\n\n// ** Vue use Demo **\n// export default {\n//   setup() {\n//     const { state, increment, decrement } = useCounter(useVueState(0));\n//     return { state, increment, decrement };\n//   },\n//   template: `\n//     <div>\n//       <p>{{ state.get() }}</p>\n//       <button @click=\"increment\">+</button>\n//       <button @click=\"decrement\">-</button>\n//     </div>\n//   `\n// };\n\n// ** Angular use Demo **\n// @Component({\n//   selector: \"app-counter\",\n//   template: `\n//     <div>\n//       <p>{{ count }}</p>\n//       <button (click)=\"increment()\">+</button>\n//       <button (click)=\"decrement()\">-</button>\n//     </div>\n//   `\n// })\n// export class CounterComponent {\n//   counter = useCounter(rxState(0));\n//   count = this.counter.state.get();\n//   increment = this.counter.increment;\n//   decrement = this.counter.decrement;\n//   constructor() {\n//     this.counter.state.subscribe((v) => (this.count = v));\n//   }\n// }\n","import {\n  InjectionKey,\n  inject,\n  provide,\n  shallowRef,\n  computed,\n  readonly,\n  onScopeDispose,\n  DeepReadonly,\n  ComputedRef,\n  ShallowRef,\n  getCurrentInstance,\n  AppContext\n} from \"vue\";\nimport {\n  Dispatch,\n  isReduxStore,\n  ReduxStore,\n  State,\n  StateStoreLike,\n  StateStore,\n  ValueUpdater\n} from \"@zyzgroup/core-common\";\n\ntype AppStoreContextValue<T extends State> = {\n  store: StateStore<T>;\n  stateRef: ShallowRef<T>;\n};\n\n// type AppState = {\n//   user: {\n//     name: string;\n//     age: number;\n//   };\n// };\n// export const { provideAppStore, useAppState, useSetAppState, useDispatch } = createAppStoreContext<AppState>(store);\n// setup() {\n//  provideAppStore();\n// }\n// setup() {\n//  const appState = useAppState();\n//  const user = useAppState((s) => s.user);\n//  const name = useAppState((s) => s.user.name);\n//  const dispatch = useDispatch();\n// }\n\nexport function createAppStoreContext<T extends State>(store: StateStore<T>) {\n  const AppStoreKey: InjectionKey<AppStoreContextValue<T>> = Symbol(\"AppStore\");\n\n  // const app = createApp();\n  // {\n  //   _context: {  // 全局级别\n  //     provides: {\n  //       Symbol(route location),\n  //       Symbol(router view location),\n  //       Symbol(router),\n  //     }\n  //   },\n  //   _instance: { // 组件级别\n  //     provides: {\n  //       Symbol(AppStore)\n  //     }\n  //   },\n  //   provide: fn\n  // }\n  // const instance = getCurrentInstance();\n  // {\n  //   appContext: {\n  //     provides: {\n  //       Symbol(route location),\n  //       Symbol(router view location),\n  //       Symbol(router),\n  //     }\n  //   },\n  //   provides: {\n  //     Symbol(AppStore)\n  //   }\n  // }\n  // Object.assign(instance.appContext, app._context);\n  // Object.assign(instance.provides, app._instance.provides);\n  function provideAppStore(): void {\n    // console.log(\"provide\", AppStoreKey);\n    const stateRef: ShallowRef<T> = shallowRef<T>(store.getState());\n    const unsubscribe = store.subscribe((state) => {\n      stateRef.value = state;\n    });\n    const instance = getCurrentInstance();\n    if (!instance) {\n      throw new Error(\"provideAppStore must be called in setup()\");\n    }\n    const injectValue = {\n      store,\n      stateRef\n    };\n    // 全局级别\n    (instance.appContext as AppContext).provides[AppStoreKey] = injectValue;\n    // 组件级别\n    // provide(AppStoreKey, injectValue);\n    // provider 所在组件销毁时自动取消订阅\n    // onScopeDispose(() => {\n    //   // console.log(\"unsubscribe\", AppStoreKey);\n    //   unsubscribe();\n    // });\n  }\n\n  function useAppContext(): AppStoreContextValue<T> {\n    const ctx = inject(AppStoreKey);\n    // console.log(\"inject\", { key: AppStoreKey, found: !!ctx });\n    if (!ctx) {\n      throw new ReferenceError(\n        \"createAppStoreContext's hooks cannot be called before provideAppStore()\"\n      );\n    }\n    return ctx;\n  }\n\n  function useAppStore(): StateStore<T> {\n    const { store } = useAppContext();\n    return store;\n  }\n\n  function useAppState(): DeepReadonly<ShallowRef<T>>;\n  function useAppState<Selected>( // Selected is infer type\n    selector: (state: T) => Selected\n  ): ComputedRef<Selected>;\n  function useAppState<Selected>(selector?: (state: T) => Selected) {\n    const { stateRef } = useAppContext();\n    if (selector) {\n      return computed(() => selector(stateRef.value));\n    }\n    return readonly(stateRef);\n  }\n\n  function useSetAppState(): ValueUpdater<T> {\n    const store = useAppStore();\n    if (isReduxStore(store)) {\n      throw new Error(\"useSetAppState is only supported for StateStoreLike\");\n    }\n    return store.setState.bind(store);\n  }\n\n  function useDispatch(): Dispatch {\n    const store = useAppStore();\n    if (!isReduxStore(store)) {\n      throw new Error(\"useDispatch is only supported for ReduxStore\");\n    }\n    return store.dispatch.bind(store);\n  }\n\n  return {\n    provideAppStore,\n    useAppStore,\n    useAppState,\n    useSetAppState,\n    useDispatch\n  };\n}\n\n// mutable state\n// const state: ReturnType<typeof reactive<State>> = reactive(\n//   store.getState()\n// );\n// store.subscribe((_, diffs) => {\n//   for (const diff of diffs) {\n//     setNestedValue(state, diff.path, diff.newValue);\n//   }\n// });\n// export function mapState(stateKeyPaths: string[]) {\n//   const mappedState: Record<string, ComputedRef<any>> = {};\n//   stateKeyPaths.forEach((stateKeyPath: string) => {\n//     mappedState[stateKeyPath] = computed(() =>\n//       getNestedValue(state, stateKeyPath)\n//     );\n//   });\n//   return mappedState;\n// }\n","import {\n  ref,\n  watch,\n  nextTick,\n  type Ref,\n  readonly,\n  type DeepReadonly,\n  computed,\n  ComputedRef\n} from \"vue\";\nimport { isNonNullable } from \"@zyzgroup/core-common\";\n\n// Vue 中 props 未传为 undefined\n// 支付宝小程序中 props 未传为 undefined\n// 微信小程序中 props 未传为 null\n\n// const [state, setState] = useControllableState<T>({\n//   value: () => props.modelValue,\n//   defaultValue: props.defaultValue,\n//   onChange(nextValue) {\n//     emits(\"update:modelValue\", nextValue);\n//     emits(\"change\", nextValue);\n//   },\n//   beforeChange: props.beforeChange\n// });\n// await setState((v) => ({ ...v })); // immutable\n\n// 受控模式 “controlled” (driven by props), options.onChange 必填\n// <Demo v-model=\"xxx\" />\n// <Demo v-model:modelValue的替换名称=\"xxx\" />\n// <Demo :modelValue的替换名称=\"xxx\" @change=\"onChange\" />\n\n// 非受控模式 “uncontrolled” (driven by state), options.defaultValue 必填\n// <Demo :defaultValue=\"xxx\"/>\n\n// 同时支持：受控模式 | 非受控模式\nexport function useControllableState<T = any>(options: {\n  value: () => unknown; // watch source\n  defaultValue?: T;\n  onChange?: (value: T) => void;\n  // 异步/同步拦截器：权限 / 日志 / 埋点 / 风控 / 二次确认\n  beforeChange?: (nextValue: T) => boolean | Promise<boolean>;\n}): readonly [\n  // state: DeepReadonly<Ref<T>>,\n  state: ComputedRef<T>,\n  setState: (newValue: T | ((prev: T) => T)) => Promise<void>\n] {\n  const initialValue = options.value();\n\n  // 是否是：受控模式，完全受控于父组件\n  const controlled = isNonNullable(initialValue);\n\n  if (!controlled && !(\"defaultValue\" in options)) {\n    throw new Error(\"defaultValue is required in uncontrolled mode\");\n  }\n  if (controlled && !(\"onChange\" in options)) {\n    throw new Error(\"onChange is required in controlled mode\");\n  }\n\n  // 内部状态\n  const inner = ref<T>((controlled ? initialValue : options.defaultValue) as T);\n\n  // 对外状态\n  const state = computed<T>(() =>\n    controlled ? (options.value() as T) : inner.value\n  );\n\n  // 同步外部状态\n  let warned = false;\n  watch(\n    options.value,\n    (v) => {\n      if (!warned && isNonNullable(v) !== controlled) {\n        warned = true;\n        // side effect\n        console.warn(\n          \"[useControllableState] can't switch between controlled and uncontrolled mode.\"\n        );\n        return;\n      }\n      // if (controlled) {\n      //   return;\n      // }\n      // // 避免无限循环：只有在新值与旧值不同时才会重新触发\n      // // 即：props.modelValue !== update:modelValue\n      // if (!Object.is(inner.value, v)) {\n      //   inner.value = (v ?? options.defaultValue) as T;\n      // }\n    },\n    {\n      // immediate: true\n    }\n  );\n\n  let version = 0;\n  async function setState(newValue: T | ((prev: T) => T)) {\n    const currentVersion = ++version;\n\n    const nextValue: T =\n      typeof newValue === \"function\"\n        ? (newValue as (prev: T) => T)(state.value)\n        : newValue;\n\n    if (options.beforeChange) {\n      const pass = await options.beforeChange(nextValue);\n      if (!pass) {\n        return;\n      }\n    }\n\n    if (currentVersion !== version) {\n      return;\n    }\n\n    if (!controlled) {\n      inner.value = nextValue;\n    }\n\n    options.onChange?.(nextValue);\n\n    // 非受控模式下通常已更新 DOM\n    // 受控模式下不能保证父组件已完成更新\n    await nextTick();\n  }\n\n  // return [readonly(state), setState] as const;\n  return [state, setState] as const;\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar React = require(\"react\");\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  useState = React.useState,\n  useEffect = React.useEffect,\n  useLayoutEffect = React.useLayoutEffect,\n  useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n  var value = getSnapshot(),\n    _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n    inst = _useState[0].inst,\n    forceUpdate = _useState[1];\n  useLayoutEffect(\n    function () {\n      inst.value = value;\n      inst.getSnapshot = getSnapshot;\n      checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n    },\n    [subscribe, value, getSnapshot]\n  );\n  useEffect(\n    function () {\n      checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n      return subscribe(function () {\n        checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n      });\n    },\n    [subscribe]\n  );\n  useDebugValue(value);\n  return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  inst = inst.value;\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(inst, nextValue);\n  } catch (error) {\n    return !0;\n  }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n  return getSnapshot();\n}\nvar shim =\n  \"undefined\" === typeof window ||\n  \"undefined\" === typeof window.document ||\n  \"undefined\" === typeof window.document.createElement\n    ? useSyncExternalStore$1\n    : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n  void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\n\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function is(x, y) {\n      return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n    }\n    function useSyncExternalStore$2(subscribe, getSnapshot) {\n      didWarnOld18Alpha ||\n        void 0 === React.startTransition ||\n        ((didWarnOld18Alpha = !0),\n        console.error(\n          \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n        ));\n      var value = getSnapshot();\n      if (!didWarnUncachedGetSnapshot) {\n        var cachedValue = getSnapshot();\n        objectIs(value, cachedValue) ||\n          (console.error(\n            \"The result of getSnapshot should be cached to avoid an infinite loop\"\n          ),\n          (didWarnUncachedGetSnapshot = !0));\n      }\n      cachedValue = useState({\n        inst: { value: value, getSnapshot: getSnapshot }\n      });\n      var inst = cachedValue[0].inst,\n        forceUpdate = cachedValue[1];\n      useLayoutEffect(\n        function () {\n          inst.value = value;\n          inst.getSnapshot = getSnapshot;\n          checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n        },\n        [subscribe, value, getSnapshot]\n      );\n      useEffect(\n        function () {\n          checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n          return subscribe(function () {\n            checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n          });\n        },\n        [subscribe]\n      );\n      useDebugValue(value);\n      return value;\n    }\n    function checkIfSnapshotChanged(inst) {\n      var latestGetSnapshot = inst.getSnapshot;\n      inst = inst.value;\n      try {\n        var nextValue = latestGetSnapshot();\n        return !objectIs(inst, nextValue);\n      } catch (error) {\n        return !0;\n      }\n    }\n    function useSyncExternalStore$1(subscribe, getSnapshot) {\n      return getSnapshot();\n    }\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n    var React = require(\"react\"),\n      objectIs = \"function\" === typeof Object.is ? Object.is : is,\n      useState = React.useState,\n      useEffect = React.useEffect,\n      useLayoutEffect = React.useLayoutEffect,\n      useDebugValue = React.useDebugValue,\n      didWarnOld18Alpha = !1,\n      didWarnUncachedGetSnapshot = !1,\n      shim =\n        \"undefined\" === typeof window ||\n        \"undefined\" === typeof window.document ||\n        \"undefined\" === typeof window.document.createElement\n          ? useSyncExternalStore$1\n          : useSyncExternalStore$2;\n    exports.useSyncExternalStore =\n      void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar React = require(\"react\"),\n  shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  useSyncExternalStore = shim.useSyncExternalStore,\n  useRef = React.useRef,\n  useEffect = React.useEffect,\n  useMemo = React.useMemo,\n  useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot,\n  selector,\n  isEqual\n) {\n  var instRef = useRef(null);\n  if (null === instRef.current) {\n    var inst = { hasValue: !1, value: null };\n    instRef.current = inst;\n  } else inst = instRef.current;\n  instRef = useMemo(\n    function () {\n      function memoizedSelector(nextSnapshot) {\n        if (!hasMemo) {\n          hasMemo = !0;\n          memoizedSnapshot = nextSnapshot;\n          nextSnapshot = selector(nextSnapshot);\n          if (void 0 !== isEqual && inst.hasValue) {\n            var currentSelection = inst.value;\n            if (isEqual(currentSelection, nextSnapshot))\n              return (memoizedSelection = currentSelection);\n          }\n          return (memoizedSelection = nextSnapshot);\n        }\n        currentSelection = memoizedSelection;\n        if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n        var nextSelection = selector(nextSnapshot);\n        if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n          return (memoizedSnapshot = nextSnapshot), currentSelection;\n        memoizedSnapshot = nextSnapshot;\n        return (memoizedSelection = nextSelection);\n      }\n      var hasMemo = !1,\n        memoizedSnapshot,\n        memoizedSelection,\n        maybeGetServerSnapshot =\n          void 0 === getServerSnapshot ? null : getServerSnapshot;\n      return [\n        function () {\n          return memoizedSelector(getSnapshot());\n        },\n        null === maybeGetServerSnapshot\n          ? void 0\n          : function () {\n              return memoizedSelector(maybeGetServerSnapshot());\n            }\n      ];\n    },\n    [getSnapshot, getServerSnapshot, selector, isEqual]\n  );\n  var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n  useEffect(\n    function () {\n      inst.hasValue = !0;\n      inst.value = value;\n    },\n    [value]\n  );\n  useDebugValue(value);\n  return value;\n};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\n\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function is(x, y) {\n      return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n    }\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n    var React = require(\"react\"),\n      shim = require(\"use-sync-external-store/shim\"),\n      objectIs = \"function\" === typeof Object.is ? Object.is : is,\n      useSyncExternalStore = shim.useSyncExternalStore,\n      useRef = React.useRef,\n      useEffect = React.useEffect,\n      useMemo = React.useMemo,\n      useDebugValue = React.useDebugValue;\n    exports.useSyncExternalStoreWithSelector = function (\n      subscribe,\n      getSnapshot,\n      getServerSnapshot,\n      selector,\n      isEqual\n    ) {\n      var instRef = useRef(null);\n      if (null === instRef.current) {\n        var inst = { hasValue: !1, value: null };\n        instRef.current = inst;\n      } else inst = instRef.current;\n      instRef = useMemo(\n        function () {\n          function memoizedSelector(nextSnapshot) {\n            if (!hasMemo) {\n              hasMemo = !0;\n              memoizedSnapshot = nextSnapshot;\n              nextSnapshot = selector(nextSnapshot);\n              if (void 0 !== isEqual && inst.hasValue) {\n                var currentSelection = inst.value;\n                if (isEqual(currentSelection, nextSnapshot))\n                  return (memoizedSelection = currentSelection);\n              }\n              return (memoizedSelection = nextSnapshot);\n            }\n            currentSelection = memoizedSelection;\n            if (objectIs(memoizedSnapshot, nextSnapshot))\n              return currentSelection;\n            var nextSelection = selector(nextSnapshot);\n            if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n              return (memoizedSnapshot = nextSnapshot), currentSelection;\n            memoizedSnapshot = nextSnapshot;\n            return (memoizedSelection = nextSelection);\n          }\n          var hasMemo = !1,\n            memoizedSnapshot,\n            memoizedSelection,\n            maybeGetServerSnapshot =\n              void 0 === getServerSnapshot ? null : getServerSnapshot;\n          return [\n            function () {\n              return memoizedSelector(getSnapshot());\n            },\n            null === maybeGetServerSnapshot\n              ? void 0\n              : function () {\n                  return memoizedSelector(maybeGetServerSnapshot());\n                }\n          ];\n        },\n        [getSnapshot, getServerSnapshot, selector, isEqual]\n      );\n      var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n      useEffect(\n        function () {\n          inst.hasValue = !0;\n          inst.value = value;\n        },\n        [value]\n      );\n      useDebugValue(value);\n      return value;\n    };\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import {\n  createContext,\n  ReactNode,\n  useContext,\n  useSyncExternalStore\n} from \"react\";\nimport { useSyncExternalStoreWithSelector } from \"use-sync-external-store/shim/with-selector\";\nimport {\n  Dispatch,\n  isReduxStore,\n  ReduxStore,\n  State,\n  StateStoreLike,\n  StateStore,\n  ValueUpdater\n} from \"@zyzgroup/core-common\";\n\n// Here’s a few alternatives you should consider before using context:\n// 1. Start by passing props\n// 2. Extract components and pass JSX as children to them\n// Use cases for context\n// 1. Theming\n// 2. Current account\n// 3. Routing\n// 4. Managing state\n\n// type AppState = {\n//   user: {\n//     name: string;\n//     age: number;\n//   };\n// };\n// export const { AppStoreProvider, useAppState, useSetAppState, useDispatch } = createAppStoreContext<AppState>(store);\n// AppStoreProvider(children);\n// const appState = useAppState();\n// const user = useAppState((s) => s.user);\n// const name = useAppState((s) => s.user.name);\n// const dispatch = useDispatch();\n\nexport function createAppStoreContext<T extends State>(store: StateStore<T>) {\n  const AppStoreContext = createContext<StateStore<T> | null>(null);\n\n  function AppStoreProvider({ children }: { children: ReactNode }) {\n    return (\n      <AppStoreContext.Provider value={store}>\n        {children}\n      </AppStoreContext.Provider>\n    );\n  }\n\n  function useAppStore(): StateStore<T> {\n    // 拿到最近一层 Provider\n    const store = useContext(AppStoreContext);\n    if (!store) {\n      throw new ReferenceError(\n        \"createAppStoreContext's hooks cannot be called outside of AppStoreProvider\"\n      );\n    }\n    return store;\n  }\n\n  function useAppState(): T;\n  function useAppState<Selected>( // Selected is infer type\n    selector: (state: T) => Selected,\n    equalityFn?: (a: Selected, b: Selected) => boolean\n  ): Selected;\n  function useAppState<Selected>(\n    selector?: (state: T) => Selected,\n    equalityFn?: (a: Selected, b: Selected) => boolean\n  ) {\n    const store = useAppStore();\n    const subscribe = (onStoreChange: () => void) =>\n      store.subscribe(() => onStoreChange());\n    if (selector) {\n      // 仅当 selector 结果发生变化时才触发重新渲染\n      // eslint-disable-next-line react-hooks/rules-of-hooks\n      return useSyncExternalStoreWithSelector(\n        subscribe,\n        store.getState,\n        store.getState,\n        selector,\n        equalityFn\n      );\n    }\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    return useSyncExternalStore(subscribe, store.getState, store.getState);\n  }\n\n  function useSetAppState(): ValueUpdater<T> {\n    const store = useAppStore();\n    if (isReduxStore(store)) {\n      throw new Error(\"useSetAppState is only supported for StateStoreLike\");\n    }\n    return store.setState.bind(store);\n  }\n\n  function useDispatch(): Dispatch {\n    const store = useAppStore();\n    if (!isReduxStore(store)) {\n      throw new Error(\"useDispatch is only supported for ReduxStore\");\n    }\n    return store.dispatch.bind(store);\n  }\n\n  return {\n    AppStoreProvider,\n    useAppStore,\n    useAppState,\n    useSetAppState,\n    useDispatch\n  };\n}\n","/* eslint-disable react-hooks/refs */\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { isNonNullable } from \"@zyzgroup/core-common\";\n\n// const [state, setState] = useControllableState<T>({\n//   value: props.value,\n//   defaultValue: props.defaultValue,\n//   onChange(nextValue) {\n//     props.onChange?.(nextValue);\n//   },\n//   beforeChange: props.beforeChange\n// });\n// await setState((v) => ({ ...v })); // immutable\n\n// 受控模式 “controlled” (driven by props), options.onChange 必填\n\n// 非受控模式 “uncontrolled” (driven by state), options.defaultValue 必填\n\n// 同时支持：受控模式 | 非受控模式\nexport function useControllableState<T = any>(options: {\n  value: unknown;\n  defaultValue?: T;\n  onChange?: (value: T) => void;\n  // 异步/同步拦截器：权限 / 日志 / 埋点 / 风控 / 二次确认\n  beforeChange?: (nextValue: T) => boolean | Promise<boolean>;\n}): readonly [\n  state: T,\n  setState: (newValue: T | ((prev: T) => T)) => Promise<void>\n] {\n  // 是否是：受控模式，完全受控于父组件\n  const controlledRef = useRef(isNonNullable(options.value));\n  const controlled = controlledRef.current;\n\n  if (!controlled && !(\"defaultValue\" in options)) {\n    throw new Error(\"defaultValue is required in uncontrolled mode\");\n  }\n  if (controlled && !(\"onChange\" in options)) {\n    throw new Error(\"onChange is required in controlled mode\");\n  }\n\n  // 内部状态\n  const [inner, setInner] = useState<T>(\n    () => (controlled ? options.value : options.defaultValue) as T\n  );\n\n  // 对外状态\n  const state = controlled ? (options.value as T) : inner;\n  const stateRef = useRef(state); // 在 setState 闭包里拿到最新 state\n  stateRef.current = state; // 每次 render 同步更新\n\n  const warned = useRef(false);\n  useEffect(() => {\n    if (!warned.current && isNonNullable(options.value) !== controlled) {\n      warned.current = true;\n      // side effect\n      console.warn(\n        \"[useControllableState] can't switch between controlled and uncontrolled mode.\"\n      );\n    }\n  }, [options.value]);\n\n  const beforeChangeRef = useRef(options.beforeChange);\n  beforeChangeRef.current = options.beforeChange;\n  const onChangeRef = useRef(options.onChange);\n  onChangeRef.current = options.onChange;\n\n  const version = useRef(0);\n  const setState = useCallback(async (newValue: T | ((prev: T) => T)) => {\n    const currentVersion = ++version.current;\n\n    const nextValue =\n      typeof newValue === \"function\"\n        ? (newValue as (prev: T) => T)(stateRef.current)\n        : newValue;\n\n    if (beforeChangeRef.current) {\n      const pass = await beforeChangeRef.current(nextValue);\n      if (!pass) {\n        return;\n      }\n    }\n\n    if (currentVersion !== version.current) {\n      return;\n    }\n\n    if (!controlled) {\n      setInner(nextValue);\n    }\n\n    onChangeRef.current?.(nextValue);\n  }, []);\n\n  return [state, setState] as const;\n}\n","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n  // All error codes, starting by 0:\n  function(plugin) {\n    return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n  },\n  function(thing) {\n    return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n  },\n  \"This object has been frozen and should not be mutated\",\n  function(data) {\n    return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n  },\n  \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n  \"Immer forbids circular references\",\n  \"The first or second argument to `produce` must be a function\",\n  \"The third argument to `produce` must be a function or undefined\",\n  \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n  \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n  function(thing) {\n    return `'current' expects a draft, got: ${thing}`;\n  },\n  \"Object.defineProperty() cannot be used on an Immer draft\",\n  \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n  \"Immer only supports deleting array indices\",\n  \"Immer only supports setting array indices and the 'length' property\",\n  function(thing) {\n    return `'original' expects a draft, got: ${thing}`;\n  }\n  // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n  // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n  if (process.env.NODE_ENV !== \"production\") {\n    const e = errors[error];\n    const msg = isFunction(e) ? e.apply(null, args) : e;\n    throw new Error(`[Immer] ${msg}`);\n  }\n  throw new Error(\n    `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n  );\n}\n\n// src/utils/common.ts\nvar O = Object;\nvar getPrototypeOf = O.getPrototypeOf;\nvar CONSTRUCTOR = \"constructor\";\nvar PROTOTYPE = \"prototype\";\nvar CONFIGURABLE = \"configurable\";\nvar ENUMERABLE = \"enumerable\";\nvar WRITABLE = \"writable\";\nvar VALUE = \"value\";\nvar isDraft = (value) => !!value && !!value[DRAFT_STATE];\nfunction isDraftable(value) {\n  if (!value)\n    return false;\n  return isPlainObject(value) || isArray(value) || !!value[DRAFTABLE] || !!value[CONSTRUCTOR]?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = O[PROTOTYPE][CONSTRUCTOR].toString();\nvar cachedCtorStrings = /* @__PURE__ */ new WeakMap();\nfunction isPlainObject(value) {\n  if (!value || !isObjectish(value))\n    return false;\n  const proto = getPrototypeOf(value);\n  if (proto === null || proto === O[PROTOTYPE])\n    return true;\n  const Ctor = O.hasOwnProperty.call(proto, CONSTRUCTOR) && proto[CONSTRUCTOR];\n  if (Ctor === Object)\n    return true;\n  if (!isFunction(Ctor))\n    return false;\n  let ctorString = cachedCtorStrings.get(Ctor);\n  if (ctorString === void 0) {\n    ctorString = Function.toString.call(Ctor);\n    cachedCtorStrings.set(Ctor, ctorString);\n  }\n  return ctorString === objectCtorString;\n}\nfunction original(value) {\n  if (!isDraft(value))\n    die(15, value);\n  return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter, strict = true) {\n  if (getArchtype(obj) === 0 /* Object */) {\n    const keys = strict ? Reflect.ownKeys(obj) : O.keys(obj);\n    keys.forEach((key) => {\n      iter(key, obj[key], obj);\n    });\n  } else {\n    obj.forEach((entry, index) => iter(index, entry, obj));\n  }\n}\nfunction getArchtype(thing) {\n  const state = thing[DRAFT_STATE];\n  return state ? state.type_ : isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nvar has = (thing, prop, type = getArchtype(thing)) => type === 2 /* Map */ ? thing.has(prop) : O[PROTOTYPE].hasOwnProperty.call(thing, prop);\nvar get = (thing, prop, type = getArchtype(thing)) => (\n  // @ts-ignore\n  type === 2 /* Map */ ? thing.get(prop) : thing[prop]\n);\nvar set = (thing, propOrOldValue, value, type = getArchtype(thing)) => {\n  if (type === 2 /* Map */)\n    thing.set(propOrOldValue, value);\n  else if (type === 3 /* Set */) {\n    thing.add(value);\n  } else\n    thing[propOrOldValue] = value;\n};\nfunction is(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\nvar isArray = Array.isArray;\nvar isMap = (target) => target instanceof Map;\nvar isSet = (target) => target instanceof Set;\nvar isObjectish = (target) => typeof target === \"object\";\nvar isFunction = (target) => typeof target === \"function\";\nvar isBoolean = (target) => typeof target === \"boolean\";\nfunction isArrayIndex(value) {\n  const n = +value;\n  return Number.isInteger(n) && String(n) === value;\n}\nvar getProxyDraft = (value) => {\n  if (!isObjectish(value))\n    return null;\n  return value?.[DRAFT_STATE];\n};\nvar latest = (state) => state.copy_ || state.base_;\nvar getValue = (value) => {\n  const proxyDraft = getProxyDraft(value);\n  return proxyDraft ? proxyDraft.copy_ ?? proxyDraft.base_ : value;\n};\nvar getFinalValue = (state) => state.modified_ ? state.copy_ : state.base_;\nfunction shallowCopy(base, strict) {\n  if (isMap(base)) {\n    return new Map(base);\n  }\n  if (isSet(base)) {\n    return new Set(base);\n  }\n  if (isArray(base))\n    return Array[PROTOTYPE].slice.call(base);\n  const isPlain = isPlainObject(base);\n  if (strict === true || strict === \"class_only\" && !isPlain) {\n    const descriptors = O.getOwnPropertyDescriptors(base);\n    delete descriptors[DRAFT_STATE];\n    let keys = Reflect.ownKeys(descriptors);\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      const desc = descriptors[key];\n      if (desc[WRITABLE] === false) {\n        desc[WRITABLE] = true;\n        desc[CONFIGURABLE] = true;\n      }\n      if (desc.get || desc.set)\n        descriptors[key] = {\n          [CONFIGURABLE]: true,\n          [WRITABLE]: true,\n          // could live with !!desc.set as well here...\n          [ENUMERABLE]: desc[ENUMERABLE],\n          [VALUE]: base[key]\n        };\n    }\n    return O.create(getPrototypeOf(base), descriptors);\n  } else {\n    const proto = getPrototypeOf(base);\n    if (proto !== null && isPlain) {\n      return { ...base };\n    }\n    const obj = O.create(proto);\n    return O.assign(obj, base);\n  }\n}\nfunction freeze(obj, deep = false) {\n  if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n    return obj;\n  if (getArchtype(obj) > 1) {\n    O.defineProperties(obj, {\n      set: dontMutateMethodOverride,\n      add: dontMutateMethodOverride,\n      clear: dontMutateMethodOverride,\n      delete: dontMutateMethodOverride\n    });\n  }\n  O.freeze(obj);\n  if (deep)\n    each(\n      obj,\n      (_key, value) => {\n        freeze(value, true);\n      },\n      false\n    );\n  return obj;\n}\nfunction dontMutateFrozenCollections() {\n  die(2);\n}\nvar dontMutateMethodOverride = {\n  [VALUE]: dontMutateFrozenCollections\n};\nfunction isFrozen(obj) {\n  if (obj === null || !isObjectish(obj))\n    return true;\n  return O.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar PluginMapSet = \"MapSet\";\nvar PluginPatches = \"Patches\";\nvar PluginArrayMethods = \"ArrayMethods\";\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n  const plugin = plugins[pluginKey];\n  if (!plugin) {\n    die(0, pluginKey);\n  }\n  return plugin;\n}\nvar isPluginLoaded = (pluginKey) => !!plugins[pluginKey];\nfunction loadPlugin(pluginKey, implementation) {\n  if (!plugins[pluginKey])\n    plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nvar getCurrentScope = () => currentScope;\nvar createScope = (parent_, immer_) => ({\n  drafts_: [],\n  parent_,\n  immer_,\n  // Whenever the modified draft contains a draft from another scope, we\n  // need to prevent auto-freezing so the unowned draft can be finalized.\n  canAutoFreeze_: true,\n  unfinalizedDrafts_: 0,\n  handledSet_: /* @__PURE__ */ new Set(),\n  processedForPatches_: /* @__PURE__ */ new Set(),\n  mapSetPlugin_: isPluginLoaded(PluginMapSet) ? getPlugin(PluginMapSet) : void 0,\n  arrayMethodsPlugin_: isPluginLoaded(PluginArrayMethods) ? getPlugin(PluginArrayMethods) : void 0\n});\nfunction usePatchesInScope(scope, patchListener) {\n  if (patchListener) {\n    scope.patchPlugin_ = getPlugin(PluginPatches);\n    scope.patches_ = [];\n    scope.inversePatches_ = [];\n    scope.patchListener_ = patchListener;\n  }\n}\nfunction revokeScope(scope) {\n  leaveScope(scope);\n  scope.drafts_.forEach(revokeDraft);\n  scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n  if (scope === currentScope) {\n    currentScope = scope.parent_;\n  }\n}\nvar enterScope = (immer2) => currentScope = createScope(currentScope, immer2);\nfunction revokeDraft(draft) {\n  const state = draft[DRAFT_STATE];\n  if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n    state.revoke_();\n  else\n    state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n  scope.unfinalizedDrafts_ = scope.drafts_.length;\n  const baseDraft = scope.drafts_[0];\n  const isReplaced = result !== void 0 && result !== baseDraft;\n  if (isReplaced) {\n    if (baseDraft[DRAFT_STATE].modified_) {\n      revokeScope(scope);\n      die(4);\n    }\n    if (isDraftable(result)) {\n      result = finalize(scope, result);\n    }\n    const { patchPlugin_ } = scope;\n    if (patchPlugin_) {\n      patchPlugin_.generateReplacementPatches_(\n        baseDraft[DRAFT_STATE].base_,\n        result,\n        scope\n      );\n    }\n  } else {\n    result = finalize(scope, baseDraft);\n  }\n  maybeFreeze(scope, result, true);\n  revokeScope(scope);\n  if (scope.patches_) {\n    scope.patchListener_(scope.patches_, scope.inversePatches_);\n  }\n  return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value) {\n  if (isFrozen(value))\n    return value;\n  const state = value[DRAFT_STATE];\n  if (!state) {\n    const finalValue = handleValue(value, rootScope.handledSet_, rootScope);\n    return finalValue;\n  }\n  if (!isSameScope(state, rootScope)) {\n    return value;\n  }\n  if (!state.modified_) {\n    return state.base_;\n  }\n  if (!state.finalized_) {\n    const { callbacks_ } = state;\n    if (callbacks_) {\n      while (callbacks_.length > 0) {\n        const callback = callbacks_.pop();\n        callback(rootScope);\n      }\n    }\n    generatePatchesAndFinalize(state, rootScope);\n  }\n  return state.copy_;\n}\nfunction maybeFreeze(scope, value, deep = false) {\n  if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n    freeze(value, deep);\n  }\n}\nfunction markStateFinalized(state) {\n  state.finalized_ = true;\n  state.scope_.unfinalizedDrafts_--;\n}\nvar isSameScope = (state, rootScope) => state.scope_ === rootScope;\nvar EMPTY_LOCATIONS_RESULT = [];\nfunction updateDraftInParent(parent, draftValue, finalizedValue, originalKey) {\n  const parentCopy = latest(parent);\n  const parentType = parent.type_;\n  if (originalKey !== void 0) {\n    const currentValue = get(parentCopy, originalKey, parentType);\n    if (currentValue === draftValue) {\n      set(parentCopy, originalKey, finalizedValue, parentType);\n      return;\n    }\n  }\n  if (!parent.draftLocations_) {\n    const draftLocations = parent.draftLocations_ = /* @__PURE__ */ new Map();\n    each(parentCopy, (key, value) => {\n      if (isDraft(value)) {\n        const keys = draftLocations.get(value) || [];\n        keys.push(key);\n        draftLocations.set(value, keys);\n      }\n    });\n  }\n  const locations = parent.draftLocations_.get(draftValue) ?? EMPTY_LOCATIONS_RESULT;\n  for (const location of locations) {\n    set(parentCopy, location, finalizedValue, parentType);\n  }\n}\nfunction registerChildFinalizationCallback(parent, child, key) {\n  parent.callbacks_.push(function childCleanup(rootScope) {\n    const state = child;\n    if (!state || !isSameScope(state, rootScope)) {\n      return;\n    }\n    rootScope.mapSetPlugin_?.fixSetContents(state);\n    const finalizedValue = getFinalValue(state);\n    updateDraftInParent(parent, state.draft_ ?? state, finalizedValue, key);\n    generatePatchesAndFinalize(state, rootScope);\n  });\n}\nfunction generatePatchesAndFinalize(state, rootScope) {\n  const shouldFinalize = state.modified_ && !state.finalized_ && (state.type_ === 3 /* Set */ || state.type_ === 1 /* Array */ && state.allIndicesReassigned_ || (state.assigned_?.size ?? 0) > 0);\n  if (shouldFinalize) {\n    const { patchPlugin_ } = rootScope;\n    if (patchPlugin_) {\n      const basePath = patchPlugin_.getPath(state);\n      if (basePath) {\n        patchPlugin_.generatePatches_(state, basePath, rootScope);\n      }\n    }\n    markStateFinalized(state);\n  }\n}\nfunction handleCrossReference(target, key, value) {\n  const { scope_ } = target;\n  if (isDraft(value)) {\n    const state = value[DRAFT_STATE];\n    if (isSameScope(state, scope_)) {\n      state.callbacks_.push(function crossReferenceCleanup() {\n        prepareCopy(target);\n        const finalizedValue = getFinalValue(state);\n        updateDraftInParent(target, value, finalizedValue, key);\n      });\n    }\n  } else if (isDraftable(value)) {\n    target.callbacks_.push(function nestedDraftCleanup() {\n      const targetCopy = latest(target);\n      if (target.type_ === 3 /* Set */) {\n        if (targetCopy.has(value)) {\n          handleValue(value, scope_.handledSet_, scope_);\n        }\n      } else {\n        if (get(targetCopy, key, target.type_) === value) {\n          if (scope_.drafts_.length > 1 && (target.assigned_.get(key) ?? false) === true && target.copy_) {\n            handleValue(\n              get(target.copy_, key, target.type_),\n              scope_.handledSet_,\n              scope_\n            );\n          }\n        }\n      }\n    });\n  }\n}\nfunction handleValue(target, handledSet, rootScope) {\n  if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n    return target;\n  }\n  if (isDraft(target) || handledSet.has(target) || !isDraftable(target) || isFrozen(target)) {\n    return target;\n  }\n  handledSet.add(target);\n  each(target, (key, value) => {\n    if (isDraft(value)) {\n      const state = value[DRAFT_STATE];\n      if (isSameScope(state, rootScope)) {\n        const updatedValue = getFinalValue(state);\n        set(target, key, updatedValue, target.type_);\n        markStateFinalized(state);\n      }\n    } else if (isDraftable(value)) {\n      handleValue(value, handledSet, rootScope);\n    }\n  });\n  return target;\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n  const baseIsArray = isArray(base);\n  const state = {\n    type_: baseIsArray ? 1 /* Array */ : 0 /* Object */,\n    // Track which produce call this is associated with.\n    scope_: parent ? parent.scope_ : getCurrentScope(),\n    // True for both shallow and deep changes.\n    modified_: false,\n    // Used during finalization.\n    finalized_: false,\n    // Track which properties have been assigned (true) or deleted (false).\n    // actually instantiated in `prepareCopy()`\n    assigned_: void 0,\n    // The parent draft state.\n    parent_: parent,\n    // The base state.\n    base_: base,\n    // The base proxy.\n    draft_: null,\n    // set below\n    // The base copy with any updated values.\n    copy_: null,\n    // Called by the `produce` function.\n    revoke_: null,\n    isManual_: false,\n    // `callbacks` actually gets assigned in `createProxy`\n    callbacks_: void 0\n  };\n  let target = state;\n  let traps = objectTraps;\n  if (baseIsArray) {\n    target = [state];\n    traps = arrayTraps;\n  }\n  const { revoke, proxy } = Proxy.revocable(target, traps);\n  state.draft_ = proxy;\n  state.revoke_ = revoke;\n  return [proxy, state];\n}\nvar objectTraps = {\n  get(state, prop) {\n    if (prop === DRAFT_STATE)\n      return state;\n    let arrayPlugin = state.scope_.arrayMethodsPlugin_;\n    const isArrayWithStringProp = state.type_ === 1 /* Array */ && typeof prop === \"string\";\n    if (isArrayWithStringProp) {\n      if (arrayPlugin?.isArrayOperationMethod(prop)) {\n        return arrayPlugin.createMethodInterceptor(state, prop);\n      }\n    }\n    const source = latest(state);\n    if (!has(source, prop, state.type_)) {\n      return readPropFromProto(state, source, prop);\n    }\n    const value = source[prop];\n    if (state.finalized_ || !isDraftable(value)) {\n      return value;\n    }\n    if (isArrayWithStringProp && state.operationMethod && arrayPlugin?.isMutatingArrayMethod(\n      state.operationMethod\n    ) && isArrayIndex(prop)) {\n      return value;\n    }\n    if (value === peek(state.base_, prop)) {\n      prepareCopy(state);\n      const childKey = state.type_ === 1 /* Array */ ? +prop : prop;\n      const childDraft = createProxy(state.scope_, value, state, childKey);\n      return state.copy_[childKey] = childDraft;\n    }\n    return value;\n  },\n  has(state, prop) {\n    return prop in latest(state);\n  },\n  ownKeys(state) {\n    return Reflect.ownKeys(latest(state));\n  },\n  set(state, prop, value) {\n    const desc = getDescriptorFromProto(latest(state), prop);\n    if (desc?.set) {\n      desc.set.call(state.draft_, value);\n      return true;\n    }\n    if (!state.modified_) {\n      const current2 = peek(latest(state), prop);\n      const currentState = current2?.[DRAFT_STATE];\n      if (currentState && currentState.base_ === value) {\n        state.copy_[prop] = value;\n        state.assigned_.set(prop, false);\n        return true;\n      }\n      if (is(value, current2) && (value !== void 0 || has(state.base_, prop, state.type_)))\n        return true;\n      prepareCopy(state);\n      markChanged(state);\n    }\n    if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n    (value !== void 0 || prop in state.copy_) || // special case: NaN\n    Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n      return true;\n    state.copy_[prop] = value;\n    state.assigned_.set(prop, true);\n    handleCrossReference(state, prop, value);\n    return true;\n  },\n  deleteProperty(state, prop) {\n    prepareCopy(state);\n    if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n      state.assigned_.set(prop, false);\n      markChanged(state);\n    } else {\n      state.assigned_.delete(prop);\n    }\n    if (state.copy_) {\n      delete state.copy_[prop];\n    }\n    return true;\n  },\n  // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n  // the same guarantee in ES5 mode.\n  getOwnPropertyDescriptor(state, prop) {\n    const owner = latest(state);\n    const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n    if (!desc)\n      return desc;\n    return {\n      [WRITABLE]: true,\n      [CONFIGURABLE]: state.type_ !== 1 /* Array */ || prop !== \"length\",\n      [ENUMERABLE]: desc[ENUMERABLE],\n      [VALUE]: owner[prop]\n    };\n  },\n  defineProperty() {\n    die(11);\n  },\n  getPrototypeOf(state) {\n    return getPrototypeOf(state.base_);\n  },\n  setPrototypeOf() {\n    die(12);\n  }\n};\nvar arrayTraps = {};\nfor (let key in objectTraps) {\n  let fn = objectTraps[key];\n  arrayTraps[key] = function() {\n    const args = arguments;\n    args[0] = args[0][0];\n    return fn.apply(this, args);\n  };\n}\narrayTraps.deleteProperty = function(state, prop) {\n  if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n    die(13);\n  return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n  if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n    die(14);\n  return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n  const state = draft[DRAFT_STATE];\n  const source = state ? latest(state) : draft;\n  return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n  const desc = getDescriptorFromProto(source, prop);\n  return desc ? VALUE in desc ? desc[VALUE] : (\n    // This is a very special case, if the prop is a getter defined by the\n    // prototype, we should invoke it with the draft as context!\n    desc.get?.call(state.draft_)\n  ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n  if (!(prop in source))\n    return void 0;\n  let proto = getPrototypeOf(source);\n  while (proto) {\n    const desc = Object.getOwnPropertyDescriptor(proto, prop);\n    if (desc)\n      return desc;\n    proto = getPrototypeOf(proto);\n  }\n  return void 0;\n}\nfunction markChanged(state) {\n  if (!state.modified_) {\n    state.modified_ = true;\n    if (state.parent_) {\n      markChanged(state.parent_);\n    }\n  }\n}\nfunction prepareCopy(state) {\n  if (!state.copy_) {\n    state.assigned_ = /* @__PURE__ */ new Map();\n    state.copy_ = shallowCopy(\n      state.base_,\n      state.scope_.immer_.useStrictShallowCopy_\n    );\n  }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n  constructor(config) {\n    this.autoFreeze_ = true;\n    this.useStrictShallowCopy_ = false;\n    this.useStrictIteration_ = false;\n    /**\n     * The `produce` function takes a value and a \"recipe function\" (whose\n     * return value often depends on the base state). The recipe function is\n     * free to mutate its first argument however it wants. All mutations are\n     * only ever applied to a __copy__ of the base state.\n     *\n     * Pass only a function to create a \"curried producer\" which relieves you\n     * from passing the recipe function every time.\n     *\n     * Only plain objects and arrays are made mutable. All other objects are\n     * considered uncopyable.\n     *\n     * Note: This function is __bound__ to its `Immer` instance.\n     *\n     * @param {any} base - the initial state\n     * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n     * @param {Function} patchListener - optional function that will be called with all the patches produced here\n     * @returns {any} a new state, or the initial state if nothing was modified\n     */\n    this.produce = (base, recipe, patchListener) => {\n      if (isFunction(base) && !isFunction(recipe)) {\n        const defaultBase = recipe;\n        recipe = base;\n        const self = this;\n        return function curriedProduce(base2 = defaultBase, ...args) {\n          return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n        };\n      }\n      if (!isFunction(recipe))\n        die(6);\n      if (patchListener !== void 0 && !isFunction(patchListener))\n        die(7);\n      let result;\n      if (isDraftable(base)) {\n        const scope = enterScope(this);\n        const proxy = createProxy(scope, base, void 0);\n        let hasError = true;\n        try {\n          result = recipe(proxy);\n          hasError = false;\n        } finally {\n          if (hasError)\n            revokeScope(scope);\n          else\n            leaveScope(scope);\n        }\n        usePatchesInScope(scope, patchListener);\n        return processResult(result, scope);\n      } else if (!base || !isObjectish(base)) {\n        result = recipe(base);\n        if (result === void 0)\n          result = base;\n        if (result === NOTHING)\n          result = void 0;\n        if (this.autoFreeze_)\n          freeze(result, true);\n        if (patchListener) {\n          const p = [];\n          const ip = [];\n          getPlugin(PluginPatches).generateReplacementPatches_(base, result, {\n            patches_: p,\n            inversePatches_: ip\n          });\n          patchListener(p, ip);\n        }\n        return result;\n      } else\n        die(1, base);\n    };\n    this.produceWithPatches = (base, recipe) => {\n      if (isFunction(base)) {\n        return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n      }\n      let patches, inversePatches;\n      const result = this.produce(base, recipe, (p, ip) => {\n        patches = p;\n        inversePatches = ip;\n      });\n      return [result, patches, inversePatches];\n    };\n    if (isBoolean(config?.autoFreeze))\n      this.setAutoFreeze(config.autoFreeze);\n    if (isBoolean(config?.useStrictShallowCopy))\n      this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n    if (isBoolean(config?.useStrictIteration))\n      this.setUseStrictIteration(config.useStrictIteration);\n  }\n  createDraft(base) {\n    if (!isDraftable(base))\n      die(8);\n    if (isDraft(base))\n      base = current(base);\n    const scope = enterScope(this);\n    const proxy = createProxy(scope, base, void 0);\n    proxy[DRAFT_STATE].isManual_ = true;\n    leaveScope(scope);\n    return proxy;\n  }\n  finishDraft(draft, patchListener) {\n    const state = draft && draft[DRAFT_STATE];\n    if (!state || !state.isManual_)\n      die(9);\n    const { scope_: scope } = state;\n    usePatchesInScope(scope, patchListener);\n    return processResult(void 0, scope);\n  }\n  /**\n   * Pass true to automatically freeze all copies created by Immer.\n   *\n   * By default, auto-freezing is enabled.\n   */\n  setAutoFreeze(value) {\n    this.autoFreeze_ = value;\n  }\n  /**\n   * Pass true to enable strict shallow copy.\n   *\n   * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n   */\n  setUseStrictShallowCopy(value) {\n    this.useStrictShallowCopy_ = value;\n  }\n  /**\n   * Pass false to use faster iteration that skips non-enumerable properties\n   * but still handles symbols for compatibility.\n   *\n   * By default, strict iteration is enabled (includes all own properties).\n   */\n  setUseStrictIteration(value) {\n    this.useStrictIteration_ = value;\n  }\n  shouldUseStrictIteration() {\n    return this.useStrictIteration_;\n  }\n  applyPatches(base, patches) {\n    let i;\n    for (i = patches.length - 1; i >= 0; i--) {\n      const patch = patches[i];\n      if (patch.path.length === 0 && patch.op === \"replace\") {\n        base = patch.value;\n        break;\n      }\n    }\n    if (i > -1) {\n      patches = patches.slice(i + 1);\n    }\n    const applyPatchesImpl = getPlugin(PluginPatches).applyPatches_;\n    if (isDraft(base)) {\n      return applyPatchesImpl(base, patches);\n    }\n    return this.produce(\n      base,\n      (draft) => applyPatchesImpl(draft, patches)\n    );\n  }\n};\nfunction createProxy(rootScope, value, parent, key) {\n  const [draft, state] = isMap(value) ? getPlugin(PluginMapSet).proxyMap_(value, parent) : isSet(value) ? getPlugin(PluginMapSet).proxySet_(value, parent) : createProxyProxy(value, parent);\n  const scope = parent?.scope_ ?? getCurrentScope();\n  scope.drafts_.push(draft);\n  state.callbacks_ = parent?.callbacks_ ?? [];\n  state.key_ = key;\n  if (parent && key !== void 0) {\n    registerChildFinalizationCallback(parent, state, key);\n  } else {\n    state.callbacks_.push(function rootDraftCleanup(rootScope2) {\n      rootScope2.mapSetPlugin_?.fixSetContents(state);\n      const { patchPlugin_ } = rootScope2;\n      if (state.modified_ && patchPlugin_) {\n        patchPlugin_.generatePatches_(state, [], rootScope2);\n      }\n    });\n  }\n  return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n  if (!isDraft(value))\n    die(10, value);\n  return currentImpl(value);\n}\nfunction currentImpl(value) {\n  if (!isDraftable(value) || isFrozen(value))\n    return value;\n  const state = value[DRAFT_STATE];\n  let copy;\n  let strict = true;\n  if (state) {\n    if (!state.modified_)\n      return state.base_;\n    state.finalized_ = true;\n    copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n    strict = state.scope_.immer_.shouldUseStrictIteration();\n  } else {\n    copy = shallowCopy(value, true);\n  }\n  each(\n    copy,\n    (key, childValue) => {\n      set(copy, key, currentImpl(childValue));\n    },\n    strict\n  );\n  if (state) {\n    state.finalized_ = false;\n  }\n  return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n  const errorOffset = 16;\n  if (process.env.NODE_ENV !== \"production\") {\n    errors.push(\n      'Sets cannot have \"replace\" patches.',\n      function(op) {\n        return \"Unsupported patch operation: \" + op;\n      },\n      function(path) {\n        return \"Cannot apply patch, path doesn't resolve: \" + path;\n      },\n      \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n    );\n  }\n  function getPath(state, path = []) {\n    if (state.key_ !== void 0) {\n      const parentCopy = state.parent_.copy_ ?? state.parent_.base_;\n      const proxyDraft = getProxyDraft(get(parentCopy, state.key_));\n      const valueAtKey = get(parentCopy, state.key_);\n      if (valueAtKey === void 0) {\n        return null;\n      }\n      if (valueAtKey !== state.draft_ && valueAtKey !== state.base_ && valueAtKey !== state.copy_) {\n        return null;\n      }\n      if (proxyDraft != null && proxyDraft.base_ !== state.base_) {\n        return null;\n      }\n      const isSet2 = state.parent_.type_ === 3 /* Set */;\n      let key;\n      if (isSet2) {\n        const setParent = state.parent_;\n        key = Array.from(setParent.drafts_.keys()).indexOf(state.key_);\n      } else {\n        key = state.key_;\n      }\n      if (!(isSet2 && parentCopy.size > key || has(parentCopy, key))) {\n        return null;\n      }\n      path.push(key);\n    }\n    if (state.parent_) {\n      return getPath(state.parent_, path);\n    }\n    path.reverse();\n    try {\n      resolvePath(state.copy_, path);\n    } catch (e) {\n      return null;\n    }\n    return path;\n  }\n  function resolvePath(base, path) {\n    let current2 = base;\n    for (let i = 0; i < path.length - 1; i++) {\n      const key = path[i];\n      current2 = get(current2, key);\n      if (!isObjectish(current2) || current2 === null) {\n        throw new Error(`Cannot resolve path at '${path.join(\"/\")}'`);\n      }\n    }\n    return current2;\n  }\n  const REPLACE = \"replace\";\n  const ADD = \"add\";\n  const REMOVE = \"remove\";\n  function generatePatches_(state, basePath, scope) {\n    if (state.scope_.processedForPatches_.has(state)) {\n      return;\n    }\n    state.scope_.processedForPatches_.add(state);\n    const { patches_, inversePatches_ } = scope;\n    switch (state.type_) {\n      case 0 /* Object */:\n      case 2 /* Map */:\n        return generatePatchesFromAssigned(\n          state,\n          basePath,\n          patches_,\n          inversePatches_\n        );\n      case 1 /* Array */:\n        return generateArrayPatches(\n          state,\n          basePath,\n          patches_,\n          inversePatches_\n        );\n      case 3 /* Set */:\n        return generateSetPatches(\n          state,\n          basePath,\n          patches_,\n          inversePatches_\n        );\n    }\n  }\n  function generateArrayPatches(state, basePath, patches, inversePatches) {\n    let { base_, assigned_ } = state;\n    let copy_ = state.copy_;\n    if (copy_.length < base_.length) {\n      ;\n      [base_, copy_] = [copy_, base_];\n      [patches, inversePatches] = [inversePatches, patches];\n    }\n    const allReassigned = state.allIndicesReassigned_ === true;\n    for (let i = 0; i < base_.length; i++) {\n      const copiedItem = copy_[i];\n      const baseItem = base_[i];\n      const isAssigned = allReassigned || assigned_?.get(i.toString());\n      if (isAssigned && copiedItem !== baseItem) {\n        const childState = copiedItem?.[DRAFT_STATE];\n        if (childState && childState.modified_) {\n          continue;\n        }\n        const path = basePath.concat([i]);\n        patches.push({\n          op: REPLACE,\n          path,\n          // Need to maybe clone it, as it can in fact be the original value\n          // due to the base/copy inversion at the start of this function\n          value: clonePatchValueIfNeeded(copiedItem)\n        });\n        inversePatches.push({\n          op: REPLACE,\n          path,\n          value: clonePatchValueIfNeeded(baseItem)\n        });\n      }\n    }\n    for (let i = base_.length; i < copy_.length; i++) {\n      const path = basePath.concat([i]);\n      patches.push({\n        op: ADD,\n        path,\n        // Need to maybe clone it, as it can in fact be the original value\n        // due to the base/copy inversion at the start of this function\n        value: clonePatchValueIfNeeded(copy_[i])\n      });\n    }\n    for (let i = copy_.length - 1; base_.length <= i; --i) {\n      const path = basePath.concat([i]);\n      inversePatches.push({\n        op: REMOVE,\n        path\n      });\n    }\n  }\n  function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n    const { base_, copy_, type_ } = state;\n    each(state.assigned_, (key, assignedValue) => {\n      const origValue = get(base_, key, type_);\n      const value = get(copy_, key, type_);\n      const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n      if (origValue === value && op === REPLACE)\n        return;\n      const path = basePath.concat(key);\n      patches.push(\n        op === REMOVE ? { op, path } : { op, path, value: clonePatchValueIfNeeded(value) }\n      );\n      inversePatches.push(\n        op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n      );\n    });\n  }\n  function generateSetPatches(state, basePath, patches, inversePatches) {\n    let { base_, copy_ } = state;\n    let i = 0;\n    base_.forEach((value) => {\n      if (!copy_.has(value)) {\n        const path = basePath.concat([i]);\n        patches.push({\n          op: REMOVE,\n          path,\n          value\n        });\n        inversePatches.unshift({\n          op: ADD,\n          path,\n          value\n        });\n      }\n      i++;\n    });\n    i = 0;\n    copy_.forEach((value) => {\n      if (!base_.has(value)) {\n        const path = basePath.concat([i]);\n        patches.push({\n          op: ADD,\n          path,\n          value\n        });\n        inversePatches.unshift({\n          op: REMOVE,\n          path,\n          value\n        });\n      }\n      i++;\n    });\n  }\n  function generateReplacementPatches_(baseValue, replacement, scope) {\n    const { patches_, inversePatches_ } = scope;\n    patches_.push({\n      op: REPLACE,\n      path: [],\n      value: replacement === NOTHING ? void 0 : replacement\n    });\n    inversePatches_.push({\n      op: REPLACE,\n      path: [],\n      value: baseValue\n    });\n  }\n  function applyPatches_(draft, patches) {\n    patches.forEach((patch) => {\n      const { path, op } = patch;\n      let base = draft;\n      for (let i = 0; i < path.length - 1; i++) {\n        const parentType = getArchtype(base);\n        let p = path[i];\n        if (typeof p !== \"string\" && typeof p !== \"number\") {\n          p = \"\" + p;\n        }\n        if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === CONSTRUCTOR))\n          die(errorOffset + 3);\n        if (isFunction(base) && p === PROTOTYPE)\n          die(errorOffset + 3);\n        base = get(base, p);\n        if (!isObjectish(base))\n          die(errorOffset + 2, path.join(\"/\"));\n      }\n      const type = getArchtype(base);\n      const value = deepClonePatchValue(patch.value);\n      const key = path[path.length - 1];\n      switch (op) {\n        case REPLACE:\n          switch (type) {\n            case 2 /* Map */:\n              return base.set(key, value);\n            case 3 /* Set */:\n              die(errorOffset);\n            default:\n              return base[key] = value;\n          }\n        case ADD:\n          switch (type) {\n            case 1 /* Array */:\n              return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n            case 2 /* Map */:\n              return base.set(key, value);\n            case 3 /* Set */:\n              return base.add(value);\n            default:\n              return base[key] = value;\n          }\n        case REMOVE:\n          switch (type) {\n            case 1 /* Array */:\n              return base.splice(key, 1);\n            case 2 /* Map */:\n              return base.delete(key);\n            case 3 /* Set */:\n              return base.delete(patch.value);\n            default:\n              return delete base[key];\n          }\n        default:\n          die(errorOffset + 1, op);\n      }\n    });\n    return draft;\n  }\n  function deepClonePatchValue(obj) {\n    if (!isDraftable(obj))\n      return obj;\n    if (isArray(obj))\n      return obj.map(deepClonePatchValue);\n    if (isMap(obj))\n      return new Map(\n        Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n      );\n    if (isSet(obj))\n      return new Set(Array.from(obj).map(deepClonePatchValue));\n    const cloned = Object.create(getPrototypeOf(obj));\n    for (const key in obj)\n      cloned[key] = deepClonePatchValue(obj[key]);\n    if (has(obj, DRAFTABLE))\n      cloned[DRAFTABLE] = obj[DRAFTABLE];\n    return cloned;\n  }\n  function clonePatchValueIfNeeded(obj) {\n    if (isDraft(obj)) {\n      return deepClonePatchValue(obj);\n    } else\n      return obj;\n  }\n  loadPlugin(PluginPatches, {\n    applyPatches_,\n    generatePatches_,\n    generateReplacementPatches_,\n    getPath\n  });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n  class DraftMap extends Map {\n    constructor(target, parent) {\n      super();\n      this[DRAFT_STATE] = {\n        type_: 2 /* Map */,\n        parent_: parent,\n        scope_: parent ? parent.scope_ : getCurrentScope(),\n        modified_: false,\n        finalized_: false,\n        copy_: void 0,\n        assigned_: void 0,\n        base_: target,\n        draft_: this,\n        isManual_: false,\n        revoked_: false,\n        callbacks_: []\n      };\n    }\n    get size() {\n      return latest(this[DRAFT_STATE]).size;\n    }\n    has(key) {\n      return latest(this[DRAFT_STATE]).has(key);\n    }\n    set(key, value) {\n      const state = this[DRAFT_STATE];\n      assertUnrevoked(state);\n      if (!latest(state).has(key) || latest(state).get(key) !== value) {\n        prepareMapCopy(state);\n        markChanged(state);\n        state.assigned_.set(key, true);\n        state.copy_.set(key, value);\n        state.assigned_.set(key, true);\n        handleCrossReference(state, key, value);\n      }\n      return this;\n    }\n    delete(key) {\n      if (!this.has(key)) {\n        return false;\n      }\n      const state = this[DRAFT_STATE];\n      assertUnrevoked(state);\n      prepareMapCopy(state);\n      markChanged(state);\n      if (state.base_.has(key)) {\n        state.assigned_.set(key, false);\n      } else {\n        state.assigned_.delete(key);\n      }\n      state.copy_.delete(key);\n      return true;\n    }\n    clear() {\n      const state = this[DRAFT_STATE];\n      assertUnrevoked(state);\n      if (latest(state).size) {\n        prepareMapCopy(state);\n        markChanged(state);\n        state.assigned_ = /* @__PURE__ */ new Map();\n        each(state.base_, (key) => {\n          state.assigned_.set(key, false);\n        });\n        state.copy_.clear();\n      }\n    }\n    forEach(cb, thisArg) {\n      const state = this[DRAFT_STATE];\n      latest(state).forEach((_value, key, _map) => {\n        cb.call(thisArg, this.get(key), key, this);\n      });\n    }\n    get(key) {\n      const state = this[DRAFT_STATE];\n      assertUnrevoked(state);\n      const value = latest(state).get(key);\n      if (state.finalized_ || !isDraftable(value)) {\n        return value;\n      }\n      if (value !== state.base_.get(key)) {\n        return value;\n      }\n      const draft = createProxy(state.scope_, value, state, key);\n      prepareMapCopy(state);\n      state.copy_.set(key, draft);\n      return draft;\n    }\n    keys() {\n      return latest(this[DRAFT_STATE]).keys();\n    }\n    values() {\n      const iterator = this.keys();\n      return {\n        [Symbol.iterator]: () => this.values(),\n        next: () => {\n          const r = iterator.next();\n          if (r.done)\n            return r;\n          const value = this.get(r.value);\n          return {\n            done: false,\n            value\n          };\n        }\n      };\n    }\n    entries() {\n      const iterator = this.keys();\n      return {\n        [Symbol.iterator]: () => this.entries(),\n        next: () => {\n          const r = iterator.next();\n          if (r.done)\n            return r;\n          const value = this.get(r.value);\n          return {\n            done: false,\n            value: [r.value, value]\n          };\n        }\n      };\n    }\n    [(DRAFT_STATE, Symbol.iterator)]() {\n      return this.entries();\n    }\n  }\n  function proxyMap_(target, parent) {\n    const map = new DraftMap(target, parent);\n    return [map, map[DRAFT_STATE]];\n  }\n  function prepareMapCopy(state) {\n    if (!state.copy_) {\n      state.assigned_ = /* @__PURE__ */ new Map();\n      state.copy_ = new Map(state.base_);\n    }\n  }\n  class DraftSet extends Set {\n    constructor(target, parent) {\n      super();\n      this[DRAFT_STATE] = {\n        type_: 3 /* Set */,\n        parent_: parent,\n        scope_: parent ? parent.scope_ : getCurrentScope(),\n        modified_: false,\n        finalized_: false,\n        copy_: void 0,\n        base_: target,\n        draft_: this,\n        drafts_: /* @__PURE__ */ new Map(),\n        revoked_: false,\n        isManual_: false,\n        assigned_: void 0,\n        callbacks_: []\n      };\n    }\n    get size() {\n      return latest(this[DRAFT_STATE]).size;\n    }\n    has(value) {\n      const state = this[DRAFT_STATE];\n      assertUnrevoked(state);\n      if (!state.copy_) {\n        return state.base_.has(value);\n      }\n      if (state.copy_.has(value))\n        return true;\n      if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n        return true;\n      return false;\n    }\n    add(value) {\n      const state = this[DRAFT_STATE];\n      assertUnrevoked(state);\n      if (!this.has(value)) {\n        prepareSetCopy(state);\n        markChanged(state);\n        state.copy_.add(value);\n        handleCrossReference(state, value, value);\n      }\n      return this;\n    }\n    delete(value) {\n      if (!this.has(value)) {\n        return false;\n      }\n      const state = this[DRAFT_STATE];\n      assertUnrevoked(state);\n      prepareSetCopy(state);\n      markChanged(state);\n      return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n        /* istanbul ignore next */\n        false\n      ));\n    }\n    clear() {\n      const state = this[DRAFT_STATE];\n      assertUnrevoked(state);\n      if (latest(state).size) {\n        prepareSetCopy(state);\n        markChanged(state);\n        state.copy_.clear();\n      }\n    }\n    values() {\n      const state = this[DRAFT_STATE];\n      assertUnrevoked(state);\n      prepareSetCopy(state);\n      return state.copy_.values();\n    }\n    entries() {\n      const state = this[DRAFT_STATE];\n      assertUnrevoked(state);\n      prepareSetCopy(state);\n      return state.copy_.entries();\n    }\n    keys() {\n      return this.values();\n    }\n    [(DRAFT_STATE, Symbol.iterator)]() {\n      return this.values();\n    }\n    forEach(cb, thisArg) {\n      const iterator = this.values();\n      let result = iterator.next();\n      while (!result.done) {\n        cb.call(thisArg, result.value, result.value, this);\n        result = iterator.next();\n      }\n    }\n  }\n  function proxySet_(target, parent) {\n    const set2 = new DraftSet(target, parent);\n    return [set2, set2[DRAFT_STATE]];\n  }\n  function prepareSetCopy(state) {\n    if (!state.copy_) {\n      state.copy_ = /* @__PURE__ */ new Set();\n      state.base_.forEach((value) => {\n        if (isDraftable(value)) {\n          const draft = createProxy(state.scope_, value, state, value);\n          state.drafts_.set(value, draft);\n          state.copy_.add(draft);\n        } else {\n          state.copy_.add(value);\n        }\n      });\n    }\n  }\n  function assertUnrevoked(state) {\n    if (state.revoked_)\n      die(3, JSON.stringify(latest(state)));\n  }\n  function fixSetContents(target) {\n    if (target.type_ === 3 /* Set */ && target.copy_) {\n      const copy = new Set(target.copy_);\n      target.copy_.clear();\n      copy.forEach((value) => {\n        target.copy_.add(getValue(value));\n      });\n    }\n  }\n  loadPlugin(PluginMapSet, { proxyMap_, proxySet_, fixSetContents });\n}\n\n// src/plugins/arrayMethods.ts\nfunction enableArrayMethods() {\n  const SHIFTING_METHODS = /* @__PURE__ */ new Set([\"shift\", \"unshift\"]);\n  const QUEUE_METHODS = /* @__PURE__ */ new Set([\"push\", \"pop\"]);\n  const RESULT_RETURNING_METHODS = /* @__PURE__ */ new Set([\n    ...QUEUE_METHODS,\n    ...SHIFTING_METHODS\n  ]);\n  const REORDERING_METHODS = /* @__PURE__ */ new Set([\"reverse\", \"sort\"]);\n  const MUTATING_METHODS = /* @__PURE__ */ new Set([\n    ...RESULT_RETURNING_METHODS,\n    ...REORDERING_METHODS,\n    \"splice\"\n  ]);\n  const FIND_METHODS = /* @__PURE__ */ new Set([\"find\", \"findLast\"]);\n  const NON_MUTATING_METHODS = /* @__PURE__ */ new Set([\n    \"filter\",\n    \"slice\",\n    \"concat\",\n    \"flat\",\n    ...FIND_METHODS,\n    \"findIndex\",\n    \"findLastIndex\",\n    \"some\",\n    \"every\",\n    \"indexOf\",\n    \"lastIndexOf\",\n    \"includes\",\n    \"join\",\n    \"toString\",\n    \"toLocaleString\"\n  ]);\n  function isMutatingArrayMethod(method) {\n    return MUTATING_METHODS.has(method);\n  }\n  function isNonMutatingArrayMethod(method) {\n    return NON_MUTATING_METHODS.has(method);\n  }\n  function isArrayOperationMethod(method) {\n    return isMutatingArrayMethod(method) || isNonMutatingArrayMethod(method);\n  }\n  function enterOperation(state, method) {\n    state.operationMethod = method;\n  }\n  function exitOperation(state) {\n    state.operationMethod = void 0;\n  }\n  function executeArrayMethod(state, operation, markLength = true) {\n    prepareCopy(state);\n    const result = operation();\n    markChanged(state);\n    if (markLength)\n      state.assigned_.set(\"length\", true);\n    return result;\n  }\n  function markAllIndicesReassigned(state) {\n    state.allIndicesReassigned_ = true;\n  }\n  function normalizeSliceIndex(index, length) {\n    if (index < 0) {\n      return Math.max(length + index, 0);\n    }\n    return Math.min(index, length);\n  }\n  function handleInsertedValues(state, startIndex, values) {\n    for (let i = 0; i < values.length; i++) {\n      const index = startIndex + i;\n      state.assigned_.set(index, true);\n      handleCrossReference(state, index, values[i]);\n    }\n  }\n  function handleSimpleOperation(state, method, args) {\n    return executeArrayMethod(state, () => {\n      const lengthBefore = state.copy_.length;\n      const result = state.copy_[method](...args);\n      if (SHIFTING_METHODS.has(method)) {\n        markAllIndicesReassigned(state);\n      }\n      if (method === \"push\" && args.length > 0) {\n        handleInsertedValues(state, lengthBefore, args);\n      } else if (method === \"unshift\" && args.length > 0) {\n        handleInsertedValues(state, 0, args);\n      }\n      return RESULT_RETURNING_METHODS.has(method) ? result : state.draft_;\n    });\n  }\n  function handleReorderingOperation(state, method, args) {\n    return executeArrayMethod(\n      state,\n      () => {\n        ;\n        state.copy_[method](...args);\n        markAllIndicesReassigned(state);\n        return state.draft_;\n      },\n      false\n    );\n  }\n  function createMethodInterceptor(state, originalMethod) {\n    return function interceptedMethod(...args) {\n      const method = originalMethod;\n      enterOperation(state, method);\n      try {\n        if (isMutatingArrayMethod(method)) {\n          if (RESULT_RETURNING_METHODS.has(method)) {\n            return handleSimpleOperation(state, method, args);\n          }\n          if (REORDERING_METHODS.has(method)) {\n            return handleReorderingOperation(state, method, args);\n          }\n          if (method === \"splice\") {\n            const res = executeArrayMethod(\n              state,\n              () => state.copy_.splice(...args)\n            );\n            markAllIndicesReassigned(state);\n            if (args.length > 2) {\n              const startIndex = normalizeSliceIndex(\n                args[0] ?? 0,\n                state.copy_.length\n              );\n              handleInsertedValues(state, startIndex, args.slice(2));\n            }\n            return res;\n          }\n        } else {\n          return handleNonMutatingOperation(state, method, args);\n        }\n      } finally {\n        exitOperation(state);\n      }\n    };\n  }\n  function handleNonMutatingOperation(state, method, args) {\n    const source = latest(state);\n    if (method === \"filter\") {\n      const predicate = args[0];\n      const result = [];\n      for (let i = 0; i < source.length; i++) {\n        if (predicate(source[i], i, source)) {\n          result.push(state.draft_[i]);\n        }\n      }\n      return result;\n    }\n    if (FIND_METHODS.has(method)) {\n      const predicate = args[0];\n      const isForward = method === \"find\";\n      const step = isForward ? 1 : -1;\n      const start = isForward ? 0 : source.length - 1;\n      for (let i = start; i >= 0 && i < source.length; i += step) {\n        if (predicate(source[i], i, source)) {\n          return state.draft_[i];\n        }\n      }\n      return void 0;\n    }\n    if (method === \"slice\") {\n      const rawStart = args[0] ?? 0;\n      const rawEnd = args[1] ?? source.length;\n      const start = normalizeSliceIndex(rawStart, source.length);\n      const end = normalizeSliceIndex(rawEnd, source.length);\n      const result = [];\n      for (let i = start; i < end; i++) {\n        result.push(state.draft_[i]);\n      }\n      return result;\n    }\n    return source[method](...args);\n  }\n  loadPlugin(PluginArrayMethods, {\n    createMethodInterceptor,\n    isArrayOperationMethod,\n    isMutatingArrayMethod\n  });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = /* @__PURE__ */ immer.produceWithPatches.bind(immer);\nvar setAutoFreeze = /* @__PURE__ */ immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = /* @__PURE__ */ immer.setUseStrictShallowCopy.bind(immer);\nvar setUseStrictIteration = /* @__PURE__ */ immer.setUseStrictIteration.bind(immer);\nvar applyPatches = /* @__PURE__ */ immer.applyPatches.bind(immer);\nvar createDraft = /* @__PURE__ */ immer.createDraft.bind(immer);\nvar finishDraft = /* @__PURE__ */ immer.finishDraft.bind(immer);\nvar castDraft = (value) => value;\nvar castImmutable = (value) => value;\nexport {\n  Immer2 as Immer,\n  applyPatches,\n  castDraft,\n  castImmutable,\n  createDraft,\n  current,\n  enableArrayMethods,\n  enableMapSet,\n  enablePatches,\n  finishDraft,\n  freeze,\n  DRAFTABLE as immerable,\n  isDraft,\n  isDraftable,\n  NOTHING as nothing,\n  original,\n  produce,\n  produceWithPatches,\n  setAutoFreeze,\n  setUseStrictIteration,\n  setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","import { produce, type Draft, nothing, freeze } from \"immer\";\nimport {\n  useState,\n  useReducer,\n  useCallback,\n  useMemo,\n  type Dispatch\n} from \"react\";\n\n// https://immerjs.github.io/immer/\n// https://github.com/immerjs/immer\n// https://github.com/immerjs/use-immer\n\nexport type DraftFunction<S> = (draft: Draft<S>) => void;\nexport type Updater<S> = (arg: S | DraftFunction<S>) => void;\nexport type ImmerHook<S> = [S, Updater<S>];\n\nexport function useImmer<S = any>(initialValue: S | (() => S)): ImmerHook<S>;\n\nexport function useImmer(initialValue: any) {\n  const [val, updateValue] = useState(() =>\n    freeze(\n      typeof initialValue === \"function\" ? initialValue() : initialValue,\n      true\n    )\n  );\n  return [\n    val,\n    useCallback((updater: Updater<any>) => {\n      if (typeof updater === \"function\") {\n        updateValue(produce(updater));\n      } else {\n        updateValue(freeze(updater));\n      }\n    }, [])\n  ];\n}\n\nexport type ImmerReducer<S, A> = (\n  draft: Draft<S>,\n  action: A\n) => S | void | typeof nothing;\n\nexport function useImmerReducer<S, A, I>(\n  reducer: ImmerReducer<S, A>,\n  initializerArg: S & I,\n  initializer?: (arg: S & I) => S\n): [S, Dispatch<A>] {\n  const cachedReducer = useMemo<(state: S, action: A) => S>(\n    () => produce(reducer) as (state: S, action: A) => S,\n    [reducer]\n  );\n  return useReducer(cachedReducer, initializerArg as any, initializer as any);\n}\n","import { useLayoutEffect, useState } from \"react\";\n\nexport function useDimensions(ref: React.RefObject<HTMLDivElement | null>): {\n  width: number;\n  height: number;\n} {\n  const [dimensions, setDimensions] = useState({ width: 0, height: 0 });\n\n  useLayoutEffect(() => {\n    if (ref.current) {\n      setDimensions(() => ({\n        width: ref.current!.offsetWidth,\n        height: ref.current!.offsetHeight\n      }));\n    }\n  }, [ref]);\n\n  return dimensions;\n}\n","import { useState } from \"react\";\nimport { toggleArrayItem } from \"@zyzgroup/core-common\";\n\nexport function useSelection<T>(items: T[]) {\n  const [selected, setSelected] = useState<T[]>(items);\n  const toggle = (item: T) => {\n    setSelected((list) => toggleArrayItem(list, item));\n  };\n  return { selected, toggle };\n}\n","import { MotionValue } from \"motion/react\";\nimport { createContext, useContext } from \"react\";\n\nexport type ScrollProgressContextValue = {\n  scrollXProgress: MotionValue<number>;\n  scrollYProgress: MotionValue<number>;\n  type: \"window\" | \"container\";\n  container?: HTMLElement | null;\n};\n\nexport const ScrollProgressContext =\n  createContext<ScrollProgressContextValue | null>(null);\n\nexport function useScrollProgress(): ScrollProgressContextValue {\n  // 拿到最近一层 Provider\n  const ctx = useContext(ScrollProgressContext);\n  if (!ctx) {\n    throw new Error(\n      \"useScrollProgress must be used inside ScrollProgressContext.Provider\"\n    );\n  }\n  return ctx;\n}\n","\"use client\";\nimport { useInsertionEffect } from 'react';\n\nfunction useMotionValueEvent(value, event, callback) {\n    /**\n     * useInsertionEffect will create subscriptions before any other\n     * effects will run. Effects run upwards through the tree so it\n     * can be that binding a useLayoutEffect higher up the tree can\n     * miss changes from lower down the tree.\n     */\n    useInsertionEffect(() => value.on(event, callback), [value, event, callback]);\n}\n\nexport { useMotionValueEvent };\n//# sourceMappingURL=use-motion-value-event.mjs.map\n","import { supportsViewTimeline, supportsScrollTimeline } from 'motion-dom';\n\nfunction canUseNativeTimeline(target) {\n    if (typeof window === \"undefined\")\n        return false;\n    return target ? supportsViewTimeline() : supportsScrollTimeline();\n}\n\nexport { canUseNativeTimeline };\n//# sourceMappingURL=can-use-native-timeline.mjs.map\n","import { progress, velocityPerSecond } from 'motion-utils';\n\n/**\n * A time in milliseconds, beyond which we consider the scroll velocity to be 0.\n */\nconst maxElapsed = 50;\nconst createAxisInfo = () => ({\n    current: 0,\n    offset: [],\n    progress: 0,\n    scrollLength: 0,\n    targetOffset: 0,\n    targetLength: 0,\n    containerLength: 0,\n    velocity: 0,\n});\nconst createScrollInfo = () => ({\n    time: 0,\n    x: createAxisInfo(),\n    y: createAxisInfo(),\n});\nconst keys = {\n    x: {\n        length: \"Width\",\n        position: \"Left\",\n    },\n    y: {\n        length: \"Height\",\n        position: \"Top\",\n    },\n};\nfunction updateAxisInfo(element, axisName, info, time) {\n    const axis = info[axisName];\n    const { length, position } = keys[axisName];\n    const prev = axis.current;\n    const prevTime = info.time;\n    axis.current = Math.abs(element[`scroll${position}`]);\n    axis.scrollLength = element[`scroll${length}`] - element[`client${length}`];\n    axis.offset.length = 0;\n    axis.offset[0] = 0;\n    axis.offset[1] = axis.scrollLength;\n    axis.progress = progress(0, axis.scrollLength, axis.current);\n    const elapsed = time - prevTime;\n    axis.velocity =\n        elapsed > maxElapsed\n            ? 0\n            : velocityPerSecond(axis.current - prev, elapsed);\n}\nfunction updateScrollInfo(element, info, time) {\n    updateAxisInfo(element, \"x\", info, time);\n    updateAxisInfo(element, \"y\", info, time);\n    info.time = time;\n}\n\nexport { createScrollInfo, updateScrollInfo };\n//# sourceMappingURL=info.mjs.map\n","import { isHTMLElement } from 'motion-dom';\n\nfunction calcInset(element, container) {\n    const inset = { x: 0, y: 0 };\n    let current = element;\n    while (current && current !== container) {\n        if (isHTMLElement(current)) {\n            inset.x += current.offsetLeft;\n            inset.y += current.offsetTop;\n            current = current.offsetParent;\n        }\n        else if (current.tagName === \"svg\") {\n            /**\n             * This isn't an ideal approach to measuring the offset of <svg /> tags.\n             * It would be preferable, given they behave like HTMLElements in most ways\n             * to use offsetLeft/Top. But these don't exist on <svg />. Likewise we\n             * can't use .getBBox() like most SVG elements as these provide the offset\n             * relative to the SVG itself, which for <svg /> is usually 0x0.\n             */\n            const svgBoundingBox = current.getBoundingClientRect();\n            current = current.parentElement;\n            const parentBoundingBox = current.getBoundingClientRect();\n            inset.x += svgBoundingBox.left - parentBoundingBox.left;\n            inset.y += svgBoundingBox.top - parentBoundingBox.top;\n        }\n        else if (current instanceof SVGGraphicsElement) {\n            const { x, y } = current.getBBox();\n            inset.x += x;\n            inset.y += y;\n            let svg = null;\n            let parent = current.parentNode;\n            while (!svg) {\n                if (parent.tagName === \"svg\") {\n                    svg = parent;\n                }\n                parent = current.parentNode;\n            }\n            current = svg;\n        }\n        else {\n            break;\n        }\n    }\n    return inset;\n}\n\nexport { calcInset };\n//# sourceMappingURL=inset.mjs.map\n","const namedEdges = {\n    start: 0,\n    center: 0.5,\n    end: 1,\n};\nfunction resolveEdge(edge, length, inset = 0) {\n    let delta = 0;\n    /**\n     * If we have this edge defined as a preset, replace the definition\n     * with the numerical value.\n     */\n    if (edge in namedEdges) {\n        edge = namedEdges[edge];\n    }\n    /**\n     * Handle unit values\n     */\n    if (typeof edge === \"string\") {\n        const asNumber = parseFloat(edge);\n        if (edge.endsWith(\"px\")) {\n            delta = asNumber;\n        }\n        else if (edge.endsWith(\"%\")) {\n            edge = asNumber / 100;\n        }\n        else if (edge.endsWith(\"vw\")) {\n            delta = (asNumber / 100) * document.documentElement.clientWidth;\n        }\n        else if (edge.endsWith(\"vh\")) {\n            delta = (asNumber / 100) * document.documentElement.clientHeight;\n        }\n        else {\n            edge = asNumber;\n        }\n    }\n    /**\n     * If the edge is defined as a number, handle as a progress value.\n     */\n    if (typeof edge === \"number\") {\n        delta = length * edge;\n    }\n    return inset + delta;\n}\n\nexport { namedEdges, resolveEdge };\n//# sourceMappingURL=edge.mjs.map\n","import { resolveEdge, namedEdges } from './edge.mjs';\n\nconst defaultOffset = [0, 0];\nfunction resolveOffset(offset, containerLength, targetLength, targetInset) {\n    let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset;\n    let targetPoint = 0;\n    let containerPoint = 0;\n    if (typeof offset === \"number\") {\n        /**\n         * If we're provided offset: [0, 0.5, 1] then each number x should become\n         * [x, x], so we default to the behaviour of mapping 0 => 0 of both target\n         * and container etc.\n         */\n        offsetDefinition = [offset, offset];\n    }\n    else if (typeof offset === \"string\") {\n        offset = offset.trim();\n        if (offset.includes(\" \")) {\n            offsetDefinition = offset.split(\" \");\n        }\n        else {\n            /**\n             * If we're provided a definition like \"100px\" then we want to apply\n             * that only to the top of the target point, leaving the container at 0.\n             * Whereas a named offset like \"end\" should be applied to both.\n             */\n            offsetDefinition = [offset, namedEdges[offset] ? offset : `0`];\n        }\n    }\n    targetPoint = resolveEdge(offsetDefinition[0], targetLength, targetInset);\n    containerPoint = resolveEdge(offsetDefinition[1], containerLength);\n    return targetPoint - containerPoint;\n}\n\nexport { resolveOffset };\n//# sourceMappingURL=offset.mjs.map\n","const ScrollOffset = {\n    Enter: [\n        [0, 1],\n        [1, 1],\n    ],\n    Exit: [\n        [0, 0],\n        [1, 0],\n    ],\n    Any: [\n        [1, 0],\n        [0, 1],\n    ],\n    All: [\n        [0, 0],\n        [1, 1],\n    ],\n};\n\nexport { ScrollOffset };\n//# sourceMappingURL=presets.mjs.map\n","import { interpolate, defaultOffset } from 'motion-dom';\nimport { clamp } from 'motion-utils';\nimport { calcInset } from './inset.mjs';\nimport { resolveOffset } from './offset.mjs';\nimport { ScrollOffset } from './presets.mjs';\n\nconst point = { x: 0, y: 0 };\nfunction getTargetSize(target) {\n    return \"getBBox\" in target && target.tagName !== \"svg\"\n        ? target.getBBox()\n        : { width: target.clientWidth, height: target.clientHeight };\n}\nfunction resolveOffsets(container, info, options) {\n    const { offset: offsetDefinition = ScrollOffset.All } = options;\n    const { target = container, axis = \"y\" } = options;\n    const lengthLabel = axis === \"y\" ? \"height\" : \"width\";\n    const inset = target !== container ? calcInset(target, container) : point;\n    /**\n     * Measure the target and container. If they're the same thing then we\n     * use the container's scrollWidth/Height as the target, from there\n     * all other calculations can remain the same.\n     */\n    const targetSize = target === container\n        ? { width: container.scrollWidth, height: container.scrollHeight }\n        : getTargetSize(target);\n    const containerSize = {\n        width: container.clientWidth,\n        height: container.clientHeight,\n    };\n    /**\n     * Reset the length of the resolved offset array rather than creating a new one.\n     * TODO: More reusable data structures for targetSize/containerSize would also be good.\n     */\n    info[axis].offset.length = 0;\n    /**\n     * Populate the offset array by resolving the user's offset definition into\n     * a list of pixel scroll offets.\n     */\n    let hasChanged = !info[axis].interpolate;\n    const numOffsets = offsetDefinition.length;\n    for (let i = 0; i < numOffsets; i++) {\n        const offset = resolveOffset(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]);\n        if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) {\n            hasChanged = true;\n        }\n        info[axis].offset[i] = offset;\n    }\n    /**\n     * If the pixel scroll offsets have changed, create a new interpolator function\n     * to map scroll value into a progress.\n     */\n    if (hasChanged) {\n        info[axis].interpolate = interpolate(info[axis].offset, defaultOffset(offsetDefinition), { clamp: false });\n        info[axis].interpolatorOffsets = [...info[axis].offset];\n    }\n    info[axis].progress = clamp(0, 1, info[axis].interpolate(info[axis].current));\n}\n\nexport { resolveOffsets };\n//# sourceMappingURL=index.mjs.map\n","import { warnOnce } from 'motion-utils';\nimport { updateScrollInfo } from './info.mjs';\nimport { resolveOffsets } from './offsets/index.mjs';\n\nfunction measure(container, target = container, info) {\n    /**\n     * Find inset of target within scrollable container\n     */\n    info.x.targetOffset = 0;\n    info.y.targetOffset = 0;\n    if (target !== container) {\n        let node = target;\n        while (node && node !== container) {\n            info.x.targetOffset += node.offsetLeft;\n            info.y.targetOffset += node.offsetTop;\n            node = node.offsetParent;\n        }\n    }\n    info.x.targetLength =\n        target === container ? target.scrollWidth : target.clientWidth;\n    info.y.targetLength =\n        target === container ? target.scrollHeight : target.clientHeight;\n    info.x.containerLength = container.clientWidth;\n    info.y.containerLength = container.clientHeight;\n    /**\n     * In development mode ensure scroll containers aren't position: static as this makes\n     * it difficult to measure their relative positions. The document scrolling element\n     * is exempt: offsetParent measurements naturally resolve relative to the document.\n     */\n    if (process.env.NODE_ENV !== \"production\") {\n        if (container &&\n            target &&\n            target !== container &&\n            container !== document.documentElement &&\n            container !== document.scrollingElement &&\n            container !== document.body) {\n            warnOnce(getComputedStyle(container).position !== \"static\", \"Please ensure that the container has a non-static position, like 'relative', 'fixed', or 'absolute' to ensure scroll offset is calculated correctly.\");\n        }\n    }\n}\nfunction createOnScrollHandler(element, onScroll, info, options = {}) {\n    return {\n        measure: (time) => {\n            measure(element, options.target, info);\n            updateScrollInfo(element, info, time);\n            if (options.offset || options.target) {\n                resolveOffsets(element, info, options);\n            }\n        },\n        notify: () => onScroll(info),\n    };\n}\n\nexport { createOnScrollHandler };\n//# sourceMappingURL=on-scroll-handler.mjs.map\n","import { resize, frame, cancelFrame, frameData } from 'motion-dom';\nimport { noop } from 'motion-utils';\nimport { createScrollInfo } from './info.mjs';\nimport { createOnScrollHandler } from './on-scroll-handler.mjs';\n\nconst scrollListeners = new WeakMap();\nconst resizeListeners = new WeakMap();\nconst onScrollHandlers = new WeakMap();\nconst scrollSize = new WeakMap();\nconst dimensionCheckProcesses = new WeakMap();\nconst getEventTarget = (element) => element === document.scrollingElement ? window : element;\nfunction scrollInfo(onScroll, { container = document.scrollingElement, trackContentSize = false, ...options } = {}) {\n    if (!container)\n        return noop;\n    let containerHandlers = onScrollHandlers.get(container);\n    /**\n     * Get the onScroll handlers for this container.\n     * If one isn't found, create a new one.\n     */\n    if (!containerHandlers) {\n        containerHandlers = new Set();\n        onScrollHandlers.set(container, containerHandlers);\n    }\n    /**\n     * Create a new onScroll handler for the provided callback.\n     */\n    const info = createScrollInfo();\n    const containerHandler = createOnScrollHandler(container, onScroll, info, options);\n    containerHandlers.add(containerHandler);\n    /**\n     * Check if there's a scroll event listener for this container.\n     * If not, create one.\n     */\n    if (!scrollListeners.has(container)) {\n        const measureAll = () => {\n            for (const handler of containerHandlers) {\n                handler.measure(frameData.timestamp);\n            }\n            frame.preUpdate(notifyAll);\n        };\n        const notifyAll = () => {\n            for (const handler of containerHandlers) {\n                handler.notify();\n            }\n        };\n        const listener = () => frame.read(measureAll);\n        scrollListeners.set(container, listener);\n        const target = getEventTarget(container);\n        window.addEventListener(\"resize\", listener);\n        if (container !== document.documentElement) {\n            resizeListeners.set(container, resize(container, listener));\n        }\n        target.addEventListener(\"scroll\", listener);\n        listener();\n    }\n    /**\n     * Enable content size tracking if requested and not already enabled.\n     */\n    if (trackContentSize && !dimensionCheckProcesses.has(container)) {\n        const listener = scrollListeners.get(container);\n        // Store initial scroll dimensions (object is reused to avoid allocation)\n        const size = {\n            width: container.scrollWidth,\n            height: container.scrollHeight,\n        };\n        scrollSize.set(container, size);\n        // Add frame-based scroll dimension checking to detect content changes\n        const checkScrollDimensions = () => {\n            const newWidth = container.scrollWidth;\n            const newHeight = container.scrollHeight;\n            if (size.width !== newWidth || size.height !== newHeight) {\n                listener();\n                size.width = newWidth;\n                size.height = newHeight;\n            }\n        };\n        // Schedule with keepAlive=true to run every frame\n        const dimensionCheckProcess = frame.read(checkScrollDimensions, true);\n        dimensionCheckProcesses.set(container, dimensionCheckProcess);\n    }\n    const listener = scrollListeners.get(container);\n    frame.read(listener, false, true);\n    return () => {\n        cancelFrame(listener);\n        /**\n         * Check if we even have any handlers for this container.\n         */\n        const currentHandlers = onScrollHandlers.get(container);\n        if (!currentHandlers)\n            return;\n        currentHandlers.delete(containerHandler);\n        if (currentHandlers.size)\n            return;\n        /**\n         * If no more handlers, remove the scroll listener too.\n         */\n        const scrollListener = scrollListeners.get(container);\n        scrollListeners.delete(container);\n        if (scrollListener) {\n            getEventTarget(container).removeEventListener(\"scroll\", scrollListener);\n            resizeListeners.get(container)?.();\n            window.removeEventListener(\"resize\", scrollListener);\n        }\n        // Clean up scroll dimension checking\n        const dimensionCheckProcess = dimensionCheckProcesses.get(container);\n        if (dimensionCheckProcess) {\n            cancelFrame(dimensionCheckProcess);\n            dimensionCheckProcesses.delete(container);\n        }\n        scrollSize.delete(container);\n    };\n}\n\nexport { scrollInfo };\n//# sourceMappingURL=track.mjs.map\n","import { ScrollOffset } from '../offsets/presets.mjs';\n\n/**\n * Maps from ProgressIntersection pairs used by Motion's preset offsets to\n * ViewTimeline named ranges. Returns undefined for unrecognised patterns,\n * which signals the caller to fall back to JS-based scroll tracking.\n */\nconst presets = [\n    [ScrollOffset.Enter, \"entry\"],\n    [ScrollOffset.Exit, \"exit\"],\n    [ScrollOffset.Any, \"cover\"],\n    [ScrollOffset.All, \"contain\"],\n];\nconst stringToProgress = {\n    start: 0,\n    end: 1,\n};\nfunction parseStringOffset(s) {\n    const parts = s.trim().split(/\\s+/);\n    if (parts.length !== 2)\n        return undefined;\n    const a = stringToProgress[parts[0]];\n    const b = stringToProgress[parts[1]];\n    if (a === undefined || b === undefined)\n        return undefined;\n    return [a, b];\n}\nfunction normaliseOffset(offset) {\n    if (offset.length !== 2)\n        return undefined;\n    const result = [];\n    for (const item of offset) {\n        if (Array.isArray(item)) {\n            result.push(item);\n        }\n        else if (typeof item === \"string\") {\n            const parsed = parseStringOffset(item);\n            if (!parsed)\n                return undefined;\n            result.push(parsed);\n        }\n        else {\n            return undefined;\n        }\n    }\n    return result;\n}\nfunction matchesPreset(offset, preset) {\n    const normalised = normaliseOffset(offset);\n    if (!normalised)\n        return false;\n    for (let i = 0; i < 2; i++) {\n        const o = normalised[i];\n        const p = preset[i];\n        if (o[0] !== p[0] || o[1] !== p[1])\n            return false;\n    }\n    return true;\n}\nfunction offsetToViewTimelineRange(offset) {\n    if (!offset) {\n        return { rangeStart: \"contain 0%\", rangeEnd: \"contain 100%\" };\n    }\n    for (const [preset, name] of presets) {\n        if (matchesPreset(offset, preset)) {\n            return { rangeStart: `${name} 0%`, rangeEnd: `${name} 100%` };\n        }\n    }\n    return undefined;\n}\n\nexport { offsetToViewTimelineRange };\n//# sourceMappingURL=offset-to-range.mjs.map\n","import { scrollInfo } from '../track.mjs';\nimport { canUseNativeTimeline } from './can-use-native-timeline.mjs';\nimport { offsetToViewTimelineRange } from './offset-to-range.mjs';\n\nconst timelineCache = new Map();\nfunction scrollTimelineFallback(options) {\n    const currentTime = { value: 0 };\n    const cancel = scrollInfo((info) => {\n        currentTime.value = info[options.axis].progress * 100;\n    }, options);\n    return { currentTime, cancel };\n}\nfunction getTimeline({ source, container, ...options }) {\n    const { axis } = options;\n    if (source)\n        container = source;\n    let containerCache = timelineCache.get(container);\n    if (!containerCache) {\n        containerCache = new Map();\n        timelineCache.set(container, containerCache);\n    }\n    const targetKey = options.target ?? \"self\";\n    let targetCache = containerCache.get(targetKey);\n    if (!targetCache) {\n        targetCache = {};\n        containerCache.set(targetKey, targetCache);\n    }\n    const axisKey = axis + (options.offset ?? []).join(\",\");\n    if (!targetCache[axisKey]) {\n        if (options.target && canUseNativeTimeline(options.target)) {\n            const range = offsetToViewTimelineRange(options.offset);\n            if (range) {\n                targetCache[axisKey] = new ViewTimeline({\n                    subject: options.target,\n                    axis,\n                });\n            }\n            else {\n                targetCache[axisKey] = scrollTimelineFallback({\n                    container,\n                    ...options,\n                });\n            }\n        }\n        else if (canUseNativeTimeline()) {\n            targetCache[axisKey] = new ScrollTimeline({\n                source: container,\n                axis,\n            });\n        }\n        else {\n            targetCache[axisKey] = scrollTimelineFallback({\n                container,\n                ...options,\n            });\n        }\n    }\n    return targetCache[axisKey];\n}\n\nexport { getTimeline };\n//# sourceMappingURL=get-timeline.mjs.map\n","import { observeTimeline } from 'motion-dom';\nimport { canUseNativeTimeline } from './utils/can-use-native-timeline.mjs';\nimport { getTimeline } from './utils/get-timeline.mjs';\nimport { offsetToViewTimelineRange } from './utils/offset-to-range.mjs';\n\nfunction attachToAnimation(animation, options) {\n    const timeline = getTimeline(options);\n    const range = options.target\n        ? offsetToViewTimelineRange(options.offset)\n        : undefined;\n    /**\n     * Use native timeline when:\n     * - No target: ScrollTimeline (existing behaviour)\n     * - Target with mappable offset: ViewTimeline with named range\n     * - Target with unmappable offset: fall back to JS observe\n     */\n    const useNative = options.target\n        ? canUseNativeTimeline(options.target) && !!range\n        : canUseNativeTimeline();\n    return animation.attachTimeline({\n        timeline: useNative ? timeline : undefined,\n        ...(range &&\n            useNative && {\n            rangeStart: range.rangeStart,\n            rangeEnd: range.rangeEnd,\n        }),\n        observe: (valueAnimation) => {\n            valueAnimation.pause();\n            return observeTimeline((progress) => {\n                valueAnimation.time =\n                    valueAnimation.iterationDuration * progress;\n            }, timeline);\n        },\n    });\n}\n\nexport { attachToAnimation };\n//# sourceMappingURL=attach-animation.mjs.map\n","/**\n * Currently, we only support element tracking with `scrollInfo`, though in\n * the future we can also offer ViewTimeline support.\n */\nfunction isElementTracking(options) {\n    return options && (options.target || options.offset);\n}\n\nexport { isElementTracking };\n//# sourceMappingURL=is-element-tracking.mjs.map\n","import { observeTimeline } from 'motion-dom';\nimport { scrollInfo } from './track.mjs';\nimport { getTimeline } from './utils/get-timeline.mjs';\nimport { isElementTracking } from './utils/is-element-tracking.mjs';\n\n/**\n * If the onScroll function has two arguments, it's expecting\n * more specific information about the scroll from scrollInfo.\n */\nfunction isOnScrollWithInfo(onScroll) {\n    return onScroll.length === 2;\n}\nfunction attachToFunction(onScroll, options) {\n    if (isOnScrollWithInfo(onScroll) || isElementTracking(options)) {\n        return scrollInfo((info) => {\n            onScroll(info[options.axis].progress, info);\n        }, options);\n    }\n    else {\n        return observeTimeline(onScroll, getTimeline(options));\n    }\n}\n\nexport { attachToFunction };\n//# sourceMappingURL=attach-function.mjs.map\n","import { noop } from 'motion-utils';\nimport { attachToAnimation } from './attach-animation.mjs';\nimport { attachToFunction } from './attach-function.mjs';\n\nfunction scroll(onScroll, { axis = \"y\", container = document.scrollingElement, ...options } = {}) {\n    if (!container)\n        return noop;\n    const optionsWithDefaults = { axis, container, ...options };\n    return typeof onScroll === \"function\"\n        ? attachToFunction(onScroll, optionsWithDefaults)\n        : attachToAnimation(onScroll, optionsWithDefaults);\n}\n\nexport { scroll };\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nimport { microtask, cancelMicrotask, supportsViewTimeline, supportsScrollTimeline, motionValue } from 'motion-dom';\nimport { invariant } from 'motion-utils';\nimport { useRef, useCallback, useEffect } from 'react';\nimport { scroll } from '../render/dom/scroll/index.mjs';\nimport { offsetToViewTimelineRange } from '../render/dom/scroll/utils/offset-to-range.mjs';\nimport { useConstant } from '../utils/use-constant.mjs';\nimport { useIsomorphicLayoutEffect } from '../utils/use-isomorphic-effect.mjs';\n\nconst createScrollMotionValues = () => ({\n    scrollX: motionValue(0),\n    scrollY: motionValue(0),\n    scrollXProgress: motionValue(0),\n    scrollYProgress: motionValue(0),\n});\nconst isRefPending = (ref) => {\n    if (!ref)\n        return false;\n    return !ref.current;\n};\nfunction makeAccelerateConfig(axis, options, container, target) {\n    return {\n        // Refs attach child-first; defer so target.current is populated\n        // before scroll() reads it.\n        factory: (animation) => {\n            let cleanup;\n            const start = () => {\n                // A provided ref may be hydrated by an effect declared after\n                // useScroll (or in a parent). Don't attach to the window\n                // scroll in the meantime — that result gets cached and would\n                // permanently mistrack. Wait until the ref resolves.\n                if (isRefPending(container) || isRefPending(target)) {\n                    microtask.read(start);\n                    return;\n                }\n                cleanup = scroll(animation, {\n                    ...options,\n                    axis,\n                    container: container?.current || undefined,\n                    target: target?.current || undefined,\n                });\n            };\n            microtask.read(start);\n            return () => {\n                cancelMicrotask(start);\n                cleanup?.();\n            };\n        },\n        times: [0, 1],\n        keyframes: [0, 1],\n        ease: (v) => v,\n        duration: 1,\n    };\n}\nfunction canAccelerateScroll(target, offset) {\n    if (typeof window === \"undefined\")\n        return false;\n    return target\n        ? supportsViewTimeline() && !!offsetToViewTimelineRange(offset)\n        : supportsScrollTimeline();\n}\nfunction useScroll({ container, target, ...options } = {}) {\n    const values = useConstant(createScrollMotionValues);\n    if (canAccelerateScroll(target, options.offset)) {\n        values.scrollXProgress.accelerate = makeAccelerateConfig(\"x\", options, container, target);\n        values.scrollYProgress.accelerate = makeAccelerateConfig(\"y\", options, container, target);\n    }\n    const scrollAnimation = useRef(null);\n    const needsStart = useRef(false);\n    const start = useCallback(() => {\n        scrollAnimation.current = scroll((_progress, { x, y, }) => {\n            values.scrollX.set(x.current);\n            values.scrollXProgress.set(x.progress);\n            values.scrollY.set(y.current);\n            values.scrollYProgress.set(y.progress);\n        }, {\n            ...options,\n            container: container?.current || undefined,\n            target: target?.current || undefined,\n        });\n        return () => {\n            scrollAnimation.current?.();\n        };\n    }, [container, target, JSON.stringify(options.offset)]);\n    useIsomorphicLayoutEffect(() => {\n        needsStart.current = false;\n        if (isRefPending(container) || isRefPending(target)) {\n            needsStart.current = true;\n            return;\n        }\n        else {\n            return start();\n        }\n    }, [start]);\n    useEffect(() => {\n        if (!needsStart.current)\n            return;\n        // Defer to a microtask so any sibling/parent effect that hydrates the\n        // ref has a chance to run first.\n        let cleanup;\n        const tryStart = () => {\n            const containerPending = isRefPending(container);\n            const targetPending = isRefPending(target);\n            invariant(!containerPending, \"Container ref is defined but not hydrated\", \"use-scroll-ref\");\n            invariant(!targetPending, \"Target ref is defined but not hydrated\", \"use-scroll-ref\");\n            if (!containerPending && !targetPending)\n                cleanup = start();\n        };\n        microtask.read(tryStart);\n        return () => {\n            cancelMicrotask(tryStart);\n            cleanup?.();\n        };\n    }, [start]);\n    return values;\n}\n\nexport { useScroll };\n//# sourceMappingURL=use-scroll.mjs.map\n","\"use client\";\nimport { motionValue } from 'motion-dom';\nimport { useContext, useState, useEffect } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { useConstant } from '../utils/use-constant.mjs';\n\n/**\n * Creates a `MotionValue` to track the state and velocity of a value.\n *\n * Usually, these are created automatically. For advanced use-cases, like use with `useTransform`, you can create `MotionValue`s externally and pass them into the animated component via the `style` prop.\n *\n * ```jsx\n * export const MyComponent = () => {\n *   const scale = useMotionValue(1)\n *\n *   return <motion.div style={{ scale }} />\n * }\n * ```\n *\n * @param initial - The initial state.\n *\n * @public\n */\nfunction useMotionValue(initial) {\n    const value = useConstant(() => motionValue(initial));\n    /**\n     * If this motion value is being used in static mode, like on\n     * the Framer canvas, force components to rerender when the motion\n     * value is updated.\n     */\n    const { isStatic } = useContext(MotionConfigContext);\n    if (isStatic) {\n        const [, setLatest] = useState(initial);\n        useEffect(() => value.on(\"change\", setLatest), []);\n    }\n    return value;\n}\n\nexport { useMotionValue };\n//# sourceMappingURL=use-motion-value.mjs.map\n","\"use client\";\nimport { cancelFrame, frame } from 'motion-dom';\nimport { useIsomorphicLayoutEffect } from '../utils/use-isomorphic-effect.mjs';\nimport { useMotionValue } from './use-motion-value.mjs';\n\nfunction useCombineMotionValues(values, combineValues) {\n    /**\n     * Initialise the returned motion value. This remains the same between renders.\n     */\n    const value = useMotionValue(combineValues());\n    /**\n     * Create a function that will update the template motion value with the latest values.\n     * This is pre-bound so whenever a motion value updates it can schedule its\n     * execution in Framesync. If it's already been scheduled it won't be fired twice\n     * in a single frame.\n     */\n    const updateValue = () => value.set(combineValues());\n    /**\n     * Synchronously update the motion value with the latest values during the render.\n     * This ensures that within a React render, the styles applied to the DOM are up-to-date.\n     */\n    updateValue();\n    /**\n     * Subscribe to all motion values found within the template. Whenever any of them change,\n     * schedule an update.\n     */\n    useIsomorphicLayoutEffect(() => {\n        const scheduleUpdate = () => frame.preRender(updateValue, false, true);\n        const subscriptions = values.map((v) => v.on(\"change\", scheduleUpdate));\n        return () => {\n            subscriptions.forEach((unsubscribe) => unsubscribe());\n            cancelFrame(updateValue);\n        };\n    });\n    return value;\n}\n\nexport { useCombineMotionValues };\n//# sourceMappingURL=use-combine-values.mjs.map\n","\"use client\";\nimport { collectMotionValues } from 'motion-dom';\nimport { useCombineMotionValues } from './use-combine-values.mjs';\n\nfunction useComputed(compute) {\n    /**\n     * Open session of collectMotionValues. Any MotionValue that calls get()\n     * will be saved into this array.\n     */\n    collectMotionValues.current = [];\n    compute();\n    const value = useCombineMotionValues(collectMotionValues.current, compute);\n    /**\n     * Synchronously close session of collectMotionValues.\n     */\n    collectMotionValues.current = undefined;\n    return value;\n}\n\nexport { useComputed };\n//# sourceMappingURL=use-computed.mjs.map\n","\"use client\";\nimport { transform } from 'motion-dom';\nimport { useConstant } from '../utils/use-constant.mjs';\nimport { useCombineMotionValues } from './use-combine-values.mjs';\nimport { useComputed } from './use-computed.mjs';\n\nfunction useTransform(input, inputRangeOrTransformer, outputRangeOrMap, options) {\n    if (typeof input === \"function\") {\n        return useComputed(input);\n    }\n    /**\n     * Detect if outputRangeOrMap is an output map (object with keys)\n     * rather than an output range (array).\n     */\n    const isOutputMap = outputRangeOrMap !== undefined &&\n        !Array.isArray(outputRangeOrMap) &&\n        typeof inputRangeOrTransformer !== \"function\";\n    if (isOutputMap) {\n        return useMapTransform(input, inputRangeOrTransformer, outputRangeOrMap, options);\n    }\n    const outputRange = outputRangeOrMap;\n    const transformer = typeof inputRangeOrTransformer === \"function\"\n        ? inputRangeOrTransformer\n        : transform(inputRangeOrTransformer, outputRange, options);\n    const result = Array.isArray(input)\n        ? useListTransform(input, transformer)\n        : useListTransform([input], ([latest]) => transformer(latest));\n    const inputAccelerate = !Array.isArray(input)\n        ? input.accelerate\n        : undefined;\n    if (inputAccelerate &&\n        !inputAccelerate.isTransformed &&\n        typeof inputRangeOrTransformer !== \"function\" &&\n        Array.isArray(outputRangeOrMap) &&\n        options?.clamp !== false) {\n        result.accelerate = {\n            ...inputAccelerate,\n            times: inputRangeOrTransformer,\n            keyframes: outputRangeOrMap,\n            isTransformed: true,\n            ...(options?.ease ? { ease: options.ease } : {}),\n        };\n    }\n    return result;\n}\nfunction useListTransform(values, transformer) {\n    const latest = useConstant(() => []);\n    return useCombineMotionValues(values, () => {\n        latest.length = 0;\n        const numValues = values.length;\n        for (let i = 0; i < numValues; i++) {\n            latest[i] = values[i].get();\n        }\n        return transformer(latest);\n    });\n}\nfunction useMapTransform(inputValue, inputRange, outputMap, options) {\n    /**\n     * Capture keys once to ensure hooks are called in consistent order.\n     */\n    const keys = useConstant(() => Object.keys(outputMap));\n    const output = useConstant(() => ({}));\n    for (const key of keys) {\n        output[key] = useTransform(inputValue, inputRange, outputMap[key], options);\n    }\n    return output;\n}\n\nexport { useTransform };\n//# sourceMappingURL=use-transform.mjs.map\n","\"use client\";\nimport { attachFollow, isMotionValue } from 'motion-dom';\nimport { useContext, useInsertionEffect } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { useMotionValue } from './use-motion-value.mjs';\nimport { useTransform } from './use-transform.mjs';\n\nfunction useFollowValue(source, options = {}) {\n    const { isStatic } = useContext(MotionConfigContext);\n    const getFromSource = () => (isMotionValue(source) ? source.get() : source);\n    // isStatic will never change, allowing early hooks return\n    if (isStatic) {\n        return useTransform(getFromSource);\n    }\n    const value = useMotionValue(getFromSource());\n    useInsertionEffect(() => {\n        return attachFollow(value, source, options);\n    }, [value, JSON.stringify(options)]);\n    return value;\n}\n\nexport { useFollowValue };\n//# sourceMappingURL=use-follow-value.mjs.map\n","\"use client\";\nimport { useFollowValue } from './use-follow-value.mjs';\n\nfunction useSpring(source, options = {}) {\n    return useFollowValue(source, { type: \"spring\", ...options });\n}\n\nexport { useSpring };\n//# sourceMappingURL=use-spring.mjs.map\n","function isDOMKeyframes(keyframes) {\n    return typeof keyframes === \"object\" && !Array.isArray(keyframes);\n}\n\nexport { isDOMKeyframes };\n//# sourceMappingURL=is-dom-keyframes.mjs.map\n","import { resolveElements } from 'motion-dom';\nimport { isDOMKeyframes } from '../utils/is-dom-keyframes.mjs';\n\nfunction resolveSubjects(subject, keyframes, scope, selectorCache) {\n    if (subject == null) {\n        return [];\n    }\n    if (typeof subject === \"string\" && isDOMKeyframes(keyframes)) {\n        return resolveElements(subject, scope, selectorCache);\n    }\n    else if (subject instanceof NodeList) {\n        return Array.from(subject);\n    }\n    else if (Array.isArray(subject)) {\n        return subject.filter((s) => s != null);\n    }\n    else {\n        return [subject];\n    }\n}\n\nexport { resolveSubjects };\n//# sourceMappingURL=resolve-subjects.mjs.map\n","function calculateRepeatDuration(duration, repeat, repeatDelay) {\n    return duration * (repeat + 1) + repeatDelay * repeat;\n}\n\nexport { calculateRepeatDuration };\n//# sourceMappingURL=calc-repeat-duration.mjs.map\n","/**\n * Given a absolute or relative time definition and current/prev time state of the sequence,\n * calculate an absolute time for the next keyframes.\n */\nfunction calcNextTime(current, next, prev, labels) {\n    if (typeof next === \"number\") {\n        return next;\n    }\n    else if (next.startsWith(\"-\") || next.startsWith(\"+\")) {\n        return Math.max(0, current + parseFloat(next));\n    }\n    else if (next === \"<\") {\n        return prev;\n    }\n    else if (next.startsWith(\"<\")) {\n        return Math.max(0, prev + parseFloat(next.slice(1)));\n    }\n    else {\n        return labels.get(next) ?? current;\n    }\n}\n\nexport { calcNextTime };\n//# sourceMappingURL=calc-time.mjs.map\n","import { mixNumber } from 'motion-dom';\nimport { getEasingForSegment, removeItem } from 'motion-utils';\n\nfunction eraseKeyframes(sequence, startTime, endTime) {\n    for (let i = 0; i < sequence.length; i++) {\n        const keyframe = sequence[i];\n        if (keyframe.at > startTime && keyframe.at < endTime) {\n            removeItem(sequence, keyframe);\n            // If we remove this item we have to push the pointer back one\n            i--;\n        }\n    }\n}\nfunction addKeyframes(sequence, keyframes, easing, offset, startTime, endTime) {\n    /**\n     * Erase every existing value between currentTime and targetTime,\n     * this will essentially splice this timeline into any currently\n     * defined ones.\n     */\n    eraseKeyframes(sequence, startTime, endTime);\n    for (let i = 0; i < keyframes.length; i++) {\n        sequence.push({\n            value: keyframes[i],\n            at: mixNumber(startTime, endTime, offset[i]),\n            easing: getEasingForSegment(easing, i),\n        });\n    }\n}\n\nexport { addKeyframes, eraseKeyframes };\n//# sourceMappingURL=edit.mjs.map\n","/**\n * Take an array of times that represent repeated keyframes. For instance\n * if we have original times of [0, 0.5, 1] then our repeated times will\n * be [0, 0.5, 1, 1, 1.5, 2]. Loop over the times and scale them back\n * down to a 0-1 scale.\n *\n * `repeatDelayUnits` is the repeatDelay expressed in units of a single\n * iteration's duration, so the total span equals `(repeat + 1) + repeat * repeatDelayUnits`.\n */\nfunction normalizeTimes(times, repeat, repeatDelayUnits = 0) {\n    const totalUnits = repeat + 1 + repeat * repeatDelayUnits;\n    for (let i = 0; i < times.length; i++) {\n        times[i] = times[i] / totalUnits;\n    }\n}\n\nexport { normalizeTimes };\n//# sourceMappingURL=normalize-times.mjs.map\n","function compareByTime(a, b) {\n    if (a.at === b.at) {\n        if (a.value === null)\n            return 1;\n        if (b.value === null)\n            return -1;\n        return 0;\n    }\n    else {\n        return a.at - b.at;\n    }\n}\n\nexport { compareByTime };\n//# sourceMappingURL=sort.mjs.map\n","import { isMotionValue, defaultOffset, isGenerator, createGeneratorEasing, fillOffset } from 'motion-dom';\nimport { progress, secondsToMilliseconds, warning, reverseEasing, getEasingForSegment } from 'motion-utils';\nimport { resolveSubjects } from '../animate/resolve-subjects.mjs';\nimport { calculateRepeatDuration } from './utils/calc-repeat-duration.mjs';\nimport { calcNextTime } from './utils/calc-time.mjs';\nimport { addKeyframes } from './utils/edit.mjs';\nimport { normalizeTimes } from './utils/normalize-times.mjs';\nimport { compareByTime } from './utils/sort.mjs';\n\nconst defaultSegmentEasing = \"easeInOut\";\nconst MAX_REPEAT = 20;\nfunction createAnimationsFromSequence(sequence, { defaultTransition = {}, ...sequenceTransition } = {}, scope, generators) {\n    const defaultDuration = defaultTransition.duration || 0.3;\n    const animationDefinitions = new Map();\n    const sequences = new Map();\n    const elementCache = {};\n    const timeLabels = new Map();\n    let prevTime = 0;\n    let currentTime = 0;\n    let totalDuration = 0;\n    /**\n     * Build the timeline by mapping over the sequence array and converting\n     * the definitions into keyframes and offsets with absolute time values.\n     * These will later get converted into relative offsets in a second pass.\n     */\n    for (let i = 0; i < sequence.length; i++) {\n        const segment = sequence[i];\n        /**\n         * If this is a timeline label, mark it and skip the rest of this iteration.\n         */\n        if (typeof segment === \"string\") {\n            timeLabels.set(segment, currentTime);\n            continue;\n        }\n        else if (!Array.isArray(segment)) {\n            timeLabels.set(segment.name, calcNextTime(currentTime, segment.at, prevTime, timeLabels));\n            continue;\n        }\n        let [subject, keyframes, transition = {}] = segment;\n        /**\n         * If a relative or absolute time value has been specified we need to resolve\n         * it in relation to the currentTime.\n         */\n        if (transition.at !== undefined) {\n            currentTime = calcNextTime(currentTime, transition.at, prevTime, timeLabels);\n        }\n        /**\n         * Keep track of the maximum duration in this definition. This will be\n         * applied to currentTime once the definition has been parsed.\n         */\n        let maxDuration = 0;\n        const resolveValueSequence = (valueKeyframes, valueTransition, valueSequence, elementIndex = 0, numSubjects = 0) => {\n            const valueKeyframesAsList = keyframesAsList(valueKeyframes);\n            const { delay = 0, times = defaultOffset(valueKeyframesAsList), type = defaultTransition.type || \"keyframes\", repeat, repeatType, repeatDelay = 0, ...remainingTransition } = valueTransition;\n            let { ease = defaultTransition.ease || \"easeOut\", duration } = valueTransition;\n            /**\n             * Resolve stagger() if defined.\n             */\n            const calculatedDelay = typeof delay === \"function\"\n                ? delay(elementIndex, numSubjects)\n                : delay;\n            /**\n             * If this animation should and can use a spring, generate a spring easing function.\n             */\n            const numKeyframes = valueKeyframesAsList.length;\n            const createGenerator = isGenerator(type)\n                ? type\n                : generators?.[type || \"keyframes\"];\n            if (numKeyframes <= 2 && createGenerator) {\n                /**\n                 * As we're creating an easing function from a spring,\n                 * ideally we want to generate it using the real distance\n                 * between the two keyframes. However this isn't always\n                 * possible - in these situations we use 0-100.\n                 */\n                let absoluteDelta = 100;\n                if (numKeyframes === 2 &&\n                    isNumberKeyframesArray(valueKeyframesAsList)) {\n                    const delta = valueKeyframesAsList[1] - valueKeyframesAsList[0];\n                    absoluteDelta = Math.abs(delta);\n                }\n                const springTransition = {\n                    ...defaultTransition,\n                    ...remainingTransition,\n                };\n                if (duration !== undefined) {\n                    springTransition.duration = secondsToMilliseconds(duration);\n                }\n                const springEasing = createGeneratorEasing(springTransition, absoluteDelta, createGenerator);\n                ease = springEasing.ease;\n                duration = springEasing.duration;\n            }\n            duration ?? (duration = defaultDuration);\n            const startTime = currentTime + calculatedDelay;\n            /**\n             * If there's only one time offset of 0, fill in a second with length 1\n             */\n            if (times.length === 1 && times[0] === 0) {\n                times[1] = 1;\n            }\n            /**\n             * Fill out if offset if fewer offsets than keyframes\n             */\n            const remainder = times.length - valueKeyframesAsList.length;\n            remainder > 0 && fillOffset(times, remainder);\n            /**\n             * If only one value has been set, ie [1], push a null to the start of\n             * the keyframe array. This will let us mark a keyframe at this point\n             * that will later be hydrated with the previous value.\n             */\n            valueKeyframesAsList.length === 1 &&\n                valueKeyframesAsList.unshift(null);\n            /**\n             * Segments can't express `repeat: Infinity` or very large\n             * counts — they'd leave dead time after the segment or\n             * explode the keyframe array. Ignore with a warning.\n             */\n            if (repeat) {\n                warning(repeat < MAX_REPEAT, `Sequence segments can't repeat ${repeat} times — ignoring repeat option. Use a value below ${MAX_REPEAT} or apply repeat at the sequence level instead.`);\n            }\n            if (repeat && repeat < MAX_REPEAT) {\n                /**\n                 * Express repeatDelay in units of a single iteration's duration\n                 * so it can be added to the per-iteration time offsets below\n                 * before they're normalized to 0-1.\n                 */\n                const repeatDelayUnits = duration > 0 ? repeatDelay / duration : 0;\n                duration = calculateRepeatDuration(duration, repeat, repeatDelay);\n                const originalKeyframes = [...valueKeyframesAsList];\n                const originalTimes = [...times];\n                ease = Array.isArray(ease) ? [...ease] : [ease];\n                const originalEase = [...ease];\n                /**\n                 * For reverse/mirror, alternate iterations play the segment\n                 * backwards. mirror matches JSAnimation's mirroredGenerator:\n                 * reversed keyframes, easings unchanged. reverse matches\n                 * JSAnimation's iterationProgress = 1 - p: reversed\n                 * keyframes, easing array reversed AND each function easing\n                 * mapped through reverseEasing (string easings unchanged —\n                 * they're resolved later by the keyframes engine).\n                 */\n                const isFlipping = repeatType === \"reverse\" || repeatType === \"mirror\";\n                let flippedKeyframes = originalKeyframes;\n                let flippedEases = originalEase;\n                if (isFlipping) {\n                    flippedKeyframes = [...originalKeyframes].reverse();\n                    if (repeatType === \"reverse\") {\n                        flippedEases = [...originalEase]\n                            .reverse()\n                            .map((e) => typeof e === \"function\"\n                            ? reverseEasing(e)\n                            : e);\n                    }\n                }\n                for (let repeatIndex = 0; repeatIndex < repeat; repeatIndex++) {\n                    const isFlipped = isFlipping && repeatIndex % 2 === 0;\n                    const iterKeyframes = isFlipped\n                        ? flippedKeyframes\n                        : originalKeyframes;\n                    const iterEase = isFlipped ? flippedEases : originalEase;\n                    const iterStartOffset = (repeatIndex + 1) * (1 + repeatDelayUnits);\n                    /**\n                     * If repeatDelay is set, hold the previous iteration's\n                     * final value through the delay by inserting a keyframe\n                     * at the moment the next iteration begins.\n                     */\n                    if (repeatDelayUnits > 0) {\n                        valueKeyframesAsList.push(valueKeyframesAsList[valueKeyframesAsList.length - 1]);\n                        times.push(iterStartOffset);\n                        ease.push(\"linear\");\n                    }\n                    valueKeyframesAsList.push(...iterKeyframes);\n                    for (let keyframeIndex = 0; keyframeIndex < iterKeyframes.length; keyframeIndex++) {\n                        times.push(originalTimes[keyframeIndex] + iterStartOffset);\n                        ease.push(keyframeIndex === 0\n                            ? \"linear\"\n                            : getEasingForSegment(iterEase, keyframeIndex - 1));\n                    }\n                }\n                normalizeTimes(times, repeat, repeatDelayUnits);\n            }\n            const targetTime = startTime + duration;\n            /**\n             * Add keyframes, mapping offsets to absolute time.\n             */\n            addKeyframes(valueSequence, valueKeyframesAsList, ease, times, startTime, targetTime);\n            maxDuration = Math.max(calculatedDelay + duration, maxDuration);\n            totalDuration = Math.max(targetTime, totalDuration);\n        };\n        if (isMotionValue(subject)) {\n            const subjectSequence = getSubjectSequence(subject, sequences);\n            resolveValueSequence(keyframes, transition, getValueSequence(\"default\", subjectSequence));\n        }\n        else {\n            const subjects = resolveSubjects(subject, keyframes, scope, elementCache);\n            const numSubjects = subjects.length;\n            /**\n             * For every element in this segment, process the defined values.\n             */\n            for (let subjectIndex = 0; subjectIndex < numSubjects; subjectIndex++) {\n                /**\n                 * Cast necessary, but we know these are of this type\n                 */\n                keyframes = keyframes;\n                transition = transition;\n                const thisSubject = subjects[subjectIndex];\n                const subjectSequence = getSubjectSequence(thisSubject, sequences);\n                for (const key in keyframes) {\n                    resolveValueSequence(keyframes[key], getValueTransition(transition, key), getValueSequence(key, subjectSequence), subjectIndex, numSubjects);\n                }\n            }\n        }\n        prevTime = currentTime;\n        currentTime += maxDuration;\n    }\n    /**\n     * For every element and value combination create a new animation.\n     */\n    sequences.forEach((valueSequences, element) => {\n        for (const key in valueSequences) {\n            const valueSequence = valueSequences[key];\n            /**\n             * Arrange all the keyframes in ascending time order.\n             */\n            valueSequence.sort(compareByTime);\n            const keyframes = [];\n            const valueOffset = [];\n            const valueEasing = [];\n            /**\n             * For each keyframe, translate absolute times into\n             * relative offsets based on the total duration of the timeline.\n             */\n            for (let i = 0; i < valueSequence.length; i++) {\n                const { at, value, easing } = valueSequence[i];\n                keyframes.push(value);\n                valueOffset.push(progress(0, totalDuration, at));\n                valueEasing.push(easing || \"easeOut\");\n            }\n            /**\n             * If the first keyframe doesn't land on offset: 0\n             * provide one by duplicating the initial keyframe. This ensures\n             * it snaps to the first keyframe when the animation starts.\n             */\n            if (valueOffset[0] !== 0) {\n                valueOffset.unshift(0);\n                keyframes.unshift(keyframes[0]);\n                valueEasing.unshift(defaultSegmentEasing);\n            }\n            /**\n             * If the last keyframe doesn't land on offset: 1\n             * provide one with a null wildcard value. This will ensure it\n             * stays static until the end of the animation.\n             */\n            if (valueOffset[valueOffset.length - 1] !== 1) {\n                valueOffset.push(1);\n                keyframes.push(null);\n            }\n            if (!animationDefinitions.has(element)) {\n                animationDefinitions.set(element, {\n                    keyframes: {},\n                    transition: {},\n                });\n            }\n            const definition = animationDefinitions.get(element);\n            definition.keyframes[key] = keyframes;\n            /**\n             * Exclude `type` from defaultTransition since springs have been\n             * converted to duration-based easing functions in resolveValueSequence.\n             * Including `type: \"spring\"` would cause JSAnimation to error when\n             * the merged keyframes array has more than 2 keyframes.\n             */\n            const { type: _type, ...remainingDefaultTransition } = defaultTransition;\n            definition.transition[key] = {\n                ...remainingDefaultTransition,\n                duration: totalDuration,\n                ease: valueEasing,\n                times: valueOffset,\n                ...sequenceTransition,\n            };\n        }\n    });\n    return animationDefinitions;\n}\nfunction getSubjectSequence(subject, sequences) {\n    !sequences.has(subject) && sequences.set(subject, {});\n    return sequences.get(subject);\n}\nfunction getValueSequence(name, sequences) {\n    if (!sequences[name])\n        sequences[name] = [];\n    return sequences[name];\n}\nfunction keyframesAsList(keyframes) {\n    return Array.isArray(keyframes) ? keyframes : [keyframes];\n}\nfunction getValueTransition(transition, key) {\n    return transition && transition[key]\n        ? {\n            ...transition,\n            ...transition[key],\n        }\n        : { ...transition };\n}\nconst isNumber = (keyframe) => typeof keyframe === \"number\";\nconst isNumberKeyframesArray = (keyframes) => keyframes.every(isNumber);\n\nexport { createAnimationsFromSequence, getValueTransition };\n//# sourceMappingURL=create.mjs.map\n","import { isSVGElement, isSVGSVGElement, SVGVisualElement, HTMLVisualElement, visualElementStore, ObjectVisualElement } from 'motion-dom';\n\nfunction createDOMVisualElement(element) {\n    const options = {\n        presenceContext: null,\n        props: {},\n        visualState: {\n            renderState: {\n                transform: {},\n                transformOrigin: {},\n                style: {},\n                vars: {},\n                attrs: {},\n            },\n            latestValues: {},\n        },\n    };\n    const node = isSVGElement(element) && !isSVGSVGElement(element)\n        ? new SVGVisualElement(options)\n        : new HTMLVisualElement(options);\n    node.mount(element);\n    visualElementStore.set(element, node);\n}\nfunction createObjectVisualElement(subject) {\n    const options = {\n        presenceContext: null,\n        props: {},\n        visualState: {\n            renderState: {\n                output: {},\n            },\n            latestValues: {},\n        },\n    };\n    const node = new ObjectVisualElement(options);\n    node.mount(subject);\n    visualElementStore.set(subject, node);\n}\n\nexport { createDOMVisualElement, createObjectVisualElement };\n//# sourceMappingURL=create-visual-element.mjs.map\n","import { animateSingleValue, visualElementStore, animateTarget, isMotionValue } from 'motion-dom';\nimport { invariant } from 'motion-utils';\nimport { createDOMVisualElement, createObjectVisualElement } from '../utils/create-visual-element.mjs';\nimport { isDOMKeyframes } from '../utils/is-dom-keyframes.mjs';\nimport { resolveSubjects } from './resolve-subjects.mjs';\n\nfunction isSingleValue(subject, keyframes) {\n    return (isMotionValue(subject) ||\n        typeof subject === \"number\" ||\n        (typeof subject === \"string\" && !isDOMKeyframes(keyframes)));\n}\n/**\n * Implementation\n */\nfunction animateSubject(subject, keyframes, options, scope) {\n    const animations = [];\n    if (isSingleValue(subject, keyframes)) {\n        animations.push(animateSingleValue(subject, isDOMKeyframes(keyframes)\n            ? keyframes.default || keyframes\n            : keyframes, options ? options.default || options : options));\n    }\n    else {\n        // Gracefully handle null/undefined subjects (e.g., from querySelector returning null)\n        if (subject == null) {\n            return animations;\n        }\n        const subjects = resolveSubjects(subject, keyframes, scope);\n        const numSubjects = subjects.length;\n        invariant(Boolean(numSubjects), \"No valid elements provided.\", \"no-valid-elements\");\n        for (let i = 0; i < numSubjects; i++) {\n            const thisSubject = subjects[i];\n            const createVisualElement = thisSubject instanceof Element\n                ? createDOMVisualElement\n                : createObjectVisualElement;\n            if (!visualElementStore.has(thisSubject)) {\n                createVisualElement(thisSubject);\n            }\n            const visualElement = visualElementStore.get(thisSubject);\n            const transition = { ...options };\n            /**\n             * Resolve stagger function if provided.\n             */\n            if (\"delay\" in transition &&\n                typeof transition.delay === \"function\") {\n                transition.delay = transition.delay(i, numSubjects);\n            }\n            animations.push(...animateTarget(visualElement, { ...keyframes, transition }, {}));\n        }\n    }\n    return animations;\n}\n\nexport { animateSubject };\n//# sourceMappingURL=subject.mjs.map\n","import { motionValue, spring } from 'motion-dom';\nimport { createAnimationsFromSequence } from '../sequence/create.mjs';\nimport { animateSubject } from './subject.mjs';\n\nfunction animateSequence(sequence, options, scope) {\n    const animations = [];\n    /**\n     * Pre-process: replace function segments with MotionValue segments,\n     * subscribe callbacks immediately\n     */\n    const processedSequence = sequence.map((segment) => {\n        if (Array.isArray(segment) && typeof segment[0] === \"function\") {\n            const callback = segment[0];\n            const mv = motionValue(0);\n            mv.on(\"change\", callback);\n            if (segment.length === 1) {\n                return [mv, [0, 1]];\n            }\n            else if (segment.length === 2) {\n                return [mv, [0, 1], segment[1]];\n            }\n            else {\n                return [mv, segment[1], segment[2]];\n            }\n        }\n        return segment;\n    });\n    const animationDefinitions = createAnimationsFromSequence(processedSequence, options, scope, { spring });\n    animationDefinitions.forEach(({ keyframes, transition }, subject) => {\n        animations.push(...animateSubject(subject, keyframes, transition));\n    });\n    return animations;\n}\n\nexport { animateSequence };\n//# sourceMappingURL=sequence.mjs.map\n","import { GroupAnimationWithThen } from 'motion-dom';\nimport { removeItem } from 'motion-utils';\nimport { animateSequence } from './sequence.mjs';\nimport { animateSubject } from './subject.mjs';\n\nfunction isSequence(value) {\n    return Array.isArray(value) && value.some(Array.isArray);\n}\n/**\n * Creates an animation function that is optionally scoped\n * to a specific element.\n */\nfunction createScopedAnimate(options = {}) {\n    const { scope, reduceMotion, skipAnimations } = options;\n    /**\n     * Implementation\n     */\n    function scopedAnimate(subjectOrSequence, optionsOrKeyframes, options) {\n        let animations = [];\n        let animationOnComplete;\n        const inherited = {};\n        if (reduceMotion !== undefined)\n            inherited.reduceMotion = reduceMotion;\n        if (skipAnimations !== undefined)\n            inherited.skipAnimations = skipAnimations;\n        if (isSequence(subjectOrSequence)) {\n            const { onComplete, ...sequenceOptions } = optionsOrKeyframes || {};\n            if (typeof onComplete === \"function\") {\n                animationOnComplete = onComplete;\n            }\n            animations = animateSequence(subjectOrSequence, { ...inherited, ...sequenceOptions }, scope);\n        }\n        else {\n            // Extract top-level onComplete so it doesn't get applied per-value\n            const { onComplete, ...rest } = options || {};\n            if (typeof onComplete === \"function\") {\n                animationOnComplete = onComplete;\n            }\n            animations = animateSubject(subjectOrSequence, optionsOrKeyframes, { ...inherited, ...rest }, scope);\n        }\n        const animation = new GroupAnimationWithThen(animations);\n        if (animationOnComplete) {\n            animation.finished.then(animationOnComplete);\n        }\n        if (scope) {\n            scope.animations.push(animation);\n            animation.finished.then(() => {\n                removeItem(scope.animations, animation);\n            });\n        }\n        return animation;\n    }\n    return scopedAnimate;\n}\nconst animate = createScopedAnimate();\n\nexport { animate, createScopedAnimate };\n//# sourceMappingURL=index.mjs.map\n","import {\n  animate,\n  MotionValue,\n  useMotionValue,\n  useMotionValueEvent\n} from \"motion/react\";\n\nconst left = `0%`;\nconst right = `100%`;\nconst leftInset = `20%`;\nconst rightInset = `80%`;\nconst transparent = `#0000`; // 透明 → 隐藏\nconst opaque = `#000`; // 不透明 → 显示\n\nexport function useScrollXOverflowMaskImage(\n  scrollXProgress: MotionValue<number>\n): MotionValue<string> {\n  const maskImage = useMotionValue(\n    `linear-gradient(90deg, ${opaque}, ${opaque} ${left}, ${opaque} ${rightInset}, ${transparent})`\n  );\n\n  useMotionValueEvent(scrollXProgress, \"change\", (latest) => {\n    if (latest === 0) {\n      animate(\n        maskImage,\n        `linear-gradient(90deg, ${opaque}, ${opaque} ${left}, ${opaque} ${rightInset}, ${transparent})`\n      );\n    } else if (latest === 1) {\n      animate(\n        maskImage,\n        `linear-gradient(90deg, ${transparent}, ${opaque} ${leftInset}, ${opaque} ${right}, ${opaque})`\n      );\n    }\n    // 刚离开边缘\n    else if (\n      scrollXProgress.getPrevious() === 0 ||\n      scrollXProgress.getPrevious() === 1\n    ) {\n      animate(\n        maskImage,\n        `linear-gradient(90deg, ${transparent}, ${opaque} ${leftInset}, ${opaque} ${rightInset}, ${transparent})`\n      );\n    }\n    // 其他：值不变\n  });\n\n  return maskImage;\n}\n","import { frame } from \"motion\";\nimport { MotionValue, useSpring } from \"motion/react\";\nimport { RefObject, useEffect } from \"react\";\n\nconst spring = { damping: 20, stiffness: 300, restDelta: 0.001 };\n\nexport function useFollowPointer(ref: RefObject<HTMLElement | null>): {\n  x: MotionValue<number>;\n  y: MotionValue<number>;\n} {\n  const transformX = useSpring(0, spring);\n  const transformY = useSpring(0, spring);\n\n  useEffect(() => {\n    if (!ref.current) return;\n\n    const handlePointerMove = ({ clientX, clientY }: PointerEvent) => {\n      // only update the motion values once per frame, reducing unnecessary work\n      frame.read(() => {\n        if (!ref.current) return;\n\n        const element = ref.current;\n\n        const prevTransformX = transformX.get();\n        const prevTransformY = transformY.get();\n\n        const rect = element.getBoundingClientRect();\n        const dx = clientX - rect.left - rect.width / 2;\n        const dy = clientY - rect.top - rect.height / 2;\n\n        transformX.set(prevTransformX + dx);\n        transformY.set(prevTransformY + dy);\n      });\n    };\n\n    window.addEventListener(\"pointermove\", handlePointerMove);\n\n    return () => window.removeEventListener(\"pointermove\", handlePointerMove);\n  }, [ref]);\n\n  return { x: transformX, y: transformY };\n}\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      a,\n      b = polygon[n - 1],\n      area = 0;\n\n  while (++i < n) {\n    a = b;\n    b = polygon[i];\n    area += a[1] * b[0] - a[0] * b[1];\n  }\n\n  return area / 2;\n}\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      b = polygon[n - 1],\n      xa,\n      ya,\n      xb = b[0],\n      yb = b[1],\n      perimeter = 0;\n\n  while (++i < n) {\n    xa = xb;\n    ya = yb;\n    b = polygon[i];\n    xb = b[0];\n    yb = b[1];\n    xa -= xb;\n    ya -= yb;\n    perimeter += Math.sqrt(xa * xa + ya * ya);\n  }\n\n  return perimeter;\n}\n","'use strict';\n\n\nvar paramCounts = { a: 7, c: 6, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, z: 0 };\n\nvar SPECIAL_SPACES = [\n  0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006,\n  0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF\n];\n\nfunction isSpace(ch) {\n  return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029) || // Line terminators\n    // White spaces\n    (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) ||\n    (ch >= 0x1680 && SPECIAL_SPACES.indexOf(ch) >= 0);\n}\n\nfunction isCommand(code) {\n  /*eslint-disable no-bitwise*/\n  switch (code | 0x20) {\n    case 0x6D/* m */:\n    case 0x7A/* z */:\n    case 0x6C/* l */:\n    case 0x68/* h */:\n    case 0x76/* v */:\n    case 0x63/* c */:\n    case 0x73/* s */:\n    case 0x71/* q */:\n    case 0x74/* t */:\n    case 0x61/* a */:\n    case 0x72/* r */:\n      return true;\n  }\n  return false;\n}\n\nfunction isArc(code) {\n  return (code | 0x20) === 0x61;\n}\n\nfunction isDigit(code) {\n  return (code >= 48 && code <= 57);   // 0..9\n}\n\nfunction isDigitStart(code) {\n  return (code >= 48 && code <= 57) || /* 0..9 */\n          code === 0x2B || /* + */\n          code === 0x2D || /* - */\n          code === 0x2E;   /* . */\n}\n\n\nfunction State(path) {\n  this.index  = 0;\n  this.path   = path;\n  this.max    = path.length;\n  this.result = [];\n  this.param  = 0.0;\n  this.err    = '';\n  this.segmentStart = 0;\n  this.data   = [];\n}\n\nfunction skipSpaces(state) {\n  while (state.index < state.max && isSpace(state.path.charCodeAt(state.index))) {\n    state.index++;\n  }\n}\n\n\nfunction scanFlag(state) {\n  var ch = state.path.charCodeAt(state.index);\n\n  if (ch === 0x30/* 0 */) {\n    state.param = 0;\n    state.index++;\n    return;\n  }\n\n  if (ch === 0x31/* 1 */) {\n    state.param = 1;\n    state.index++;\n    return;\n  }\n\n  state.err = 'SvgPath: arc flag can be 0 or 1 only (at pos ' + state.index + ')';\n}\n\n\nfunction scanParam(state) {\n  var start = state.index,\n      index = start,\n      max = state.max,\n      zeroFirst = false,\n      hasCeiling = false,\n      hasDecimal = false,\n      hasDot = false,\n      ch;\n\n  if (index >= max) {\n    state.err = 'SvgPath: missed param (at pos ' + index + ')';\n    return;\n  }\n  ch = state.path.charCodeAt(index);\n\n  if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n    index++;\n    ch = (index < max) ? state.path.charCodeAt(index) : 0;\n  }\n\n  // This logic is shamelessly borrowed from Esprima\n  // https://github.com/ariya/esprimas\n  //\n  if (!isDigit(ch) && ch !== 0x2E/* . */) {\n    state.err = 'SvgPath: param should start with 0..9 or `.` (at pos ' + index + ')';\n    return;\n  }\n\n  if (ch !== 0x2E/* . */) {\n    zeroFirst = (ch === 0x30/* 0 */);\n    index++;\n\n    ch = (index < max) ? state.path.charCodeAt(index) : 0;\n\n    if (zeroFirst && index < max) {\n      // decimal number starts with '0' such as '09' is illegal.\n      if (ch && isDigit(ch)) {\n        state.err = 'SvgPath: numbers started with `0` such as `09` are illegal (at pos ' + start + ')';\n        return;\n      }\n    }\n\n    while (index < max && isDigit(state.path.charCodeAt(index))) {\n      index++;\n      hasCeiling = true;\n    }\n    ch = (index < max) ? state.path.charCodeAt(index) : 0;\n  }\n\n  if (ch === 0x2E/* . */) {\n    hasDot = true;\n    index++;\n    while (isDigit(state.path.charCodeAt(index))) {\n      index++;\n      hasDecimal = true;\n    }\n    ch = (index < max) ? state.path.charCodeAt(index) : 0;\n  }\n\n  if (ch === 0x65/* e */ || ch === 0x45/* E */) {\n    if (hasDot && !hasCeiling && !hasDecimal) {\n      state.err = 'SvgPath: invalid float exponent (at pos ' + index + ')';\n      return;\n    }\n\n    index++;\n\n    ch = (index < max) ? state.path.charCodeAt(index) : 0;\n    if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n      index++;\n    }\n    if (index < max && isDigit(state.path.charCodeAt(index))) {\n      while (index < max && isDigit(state.path.charCodeAt(index))) {\n        index++;\n      }\n    } else {\n      state.err = 'SvgPath: invalid float exponent (at pos ' + index + ')';\n      return;\n    }\n  }\n\n  state.index = index;\n  state.param = parseFloat(state.path.slice(start, index)) + 0.0;\n}\n\n\nfunction finalizeSegment(state) {\n  var cmd, cmdLC;\n\n  // Process duplicated commands (without comand name)\n\n  // This logic is shamelessly borrowed from Raphael\n  // https://github.com/DmitryBaranovskiy/raphael/\n  //\n  cmd   = state.path[state.segmentStart];\n  cmdLC = cmd.toLowerCase();\n\n  var params = state.data;\n\n  if (cmdLC === 'm' && params.length > 2) {\n    state.result.push([ cmd, params[0], params[1] ]);\n    params = params.slice(2);\n    cmdLC = 'l';\n    cmd = (cmd === 'm') ? 'l' : 'L';\n  }\n\n  if (cmdLC === 'r') {\n    state.result.push([ cmd ].concat(params));\n  } else {\n\n    while (params.length >= paramCounts[cmdLC]) {\n      state.result.push([ cmd ].concat(params.splice(0, paramCounts[cmdLC])));\n      if (!paramCounts[cmdLC]) {\n        break;\n      }\n    }\n  }\n}\n\n\nfunction scanSegment(state) {\n  var max = state.max,\n      cmdCode, is_arc, comma_found, need_params, i;\n\n  state.segmentStart = state.index;\n  cmdCode = state.path.charCodeAt(state.index);\n  is_arc = isArc(cmdCode);\n\n  if (!isCommand(cmdCode)) {\n    state.err = 'SvgPath: bad command ' + state.path[state.index] + ' (at pos ' + state.index + ')';\n    return;\n  }\n\n  need_params = paramCounts[state.path[state.index].toLowerCase()];\n\n  state.index++;\n  skipSpaces(state);\n\n  state.data = [];\n\n  if (!need_params) {\n    // Z\n    finalizeSegment(state);\n    return;\n  }\n\n  comma_found = false;\n\n  for (;;) {\n    for (i = need_params; i > 0; i--) {\n      if (is_arc && (i === 3 || i === 4)) scanFlag(state);\n      else scanParam(state);\n\n      if (state.err.length) {\n        finalizeSegment(state);\n        return;\n      }\n      state.data.push(state.param);\n\n      skipSpaces(state);\n      comma_found = false;\n\n      if (state.index < max && state.path.charCodeAt(state.index) === 0x2C/* , */) {\n        state.index++;\n        skipSpaces(state);\n        comma_found = true;\n      }\n    }\n\n    // after ',' param is mandatory\n    if (comma_found) {\n      continue;\n    }\n\n    if (state.index >= state.max) {\n      break;\n    }\n\n    // Stop on next segment\n    if (!isDigitStart(state.path.charCodeAt(state.index))) {\n      break;\n    }\n  }\n\n  finalizeSegment(state);\n}\n\n\n/* Returns array of segments:\n *\n * [\n *   [ command, coord1, coord2, ... ]\n * ]\n */\nmodule.exports = function pathParse(svgPath) {\n  var state = new State(svgPath);\n  var max = state.max;\n\n  skipSpaces(state);\n\n  while (state.index < max && !state.err.length) {\n    scanSegment(state);\n  }\n\n  if (state.result.length) {\n    if ('mM'.indexOf(state.result[0][0]) < 0) {\n      state.err = 'SvgPath: string should start with `M` or `m`';\n      state.result = [];\n    } else {\n      state.result[0][0] = 'M';\n    }\n  }\n\n  return {\n    err: state.err,\n    segments: state.result\n  };\n};\n","'use strict';\n\n// combine 2 matrixes\n// m1, m2 - [a, b, c, d, e, g]\n//\nfunction combine(m1, m2) {\n  return [\n    m1[0] * m2[0] + m1[2] * m2[1],\n    m1[1] * m2[0] + m1[3] * m2[1],\n    m1[0] * m2[2] + m1[2] * m2[3],\n    m1[1] * m2[2] + m1[3] * m2[3],\n    m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n    m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\n  ];\n}\n\n\nfunction Matrix() {\n  if (!(this instanceof Matrix)) { return new Matrix(); }\n  this.queue = [];   // list of matrixes to apply\n  this.cache = null; // combined matrix cache\n}\n\n\nMatrix.prototype.matrix = function (m) {\n  if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0) {\n    return this;\n  }\n  this.cache = null;\n  this.queue.push(m);\n  return this;\n};\n\n\nMatrix.prototype.translate = function (tx, ty) {\n  if (tx !== 0 || ty !== 0) {\n    this.cache = null;\n    this.queue.push([ 1, 0, 0, 1, tx, ty ]);\n  }\n  return this;\n};\n\n\nMatrix.prototype.scale = function (sx, sy) {\n  if (sx !== 1 || sy !== 1) {\n    this.cache = null;\n    this.queue.push([ sx, 0, 0, sy, 0, 0 ]);\n  }\n  return this;\n};\n\n\nMatrix.prototype.rotate = function (angle, rx, ry) {\n  var rad, cos, sin;\n\n  if (angle !== 0) {\n    this.translate(rx, ry);\n\n    rad = angle * Math.PI / 180;\n    cos = Math.cos(rad);\n    sin = Math.sin(rad);\n\n    this.queue.push([ cos, sin, -sin, cos, 0, 0 ]);\n    this.cache = null;\n\n    this.translate(-rx, -ry);\n  }\n  return this;\n};\n\n\nMatrix.prototype.skewX = function (angle) {\n  if (angle !== 0) {\n    this.cache = null;\n    this.queue.push([ 1, 0, Math.tan(angle * Math.PI / 180), 1, 0, 0 ]);\n  }\n  return this;\n};\n\n\nMatrix.prototype.skewY = function (angle) {\n  if (angle !== 0) {\n    this.cache = null;\n    this.queue.push([ 1, Math.tan(angle * Math.PI / 180), 0, 1, 0, 0 ]);\n  }\n  return this;\n};\n\n\n// Flatten queue\n//\nMatrix.prototype.toArray = function () {\n  if (this.cache) {\n    return this.cache;\n  }\n\n  if (!this.queue.length) {\n    this.cache = [ 1, 0, 0, 1, 0, 0 ];\n    return this.cache;\n  }\n\n  this.cache = this.queue[0];\n\n  if (this.queue.length === 1) {\n    return this.cache;\n  }\n\n  for (var i = 1; i < this.queue.length; i++) {\n    this.cache = combine(this.cache, this.queue[i]);\n  }\n\n  return this.cache;\n};\n\n\n// Apply list of matrixes to (x,y) point.\n// If `isRelative` set, `translate` component of matrix will be skipped\n//\nMatrix.prototype.calc = function (x, y, isRelative) {\n  var m;\n\n  // Don't change point on empty transforms queue\n  if (!this.queue.length) { return [ x, y ]; }\n\n  // Calculate final matrix, if not exists\n  //\n  // NB. if you deside to apply transforms to point one-by-one,\n  // they should be taken in reverse order\n\n  if (!this.cache) {\n    this.cache = this.toArray();\n  }\n\n  m = this.cache;\n\n  // Apply matrix to point\n  return [\n    x * m[0] + y * m[2] + (isRelative ? 0 : m[4]),\n    x * m[1] + y * m[3] + (isRelative ? 0 : m[5])\n  ];\n};\n\n\nmodule.exports = Matrix;\n","'use strict';\n\n\nvar Matrix = require('./matrix');\n\nvar operations = {\n  matrix: true,\n  scale: true,\n  rotate: true,\n  translate: true,\n  skewX: true,\n  skewY: true\n};\n\nvar CMD_SPLIT_RE    = /\\s*(matrix|translate|scale|rotate|skewX|skewY)\\s*\\(\\s*(.+?)\\s*\\)[\\s,]*/;\nvar PARAMS_SPLIT_RE = /[\\s,]+/;\n\n\nmodule.exports = function transformParse(transformString) {\n  var matrix = new Matrix();\n  var cmd, params;\n\n  // Split value into ['', 'translate', '10 50', '', 'scale', '2', '', 'rotate',  '-45', '']\n  transformString.split(CMD_SPLIT_RE).forEach(function (item) {\n\n    // Skip empty elements\n    if (!item.length) { return; }\n\n    // remember operation\n    if (typeof operations[item] !== 'undefined') {\n      cmd = item;\n      return;\n    }\n\n    // extract params & att operation to matrix\n    params = item.split(PARAMS_SPLIT_RE).map(function (i) {\n      return +i || 0;\n    });\n\n    // If params count is not correct - ignore command\n    switch (cmd) {\n      case 'matrix':\n        if (params.length === 6) {\n          matrix.matrix(params);\n        }\n        return;\n\n      case 'scale':\n        if (params.length === 1) {\n          matrix.scale(params[0], params[0]);\n        } else if (params.length === 2) {\n          matrix.scale(params[0], params[1]);\n        }\n        return;\n\n      case 'rotate':\n        if (params.length === 1) {\n          matrix.rotate(params[0], 0, 0);\n        } else if (params.length === 3) {\n          matrix.rotate(params[0], params[1], params[2]);\n        }\n        return;\n\n      case 'translate':\n        if (params.length === 1) {\n          matrix.translate(params[0], 0);\n        } else if (params.length === 2) {\n          matrix.translate(params[0], params[1]);\n        }\n        return;\n\n      case 'skewX':\n        if (params.length === 1) {\n          matrix.skewX(params[0]);\n        }\n        return;\n\n      case 'skewY':\n        if (params.length === 1) {\n          matrix.skewY(params[0]);\n        }\n        return;\n    }\n  });\n\n  return matrix;\n};\n","// Convert an arc to a sequence of cubic bézier curves\n//\n'use strict';\n\n\nvar TAU = Math.PI * 2;\n\n\n/* eslint-disable space-infix-ops */\n\n// Calculate an angle between two unit vectors\n//\n// Since we measure angle between radii of circular arcs,\n// we can use simplified math (without length normalization)\n//\nfunction unit_vector_angle(ux, uy, vx, vy) {\n  var sign = (ux * vy - uy * vx < 0) ? -1 : 1;\n  var dot  = ux * vx + uy * vy;\n\n  // Add this to work with arbitrary vectors:\n  // dot /= Math.sqrt(ux * ux + uy * uy) * Math.sqrt(vx * vx + vy * vy);\n\n  // rounding errors, e.g. -1.0000000000000002 can screw up this\n  if (dot >  1.0) { dot =  1.0; }\n  if (dot < -1.0) { dot = -1.0; }\n\n  return sign * Math.acos(dot);\n}\n\n\n// Convert from endpoint to center parameterization,\n// see http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n//\n// Return [cx, cy, theta1, delta_theta]\n//\nfunction get_arc_center(x1, y1, x2, y2, fa, fs, rx, ry, sin_phi, cos_phi) {\n  // Step 1.\n  //\n  // Moving an ellipse so origin will be the middlepoint between our two\n  // points. After that, rotate it to line up ellipse axes with coordinate\n  // axes.\n  //\n  var x1p =  cos_phi*(x1-x2)/2 + sin_phi*(y1-y2)/2;\n  var y1p = -sin_phi*(x1-x2)/2 + cos_phi*(y1-y2)/2;\n\n  var rx_sq  =  rx * rx;\n  var ry_sq  =  ry * ry;\n  var x1p_sq = x1p * x1p;\n  var y1p_sq = y1p * y1p;\n\n  // Step 2.\n  //\n  // Compute coordinates of the centre of this ellipse (cx', cy')\n  // in the new coordinate system.\n  //\n  var radicant = (rx_sq * ry_sq) - (rx_sq * y1p_sq) - (ry_sq * x1p_sq);\n\n  if (radicant < 0) {\n    // due to rounding errors it might be e.g. -1.3877787807814457e-17\n    radicant = 0;\n  }\n\n  radicant /=   (rx_sq * y1p_sq) + (ry_sq * x1p_sq);\n  radicant = Math.sqrt(radicant) * (fa === fs ? -1 : 1);\n\n  var cxp = radicant *  rx/ry * y1p;\n  var cyp = radicant * -ry/rx * x1p;\n\n  // Step 3.\n  //\n  // Transform back to get centre coordinates (cx, cy) in the original\n  // coordinate system.\n  //\n  var cx = cos_phi*cxp - sin_phi*cyp + (x1+x2)/2;\n  var cy = sin_phi*cxp + cos_phi*cyp + (y1+y2)/2;\n\n  // Step 4.\n  //\n  // Compute angles (theta1, delta_theta).\n  //\n  var v1x =  (x1p - cxp) / rx;\n  var v1y =  (y1p - cyp) / ry;\n  var v2x = (-x1p - cxp) / rx;\n  var v2y = (-y1p - cyp) / ry;\n\n  var theta1 = unit_vector_angle(1, 0, v1x, v1y);\n  var delta_theta = unit_vector_angle(v1x, v1y, v2x, v2y);\n\n  if (fs === 0 && delta_theta > 0) {\n    delta_theta -= TAU;\n  }\n  if (fs === 1 && delta_theta < 0) {\n    delta_theta += TAU;\n  }\n\n  return [ cx, cy, theta1, delta_theta ];\n}\n\n//\n// Approximate one unit arc segment with bézier curves,\n// see http://math.stackexchange.com/questions/873224\n//\nfunction approximate_unit_arc(theta1, delta_theta) {\n  var alpha = 4/3 * Math.tan(delta_theta/4);\n\n  var x1 = Math.cos(theta1);\n  var y1 = Math.sin(theta1);\n  var x2 = Math.cos(theta1 + delta_theta);\n  var y2 = Math.sin(theta1 + delta_theta);\n\n  return [ x1, y1, x1 - y1*alpha, y1 + x1*alpha, x2 + y2*alpha, y2 - x2*alpha, x2, y2 ];\n}\n\nmodule.exports = function a2c(x1, y1, x2, y2, fa, fs, rx, ry, phi) {\n  var sin_phi = Math.sin(phi * TAU / 360);\n  var cos_phi = Math.cos(phi * TAU / 360);\n\n  // Make sure radii are valid\n  //\n  var x1p =  cos_phi*(x1-x2)/2 + sin_phi*(y1-y2)/2;\n  var y1p = -sin_phi*(x1-x2)/2 + cos_phi*(y1-y2)/2;\n\n  if (x1p === 0 && y1p === 0) {\n    // we're asked to draw line to itself\n    return [];\n  }\n\n  if (rx === 0 || ry === 0) {\n    // one of the radii is zero\n    return [];\n  }\n\n\n  // Compensate out-of-range radii\n  //\n  rx = Math.abs(rx);\n  ry = Math.abs(ry);\n\n  var lambda = (x1p * x1p) / (rx * rx) + (y1p * y1p) / (ry * ry);\n  if (lambda > 1) {\n    rx *= Math.sqrt(lambda);\n    ry *= Math.sqrt(lambda);\n  }\n\n\n  // Get center parameters (cx, cy, theta1, delta_theta)\n  //\n  var cc = get_arc_center(x1, y1, x2, y2, fa, fs, rx, ry, sin_phi, cos_phi);\n\n  var result = [];\n  var theta1 = cc[2];\n  var delta_theta = cc[3];\n\n  // Split an arc to multiple segments, so each segment\n  // will be less than τ/4 (= 90°)\n  //\n  var segments = Math.max(Math.ceil(Math.abs(delta_theta) / (TAU / 4)), 1);\n  delta_theta /= segments;\n\n  for (var i = 0; i < segments; i++) {\n    result.push(approximate_unit_arc(theta1, delta_theta));\n    theta1 += delta_theta;\n  }\n\n  // We have a bezier approximation of a unit circle,\n  // now need to transform back to the original ellipse\n  //\n  return result.map(function (curve) {\n    for (var i = 0; i < curve.length; i += 2) {\n      var x = curve[i + 0];\n      var y = curve[i + 1];\n\n      // scale\n      x *= rx;\n      y *= ry;\n\n      // rotate\n      var xp = cos_phi*x - sin_phi*y;\n      var yp = sin_phi*x + cos_phi*y;\n\n      // translate\n      curve[i + 0] = xp + cc[0];\n      curve[i + 1] = yp + cc[1];\n    }\n\n    return curve;\n  });\n};\n","'use strict';\n\n/* eslint-disable space-infix-ops */\n\n// The precision used to consider an ellipse as a circle\n//\nvar epsilon = 0.0000000001;\n\n// To convert degree in radians\n//\nvar torad = Math.PI / 180;\n\n// Class constructor :\n//  an ellipse centred at 0 with radii rx,ry and x - axis - angle ax.\n//\nfunction Ellipse(rx, ry, ax) {\n  if (!(this instanceof Ellipse)) { return new Ellipse(rx, ry, ax); }\n  this.rx = rx;\n  this.ry = ry;\n  this.ax = ax;\n}\n\n// Apply a linear transform m to the ellipse\n// m is an array representing a matrix :\n//    -         -\n//   | m[0] m[2] |\n//   | m[1] m[3] |\n//    -         -\n//\nEllipse.prototype.transform = function (m) {\n  // We consider the current ellipse as image of the unit circle\n  // by first scale(rx,ry) and then rotate(ax) ...\n  // So we apply ma =  m x rotate(ax) x scale(rx,ry) to the unit circle.\n  var c = Math.cos(this.ax * torad), s = Math.sin(this.ax * torad);\n  var ma = [\n    this.rx * (m[0]*c + m[2]*s),\n    this.rx * (m[1]*c + m[3]*s),\n    this.ry * (-m[0]*s + m[2]*c),\n    this.ry * (-m[1]*s + m[3]*c)\n  ];\n\n  // ma * transpose(ma) = [ J L ]\n  //                      [ L K ]\n  // L is calculated later (if the image is not a circle)\n  var J = ma[0]*ma[0] + ma[2]*ma[2],\n      K = ma[1]*ma[1] + ma[3]*ma[3];\n\n  // the discriminant of the characteristic polynomial of ma * transpose(ma)\n  var D = ((ma[0]-ma[3])*(ma[0]-ma[3]) + (ma[2]+ma[1])*(ma[2]+ma[1])) *\n          ((ma[0]+ma[3])*(ma[0]+ma[3]) + (ma[2]-ma[1])*(ma[2]-ma[1]));\n\n  // the \"mean eigenvalue\"\n  var JK = (J + K) / 2;\n\n  // check if the image is (almost) a circle\n  if (D < epsilon * JK) {\n    // if it is\n    this.rx = this.ry = Math.sqrt(JK);\n    this.ax = 0;\n    return this;\n  }\n\n  // if it is not a circle\n  var L = ma[0]*ma[1] + ma[2]*ma[3];\n\n  D = Math.sqrt(D);\n\n  // {l1,l2} = the two eigen values of ma * transpose(ma)\n  var l1 = JK + D/2,\n      l2 = JK - D/2;\n  // the x - axis - rotation angle is the argument of the l1 - eigenvector\n  /*eslint-disable indent*/\n  this.ax = (Math.abs(L) < epsilon && Math.abs(l1 - K) < epsilon) ?\n    90\n  :\n    Math.atan(Math.abs(L) > Math.abs(l1 - K) ?\n      (l1 - J) / L\n    :\n      L / (l1 - K)\n    ) * 180 / Math.PI;\n  /*eslint-enable indent*/\n\n  // if ax > 0 => rx = sqrt(l1), ry = sqrt(l2), else exchange axes and ax += 90\n  if (this.ax >= 0) {\n    // if ax in [0,90]\n    this.rx = Math.sqrt(l1);\n    this.ry = Math.sqrt(l2);\n  } else {\n    // if ax in ]-90,0[ => exchange axes\n    this.ax += 90;\n    this.rx = Math.sqrt(l2);\n    this.ry = Math.sqrt(l1);\n  }\n\n  return this;\n};\n\n// Check if the ellipse is (almost) degenerate, i.e. rx = 0 or ry = 0\n//\nEllipse.prototype.isDegenerate = function () {\n  return (this.rx < epsilon * this.ry || this.ry < epsilon * this.rx);\n};\n\nmodule.exports = Ellipse;\n","// SVG Path transformations library\n//\n// Usage:\n//\n//    SvgPath('...')\n//      .translate(-150, -100)\n//      .scale(0.5)\n//      .translate(-150, -100)\n//      .toFixed(1)\n//      .toString()\n//\n\n'use strict';\n\n\nvar pathParse      = require('./path_parse');\nvar transformParse = require('./transform_parse');\nvar matrix         = require('./matrix');\nvar a2c            = require('./a2c');\nvar ellipse        = require('./ellipse');\n\n\n// Class constructor\n//\nfunction SvgPath(path) {\n  if (!(this instanceof SvgPath)) { return new SvgPath(path); }\n\n  var pstate = pathParse(path);\n\n  // Array of path segments.\n  // Each segment is array [command, param1, param2, ...]\n  this.segments = pstate.segments;\n\n  // Error message on parse error.\n  this.err      = pstate.err;\n\n  // Transforms stack for lazy evaluation\n  this.__stack    = [];\n}\n\nSvgPath.from = function (src) {\n  if (typeof src === 'string') return new SvgPath(src);\n\n  if (src instanceof SvgPath) {\n    // Create empty object\n    var s = new SvgPath('');\n\n    // Clone properies\n    s.err = src.err;\n    s.segments = src.segments.map(function (sgm) { return sgm.slice(); });\n    s.__stack = src.__stack.map(function (m) {\n      return matrix().matrix(m.toArray());\n    });\n\n    return s;\n  }\n\n  throw new Error('SvgPath.from: invalid param type ' + src);\n};\n\n\nSvgPath.prototype.__matrix = function (m) {\n  var self = this, i;\n\n  // Quick leave for empty matrix\n  if (!m.queue.length) { return; }\n\n  this.iterate(function (s, index, x, y) {\n    var p, result, name, isRelative;\n\n    switch (s[0]) {\n\n      // Process 'assymetric' commands separately\n      case 'v':\n        p      = m.calc(0, s[1], true);\n        result = (p[0] === 0) ? [ 'v', p[1] ] : [ 'l', p[0], p[1] ];\n        break;\n\n      case 'V':\n        p      = m.calc(x, s[1], false);\n        result = (p[0] === m.calc(x, y, false)[0]) ? [ 'V', p[1] ] : [ 'L', p[0], p[1] ];\n        break;\n\n      case 'h':\n        p      = m.calc(s[1], 0, true);\n        result = (p[1] === 0) ? [ 'h', p[0] ] : [ 'l', p[0], p[1] ];\n        break;\n\n      case 'H':\n        p      = m.calc(s[1], y, false);\n        result = (p[1] === m.calc(x, y, false)[1]) ? [ 'H', p[0] ] : [ 'L', p[0], p[1] ];\n        break;\n\n      case 'a':\n      case 'A':\n        // ARC is: ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]\n\n        // Drop segment if arc is empty (end point === start point)\n        /*if ((s[0] === 'A' && s[6] === x && s[7] === y) ||\n            (s[0] === 'a' && s[6] === 0 && s[7] === 0)) {\n          return [];\n        }*/\n\n        // Transform rx, ry and the x-axis-rotation\n        var ma = m.toArray();\n        var e = ellipse(s[1], s[2], s[3]).transform(ma);\n\n        // flip sweep-flag if matrix is not orientation-preserving\n        if (ma[0] * ma[3] - ma[1] * ma[2] < 0) {\n          s[5] = s[5] ? '0' : '1';\n        }\n\n        // Transform end point as usual (without translation for relative notation)\n        p = m.calc(s[6], s[7], s[0] === 'a');\n\n        // Empty arcs can be ignored by renderer, but should not be dropped\n        // to avoid collisions with `S A S` and so on. Replace with empty line.\n        if ((s[0] === 'A' && s[6] === x && s[7] === y) ||\n            (s[0] === 'a' && s[6] === 0 && s[7] === 0)) {\n          result = [ s[0] === 'a' ? 'l' : 'L', p[0], p[1] ];\n          break;\n        }\n\n        // if the resulting ellipse is (almost) a segment ...\n        if (e.isDegenerate()) {\n          // replace the arc by a line\n          result = [ s[0] === 'a' ? 'l' : 'L', p[0], p[1] ];\n        } else {\n          // if it is a real ellipse\n          // s[0], s[4] and s[5] are not modified\n          result = [ s[0], e.rx, e.ry, e.ax, s[4], s[5], p[0], p[1] ];\n        }\n\n        break;\n\n      case 'm':\n        // Edge case. The very first `m` should be processed as absolute, if happens.\n        // Make sense for coord shift transforms.\n        isRelative = index > 0;\n\n        p = m.calc(s[1], s[2], isRelative);\n        result = [ 'm', p[0], p[1] ];\n        break;\n\n      default:\n        name       = s[0];\n        result     = [ name ];\n        isRelative = (name.toLowerCase() === name);\n\n        // Apply transformations to the segment\n        for (i = 1; i < s.length; i += 2) {\n          p = m.calc(s[i], s[i + 1], isRelative);\n          result.push(p[0], p[1]);\n        }\n    }\n\n    self.segments[index] = result;\n  }, true);\n};\n\n\n// Apply stacked commands\n//\nSvgPath.prototype.__evaluateStack = function () {\n  var m, i;\n\n  if (!this.__stack.length) { return; }\n\n  if (this.__stack.length === 1) {\n    this.__matrix(this.__stack[0]);\n    this.__stack = [];\n    return;\n  }\n\n  m = matrix();\n  i = this.__stack.length;\n\n  while (--i >= 0) {\n    m.matrix(this.__stack[i].toArray());\n  }\n\n  this.__matrix(m);\n  this.__stack = [];\n};\n\n\n// Convert processed SVG Path back to string\n//\nSvgPath.prototype.toString = function () {\n  var result = '', prevCmd = '', cmdSkipped = false;\n\n  this.__evaluateStack();\n\n  for (var i = 0, len = this.segments.length; i < len; i++) {\n    var segment = this.segments[i];\n    var cmd = segment[0];\n\n    // Command not repeating => store\n    if (cmd !== prevCmd || cmd === 'm' || cmd === 'M') {\n      // workaround for FontForge SVG importing bug, keep space between \"z m\".\n      if (cmd === 'm' && prevCmd === 'z') result += ' ';\n      result += cmd;\n\n      cmdSkipped = false;\n    } else {\n      cmdSkipped = true;\n    }\n\n    // Store segment params\n    for (var pos = 1; pos < segment.length; pos++) {\n      var val = segment[pos];\n      // Space can be skipped\n      // 1. After command (always)\n      // 2. For negative value (with '-' at start)\n      if (pos === 1) {\n        if (cmdSkipped && val >= 0) result += ' ';\n      } else if (val >= 0) result += ' ';\n\n      result += val;\n    }\n\n    prevCmd = cmd;\n  }\n\n  return result;\n};\n\n\n// Translate path to (x [, y])\n//\nSvgPath.prototype.translate = function (x, y) {\n  this.__stack.push(matrix().translate(x, y || 0));\n  return this;\n};\n\n\n// Scale path to (sx [, sy])\n// sy = sx if not defined\n//\nSvgPath.prototype.scale = function (sx, sy) {\n  this.__stack.push(matrix().scale(sx, (!sy && (sy !== 0)) ? sx : sy));\n  return this;\n};\n\n\n// Rotate path around point (sx [, sy])\n// sy = sx if not defined\n//\nSvgPath.prototype.rotate = function (angle, rx, ry) {\n  this.__stack.push(matrix().rotate(angle, rx || 0, ry || 0));\n  return this;\n};\n\n\n// Skew path along the X axis by `degrees` angle\n//\nSvgPath.prototype.skewX = function (degrees) {\n  this.__stack.push(matrix().skewX(degrees));\n  return this;\n};\n\n\n// Skew path along the Y axis by `degrees` angle\n//\nSvgPath.prototype.skewY = function (degrees) {\n  this.__stack.push(matrix().skewY(degrees));\n  return this;\n};\n\n\n// Apply matrix transform (array of 6 elements)\n//\nSvgPath.prototype.matrix = function (m) {\n  this.__stack.push(matrix().matrix(m));\n  return this;\n};\n\n\n// Transform path according to \"transform\" attr of SVG spec\n//\nSvgPath.prototype.transform = function (transformString) {\n  if (!transformString.trim()) {\n    return this;\n  }\n  this.__stack.push(transformParse(transformString));\n  return this;\n};\n\n\n// Round coords with given decimal precition.\n// 0 by default (to integers)\n//\nSvgPath.prototype.round = function (d) {\n  var contourStartDeltaX = 0, contourStartDeltaY = 0, deltaX = 0, deltaY = 0, l;\n\n  d = d || 0;\n\n  this.__evaluateStack();\n\n  this.segments.forEach(function (s) {\n    var isRelative = (s[0].toLowerCase() === s[0]);\n\n    switch (s[0]) {\n      case 'H':\n      case 'h':\n        if (isRelative) { s[1] += deltaX; }\n        deltaX = s[1] - s[1].toFixed(d);\n        s[1] = +s[1].toFixed(d);\n        return;\n\n      case 'V':\n      case 'v':\n        if (isRelative) { s[1] += deltaY; }\n        deltaY = s[1] - s[1].toFixed(d);\n        s[1] = +s[1].toFixed(d);\n        return;\n\n      case 'Z':\n      case 'z':\n        deltaX = contourStartDeltaX;\n        deltaY = contourStartDeltaY;\n        return;\n\n      case 'M':\n      case 'm':\n        if (isRelative) {\n          s[1] += deltaX;\n          s[2] += deltaY;\n        }\n\n        deltaX = s[1] - s[1].toFixed(d);\n        deltaY = s[2] - s[2].toFixed(d);\n\n        contourStartDeltaX = deltaX;\n        contourStartDeltaY = deltaY;\n\n        s[1] = +s[1].toFixed(d);\n        s[2] = +s[2].toFixed(d);\n        return;\n\n      case 'A':\n      case 'a':\n        // [cmd, rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]\n        if (isRelative) {\n          s[6] += deltaX;\n          s[7] += deltaY;\n        }\n\n        deltaX = s[6] - s[6].toFixed(d);\n        deltaY = s[7] - s[7].toFixed(d);\n\n        s[1] = +s[1].toFixed(d);\n        s[2] = +s[2].toFixed(d);\n        s[3] = +s[3].toFixed(d + 2); // better precision for rotation\n        s[6] = +s[6].toFixed(d);\n        s[7] = +s[7].toFixed(d);\n        return;\n\n      default:\n        // a c l q s t\n        l = s.length;\n\n        if (isRelative) {\n          s[l - 2] += deltaX;\n          s[l - 1] += deltaY;\n        }\n\n        deltaX = s[l - 2] - s[l - 2].toFixed(d);\n        deltaY = s[l - 1] - s[l - 1].toFixed(d);\n\n        s.forEach(function (val, i) {\n          if (!i) { return; }\n          s[i] = +s[i].toFixed(d);\n        });\n        return;\n    }\n  });\n\n  return this;\n};\n\n\n// Apply iterator function to all segments. If function returns result,\n// current segment will be replaced to array of returned segments.\n// If empty array is returned, current regment will be deleted.\n//\nSvgPath.prototype.iterate = function (iterator, keepLazyStack) {\n  var segments = this.segments,\n      replacements = {},\n      needReplace = false,\n      lastX = 0,\n      lastY = 0,\n      countourStartX = 0,\n      countourStartY = 0;\n  var i, j, newSegments;\n\n  if (!keepLazyStack) {\n    this.__evaluateStack();\n  }\n\n  segments.forEach(function (s, index) {\n\n    var res = iterator(s, index, lastX, lastY);\n\n    if (Array.isArray(res)) {\n      replacements[index] = res;\n      needReplace = true;\n    }\n\n    var isRelative = (s[0] === s[0].toLowerCase());\n\n    // calculate absolute X and Y\n    switch (s[0]) {\n      case 'm':\n      case 'M':\n        lastX = s[1] + (isRelative ? lastX : 0);\n        lastY = s[2] + (isRelative ? lastY : 0);\n        countourStartX = lastX;\n        countourStartY = lastY;\n        return;\n\n      case 'h':\n      case 'H':\n        lastX = s[1] + (isRelative ? lastX : 0);\n        return;\n\n      case 'v':\n      case 'V':\n        lastY = s[1] + (isRelative ? lastY : 0);\n        return;\n\n      case 'z':\n      case 'Z':\n        // That make sence for multiple contours\n        lastX = countourStartX;\n        lastY = countourStartY;\n        return;\n\n      default:\n        lastX = s[s.length - 2] + (isRelative ? lastX : 0);\n        lastY = s[s.length - 1] + (isRelative ? lastY : 0);\n    }\n  });\n\n  // Replace segments if iterator return results\n\n  if (!needReplace) { return this; }\n\n  newSegments = [];\n\n  for (i = 0; i < segments.length; i++) {\n    if (typeof replacements[i] !== 'undefined') {\n      for (j = 0; j < replacements[i].length; j++) {\n        newSegments.push(replacements[i][j]);\n      }\n    } else {\n      newSegments.push(segments[i]);\n    }\n  }\n\n  this.segments = newSegments;\n\n  return this;\n};\n\n\n// Converts segments from relative to absolute\n//\nSvgPath.prototype.abs = function () {\n\n  this.iterate(function (s, index, x, y) {\n    var name = s[0],\n        nameUC = name.toUpperCase(),\n        i;\n\n    // Skip absolute commands\n    if (name === nameUC) { return; }\n\n    s[0] = nameUC;\n\n    switch (name) {\n      case 'v':\n        // v has shifted coords parity\n        s[1] += y;\n        return;\n\n      case 'a':\n        // ARC is: ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]\n        // touch x, y only\n        s[6] += x;\n        s[7] += y;\n        return;\n\n      default:\n        for (i = 1; i < s.length; i++) {\n          s[i] += i % 2 ? x : y; // odd values are X, even - Y\n        }\n    }\n  }, true);\n\n  return this;\n};\n\n\n// Converts segments from absolute to relative\n//\nSvgPath.prototype.rel = function () {\n\n  this.iterate(function (s, index, x, y) {\n    var name = s[0],\n        nameLC = name.toLowerCase(),\n        i;\n\n    // Skip relative commands\n    if (name === nameLC) { return; }\n\n    // Don't touch the first M to avoid potential confusions.\n    if (index === 0 && name === 'M') { return; }\n\n    s[0] = nameLC;\n\n    switch (name) {\n      case 'V':\n        // V has shifted coords parity\n        s[1] -= y;\n        return;\n\n      case 'A':\n        // ARC is: ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]\n        // touch x, y only\n        s[6] -= x;\n        s[7] -= y;\n        return;\n\n      default:\n        for (i = 1; i < s.length; i++) {\n          s[i] -= i % 2 ? x : y; // odd values are X, even - Y\n        }\n    }\n  }, true);\n\n  return this;\n};\n\n\n// Converts arcs to cubic bézier curves\n//\nSvgPath.prototype.unarc = function () {\n  this.iterate(function (s, index, x, y) {\n    var new_segments, nextX, nextY, result = [], name = s[0];\n\n    // Skip anything except arcs\n    if (name !== 'A' && name !== 'a') { return null; }\n\n    if (name === 'a') {\n      // convert relative arc coordinates to absolute\n      nextX = x + s[6];\n      nextY = y + s[7];\n    } else {\n      nextX = s[6];\n      nextY = s[7];\n    }\n\n    new_segments = a2c(x, y, nextX, nextY, s[4], s[5], s[1], s[2], s[3]);\n\n    // Degenerated arcs can be ignored by renderer, but should not be dropped\n    // to avoid collisions with `S A S` and so on. Replace with empty line.\n    if (new_segments.length === 0) {\n      return [ [ s[0] === 'a' ? 'l' : 'L', s[6], s[7] ] ];\n    }\n\n    new_segments.forEach(function (s) {\n      result.push([ 'C', s[2], s[3], s[4], s[5], s[6], s[7] ]);\n    });\n\n    return result;\n  });\n\n  return this;\n};\n\n\n// Converts smooth curves (with missed control point) to generic curves\n//\nSvgPath.prototype.unshort = function () {\n  var segments = this.segments;\n  var prevControlX, prevControlY, prevSegment;\n  var curControlX, curControlY;\n\n  // TODO: add lazy evaluation flag when relative commands supported\n\n  this.iterate(function (s, idx, x, y) {\n    var name = s[0], nameUC = name.toUpperCase(), isRelative;\n\n    // First command MUST be M|m, it's safe to skip.\n    // Protect from access to [-1] for sure.\n    if (!idx) { return; }\n\n    if (nameUC === 'T') { // quadratic curve\n      isRelative = (name === 't');\n\n      prevSegment = segments[idx - 1];\n\n      if (prevSegment[0] === 'Q') {\n        prevControlX = prevSegment[1] - x;\n        prevControlY = prevSegment[2] - y;\n      } else if (prevSegment[0] === 'q') {\n        prevControlX = prevSegment[1] - prevSegment[3];\n        prevControlY = prevSegment[2] - prevSegment[4];\n      } else {\n        prevControlX = 0;\n        prevControlY = 0;\n      }\n\n      curControlX = -prevControlX;\n      curControlY = -prevControlY;\n\n      if (!isRelative) {\n        curControlX += x;\n        curControlY += y;\n      }\n\n      segments[idx] = [\n        isRelative ? 'q' : 'Q',\n        curControlX, curControlY,\n        s[1], s[2]\n      ];\n\n    } else if (nameUC === 'S') { // cubic curve\n      isRelative = (name === 's');\n\n      prevSegment = segments[idx - 1];\n\n      if (prevSegment[0] === 'C') {\n        prevControlX = prevSegment[3] - x;\n        prevControlY = prevSegment[4] - y;\n      } else if (prevSegment[0] === 'c') {\n        prevControlX = prevSegment[3] - prevSegment[5];\n        prevControlY = prevSegment[4] - prevSegment[6];\n      } else {\n        prevControlX = 0;\n        prevControlY = 0;\n      }\n\n      curControlX = -prevControlX;\n      curControlY = -prevControlY;\n\n      if (!isRelative) {\n        curControlX += x;\n        curControlY += y;\n      }\n\n      segments[idx] = [\n        isRelative ? 'c' : 'C',\n        curControlX, curControlY,\n        s[1], s[2], s[3], s[4]\n      ];\n    }\n  });\n\n  return this;\n};\n\n\nmodule.exports = SvgPath;\n","'use strict';\n\nmodule.exports = require('./lib/svgpath');\n","//Parses an SVG path into an object.\n//Taken from https://github.com/jkroso/parse-svg-path\n//Re-written so it can be used with rollup\nvar length = {a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0};\nvar segment = /([astvzqmhlc])([^astvzqmhlc]*)/ig;\n\nexport default function(path) {\n  var data = [];\n\tpath.replace(segment, function(_, command, args){\n\t\tvar type = command.toLowerCase();\n\t\targs = parseValues(args);\n\n\t\t// overloaded moveTo\n\t\tif (type === 'm' && args.length > 2) {\n\t\t\tdata.push([command].concat(args.splice(0, 2)));\n\t\t\ttype = 'l';\n\t\t\tcommand = command === 'm' ? 'l' : 'L';\n\t\t}\n\n\t\twhile (args.length >= 0) {\n\t\t\tif (args.length === length[type]) {\n\t\t\t\targs.unshift(command);\n\t\t\t\treturn data.push(args);\n\t\t\t}\n\t\t\tif (args.length < length[type]) {\n        throw new Error('malformed path data');\n      }\n\t\t\tdata.push([command].concat(args.splice(0, length[type])));\n\t\t}\n\t});\n  return data;\n}\n\nvar number = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig;\n\nfunction parseValues(args) {\n\tvar numbers = args.match(number);\n\treturn numbers ? numbers.map(Number) : [];\n}\n","//Calculate Bezier curve length and positionAtLength\n//Algorithms taken from http://bl.ocks.org/hnakamur/e7efd0602bfc15f66fc5, https://gist.github.com/tunght13488/6744e77c242cc7a94859 and http://stackoverflow.com/questions/11854907/calculate-the-length-of-a-segment-of-a-quadratic-bezier\n\nexport default function(ax, ay, bx, by, cx, cy, dx, dy) {\n  return new Bezier(ax, ay, bx, by, cx, cy, dx, dy);\n}\n\nfunction Bezier(ax, ay, bx, by, cx, cy, dx, dy) {\n  this.a = {x:ax, y:ay};\n  this.b = {x:bx, y:by};\n  this.c = {x:cx, y:cy};\n  this.d = {x:dx, y:dy};\n\n  if(dx !== null && dx !== undefined && dy !== null && dy !== undefined){\n    this.getArcLength = getCubicArcLength;\n    this.getPoint = cubicPoint;\n    this.getDerivative = cubicDerivative;\n  } else {\n    this.getArcLength = getQuadraticArcLength;\n    this.getPoint = quadraticPoint;\n    this.getDerivative = quadraticDerivative;\n  }\n\n  this.init();\n}\n\nBezier.prototype = {\n  constructor: Bezier,\n  init: function() {\n\n    this.length = this.getArcLength([this.a.x, this.b.x, this.c.x, this.d.x],\n                                    [this.a.y, this.b.y, this.c.y, this.d.y]);\n  },\n\n  getTotalLength: function() {\n    return this.length;\n  },\n  getPointAtLength: function(length) {\n    var t = t2length(length, this.length, this.getArcLength,\n                    [this.a.x, this.b.x, this.c.x, this.d.x],\n                    [this.a.y, this.b.y, this.c.y, this.d.y]);\n\n    return this.getPoint([this.a.x, this.b.x, this.c.x, this.d.x],\n                                    [this.a.y, this.b.y, this.c.y, this.d.y],\n                                  t);\n  },\n  getTangentAtLength: function(length){\n    var t = t2length(length, this.length, this.getArcLength,\n                    [this.a.x, this.b.x, this.c.x, this.d.x],\n                    [this.a.y, this.b.y, this.c.y, this.d.y]);\n\n    var derivative = this.getDerivative([this.a.x, this.b.x, this.c.x, this.d.x],\n                    [this.a.y, this.b.y, this.c.y, this.d.y], t);\n    var mdl = Math.sqrt(derivative.x * derivative.x + derivative.y * derivative.y);\n    var tangent;\n    if (mdl > 0){\n      tangent = {x: derivative.x/mdl, y: derivative.y/mdl};\n    } else {\n      tangent = {x: 0, y: 0};\n    }\n    return tangent;\n  },\n  getPropertiesAtLength: function(length){\n    var t = t2length(length, this.length, this.getArcLength,\n                    [this.a.x, this.b.x, this.c.x, this.d.x],\n                    [this.a.y, this.b.y, this.c.y, this.d.y]);\n\n    var derivative = this.getDerivative([this.a.x, this.b.x, this.c.x, this.d.x],\n                    [this.a.y, this.b.y, this.c.y, this.d.y], t);\n    var mdl = Math.sqrt(derivative.x * derivative.x + derivative.y * derivative.y);\n    var tangent;\n    if (mdl > 0){\n      tangent = {x: derivative.x/mdl, y: derivative.y/mdl};\n    } else {\n      tangent = {x: 0, y: 0};\n    }\n    var point = this.getPoint([this.a.x, this.b.x, this.c.x, this.d.x],\n                                    [this.a.y, this.b.y, this.c.y, this.d.y],\n                                  t);\n    return {x: point.x, y: point.y, tangentX: tangent.x, tangentY: tangent.y};\n  }\n};\n\nfunction quadraticDerivative(xs, ys, t){\n  return {x: (1 - t) * 2*(xs[1] - xs[0]) +t * 2*(xs[2] - xs[1]),\n    y: (1 - t) * 2*(ys[1] - ys[0]) +t * 2*(ys[2] - ys[1])\n  };\n}\n\nfunction cubicDerivative(xs, ys, t){\n  var derivative = quadraticPoint(\n            [3*(xs[1] - xs[0]), 3*(xs[2] - xs[1]), 3*(xs[3] - xs[2])],\n            [3*(ys[1] - ys[0]), 3*(ys[2] - ys[1]), 3*(ys[3] - ys[2])],\n            t);\n  return derivative;\n}\n\nfunction t2length(length, total_length, func, xs, ys){\n  var error = 1;\n  var t = length/total_length;\n  var step = (length - func(xs, ys, t))/total_length\n\n  while (error > 0.001){\n    var increasedTLength = func(xs, ys, t + step);\n    var decreasedTLength = func(xs, ys, t - step);\n    var increasedTError = Math.abs(length - increasedTLength)/total_length;\n    var decreasedTError = Math.abs(length - decreasedTLength)/total_length;\n    if (increasedTError < error) {\n      error = increasedTError\n      t += step\n    } else if (decreasedTError < error) {\n      error = decreasedTError\n      t -= step\n    } else {\n      step /= 2\n    }\n  }\n\n  return t;\n}\n\nfunction quadraticPoint(xs, ys, t){\n  var x = (1 - t) * (1 - t) * xs[0] + 2 * (1 - t) * t * xs[1] + t * t * xs[2];\n  var y = (1 - t) * (1 - t) * ys[0] + 2 * (1 - t) * t * ys[1] + t * t * ys[2];\n  return {x: x, y: y};\n}\n\nfunction cubicPoint(xs, ys, t){\n  var x = (1 - t) * (1 - t) * (1 - t) * xs[0] + 3 * (1 - t) * (1 - t) * t * xs[1] +\n  3 * (1 - t) * t * t * xs[2] + t * t * t * xs[3];\n  var y = (1 - t) * (1 - t) * (1 - t) * ys[0] + 3 * (1 - t) * (1 - t) * t * ys[1] +\n  3 * (1 - t) * t * t * ys[2] + t * t * t * ys[3];\n\n  return {x: x, y: y};\n}\n\nfunction getQuadraticArcLength(xs, ys, t) {\n  if (t === undefined) {\n    t = 1;\n  }\n   var ax = xs[0] - 2 * xs[1] + xs[2];\n   var ay = ys[0] - 2 * ys[1] + ys[2];\n   var bx = 2 * xs[1] - 2 * xs[0];\n   var by = 2 * ys[1] - 2 * ys[0];\n\n   var A = 4 * (ax * ax + ay * ay);\n   var B = 4 * (ax * bx + ay * by);\n   var C = bx * bx + by * by;\n\n   if(A === 0){\n     return t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2));\n   }\n   var b = B/(2*A);\n   var c = C/A;\n   var u = t + b;\n   var k = c - b*b;\n\n   return (Math.sqrt(A)/2)*(\n     u*Math.sqrt(u*u+k)-b*Math.sqrt(b*b+k)+\n     k*Math.log(Math.abs(\n       (u+Math.sqrt(u*u+k))/(b+Math.sqrt(b*b+k))\n     ))\n   );\n\n}\n\n// Legendre-Gauss abscissae (xi values, defined at i=n as the roots of the nth order Legendre polynomial Pn(x))\nvar tValues = [\n  [],\n  [],\n  [-0.5773502691896257645091487805019574556476,0.5773502691896257645091487805019574556476],\n  [0,-0.7745966692414833770358530799564799221665,0.7745966692414833770358530799564799221665],\n  [-0.3399810435848562648026657591032446872005,0.3399810435848562648026657591032446872005,-0.8611363115940525752239464888928095050957,0.8611363115940525752239464888928095050957],\n  [0,-0.5384693101056830910363144207002088049672,0.5384693101056830910363144207002088049672,-0.9061798459386639927976268782993929651256,0.9061798459386639927976268782993929651256],\n  [0.6612093864662645136613995950199053470064,-0.6612093864662645136613995950199053470064,-0.2386191860831969086305017216807119354186,0.2386191860831969086305017216807119354186,-0.9324695142031520278123015544939946091347,0.9324695142031520278123015544939946091347],\n  [0, 0.4058451513773971669066064120769614633473,-0.4058451513773971669066064120769614633473,-0.7415311855993944398638647732807884070741,0.7415311855993944398638647732807884070741,-0.9491079123427585245261896840478512624007,0.9491079123427585245261896840478512624007],\n  [-0.1834346424956498049394761423601839806667,0.1834346424956498049394761423601839806667,-0.5255324099163289858177390491892463490419,0.5255324099163289858177390491892463490419,-0.7966664774136267395915539364758304368371,0.7966664774136267395915539364758304368371,-0.9602898564975362316835608685694729904282,0.9602898564975362316835608685694729904282],\n  [0,-0.8360311073266357942994297880697348765441,0.8360311073266357942994297880697348765441,-0.9681602395076260898355762029036728700494,0.9681602395076260898355762029036728700494,-0.3242534234038089290385380146433366085719,0.3242534234038089290385380146433366085719,-0.6133714327005903973087020393414741847857,0.6133714327005903973087020393414741847857],\n  [-0.1488743389816312108848260011297199846175,0.1488743389816312108848260011297199846175,-0.4333953941292471907992659431657841622000,0.4333953941292471907992659431657841622000,-0.6794095682990244062343273651148735757692,0.6794095682990244062343273651148735757692,-0.8650633666889845107320966884234930485275,0.8650633666889845107320966884234930485275,-0.9739065285171717200779640120844520534282,0.9739065285171717200779640120844520534282],\n  [0,-0.2695431559523449723315319854008615246796,0.2695431559523449723315319854008615246796,-0.5190961292068118159257256694586095544802,0.5190961292068118159257256694586095544802,-0.7301520055740493240934162520311534580496,0.7301520055740493240934162520311534580496,-0.8870625997680952990751577693039272666316,0.8870625997680952990751577693039272666316,-0.9782286581460569928039380011228573907714,0.9782286581460569928039380011228573907714],\n  [-0.1252334085114689154724413694638531299833,0.1252334085114689154724413694638531299833,-0.3678314989981801937526915366437175612563,0.3678314989981801937526915366437175612563,-0.5873179542866174472967024189405342803690,0.5873179542866174472967024189405342803690,-0.7699026741943046870368938332128180759849,0.7699026741943046870368938332128180759849,-0.9041172563704748566784658661190961925375,0.9041172563704748566784658661190961925375,-0.9815606342467192506905490901492808229601,0.9815606342467192506905490901492808229601],\n  [0,-0.2304583159551347940655281210979888352115,0.2304583159551347940655281210979888352115,-0.4484927510364468528779128521276398678019,0.4484927510364468528779128521276398678019,-0.6423493394403402206439846069955156500716,0.6423493394403402206439846069955156500716,-0.8015780907333099127942064895828598903056,0.8015780907333099127942064895828598903056,-0.9175983992229779652065478365007195123904,0.9175983992229779652065478365007195123904,-0.9841830547185881494728294488071096110649,0.9841830547185881494728294488071096110649],\n  [-0.1080549487073436620662446502198347476119,0.1080549487073436620662446502198347476119,-0.3191123689278897604356718241684754668342,0.3191123689278897604356718241684754668342,-0.5152486363581540919652907185511886623088,0.5152486363581540919652907185511886623088,-0.6872929048116854701480198030193341375384,0.6872929048116854701480198030193341375384,-0.8272013150697649931897947426503949610397,0.8272013150697649931897947426503949610397,-0.9284348836635735173363911393778742644770,0.9284348836635735173363911393778742644770,-0.9862838086968123388415972667040528016760,0.9862838086968123388415972667040528016760],\n  [0,-0.2011940939974345223006283033945962078128,0.2011940939974345223006283033945962078128,-0.3941513470775633698972073709810454683627,0.3941513470775633698972073709810454683627,-0.5709721726085388475372267372539106412383,0.5709721726085388475372267372539106412383,-0.7244177313601700474161860546139380096308,0.7244177313601700474161860546139380096308,-0.8482065834104272162006483207742168513662,0.8482065834104272162006483207742168513662,-0.9372733924007059043077589477102094712439,0.9372733924007059043077589477102094712439,-0.9879925180204854284895657185866125811469,0.9879925180204854284895657185866125811469],\n  [-0.0950125098376374401853193354249580631303,0.0950125098376374401853193354249580631303,-0.2816035507792589132304605014604961064860,0.2816035507792589132304605014604961064860,-0.4580167776572273863424194429835775735400,0.4580167776572273863424194429835775735400,-0.6178762444026437484466717640487910189918,0.6178762444026437484466717640487910189918,-0.7554044083550030338951011948474422683538,0.7554044083550030338951011948474422683538,-0.8656312023878317438804678977123931323873,0.8656312023878317438804678977123931323873,-0.9445750230732325760779884155346083450911,0.9445750230732325760779884155346083450911,-0.9894009349916499325961541734503326274262,0.9894009349916499325961541734503326274262],\n  [0,-0.1784841814958478558506774936540655574754,0.1784841814958478558506774936540655574754,-0.3512317634538763152971855170953460050405,0.3512317634538763152971855170953460050405,-0.5126905370864769678862465686295518745829,0.5126905370864769678862465686295518745829,-0.6576711592166907658503022166430023351478,0.6576711592166907658503022166430023351478,-0.7815140038968014069252300555204760502239,0.7815140038968014069252300555204760502239,-0.8802391537269859021229556944881556926234,0.8802391537269859021229556944881556926234,-0.9506755217687677612227169578958030214433,0.9506755217687677612227169578958030214433,-0.9905754753144173356754340199406652765077,0.9905754753144173356754340199406652765077],\n  [-0.0847750130417353012422618529357838117333,0.0847750130417353012422618529357838117333,-0.2518862256915055095889728548779112301628,0.2518862256915055095889728548779112301628,-0.4117511614628426460359317938330516370789,0.4117511614628426460359317938330516370789,-0.5597708310739475346078715485253291369276,0.5597708310739475346078715485253291369276,-0.6916870430603532078748910812888483894522,0.6916870430603532078748910812888483894522,-0.8037049589725231156824174550145907971032,0.8037049589725231156824174550145907971032,-0.8926024664975557392060605911271455154078,0.8926024664975557392060605911271455154078,-0.9558239495713977551811958929297763099728,0.9558239495713977551811958929297763099728,-0.9915651684209309467300160047061507702525,0.9915651684209309467300160047061507702525],\n  [0,-0.1603586456402253758680961157407435495048,0.1603586456402253758680961157407435495048,-0.3165640999636298319901173288498449178922,0.3165640999636298319901173288498449178922,-0.4645707413759609457172671481041023679762,0.4645707413759609457172671481041023679762,-0.6005453046616810234696381649462392798683,0.6005453046616810234696381649462392798683,-0.7209661773352293786170958608237816296571,0.7209661773352293786170958608237816296571,-0.8227146565371428249789224867127139017745,0.8227146565371428249789224867127139017745,-0.9031559036148179016426609285323124878093,0.9031559036148179016426609285323124878093,-0.9602081521348300308527788406876515266150,0.9602081521348300308527788406876515266150,-0.9924068438435844031890176702532604935893,0.9924068438435844031890176702532604935893],\n  [-0.0765265211334973337546404093988382110047,0.0765265211334973337546404093988382110047,-0.2277858511416450780804961953685746247430,0.2277858511416450780804961953685746247430,-0.3737060887154195606725481770249272373957,0.3737060887154195606725481770249272373957,-0.5108670019508270980043640509552509984254,0.5108670019508270980043640509552509984254,-0.6360536807265150254528366962262859367433,0.6360536807265150254528366962262859367433,-0.7463319064601507926143050703556415903107,0.7463319064601507926143050703556415903107,-0.8391169718222188233945290617015206853296,0.8391169718222188233945290617015206853296,-0.9122344282513259058677524412032981130491,0.9122344282513259058677524412032981130491,-0.9639719272779137912676661311972772219120,0.9639719272779137912676661311972772219120,-0.9931285991850949247861223884713202782226,0.9931285991850949247861223884713202782226],\n  [0,-0.1455618541608950909370309823386863301163,0.1455618541608950909370309823386863301163,-0.2880213168024010966007925160646003199090,0.2880213168024010966007925160646003199090,-0.4243421202074387835736688885437880520964,0.4243421202074387835736688885437880520964,-0.5516188358872198070590187967243132866220,0.5516188358872198070590187967243132866220,-0.6671388041974123193059666699903391625970,0.6671388041974123193059666699903391625970,-0.7684399634756779086158778513062280348209,0.7684399634756779086158778513062280348209,-0.8533633645833172836472506385875676702761,0.8533633645833172836472506385875676702761,-0.9200993341504008287901871337149688941591,0.9200993341504008287901871337149688941591,-0.9672268385663062943166222149076951614246,0.9672268385663062943166222149076951614246,-0.9937521706203895002602420359379409291933,0.9937521706203895002602420359379409291933],\n  [-0.0697392733197222212138417961186280818222,0.0697392733197222212138417961186280818222,-0.2078604266882212854788465339195457342156,0.2078604266882212854788465339195457342156,-0.3419358208920842251581474204273796195591,0.3419358208920842251581474204273796195591,-0.4693558379867570264063307109664063460953,0.4693558379867570264063307109664063460953,-0.5876404035069115929588769276386473488776,0.5876404035069115929588769276386473488776,-0.6944872631866827800506898357622567712673,0.6944872631866827800506898357622567712673,-0.7878168059792081620042779554083515213881,0.7878168059792081620042779554083515213881,-0.8658125777203001365364256370193787290847,0.8658125777203001365364256370193787290847,-0.9269567721871740005206929392590531966353,0.9269567721871740005206929392590531966353,-0.9700604978354287271239509867652687108059,0.9700604978354287271239509867652687108059,-0.9942945854823992920730314211612989803930,0.9942945854823992920730314211612989803930],\n  [0,-0.1332568242984661109317426822417661370104,0.1332568242984661109317426822417661370104,-0.2641356809703449305338695382833096029790,0.2641356809703449305338695382833096029790,-0.3903010380302908314214888728806054585780,0.3903010380302908314214888728806054585780,-0.5095014778460075496897930478668464305448,0.5095014778460075496897930478668464305448,-0.6196098757636461563850973116495956533871,0.6196098757636461563850973116495956533871,-0.7186613631319501944616244837486188483299,0.7186613631319501944616244837486188483299,-0.8048884016188398921511184069967785579414,0.8048884016188398921511184069967785579414,-0.8767523582704416673781568859341456716389,0.8767523582704416673781568859341456716389,-0.9329710868260161023491969890384229782357,0.9329710868260161023491969890384229782357,-0.9725424712181152319560240768207773751816,0.9725424712181152319560240768207773751816,-0.9947693349975521235239257154455743605736,0.9947693349975521235239257154455743605736],\n  [-0.0640568928626056260850430826247450385909,0.0640568928626056260850430826247450385909,-0.1911188674736163091586398207570696318404,0.1911188674736163091586398207570696318404,-0.3150426796961633743867932913198102407864,0.3150426796961633743867932913198102407864,-0.4337935076260451384870842319133497124524,0.4337935076260451384870842319133497124524,-0.5454214713888395356583756172183723700107,0.5454214713888395356583756172183723700107,-0.6480936519369755692524957869107476266696,0.6480936519369755692524957869107476266696,-0.7401241915785543642438281030999784255232,0.7401241915785543642438281030999784255232,-0.8200019859739029219539498726697452080761,0.8200019859739029219539498726697452080761,-0.8864155270044010342131543419821967550873,0.8864155270044010342131543419821967550873,-0.9382745520027327585236490017087214496548,0.9382745520027327585236490017087214496548,-0.9747285559713094981983919930081690617411,0.9747285559713094981983919930081690617411,-0.9951872199970213601799974097007368118745,0.9951872199970213601799974097007368118745]\n];\n\n// Legendre-Gauss weights (wi values, defined by a function linked to in the Bezier primer article)\nvar cValues = [\n  [],[],\n  [1.0,1.0],\n  [0.8888888888888888888888888888888888888888,0.5555555555555555555555555555555555555555,0.5555555555555555555555555555555555555555],\n  [0.6521451548625461426269360507780005927646,0.6521451548625461426269360507780005927646,0.3478548451374538573730639492219994072353,0.3478548451374538573730639492219994072353],\n  [0.5688888888888888888888888888888888888888,0.4786286704993664680412915148356381929122,0.4786286704993664680412915148356381929122,0.2369268850561890875142640407199173626432,0.2369268850561890875142640407199173626432],\n  [0.3607615730481386075698335138377161116615,0.3607615730481386075698335138377161116615,0.4679139345726910473898703439895509948116,0.4679139345726910473898703439895509948116,0.1713244923791703450402961421727328935268,0.1713244923791703450402961421727328935268],\n  [0.4179591836734693877551020408163265306122,0.3818300505051189449503697754889751338783,0.3818300505051189449503697754889751338783,0.2797053914892766679014677714237795824869,0.2797053914892766679014677714237795824869,0.1294849661688696932706114326790820183285,0.1294849661688696932706114326790820183285],\n  [0.3626837833783619829651504492771956121941,0.3626837833783619829651504492771956121941,0.3137066458778872873379622019866013132603,0.3137066458778872873379622019866013132603,0.2223810344533744705443559944262408844301,0.2223810344533744705443559944262408844301,0.1012285362903762591525313543099621901153,0.1012285362903762591525313543099621901153],\n  [0.3302393550012597631645250692869740488788,0.1806481606948574040584720312429128095143,0.1806481606948574040584720312429128095143,0.0812743883615744119718921581105236506756,0.0812743883615744119718921581105236506756,0.3123470770400028400686304065844436655987,0.3123470770400028400686304065844436655987,0.2606106964029354623187428694186328497718,0.2606106964029354623187428694186328497718],\n  [0.2955242247147528701738929946513383294210,0.2955242247147528701738929946513383294210,0.2692667193099963550912269215694693528597,0.2692667193099963550912269215694693528597,0.2190863625159820439955349342281631924587,0.2190863625159820439955349342281631924587,0.1494513491505805931457763396576973324025,0.1494513491505805931457763396576973324025,0.0666713443086881375935688098933317928578,0.0666713443086881375935688098933317928578],\n  [0.2729250867779006307144835283363421891560,0.2628045445102466621806888698905091953727,0.2628045445102466621806888698905091953727,0.2331937645919904799185237048431751394317,0.2331937645919904799185237048431751394317,0.1862902109277342514260976414316558916912,0.1862902109277342514260976414316558916912,0.1255803694649046246346942992239401001976,0.1255803694649046246346942992239401001976,0.0556685671161736664827537204425485787285,0.0556685671161736664827537204425485787285],\n  [0.2491470458134027850005624360429512108304,0.2491470458134027850005624360429512108304,0.2334925365383548087608498989248780562594,0.2334925365383548087608498989248780562594,0.2031674267230659217490644558097983765065,0.2031674267230659217490644558097983765065,0.1600783285433462263346525295433590718720,0.1600783285433462263346525295433590718720,0.1069393259953184309602547181939962242145,0.1069393259953184309602547181939962242145,0.0471753363865118271946159614850170603170,0.0471753363865118271946159614850170603170],\n  [0.2325515532308739101945895152688359481566,0.2262831802628972384120901860397766184347,0.2262831802628972384120901860397766184347,0.2078160475368885023125232193060527633865,0.2078160475368885023125232193060527633865,0.1781459807619457382800466919960979955128,0.1781459807619457382800466919960979955128,0.1388735102197872384636017768688714676218,0.1388735102197872384636017768688714676218,0.0921214998377284479144217759537971209236,0.0921214998377284479144217759537971209236,0.0404840047653158795200215922009860600419,0.0404840047653158795200215922009860600419],\n  [0.2152638534631577901958764433162600352749,0.2152638534631577901958764433162600352749,0.2051984637212956039659240656612180557103,0.2051984637212956039659240656612180557103,0.1855383974779378137417165901251570362489,0.1855383974779378137417165901251570362489,0.1572031671581935345696019386238421566056,0.1572031671581935345696019386238421566056,0.1215185706879031846894148090724766259566,0.1215185706879031846894148090724766259566,0.0801580871597602098056332770628543095836,0.0801580871597602098056332770628543095836,0.0351194603317518630318328761381917806197,0.0351194603317518630318328761381917806197],\n  [0.2025782419255612728806201999675193148386,0.1984314853271115764561183264438393248186,0.1984314853271115764561183264438393248186,0.1861610000155622110268005618664228245062,0.1861610000155622110268005618664228245062,0.1662692058169939335532008604812088111309,0.1662692058169939335532008604812088111309,0.1395706779261543144478047945110283225208,0.1395706779261543144478047945110283225208,0.1071592204671719350118695466858693034155,0.1071592204671719350118695466858693034155,0.0703660474881081247092674164506673384667,0.0703660474881081247092674164506673384667,0.0307532419961172683546283935772044177217,0.0307532419961172683546283935772044177217],\n  [0.1894506104550684962853967232082831051469,0.1894506104550684962853967232082831051469,0.1826034150449235888667636679692199393835,0.1826034150449235888667636679692199393835,0.1691565193950025381893120790303599622116,0.1691565193950025381893120790303599622116,0.1495959888165767320815017305474785489704,0.1495959888165767320815017305474785489704,0.1246289712555338720524762821920164201448,0.1246289712555338720524762821920164201448,0.0951585116824927848099251076022462263552,0.0951585116824927848099251076022462263552,0.0622535239386478928628438369943776942749,0.0622535239386478928628438369943776942749,0.0271524594117540948517805724560181035122,0.0271524594117540948517805724560181035122],\n  [0.1794464703562065254582656442618856214487,0.1765627053669926463252709901131972391509,0.1765627053669926463252709901131972391509,0.1680041021564500445099706637883231550211,0.1680041021564500445099706637883231550211,0.1540457610768102880814315948019586119404,0.1540457610768102880814315948019586119404,0.1351363684685254732863199817023501973721,0.1351363684685254732863199817023501973721,0.1118838471934039710947883856263559267358,0.1118838471934039710947883856263559267358,0.0850361483171791808835353701910620738504,0.0850361483171791808835353701910620738504,0.0554595293739872011294401653582446605128,0.0554595293739872011294401653582446605128,0.0241483028685479319601100262875653246916,0.0241483028685479319601100262875653246916],\n  [0.1691423829631435918406564701349866103341,0.1691423829631435918406564701349866103341,0.1642764837458327229860537764659275904123,0.1642764837458327229860537764659275904123,0.1546846751262652449254180038363747721932,0.1546846751262652449254180038363747721932,0.1406429146706506512047313037519472280955,0.1406429146706506512047313037519472280955,0.1225552067114784601845191268002015552281,0.1225552067114784601845191268002015552281,0.1009420441062871655628139849248346070628,0.1009420441062871655628139849248346070628,0.0764257302548890565291296776166365256053,0.0764257302548890565291296776166365256053,0.0497145488949697964533349462026386416808,0.0497145488949697964533349462026386416808,0.0216160135264833103133427102664524693876,0.0216160135264833103133427102664524693876],\n  [0.1610544498487836959791636253209167350399,0.1589688433939543476499564394650472016787,0.1589688433939543476499564394650472016787,0.1527660420658596667788554008976629984610,0.1527660420658596667788554008976629984610,0.1426067021736066117757461094419029724756,0.1426067021736066117757461094419029724756,0.1287539625393362276755157848568771170558,0.1287539625393362276755157848568771170558,0.1115666455473339947160239016817659974813,0.1115666455473339947160239016817659974813,0.0914900216224499994644620941238396526609,0.0914900216224499994644620941238396526609,0.0690445427376412265807082580060130449618,0.0690445427376412265807082580060130449618,0.0448142267656996003328381574019942119517,0.0448142267656996003328381574019942119517,0.0194617882297264770363120414644384357529,0.0194617882297264770363120414644384357529],\n  [0.1527533871307258506980843319550975934919,0.1527533871307258506980843319550975934919,0.1491729864726037467878287370019694366926,0.1491729864726037467878287370019694366926,0.1420961093183820513292983250671649330345,0.1420961093183820513292983250671649330345,0.1316886384491766268984944997481631349161,0.1316886384491766268984944997481631349161,0.1181945319615184173123773777113822870050,0.1181945319615184173123773777113822870050,0.1019301198172404350367501354803498761666,0.1019301198172404350367501354803498761666,0.0832767415767047487247581432220462061001,0.0832767415767047487247581432220462061001,0.0626720483341090635695065351870416063516,0.0626720483341090635695065351870416063516,0.0406014298003869413310399522749321098790,0.0406014298003869413310399522749321098790,0.0176140071391521183118619623518528163621,0.0176140071391521183118619623518528163621],\n  [0.1460811336496904271919851476833711882448,0.1445244039899700590638271665537525436099,0.1445244039899700590638271665537525436099,0.1398873947910731547221334238675831108927,0.1398873947910731547221334238675831108927,0.1322689386333374617810525744967756043290,0.1322689386333374617810525744967756043290,0.1218314160537285341953671771257335983563,0.1218314160537285341953671771257335983563,0.1087972991671483776634745780701056420336,0.1087972991671483776634745780701056420336,0.0934444234560338615532897411139320884835,0.0934444234560338615532897411139320884835,0.0761001136283793020170516533001831792261,0.0761001136283793020170516533001831792261,0.0571344254268572082836358264724479574912,0.0571344254268572082836358264724479574912,0.0369537897708524937999506682993296661889,0.0369537897708524937999506682993296661889,0.0160172282577743333242246168584710152658,0.0160172282577743333242246168584710152658],\n  [0.1392518728556319933754102483418099578739,0.1392518728556319933754102483418099578739,0.1365414983460151713525738312315173965863,0.1365414983460151713525738312315173965863,0.1311735047870623707329649925303074458757,0.1311735047870623707329649925303074458757,0.1232523768105124242855609861548144719594,0.1232523768105124242855609861548144719594,0.1129322960805392183934006074217843191142,0.1129322960805392183934006074217843191142,0.1004141444428809649320788378305362823508,0.1004141444428809649320788378305362823508,0.0859416062170677274144436813727028661891,0.0859416062170677274144436813727028661891,0.0697964684245204880949614189302176573987,0.0697964684245204880949614189302176573987,0.0522933351526832859403120512732112561121,0.0522933351526832859403120512732112561121,0.0337749015848141547933022468659129013491,0.0337749015848141547933022468659129013491,0.0146279952982722006849910980471854451902,0.0146279952982722006849910980471854451902],\n  [0.1336545721861061753514571105458443385831,0.1324620394046966173716424647033169258050,0.1324620394046966173716424647033169258050,0.1289057221880821499785953393997936532597,0.1289057221880821499785953393997936532597,0.1230490843067295304675784006720096548158,0.1230490843067295304675784006720096548158,0.1149966402224113649416435129339613014914,0.1149966402224113649416435129339613014914,0.1048920914645414100740861850147438548584,0.1048920914645414100740861850147438548584,0.0929157660600351474770186173697646486034,0.0929157660600351474770186173697646486034,0.0792814117767189549228925247420432269137,0.0792814117767189549228925247420432269137,0.0642324214085258521271696151589109980391,0.0642324214085258521271696151589109980391,0.0480376717310846685716410716320339965612,0.0480376717310846685716410716320339965612,0.0309880058569794443106942196418845053837,0.0309880058569794443106942196418845053837,0.0134118594871417720813094934586150649766,0.0134118594871417720813094934586150649766],\n  [0.1279381953467521569740561652246953718517,0.1279381953467521569740561652246953718517,0.1258374563468282961213753825111836887264,0.1258374563468282961213753825111836887264,0.1216704729278033912044631534762624256070,0.1216704729278033912044631534762624256070,0.1155056680537256013533444839067835598622,0.1155056680537256013533444839067835598622,0.1074442701159656347825773424466062227946,0.1074442701159656347825773424466062227946,0.0976186521041138882698806644642471544279,0.0976186521041138882698806644642471544279,0.0861901615319532759171852029837426671850,0.0861901615319532759171852029837426671850,0.0733464814110803057340336152531165181193,0.0733464814110803057340336152531165181193,0.0592985849154367807463677585001085845412,0.0592985849154367807463677585001085845412,0.0442774388174198061686027482113382288593,0.0442774388174198061686027482113382288593,0.0285313886289336631813078159518782864491,0.0285313886289336631813078159518782864491,0.0123412297999871995468056670700372915759,0.0123412297999871995468056670700372915759]\n];\n\n// LUT for binomial coefficient arrays per curve order 'n'\nvar binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\n\n// Look up what the binomial coefficient is for pair {n,k}\nfunction binomials(n, k) {\n  return binomialCoefficients[n][k];\n}\n\n/**\n * Compute the curve derivative (hodograph) at t.\n */\nfunction getDerivative(derivative, t, vs) {\n  // the derivative of any 't'-less function is zero.\n  var n = vs.length - 1,\n      _vs,\n      value,\n      k;\n  if (n === 0) {\n    return 0;\n  }\n\n  // direct values? compute!\n  if (derivative === 0) {\n    value = 0;\n    for (k = 0; k <= n; k++) {\n      value += binomials(n, k) * Math.pow(1 - t, n - k) * Math.pow(t, k) * vs[k];\n    }\n    return value;\n  } else {\n    // Still some derivative? go down one order, then try\n    // for the lower order curve's.\n    _vs = new Array(n);\n    for (k = 0; k < n; k++) {\n      _vs[k] = n * (vs[k + 1] - vs[k]);\n    }\n    return getDerivative(derivative - 1, t, _vs);\n  }\n}\n\nfunction B(xs, ys, t) {\n  var xbase = getDerivative(1, t, xs);\n  var ybase = getDerivative(1, t, ys);\n  var combined = xbase * xbase + ybase * ybase;\n  return Math.sqrt(combined);\n}\n\nfunction getCubicArcLength(xs, ys, t) {\n  var z, sum, i, correctedT;\n\n  /*if (xs.length >= tValues.length) {\n    throw new Error('too high n bezier');\n  }*/\n\n  if (t === undefined) {\n    t = 1;\n  }\n  var n = 20;\n\n  z = t / 2;\n  sum = 0;\n  for (i = 0; i < n; i++) {\n    correctedT = z * tValues[n][i] + z;\n    sum += cValues[n][i] * B(xs, ys, correctedT);\n  }\n  return z * sum;\n}\n","//This file is taken from the following project: https://github.com/fontello/svgpath\n// Convert an arc to a sequence of cubic bézier curves\n//\n'use strict';\n\n\nvar TAU = Math.PI * 2;\n\n\n/* eslint-disable space-infix-ops */\n\n// Calculate an angle between two unit vectors\n//\n// Since we measure angle between radii of circular arcs,\n// we can use simplified math (without length normalization)\n//\nfunction unit_vector_angle(ux, uy, vx, vy) {\n  var sign = (ux * vy - uy * vx < 0) ? -1 : 1;\n  var dot  = ux * vx + uy * vy;\n\n  // Add this to work with arbitrary vectors:\n  // dot /= Math.sqrt(ux * ux + uy * uy) * Math.sqrt(vx * vx + vy * vy);\n\n  // rounding errors, e.g. -1.0000000000000002 can screw up this\n  if (dot >  1.0) { dot =  1.0; }\n  if (dot < -1.0) { dot = -1.0; }\n\n  return sign * Math.acos(dot);\n}\n\n\n// Convert from endpoint to center parameterization,\n// see http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n//\n// Return [cx, cy, theta1, delta_theta]\n//\nfunction get_arc_center(x1, y1, x2, y2, fa, fs, rx, ry, sin_phi, cos_phi) {\n  // Step 1.\n  //\n  // Moving an ellipse so origin will be the middlepoint between our two\n  // points. After that, rotate it to line up ellipse axes with coordinate\n  // axes.\n  //\n  var x1p =  cos_phi*(x1-x2)/2 + sin_phi*(y1-y2)/2;\n  var y1p = -sin_phi*(x1-x2)/2 + cos_phi*(y1-y2)/2;\n\n  var rx_sq  =  rx * rx;\n  var ry_sq  =  ry * ry;\n  var x1p_sq = x1p * x1p;\n  var y1p_sq = y1p * y1p;\n\n  // Step 2.\n  //\n  // Compute coordinates of the centre of this ellipse (cx', cy')\n  // in the new coordinate system.\n  //\n  var radicant = (rx_sq * ry_sq) - (rx_sq * y1p_sq) - (ry_sq * x1p_sq);\n\n  if (radicant < 0) {\n    // due to rounding errors it might be e.g. -1.3877787807814457e-17\n    radicant = 0;\n  }\n\n  radicant /=   (rx_sq * y1p_sq) + (ry_sq * x1p_sq);\n  radicant = Math.sqrt(radicant) * (fa === fs ? -1 : 1);\n\n  var cxp = radicant *  rx/ry * y1p;\n  var cyp = radicant * -ry/rx * x1p;\n\n  // Step 3.\n  //\n  // Transform back to get centre coordinates (cx, cy) in the original\n  // coordinate system.\n  //\n  var cx = cos_phi*cxp - sin_phi*cyp + (x1+x2)/2;\n  var cy = sin_phi*cxp + cos_phi*cyp + (y1+y2)/2;\n\n  // Step 4.\n  //\n  // Compute angles (theta1, delta_theta).\n  //\n  var v1x =  (x1p - cxp) / rx;\n  var v1y =  (y1p - cyp) / ry;\n  var v2x = (-x1p - cxp) / rx;\n  var v2y = (-y1p - cyp) / ry;\n\n  var theta1 = unit_vector_angle(1, 0, v1x, v1y);\n  var delta_theta = unit_vector_angle(v1x, v1y, v2x, v2y);\n\n  if (fs === 0 && delta_theta > 0) {\n    delta_theta -= TAU;\n  }\n  if (fs === 1 && delta_theta < 0) {\n    delta_theta += TAU;\n  }\n\n  return [ cx, cy, theta1, delta_theta ];\n}\n\n//\n// Approximate one unit arc segment with bézier curves,\n// see http://math.stackexchange.com/questions/873224\n//\nfunction approximate_unit_arc(theta1, delta_theta) {\n  var alpha = 4/3 * Math.tan(delta_theta/4);\n\n  var x1 = Math.cos(theta1);\n  var y1 = Math.sin(theta1);\n  var x2 = Math.cos(theta1 + delta_theta);\n  var y2 = Math.sin(theta1 + delta_theta);\n\n  return [ x1, y1, x1 - y1*alpha, y1 + x1*alpha, x2 + y2*alpha, y2 - x2*alpha, x2, y2 ];\n}\n\nexport default function(x1, y1, rx, ry, phi, fa, fs, x2, y2) {\n  var sin_phi = Math.sin(phi * TAU / 360);\n  var cos_phi = Math.cos(phi * TAU / 360);\n\n  // Make sure radii are valid\n  //\n  var x1p =  cos_phi*(x1-x2)/2 + sin_phi*(y1-y2)/2;\n  var y1p = -sin_phi*(x1-x2)/2 + cos_phi*(y1-y2)/2;\n\n  if (x1p === 0 && y1p === 0) {\n    // we're asked to draw line to itself\n    return [];\n  }\n\n  if (rx === 0 || ry === 0) {\n    // one of the radii is zero\n    return [];\n  }\n\n\n  // Compensate out-of-range radii\n  //\n  rx = Math.abs(rx);\n  ry = Math.abs(ry);\n\n  var lambda = (x1p * x1p) / (rx * rx) + (y1p * y1p) / (ry * ry);\n  if (lambda > 1) {\n    rx *= Math.sqrt(lambda);\n    ry *= Math.sqrt(lambda);\n  }\n\n\n  // Get center parameters (cx, cy, theta1, delta_theta)\n  //\n  var cc = get_arc_center(x1, y1, x2, y2, fa, fs, rx, ry, sin_phi, cos_phi);\n\n  var result = [];\n  var theta1 = cc[2];\n  var delta_theta = cc[3];\n\n  // Split an arc to multiple segments, so each segment\n  // will be less than τ/4 (= 90°)\n  //\n  var segments = Math.max(Math.ceil(Math.abs(delta_theta) / (TAU / 4)), 1);\n  delta_theta /= segments;\n\n  for (var i = 0; i < segments; i++) {\n    result.push(approximate_unit_arc(theta1, delta_theta));\n    theta1 += delta_theta;\n  }\n\n  // We have a bezier approximation of a unit circle,\n  // now need to transform back to the original ellipse\n  //\n  return result.map(function (curve) {\n    for (var i = 0; i < curve.length; i += 2) {\n      var x = curve[i + 0];\n      var y = curve[i + 1];\n\n      // scale\n      x *= rx;\n      y *= ry;\n\n      // rotate\n      var xp = cos_phi*x - sin_phi*y;\n      var yp = sin_phi*x + cos_phi*y;\n\n      // translate\n      curve[i + 0] = xp + cc[0];\n      curve[i + 1] = yp + cc[1];\n    }\n\n    return curve;\n  });\n}","//Calculate ans Arc curve length and positionAtLength\n//Definitions taken from https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths\nimport a2c from \"./a2c\";\nimport Bezier from \"./bezier\";\n\n\nexport default function(x0, y0, rx,ry, xAxisRotate, LargeArcFlag,SweepFlag, x,y) {\n  return new Arc(x0, y0, rx,ry, xAxisRotate, LargeArcFlag,SweepFlag, x,y);\n}\n\nfunction Arc(x0, y0,rx,ry, xAxisRotate, LargeArcFlag,SweepFlag,x,y) {\n    var length = 0;\n    var partialLengths = [];\n    var curves = [];\n    var res = a2c(x0, y0,rx,ry, xAxisRotate, LargeArcFlag,SweepFlag,x,y);\n    res.forEach(function(d){\n        var curve = new Bezier(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7]);\n        var curveLength = curve.getTotalLength();\n        length += curveLength;\n        partialLengths.push(curveLength);\n        curves.push(curve);\n    });\n    this.length = length;\n    this.partialLengths = partialLengths;\n    this.curves = curves;\n}\n\nArc.prototype = {\n  constructor: Arc,\n  init: function() {\n\n    \n  },\n\n  getTotalLength: function() {\n    return this.length;\n  },\n  getPointAtLength: function(fractionLength) {\n    \n    if(fractionLength < 0){\n      fractionLength = 0;\n    } else if(fractionLength > this.length){\n      fractionLength = this.length;\n    }\n    var i = this.partialLengths.length - 1;\n\n    while(this.partialLengths[i] >= fractionLength && this.partialLengths[i] > 0){\n      i--;\n    }\n    if(i<this.partialLengths.length-1){\n        i++;\n    }\n\n    var lengthOffset = 0;\n    for(var j=0; j<i; j++){\n        lengthOffset += this.partialLengths[j];\n    }\n\n    return this.curves[i].getPointAtLength(fractionLength - lengthOffset);\n  },\n  getTangentAtLength: function(fractionLength) {\n    if(fractionLength < 0){\n        fractionLength = 0;\n        } else if(fractionLength > this.length){\n        fractionLength = this.length;\n        }\n        var i = this.partialLengths.length - 1;\n\n        while(this.partialLengths[i] >= fractionLength && this.partialLengths[i] > 0){\n        i--;\n        }\n        if(i<this.partialLengths.length-1){\n            i++;\n        }\n\n        var lengthOffset = 0;\n        for(var j=0; j<i; j++){\n            lengthOffset += this.partialLengths[j];\n        }\n\n    return this.curves[i].getTangentAtLength(fractionLength - lengthOffset);\n  },\n  getPropertiesAtLength: function(fractionLength){\n    var tangent = this.getTangentAtLength(fractionLength);\n    var point = this.getPointAtLength(fractionLength);\n    return {x: point.x, y: point.y, tangentX: tangent.x, tangentY: tangent.y};\n  }\n};","export default function(x0, x1, y0, y1) {\n  return new LinearPosition(x0, x1, y0, y1);\n\n}\n\nfunction LinearPosition(x0, x1, y0, y1){\n  this.x0 = x0;\n  this.x1 = x1;\n  this.y0 = y0;\n  this.y1 = y1;\n}\n\nLinearPosition.prototype.getTotalLength = function(){\n  return Math.sqrt(Math.pow(this.x0 - this.x1, 2) +\n         Math.pow(this.y0 - this.y1, 2));\n};\n\nLinearPosition.prototype.getPointAtLength = function(pos){\n  var fraction = pos/ (Math.sqrt(Math.pow(this.x0 - this.x1, 2) +\n         Math.pow(this.y0 - this.y1, 2)));\n\n  var newDeltaX = (this.x1 - this.x0)*fraction;\n  var newDeltaY = (this.y1 - this.y0)*fraction;\n  return { x: this.x0 + newDeltaX, y: this.y0 + newDeltaY };\n};\nLinearPosition.prototype.getTangentAtLength = function(){\n  var module = Math.sqrt((this.x1 - this.x0) * (this.x1 - this.x0) +\n              (this.y1 - this.y0) * (this.y1 - this.y0));\n  return { x: (this.x1 - this.x0)/module, y: (this.y1 - this.y0)/module };\n};\nLinearPosition.prototype.getPropertiesAtLength = function(pos){\n  var point = this.getPointAtLength(pos);\n  var tangent = this.getTangentAtLength();\n  return {x: point.x, y: point.y, tangentX: tangent.x, tangentY: tangent.y};\n};\n","import parse from \"./parse\";\nimport Bezier from \"./bezier\";\nimport Arc from \"./arc\";\nimport LinearPosition from \"./linear\";\n\nexport default function(svgString) {\n  var length = 0;\n  var partial_lengths = [];\n  var functions = [];\n\n  function svgProperties(string){\n    if(!string){return null;}\n    var parsed = parse(string);\n    var cur = [0, 0];\n    var prev_point = [0, 0];\n    var curve;\n    var ringStart;\n    for (var i = 0; i < parsed.length; i++){\n      //moveTo\n      if(parsed[i][0] === \"M\"){\n        cur = [parsed[i][1], parsed[i][2]];\n        ringStart = [cur[0], cur[1]];\n        functions.push(null);\n      } else if(parsed[i][0] === \"m\"){\n        cur = [parsed[i][1] + cur[0], parsed[i][2] + cur[1]];\n        ringStart = [cur[0], cur[1]];\n        functions.push(null);\n      }\n      //lineTo\n      else if(parsed[i][0] === \"L\"){\n        length = length + Math.sqrt(Math.pow(cur[0] - parsed[i][1], 2) + Math.pow(cur[1] - parsed[i][2], 2));\n        functions.push(new LinearPosition(cur[0], parsed[i][1], cur[1], parsed[i][2]));\n        cur = [parsed[i][1], parsed[i][2]];\n      } else if(parsed[i][0] === \"l\"){\n        length = length + Math.sqrt(Math.pow(parsed[i][1], 2) + Math.pow(parsed[i][2], 2));\n        functions.push(new LinearPosition(cur[0], parsed[i][1] + cur[0], cur[1], parsed[i][2] + cur[1]));\n        cur = [parsed[i][1] + cur[0], parsed[i][2] + cur[1]];\n      } else if(parsed[i][0] === \"H\"){\n        length = length + Math.abs(cur[0] - parsed[i][1]);\n        functions.push(new LinearPosition(cur[0], parsed[i][1], cur[1], cur[1]));\n        cur[0] = parsed[i][1];\n      } else if(parsed[i][0] === \"h\"){\n        length = length + Math.abs(parsed[i][1]);\n        functions.push(new LinearPosition(cur[0], cur[0] + parsed[i][1], cur[1], cur[1]));\n        cur[0] = parsed[i][1] + cur[0];\n      } else if(parsed[i][0] === \"V\"){\n        length = length + Math.abs(cur[1] - parsed[i][1]);\n        functions.push(new LinearPosition(cur[0], cur[0], cur[1], parsed[i][1]));\n        cur[1] = parsed[i][1];\n      } else if(parsed[i][0] === \"v\"){\n        length = length + Math.abs(parsed[i][1]);\n        functions.push(new LinearPosition(cur[0], cur[0], cur[1], cur[1] + parsed[i][1]));\n        cur[1] = parsed[i][1] + cur[1];\n      //Close path\n      }  else if(parsed[i][0] === \"z\" || parsed[i][0] === \"Z\"){\n        length = length + Math.sqrt(Math.pow(ringStart[0] - cur[0], 2) + Math.pow(ringStart[1] - cur[1], 2));\n        functions.push(new LinearPosition(cur[0], ringStart[0], cur[1], ringStart[1]));\n        cur = [ringStart[0], ringStart[1]];\n      }\n      //Cubic Bezier curves\n      else if(parsed[i][0] === \"C\"){\n        curve = new Bezier(cur[0], cur[1] , parsed[i][1], parsed[i][2] , parsed[i][3], parsed[i][4] , parsed[i][5], parsed[i][6]);\n        length = length + curve.getTotalLength();\n        cur = [parsed[i][5], parsed[i][6]];\n        functions.push(curve);\n      } else if(parsed[i][0] === \"c\"){\n        curve = new Bezier(cur[0], cur[1] , cur[0] + parsed[i][1], cur[1] + parsed[i][2] , cur[0] + parsed[i][3], cur[1] + parsed[i][4] , cur[0] + parsed[i][5], cur[1] + parsed[i][6]);\n        length = length + curve.getTotalLength();\n        cur = [parsed[i][5] + cur[0], parsed[i][6] + cur[1]];\n        functions.push(curve);\n      } else if(parsed[i][0] === \"S\"){\n        if(i>0 && [\"C\",\"c\",\"S\",\"s\"].indexOf(parsed[i-1][0]) > -1){\n          curve = new Bezier(cur[0], cur[1] , 2*cur[0] - parsed[i-1][parsed[i-1].length - 4], 2*cur[1] - parsed[i-1][parsed[i-1].length - 3], parsed[i][1], parsed[i][2] , parsed[i][3], parsed[i][4]);\n        } else {\n          curve = new Bezier(cur[0], cur[1] , cur[0], cur[1], parsed[i][1], parsed[i][2] , parsed[i][3], parsed[i][4]);\n        }\n        length = length + curve.getTotalLength();\n        cur = [parsed[i][3], parsed[i][4]];\n        functions.push(curve);\n      }  else if(parsed[i][0] === \"s\"){ //240 225\n        if(i>0 && [\"C\",\"c\",\"S\",\"s\"].indexOf(parsed[i-1][0]) > -1){\n          curve = new Bezier(cur[0], cur[1] , cur[0] + curve.d.x - curve.c.x, cur[1] + curve.d.y - curve.c.y, cur[0] + parsed[i][1], cur[1] + parsed[i][2] , cur[0] + parsed[i][3], cur[1] + parsed[i][4]);\n        } else {\n          curve = new Bezier(cur[0], cur[1] , cur[0], cur[1], cur[0] + parsed[i][1], cur[1] + parsed[i][2] , cur[0] + parsed[i][3], cur[1] + parsed[i][4]);\n        }\n        length = length + curve.getTotalLength();\n        cur = [parsed[i][3] + cur[0], parsed[i][4] + cur[1]];\n        functions.push(curve);\n      }\n      //Quadratic Bezier curves\n      else if(parsed[i][0] === \"Q\"){\n        if(cur[0] != parsed[i][1] && cur[1] != parsed[i][2]){\n          curve = new Bezier(cur[0], cur[1] , parsed[i][1], parsed[i][2] , parsed[i][3], parsed[i][4]);\n        } else {\n          curve = new LinearPosition(parsed[i][1], parsed[i][3], parsed[i][2], parsed[i][4]);\n        }\n        length = length + curve.getTotalLength();\n        functions.push(curve);\n        cur = [parsed[i][3], parsed[i][4]];\n        prev_point = [parsed[i][1], parsed[i][2]];\n\n      }  else if(parsed[i][0] === \"q\"){\n        if(!(parsed[i][1] == 0 && parsed[i][2] == 0)){\n          curve = new Bezier(cur[0], cur[1] , cur[0] + parsed[i][1], cur[1] + parsed[i][2] , cur[0] + parsed[i][3], cur[1] + parsed[i][4]);\n        } else {\n          curve = new LinearPosition(cur[0] + parsed[i][1], cur[0] + parsed[i][3], cur[1] + parsed[i][2], cur[1] + parsed[i][4]);\n        }\n        length = length + curve.getTotalLength();\n        prev_point = [cur[0] + parsed[i][1], cur[1] + parsed[i][2]];\n        cur = [parsed[i][3] + cur[0], parsed[i][4] + cur[1]];\n        functions.push(curve);\n      } else if(parsed[i][0] === \"T\"){\n        if(i>0 && [\"Q\",\"q\",\"T\",\"t\"].indexOf(parsed[i-1][0]) > -1){\n          curve = new Bezier(cur[0], cur[1] , 2 * cur[0] - prev_point[0] , 2 * cur[1] - prev_point[1] , parsed[i][1], parsed[i][2]);\n        } else {\n          curve = new LinearPosition(cur[0], parsed[i][1], cur[1], parsed[i][2]);\n        }\n        functions.push(curve);\n        length = length + curve.getTotalLength();\n        prev_point = [2 * cur[0] - prev_point[0] , 2 * cur[1] - prev_point[1]];\n        cur = [parsed[i][1], parsed[i][2]];\n\n      } else if(parsed[i][0] === \"t\"){\n        if(i>0 && [\"Q\",\"q\",\"T\",\"t\"].indexOf(parsed[i-1][0]) > -1){\n          curve = new Bezier(cur[0], cur[1] , 2 * cur[0] - prev_point[0] , 2 * cur[1] - prev_point[1] , cur[0] + parsed[i][1], cur[1] + parsed[i][2]);\n        } else {\n          curve = new LinearPosition(cur[0], cur[0] + parsed[i][1], cur[1], cur[1] + parsed[i][2]);\n        }\n        length = length + curve.getTotalLength();\n        prev_point = [2 * cur[0] - prev_point[0] , 2 * cur[1] - prev_point[1]];\n        cur = [parsed[i][1] + cur[0], parsed[i][2] + cur[0]];\n        functions.push(curve);\n      } else if(parsed[i][0] === \"A\"){\n        curve = new Arc(cur[0], cur[1], parsed[i][1], parsed[i][2], parsed[i][3], parsed[i][4], parsed[i][5], parsed[i][6], parsed[i][7]);\n\n        length = length + curve.getTotalLength();\n        cur = [parsed[i][6], parsed[i][7]];\n        functions.push(curve);\n      } else if(parsed[i][0] === \"a\"){\n        curve = new Arc(cur[0], cur[1], parsed[i][1], parsed[i][2], parsed[i][3], parsed[i][4], parsed[i][5], cur[0] + parsed[i][6], cur[1] + parsed[i][7]);\n\n        length = length + curve.getTotalLength();\n        cur = [cur[0] + parsed[i][6], cur[1] + parsed[i][7]];\n        functions.push(curve);\n      }\n      partial_lengths.push(length);\n\n    }\n    return svgProperties;\n  }\n\n svgProperties.getTotalLength = function(){\n    return length;\n  };\n\n  svgProperties.getPointAtLength = function(fractionLength){\n    var fractionPart = getPartAtLength(fractionLength);\n    return functions[fractionPart.i].getPointAtLength(fractionPart.fraction);\n  };\n\n  svgProperties.getTangentAtLength = function(fractionLength){\n    var fractionPart = getPartAtLength(fractionLength);\n    return functions[fractionPart.i].getTangentAtLength(fractionPart.fraction);\n  };\n\n  svgProperties.getPropertiesAtLength = function(fractionLength){\n    var fractionPart = getPartAtLength(fractionLength);\n    return functions[fractionPart.i].getPropertiesAtLength(fractionPart.fraction);\n  };\n\n  var getPartAtLength = function(fractionLength){\n    if(fractionLength < 0){\n      fractionLength = 0;\n    } else if(fractionLength > length){\n      fractionLength = length;\n    }\n\n    var i = partial_lengths.length - 1;\n\n    while(partial_lengths[i] >= fractionLength && partial_lengths[i] > 0){\n      i--;\n    }\n    i++;\n    return {fraction: fractionLength-partial_lengths[i-1], i: i};\n  };\n\n  return svgProperties(svgString);\n}\n","import { toPathString } from \"./svg.js\";\nimport { polygonCentroid as d3Centroid } from \"d3-polygon\";\n\nexport function distance(a, b) {\n  return Math.sqrt((a[0] - b[0]) * (a[0] - b[0]) + (a[1] - b[1]) * (a[1] - b[1]));\n}\n\nexport function pointAlong(a, b, pct) {\n  return [a[0] + (b[0] - a[0]) * pct, a[1] + (b[1] - a[1]) * pct];\n}\n\nexport function samePoint(a, b) {\n  return distance(a, b) < 1e-9;\n}\n\nexport function interpolatePoints(a, b, string) {\n  let interpolators = a.map((d, i) => interpolatePoint(d, b[i]));\n\n  return function(t) {\n    let values = interpolators.map(fn => fn(t));\n    return string ? toPathString(values) : values;\n  };\n}\n\nexport function interpolatePoint(a, b) {\n  return function(t) {\n    return a.map((d, i) => d + t * (b[i] - d));\n  };\n}\n\nexport function isFiniteNumber(number) {\n  return typeof number === \"number\" && isFinite(number);\n}\n\n// Use plain mean if it's a degenerate polygon (colinear points or single point)\nexport function polygonCentroid(polygon) {\n  return nonZeroArea(polygon) ? d3Centroid(polygon) : [\n    (polygon[0][0] + polygon[polygon.length - 1][0]) / 2,\n    (polygon[0][1] + polygon[polygon.length - 1][1]) / 2\n  ];\n}\n\nfunction nonZeroArea(polygon) {\n\n  for (let i = 0; i < polygon.length - 2; i++) {\n\n    let a = polygon[i],\n        b = polygon[i + 1],\n        c = polygon[i + 2];\n\n    if (a[0] * (b[1] - c[1]) + b[0] * (c[1] - a[1]) + c[0] * (a[1] - b[1])) {\n      return true;\n    }\n\n  }\n\n  return false;\n\n}\n","export const INVALID_INPUT = `All shapes must be supplied as arrays of [x, y] points or an SVG path string (https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d).\nExample valid ways of supplying a shape would be:\n[[0, 0], [10, 0], [10, 10]]\n\"M0,0 L10,0 L10,10Z\"\n`;\n\nexport const INVALID_INPUT_ALL = `flubber.all() expects two arrays of equal length as arguments. Each element in both arrays should be an array of [x, y] points or an SVG path string (https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d).`;\n\nexport const INVALID_PATH_STRING = `Invalid SVG path string supplied.\nPath string reference: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d\n`;\n","import Path from \"svgpath\";\nimport { svgPathProperties } from \"svg-path-properties\";\nimport normalizeRing from \"./normalize.js\";\nimport { isFiniteNumber } from \"./math.js\";\nimport { INVALID_INPUT } from \"./errors.js\";\n\nfunction parse(str) {\n  return new Path(str).abs();\n}\n\nfunction split(parsed) {\n  return parsed\n    .toString()\n    .split(\"M\")\n    .map((d, i) => {\n      d = d.trim();\n      return i && d ? \"M\" + d : d;\n    })\n    .filter(d => d);\n}\n\nexport function toPathString(ring) {\n  return \"M\" + ring.join(\"L\") + \"Z\";\n}\n\nexport function splitPathString(str) {\n  return split(parse(str));\n}\n\nexport function pathStringToRing(str, maxSegmentLength) {\n  let parsed = parse(str);\n\n  return exactRing(parsed) || approximateRing(parsed, maxSegmentLength);\n}\n\nfunction exactRing(parsed) {\n  let segments = parsed.segments || [],\n    ring = [];\n\n  if (!segments.length || segments[0][0] !== \"M\") {\n    return false;\n  }\n\n  for (let i = 0; i < segments.length; i++) {\n    let [command, x, y] = segments[i];\n    if ((command === \"M\" && i) || command === \"Z\") {\n      break;\n    } else if (command === \"M\" || command === \"L\") {\n      ring.push([x, y]);\n    } else if (command === \"H\") {\n      ring.push([x, ring[ring.length - 1][1]]);\n    } else if (command === \"V\") {\n      ring.push([ring[ring.length - 1][0], x]);\n    } else {\n      return false;\n    }\n  }\n\n  return ring.length ? { ring } : false;\n}\n\nfunction approximateRing(parsed, maxSegmentLength) {\n  let ringPath = split(parsed)[0],\n    ring = [],\n    props,\n    len,\n    m,\n    numPoints = 3;\n\n  if (!ringPath) {\n    throw new TypeError(INVALID_INPUT);\n  }\n\n  m = measure(ringPath);\n  len = m.getTotalLength();\n\n  if (maxSegmentLength && isFiniteNumber(maxSegmentLength) && maxSegmentLength > 0) {\n    numPoints = Math.max(numPoints, Math.ceil(len / maxSegmentLength));\n  }\n\n  for (let i = 0; i < numPoints; i++) {\n    let p = m.getPointAtLength(len * i / numPoints);\n    ring.push([p.x, p.y]);\n  }\n\n  return {\n    ring,\n    skipBisect: true\n  };\n}\n\nfunction measure(d) {\n  // Use native browser measurement if running in browser\n  if (typeof window !== \"undefined\" && window && window.document) {\n    try {\n      let path = window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n      path.setAttributeNS(null, \"d\", d);\n      return path;\n    } catch (e) {}\n  }\n  // Fall back to svg-path-properties\n  return svgPathProperties(d);\n}\n","import { polygonLength } from \"d3-polygon\";\nimport { distance, pointAlong } from \"./math.js\";\n\nexport function addPoints(ring, numPoints) {\n  const desiredLength = ring.length + numPoints,\n    step = polygonLength(ring) / numPoints;\n\n  let i = 0,\n    cursor = 0,\n    insertAt = step / 2;\n\n  while (ring.length < desiredLength) {\n    let a = ring[i],\n      b = ring[(i + 1) % ring.length],\n      segment = distance(a, b);\n\n    if (insertAt <= cursor + segment) {\n      ring.splice(i + 1, 0, segment ? pointAlong(a, b, (insertAt - cursor) / segment) : a.slice(0));\n      insertAt += step;\n      continue;\n    }\n\n    cursor += segment;\n    i++;\n  }\n}\n\nexport function bisect(ring, maxSegmentLength = Infinity) {\n  for (let i = 0; i < ring.length; i++) {\n    let a = ring[i],\n      b = i === ring.length - 1 ? ring[0] : ring[i + 1];\n\n    // Could splice the whole set for a segment instead, but a bit messy\n    while (distance(a, b) > maxSegmentLength) {\n      b = pointAlong(a, b, 0.5);\n      ring.splice(i + 1, 0, b);\n    }\n  }\n}\n","import { polygonArea } from \"d3-polygon\";\nimport { pathStringToRing } from \"./svg.js\";\nimport { samePoint, isFiniteNumber } from \"./math.js\";\nimport { bisect } from \"./add.js\";\nimport { INVALID_INPUT } from \"./errors.js\";\n\nexport default function normalizeRing(ring, maxSegmentLength) {\n  let points, area, skipBisect;\n\n  if (typeof ring === \"string\") {\n    let converted = pathStringToRing(ring, maxSegmentLength);\n    ring = converted.ring;\n    skipBisect = converted.skipBisect;\n  } else if (!Array.isArray(ring)) {\n    throw new TypeError(INVALID_INPUT);\n  }\n\n  points = ring.slice(0);\n\n  if (!validRing(points)) {\n    throw new TypeError(INVALID_INPUT);\n  }\n\n  // TODO skip this test to avoid scale issues?\n  // Chosen epsilon (1e-6) is problematic for small coordinate range\n  if (points.length > 1 && samePoint(points[0], points[points.length - 1])) {\n    points.pop();\n  }\n\n  area = polygonArea(points);\n\n  // Make all rings clockwise\n  if (area > 0) {\n    points.reverse();\n  }\n\n  if (\n    !skipBisect &&\n    maxSegmentLength &&\n    isFiniteNumber(maxSegmentLength) &&\n    maxSegmentLength > 0\n  ) {\n    bisect(points, maxSegmentLength);\n  }\n\n  return points;\n}\n\nfunction validRing(ring) {\n  return ring.every(function(point) {\n    return (\n      Array.isArray(point) &&\n      point.length >= 2 &&\n      isFiniteNumber(point[0]) &&\n      isFiniteNumber(point[1])\n    );\n  });\n}\n","import { distance } from \"./math.js\";\n\nexport default function(ring, vs) {\n  let len = ring.length,\n      min = Infinity,\n      bestOffset,\n      sumOfSquares,\n      spliced;\n\n  for (let offset = 0; offset < len; offset++) {\n    sumOfSquares = 0;\n\n    vs.forEach(function(p, i){\n      let d = distance(ring[(offset + i) % len], p);\n      sumOfSquares += d * d;\n    });\n\n    if (sumOfSquares < min) {\n      min = sumOfSquares;\n      bestOffset = offset;\n    }\n  }\n\n  if (bestOffset) {\n    spliced = ring.splice(0, bestOffset);\n    ring.splice(ring.length, 0, ...spliced);\n  }\n}\n","import normalizeRing from \"./normalize.js\";\nimport { addPoints } from \"./add.js\";\nimport rotate from \"./rotate.js\";\nimport { interpolatePoints } from \"./math.js\";\n\nexport default function(fromShape, toShape, { maxSegmentLength = 10, string = true } = {}) {\n  let fromRing = normalizeRing(fromShape, maxSegmentLength),\n    toRing = normalizeRing(toShape, maxSegmentLength),\n    interpolator = interpolateRing(fromRing, toRing, string);\n\n  // Extra optimization for near either end with path strings\n  if (!string || (typeof fromShape !== \"string\" && typeof toShape !== \"string\")) {\n    return interpolator;\n  }\n\n  return t => {\n    if (t < 1e-4 && typeof fromShape === \"string\") {\n      return fromShape;\n    }\n    if (1 - t < 1e-4 && typeof toShape === \"string\") {\n      return toShape;\n    }\n    return interpolator(t);\n  };\n}\n\nexport function interpolateRing(fromRing, toRing, string) {\n  let diff;\n\n  diff = fromRing.length - toRing.length;\n\n  // TODO bisect and add points in one step?\n  addPoints(fromRing, diff < 0 ? diff * -1 : 0);\n  addPoints(toRing, diff > 0 ? diff : 0);\n\n  rotate(fromRing, toRing);\n\n  return interpolatePoints(fromRing, toRing, string);\n}\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n    dim = dim || 2;\n\n    var hasHoles = holeIndices && holeIndices.length,\n        outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n        outerNode = linkedList(data, 0, outerLen, dim, true),\n        triangles = [];\n\n    if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n    var minX, minY, maxX, maxY, x, y, invSize;\n\n    if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n    // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n    if (data.length > 80 * dim) {\n        minX = maxX = data[0];\n        minY = maxY = data[1];\n\n        for (var i = dim; i < outerLen; i += dim) {\n            x = data[i];\n            y = data[i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n        }\n\n        // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n        invSize = Math.max(maxX - minX, maxY - minY);\n        invSize = invSize !== 0 ? 32767 / invSize : 0;\n    }\n\n    earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n    return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n    var i, last;\n\n    if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n        for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n    } else {\n        for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n    }\n\n    if (last && equals(last, last.next)) {\n        removeNode(last);\n        last = last.next;\n    }\n\n    return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n    if (!start) return start;\n    if (!end) end = start;\n\n    var p = start,\n        again;\n    do {\n        again = false;\n\n        if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n            removeNode(p);\n            p = end = p.prev;\n            if (p === p.next) break;\n            again = true;\n\n        } else {\n            p = p.next;\n        }\n    } while (again || p !== end);\n\n    return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n    if (!ear) return;\n\n    // interlink polygon nodes in z-order\n    if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n    var stop = ear,\n        prev, next;\n\n    // iterate through ears, slicing them one by one\n    while (ear.prev !== ear.next) {\n        prev = ear.prev;\n        next = ear.next;\n\n        if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n            // cut off the triangle\n            triangles.push(prev.i / dim | 0);\n            triangles.push(ear.i / dim | 0);\n            triangles.push(next.i / dim | 0);\n\n            removeNode(ear);\n\n            // skipping the next vertex leads to less sliver triangles\n            ear = next.next;\n            stop = next.next;\n\n            continue;\n        }\n\n        ear = next;\n\n        // if we looped through the whole remaining polygon and can't find any more ears\n        if (ear === stop) {\n            // try filtering points and slicing again\n            if (!pass) {\n                earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n            // if this didn't work, try curing all small self-intersections locally\n            } else if (pass === 1) {\n                ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n                earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n            // as a last resort, try splitting the remaining polygon into two\n            } else if (pass === 2) {\n                splitEarcut(ear, triangles, dim, minX, minY, invSize);\n            }\n\n            break;\n        }\n    }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    // now make sure we don't have other points inside the potential ear\n    var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n    // triangle bbox; min & max are calculated like this for speed\n    var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n        y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n        x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n        y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n    var p = c.next;\n    while (p !== a) {\n        if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.next;\n    }\n\n    return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n    // triangle bbox; min & max are calculated like this for speed\n    var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n        y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n        x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n        y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n    // z-order range for the current triangle bbox;\n    var minZ = zOrder(x0, y0, minX, minY, invSize),\n        maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n    var p = ear.prevZ,\n        n = ear.nextZ;\n\n    // look for points inside the triangle in both directions\n    while (p && p.z >= minZ && n && n.z <= maxZ) {\n        if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n\n        if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    // look for remaining points in decreasing z-order\n    while (p && p.z >= minZ) {\n        if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n    }\n\n    // look for remaining points in increasing z-order\n    while (n && n.z <= maxZ) {\n        if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n    var p = start;\n    do {\n        var a = p.prev,\n            b = p.next.next;\n\n        if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n            triangles.push(a.i / dim | 0);\n            triangles.push(p.i / dim | 0);\n            triangles.push(b.i / dim | 0);\n\n            // remove two nodes involved\n            removeNode(p);\n            removeNode(p.next);\n\n            p = start = b;\n        }\n        p = p.next;\n    } while (p !== start);\n\n    return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n    // look for a valid diagonal that divides the polygon into two\n    var a = start;\n    do {\n        var b = a.next.next;\n        while (b !== a.prev) {\n            if (a.i !== b.i && isValidDiagonal(a, b)) {\n                // split the polygon in two by the diagonal\n                var c = splitPolygon(a, b);\n\n                // filter colinear points around the cuts\n                a = filterPoints(a, a.next);\n                c = filterPoints(c, c.next);\n\n                // run earcut on each half\n                earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n                earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n                return;\n            }\n            b = b.next;\n        }\n        a = a.next;\n    } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n    var queue = [],\n        i, len, start, end, list;\n\n    for (i = 0, len = holeIndices.length; i < len; i++) {\n        start = holeIndices[i] * dim;\n        end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n        list = linkedList(data, start, end, dim, false);\n        if (list === list.next) list.steiner = true;\n        queue.push(getLeftmost(list));\n    }\n\n    queue.sort(compareX);\n\n    // process holes from left to right\n    for (i = 0; i < queue.length; i++) {\n        outerNode = eliminateHole(queue[i], outerNode);\n    }\n\n    return outerNode;\n}\n\nfunction compareX(a, b) {\n    return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n    var bridge = findHoleBridge(hole, outerNode);\n    if (!bridge) {\n        return outerNode;\n    }\n\n    var bridgeReverse = splitPolygon(bridge, hole);\n\n    // filter collinear points around the cuts\n    filterPoints(bridgeReverse, bridgeReverse.next);\n    return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n    var p = outerNode,\n        hx = hole.x,\n        hy = hole.y,\n        qx = -Infinity,\n        m;\n\n    // find a segment intersected by a ray from the hole's leftmost point to the left;\n    // segment's endpoint with lesser x will be potential connection point\n    do {\n        if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n            var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n            if (x <= hx && x > qx) {\n                qx = x;\n                m = p.x < p.next.x ? p : p.next;\n                if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n            }\n        }\n        p = p.next;\n    } while (p !== outerNode);\n\n    if (!m) return null;\n\n    // look for points inside the triangle of hole point, segment intersection and endpoint;\n    // if there are no points found, we have a valid connection;\n    // otherwise choose the point of the minimum angle with the ray as connection point\n\n    var stop = m,\n        mx = m.x,\n        my = m.y,\n        tanMin = Infinity,\n        tan;\n\n    p = m;\n\n    do {\n        if (hx >= p.x && p.x >= mx && hx !== p.x &&\n                pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n            tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n            if (locallyInside(p, hole) &&\n                (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n                m = p;\n                tanMin = tan;\n            }\n        }\n\n        p = p.next;\n    } while (p !== stop);\n\n    return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n    return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n    var p = start;\n    do {\n        if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n        p.prevZ = p.prev;\n        p.nextZ = p.next;\n        p = p.next;\n    } while (p !== start);\n\n    p.prevZ.nextZ = null;\n    p.prevZ = null;\n\n    sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n    var i, p, q, e, tail, numMerges, pSize, qSize,\n        inSize = 1;\n\n    do {\n        p = list;\n        list = null;\n        tail = null;\n        numMerges = 0;\n\n        while (p) {\n            numMerges++;\n            q = p;\n            pSize = 0;\n            for (i = 0; i < inSize; i++) {\n                pSize++;\n                q = q.nextZ;\n                if (!q) break;\n            }\n            qSize = inSize;\n\n            while (pSize > 0 || (qSize > 0 && q)) {\n\n                if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n                    e = p;\n                    p = p.nextZ;\n                    pSize--;\n                } else {\n                    e = q;\n                    q = q.nextZ;\n                    qSize--;\n                }\n\n                if (tail) tail.nextZ = e;\n                else list = e;\n\n                e.prevZ = tail;\n                tail = e;\n            }\n\n            p = q;\n        }\n\n        tail.nextZ = null;\n        inSize *= 2;\n\n    } while (numMerges > 1);\n\n    return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n    // coords are transformed into non-negative 15-bit integer range\n    x = (x - minX) * invSize | 0;\n    y = (y - minY) * invSize | 0;\n\n    x = (x | (x << 8)) & 0x00FF00FF;\n    x = (x | (x << 4)) & 0x0F0F0F0F;\n    x = (x | (x << 2)) & 0x33333333;\n    x = (x | (x << 1)) & 0x55555555;\n\n    y = (y | (y << 8)) & 0x00FF00FF;\n    y = (y | (y << 4)) & 0x0F0F0F0F;\n    y = (y | (y << 2)) & 0x33333333;\n    y = (y | (y << 1)) & 0x55555555;\n\n    return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n    var p = start,\n        leftmost = start;\n    do {\n        if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n        p = p.next;\n    } while (p !== start);\n\n    return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n    return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n           (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n           (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n    return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n           (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n            (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n            equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n    return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n    return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n    var o1 = sign(area(p1, q1, p2));\n    var o2 = sign(area(p1, q1, q2));\n    var o3 = sign(area(p2, q2, p1));\n    var o4 = sign(area(p2, q2, q1));\n\n    if (o1 !== o2 && o3 !== o4) return true; // general case\n\n    if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n    if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n    if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n    if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n    return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n    return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n    return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n    var p = a;\n    do {\n        if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n                intersects(p, p.next, a, b)) return true;\n        p = p.next;\n    } while (p !== a);\n\n    return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n    return area(a.prev, a, a.next) < 0 ?\n        area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n        area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n    var p = a,\n        inside = false,\n        px = (a.x + b.x) / 2,\n        py = (a.y + b.y) / 2;\n    do {\n        if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n                (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n            inside = !inside;\n        p = p.next;\n    } while (p !== a);\n\n    return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n    var a2 = new Node(a.i, a.x, a.y),\n        b2 = new Node(b.i, b.x, b.y),\n        an = a.next,\n        bp = b.prev;\n\n    a.next = b;\n    b.prev = a;\n\n    a2.next = an;\n    an.prev = a2;\n\n    b2.next = a2;\n    a2.prev = b2;\n\n    bp.next = b2;\n    b2.prev = bp;\n\n    return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n    var p = new Node(i, x, y);\n\n    if (!last) {\n        p.prev = p;\n        p.next = p;\n\n    } else {\n        p.next = last.next;\n        p.prev = last;\n        last.next.prev = p;\n        last.next = p;\n    }\n    return p;\n}\n\nfunction removeNode(p) {\n    p.next.prev = p.prev;\n    p.prev.next = p.next;\n\n    if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n    if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n    // vertex index in coordinates array\n    this.i = i;\n\n    // vertex coordinates\n    this.x = x;\n    this.y = y;\n\n    // previous and next vertex nodes in a polygon ring\n    this.prev = null;\n    this.next = null;\n\n    // z-order curve value\n    this.z = 0;\n\n    // previous and next nodes in z-order\n    this.prevZ = null;\n    this.nextZ = null;\n\n    // indicates whether this is a steiner point\n    this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n    var hasHoles = holeIndices && holeIndices.length;\n    var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n    var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n    if (hasHoles) {\n        for (var i = 0, len = holeIndices.length; i < len; i++) {\n            var start = holeIndices[i] * dim;\n            var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n            polygonArea -= Math.abs(signedArea(data, start, end, dim));\n        }\n    }\n\n    var trianglesArea = 0;\n    for (i = 0; i < triangles.length; i += 3) {\n        var a = triangles[i] * dim;\n        var b = triangles[i + 1] * dim;\n        var c = triangles[i + 2] * dim;\n        trianglesArea += Math.abs(\n            (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n            (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n    }\n\n    return polygonArea === 0 && trianglesArea === 0 ? 0 :\n        Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n    var sum = 0;\n    for (var i = start, j = end - dim; i < end; i += dim) {\n        sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n        j = i;\n    }\n    return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n    var dim = data[0][0].length,\n        result = {vertices: [], holes: [], dimensions: dim},\n        holeIndex = 0;\n\n    for (var i = 0; i < data.length; i++) {\n        for (var j = 0; j < data[i].length; j++) {\n            for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n        }\n        if (i > 0) {\n            holeIndex += data[i - 1].length;\n            result.holes.push(holeIndex);\n        }\n    }\n    return result;\n};\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import { MotionValue, useTransform } from \"motion/react\";\nimport { interpolate } from \"flubber\";\n\nexport function useFlubber(\n  pathIndexProgress: MotionValue<number>,\n  paths: string[]\n): MotionValue<string> {\n  return useTransform(\n    pathIndexProgress,\n    paths.map((_: string, index: number) => index), // input keyframes\n    paths, // output keyframes\n    {\n      // mixer will be called with each pair of output values and must return a new function,\n      // that accepts a progress value between 0 and 1 and returns the mixed value.\n      mixer: (a, b) => interpolate(a, b, { maxSegmentLength: 0.1 })\n      // clamp: true\n    }\n  );\n}\n","// src/subscribable.ts\nvar Subscribable = class {\n  constructor() {\n    this.listeners = /* @__PURE__ */ new Set();\n    this.subscribe = this.subscribe.bind(this);\n  }\n  subscribe(listener) {\n    this.listeners.add(listener);\n    this.onSubscribe();\n    return () => {\n      this.listeners.delete(listener);\n      this.onUnsubscribe();\n    };\n  }\n  hasListeners() {\n    return this.listeners.size > 0;\n  }\n  onSubscribe() {\n  }\n  onUnsubscribe() {\n  }\n};\nexport {\n  Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nvar FocusManager = class extends Subscribable {\n  #focused;\n  #cleanup;\n  #setup;\n  constructor() {\n    super();\n    this.#setup = (onFocus) => {\n      if (typeof window !== \"undefined\" && window.addEventListener) {\n        const listener = () => onFocus();\n        window.addEventListener(\"visibilitychange\", listener, false);\n        return () => {\n          window.removeEventListener(\"visibilitychange\", listener);\n        };\n      }\n      return;\n    };\n  }\n  onSubscribe() {\n    if (!this.#cleanup) {\n      this.setEventListener(this.#setup);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#cleanup?.();\n      this.#cleanup = void 0;\n    }\n  }\n  setEventListener(setup) {\n    this.#setup = setup;\n    this.#cleanup?.();\n    this.#cleanup = setup((focused) => {\n      if (typeof focused === \"boolean\") {\n        this.setFocused(focused);\n      } else {\n        this.onFocus();\n      }\n    });\n  }\n  setFocused(focused) {\n    const changed = this.#focused !== focused;\n    if (changed) {\n      this.#focused = focused;\n      this.onFocus();\n    }\n  }\n  onFocus() {\n    const isFocused = this.isFocused();\n    this.listeners.forEach((listener) => {\n      listener(isFocused);\n    });\n  }\n  isFocused() {\n    if (typeof this.#focused === \"boolean\") {\n      return this.#focused;\n    }\n    return globalThis.document?.visibilityState !== \"hidden\";\n  }\n};\nvar focusManager = new FocusManager();\nexport {\n  FocusManager,\n  focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/timeoutManager.ts\nvar defaultTimeoutProvider = {\n  // We need the wrapper function syntax below instead of direct references to\n  // global setTimeout etc.\n  //\n  // BAD: `setTimeout: setTimeout`\n  // GOOD: `setTimeout: (cb, delay) => setTimeout(cb, delay)`\n  //\n  // If we use direct references here, then anything that wants to spy on or\n  // replace the global setTimeout (like tests) won't work since we'll already\n  // have a hard reference to the original implementation at the time when this\n  // file was imported.\n  setTimeout: (callback, delay) => setTimeout(callback, delay),\n  clearTimeout: (timeoutId) => clearTimeout(timeoutId),\n  setInterval: (callback, delay) => setInterval(callback, delay),\n  clearInterval: (intervalId) => clearInterval(intervalId)\n};\nvar TimeoutManager = class {\n  // We cannot have TimeoutManager<T> as we must instantiate it with a concrete\n  // type at app boot; and if we leave that type, then any new timer provider\n  // would need to support the default provider's concrete timer ID, which is\n  // infeasible across environments.\n  //\n  // We settle for type safety for the TimeoutProvider type, and accept that\n  // this class is unsafe internally to allow for extension.\n  #provider = defaultTimeoutProvider;\n  #providerCalled = false;\n  setTimeoutProvider(provider) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (this.#providerCalled && provider !== this.#provider) {\n        console.error(\n          `[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.`,\n          { previous: this.#provider, provider }\n        );\n      }\n    }\n    this.#provider = provider;\n    if (process.env.NODE_ENV !== \"production\") {\n      this.#providerCalled = false;\n    }\n  }\n  setTimeout(callback, delay) {\n    if (process.env.NODE_ENV !== \"production\") {\n      this.#providerCalled = true;\n    }\n    return this.#provider.setTimeout(callback, delay);\n  }\n  clearTimeout(timeoutId) {\n    this.#provider.clearTimeout(timeoutId);\n  }\n  setInterval(callback, delay) {\n    if (process.env.NODE_ENV !== \"production\") {\n      this.#providerCalled = true;\n    }\n    return this.#provider.setInterval(callback, delay);\n  }\n  clearInterval(intervalId) {\n    this.#provider.clearInterval(intervalId);\n  }\n};\nvar timeoutManager = new TimeoutManager();\nfunction systemSetTimeoutZero(callback) {\n  setTimeout(callback, 0);\n}\nexport {\n  TimeoutManager,\n  defaultTimeoutProvider,\n  systemSetTimeoutZero,\n  timeoutManager\n};\n//# sourceMappingURL=timeoutManager.js.map","// src/utils.ts\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n}\nfunction functionalUpdate(updater, input) {\n  return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n  return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n  return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n  return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveQueryBoolean(option, query) {\n  return typeof option === \"function\" ? option(query) : option;\n}\nfunction matchQuery(filters, query) {\n  const {\n    type = \"all\",\n    exact,\n    fetchStatus,\n    predicate,\n    queryKey,\n    stale\n  } = filters;\n  if (queryKey) {\n    if (exact) {\n      if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n        return false;\n      }\n    } else if (!partialMatchKey(query.queryKey, queryKey)) {\n      return false;\n    }\n  }\n  if (type !== \"all\") {\n    const isActive = query.isActive();\n    if (type === \"active\" && !isActive) {\n      return false;\n    }\n    if (type === \"inactive\" && isActive) {\n      return false;\n    }\n  }\n  if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n    return false;\n  }\n  if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n    return false;\n  }\n  if (predicate && !predicate(query)) {\n    return false;\n  }\n  return true;\n}\nfunction matchMutation(filters, mutation) {\n  const { exact, status, predicate, mutationKey } = filters;\n  if (mutationKey) {\n    if (!mutation.options.mutationKey) {\n      return false;\n    }\n    if (exact) {\n      if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n        return false;\n      }\n    } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n      return false;\n    }\n  }\n  if (status && mutation.state.status !== status) {\n    return false;\n  }\n  if (predicate && !predicate(mutation)) {\n    return false;\n  }\n  return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n  const hashFn = options?.queryKeyHashFn || hashKey;\n  return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n  return JSON.stringify(\n    queryKey,\n    (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n      result[key] = val[key];\n      return result;\n    }, {}) : val\n  );\n}\nfunction partialMatchKey(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n    return Object.keys(b).every((key) => partialMatchKey(a[key], b[key]));\n  }\n  return false;\n}\nvar hasOwn = Object.prototype.hasOwnProperty;\nfunction replaceEqualDeep(a, b, depth = 0) {\n  if (a === b) {\n    return a;\n  }\n  if (depth > 500) return b;\n  const array = isPlainArray(a) && isPlainArray(b);\n  if (!array && !(isPlainObject(a) && isPlainObject(b))) return b;\n  const aItems = array ? a : Object.keys(a);\n  const aSize = aItems.length;\n  const bItems = array ? b : Object.keys(b);\n  const bSize = bItems.length;\n  const copy = array ? new Array(bSize) : {};\n  let equalItems = 0;\n  for (let i = 0; i < bSize; i++) {\n    const key = array ? i : bItems[i];\n    const aItem = a[key];\n    const bItem = b[key];\n    if (aItem === bItem) {\n      copy[key] = aItem;\n      if (array ? i < aSize : hasOwn.call(a, key)) equalItems++;\n      continue;\n    }\n    if (aItem === null || bItem === null || typeof aItem !== \"object\" || typeof bItem !== \"object\") {\n      copy[key] = bItem;\n      continue;\n    }\n    const v = replaceEqualDeep(aItem, bItem, depth + 1);\n    copy[key] = v;\n    if (v === aItem) equalItems++;\n  }\n  return aSize === bSize && equalItems === aSize ? a : copy;\n}\nfunction shallowEqualObjects(a, b) {\n  if (!b || Object.keys(a).length !== Object.keys(b).length) {\n    return false;\n  }\n  for (const key in a) {\n    if (a[key] !== b[key]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction isPlainArray(value) {\n  return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n  if (!hasObjectPrototype(o)) {\n    return false;\n  }\n  const ctor = o.constructor;\n  if (ctor === void 0) {\n    return true;\n  }\n  const prot = ctor.prototype;\n  if (!hasObjectPrototype(prot)) {\n    return false;\n  }\n  if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n    return false;\n  }\n  if (Object.getPrototypeOf(o) !== Object.prototype) {\n    return false;\n  }\n  return true;\n}\nfunction hasObjectPrototype(o) {\n  return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n  return new Promise((resolve) => {\n    timeoutManager.setTimeout(resolve, timeout);\n  });\n}\nfunction replaceData(prevData, data, options) {\n  if (typeof options.structuralSharing === \"function\") {\n    return options.structuralSharing(prevData, data);\n  } else if (options.structuralSharing !== false) {\n    if (process.env.NODE_ENV !== \"production\") {\n      try {\n        return replaceEqualDeep(prevData, data);\n      } catch (error) {\n        console.error(\n          `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`\n        );\n        throw error;\n      }\n    }\n    return replaceEqualDeep(prevData, data);\n  }\n  return data;\n}\nfunction keepPreviousData(previousData) {\n  return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n  const newItems = [...items, item];\n  return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n  const newItems = [item, ...items];\n  return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = /* @__PURE__ */ Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (options.queryFn === skipToken) {\n      console.error(\n        `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n      );\n    }\n  }\n  if (!options.queryFn && fetchOptions?.initialPromise) {\n    return () => fetchOptions.initialPromise;\n  }\n  if (!options.queryFn || options.queryFn === skipToken) {\n    return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n  }\n  return options.queryFn;\n}\nfunction shouldThrowError(throwOnError, params) {\n  if (typeof throwOnError === \"function\") {\n    return throwOnError(...params);\n  }\n  return !!throwOnError;\n}\nfunction addConsumeAwareSignal(object, getSignal, onCancelled) {\n  let consumed = false;\n  let signal;\n  Object.defineProperty(object, \"signal\", {\n    enumerable: true,\n    get: () => {\n      signal ??= getSignal();\n      if (consumed) {\n        return signal;\n      }\n      consumed = true;\n      if (signal.aborted) {\n        onCancelled();\n      } else {\n        signal.addEventListener(\"abort\", onCancelled, { once: true });\n      }\n      return signal;\n    }\n  });\n  return object;\n}\nexport {\n  addConsumeAwareSignal,\n  addToEnd,\n  addToStart,\n  ensureQueryFn,\n  functionalUpdate,\n  hashKey,\n  hashQueryKeyByOptions,\n  isPlainArray,\n  isPlainObject,\n  isServer,\n  isValidTimeout,\n  keepPreviousData,\n  matchMutation,\n  matchQuery,\n  noop,\n  partialMatchKey,\n  replaceData,\n  replaceEqualDeep,\n  resolveQueryBoolean,\n  resolveStaleTime,\n  shallowEqualObjects,\n  shouldThrowError,\n  skipToken,\n  sleep,\n  timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/environmentManager.ts\nimport { isServer } from \"./utils.js\";\nvar environmentManager = /* @__PURE__ */ (() => {\n  let isServerFn = () => isServer;\n  return {\n    /**\n     * Returns whether the current runtime should be treated as a server environment.\n     */\n    isServer() {\n      return isServerFn();\n    },\n    /**\n     * Overrides the server check globally.\n     */\n    setIsServer(isServerValue) {\n      isServerFn = isServerValue;\n    }\n  };\n})();\nexport {\n  environmentManager\n};\n//# sourceMappingURL=environmentManager.js.map","// src/thenable.ts\nimport { noop } from \"./utils.js\";\nfunction pendingThenable() {\n  let resolve;\n  let reject;\n  const thenable = new Promise((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  });\n  thenable.status = \"pending\";\n  thenable.catch(() => {\n  });\n  function finalize(data) {\n    Object.assign(thenable, data);\n    delete thenable.resolve;\n    delete thenable.reject;\n  }\n  thenable.resolve = (value) => {\n    finalize({\n      status: \"fulfilled\",\n      value\n    });\n    resolve(value);\n  };\n  thenable.reject = (reason) => {\n    finalize({\n      status: \"rejected\",\n      reason\n    });\n    reject(reason);\n  };\n  return thenable;\n}\nfunction tryResolveSync(promise) {\n  let data;\n  promise.then((result) => {\n    data = result;\n    return result;\n  }, noop)?.catch(noop);\n  if (data !== void 0) {\n    return { data };\n  }\n  return void 0;\n}\nexport {\n  pendingThenable,\n  tryResolveSync\n};\n//# sourceMappingURL=thenable.js.map","// src/notifyManager.ts\nimport { systemSetTimeoutZero } from \"./timeoutManager.js\";\nvar defaultScheduler = systemSetTimeoutZero;\nfunction createNotifyManager() {\n  let queue = [];\n  let transactions = 0;\n  let notifyFn = (callback) => {\n    callback();\n  };\n  let batchNotifyFn = (callback) => {\n    callback();\n  };\n  let scheduleFn = defaultScheduler;\n  const schedule = (callback) => {\n    if (transactions) {\n      queue.push(callback);\n    } else {\n      scheduleFn(() => {\n        notifyFn(callback);\n      });\n    }\n  };\n  const flush = () => {\n    const originalQueue = queue;\n    queue = [];\n    if (originalQueue.length) {\n      scheduleFn(() => {\n        batchNotifyFn(() => {\n          originalQueue.forEach((callback) => {\n            notifyFn(callback);\n          });\n        });\n      });\n    }\n  };\n  return {\n    batch: (callback) => {\n      let result;\n      transactions++;\n      try {\n        result = callback();\n      } finally {\n        transactions--;\n        if (!transactions) {\n          flush();\n        }\n      }\n      return result;\n    },\n    /**\n     * All calls to the wrapped function will be batched.\n     */\n    batchCalls: (callback) => {\n      return (...args) => {\n        schedule(() => {\n          callback(...args);\n        });\n      };\n    },\n    schedule,\n    /**\n     * Use this method to set a custom notify function.\n     * This can be used to for example wrap notifications with `React.act` while running tests.\n     */\n    setNotifyFunction: (fn) => {\n      notifyFn = fn;\n    },\n    /**\n     * Use this method to set a custom function to batch notifications together into a single tick.\n     * By default React Query will use the batch function provided by ReactDOM or React Native.\n     */\n    setBatchNotifyFunction: (fn) => {\n      batchNotifyFn = fn;\n    },\n    setScheduler: (fn) => {\n      scheduleFn = fn;\n    }\n  };\n}\nvar notifyManager = createNotifyManager();\nexport {\n  createNotifyManager,\n  defaultScheduler,\n  notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nvar OnlineManager = class extends Subscribable {\n  #online = true;\n  #cleanup;\n  #setup;\n  constructor() {\n    super();\n    this.#setup = (onOnline) => {\n      if (typeof window !== \"undefined\" && window.addEventListener) {\n        const onlineListener = () => onOnline(true);\n        const offlineListener = () => onOnline(false);\n        window.addEventListener(\"online\", onlineListener, false);\n        window.addEventListener(\"offline\", offlineListener, false);\n        return () => {\n          window.removeEventListener(\"online\", onlineListener);\n          window.removeEventListener(\"offline\", offlineListener);\n        };\n      }\n      return;\n    };\n  }\n  onSubscribe() {\n    if (!this.#cleanup) {\n      this.setEventListener(this.#setup);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#cleanup?.();\n      this.#cleanup = void 0;\n    }\n  }\n  setEventListener(setup) {\n    this.#setup = setup;\n    this.#cleanup?.();\n    this.#cleanup = setup(this.setOnline.bind(this));\n  }\n  setOnline(online) {\n    const changed = this.#online !== online;\n    if (changed) {\n      this.#online = online;\n      this.listeners.forEach((listener) => {\n        listener(online);\n      });\n    }\n  }\n  isOnline() {\n    return this.#online;\n  }\n};\nvar onlineManager = new OnlineManager();\nexport {\n  OnlineManager,\n  onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n  return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n  return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n  constructor(options) {\n    super(\"CancelledError\");\n    this.revert = options?.revert;\n    this.silent = options?.silent;\n  }\n};\nfunction isCancelledError(value) {\n  return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n  let isRetryCancelled = false;\n  let failureCount = 0;\n  let continueFn;\n  const thenable = pendingThenable();\n  const isResolved = () => thenable.status !== \"pending\";\n  const cancel = (cancelOptions) => {\n    if (!isResolved()) {\n      const error = new CancelledError(cancelOptions);\n      reject(error);\n      config.onCancel?.(error);\n    }\n  };\n  const cancelRetry = () => {\n    isRetryCancelled = true;\n  };\n  const continueRetry = () => {\n    isRetryCancelled = false;\n  };\n  const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n  const canStart = () => canFetch(config.networkMode) && config.canRun();\n  const resolve = (value) => {\n    if (!isResolved()) {\n      continueFn?.();\n      thenable.resolve(value);\n    }\n  };\n  const reject = (value) => {\n    if (!isResolved()) {\n      continueFn?.();\n      thenable.reject(value);\n    }\n  };\n  const pause = () => {\n    return new Promise((continueResolve) => {\n      continueFn = (value) => {\n        if (isResolved() || canContinue()) {\n          continueResolve(value);\n        }\n      };\n      config.onPause?.();\n    }).then(() => {\n      continueFn = void 0;\n      if (!isResolved()) {\n        config.onContinue?.();\n      }\n    });\n  };\n  const run = () => {\n    if (isResolved()) {\n      return;\n    }\n    let promiseOrValue;\n    const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n    try {\n      promiseOrValue = initialPromise ?? config.fn();\n    } catch (error) {\n      promiseOrValue = Promise.reject(error);\n    }\n    Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n      if (isResolved()) {\n        return;\n      }\n      const retry = config.retry ?? (environmentManager.isServer() ? 0 : 3);\n      const retryDelay = config.retryDelay ?? defaultRetryDelay;\n      const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n      const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n      if (isRetryCancelled || !shouldRetry) {\n        reject(error);\n        return;\n      }\n      failureCount++;\n      config.onFail?.(failureCount, error);\n      sleep(delay).then(() => {\n        return canContinue() ? void 0 : pause();\n      }).then(() => {\n        if (isRetryCancelled) {\n          reject(error);\n        } else {\n          run();\n        }\n      });\n    });\n  };\n  return {\n    promise: thenable,\n    status: () => thenable.status,\n    cancel,\n    continue: () => {\n      continueFn?.();\n      return thenable;\n    },\n    cancelRetry,\n    continueRetry,\n    canStart,\n    start: () => {\n      if (canStart()) {\n        run();\n      } else {\n        pause().then(run);\n      }\n      return thenable;\n    }\n  };\n}\nexport {\n  CancelledError,\n  canFetch,\n  createRetryer,\n  isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/query.ts\nimport {\n  ensureQueryFn,\n  noop,\n  replaceData,\n  resolveQueryBoolean,\n  resolveStaleTime,\n  skipToken,\n  timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { CancelledError, canFetch, createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar Query = class extends Removable {\n  #queryType;\n  #initialState;\n  #revertState;\n  #cache;\n  #client;\n  #retryer;\n  #defaultOptions;\n  #abortSignalConsumed;\n  constructor(config) {\n    super();\n    this.#abortSignalConsumed = false;\n    this.#defaultOptions = config.defaultOptions;\n    this.setOptions(config.options);\n    this.observers = [];\n    this.#client = config.client;\n    this.#cache = this.#client.getQueryCache();\n    this.queryKey = config.queryKey;\n    this.queryHash = config.queryHash;\n    this.#initialState = getDefaultState(this.options);\n    this.state = config.state ?? this.#initialState;\n    this.scheduleGc();\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  get queryType() {\n    return this.#queryType;\n  }\n  get promise() {\n    return this.#retryer?.promise;\n  }\n  setOptions(options) {\n    this.options = { ...this.#defaultOptions, ...options };\n    if (options?._type) {\n      this.#queryType = options._type;\n    }\n    this.updateGcTime(this.options.gcTime);\n    if (this.state && this.state.data === void 0) {\n      const defaultState = getDefaultState(this.options);\n      if (defaultState.data !== void 0) {\n        this.setState(\n          successState(defaultState.data, defaultState.dataUpdatedAt)\n        );\n        this.#initialState = defaultState;\n      }\n    }\n  }\n  optionalRemove() {\n    if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n      this.#cache.remove(this);\n    }\n  }\n  setData(newData, options) {\n    const data = replaceData(this.state.data, newData, this.options);\n    this.#dispatch({\n      data,\n      type: \"success\",\n      dataUpdatedAt: options?.updatedAt,\n      manual: options?.manual\n    });\n    return data;\n  }\n  setState(state) {\n    this.#dispatch({ type: \"setState\", state });\n  }\n  cancel(options) {\n    const promise = this.#retryer?.promise;\n    this.#retryer?.cancel(options);\n    return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n  }\n  destroy() {\n    super.destroy();\n    this.cancel({ silent: true });\n  }\n  get resetState() {\n    return this.#initialState;\n  }\n  reset() {\n    this.destroy();\n    this.setState(this.resetState);\n  }\n  isActive() {\n    return this.observers.some(\n      (observer) => resolveQueryBoolean(observer.options.enabled, this) !== false\n    );\n  }\n  isDisabled() {\n    if (this.getObserversCount() > 0) {\n      return !this.isActive();\n    }\n    return this.options.queryFn === skipToken || !this.isFetched();\n  }\n  isFetched() {\n    return this.state.dataUpdateCount + this.state.errorUpdateCount > 0;\n  }\n  isStatic() {\n    if (this.getObserversCount() > 0) {\n      return this.observers.some(\n        (observer) => resolveStaleTime(observer.options.staleTime, this) === \"static\"\n      );\n    }\n    return false;\n  }\n  isStale() {\n    if (this.getObserversCount() > 0) {\n      return this.observers.some(\n        (observer) => observer.getCurrentResult().isStale\n      );\n    }\n    return this.state.data === void 0 || this.state.isInvalidated;\n  }\n  isStaleByTime(staleTime = 0) {\n    if (this.state.data === void 0) {\n      return true;\n    }\n    if (staleTime === \"static\") {\n      return false;\n    }\n    if (this.state.isInvalidated) {\n      return true;\n    }\n    return !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n  }\n  onFocus() {\n    const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n    observer?.refetch({ cancelRefetch: false });\n    this.#retryer?.continue();\n  }\n  onOnline() {\n    const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n    observer?.refetch({ cancelRefetch: false });\n    this.#retryer?.continue();\n  }\n  addObserver(observer) {\n    if (!this.observers.includes(observer)) {\n      this.observers.push(observer);\n      this.clearGcTimeout();\n      this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n    }\n  }\n  removeObserver(observer) {\n    if (this.observers.includes(observer)) {\n      this.observers = this.observers.filter((x) => x !== observer);\n      if (!this.observers.length) {\n        if (this.#retryer) {\n          if (this.#abortSignalConsumed || this.#isInitialPausedFetch()) {\n            this.#retryer.cancel({ revert: true });\n          } else {\n            this.#retryer.cancelRetry();\n          }\n        }\n        this.scheduleGc();\n      }\n      this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n    }\n  }\n  getObserversCount() {\n    return this.observers.length;\n  }\n  #isInitialPausedFetch() {\n    return this.state.fetchStatus === \"paused\" && this.state.status === \"pending\";\n  }\n  invalidate() {\n    if (!this.state.isInvalidated) {\n      this.#dispatch({ type: \"invalidate\" });\n    }\n  }\n  async fetch(options, fetchOptions) {\n    if (this.state.fetchStatus !== \"idle\" && // If the promise in the retryer is already rejected, we have to definitely\n    // re-start the fetch; there is a chance that the query is still in a\n    // pending state when that happens\n    this.#retryer?.status() !== \"rejected\") {\n      if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n        this.cancel({ silent: true });\n      } else if (this.#retryer) {\n        this.#retryer.continueRetry();\n        return this.#retryer.promise;\n      }\n    }\n    if (options) {\n      this.setOptions(options);\n    }\n    if (!this.options.queryFn) {\n      const observer = this.observers.find((x) => x.options.queryFn);\n      if (observer) {\n        this.setOptions(observer.options);\n      }\n    }\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!Array.isArray(this.options.queryKey)) {\n        console.error(\n          `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n        );\n      }\n    }\n    const abortController = new AbortController();\n    const addSignalProperty = (object) => {\n      Object.defineProperty(object, \"signal\", {\n        enumerable: true,\n        get: () => {\n          this.#abortSignalConsumed = true;\n          return abortController.signal;\n        }\n      });\n    };\n    const fetchFn = () => {\n      const queryFn = ensureQueryFn(this.options, fetchOptions);\n      const createQueryFnContext = () => {\n        const queryFnContext2 = {\n          client: this.#client,\n          queryKey: this.queryKey,\n          meta: this.meta\n        };\n        addSignalProperty(queryFnContext2);\n        return queryFnContext2;\n      };\n      const queryFnContext = createQueryFnContext();\n      this.#abortSignalConsumed = false;\n      if (this.options.persister) {\n        return this.options.persister(\n          queryFn,\n          queryFnContext,\n          this\n        );\n      }\n      return queryFn(queryFnContext);\n    };\n    const createFetchContext = () => {\n      const context2 = {\n        fetchOptions,\n        options: this.options,\n        queryKey: this.queryKey,\n        client: this.#client,\n        state: this.state,\n        fetchFn\n      };\n      addSignalProperty(context2);\n      return context2;\n    };\n    const context = createFetchContext();\n    const behavior = this.#queryType === \"infinite\" ? infiniteQueryBehavior(\n      this.options.pages\n    ) : this.options.behavior;\n    behavior?.onFetch(context, this);\n    this.#revertState = this.state;\n    if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n      this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n    }\n    this.#retryer = createRetryer({\n      initialPromise: fetchOptions?.initialPromise,\n      fn: context.fetchFn,\n      onCancel: (error) => {\n        if (error instanceof CancelledError && error.revert) {\n          this.setState({\n            ...this.#revertState,\n            fetchStatus: \"idle\"\n          });\n        }\n        abortController.abort();\n      },\n      onFail: (failureCount, error) => {\n        this.#dispatch({ type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        this.#dispatch({ type: \"pause\" });\n      },\n      onContinue: () => {\n        this.#dispatch({ type: \"continue\" });\n      },\n      retry: context.options.retry,\n      retryDelay: context.options.retryDelay,\n      networkMode: context.options.networkMode,\n      canRun: () => true\n    });\n    try {\n      const data = await this.#retryer.start();\n      if (data === void 0) {\n        if (process.env.NODE_ENV !== \"production\") {\n          console.error(\n            `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n          );\n        }\n        throw new Error(`${this.queryHash} data is undefined`);\n      }\n      this.setData(data);\n      this.#cache.config.onSuccess?.(data, this);\n      this.#cache.config.onSettled?.(\n        data,\n        this.state.error,\n        this\n      );\n      return data;\n    } catch (error) {\n      if (error instanceof CancelledError) {\n        if (error.silent) {\n          return this.#retryer.promise;\n        } else if (error.revert) {\n          if (this.state.data === void 0) {\n            throw error;\n          }\n          return this.state.data;\n        }\n      }\n      this.#dispatch({\n        type: \"error\",\n        error\n      });\n      this.#cache.config.onError?.(\n        error,\n        this\n      );\n      this.#cache.config.onSettled?.(\n        this.state.data,\n        error,\n        this\n      );\n      throw error;\n    } finally {\n      this.scheduleGc();\n    }\n  }\n  #dispatch(action) {\n    const reducer = (state) => {\n      switch (action.type) {\n        case \"failed\":\n          return {\n            ...state,\n            fetchFailureCount: action.failureCount,\n            fetchFailureReason: action.error\n          };\n        case \"pause\":\n          return {\n            ...state,\n            fetchStatus: \"paused\"\n          };\n        case \"continue\":\n          return {\n            ...state,\n            fetchStatus: \"fetching\"\n          };\n        case \"fetch\":\n          return {\n            ...state,\n            ...fetchState(state.data, this.options),\n            fetchMeta: action.meta ?? null\n          };\n        case \"success\":\n          const newState = {\n            ...state,\n            ...successState(action.data, action.dataUpdatedAt),\n            dataUpdateCount: state.dataUpdateCount + 1,\n            ...!action.manual && {\n              fetchStatus: \"idle\",\n              fetchFailureCount: 0,\n              fetchFailureReason: null\n            }\n          };\n          this.#revertState = action.manual ? newState : void 0;\n          return newState;\n        case \"error\":\n          const error = action.error;\n          return {\n            ...state,\n            error,\n            errorUpdateCount: state.errorUpdateCount + 1,\n            errorUpdatedAt: Date.now(),\n            fetchFailureCount: state.fetchFailureCount + 1,\n            fetchFailureReason: error,\n            fetchStatus: \"idle\",\n            status: \"error\",\n            // flag existing data as invalidated if we get a background error\n            // note that \"no data\" always means stale so we can set unconditionally here\n            isInvalidated: true\n          };\n        case \"invalidate\":\n          return {\n            ...state,\n            isInvalidated: true\n          };\n        case \"setState\":\n          return {\n            ...state,\n            ...action.state\n          };\n      }\n    };\n    this.state = reducer(this.state);\n    notifyManager.batch(() => {\n      this.observers.forEach((observer) => {\n        observer.onQueryUpdate();\n      });\n      this.#cache.notify({ query: this, type: \"updated\", action });\n    });\n  }\n};\nfunction fetchState(data, options) {\n  return {\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n    ...data === void 0 && {\n      error: null,\n      status: \"pending\"\n    }\n  };\n}\nfunction successState(data, dataUpdatedAt) {\n  return {\n    data,\n    dataUpdatedAt: dataUpdatedAt ?? Date.now(),\n    error: null,\n    isInvalidated: false,\n    status: \"success\"\n  };\n}\nfunction getDefaultState(options) {\n  const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n  const hasData = data !== void 0;\n  const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n  return {\n    data,\n    dataUpdateCount: 0,\n    dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n    error: null,\n    errorUpdateCount: 0,\n    errorUpdatedAt: 0,\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchMeta: null,\n    isInvalidated: false,\n    status: hasData ? \"success\" : \"pending\",\n    fetchStatus: \"idle\"\n  };\n}\nexport {\n  Query,\n  fetchState\n};\n//# sourceMappingURL=query.js.map","// src/queryObserver.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport {\n  isValidTimeout,\n  noop,\n  replaceData,\n  resolveQueryBoolean,\n  resolveStaleTime,\n  shallowEqualObjects,\n  timeUntilStale\n} from \"./utils.js\";\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar QueryObserver = class extends Subscribable {\n  constructor(client, options) {\n    super();\n    this.options = options;\n    this.#client = client;\n    this.#selectError = null;\n    this.#currentThenable = pendingThenable();\n    this.bindMethods();\n    this.setOptions(options);\n  }\n  #client;\n  #currentQuery = void 0;\n  #currentQueryInitialState = void 0;\n  #currentResult = void 0;\n  #currentResultState;\n  #currentResultOptions;\n  #currentThenable;\n  #selectError;\n  #selectFn;\n  #selectResult;\n  // This property keeps track of the last query with defined data.\n  // It will be used to pass the previous data and query to the placeholder function between renders.\n  #lastQueryWithDefinedData;\n  #staleTimeoutId;\n  #refetchIntervalId;\n  #currentRefetchInterval;\n  #trackedProps = /* @__PURE__ */ new Set();\n  bindMethods() {\n    this.refetch = this.refetch.bind(this);\n  }\n  onSubscribe() {\n    if (this.listeners.size === 1) {\n      this.#currentQuery.addObserver(this);\n      if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n        this.#executeFetch();\n      } else {\n        this.updateResult();\n      }\n      this.#updateTimers();\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.destroy();\n    }\n  }\n  shouldFetchOnReconnect() {\n    return shouldFetchOn(\n      this.#currentQuery,\n      this.options,\n      this.options.refetchOnReconnect\n    );\n  }\n  shouldFetchOnWindowFocus() {\n    return shouldFetchOn(\n      this.#currentQuery,\n      this.options,\n      this.options.refetchOnWindowFocus\n    );\n  }\n  destroy() {\n    this.listeners = /* @__PURE__ */ new Set();\n    this.#clearStaleTimeout();\n    this.#clearRefetchInterval();\n    this.#currentQuery.removeObserver(this);\n  }\n  setOptions(options) {\n    const prevOptions = this.options;\n    const prevQuery = this.#currentQuery;\n    this.options = this.#client.defaultQueryOptions(options);\n    if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n      throw new Error(\n        \"Expected enabled to be a boolean or a callback that returns a boolean\"\n      );\n    }\n    this.#updateQuery();\n    this.#currentQuery.setOptions(this.options);\n    if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n      this.#client.getQueryCache().notify({\n        type: \"observerOptionsUpdated\",\n        query: this.#currentQuery,\n        observer: this\n      });\n    }\n    const mounted = this.hasListeners();\n    if (mounted && shouldFetchOptionally(\n      this.#currentQuery,\n      prevQuery,\n      this.options,\n      prevOptions\n    )) {\n      this.#executeFetch();\n    }\n    this.updateResult();\n    if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n      this.#updateStaleTimeout();\n    }\n    const nextRefetchInterval = this.#computeRefetchInterval();\n    if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n      this.#updateRefetchInterval(nextRefetchInterval);\n    }\n  }\n  getOptimisticResult(options) {\n    const query = this.#client.getQueryCache().build(this.#client, options);\n    const result = this.createResult(query, options);\n    if (shouldAssignObserverCurrentProperties(this, result)) {\n      this.#currentResult = result;\n      this.#currentResultOptions = this.options;\n      this.#currentResultState = this.#currentQuery.state;\n    }\n    return result;\n  }\n  getCurrentResult() {\n    return this.#currentResult;\n  }\n  trackResult(result, onPropTracked) {\n    return new Proxy(result, {\n      get: (target, key) => {\n        this.trackProp(key);\n        onPropTracked?.(key);\n        if (key === \"promise\") {\n          this.trackProp(\"data\");\n          if (!this.options.experimental_prefetchInRender && this.#currentThenable.status === \"pending\") {\n            this.#currentThenable.reject(\n              new Error(\n                \"experimental_prefetchInRender feature flag is not enabled\"\n              )\n            );\n          }\n        }\n        return Reflect.get(target, key);\n      }\n    });\n  }\n  trackProp(key) {\n    this.#trackedProps.add(key);\n  }\n  getCurrentQuery() {\n    return this.#currentQuery;\n  }\n  refetch({ ...options } = {}) {\n    return this.fetch({\n      ...options\n    });\n  }\n  fetchOptimistic(options) {\n    const defaultedOptions = this.#client.defaultQueryOptions(options);\n    const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n    return query.fetch().then(() => this.createResult(query, defaultedOptions));\n  }\n  fetch(fetchOptions) {\n    return this.#executeFetch({\n      ...fetchOptions,\n      cancelRefetch: fetchOptions.cancelRefetch ?? true\n    }).then(() => {\n      this.updateResult();\n      return this.#currentResult;\n    });\n  }\n  #executeFetch(fetchOptions) {\n    this.#updateQuery();\n    let promise = this.#currentQuery.fetch(\n      this.options,\n      fetchOptions\n    );\n    if (!fetchOptions?.throwOnError) {\n      promise = promise.catch(noop);\n    }\n    return promise;\n  }\n  #updateStaleTimeout() {\n    this.#clearStaleTimeout();\n    const staleTime = resolveStaleTime(\n      this.options.staleTime,\n      this.#currentQuery\n    );\n    if (environmentManager.isServer() || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n      return;\n    }\n    const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n    const timeout = time + 1;\n    this.#staleTimeoutId = timeoutManager.setTimeout(() => {\n      if (!this.#currentResult.isStale) {\n        this.updateResult();\n      }\n    }, timeout);\n  }\n  #computeRefetchInterval() {\n    return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n  }\n  #updateRefetchInterval(nextInterval) {\n    this.#clearRefetchInterval();\n    this.#currentRefetchInterval = nextInterval;\n    if (environmentManager.isServer() || resolveQueryBoolean(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n      return;\n    }\n    this.#refetchIntervalId = timeoutManager.setInterval(() => {\n      if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n        this.#executeFetch();\n      }\n    }, this.#currentRefetchInterval);\n  }\n  #updateTimers() {\n    this.#updateStaleTimeout();\n    this.#updateRefetchInterval(this.#computeRefetchInterval());\n  }\n  #clearStaleTimeout() {\n    if (this.#staleTimeoutId !== void 0) {\n      timeoutManager.clearTimeout(this.#staleTimeoutId);\n      this.#staleTimeoutId = void 0;\n    }\n  }\n  #clearRefetchInterval() {\n    if (this.#refetchIntervalId !== void 0) {\n      timeoutManager.clearInterval(this.#refetchIntervalId);\n      this.#refetchIntervalId = void 0;\n    }\n  }\n  createResult(query, options) {\n    const prevQuery = this.#currentQuery;\n    const prevOptions = this.options;\n    const prevResult = this.#currentResult;\n    const prevResultState = this.#currentResultState;\n    const prevResultOptions = this.#currentResultOptions;\n    const queryChange = query !== prevQuery;\n    const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n    const { state } = query;\n    let newState = { ...state };\n    let isPlaceholderData = false;\n    let data;\n    if (options._optimisticResults) {\n      const mounted = this.hasListeners();\n      const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n      const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n      if (fetchOnMount || fetchOptionally) {\n        newState = {\n          ...newState,\n          ...fetchState(state.data, query.options)\n        };\n      }\n      if (options._optimisticResults === \"isRestoring\") {\n        newState.fetchStatus = \"idle\";\n      }\n    }\n    let { error, errorUpdatedAt, status } = newState;\n    data = newState.data;\n    let skipSelect = false;\n    if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n      let placeholderData;\n      if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n        placeholderData = prevResult.data;\n        skipSelect = true;\n      } else {\n        placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n          this.#lastQueryWithDefinedData?.state.data,\n          this.#lastQueryWithDefinedData\n        ) : options.placeholderData;\n      }\n      if (placeholderData !== void 0) {\n        status = \"success\";\n        data = replaceData(\n          prevResult?.data,\n          placeholderData,\n          options\n        );\n        isPlaceholderData = true;\n      }\n    }\n    if (options.select && data !== void 0 && !skipSelect) {\n      if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) {\n        data = this.#selectResult;\n      } else {\n        try {\n          this.#selectFn = options.select;\n          data = options.select(data);\n          data = replaceData(prevResult?.data, data, options);\n          this.#selectResult = data;\n          this.#selectError = null;\n        } catch (selectError) {\n          this.#selectError = selectError;\n        }\n      }\n    }\n    if (this.#selectError) {\n      error = this.#selectError;\n      data = this.#selectResult;\n      errorUpdatedAt = Date.now();\n      status = \"error\";\n    }\n    const isFetching = newState.fetchStatus === \"fetching\";\n    const isPending = status === \"pending\";\n    const isError = status === \"error\";\n    const isLoading = isPending && isFetching;\n    const hasData = data !== void 0;\n    const result = {\n      status,\n      fetchStatus: newState.fetchStatus,\n      isPending,\n      isSuccess: status === \"success\",\n      isError,\n      isInitialLoading: isLoading,\n      isLoading,\n      data,\n      dataUpdatedAt: newState.dataUpdatedAt,\n      error,\n      errorUpdatedAt,\n      failureCount: newState.fetchFailureCount,\n      failureReason: newState.fetchFailureReason,\n      errorUpdateCount: newState.errorUpdateCount,\n      isFetched: query.isFetched(),\n      isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n      isFetching,\n      isRefetching: isFetching && !isPending,\n      isLoadingError: isError && !hasData,\n      isPaused: newState.fetchStatus === \"paused\",\n      isPlaceholderData,\n      isRefetchError: isError && hasData,\n      isStale: isStale(query, options),\n      refetch: this.refetch,\n      promise: this.#currentThenable,\n      isEnabled: resolveQueryBoolean(options.enabled, query) !== false\n    };\n    const nextResult = result;\n    if (this.options.experimental_prefetchInRender) {\n      const hasResultData = nextResult.data !== void 0;\n      const isErrorWithoutData = nextResult.status === \"error\" && !hasResultData;\n      const finalizeThenableIfPossible = (thenable) => {\n        if (isErrorWithoutData) {\n          thenable.reject(nextResult.error);\n        } else if (hasResultData) {\n          thenable.resolve(nextResult.data);\n        }\n      };\n      const recreateThenable = () => {\n        const pending = this.#currentThenable = nextResult.promise = pendingThenable();\n        finalizeThenableIfPossible(pending);\n      };\n      const prevThenable = this.#currentThenable;\n      switch (prevThenable.status) {\n        case \"pending\":\n          if (query.queryHash === prevQuery.queryHash) {\n            finalizeThenableIfPossible(prevThenable);\n          }\n          break;\n        case \"fulfilled\":\n          if (isErrorWithoutData || nextResult.data !== prevThenable.value) {\n            recreateThenable();\n          }\n          break;\n        case \"rejected\":\n          if (!isErrorWithoutData || nextResult.error !== prevThenable.reason) {\n            recreateThenable();\n          }\n          break;\n      }\n    }\n    return nextResult;\n  }\n  updateResult() {\n    const prevResult = this.#currentResult;\n    const nextResult = this.createResult(this.#currentQuery, this.options);\n    this.#currentResultState = this.#currentQuery.state;\n    this.#currentResultOptions = this.options;\n    if (this.#currentResultState.data !== void 0) {\n      this.#lastQueryWithDefinedData = this.#currentQuery;\n    }\n    if (shallowEqualObjects(nextResult, prevResult)) {\n      return;\n    }\n    this.#currentResult = nextResult;\n    const shouldNotifyListeners = () => {\n      if (!prevResult) {\n        return true;\n      }\n      const { notifyOnChangeProps } = this.options;\n      const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n      if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n        return true;\n      }\n      const includedProps = new Set(\n        notifyOnChangePropsValue ?? this.#trackedProps\n      );\n      if (this.options.throwOnError) {\n        includedProps.add(\"error\");\n      }\n      return Object.keys(this.#currentResult).some((key) => {\n        const typedKey = key;\n        const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n        return changed && includedProps.has(typedKey);\n      });\n    };\n    this.#notify({ listeners: shouldNotifyListeners() });\n  }\n  #updateQuery() {\n    const query = this.#client.getQueryCache().build(this.#client, this.options);\n    if (query === this.#currentQuery) {\n      return;\n    }\n    const prevQuery = this.#currentQuery;\n    this.#currentQuery = query;\n    this.#currentQueryInitialState = query.state;\n    if (this.hasListeners()) {\n      prevQuery?.removeObserver(this);\n      query.addObserver(this);\n    }\n  }\n  onQueryUpdate() {\n    this.updateResult();\n    if (this.hasListeners()) {\n      this.#updateTimers();\n    }\n  }\n  #notify(notifyOptions) {\n    notifyManager.batch(() => {\n      if (notifyOptions.listeners) {\n        this.listeners.forEach((listener) => {\n          listener(this.#currentResult);\n        });\n      }\n      this.#client.getQueryCache().notify({\n        query: this.#currentQuery,\n        type: \"observerResultsUpdated\"\n      });\n    });\n  }\n};\nfunction shouldLoadOnMount(query, options) {\n  return resolveQueryBoolean(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && resolveQueryBoolean(options.retryOnMount, query) === false);\n}\nfunction shouldFetchOnMount(query, options) {\n  return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n  if (resolveQueryBoolean(options.enabled, query) !== false && resolveStaleTime(options.staleTime, query) !== \"static\") {\n    const value = typeof field === \"function\" ? field(query) : field;\n    return value === \"always\" || value !== false && isStale(query, options);\n  }\n  return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n  return (query !== prevQuery || resolveQueryBoolean(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n  return resolveQueryBoolean(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n  if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n    return true;\n  }\n  return false;\n}\nexport {\n  QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n  #client;\n  #observers;\n  #mutationCache;\n  #retryer;\n  constructor(config) {\n    super();\n    this.#client = config.client;\n    this.mutationId = config.mutationId;\n    this.#mutationCache = config.mutationCache;\n    this.#observers = [];\n    this.state = config.state || getDefaultState();\n    this.setOptions(config.options);\n    this.scheduleGc();\n  }\n  setOptions(options) {\n    this.options = options;\n    this.updateGcTime(this.options.gcTime);\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  addObserver(observer) {\n    if (!this.#observers.includes(observer)) {\n      this.#observers.push(observer);\n      this.clearGcTimeout();\n      this.#mutationCache.notify({\n        type: \"observerAdded\",\n        mutation: this,\n        observer\n      });\n    }\n  }\n  removeObserver(observer) {\n    this.#observers = this.#observers.filter((x) => x !== observer);\n    this.scheduleGc();\n    this.#mutationCache.notify({\n      type: \"observerRemoved\",\n      mutation: this,\n      observer\n    });\n  }\n  optionalRemove() {\n    if (!this.#observers.length) {\n      if (this.state.status === \"pending\") {\n        this.scheduleGc();\n      } else {\n        this.#mutationCache.remove(this);\n      }\n    }\n  }\n  continue() {\n    return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n    this.execute(this.state.variables);\n  }\n  async execute(variables) {\n    const onContinue = () => {\n      this.#dispatch({ type: \"continue\" });\n    };\n    const mutationFnContext = {\n      client: this.#client,\n      meta: this.options.meta,\n      mutationKey: this.options.mutationKey\n    };\n    this.#retryer = createRetryer({\n      fn: () => {\n        if (!this.options.mutationFn) {\n          return Promise.reject(new Error(\"No mutationFn found\"));\n        }\n        return this.options.mutationFn(variables, mutationFnContext);\n      },\n      onFail: (failureCount, error) => {\n        this.#dispatch({ type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        this.#dispatch({ type: \"pause\" });\n      },\n      onContinue,\n      retry: this.options.retry ?? 0,\n      retryDelay: this.options.retryDelay,\n      networkMode: this.options.networkMode,\n      canRun: () => this.#mutationCache.canRun(this)\n    });\n    const restored = this.state.status === \"pending\";\n    const isPaused = !this.#retryer.canStart();\n    try {\n      if (restored) {\n        onContinue();\n      } else {\n        this.#dispatch({ type: \"pending\", variables, isPaused });\n        if (this.#mutationCache.config.onMutate) {\n          await this.#mutationCache.config.onMutate(\n            variables,\n            this,\n            mutationFnContext\n          );\n        }\n        const context = await this.options.onMutate?.(\n          variables,\n          mutationFnContext\n        );\n        if (context !== this.state.context) {\n          this.#dispatch({\n            type: \"pending\",\n            context,\n            variables,\n            isPaused\n          });\n        }\n      }\n      const data = await this.#retryer.start();\n      await this.#mutationCache.config.onSuccess?.(\n        data,\n        variables,\n        this.state.context,\n        this,\n        mutationFnContext\n      );\n      await this.options.onSuccess?.(\n        data,\n        variables,\n        this.state.context,\n        mutationFnContext\n      );\n      await this.#mutationCache.config.onSettled?.(\n        data,\n        null,\n        this.state.variables,\n        this.state.context,\n        this,\n        mutationFnContext\n      );\n      await this.options.onSettled?.(\n        data,\n        null,\n        variables,\n        this.state.context,\n        mutationFnContext\n      );\n      this.#dispatch({ type: \"success\", data });\n      return data;\n    } catch (error) {\n      try {\n        await this.#mutationCache.config.onError?.(\n          error,\n          variables,\n          this.state.context,\n          this,\n          mutationFnContext\n        );\n      } catch (e) {\n        void Promise.reject(e);\n      }\n      try {\n        await this.options.onError?.(\n          error,\n          variables,\n          this.state.context,\n          mutationFnContext\n        );\n      } catch (e) {\n        void Promise.reject(e);\n      }\n      try {\n        await this.#mutationCache.config.onSettled?.(\n          void 0,\n          error,\n          this.state.variables,\n          this.state.context,\n          this,\n          mutationFnContext\n        );\n      } catch (e) {\n        void Promise.reject(e);\n      }\n      try {\n        await this.options.onSettled?.(\n          void 0,\n          error,\n          variables,\n          this.state.context,\n          mutationFnContext\n        );\n      } catch (e) {\n        void Promise.reject(e);\n      }\n      this.#dispatch({ type: \"error\", error });\n      throw error;\n    } finally {\n      this.#mutationCache.runNext(this);\n    }\n  }\n  #dispatch(action) {\n    const reducer = (state) => {\n      switch (action.type) {\n        case \"failed\":\n          return {\n            ...state,\n            failureCount: action.failureCount,\n            failureReason: action.error\n          };\n        case \"pause\":\n          return {\n            ...state,\n            isPaused: true\n          };\n        case \"continue\":\n          return {\n            ...state,\n            isPaused: false\n          };\n        case \"pending\":\n          return {\n            ...state,\n            context: action.context,\n            data: void 0,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            isPaused: action.isPaused,\n            status: \"pending\",\n            variables: action.variables,\n            submittedAt: Date.now()\n          };\n        case \"success\":\n          return {\n            ...state,\n            data: action.data,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            status: \"success\",\n            isPaused: false\n          };\n        case \"error\":\n          return {\n            ...state,\n            data: void 0,\n            error: action.error,\n            failureCount: state.failureCount + 1,\n            failureReason: action.error,\n            isPaused: false,\n            status: \"error\"\n          };\n      }\n    };\n    this.state = reducer(this.state);\n    notifyManager.batch(() => {\n      this.#observers.forEach((observer) => {\n        observer.onMutationUpdate(action);\n      });\n      this.#mutationCache.notify({\n        mutation: this,\n        type: \"updated\",\n        action\n      });\n    });\n  }\n};\nfunction getDefaultState() {\n  return {\n    context: void 0,\n    data: void 0,\n    error: null,\n    failureCount: 0,\n    failureReason: null,\n    isPaused: false,\n    status: \"idle\",\n    variables: void 0,\n    submittedAt: 0\n  };\n}\nexport {\n  Mutation,\n  getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n  #client;\n  #currentResult = void 0;\n  #currentMutation;\n  #mutateOptions;\n  constructor(client, options) {\n    super();\n    this.#client = client;\n    this.setOptions(options);\n    this.bindMethods();\n    this.#updateResult();\n  }\n  bindMethods() {\n    this.mutate = this.mutate.bind(this);\n    this.reset = this.reset.bind(this);\n  }\n  setOptions(options) {\n    const prevOptions = this.options;\n    this.options = this.#client.defaultMutationOptions(options);\n    if (!shallowEqualObjects(this.options, prevOptions)) {\n      this.#client.getMutationCache().notify({\n        type: \"observerOptionsUpdated\",\n        mutation: this.#currentMutation,\n        observer: this\n      });\n    }\n    if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n      this.reset();\n    } else if (this.#currentMutation?.state.status === \"pending\") {\n      this.#currentMutation.setOptions(this.options);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#currentMutation?.removeObserver(this);\n    }\n  }\n  onMutationUpdate(action) {\n    this.#updateResult();\n    this.#notify(action);\n  }\n  getCurrentResult() {\n    return this.#currentResult;\n  }\n  reset() {\n    this.#currentMutation?.removeObserver(this);\n    this.#currentMutation = void 0;\n    this.#updateResult();\n    this.#notify();\n  }\n  mutate(variables, options) {\n    this.#mutateOptions = options;\n    this.#currentMutation?.removeObserver(this);\n    this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n    this.#currentMutation.addObserver(this);\n    return this.#currentMutation.execute(variables);\n  }\n  #updateResult() {\n    const state = this.#currentMutation?.state ?? getDefaultState();\n    this.#currentResult = {\n      ...state,\n      isPending: state.status === \"pending\",\n      isSuccess: state.status === \"success\",\n      isError: state.status === \"error\",\n      isIdle: state.status === \"idle\",\n      mutate: this.mutate,\n      reset: this.reset\n    };\n  }\n  #notify(action) {\n    notifyManager.batch(() => {\n      if (this.#mutateOptions && this.hasListeners()) {\n        const variables = this.#currentResult.variables;\n        const onMutateResult = this.#currentResult.context;\n        const context = {\n          client: this.#client,\n          meta: this.options.meta,\n          mutationKey: this.options.mutationKey\n        };\n        if (action?.type === \"success\") {\n          try {\n            this.#mutateOptions.onSuccess?.(\n              action.data,\n              variables,\n              onMutateResult,\n              context\n            );\n          } catch (e) {\n            void Promise.reject(e);\n          }\n          try {\n            this.#mutateOptions.onSettled?.(\n              action.data,\n              null,\n              variables,\n              onMutateResult,\n              context\n            );\n          } catch (e) {\n            void Promise.reject(e);\n          }\n        } else if (action?.type === \"error\") {\n          try {\n            this.#mutateOptions.onError?.(\n              action.error,\n              variables,\n              onMutateResult,\n              context\n            );\n          } catch (e) {\n            void Promise.reject(e);\n          }\n          try {\n            this.#mutateOptions.onSettled?.(\n              void 0,\n              action.error,\n              variables,\n              onMutateResult,\n              context\n            );\n          } catch (e) {\n            void Promise.reject(e);\n          }\n        }\n      }\n      this.listeners.forEach((listener) => {\n        listener(this.#currentResult);\n      });\n    });\n  }\n};\nexport {\n  MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","\"use client\";\n\n// src/QueryClientProvider.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar QueryClientContext = React.createContext(\n  void 0\n);\nvar useQueryClient = (queryClient) => {\n  const client = React.useContext(QueryClientContext);\n  if (queryClient) {\n    return queryClient;\n  }\n  if (!client) {\n    throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n  }\n  return client;\n};\nvar QueryClientProvider = ({\n  client,\n  children\n}) => {\n  React.useEffect(() => {\n    client.mount();\n    return () => {\n      client.unmount();\n    };\n  }, [client]);\n  return /* @__PURE__ */ jsx(QueryClientContext.Provider, { value: client, children });\n};\nexport {\n  QueryClientContext,\n  QueryClientProvider,\n  useQueryClient\n};\n//# sourceMappingURL=QueryClientProvider.js.map","\"use client\";\n\n// src/IsRestoringProvider.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n  IsRestoringProvider,\n  useIsRestoring\n};\n//# sourceMappingURL=IsRestoringProvider.js.map","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n  let isReset = false;\n  return {\n    clearReset: () => {\n      isReset = false;\n    },\n    reset: () => {\n      isReset = true;\n    },\n    isReset: () => {\n      return isReset;\n    }\n  };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n  children\n}) => {\n  const [value] = React.useState(() => createValue());\n  return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n  QueryErrorResetBoundary,\n  useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"@tanstack/query-core\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {\n  const throwOnError = query?.state.error && typeof options.throwOnError === \"function\" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;\n  if (options.suspense || options.experimental_prefetchInRender || throwOnError) {\n    if (!errorResetBoundary.isReset()) {\n      options.retryOnMount = false;\n    }\n  }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n  React.useEffect(() => {\n    errorResetBoundary.clearReset();\n  }, [errorResetBoundary]);\n};\nvar getHasError = ({\n  result,\n  errorResetBoundary,\n  throwOnError,\n  query,\n  suspense\n}) => {\n  return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));\n};\nexport {\n  ensurePreventErrorBoundaryRetry,\n  getHasError,\n  useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureSuspenseTimers = (defaultedOptions) => {\n  if (defaultedOptions.suspense) {\n    const MIN_SUSPENSE_TIME_MS = 1e3;\n    const clamp = (value) => value === \"static\" ? value : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);\n    const originalStaleTime = defaultedOptions.staleTime;\n    defaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);\n    if (typeof defaultedOptions.gcTime === \"number\") {\n      defaultedOptions.gcTime = Math.max(\n        defaultedOptions.gcTime,\n        MIN_SUSPENSE_TIME_MS\n      );\n    }\n  }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n  errorResetBoundary.clearReset();\n});\nexport {\n  defaultThrowOnError,\n  ensureSuspenseTimers,\n  fetchOptimistic,\n  shouldSuspend,\n  willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { environmentManager, noop, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n  ensurePreventErrorBoundaryRetry,\n  getHasError,\n  useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport {\n  ensureSuspenseTimers,\n  fetchOptimistic,\n  shouldSuspend,\n  willFetch\n} from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (typeof options !== \"object\" || Array.isArray(options)) {\n      throw new Error(\n        'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n      );\n    }\n  }\n  const isRestoring = useIsRestoring();\n  const errorResetBoundary = useQueryErrorResetBoundary();\n  const client = useQueryClient(queryClient);\n  const defaultedOptions = client.defaultQueryOptions(options);\n  client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n    defaultedOptions\n  );\n  const query = client.getQueryCache().get(defaultedOptions.queryHash);\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!defaultedOptions.queryFn) {\n      console.error(\n        `[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`\n      );\n    }\n  }\n  const subscribed = options.subscribed !== false;\n  defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : subscribed ? \"optimistic\" : void 0;\n  ensureSuspenseTimers(defaultedOptions);\n  ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query);\n  useClearResetErrorBoundary(errorResetBoundary);\n  const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);\n  const [observer] = React.useState(\n    () => new Observer(\n      client,\n      defaultedOptions\n    )\n  );\n  const result = observer.getOptimisticResult(defaultedOptions);\n  const shouldSubscribe = !isRestoring && subscribed;\n  React.useSyncExternalStore(\n    React.useCallback(\n      (onStoreChange) => {\n        const unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n        observer.updateResult();\n        return unsubscribe;\n      },\n      [observer, shouldSubscribe]\n    ),\n    () => observer.getCurrentResult(),\n    () => observer.getCurrentResult()\n  );\n  React.useEffect(() => {\n    observer.setOptions(defaultedOptions);\n  }, [defaultedOptions, observer]);\n  if (shouldSuspend(defaultedOptions, result)) {\n    throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n  }\n  if (getHasError({\n    result,\n    errorResetBoundary,\n    throwOnError: defaultedOptions.throwOnError,\n    query,\n    suspense: defaultedOptions.suspense\n  })) {\n    throw result.error;\n  }\n  ;\n  client.getDefaultOptions().queries?._experimental_afterQuery?.(\n    defaultedOptions,\n    result\n  );\n  if (defaultedOptions.experimental_prefetchInRender && !environmentManager.isServer() && willFetch(result, isRestoring)) {\n    const promise = isNewCacheEntry ? (\n      // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted\n      fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n    ) : (\n      // subscribe to the \"cache promise\" so that we can finalize the currentThenable once data comes in\n      query?.promise\n    );\n    promise?.catch(noop).finally(() => {\n      observer.updateResult();\n    });\n  }\n  return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n  useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n  return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n  useQuery\n};\n//# sourceMappingURL=useQuery.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport {\n  MutationObserver,\n  noop,\n  notifyManager,\n  shouldThrowError\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nfunction useMutation(options, queryClient) {\n  const client = useQueryClient(queryClient);\n  const [observer] = React.useState(\n    () => new MutationObserver(\n      client,\n      options\n    )\n  );\n  React.useEffect(() => {\n    observer.setOptions(options);\n  }, [observer, options]);\n  const result = React.useSyncExternalStore(\n    React.useCallback(\n      (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n      [observer]\n    ),\n    () => observer.getCurrentResult(),\n    () => observer.getCurrentResult()\n  );\n  const mutate = React.useCallback(\n    (variables, mutateOptions) => {\n      observer.mutate(variables, mutateOptions).catch(noop);\n    },\n    [observer]\n  );\n  if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n    throw result.error;\n  }\n  return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n  useMutation\n};\n//# sourceMappingURL=useMutation.js.map","// ../../node_modules/.pnpm/solid-js@1.9.12/node_modules/solid-js/dist/solid.js\nvar sharedConfig = {\n  context: void 0,\n  registry: void 0,\n  effects: void 0,\n  done: false,\n  getContextId() {\n    return getContextId(this.context.count);\n  },\n  getNextContextId() {\n    return getContextId(this.context.count++);\n  }\n};\nfunction getContextId(count) {\n  const num = String(count), len = num.length - 1;\n  return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : \"\") + num;\n}\nfunction setHydrateContext(context) {\n  sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n  return {\n    ...sharedConfig.context,\n    id: sharedConfig.getNextContextId(),\n    count: 0\n  };\n}\nvar IS_DEV = false;\nvar equalFn = (a, b) => a === b;\nvar $PROXY = /* @__PURE__ */ Symbol(\"solid-proxy\");\nvar SUPPORTS_PROXY = typeof Proxy === \"function\";\nvar $TRACK = /* @__PURE__ */ Symbol(\"solid-track\");\nvar signalOptions = {\n  equals: equalFn\n};\nvar ERROR = null;\nvar runEffects = runQueue;\nvar STALE = 1;\nvar PENDING = 2;\nvar UNOWNED = {\n  owned: null,\n  cleanups: null,\n  context: null,\n  owner: null\n};\nvar NO_INIT = {};\nvar Owner = null;\nvar Transition = null;\nvar Scheduler = null;\nvar ExternalSourceConfig = null;\nvar Listener = null;\nvar Updates = null;\nvar Effects = null;\nvar ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n  const listener = Listener, owner = Owner, unowned = fn.length === 0, current = detachedOwner === void 0 ? owner : detachedOwner, root = unowned ? UNOWNED : {\n    owned: null,\n    cleanups: null,\n    context: current ? current.context : null,\n    owner: current\n  }, updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n  Owner = root;\n  Listener = null;\n  try {\n    return runUpdates(updateFn, true);\n  } finally {\n    Listener = listener;\n    Owner = owner;\n  }\n}\nfunction createSignal(value, options) {\n  options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n  const s = {\n    value,\n    observers: null,\n    observerSlots: null,\n    comparator: options.equals || void 0\n  };\n  const setter = (value2) => {\n    if (typeof value2 === \"function\") {\n      if (Transition && Transition.running && Transition.sources.has(s)) value2 = value2(s.tValue);\n      else value2 = value2(s.value);\n    }\n    return writeSignal(s, value2);\n  };\n  return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n  const c = createComputation(fn, value, true, STALE);\n  if (Scheduler && Transition && Transition.running) Updates.push(c);\n  else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n  const c = createComputation(fn, value, false, STALE);\n  if (Scheduler && Transition && Transition.running) Updates.push(c);\n  else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n  runEffects = runUserEffects;\n  const c = createComputation(fn, value, false, STALE), s = SuspenseContext && useContext(SuspenseContext);\n  if (s) c.suspense = s;\n  if (!options || !options.render) c.user = true;\n  Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createMemo(fn, value, options) {\n  options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n  const c = createComputation(fn, value, true, 0);\n  c.observers = null;\n  c.observerSlots = null;\n  c.comparator = options.equals || void 0;\n  if (Scheduler && Transition && Transition.running) {\n    c.tState = STALE;\n    Updates.push(c);\n  } else updateComputation(c);\n  return readSignal.bind(c);\n}\nfunction isPromise(v) {\n  return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n  let source;\n  let fetcher;\n  let options;\n  {\n    source = true;\n    fetcher = pSource;\n    options = {};\n  }\n  let pr = null, initP = NO_INIT, id = null, loadedUnderTransition = false, scheduled = false, resolved = \"initialValue\" in options, dynamic = typeof source === \"function\" && createMemo(source);\n  const contexts = /* @__PURE__ */ new Set(), [value, setValue] = (options.storage || createSignal)(options.initialValue), [error, setError] = createSignal(void 0), [track, trigger] = createSignal(void 0, {\n    equals: false\n  }), [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n  if (sharedConfig.context) {\n    id = sharedConfig.getNextContextId();\n    if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;\n    else if (sharedConfig.load && sharedConfig.has(id)) initP = sharedConfig.load(id);\n  }\n  function loadEnd(p, v, error2, key) {\n    if (pr === p) {\n      pr = null;\n      key !== void 0 && (resolved = true);\n      if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n        value: v\n      }));\n      initP = NO_INIT;\n      if (Transition && p && loadedUnderTransition) {\n        Transition.promises.delete(p);\n        loadedUnderTransition = false;\n        runUpdates(() => {\n          Transition.running = true;\n          completeLoad(v, error2);\n        }, false);\n      } else completeLoad(v, error2);\n    }\n    return v;\n  }\n  function completeLoad(v, err) {\n    runUpdates(() => {\n      if (err === void 0) setValue(() => v);\n      setState(err !== void 0 ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n      setError(err);\n      for (const c of contexts.keys()) c.decrement();\n      contexts.clear();\n    }, false);\n  }\n  function read() {\n    const c = SuspenseContext && useContext(SuspenseContext), v = value(), err = error();\n    if (err !== void 0 && !pr) throw err;\n    if (Listener && !Listener.user && c) {\n      createComputed(() => {\n        track();\n        if (pr) {\n          if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);\n          else if (!contexts.has(c)) {\n            c.increment();\n            contexts.add(c);\n          }\n        }\n      });\n    }\n    return v;\n  }\n  function load(refetching = true) {\n    if (refetching !== false && scheduled) return;\n    scheduled = false;\n    const lookup = dynamic ? dynamic() : source;\n    loadedUnderTransition = Transition && Transition.running;\n    if (lookup == null || lookup === false) {\n      loadEnd(pr, untrack(value));\n      return;\n    }\n    if (Transition && pr) Transition.promises.delete(pr);\n    let error2;\n    const p = initP !== NO_INIT ? initP : untrack(() => {\n      try {\n        return fetcher(lookup, {\n          value: value(),\n          refetching\n        });\n      } catch (fetcherError) {\n        error2 = fetcherError;\n      }\n    });\n    if (error2 !== void 0) {\n      loadEnd(pr, void 0, castError(error2), lookup);\n      return;\n    } else if (!isPromise(p)) {\n      loadEnd(pr, p, void 0, lookup);\n      return p;\n    }\n    pr = p;\n    if (\"v\" in p) {\n      if (p.s === 1) loadEnd(pr, p.v, void 0, lookup);\n      else loadEnd(pr, void 0, castError(p.v), lookup);\n      return p;\n    }\n    scheduled = true;\n    queueMicrotask(() => scheduled = false);\n    runUpdates(() => {\n      setState(resolved ? \"refreshing\" : \"pending\");\n      trigger();\n    }, false);\n    return p.then((v) => loadEnd(p, v, void 0, lookup), (e) => loadEnd(p, void 0, castError(e), lookup));\n  }\n  Object.defineProperties(read, {\n    state: {\n      get: () => state()\n    },\n    error: {\n      get: () => error()\n    },\n    loading: {\n      get() {\n        const s = state();\n        return s === \"pending\" || s === \"refreshing\";\n      }\n    },\n    latest: {\n      get() {\n        if (!resolved) return read();\n        const err = error();\n        if (err && !pr) throw err;\n        return value();\n      }\n    }\n  });\n  let owner = Owner;\n  if (dynamic) createComputed(() => (owner = Owner, load(false)));\n  else load(false);\n  return [read, {\n    refetch: (info) => runWithOwner(owner, () => load(info)),\n    mutate: setValue\n  }];\n}\nfunction batch(fn) {\n  return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n  if (!ExternalSourceConfig && Listener === null) return fn();\n  const listener = Listener;\n  Listener = null;\n  try {\n    if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n    return fn();\n  } finally {\n    Listener = listener;\n  }\n}\nfunction on(deps, fn, options) {\n  const isArray3 = Array.isArray(deps);\n  let prevInput;\n  let defer = options && options.defer;\n  return (prevValue) => {\n    let input;\n    if (isArray3) {\n      input = Array(deps.length);\n      for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n    } else input = deps();\n    if (defer) {\n      defer = false;\n      return prevValue;\n    }\n    const result = untrack(() => fn(input, prevInput, prevValue));\n    prevInput = input;\n    return result;\n  };\n}\nfunction onMount(fn) {\n  createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n  if (Owner === null) ;\n  else if (Owner.cleanups === null) Owner.cleanups = [fn];\n  else Owner.cleanups.push(fn);\n  return fn;\n}\nfunction getOwner() {\n  return Owner;\n}\nfunction runWithOwner(o, fn) {\n  const prev = Owner;\n  const prevListener = Listener;\n  Owner = o;\n  Listener = null;\n  try {\n    return runUpdates(fn, true);\n  } catch (err) {\n    handleError(err);\n  } finally {\n    Owner = prev;\n    Listener = prevListener;\n  }\n}\nfunction startTransition(fn) {\n  if (Transition && Transition.running) {\n    fn();\n    return Transition.done;\n  }\n  const l = Listener;\n  const o = Owner;\n  return Promise.resolve().then(() => {\n    Listener = l;\n    Owner = o;\n    let t;\n    if (Scheduler || SuspenseContext) {\n      t = Transition || (Transition = {\n        sources: /* @__PURE__ */ new Set(),\n        effects: [],\n        promises: /* @__PURE__ */ new Set(),\n        disposed: /* @__PURE__ */ new Set(),\n        queue: /* @__PURE__ */ new Set(),\n        running: true\n      });\n      t.done || (t.done = new Promise((res) => t.resolve = res));\n      t.running = true;\n    }\n    runUpdates(fn, false);\n    Listener = Owner = null;\n    return t ? t.done : void 0;\n  });\n}\nvar [transPending, setTransPending] = /* @__PURE__ */ createSignal(false);\nfunction useTransition() {\n  return [transPending, startTransition];\n}\nfunction createContext(defaultValue, options) {\n  const id = /* @__PURE__ */ Symbol(\"context\");\n  return {\n    id,\n    Provider: createProvider(id),\n    defaultValue\n  };\n}\nfunction useContext(context) {\n  let value;\n  return Owner && Owner.context && (value = Owner.context[context.id]) !== void 0 ? value : context.defaultValue;\n}\nfunction children(fn) {\n  const children2 = createMemo(fn);\n  const memo2 = createMemo(() => resolveChildren(children2()));\n  memo2.toArray = () => {\n    const c = memo2();\n    return Array.isArray(c) ? c : c != null ? [c] : [];\n  };\n  return memo2;\n}\nvar SuspenseContext;\nfunction readSignal() {\n  const runningTransition = Transition && Transition.running;\n  if (this.sources && (runningTransition ? this.tState : this.state)) {\n    if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);\n    else {\n      const updates = Updates;\n      Updates = null;\n      runUpdates(() => lookUpstream(this), false);\n      Updates = updates;\n    }\n  }\n  if (Listener) {\n    const sSlot = this.observers ? this.observers.length : 0;\n    if (!Listener.sources) {\n      Listener.sources = [this];\n      Listener.sourceSlots = [sSlot];\n    } else {\n      Listener.sources.push(this);\n      Listener.sourceSlots.push(sSlot);\n    }\n    if (!this.observers) {\n      this.observers = [Listener];\n      this.observerSlots = [Listener.sources.length - 1];\n    } else {\n      this.observers.push(Listener);\n      this.observerSlots.push(Listener.sources.length - 1);\n    }\n  }\n  if (runningTransition && Transition.sources.has(this)) return this.tValue;\n  return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n  let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n  if (!node.comparator || !node.comparator(current, value)) {\n    if (Transition) {\n      const TransitionRunning = Transition.running;\n      if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n        Transition.sources.add(node);\n        node.tValue = value;\n      }\n      if (!TransitionRunning) node.value = value;\n    } else node.value = value;\n    if (node.observers && node.observers.length) {\n      runUpdates(() => {\n        for (let i = 0; i < node.observers.length; i += 1) {\n          const o = node.observers[i];\n          const TransitionRunning = Transition && Transition.running;\n          if (TransitionRunning && Transition.disposed.has(o)) continue;\n          if (TransitionRunning ? !o.tState : !o.state) {\n            if (o.pure) Updates.push(o);\n            else Effects.push(o);\n            if (o.observers) markDownstream(o);\n          }\n          if (!TransitionRunning) o.state = STALE;\n          else o.tState = STALE;\n        }\n        if (Updates.length > 1e6) {\n          Updates = [];\n          if (IS_DEV) ;\n          throw new Error();\n        }\n      }, false);\n    }\n  }\n  return value;\n}\nfunction updateComputation(node) {\n  if (!node.fn) return;\n  cleanNode(node);\n  const time = ExecCount;\n  runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n  if (Transition && !Transition.running && Transition.sources.has(node)) {\n    queueMicrotask(() => {\n      runUpdates(() => {\n        Transition && (Transition.running = true);\n        Listener = Owner = node;\n        runComputation(node, node.tValue, time);\n        Listener = Owner = null;\n      }, false);\n    });\n  }\n}\nfunction runComputation(node, value, time) {\n  let nextValue;\n  const owner = Owner, listener = Listener;\n  Listener = Owner = node;\n  try {\n    nextValue = node.fn(value);\n  } catch (err) {\n    if (node.pure) {\n      if (Transition && Transition.running) {\n        node.tState = STALE;\n        node.tOwned && node.tOwned.forEach(cleanNode);\n        node.tOwned = void 0;\n      } else {\n        node.state = STALE;\n        node.owned && node.owned.forEach(cleanNode);\n        node.owned = null;\n      }\n    }\n    node.updatedAt = time + 1;\n    return handleError(err);\n  } finally {\n    Listener = listener;\n    Owner = owner;\n  }\n  if (!node.updatedAt || node.updatedAt <= time) {\n    if (node.updatedAt != null && \"observers\" in node) {\n      writeSignal(node, nextValue, true);\n    } else if (Transition && Transition.running && node.pure) {\n      if (!Transition.sources.has(node)) node.value = nextValue;\n      Transition.sources.add(node);\n      node.tValue = nextValue;\n    } else node.value = nextValue;\n    node.updatedAt = time;\n  }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n  const c = {\n    fn,\n    state,\n    updatedAt: null,\n    owned: null,\n    sources: null,\n    sourceSlots: null,\n    cleanups: null,\n    value: init,\n    owner: Owner,\n    context: Owner ? Owner.context : null,\n    pure\n  };\n  if (Transition && Transition.running) {\n    c.state = 0;\n    c.tState = state;\n  }\n  if (Owner === null) ;\n  else if (Owner !== UNOWNED) {\n    if (Transition && Transition.running && Owner.pure) {\n      if (!Owner.tOwned) Owner.tOwned = [c];\n      else Owner.tOwned.push(c);\n    } else {\n      if (!Owner.owned) Owner.owned = [c];\n      else Owner.owned.push(c);\n    }\n  }\n  if (ExternalSourceConfig && c.fn) {\n    const sourceFn = c.fn;\n    const [track, trigger] = createSignal(void 0, {\n      equals: false\n    });\n    const ordinary = ExternalSourceConfig.factory(sourceFn, trigger);\n    onCleanup(() => ordinary.dispose());\n    let inTransition;\n    const triggerInTransition = () => startTransition(trigger).then(() => {\n      if (inTransition) {\n        inTransition.dispose();\n        inTransition = void 0;\n      }\n    });\n    c.fn = (x) => {\n      track();\n      if (Transition && Transition.running) {\n        if (!inTransition) inTransition = ExternalSourceConfig.factory(sourceFn, triggerInTransition);\n        return inTransition.track(x);\n      }\n      return ordinary.track(x);\n    };\n  }\n  return c;\n}\nfunction runTop(node) {\n  const runningTransition = Transition && Transition.running;\n  if ((runningTransition ? node.tState : node.state) === 0) return;\n  if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n  if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n  const ancestors = [node];\n  while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n    if (runningTransition && Transition.disposed.has(node)) return;\n    if (runningTransition ? node.tState : node.state) ancestors.push(node);\n  }\n  for (let i = ancestors.length - 1; i >= 0; i--) {\n    node = ancestors[i];\n    if (runningTransition) {\n      let top = node, prev = ancestors[i + 1];\n      while ((top = top.owner) && top !== prev) {\n        if (Transition.disposed.has(top)) return;\n      }\n    }\n    if ((runningTransition ? node.tState : node.state) === STALE) {\n      updateComputation(node);\n    } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n      const updates = Updates;\n      Updates = null;\n      runUpdates(() => lookUpstream(node, ancestors[0]), false);\n      Updates = updates;\n    }\n  }\n}\nfunction runUpdates(fn, init) {\n  if (Updates) return fn();\n  let wait = false;\n  if (!init) Updates = [];\n  if (Effects) wait = true;\n  else Effects = [];\n  ExecCount++;\n  try {\n    const res = fn();\n    completeUpdates(wait);\n    return res;\n  } catch (err) {\n    if (!wait) Effects = null;\n    Updates = null;\n    handleError(err);\n  }\n}\nfunction completeUpdates(wait) {\n  if (Updates) {\n    if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);\n    else runQueue(Updates);\n    Updates = null;\n  }\n  if (wait) return;\n  let res;\n  if (Transition) {\n    if (!Transition.promises.size && !Transition.queue.size) {\n      const sources = Transition.sources;\n      const disposed = Transition.disposed;\n      Effects.push.apply(Effects, Transition.effects);\n      res = Transition.resolve;\n      for (const e2 of Effects) {\n        \"tState\" in e2 && (e2.state = e2.tState);\n        delete e2.tState;\n      }\n      Transition = null;\n      runUpdates(() => {\n        for (const d of disposed) cleanNode(d);\n        for (const v of sources) {\n          v.value = v.tValue;\n          if (v.owned) {\n            for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n          }\n          if (v.tOwned) v.owned = v.tOwned;\n          delete v.tValue;\n          delete v.tOwned;\n          v.tState = 0;\n        }\n        setTransPending(false);\n      }, false);\n    } else if (Transition.running) {\n      Transition.running = false;\n      Transition.effects.push.apply(Transition.effects, Effects);\n      Effects = null;\n      setTransPending(true);\n      return;\n    }\n  }\n  const e = Effects;\n  Effects = null;\n  if (e.length) runUpdates(() => runEffects(e), false);\n  if (res) res();\n}\nfunction runQueue(queue) {\n  for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n  for (let i = 0; i < queue.length; i++) {\n    const item = queue[i];\n    const tasks = Transition.queue;\n    if (!tasks.has(item)) {\n      tasks.add(item);\n      Scheduler(() => {\n        tasks.delete(item);\n        runUpdates(() => {\n          Transition.running = true;\n          runTop(item);\n        }, false);\n        Transition && (Transition.running = false);\n      });\n    }\n  }\n}\nfunction runUserEffects(queue) {\n  let i, userLength = 0;\n  for (i = 0; i < queue.length; i++) {\n    const e = queue[i];\n    if (!e.user) runTop(e);\n    else queue[userLength++] = e;\n  }\n  if (sharedConfig.context) {\n    if (sharedConfig.count) {\n      sharedConfig.effects || (sharedConfig.effects = []);\n      sharedConfig.effects.push(...queue.slice(0, userLength));\n      return;\n    }\n    setHydrateContext();\n  }\n  if (sharedConfig.effects && (sharedConfig.done || !sharedConfig.count)) {\n    queue = [...sharedConfig.effects, ...queue];\n    userLength += sharedConfig.effects.length;\n    delete sharedConfig.effects;\n  }\n  for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n  const runningTransition = Transition && Transition.running;\n  if (runningTransition) node.tState = 0;\n  else node.state = 0;\n  for (let i = 0; i < node.sources.length; i += 1) {\n    const source = node.sources[i];\n    if (source.sources) {\n      const state = runningTransition ? source.tState : source.state;\n      if (state === STALE) {\n        if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source);\n      } else if (state === PENDING) lookUpstream(source, ignore);\n    }\n  }\n}\nfunction markDownstream(node) {\n  const runningTransition = Transition && Transition.running;\n  for (let i = 0; i < node.observers.length; i += 1) {\n    const o = node.observers[i];\n    if (runningTransition ? !o.tState : !o.state) {\n      if (runningTransition) o.tState = PENDING;\n      else o.state = PENDING;\n      if (o.pure) Updates.push(o);\n      else Effects.push(o);\n      o.observers && markDownstream(o);\n    }\n  }\n}\nfunction cleanNode(node) {\n  let i;\n  if (node.sources) {\n    while (node.sources.length) {\n      const source = node.sources.pop(), index = node.sourceSlots.pop(), obs = source.observers;\n      if (obs && obs.length) {\n        const n = obs.pop(), s = source.observerSlots.pop();\n        if (index < obs.length) {\n          n.sourceSlots[s] = index;\n          obs[index] = n;\n          source.observerSlots[index] = s;\n        }\n      }\n    }\n  }\n  if (node.tOwned) {\n    for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n    delete node.tOwned;\n  }\n  if (Transition && Transition.running && node.pure) {\n    reset(node, true);\n  } else if (node.owned) {\n    for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n    node.owned = null;\n  }\n  if (node.cleanups) {\n    for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n    node.cleanups = null;\n  }\n  if (Transition && Transition.running) node.tState = 0;\n  else node.state = 0;\n}\nfunction reset(node, top) {\n  if (!top) {\n    node.tState = 0;\n    Transition.disposed.add(node);\n  }\n  if (node.owned) {\n    for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n  }\n}\nfunction castError(err) {\n  if (err instanceof Error) return err;\n  return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n    cause: err\n  });\n}\nfunction runErrors(err, fns, owner) {\n  try {\n    for (const f of fns) f(err);\n  } catch (e) {\n    handleError(e, owner && owner.owner || null);\n  }\n}\nfunction handleError(err, owner = Owner) {\n  const fns = ERROR && owner && owner.context && owner.context[ERROR];\n  const error = castError(err);\n  if (!fns) throw error;\n  if (Effects) Effects.push({\n    fn() {\n      runErrors(error, fns, owner);\n    },\n    state: STALE\n  });\n  else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children2) {\n  if (typeof children2 === \"function\" && !children2.length) return resolveChildren(children2());\n  if (Array.isArray(children2)) {\n    const results = [];\n    for (let i = 0; i < children2.length; i++) {\n      const result = resolveChildren(children2[i]);\n      Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n    }\n    return results;\n  }\n  return children2;\n}\nfunction createProvider(id, options) {\n  return function provider(props) {\n    let res;\n    createRenderEffect(() => res = untrack(() => {\n      Owner.context = {\n        ...Owner.context,\n        [id]: props.value\n      };\n      return children(() => props.children);\n    }), void 0);\n    return res;\n  };\n}\nvar FALLBACK = /* @__PURE__ */ Symbol(\"fallback\");\nfunction dispose(d) {\n  for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n  let items = [], mapped = [], disposers = [], len = 0, indexes = mapFn.length > 1 ? [] : null;\n  onCleanup(() => dispose(disposers));\n  return () => {\n    let newItems = list() || [], newLen = newItems.length, i, j;\n    newItems[$TRACK];\n    return untrack(() => {\n      let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n      if (newLen === 0) {\n        if (len !== 0) {\n          dispose(disposers);\n          disposers = [];\n          items = [];\n          mapped = [];\n          len = 0;\n          indexes && (indexes = []);\n        }\n        if (options.fallback) {\n          items = [FALLBACK];\n          mapped[0] = createRoot((disposer) => {\n            disposers[0] = disposer;\n            return options.fallback();\n          });\n          len = 1;\n        }\n      } else if (len === 0) {\n        mapped = new Array(newLen);\n        for (j = 0; j < newLen; j++) {\n          items[j] = newItems[j];\n          mapped[j] = createRoot(mapper);\n        }\n        len = newLen;\n      } else {\n        temp = new Array(newLen);\n        tempdisposers = new Array(newLen);\n        indexes && (tempIndexes = new Array(newLen));\n        for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++) ;\n        for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n          temp[newEnd] = mapped[end];\n          tempdisposers[newEnd] = disposers[end];\n          indexes && (tempIndexes[newEnd] = indexes[end]);\n        }\n        newIndices = /* @__PURE__ */ new Map();\n        newIndicesNext = new Array(newEnd + 1);\n        for (j = newEnd; j >= start; j--) {\n          item = newItems[j];\n          i = newIndices.get(item);\n          newIndicesNext[j] = i === void 0 ? -1 : i;\n          newIndices.set(item, j);\n        }\n        for (i = start; i <= end; i++) {\n          item = items[i];\n          j = newIndices.get(item);\n          if (j !== void 0 && j !== -1) {\n            temp[j] = mapped[i];\n            tempdisposers[j] = disposers[i];\n            indexes && (tempIndexes[j] = indexes[i]);\n            j = newIndicesNext[j];\n            newIndices.set(item, j);\n          } else disposers[i]();\n        }\n        for (j = start; j < newLen; j++) {\n          if (j in temp) {\n            mapped[j] = temp[j];\n            disposers[j] = tempdisposers[j];\n            if (indexes) {\n              indexes[j] = tempIndexes[j];\n              indexes[j](j);\n            }\n          } else mapped[j] = createRoot(mapper);\n        }\n        mapped = mapped.slice(0, len = newLen);\n        items = newItems.slice(0);\n      }\n      return mapped;\n    });\n    function mapper(disposer) {\n      disposers[j] = disposer;\n      if (indexes) {\n        const [s, set] = createSignal(j);\n        indexes[j] = set;\n        return mapFn(newItems[j], s);\n      }\n      return mapFn(newItems[j]);\n    }\n  };\n}\nfunction indexArray(list, mapFn, options = {}) {\n  let items = [], mapped = [], disposers = [], signals = [], len = 0, i;\n  onCleanup(() => dispose(disposers));\n  return () => {\n    const newItems = list() || [], newLen = newItems.length;\n    newItems[$TRACK];\n    return untrack(() => {\n      if (newLen === 0) {\n        if (len !== 0) {\n          dispose(disposers);\n          disposers = [];\n          items = [];\n          mapped = [];\n          len = 0;\n          signals = [];\n        }\n        if (options.fallback) {\n          items = [FALLBACK];\n          mapped[0] = createRoot((disposer) => {\n            disposers[0] = disposer;\n            return options.fallback();\n          });\n          len = 1;\n        }\n        return mapped;\n      }\n      if (items[0] === FALLBACK) {\n        disposers[0]();\n        disposers = [];\n        items = [];\n        mapped = [];\n        len = 0;\n      }\n      for (i = 0; i < newLen; i++) {\n        if (i < items.length && items[i] !== newItems[i]) {\n          signals[i](() => newItems[i]);\n        } else if (i >= items.length) {\n          mapped[i] = createRoot(mapper);\n        }\n      }\n      for (; i < items.length; i++) {\n        disposers[i]();\n      }\n      len = signals.length = disposers.length = newLen;\n      items = newItems.slice(0);\n      return mapped = mapped.slice(0, len);\n    });\n    function mapper(disposer) {\n      disposers[i] = disposer;\n      const [s, set] = createSignal(newItems[i]);\n      signals[i] = set;\n      return mapFn(s, i);\n    }\n  };\n}\nvar hydrationEnabled = false;\nfunction createComponent(Comp, props) {\n  if (hydrationEnabled) {\n    if (sharedConfig.context) {\n      const c = sharedConfig.context;\n      setHydrateContext(nextHydrateContext());\n      const r = untrack(() => Comp(props || {}));\n      setHydrateContext(c);\n      return r;\n    }\n  }\n  return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n  return true;\n}\nvar propTraps = {\n  get(_, property, receiver) {\n    if (property === $PROXY) return receiver;\n    return _.get(property);\n  },\n  has(_, property) {\n    if (property === $PROXY) return true;\n    return _.has(property);\n  },\n  set: trueFn,\n  deleteProperty: trueFn,\n  getOwnPropertyDescriptor(_, property) {\n    return {\n      configurable: true,\n      enumerable: true,\n      get() {\n        return _.get(property);\n      },\n      set: trueFn,\n      deleteProperty: trueFn\n    };\n  },\n  ownKeys(_) {\n    return _.keys();\n  }\n};\nfunction resolveSource(s) {\n  return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n  for (let i = 0, length = this.length; i < length; ++i) {\n    const v = this[i]();\n    if (v !== void 0) return v;\n  }\n}\nfunction mergeProps(...sources) {\n  let proxy = false;\n  for (let i = 0; i < sources.length; i++) {\n    const s = sources[i];\n    proxy = proxy || !!s && $PROXY in s;\n    sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n  }\n  if (SUPPORTS_PROXY && proxy) {\n    return new Proxy({\n      get(property) {\n        for (let i = sources.length - 1; i >= 0; i--) {\n          const v = resolveSource(sources[i])[property];\n          if (v !== void 0) return v;\n        }\n      },\n      has(property) {\n        for (let i = sources.length - 1; i >= 0; i--) {\n          if (property in resolveSource(sources[i])) return true;\n        }\n        return false;\n      },\n      keys() {\n        const keys = [];\n        for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n        return [...new Set(keys)];\n      }\n    }, propTraps);\n  }\n  const sourcesMap = {};\n  const defined = /* @__PURE__ */ Object.create(null);\n  for (let i = sources.length - 1; i >= 0; i--) {\n    const source = sources[i];\n    if (!source) continue;\n    const sourceKeys = Object.getOwnPropertyNames(source);\n    for (let i2 = sourceKeys.length - 1; i2 >= 0; i2--) {\n      const key = sourceKeys[i2];\n      if (key === \"__proto__\" || key === \"constructor\") continue;\n      const desc = Object.getOwnPropertyDescriptor(source, key);\n      if (!defined[key]) {\n        defined[key] = desc.get ? {\n          enumerable: true,\n          configurable: true,\n          get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])\n        } : desc.value !== void 0 ? desc : void 0;\n      } else {\n        const sources2 = sourcesMap[key];\n        if (sources2) {\n          if (desc.get) sources2.push(desc.get.bind(source));\n          else if (desc.value !== void 0) sources2.push(() => desc.value);\n        }\n      }\n    }\n  }\n  const target = {};\n  const definedKeys = Object.keys(defined);\n  for (let i = definedKeys.length - 1; i >= 0; i--) {\n    const key = definedKeys[i], desc = defined[key];\n    if (desc && desc.get) Object.defineProperty(target, key, desc);\n    else target[key] = desc ? desc.value : void 0;\n  }\n  return target;\n}\nfunction splitProps(props, ...keys) {\n  const len = keys.length;\n  if (SUPPORTS_PROXY && $PROXY in props) {\n    const blocked = len > 1 ? keys.flat() : keys[0];\n    const res = keys.map((k) => {\n      return new Proxy({\n        get(property) {\n          return k.includes(property) ? props[property] : void 0;\n        },\n        has(property) {\n          return k.includes(property) && property in props;\n        },\n        keys() {\n          return k.filter((property) => property in props);\n        }\n      }, propTraps);\n    });\n    res.push(new Proxy({\n      get(property) {\n        return blocked.includes(property) ? void 0 : props[property];\n      },\n      has(property) {\n        return blocked.includes(property) ? false : property in props;\n      },\n      keys() {\n        return Object.keys(props).filter((k) => !blocked.includes(k));\n      }\n    }, propTraps));\n    return res;\n  }\n  const objects = [];\n  for (let i = 0; i <= len; i++) {\n    objects[i] = {};\n  }\n  for (const propName of Object.getOwnPropertyNames(props)) {\n    let keyIndex = len;\n    for (let i = 0; i < keys.length; i++) {\n      if (keys[i].includes(propName)) {\n        keyIndex = i;\n        break;\n      }\n    }\n    const desc = Object.getOwnPropertyDescriptor(props, propName);\n    const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n    isDefaultDesc ? objects[keyIndex][propName] = desc.value : Object.defineProperty(objects[keyIndex], propName, desc);\n  }\n  return objects;\n}\nfunction lazy(fn) {\n  let comp;\n  let p;\n  const wrap = (props) => {\n    const ctx = sharedConfig.context;\n    if (ctx) {\n      const [s, set] = createSignal();\n      sharedConfig.count || (sharedConfig.count = 0);\n      sharedConfig.count++;\n      (p || (p = fn())).then((mod) => {\n        !sharedConfig.done && setHydrateContext(ctx);\n        sharedConfig.count--;\n        set(() => mod.default);\n        setHydrateContext();\n      });\n      comp = s;\n    } else if (!comp) {\n      const [s] = createResource(() => (p || (p = fn())).then((mod) => mod.default));\n      comp = s;\n    }\n    let Comp;\n    return createMemo(() => (Comp = comp()) ? untrack(() => {\n      if (IS_DEV) ;\n      if (!ctx || sharedConfig.done) return Comp(props);\n      const c = sharedConfig.context;\n      setHydrateContext(ctx);\n      const r = Comp(props);\n      setHydrateContext(c);\n      return r;\n    }) : \"\");\n  };\n  wrap.preload = () => p || ((p = fn()).then((mod) => comp = () => mod.default), p);\n  return wrap;\n}\nvar counter = 0;\nfunction createUniqueId() {\n  const ctx = sharedConfig.context;\n  return ctx ? sharedConfig.getNextContextId() : `cl-${counter++}`;\n}\nvar narrowedError = (name) => `Stale read from <${name}>.`;\nfunction For(props) {\n  const fallback = \"fallback\" in props && {\n    fallback: () => props.fallback\n  };\n  return createMemo(mapArray(() => props.each, props.children, fallback || void 0));\n}\nfunction Index(props) {\n  const fallback = \"fallback\" in props && {\n    fallback: () => props.fallback\n  };\n  return createMemo(indexArray(() => props.each, props.children, fallback || void 0));\n}\nfunction Show(props) {\n  const keyed = props.keyed;\n  const conditionValue = createMemo(() => props.when, void 0, void 0);\n  const condition = keyed ? conditionValue : createMemo(conditionValue, void 0, {\n    equals: (a, b) => !a === !b\n  });\n  return createMemo(() => {\n    const c = condition();\n    if (c) {\n      const child = props.children;\n      const fn = typeof child === \"function\" && child.length > 0;\n      return fn ? untrack(() => child(keyed ? c : () => {\n        if (!untrack(condition)) throw narrowedError(\"Show\");\n        return conditionValue();\n      })) : child;\n    }\n    return props.fallback;\n  }, void 0, void 0);\n}\nfunction Switch(props) {\n  const chs = children(() => props.children);\n  const switchFunc = createMemo(() => {\n    const ch = chs();\n    const mps = Array.isArray(ch) ? ch : [ch];\n    let func = () => void 0;\n    for (let i = 0; i < mps.length; i++) {\n      const index = i;\n      const mp = mps[i];\n      const prevFunc = func;\n      const conditionValue = createMemo(() => prevFunc() ? void 0 : mp.when, void 0, void 0);\n      const condition = mp.keyed ? conditionValue : createMemo(conditionValue, void 0, {\n        equals: (a, b) => !a === !b\n      });\n      func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : void 0);\n    }\n    return func;\n  });\n  return createMemo(() => {\n    const sel = switchFunc()();\n    if (!sel) return props.fallback;\n    const [index, conditionValue, mp] = sel;\n    const child = mp.children;\n    const fn = typeof child === \"function\" && child.length > 0;\n    return fn ? untrack(() => child(mp.keyed ? conditionValue() : () => {\n      if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n      return conditionValue();\n    })) : child;\n  }, void 0, void 0);\n}\nfunction Match(props) {\n  return props;\n}\nvar DEV = void 0;\n\n// ../../node_modules/.pnpm/solid-js@1.9.12/node_modules/solid-js/web/dist/web.js\nvar booleans = [\n  \"allowfullscreen\",\n  \"async\",\n  \"alpha\",\n  \"autofocus\",\n  \"autoplay\",\n  \"checked\",\n  \"controls\",\n  \"default\",\n  \"disabled\",\n  \"formnovalidate\",\n  \"hidden\",\n  \"indeterminate\",\n  \"inert\",\n  \"ismap\",\n  \"loop\",\n  \"multiple\",\n  \"muted\",\n  \"nomodule\",\n  \"novalidate\",\n  \"open\",\n  \"playsinline\",\n  \"readonly\",\n  \"required\",\n  \"reversed\",\n  \"seamless\",\n  \"selected\",\n  \"adauctionheaders\",\n  \"browsingtopics\",\n  \"credentialless\",\n  \"defaultchecked\",\n  \"defaultmuted\",\n  \"defaultselected\",\n  \"defer\",\n  \"disablepictureinpicture\",\n  \"disableremoteplayback\",\n  \"preservespitch\",\n  \"shadowrootclonable\",\n  \"shadowrootcustomelementregistry\",\n  \"shadowrootdelegatesfocus\",\n  \"shadowrootserializable\",\n  \"sharedstoragewritable\"\n];\nvar Properties = /* @__PURE__ */ new Set([\n  \"className\",\n  \"value\",\n  \"readOnly\",\n  \"noValidate\",\n  \"formNoValidate\",\n  \"isMap\",\n  \"noModule\",\n  \"playsInline\",\n  \"adAuctionHeaders\",\n  \"allowFullscreen\",\n  \"browsingTopics\",\n  \"defaultChecked\",\n  \"defaultMuted\",\n  \"defaultSelected\",\n  \"disablePictureInPicture\",\n  \"disableRemotePlayback\",\n  \"preservesPitch\",\n  \"shadowRootClonable\",\n  \"shadowRootCustomElementRegistry\",\n  \"shadowRootDelegatesFocus\",\n  \"shadowRootSerializable\",\n  \"sharedStorageWritable\",\n  ...booleans\n]);\nvar ChildProperties = /* @__PURE__ */ new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nvar Aliases = /* @__PURE__ */ Object.assign(/* @__PURE__ */ Object.create(null), {\n  className: \"class\",\n  htmlFor: \"for\"\n});\nvar PropAliases = /* @__PURE__ */ Object.assign(/* @__PURE__ */ Object.create(null), {\n  class: \"className\",\n  novalidate: {\n    $: \"noValidate\",\n    FORM: 1\n  },\n  formnovalidate: {\n    $: \"formNoValidate\",\n    BUTTON: 1,\n    INPUT: 1\n  },\n  ismap: {\n    $: \"isMap\",\n    IMG: 1\n  },\n  nomodule: {\n    $: \"noModule\",\n    SCRIPT: 1\n  },\n  playsinline: {\n    $: \"playsInline\",\n    VIDEO: 1\n  },\n  readonly: {\n    $: \"readOnly\",\n    INPUT: 1,\n    TEXTAREA: 1\n  },\n  adauctionheaders: {\n    $: \"adAuctionHeaders\",\n    IFRAME: 1\n  },\n  allowfullscreen: {\n    $: \"allowFullscreen\",\n    IFRAME: 1\n  },\n  browsingtopics: {\n    $: \"browsingTopics\",\n    IMG: 1\n  },\n  defaultchecked: {\n    $: \"defaultChecked\",\n    INPUT: 1\n  },\n  defaultmuted: {\n    $: \"defaultMuted\",\n    AUDIO: 1,\n    VIDEO: 1\n  },\n  defaultselected: {\n    $: \"defaultSelected\",\n    OPTION: 1\n  },\n  disablepictureinpicture: {\n    $: \"disablePictureInPicture\",\n    VIDEO: 1\n  },\n  disableremoteplayback: {\n    $: \"disableRemotePlayback\",\n    AUDIO: 1,\n    VIDEO: 1\n  },\n  preservespitch: {\n    $: \"preservesPitch\",\n    AUDIO: 1,\n    VIDEO: 1\n  },\n  shadowrootclonable: {\n    $: \"shadowRootClonable\",\n    TEMPLATE: 1\n  },\n  shadowrootdelegatesfocus: {\n    $: \"shadowRootDelegatesFocus\",\n    TEMPLATE: 1\n  },\n  shadowrootserializable: {\n    $: \"shadowRootSerializable\",\n    TEMPLATE: 1\n  },\n  sharedstoragewritable: {\n    $: \"sharedStorageWritable\",\n    IFRAME: 1,\n    IMG: 1\n  }\n});\nfunction getPropAlias(prop, tagName) {\n  const a = PropAliases[prop];\n  return typeof a === \"object\" ? a[tagName] ? a[\"$\"] : void 0 : a;\n}\nvar DelegatedEvents = /* @__PURE__ */ new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nvar SVGElements = /* @__PURE__ */ new Set([\n  \"altGlyph\",\n  \"altGlyphDef\",\n  \"altGlyphItem\",\n  \"animate\",\n  \"animateColor\",\n  \"animateMotion\",\n  \"animateTransform\",\n  \"circle\",\n  \"clipPath\",\n  \"color-profile\",\n  \"cursor\",\n  \"defs\",\n  \"desc\",\n  \"ellipse\",\n  \"feBlend\",\n  \"feColorMatrix\",\n  \"feComponentTransfer\",\n  \"feComposite\",\n  \"feConvolveMatrix\",\n  \"feDiffuseLighting\",\n  \"feDisplacementMap\",\n  \"feDistantLight\",\n  \"feDropShadow\",\n  \"feFlood\",\n  \"feFuncA\",\n  \"feFuncB\",\n  \"feFuncG\",\n  \"feFuncR\",\n  \"feGaussianBlur\",\n  \"feImage\",\n  \"feMerge\",\n  \"feMergeNode\",\n  \"feMorphology\",\n  \"feOffset\",\n  \"fePointLight\",\n  \"feSpecularLighting\",\n  \"feSpotLight\",\n  \"feTile\",\n  \"feTurbulence\",\n  \"filter\",\n  \"font\",\n  \"font-face\",\n  \"font-face-format\",\n  \"font-face-name\",\n  \"font-face-src\",\n  \"font-face-uri\",\n  \"foreignObject\",\n  \"g\",\n  \"glyph\",\n  \"glyphRef\",\n  \"hkern\",\n  \"image\",\n  \"line\",\n  \"linearGradient\",\n  \"marker\",\n  \"mask\",\n  \"metadata\",\n  \"missing-glyph\",\n  \"mpath\",\n  \"path\",\n  \"pattern\",\n  \"polygon\",\n  \"polyline\",\n  \"radialGradient\",\n  \"rect\",\n  \"set\",\n  \"stop\",\n  \"svg\",\n  \"switch\",\n  \"symbol\",\n  \"text\",\n  \"textPath\",\n  \"tref\",\n  \"tspan\",\n  \"use\",\n  \"view\",\n  \"vkern\"\n]);\nvar SVGNamespace = {\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nvar memo = (fn) => createMemo(() => fn());\nfunction reconcileArrays(parentNode, a, b) {\n  let bLength = b.length, aEnd = a.length, bEnd = bLength, aStart = 0, bStart = 0, after = a[aEnd - 1].nextSibling, map = null;\n  while (aStart < aEnd || bStart < bEnd) {\n    if (a[aStart] === b[bStart]) {\n      aStart++;\n      bStart++;\n      continue;\n    }\n    while (a[aEnd - 1] === b[bEnd - 1]) {\n      aEnd--;\n      bEnd--;\n    }\n    if (aEnd === aStart) {\n      const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n      while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n    } else if (bEnd === bStart) {\n      while (aStart < aEnd) {\n        if (!map || !map.has(a[aStart])) a[aStart].remove();\n        aStart++;\n      }\n    } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n      const node = a[--aEnd].nextSibling;\n      parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n      parentNode.insertBefore(b[--bEnd], node);\n      a[aEnd] = b[bEnd];\n    } else {\n      if (!map) {\n        map = /* @__PURE__ */ new Map();\n        let i = bStart;\n        while (i < bEnd) map.set(b[i], i++);\n      }\n      const index = map.get(a[aStart]);\n      if (index != null) {\n        if (bStart < index && index < bEnd) {\n          let i = aStart, sequence = 1, t;\n          while (++i < aEnd && i < bEnd) {\n            if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n            sequence++;\n          }\n          if (sequence > index - bStart) {\n            const node = a[aStart];\n            while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n          } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n        } else aStart++;\n      } else a[aStart++].remove();\n    }\n  }\n}\nvar $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n  let disposer;\n  createRoot((dispose2) => {\n    disposer = dispose2;\n    element === document ? code() : insert(element, code(), element.firstChild ? null : void 0, init);\n  }, options.owner);\n  return () => {\n    disposer();\n    element.textContent = \"\";\n  };\n}\nfunction template(html, isImportNode, isSVG, isMathML) {\n  let node;\n  const create = () => {\n    const t = isMathML ? document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", \"template\") : document.createElement(\"template\");\n    t.innerHTML = html;\n    return isSVG ? t.content.firstChild.firstChild : isMathML ? t.firstChild : t.content.firstChild;\n  };\n  const fn = isImportNode ? () => untrack(() => document.importNode(node || (node = create()), true)) : () => (node || (node = create())).cloneNode(true);\n  fn.cloneNode = fn;\n  return fn;\n}\nfunction delegateEvents(eventNames, document2 = window.document) {\n  const e = document2[$$EVENTS] || (document2[$$EVENTS] = /* @__PURE__ */ new Set());\n  for (let i = 0, l = eventNames.length; i < l; i++) {\n    const name = eventNames[i];\n    if (!e.has(name)) {\n      e.add(name);\n      document2.addEventListener(name, eventHandler);\n    }\n  }\n}\nfunction clearDelegatedEvents(document2 = window.document) {\n  if (document2[$$EVENTS]) {\n    for (let name of document2[$$EVENTS].keys()) document2.removeEventListener(name, eventHandler);\n    delete document2[$$EVENTS];\n  }\n}\nfunction setAttribute(node, name, value) {\n  if (isHydrating(node)) return;\n  if (value == null) node.removeAttribute(name);\n  else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n  if (isHydrating(node)) return;\n  if (value == null) node.removeAttributeNS(namespace, name);\n  else node.setAttributeNS(namespace, name, value);\n}\nfunction setBoolAttribute(node, name, value) {\n  if (isHydrating(node)) return;\n  value ? node.setAttribute(name, \"\") : node.removeAttribute(name);\n}\nfunction className(node, value) {\n  if (isHydrating(node)) return;\n  if (value == null) node.removeAttribute(\"class\");\n  else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n  if (delegate) {\n    if (Array.isArray(handler)) {\n      node[`$$${name}`] = handler[0];\n      node[`$$${name}Data`] = handler[1];\n    } else node[`$$${name}`] = handler;\n  } else if (Array.isArray(handler)) {\n    const handlerFn = handler[0];\n    node.addEventListener(name, handler[0] = (e) => handlerFn.call(node, handler[1], e));\n  } else node.addEventListener(name, handler, typeof handler !== \"function\" && handler);\n}\nfunction classList(node, value, prev = {}) {\n  const classKeys = Object.keys(value || {}), prevKeys = Object.keys(prev);\n  let i, len;\n  for (i = 0, len = prevKeys.length; i < len; i++) {\n    const key = prevKeys[i];\n    if (!key || key === \"undefined\" || value[key]) continue;\n    toggleClassKey(node, key, false);\n    delete prev[key];\n  }\n  for (i = 0, len = classKeys.length; i < len; i++) {\n    const key = classKeys[i], classValue = !!value[key];\n    if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n    toggleClassKey(node, key, true);\n    prev[key] = classValue;\n  }\n  return prev;\n}\nfunction style(node, value, prev) {\n  if (!value) return prev ? setAttribute(node, \"style\") : value;\n  const nodeStyle = node.style;\n  if (typeof value === \"string\") return nodeStyle.cssText = value;\n  typeof prev === \"string\" && (nodeStyle.cssText = prev = void 0);\n  prev || (prev = {});\n  value || (value = {});\n  let v, s;\n  for (s in prev) {\n    value[s] == null && nodeStyle.removeProperty(s);\n    delete prev[s];\n  }\n  for (s in value) {\n    v = value[s];\n    if (v !== prev[s]) {\n      nodeStyle.setProperty(s, v);\n      prev[s] = v;\n    }\n  }\n  return prev;\n}\nfunction setStyleProperty(node, name, value) {\n  value != null ? node.style.setProperty(name, value) : node.style.removeProperty(name);\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n  const prevProps = {};\n  if (!skipChildren) {\n    createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n  }\n  createRenderEffect(() => typeof props.ref === \"function\" && use(props.ref, node));\n  createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n  return prevProps;\n}\nfunction use(fn, element, arg) {\n  return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n  if (marker !== void 0 && !initial) initial = [];\n  if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n  createRenderEffect((current) => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n  props || (props = {});\n  for (const prop in prevProps) {\n    if (!(prop in props)) {\n      if (prop === \"children\") continue;\n      prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef, props);\n    }\n  }\n  for (const prop in props) {\n    if (prop === \"children\") {\n      continue;\n    }\n    const value = props[prop];\n    prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef, props);\n  }\n}\nfunction getNextElement(template2) {\n  let node, key, hydrating = isHydrating();\n  if (!hydrating || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n    return template2();\n  }\n  if (sharedConfig.completed) sharedConfig.completed.add(node);\n  sharedConfig.registry.delete(key);\n  return node;\n}\nfunction isHydrating(node) {\n  return !!sharedConfig.context && !sharedConfig.done && (!node || node.isConnected);\n}\nfunction toPropertyName(name) {\n  return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n  const classNames = key.trim().split(/\\s+/);\n  for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef, props) {\n  let isCE, isProp, isChildProp, propAlias, forceProp;\n  if (prop === \"style\") return style(node, value, prev);\n  if (prop === \"classList\") return classList(node, value, prev);\n  if (value === prev) return prev;\n  if (prop === \"ref\") {\n    if (!skipRef) value(node);\n  } else if (prop.slice(0, 3) === \"on:\") {\n    const e = prop.slice(3);\n    prev && node.removeEventListener(e, prev, typeof prev !== \"function\" && prev);\n    value && node.addEventListener(e, value, typeof value !== \"function\" && value);\n  } else if (prop.slice(0, 10) === \"oncapture:\") {\n    const e = prop.slice(10);\n    prev && node.removeEventListener(e, prev, true);\n    value && node.addEventListener(e, value, true);\n  } else if (prop.slice(0, 2) === \"on\") {\n    const name = prop.slice(2).toLowerCase();\n    const delegate = DelegatedEvents.has(name);\n    if (!delegate && prev) {\n      const h = Array.isArray(prev) ? prev[0] : prev;\n      node.removeEventListener(name, h);\n    }\n    if (delegate || value) {\n      addEventListener(node, name, value, delegate);\n      delegate && delegateEvents([name]);\n    }\n  } else if (prop.slice(0, 5) === \"attr:\") {\n    setAttribute(node, prop.slice(5), value);\n  } else if (prop.slice(0, 5) === \"bool:\") {\n    setBoolAttribute(node, prop.slice(5), value);\n  } else if ((forceProp = prop.slice(0, 5) === \"prop:\") || (isChildProp = ChildProperties.has(prop)) || !isSVG && ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\") || \"is\" in props)) {\n    if (forceProp) {\n      prop = prop.slice(5);\n      isProp = true;\n    } else if (isHydrating(node)) return value;\n    if (prop === \"class\" || prop === \"className\") className(node, value);\n    else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;\n    else node[propAlias || prop] = value;\n  } else {\n    const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n    if (ns) setAttributeNS(node, ns, prop, value);\n    else setAttribute(node, Aliases[prop] || prop, value);\n  }\n  return value;\n}\nfunction eventHandler(e) {\n  if (sharedConfig.registry && sharedConfig.events) {\n    if (sharedConfig.events.find(([el, ev]) => ev === e)) return;\n  }\n  let node = e.target;\n  const key = `$$${e.type}`;\n  const oriTarget = e.target;\n  const oriCurrentTarget = e.currentTarget;\n  const retarget = (value) => Object.defineProperty(e, \"target\", {\n    configurable: true,\n    value\n  });\n  const handleNode = () => {\n    const handler = node[key];\n    if (handler && !node.disabled) {\n      const data = node[`${key}Data`];\n      data !== void 0 ? handler.call(node, data, e) : handler.call(node, e);\n      if (e.cancelBubble) return;\n    }\n    node.host && typeof node.host !== \"string\" && !node.host._$host && node.contains(e.target) && retarget(node.host);\n    return true;\n  };\n  const walkUpTree = () => {\n    while (handleNode() && (node = node._$host || node.parentNode || node.host)) ;\n  };\n  Object.defineProperty(e, \"currentTarget\", {\n    configurable: true,\n    get() {\n      return node || document;\n    }\n  });\n  if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n  if (e.composedPath) {\n    const path = e.composedPath();\n    retarget(path[0]);\n    for (let i = 0; i < path.length - 2; i++) {\n      node = path[i];\n      if (!handleNode()) break;\n      if (node._$host) {\n        node = node._$host;\n        walkUpTree();\n        break;\n      }\n      if (node.parentNode === oriCurrentTarget) {\n        break;\n      }\n    }\n  } else walkUpTree();\n  retarget(oriTarget);\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n  const hydrating = isHydrating(parent);\n  if (hydrating) {\n    !current && (current = [...parent.childNodes]);\n    let cleaned = [];\n    for (let i = 0; i < current.length; i++) {\n      const node = current[i];\n      if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();\n      else cleaned.push(node);\n    }\n    current = cleaned;\n  }\n  while (typeof current === \"function\") current = current();\n  if (value === current) return current;\n  const t = typeof value, multi = marker !== void 0;\n  parent = multi && current[0] && current[0].parentNode || parent;\n  if (t === \"string\" || t === \"number\") {\n    if (hydrating) return current;\n    if (t === \"number\") {\n      value = value.toString();\n      if (value === current) return current;\n    }\n    if (multi) {\n      let node = current[0];\n      if (node && node.nodeType === 3) {\n        node.data !== value && (node.data = value);\n      } else node = document.createTextNode(value);\n      current = cleanChildren(parent, current, marker, node);\n    } else {\n      if (current !== \"\" && typeof current === \"string\") {\n        current = parent.firstChild.data = value;\n      } else current = parent.textContent = value;\n    }\n  } else if (value == null || t === \"boolean\") {\n    if (hydrating) return current;\n    current = cleanChildren(parent, current, marker);\n  } else if (t === \"function\") {\n    createRenderEffect(() => {\n      let v = value();\n      while (typeof v === \"function\") v = v();\n      current = insertExpression(parent, v, current, marker);\n    });\n    return () => current;\n  } else if (Array.isArray(value)) {\n    const array = [];\n    const currentArray = current && Array.isArray(current);\n    if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n      createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n      return () => current;\n    }\n    if (hydrating) {\n      if (!array.length) return current;\n      if (marker === void 0) return current = [...parent.childNodes];\n      let node = array[0];\n      if (node.parentNode !== parent) return current;\n      const nodes = [node];\n      while ((node = node.nextSibling) !== marker) nodes.push(node);\n      return current = nodes;\n    }\n    if (array.length === 0) {\n      current = cleanChildren(parent, current, marker);\n      if (multi) return current;\n    } else if (currentArray) {\n      if (current.length === 0) {\n        appendNodes(parent, array, marker);\n      } else reconcileArrays(parent, current, array);\n    } else {\n      current && cleanChildren(parent);\n      appendNodes(parent, array);\n    }\n    current = array;\n  } else if (value.nodeType) {\n    if (hydrating && value.parentNode) return current = multi ? [value] : value;\n    if (Array.isArray(current)) {\n      if (multi) return current = cleanChildren(parent, current, marker, value);\n      cleanChildren(parent, current, null, value);\n    } else if (current == null || current === \"\" || !parent.firstChild) {\n      parent.appendChild(value);\n    } else parent.replaceChild(value, parent.firstChild);\n    current = value;\n  } else ;\n  return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n  let dynamic = false;\n  for (let i = 0, len = array.length; i < len; i++) {\n    let item = array[i], prev = current && current[normalized.length], t;\n    if (item == null || item === true || item === false) ;\n    else if ((t = typeof item) === \"object\" && item.nodeType) {\n      normalized.push(item);\n    } else if (Array.isArray(item)) {\n      dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n    } else if (t === \"function\") {\n      if (unwrap) {\n        while (typeof item === \"function\") item = item();\n        dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n      } else {\n        normalized.push(item);\n        dynamic = true;\n      }\n    } else {\n      const value = String(item);\n      if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);\n      else normalized.push(document.createTextNode(value));\n    }\n  }\n  return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n  for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n  if (marker === void 0) return parent.textContent = \"\";\n  const node = replacement || document.createTextNode(\"\");\n  if (current.length) {\n    let inserted = false;\n    for (let i = current.length - 1; i >= 0; i--) {\n      const el = current[i];\n      if (node !== el) {\n        const isParent = el.parentNode === parent;\n        if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);\n        else isParent && el.remove();\n      } else inserted = true;\n    }\n  } else parent.insertBefore(node, marker);\n  return [node];\n}\nfunction getHydrationKey() {\n  return sharedConfig.getNextContextId();\n}\nvar isServer = false;\nvar SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false, is = void 0) {\n  return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName, {\n    is\n  });\n}\nfunction Portal(props) {\n  const {\n    useShadow\n  } = props, marker = document.createTextNode(\"\"), mount = () => props.mount || document.body, owner = getOwner();\n  let content;\n  let hydrating = !!sharedConfig.context;\n  createEffect(() => {\n    if (hydrating) getOwner().user = hydrating = false;\n    content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n    const el = mount();\n    if (el instanceof HTMLHeadElement) {\n      const [clean, setClean] = createSignal(false);\n      const cleanup = () => setClean(true);\n      createRoot((dispose2) => insert(el, () => !clean() ? content() : dispose2(), null));\n      onCleanup(cleanup);\n    } else {\n      const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG), renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n        mode: \"open\"\n      }) : container;\n      Object.defineProperty(container, \"_$host\", {\n        get() {\n          return marker.parentNode;\n        },\n        configurable: true\n      });\n      insert(renderRoot, content);\n      el.appendChild(container);\n      props.ref && props.ref(container);\n      onCleanup(() => el.removeChild(container));\n    }\n  }, void 0, {\n    render: !hydrating\n  });\n  return marker;\n}\nfunction createDynamic(component, props) {\n  const cached = createMemo(component);\n  return createMemo(() => {\n    const component2 = cached();\n    switch (typeof component2) {\n      case \"function\":\n        return untrack(() => component2(props));\n      case \"string\":\n        const isSvg = SVGElements.has(component2);\n        const el = sharedConfig.context ? getNextElement() : createElement(component2, isSvg, untrack(() => props.is));\n        spread(el, props, isSvg);\n        return el;\n    }\n  });\n}\nfunction Dynamic(props) {\n  const [, others] = splitProps(props, [\"component\"]);\n  return createDynamic(() => props.component, others);\n}\n\n// ../../node_modules/.pnpm/superjson@2.2.6/node_modules/superjson/dist/double-indexed-kv.js\nvar DoubleIndexedKV = class {\n  constructor() {\n    this.keyToValue = /* @__PURE__ */ new Map();\n    this.valueToKey = /* @__PURE__ */ new Map();\n  }\n  set(key, value) {\n    this.keyToValue.set(key, value);\n    this.valueToKey.set(value, key);\n  }\n  getByKey(key) {\n    return this.keyToValue.get(key);\n  }\n  getByValue(value) {\n    return this.valueToKey.get(value);\n  }\n  clear() {\n    this.keyToValue.clear();\n    this.valueToKey.clear();\n  }\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.6/node_modules/superjson/dist/registry.js\nvar Registry = class {\n  constructor(generateIdentifier) {\n    this.generateIdentifier = generateIdentifier;\n    this.kv = new DoubleIndexedKV();\n  }\n  register(value, identifier) {\n    if (this.kv.getByValue(value)) {\n      return;\n    }\n    if (!identifier) {\n      identifier = this.generateIdentifier(value);\n    }\n    this.kv.set(identifier, value);\n  }\n  clear() {\n    this.kv.clear();\n  }\n  getIdentifier(value) {\n    return this.kv.getByValue(value);\n  }\n  getValue(identifier) {\n    return this.kv.getByKey(identifier);\n  }\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.6/node_modules/superjson/dist/class-registry.js\nvar ClassRegistry = class extends Registry {\n  constructor() {\n    super((c) => c.name);\n    this.classToAllowedProps = /* @__PURE__ */ new Map();\n  }\n  register(value, options) {\n    if (typeof options === \"object\") {\n      if (options.allowProps) {\n        this.classToAllowedProps.set(value, options.allowProps);\n      }\n      super.register(value, options.identifier);\n    } else {\n      super.register(value, options);\n    }\n  }\n  getAllowedProps(value) {\n    return this.classToAllowedProps.get(value);\n  }\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.6/node_modules/superjson/dist/util.js\nfunction valuesOfObj(record) {\n  if (\"values\" in Object) {\n    return Object.values(record);\n  }\n  const values = [];\n  for (const key in record) {\n    if (record.hasOwnProperty(key)) {\n      values.push(record[key]);\n    }\n  }\n  return values;\n}\nfunction find(record, predicate) {\n  const values = valuesOfObj(record);\n  if (\"find\" in values) {\n    return values.find(predicate);\n  }\n  const valuesNotNever = values;\n  for (let i = 0; i < valuesNotNever.length; i++) {\n    const value = valuesNotNever[i];\n    if (predicate(value)) {\n      return value;\n    }\n  }\n  return void 0;\n}\nfunction forEach(record, run) {\n  Object.entries(record).forEach(([key, value]) => run(value, key));\n}\nfunction includes(arr, value) {\n  return arr.indexOf(value) !== -1;\n}\nfunction findArr(record, predicate) {\n  for (let i = 0; i < record.length; i++) {\n    const value = record[i];\n    if (predicate(value)) {\n      return value;\n    }\n  }\n  return void 0;\n}\n\n// ../../node_modules/.pnpm/superjson@2.2.6/node_modules/superjson/dist/custom-transformer-registry.js\nvar CustomTransformerRegistry = class {\n  constructor() {\n    this.transfomers = {};\n  }\n  register(transformer) {\n    this.transfomers[transformer.name] = transformer;\n  }\n  findApplicable(v) {\n    return find(this.transfomers, (transformer) => transformer.isApplicable(v));\n  }\n  findByName(name) {\n    return this.transfomers[name];\n  }\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.6/node_modules/superjson/dist/is.js\nvar getType = (payload) => Object.prototype.toString.call(payload).slice(8, -1);\nvar isUndefined = (payload) => typeof payload === \"undefined\";\nvar isNull = (payload) => payload === null;\nvar isPlainObject = (payload) => {\n  if (typeof payload !== \"object\" || payload === null)\n    return false;\n  if (payload === Object.prototype)\n    return false;\n  if (Object.getPrototypeOf(payload) === null)\n    return true;\n  return Object.getPrototypeOf(payload) === Object.prototype;\n};\nvar isEmptyObject = (payload) => isPlainObject(payload) && Object.keys(payload).length === 0;\nvar isArray = (payload) => Array.isArray(payload);\nvar isString = (payload) => typeof payload === \"string\";\nvar isNumber = (payload) => typeof payload === \"number\" && !isNaN(payload);\nvar isBoolean = (payload) => typeof payload === \"boolean\";\nvar isRegExp = (payload) => payload instanceof RegExp;\nvar isMap = (payload) => payload instanceof Map;\nvar isSet = (payload) => payload instanceof Set;\nvar isSymbol = (payload) => getType(payload) === \"Symbol\";\nvar isDate = (payload) => payload instanceof Date && !isNaN(payload.valueOf());\nvar isError = (payload) => payload instanceof Error;\nvar isNaNValue = (payload) => typeof payload === \"number\" && isNaN(payload);\nvar isPrimitive = (payload) => isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);\nvar isBigint = (payload) => typeof payload === \"bigint\";\nvar isInfinite = (payload) => payload === Infinity || payload === -Infinity;\nvar isTypedArray = (payload) => ArrayBuffer.isView(payload) && !(payload instanceof DataView);\nvar isURL = (payload) => payload instanceof URL;\n\n// ../../node_modules/.pnpm/superjson@2.2.6/node_modules/superjson/dist/pathstringifier.js\nvar escapeKey = (key) => key.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\");\nvar stringifyPath = (path) => path.map(String).map(escapeKey).join(\".\");\nvar parsePath = (string, legacyPaths) => {\n  const result = [];\n  let segment = \"\";\n  for (let i = 0; i < string.length; i++) {\n    let char = string.charAt(i);\n    if (!legacyPaths && char === \"\\\\\") {\n      const escaped = string.charAt(i + 1);\n      if (escaped === \"\\\\\") {\n        segment += \"\\\\\";\n        i++;\n        continue;\n      } else if (escaped !== \".\") {\n        throw Error(\"invalid path\");\n      }\n    }\n    const isEscapedDot = char === \"\\\\\" && string.charAt(i + 1) === \".\";\n    if (isEscapedDot) {\n      segment += \".\";\n      i++;\n      continue;\n    }\n    const isEndOfSegment = char === \".\";\n    if (isEndOfSegment) {\n      result.push(segment);\n      segment = \"\";\n      continue;\n    }\n    segment += char;\n  }\n  const lastSegment = segment;\n  result.push(lastSegment);\n  return result;\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.6/node_modules/superjson/dist/transformer.js\nfunction simpleTransformation(isApplicable, annotation, transform, untransform) {\n  return {\n    isApplicable,\n    annotation,\n    transform,\n    untransform\n  };\n}\nvar simpleRules = [\n  simpleTransformation(isUndefined, \"undefined\", () => null, () => void 0),\n  simpleTransformation(isBigint, \"bigint\", (v) => v.toString(), (v) => {\n    if (typeof BigInt !== \"undefined\") {\n      return BigInt(v);\n    }\n    return v;\n  }),\n  simpleTransformation(isDate, \"Date\", (v) => v.toISOString(), (v) => new Date(v)),\n  simpleTransformation(isError, \"Error\", (v, superJson) => {\n    const baseError = {\n      name: v.name,\n      message: v.message\n    };\n    if (\"cause\" in v) {\n      baseError.cause = v.cause;\n    }\n    superJson.allowedErrorProps.forEach((prop) => {\n      baseError[prop] = v[prop];\n    });\n    return baseError;\n  }, (v, superJson) => {\n    const e = new Error(v.message, { cause: v.cause });\n    e.name = v.name;\n    e.stack = v.stack;\n    superJson.allowedErrorProps.forEach((prop) => {\n      e[prop] = v[prop];\n    });\n    return e;\n  }),\n  simpleTransformation(isRegExp, \"regexp\", (v) => \"\" + v, (regex) => {\n    const body = regex.slice(1, regex.lastIndexOf(\"/\"));\n    const flags = regex.slice(regex.lastIndexOf(\"/\") + 1);\n    return new RegExp(body, flags);\n  }),\n  simpleTransformation(\n    isSet,\n    \"set\",\n    // (sets only exist in es6+)\n    // eslint-disable-next-line es5/no-es6-methods\n    (v) => [...v.values()],\n    (v) => new Set(v)\n  ),\n  simpleTransformation(isMap, \"map\", (v) => [...v.entries()], (v) => new Map(v)),\n  simpleTransformation((v) => isNaNValue(v) || isInfinite(v), \"number\", (v) => {\n    if (isNaNValue(v)) {\n      return \"NaN\";\n    }\n    if (v > 0) {\n      return \"Infinity\";\n    } else {\n      return \"-Infinity\";\n    }\n  }, Number),\n  simpleTransformation((v) => v === 0 && 1 / v === -Infinity, \"number\", () => {\n    return \"-0\";\n  }, Number),\n  simpleTransformation(isURL, \"URL\", (v) => v.toString(), (v) => new URL(v))\n];\nfunction compositeTransformation(isApplicable, annotation, transform, untransform) {\n  return {\n    isApplicable,\n    annotation,\n    transform,\n    untransform\n  };\n}\nvar symbolRule = compositeTransformation((s, superJson) => {\n  if (isSymbol(s)) {\n    const isRegistered = !!superJson.symbolRegistry.getIdentifier(s);\n    return isRegistered;\n  }\n  return false;\n}, (s, superJson) => {\n  const identifier = superJson.symbolRegistry.getIdentifier(s);\n  return [\"symbol\", identifier];\n}, (v) => v.description, (_, a, superJson) => {\n  const value = superJson.symbolRegistry.getValue(a[1]);\n  if (!value) {\n    throw new Error(\"Trying to deserialize unknown symbol\");\n  }\n  return value;\n});\nvar constructorToName = [\n  Int8Array,\n  Uint8Array,\n  Int16Array,\n  Uint16Array,\n  Int32Array,\n  Uint32Array,\n  Float32Array,\n  Float64Array,\n  Uint8ClampedArray\n].reduce((obj, ctor) => {\n  obj[ctor.name] = ctor;\n  return obj;\n}, {});\nvar typedArrayRule = compositeTransformation(isTypedArray, (v) => [\"typed-array\", v.constructor.name], (v) => [...v], (v, a) => {\n  const ctor = constructorToName[a[1]];\n  if (!ctor) {\n    throw new Error(\"Trying to deserialize unknown typed array\");\n  }\n  return new ctor(v);\n});\nfunction isInstanceOfRegisteredClass(potentialClass, superJson) {\n  if (potentialClass?.constructor) {\n    const isRegistered = !!superJson.classRegistry.getIdentifier(potentialClass.constructor);\n    return isRegistered;\n  }\n  return false;\n}\nvar classRule = compositeTransformation(isInstanceOfRegisteredClass, (clazz, superJson) => {\n  const identifier = superJson.classRegistry.getIdentifier(clazz.constructor);\n  return [\"class\", identifier];\n}, (clazz, superJson) => {\n  const allowedProps = superJson.classRegistry.getAllowedProps(clazz.constructor);\n  if (!allowedProps) {\n    return { ...clazz };\n  }\n  const result = {};\n  allowedProps.forEach((prop) => {\n    result[prop] = clazz[prop];\n  });\n  return result;\n}, (v, a, superJson) => {\n  const clazz = superJson.classRegistry.getValue(a[1]);\n  if (!clazz) {\n    throw new Error(`Trying to deserialize unknown class '${a[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);\n  }\n  return Object.assign(Object.create(clazz.prototype), v);\n});\nvar customRule = compositeTransformation((value, superJson) => {\n  return !!superJson.customTransformerRegistry.findApplicable(value);\n}, (value, superJson) => {\n  const transformer = superJson.customTransformerRegistry.findApplicable(value);\n  return [\"custom\", transformer.name];\n}, (value, superJson) => {\n  const transformer = superJson.customTransformerRegistry.findApplicable(value);\n  return transformer.serialize(value);\n}, (v, a, superJson) => {\n  const transformer = superJson.customTransformerRegistry.findByName(a[1]);\n  if (!transformer) {\n    throw new Error(\"Trying to deserialize unknown custom value\");\n  }\n  return transformer.deserialize(v);\n});\nvar compositeRules = [classRule, symbolRule, customRule, typedArrayRule];\nvar transformValue = (value, superJson) => {\n  const applicableCompositeRule = findArr(compositeRules, (rule) => rule.isApplicable(value, superJson));\n  if (applicableCompositeRule) {\n    return {\n      value: applicableCompositeRule.transform(value, superJson),\n      type: applicableCompositeRule.annotation(value, superJson)\n    };\n  }\n  const applicableSimpleRule = findArr(simpleRules, (rule) => rule.isApplicable(value, superJson));\n  if (applicableSimpleRule) {\n    return {\n      value: applicableSimpleRule.transform(value, superJson),\n      type: applicableSimpleRule.annotation\n    };\n  }\n  return void 0;\n};\nvar simpleRulesByAnnotation = {};\nsimpleRules.forEach((rule) => {\n  simpleRulesByAnnotation[rule.annotation] = rule;\n});\nvar untransformValue = (json, type, superJson) => {\n  if (isArray(type)) {\n    switch (type[0]) {\n      case \"symbol\":\n        return symbolRule.untransform(json, type, superJson);\n      case \"class\":\n        return classRule.untransform(json, type, superJson);\n      case \"custom\":\n        return customRule.untransform(json, type, superJson);\n      case \"typed-array\":\n        return typedArrayRule.untransform(json, type, superJson);\n      default:\n        throw new Error(\"Unknown transformation: \" + type);\n    }\n  } else {\n    const transformation = simpleRulesByAnnotation[type];\n    if (!transformation) {\n      throw new Error(\"Unknown transformation: \" + type);\n    }\n    return transformation.untransform(json, superJson);\n  }\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.6/node_modules/superjson/dist/accessDeep.js\nvar getNthKey = (value, n) => {\n  if (n > value.size)\n    throw new Error(\"index out of bounds\");\n  const keys = value.keys();\n  while (n > 0) {\n    keys.next();\n    n--;\n  }\n  return keys.next().value;\n};\nfunction validatePath(path) {\n  if (includes(path, \"__proto__\")) {\n    throw new Error(\"__proto__ is not allowed as a property\");\n  }\n  if (includes(path, \"prototype\")) {\n    throw new Error(\"prototype is not allowed as a property\");\n  }\n  if (includes(path, \"constructor\")) {\n    throw new Error(\"constructor is not allowed as a property\");\n  }\n}\nvar getDeep = (object, path) => {\n  validatePath(path);\n  for (let i = 0; i < path.length; i++) {\n    const key = path[i];\n    if (isSet(object)) {\n      object = getNthKey(object, +key);\n    } else if (isMap(object)) {\n      const row = +key;\n      const type = +path[++i] === 0 ? \"key\" : \"value\";\n      const keyOfRow = getNthKey(object, row);\n      switch (type) {\n        case \"key\":\n          object = keyOfRow;\n          break;\n        case \"value\":\n          object = object.get(keyOfRow);\n          break;\n      }\n    } else {\n      object = object[key];\n    }\n  }\n  return object;\n};\nvar setDeep = (object, path, mapper) => {\n  validatePath(path);\n  if (path.length === 0) {\n    return mapper(object);\n  }\n  let parent = object;\n  for (let i = 0; i < path.length - 1; i++) {\n    const key = path[i];\n    if (isArray(parent)) {\n      const index = +key;\n      parent = parent[index];\n    } else if (isPlainObject(parent)) {\n      parent = parent[key];\n    } else if (isSet(parent)) {\n      const row = +key;\n      parent = getNthKey(parent, row);\n    } else if (isMap(parent)) {\n      const isEnd = i === path.length - 2;\n      if (isEnd) {\n        break;\n      }\n      const row = +key;\n      const type = +path[++i] === 0 ? \"key\" : \"value\";\n      const keyOfRow = getNthKey(parent, row);\n      switch (type) {\n        case \"key\":\n          parent = keyOfRow;\n          break;\n        case \"value\":\n          parent = parent.get(keyOfRow);\n          break;\n      }\n    }\n  }\n  const lastKey = path[path.length - 1];\n  if (isArray(parent)) {\n    parent[+lastKey] = mapper(parent[+lastKey]);\n  } else if (isPlainObject(parent)) {\n    parent[lastKey] = mapper(parent[lastKey]);\n  }\n  if (isSet(parent)) {\n    const oldValue = getNthKey(parent, +lastKey);\n    const newValue = mapper(oldValue);\n    if (oldValue !== newValue) {\n      parent.delete(oldValue);\n      parent.add(newValue);\n    }\n  }\n  if (isMap(parent)) {\n    const row = +path[path.length - 2];\n    const keyToRow = getNthKey(parent, row);\n    const type = +lastKey === 0 ? \"key\" : \"value\";\n    switch (type) {\n      case \"key\": {\n        const newKey = mapper(keyToRow);\n        parent.set(newKey, parent.get(keyToRow));\n        if (newKey !== keyToRow) {\n          parent.delete(keyToRow);\n        }\n        break;\n      }\n      case \"value\": {\n        parent.set(keyToRow, mapper(parent.get(keyToRow)));\n        break;\n      }\n    }\n  }\n  return object;\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.6/node_modules/superjson/dist/plainer.js\nvar enableLegacyPaths = (version) => version < 1;\nfunction traverse(tree, walker2, version, origin = []) {\n  if (!tree) {\n    return;\n  }\n  const legacyPaths = enableLegacyPaths(version);\n  if (!isArray(tree)) {\n    forEach(tree, (subtree, key) => traverse(subtree, walker2, version, [\n      ...origin,\n      ...parsePath(key, legacyPaths)\n    ]));\n    return;\n  }\n  const [nodeValue, children2] = tree;\n  if (children2) {\n    forEach(children2, (child, key) => {\n      traverse(child, walker2, version, [\n        ...origin,\n        ...parsePath(key, legacyPaths)\n      ]);\n    });\n  }\n  walker2(nodeValue, origin);\n}\nfunction applyValueAnnotations(plain, annotations, version, superJson) {\n  traverse(annotations, (type, path) => {\n    plain = setDeep(plain, path, (v) => untransformValue(v, type, superJson));\n  }, version);\n  return plain;\n}\nfunction applyReferentialEqualityAnnotations(plain, annotations, version) {\n  const legacyPaths = enableLegacyPaths(version);\n  function apply(identicalPaths, path) {\n    const object = getDeep(plain, parsePath(path, legacyPaths));\n    identicalPaths.map((path2) => parsePath(path2, legacyPaths)).forEach((identicalObjectPath) => {\n      plain = setDeep(plain, identicalObjectPath, () => object);\n    });\n  }\n  if (isArray(annotations)) {\n    const [root, other] = annotations;\n    root.forEach((identicalPath) => {\n      plain = setDeep(plain, parsePath(identicalPath, legacyPaths), () => plain);\n    });\n    if (other) {\n      forEach(other, apply);\n    }\n  } else {\n    forEach(annotations, apply);\n  }\n  return plain;\n}\nvar isDeep = (object, superJson) => isPlainObject(object) || isArray(object) || isMap(object) || isSet(object) || isError(object) || isInstanceOfRegisteredClass(object, superJson);\nfunction addIdentity(object, path, identities) {\n  const existingSet = identities.get(object);\n  if (existingSet) {\n    existingSet.push(path);\n  } else {\n    identities.set(object, [path]);\n  }\n}\nfunction generateReferentialEqualityAnnotations(identitites, dedupe) {\n  const result = {};\n  let rootEqualityPaths = void 0;\n  identitites.forEach((paths) => {\n    if (paths.length <= 1) {\n      return;\n    }\n    if (!dedupe) {\n      paths = paths.map((path) => path.map(String)).sort((a, b) => a.length - b.length);\n    }\n    const [representativePath, ...identicalPaths] = paths;\n    if (representativePath.length === 0) {\n      rootEqualityPaths = identicalPaths.map(stringifyPath);\n    } else {\n      result[stringifyPath(representativePath)] = identicalPaths.map(stringifyPath);\n    }\n  });\n  if (rootEqualityPaths) {\n    if (isEmptyObject(result)) {\n      return [rootEqualityPaths];\n    } else {\n      return [rootEqualityPaths, result];\n    }\n  } else {\n    return isEmptyObject(result) ? void 0 : result;\n  }\n}\nvar walker = (object, identities, superJson, dedupe, path = [], objectsInThisPath = [], seenObjects = /* @__PURE__ */ new Map()) => {\n  const primitive = isPrimitive(object);\n  if (!primitive) {\n    addIdentity(object, path, identities);\n    const seen = seenObjects.get(object);\n    if (seen) {\n      return dedupe ? {\n        transformedValue: null\n      } : seen;\n    }\n  }\n  if (!isDeep(object, superJson)) {\n    const transformed2 = transformValue(object, superJson);\n    const result2 = transformed2 ? {\n      transformedValue: transformed2.value,\n      annotations: [transformed2.type]\n    } : {\n      transformedValue: object\n    };\n    if (!primitive) {\n      seenObjects.set(object, result2);\n    }\n    return result2;\n  }\n  if (includes(objectsInThisPath, object)) {\n    return {\n      transformedValue: null\n    };\n  }\n  const transformationResult = transformValue(object, superJson);\n  const transformed = transformationResult?.value ?? object;\n  const transformedValue = isArray(transformed) ? [] : {};\n  const innerAnnotations = {};\n  forEach(transformed, (value, index) => {\n    if (index === \"__proto__\" || index === \"constructor\" || index === \"prototype\") {\n      throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`);\n    }\n    const recursiveResult = walker(value, identities, superJson, dedupe, [...path, index], [...objectsInThisPath, object], seenObjects);\n    transformedValue[index] = recursiveResult.transformedValue;\n    if (isArray(recursiveResult.annotations)) {\n      innerAnnotations[escapeKey(index)] = recursiveResult.annotations;\n    } else if (isPlainObject(recursiveResult.annotations)) {\n      forEach(recursiveResult.annotations, (tree, key) => {\n        innerAnnotations[escapeKey(index) + \".\" + key] = tree;\n      });\n    }\n  });\n  const result = isEmptyObject(innerAnnotations) ? {\n    transformedValue,\n    annotations: !!transformationResult ? [transformationResult.type] : void 0\n  } : {\n    transformedValue,\n    annotations: !!transformationResult ? [transformationResult.type, innerAnnotations] : innerAnnotations\n  };\n  if (!primitive) {\n    seenObjects.set(object, result);\n  }\n  return result;\n};\n\n// ../../node_modules/.pnpm/is-what@5.5.0/node_modules/is-what/dist/getType.js\nfunction getType2(payload) {\n  return Object.prototype.toString.call(payload).slice(8, -1);\n}\n\n// ../../node_modules/.pnpm/is-what@5.5.0/node_modules/is-what/dist/isArray.js\nfunction isArray2(payload) {\n  return getType2(payload) === \"Array\";\n}\n\n// ../../node_modules/.pnpm/is-what@5.5.0/node_modules/is-what/dist/isPlainObject.js\nfunction isPlainObject2(payload) {\n  if (getType2(payload) !== \"Object\")\n    return false;\n  const prototype = Object.getPrototypeOf(payload);\n  return !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\n\n// ../../node_modules/.pnpm/copy-anything@4.0.5/node_modules/copy-anything/dist/index.js\nfunction assignProp2(carry, key, newVal, originalObject, includeNonenumerable) {\n  const propType = {}.propertyIsEnumerable.call(originalObject, key) ? \"enumerable\" : \"nonenumerable\";\n  if (propType === \"enumerable\")\n    carry[key] = newVal;\n  if (includeNonenumerable && propType === \"nonenumerable\") {\n    Object.defineProperty(carry, key, {\n      value: newVal,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    });\n  }\n}\nfunction copy(target, options = {}) {\n  if (isArray2(target)) {\n    return target.map((item) => copy(item, options));\n  }\n  if (!isPlainObject2(target)) {\n    return target;\n  }\n  const props = Object.getOwnPropertyNames(target);\n  const symbols = Object.getOwnPropertySymbols(target);\n  return [...props, ...symbols].reduce((carry, key) => {\n    if (key === \"__proto__\")\n      return carry;\n    if (isArray2(options.props) && !options.props.includes(key)) {\n      return carry;\n    }\n    const val = target[key];\n    const newVal = copy(val, options);\n    assignProp2(carry, key, newVal, target, options.nonenumerable);\n    return carry;\n  }, {});\n}\n\n// ../../node_modules/.pnpm/superjson@2.2.6/node_modules/superjson/dist/index.js\nvar SuperJSON = class {\n  /**\n   * @param dedupeReferentialEqualities  If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n   */\n  constructor({ dedupe = false } = {}) {\n    this.classRegistry = new ClassRegistry();\n    this.symbolRegistry = new Registry((s) => s.description ?? \"\");\n    this.customTransformerRegistry = new CustomTransformerRegistry();\n    this.allowedErrorProps = [];\n    this.dedupe = dedupe;\n  }\n  serialize(object) {\n    const identities = /* @__PURE__ */ new Map();\n    const output = walker(object, identities, this, this.dedupe);\n    const res = {\n      json: output.transformedValue\n    };\n    if (output.annotations) {\n      res.meta = {\n        ...res.meta,\n        values: output.annotations\n      };\n    }\n    const equalityAnnotations = generateReferentialEqualityAnnotations(identities, this.dedupe);\n    if (equalityAnnotations) {\n      res.meta = {\n        ...res.meta,\n        referentialEqualities: equalityAnnotations\n      };\n    }\n    if (res.meta)\n      res.meta.v = 1;\n    return res;\n  }\n  deserialize(payload, options) {\n    const { json, meta } = payload;\n    let result = options?.inPlace ? json : copy(json);\n    if (meta?.values) {\n      result = applyValueAnnotations(result, meta.values, meta.v ?? 0, this);\n    }\n    if (meta?.referentialEqualities) {\n      result = applyReferentialEqualityAnnotations(result, meta.referentialEqualities, meta.v ?? 0);\n    }\n    return result;\n  }\n  stringify(object) {\n    return JSON.stringify(this.serialize(object));\n  }\n  parse(string) {\n    return this.deserialize(JSON.parse(string), { inPlace: true });\n  }\n  registerClass(v, options) {\n    this.classRegistry.register(v, options);\n  }\n  registerSymbol(v, identifier) {\n    this.symbolRegistry.register(v, identifier);\n  }\n  registerCustom(transformer, name) {\n    this.customTransformerRegistry.register({\n      name,\n      ...transformer\n    });\n  }\n  allowErrorProps(...props) {\n    this.allowedErrorProps.push(...props);\n  }\n};\nSuperJSON.defaultInstance = new SuperJSON();\nSuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind(SuperJSON.defaultInstance);\nSuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind(SuperJSON.defaultInstance);\nSuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind(SuperJSON.defaultInstance);\nSuperJSON.parse = SuperJSON.defaultInstance.parse.bind(SuperJSON.defaultInstance);\nSuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind(SuperJSON.defaultInstance);\nSuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(SuperJSON.defaultInstance);\nSuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind(SuperJSON.defaultInstance);\nSuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(SuperJSON.defaultInstance);\nvar serialize = SuperJSON.serialize;\nSuperJSON.deserialize;\nvar stringify = SuperJSON.stringify;\nSuperJSON.parse;\nSuperJSON.registerClass;\nSuperJSON.registerCustom;\nSuperJSON.registerSymbol;\nSuperJSON.allowErrorProps;\n\n// src/utils.tsx\nfunction getQueryStatusLabel(query) {\n  return query.state.fetchStatus === \"fetching\" ? \"fetching\" : !query.getObserversCount() ? \"inactive\" : query.state.fetchStatus === \"paused\" ? \"paused\" : query.isStale() ? \"stale\" : \"fresh\";\n}\nfunction getSidedProp(prop, side) {\n  return `${prop}${side.charAt(0).toUpperCase() + side.slice(1)}`;\n}\nfunction getQueryStatusColor({\n  queryState,\n  observerCount,\n  isStale\n}) {\n  return queryState?.fetchStatus === \"fetching\" ? \"blue\" : !observerCount ? \"gray\" : queryState?.fetchStatus === \"paused\" ? \"purple\" : isStale ? \"yellow\" : \"green\";\n}\nfunction getMutationStatusColor({\n  status,\n  isPaused\n}) {\n  return isPaused ? \"purple\" : status === \"error\" ? \"red\" : status === \"pending\" ? \"yellow\" : status === \"success\" ? \"green\" : \"gray\";\n}\nfunction getQueryStatusColorByLabel(label) {\n  return label === \"fresh\" ? \"green\" : label === \"stale\" ? \"yellow\" : label === \"paused\" ? \"purple\" : label === \"inactive\" ? \"gray\" : \"blue\";\n}\nvar displayValue = (value, beautify = false) => {\n  const {\n    json\n  } = serialize(value);\n  return JSON.stringify(json, null, beautify ? 2 : void 0);\n};\nvar getStatusRank = (q) => q.state.fetchStatus !== \"idle\" ? 0 : !q.getObserversCount() ? 3 : q.isStale() ? 2 : 1;\nvar queryHashSort = (a, b) => a.queryHash.localeCompare(b.queryHash);\nvar dateSort = (a, b) => {\n  const diff = b.state.dataUpdatedAt - a.state.dataUpdatedAt;\n  return diff < 0 ? -1 : diff > 0 ? 1 : 0;\n};\nvar statusAndDateSort = (a, b) => {\n  if (getStatusRank(a) === getStatusRank(b)) {\n    return dateSort(a, b);\n  }\n  return getStatusRank(a) > getStatusRank(b) ? 1 : -1;\n};\nvar sortFns = {\n  status: statusAndDateSort,\n  \"query hash\": queryHashSort,\n  \"last updated\": dateSort\n};\nvar getMutationStatusRank = (m) => m.state.isPaused ? 0 : m.state.status === \"error\" ? 2 : m.state.status === \"pending\" ? 1 : 3;\nvar mutationDateSort = (a, b) => a.state.submittedAt < b.state.submittedAt ? 1 : -1;\nvar mutationStatusSort = (a, b) => {\n  if (getMutationStatusRank(a) === getMutationStatusRank(b)) {\n    return mutationDateSort(a, b);\n  }\n  return getMutationStatusRank(a) > getMutationStatusRank(b) ? 1 : -1;\n};\nvar mutationSortFns = {\n  status: mutationStatusSort,\n  \"last updated\": mutationDateSort\n};\nvar convertRemToPixels = (rem) => {\n  return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);\n};\nvar getPreferredColorScheme = () => {\n  const [colorScheme, setColorScheme] = createSignal(\"dark\");\n  onMount(() => {\n    const query = window.matchMedia(\"(prefers-color-scheme: dark)\");\n    setColorScheme(query.matches ? \"dark\" : \"light\");\n    const listener = (e) => {\n      setColorScheme(e.matches ? \"dark\" : \"light\");\n    };\n    query.addEventListener(\"change\", listener);\n    onCleanup(() => query.removeEventListener(\"change\", listener));\n  });\n  return colorScheme;\n};\nvar updateNestedDataByPath = (oldData, updatePath, value) => {\n  if (updatePath.length === 0) {\n    return value;\n  }\n  if (oldData instanceof Map) {\n    const newData = new Map(oldData);\n    if (updatePath.length === 1) {\n      newData.set(updatePath[0], value);\n      return newData;\n    }\n    const [head, ...tail] = updatePath;\n    newData.set(head, updateNestedDataByPath(newData.get(head), tail, value));\n    return newData;\n  }\n  if (oldData instanceof Set) {\n    const setAsArray = updateNestedDataByPath(Array.from(oldData), updatePath, value);\n    return new Set(setAsArray);\n  }\n  if (Array.isArray(oldData)) {\n    const newData = [...oldData];\n    if (updatePath.length === 1) {\n      newData[updatePath[0]] = value;\n      return newData;\n    }\n    const [head, ...tail] = updatePath;\n    newData[head] = updateNestedDataByPath(newData[head], tail, value);\n    return newData;\n  }\n  if (oldData instanceof Object) {\n    const newData = {\n      ...oldData\n    };\n    if (updatePath.length === 1) {\n      newData[updatePath[0]] = value;\n      return newData;\n    }\n    const [head, ...tail] = updatePath;\n    newData[head] = updateNestedDataByPath(newData[head], tail, value);\n    return newData;\n  }\n  return oldData;\n};\nvar deleteNestedDataByPath = (oldData, deletePath) => {\n  if (oldData instanceof Map) {\n    const newData = new Map(oldData);\n    if (deletePath.length === 1) {\n      newData.delete(deletePath[0]);\n      return newData;\n    }\n    const [head, ...tail] = deletePath;\n    newData.set(head, deleteNestedDataByPath(newData.get(head), tail));\n    return newData;\n  }\n  if (oldData instanceof Set) {\n    const setAsArray = deleteNestedDataByPath(Array.from(oldData), deletePath);\n    return new Set(setAsArray);\n  }\n  if (Array.isArray(oldData)) {\n    const newData = [...oldData];\n    if (deletePath.length === 1) {\n      return newData.filter((_, idx) => idx.toString() !== deletePath[0]);\n    }\n    const [head, ...tail] = deletePath;\n    newData[head] = deleteNestedDataByPath(newData[head], tail);\n    return newData;\n  }\n  if (oldData instanceof Object) {\n    const newData = {\n      ...oldData\n    };\n    if (deletePath.length === 1) {\n      delete newData[deletePath[0]];\n      return newData;\n    }\n    const [head, ...tail] = deletePath;\n    newData[head] = deleteNestedDataByPath(newData[head], tail);\n    return newData;\n  }\n  return oldData;\n};\nvar setupStyleSheet = (nonce, target) => {\n  if (!nonce) return;\n  window.__nonce__ = nonce;\n  const root = target ?? document.head;\n  if (root.querySelector(\"#_goober\")) return;\n  const styleTag = document.createElement(\"style\");\n  const textNode = document.createTextNode(\"\");\n  styleTag.appendChild(textNode);\n  styleTag.id = \"_goober\";\n  styleTag.setAttribute(\"nonce\", nonce);\n  root.appendChild(styleTag);\n};\n\nexport { $TRACK, DEV, Dynamic, For, Index, Match, Portal, Show, Switch, addEventListener, batch, className, clearDelegatedEvents, convertRemToPixels, createComponent, createComputed, createContext, createEffect, createMemo, createRenderEffect, createRoot, createSignal, createUniqueId, delegateEvents, deleteNestedDataByPath, displayValue, getMutationStatusColor, getOwner, getPreferredColorScheme, getQueryStatusColor, getQueryStatusColorByLabel, getQueryStatusLabel, getSidedProp, insert, isServer, lazy, memo, mergeProps, mutationSortFns, on, onCleanup, onMount, render, serialize, setAttribute, setStyleProperty, setupStyleSheet, sortFns, splitProps, spread, stringify, template, untrack, updateNestedDataByPath, use, useContext, useTransition };\n","import { createSignal, render, lazy, setupStyleSheet, createComponent, mergeProps } from './chunk/ZCXR2IAF.js';\n\n// src/TanstackQueryDevtools.tsx\nvar TanstackQueryDevtools = class {\n  #client;\n  #onlineManager;\n  #queryFlavor;\n  #version;\n  #isMounted = false;\n  #styleNonce;\n  #shadowDOMTarget;\n  #buttonPosition;\n  #position;\n  #initialIsOpen;\n  #errorTypes;\n  #hideDisabledQueries;\n  #Component;\n  #theme;\n  #dispose;\n  constructor(config) {\n    const {\n      client,\n      queryFlavor,\n      version,\n      onlineManager,\n      buttonPosition,\n      position,\n      initialIsOpen,\n      errorTypes,\n      styleNonce,\n      shadowDOMTarget,\n      hideDisabledQueries,\n      theme\n    } = config;\n    this.#client = createSignal(client);\n    this.#queryFlavor = queryFlavor;\n    this.#version = version;\n    this.#onlineManager = onlineManager;\n    this.#styleNonce = styleNonce;\n    this.#shadowDOMTarget = shadowDOMTarget;\n    this.#buttonPosition = createSignal(buttonPosition);\n    this.#position = createSignal(position);\n    this.#initialIsOpen = createSignal(initialIsOpen);\n    this.#errorTypes = createSignal(errorTypes);\n    this.#hideDisabledQueries = createSignal(hideDisabledQueries);\n    this.#theme = createSignal(theme);\n  }\n  setButtonPosition(position) {\n    this.#buttonPosition[1](position);\n  }\n  setPosition(position) {\n    this.#position[1](position);\n  }\n  setInitialIsOpen(isOpen) {\n    this.#initialIsOpen[1](isOpen);\n  }\n  setErrorTypes(errorTypes) {\n    this.#errorTypes[1](errorTypes);\n  }\n  setClient(client) {\n    this.#client[1](client);\n  }\n  setTheme(theme) {\n    this.#theme[1](theme);\n  }\n  mount(el) {\n    if (this.#isMounted) {\n      throw new Error(\"Devtools is already mounted\");\n    }\n    const dispose = render(() => {\n      const _self$ = this;\n      const [btnPosition] = this.#buttonPosition;\n      const [pos] = this.#position;\n      const [isOpen] = this.#initialIsOpen;\n      const [errors] = this.#errorTypes;\n      const [hideDisabledQueries] = this.#hideDisabledQueries;\n      const [queryClient] = this.#client;\n      const [theme] = this.#theme;\n      let Devtools;\n      if (this.#Component) {\n        Devtools = this.#Component;\n      } else {\n        Devtools = lazy(() => import('./DevtoolsComponent/ZXV6FBN7.js'));\n        this.#Component = Devtools;\n      }\n      setupStyleSheet(this.#styleNonce, this.#shadowDOMTarget);\n      return createComponent(Devtools, mergeProps({\n        get queryFlavor() {\n          return _self$.#queryFlavor;\n        },\n        get version() {\n          return _self$.#version;\n        },\n        get onlineManager() {\n          return _self$.#onlineManager;\n        },\n        get shadowDOMTarget() {\n          return _self$.#shadowDOMTarget;\n        }\n      }, {\n        get client() {\n          return queryClient();\n        },\n        get buttonPosition() {\n          return btnPosition();\n        },\n        get position() {\n          return pos();\n        },\n        get initialIsOpen() {\n          return isOpen();\n        },\n        get errorTypes() {\n          return errors();\n        },\n        get hideDisabledQueries() {\n          return hideDisabledQueries();\n        },\n        get theme() {\n          return theme();\n        }\n      }));\n    }, el);\n    this.#isMounted = true;\n    this.#dispose = dispose;\n  }\n  unmount() {\n    if (!this.#isMounted) {\n      throw new Error(\"Devtools is not mounted\");\n    }\n    this.#dispose?.();\n    this.#isMounted = false;\n  }\n};\n\n// src/TanstackQueryDevtoolsPanel.tsx\nvar TanstackQueryDevtoolsPanel = class {\n  #client;\n  #onlineManager;\n  #queryFlavor;\n  #version;\n  #isMounted = false;\n  #styleNonce;\n  #shadowDOMTarget;\n  #buttonPosition;\n  #position;\n  #initialIsOpen;\n  #errorTypes;\n  #hideDisabledQueries;\n  #onClose;\n  #Component;\n  #theme;\n  #dispose;\n  constructor(config) {\n    const {\n      client,\n      queryFlavor,\n      version,\n      onlineManager,\n      buttonPosition,\n      position,\n      initialIsOpen,\n      errorTypes,\n      styleNonce,\n      shadowDOMTarget,\n      onClose,\n      hideDisabledQueries,\n      theme\n    } = config;\n    this.#client = createSignal(client);\n    this.#queryFlavor = queryFlavor;\n    this.#version = version;\n    this.#onlineManager = onlineManager;\n    this.#styleNonce = styleNonce;\n    this.#shadowDOMTarget = shadowDOMTarget;\n    this.#buttonPosition = createSignal(buttonPosition);\n    this.#position = createSignal(position);\n    this.#initialIsOpen = createSignal(initialIsOpen);\n    this.#errorTypes = createSignal(errorTypes);\n    this.#hideDisabledQueries = createSignal(hideDisabledQueries);\n    this.#onClose = createSignal(onClose);\n    this.#theme = createSignal(theme);\n  }\n  setButtonPosition(position) {\n    this.#buttonPosition[1](position);\n  }\n  setPosition(position) {\n    this.#position[1](position);\n  }\n  setInitialIsOpen(isOpen) {\n    this.#initialIsOpen[1](isOpen);\n  }\n  setErrorTypes(errorTypes) {\n    this.#errorTypes[1](errorTypes);\n  }\n  setClient(client) {\n    this.#client[1](client);\n  }\n  setOnClose(onClose) {\n    this.#onClose[1](() => onClose);\n  }\n  setTheme(theme) {\n    this.#theme[1](theme);\n  }\n  mount(el) {\n    if (this.#isMounted) {\n      throw new Error(\"Devtools is already mounted\");\n    }\n    const dispose = render(() => {\n      const _self$ = this;\n      const [btnPosition] = this.#buttonPosition;\n      const [pos] = this.#position;\n      const [isOpen] = this.#initialIsOpen;\n      const [errors] = this.#errorTypes;\n      const [hideDisabledQueries] = this.#hideDisabledQueries;\n      const [queryClient] = this.#client;\n      const [onClose] = this.#onClose;\n      const [theme] = this.#theme;\n      let Devtools;\n      if (this.#Component) {\n        Devtools = this.#Component;\n      } else {\n        Devtools = lazy(() => import('./DevtoolsPanelComponent/MO2VZFYH.js'));\n        this.#Component = Devtools;\n      }\n      setupStyleSheet(this.#styleNonce, this.#shadowDOMTarget);\n      return createComponent(Devtools, mergeProps({\n        get queryFlavor() {\n          return _self$.#queryFlavor;\n        },\n        get version() {\n          return _self$.#version;\n        },\n        get onlineManager() {\n          return _self$.#onlineManager;\n        },\n        get shadowDOMTarget() {\n          return _self$.#shadowDOMTarget;\n        }\n      }, {\n        get client() {\n          return queryClient();\n        },\n        get buttonPosition() {\n          return btnPosition();\n        },\n        get position() {\n          return pos();\n        },\n        get initialIsOpen() {\n          return isOpen();\n        },\n        get errorTypes() {\n          return errors();\n        },\n        get hideDisabledQueries() {\n          return hideDisabledQueries();\n        },\n        get onClose() {\n          return onClose();\n        },\n        get theme() {\n          return theme();\n        }\n      }));\n    }, el);\n    this.#isMounted = true;\n    this.#dispose = dispose;\n  }\n  unmount() {\n    if (!this.#isMounted) {\n      throw new Error(\"Devtools is not mounted\");\n    }\n    this.#dispose?.();\n    this.#isMounted = false;\n  }\n};\n\nexport { TanstackQueryDevtools, TanstackQueryDevtoolsPanel };\n","\"use client\";\n\n// src/ReactQueryDevtools.tsx\nimport * as React from \"react\";\nimport { onlineManager, useQueryClient } from \"@tanstack/react-query\";\nimport { TanstackQueryDevtools } from \"@tanstack/query-devtools\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction ReactQueryDevtools(props) {\n  const queryClient = useQueryClient(props.client);\n  const ref = React.useRef(null);\n  const {\n    buttonPosition,\n    position,\n    initialIsOpen,\n    errorTypes,\n    styleNonce,\n    shadowDOMTarget,\n    hideDisabledQueries,\n    theme\n  } = props;\n  const [devtools] = React.useState(\n    new TanstackQueryDevtools({\n      client: queryClient,\n      queryFlavor: \"React Query\",\n      version: \"5\",\n      onlineManager,\n      buttonPosition,\n      position,\n      initialIsOpen,\n      errorTypes,\n      styleNonce,\n      shadowDOMTarget,\n      hideDisabledQueries,\n      theme\n    })\n  );\n  React.useEffect(() => {\n    devtools.setClient(queryClient);\n  }, [queryClient, devtools]);\n  React.useEffect(() => {\n    if (buttonPosition) {\n      devtools.setButtonPosition(buttonPosition);\n    }\n  }, [buttonPosition, devtools]);\n  React.useEffect(() => {\n    if (position) {\n      devtools.setPosition(position);\n    }\n  }, [position, devtools]);\n  React.useEffect(() => {\n    devtools.setInitialIsOpen(initialIsOpen || false);\n  }, [initialIsOpen, devtools]);\n  React.useEffect(() => {\n    devtools.setErrorTypes(errorTypes || []);\n  }, [errorTypes, devtools]);\n  React.useEffect(() => {\n    devtools.setTheme(theme);\n  }, [theme, devtools]);\n  React.useEffect(() => {\n    if (ref.current) {\n      devtools.mount(ref.current);\n    }\n    return () => {\n      devtools.unmount();\n    };\n  }, [devtools]);\n  return /* @__PURE__ */ jsx(\"div\", { dir: \"ltr\", className: \"tsqd-parent-container\", ref });\n}\nexport {\n  ReactQueryDevtools\n};\n//# sourceMappingURL=ReactQueryDevtools.js.map","\"use client\";\n\n// src/index.ts\nimport * as Devtools from \"./ReactQueryDevtools.js\";\nimport * as DevtoolsPanel from \"./ReactQueryDevtoolsPanel.js\";\nvar ReactQueryDevtools2 = process.env.NODE_ENV !== \"development\" ? function() {\n  return null;\n} : Devtools.ReactQueryDevtools;\nvar ReactQueryDevtoolsPanel2 = process.env.NODE_ENV !== \"development\" ? function() {\n  return null;\n} : DevtoolsPanel.ReactQueryDevtoolsPanel;\nexport {\n  ReactQueryDevtools2 as ReactQueryDevtools,\n  ReactQueryDevtoolsPanel2 as ReactQueryDevtoolsPanel\n};\n//# sourceMappingURL=index.js.map","import { ReactNode } from \"react\";\nimport {\n  QueryClient,\n  QueryClientProvider,\n  useQuery,\n  useQueryClient,\n  useMutation,\n  useIsRestoring,\n  onlineManager\n} from \"@tanstack/react-query\";\nimport { PersistQueryClientProvider } from \"@tanstack/react-query-persist-client\";\nimport { ReactQueryDevtools } from \"@tanstack/react-query-devtools\";\n\nexport function createTanStackQueryReact(queryClient: QueryClient) {\n  function Provider({ children }: { children: ReactNode }) {\n    return (\n      <QueryClientProvider client={queryClient}>\n        <ReactQueryDevtools />\n        {children}\n      </QueryClientProvider>\n    );\n  }\n\n  return {\n    Provider,\n    useQueryClient,\n    useQuery,\n    useMutation,\n    useIsRestoring,\n    onlineManager\n  };\n}\n","import { YZCanvasContext } from \"../canvas\";\nimport { type SVGParsedPathData } from \"../../../svg/\";\nimport { maxDotNumber, angle } from \"@zyzgroup/core-common\";\n\nexport type LOptions = {\n  x?: number;\n  y?: number;\n  toX?: number;\n  toY?: number;\n};\n\n// Line 基类，使用绝对值\nexport class L {\n  x: number;\n  y: number;\n  toX: number;\n  toY: number;\n\n  constructor(options?: LOptions) {\n    this.x = maxDotNumber(options?.x || 0, 2);\n    this.y = maxDotNumber(options?.y || 0, 2);\n    this.toX = maxDotNumber(options?.toX || 0, 2);\n    this.toY = maxDotNumber(options?.toY || 0, 2);\n  }\n\n  // 使用绝对值!\n  public toSVGPathData(): SVGParsedPathData[] {\n    return [[\"L\", this.toX, this.toY]];\n  }\n\n  // 使用绝对值!\n  public toCanvasContext(ctx: YZCanvasContext) {\n    ctx.lineTo(this.toX, this.toY);\n  }\n\n  public getBoundingClientRect(e = 2) {\n    const lineAngle = angle(this.x, this.y, this.toX, this.toY);\n    if (lineAngle === 0) {\n      const minX = Math.min(this.x, this.toX);\n      const minY = Math.min(this.y, this.toY);\n      const maxX = Math.max(this.x, this.toX);\n      const maxY = Math.max(this.y, this.toY);\n      return {\n        x: minX,\n        y: minY,\n        width: maxX - minX,\n        height: maxY - minY\n      };\n    } else {\n      const sin = Math.sin(lineAngle);\n      const cos = Math.cos(lineAngle);\n      const x1r = cos * this.x - sin * this.y;\n      const x2r = cos * this.toX - sin * this.toY;\n      const y1r = cos * this.y + sin * this.x;\n      const y2r = cos * this.toY + sin * this.toX;\n      return {\n        x: maxDotNumber(Math.min(x1r, x2r), e),\n        y: maxDotNumber(Math.min(y1r, y2r), e),\n        width: maxDotNumber(Math.max(x1r, x2r) - Math.min(x1r, x2r), e),\n        height: maxDotNumber(Math.max(y1r, y2r) - Math.min(y1r, y2r), e)\n      };\n    }\n  }\n\n  // t (0.0 to 1.0) : The fraction of the overall duration of the path\n  public interpolate(t: number): { x: number; y: number } {\n    return {\n      x: this.x + t * (this.toX - this.x),\n      y: this.y + t * (this.toY - this.y)\n    };\n  }\n\n  public intersection(line: L): { x: number; y: number } | null {\n    const x1 = this.x;\n    const y1 = this.y;\n    const x4 = line.toX;\n    const y4 = line.toY;\n    const dx1 = this.toX - x1;\n    const dx2 = line.x - x4;\n    if (!dx1 && !dx2) {\n      return null;\n    }\n    const m1 = (this.toY - y1) / dx1;\n    const m2 = (line.y - y4) / dx2;\n    if (!dx1) {\n      // infinity\n      return { x: x1, y: m2 * (x1 - x4) + y4 };\n    } else if (!dx2) {\n      // infinity\n      return { x: x4, y: m1 * (x4 - x1) + y1 };\n    }\n    const xInt = (-m2 * x4 + y4 + m1 * x1 - y1) / (m1 - m2);\n    const yInt = m1 * (xInt - x1) + y1;\n    if (isNaN(xInt) || isNaN(yInt)) {\n      return null;\n    }\n    return { x: xInt, y: yInt };\n  }\n}\n\nexport default L;\n","import { maxDotNumber } from \"@zyzgroup/core-common\";\nimport { YZCanvasContext } from \"../canvas\";\nimport { type SVGParsedPathData } from \"../../../svg/\";\nimport { L, LOptions } from \"./L\";\n\nexport type ArcOptions = {\n  rx: number; // x方向的半径\n  ry: number; // y方向的半径\n  xAxisRotate?: number; // phi 绕着x轴旋转的角度\n  largeArcFlag?: number; // fa 0小弧 1大弧\n  sweepFlag?: number; // fs 0逆时针方向 1顺时针方向\n  toX: number;\n  toY: number;\n} & LOptions;\n\nexport class Arc extends L {\n  public rx: number;\n  public ry: number;\n  public xAxisRotate: number;\n  public largeArcFlag: number;\n  public sweepFlag: number;\n\n  constructor(options: ArcOptions) {\n    super(options);\n    this.rx = maxDotNumber(options.rx, 2);\n    this.ry = maxDotNumber(options.ry, 2);\n    this.xAxisRotate =\n      typeof options?.xAxisRotate == \"number\" ? options?.xAxisRotate : 0;\n    this.largeArcFlag =\n      typeof options?.largeArcFlag == \"number\" ? options?.largeArcFlag : 1;\n    this.sweepFlag =\n      typeof options?.sweepFlag == \"number\" ? options?.sweepFlag : 1;\n  }\n\n  /// A rx,ry xAxisRotate LargeArcFlag,SweepFlag x,y\n  public toSVGPathData(): SVGParsedPathData[] {\n    return [\n      [\n        \"A\",\n        this.rx,\n        this.ry,\n        this.xAxisRotate,\n        this.largeArcFlag,\n        this.sweepFlag,\n        this.toX,\n        this.toY\n      ]\n    ];\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext): void {\n    const [cx, cy, rx, ry, xAxisRotate, startAngle, endAngle] = this.convert(\n      this.x,\n      this.y,\n      this.toX,\n      this.toY,\n      this.rx,\n      this.ry,\n      this.xAxisRotate,\n      this.largeArcFlag,\n      this.sweepFlag\n    );\n    ctx.ellipse(\n      cx,\n      cy,\n      rx,\n      ry,\n      xAxisRotate,\n      startAngle,\n      endAngle,\n      !this.sweepFlag\n    );\n    // ctx.scale(this.rx, this.ry);\n    // ctx.arc(0, 0, 1, startAngle, endAngle, !this.sweepFlag);\n  }\n\n  private convert(\n    x1: number,\n    y1: number,\n    x2: number,\n    y2: number,\n    rx: number,\n    ry: number,\n    phi: number,\n    fa: number,\n    fs: number\n  ) {\n    const p = (phi / 180) * Math.PI;\n    const x_m = (x1 - x2) / 2;\n    const y_m = (y1 - y2) / 2;\n\n    const x1_d = Math.cos(p) * x_m + Math.sin(p) * y_m;\n    const y1_d = -Math.sin(p) * x_m + Math.cos(p) * y_m;\n\n    const radius_check_value =\n      (x1_d * x1_d) / (rx * rx) + (y1_d * y1_d) / (ry * ry);\n    if (radius_check_value > 1) {\n      // throw \"Radius is too small to build an arc!\";\n\n      // Check out radius correction in the W3C document\n      // https://www.w3.org/TR/SVG11/implnote.html#ArcCorrectionOutOfRangeRadii\n      const r_sq = Math.sqrt(radius_check_value);\n      rx = r_sq * rx;\n      ry = r_sq * ry;\n\n      throw new Error(\n        `Radii are too small to build an arc. Correcting them to ${rx}/${ry}.`\n      );\n    }\n\n    const sq = Math.sqrt(\n      (rx * rx * ry * ry - rx * rx * y1_d * y1_d - ry * ry * x1_d * x1_d) /\n        (rx * rx * y1_d * y1_d + ry * ry * x1_d * x1_d)\n    );\n\n    const s = fa != fs ? 1 : -1;\n    const cx_d = (s * sq * rx * y1_d) / ry;\n    const cy_d = (s * sq * -ry * x1_d) / rx;\n\n    const x_m_d = (x1 + x2) / 2;\n    const y_m_d = (y1 + y2) / 2;\n    const cx = Math.cos(p) * cx_d - Math.sin(p) * cy_d + x_m_d;\n    const cy = Math.sin(p) * cx_d + Math.cos(p) * cy_d + y_m_d;\n\n    const vectorAngle = (ux: number, uy: number, vx: number, vy: number) =>\n      (ux * vy >= uy * vx ? 1 : -1) *\n      Math.acos(\n        (ux * vx + uy * vy) /\n          (Math.sqrt(ux * ux + uy * uy) * Math.sqrt(vx * vx + vy * vy))\n      );\n    const theta_1 = vectorAngle(1, 0, x1 - cx, y1 - cy) - p;\n    const delta_theta = vectorAngle(x1 - cx, y1 - cy, x2 - cx, y2 - cy);\n\n    return [cx, cy, rx, ry, p, theta_1, theta_1 + delta_theta];\n  }\n}\n\nexport default Arc;\n","import { maxDotNumber } from \"@zyzgroup/core-common\";\nimport { YZCanvasContext } from \"../canvas\";\nimport { type SVGParsedPathData } from \"../../../svg/\";\nimport { L, LOptions } from \"./L\";\n\nexport type QuadraticBezierOptions = {\n  cx: number;\n  cy: number;\n  toX?: number;\n  toY?: number;\n  isLineThrough?: boolean;\n} & LOptions;\n\nexport class QuadraticBezier extends L {\n  public cx: number;\n  public cy: number;\n  public isLineThrough: boolean;\n\n  constructor(options: QuadraticBezierOptions) {\n    super(options);\n    this.cx = maxDotNumber(options.cx, 2);\n    this.cy = maxDotNumber(options.cy, 2);\n    this.isLineThrough =\n      typeof options.isLineThrough == \"boolean\" ? options.isLineThrough : false;\n  }\n\n  /// Q cx,cy x,y\n  /// T x,y\n  public toSVGPathData(): SVGParsedPathData[] {\n    if (this.isLineThrough) {\n      const c1x = this.cx * 2 - (this.x + this.toX) / 2;\n      const c1y = this.cy * 2 - (this.y + this.toY) / 2;\n      return [[\"Q\", c1x, c1y, this.toX, this.toY]];\n    } else {\n      return [[\"Q\", this.cx, this.cy, this.toX, this.toY]];\n    }\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext) {\n    if (this.isLineThrough) {\n      const c1x = this.cx * 2 - (this.x + this.toX) / 2;\n      const c1y = this.cy * 2 - (this.y + this.toY) / 2;\n      ctx.quadraticCurveTo(c1x, c1y, this.toX, this.toY);\n    } else {\n      ctx.quadraticCurveTo(this.cx, this.cy, this.toX, this.toY);\n    }\n  }\n\n  public getBoundingClientRect(e = 2) {\n    const xArr = [this.x, this.toX];\n    const yArr = [this.y, this.toY];\n    let a, b, c, t;\n    for (let i = 0; i < 2; ++i) {\n      a =\n        i == 0\n          ? this.x - 2 * this.cx + this.toX\n          : this.y - 2 * this.cy + this.toY;\n      b = i == 0 ? -2 * this.x + 2 * this.cx : -2 * this.y + 2 * this.cy;\n      c = i == 0 ? this.x : this.y;\n      if (Math.abs(a) > 1e-12) {\n        t = -b / (2 * a);\n        if (0 < t && t < 1) {\n          [xArr, yArr][i].push(a * t * t + b * t + c);\n        }\n      }\n    }\n    const min = { x: Math.min(0, ...xArr), y: Math.min(0, ...yArr) };\n    const max = { x: Math.max(0, ...xArr), y: Math.max(0, ...yArr) };\n    return {\n      x: maxDotNumber(min.x, e),\n      y: maxDotNumber(min.y, e),\n      width: maxDotNumber(max.x - min.x, e),\n      height: maxDotNumber(max.y - min.y, e)\n    };\n  }\n\n  // t (0.0 to 1.0) : The fraction of the overall duration of the path\n  public interpolate(t: number): { x: number; y: number } {\n    return {\n      x:\n        (1 - t) * (1 - t) * this.x +\n        2 * (1 - t) * t * this.cx +\n        t * t * this.toX,\n      y:\n        (1 - t) * (1 - t) * this.y +\n        2 * (1 - t) * t * this.cy +\n        t * t * this.toY\n    };\n  }\n}\n\nexport default QuadraticBezier;\n","import { maxDotNumber } from \"@zyzgroup/core-common\";\nimport { YZCanvasContext } from \"../canvas\";\nimport { type SVGParsedPathData } from \"../../../svg/\";\nimport { L, LOptions } from \"./L\";\n\nexport type CubicBezierOptions = {\n  c1x: number;\n  c1y: number;\n  c2x: number;\n  c2y: number;\n  toX?: number;\n  toY?: number;\n} & LOptions;\n\nexport class CubicBezier extends L {\n  public c1x: number;\n  public c1y: number;\n  public c2x: number;\n  public c2y: number;\n\n  constructor(options: CubicBezierOptions) {\n    super(options);\n    this.c1x = maxDotNumber(options.c1x, 2);\n    this.c1y = maxDotNumber(options.c1y, 2);\n    this.c2x = maxDotNumber(options.c2x, 2);\n    this.c2y = maxDotNumber(options.c2y, 2);\n  }\n\n  public clone(): CubicBezier {\n    return new CubicBezier({\n      x: this.x,\n      y: this.y,\n      c1x: this.c1x,\n      c1y: this.c1y,\n      c2x: this.c2x,\n      c2y: this.c2y,\n      toX: this.toX,\n      toY: this.toY\n    });\n  }\n\n  /// C c1x,c1y c2x,c2y x,y\n  /// S c2x,c2y x,y\n  public toSVGPathData(): SVGParsedPathData[] {\n    return [[\"C\", this.c1x, this.c1y, this.c2x, this.c2y, this.toX, this.toY]];\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext) {\n    ctx.bezierCurveTo(\n      this.c1x,\n      this.c1y,\n      this.c2x,\n      this.c2y,\n      this.toX,\n      this.toY\n    );\n  }\n\n  public getBoundingClientRect(e = 2) {\n    /// 一种方法\n    // const tvalues = [];\n    // const bounds: number[][] = [[], []];\n    // let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n    // for (let i = 0; i < 2; ++i) {\n    //   if (i === 0) {\n    //     b = 6 * this.x - 12 * this.c1x + 6 * this.c2x;\n    //     a = -3 * this.x + 9 * this.c1x - 9 * this.c2x + 3 * this.toX;\n    //     c = 3 * this.c1x - 3 * this.x;\n    //   } else {\n    //     b = 6 * this.y - 12 * this.c1y + 6 * this.c2y;\n    //     a = -3 * this.y + 9 * this.c1y - 9 * this.c2y + 3 * this.toY;\n    //     c = 3 * this.c1y - 3 * this.y;\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    //   b2ac = b * b - 4 * c * a;\n    //   if (b2ac < 0) {\n    //     continue;\n    //   }\n    //   sqrtb2ac = Math.sqrt(b2ac);\n    //   t1 = (-b + sqrtb2ac) / (2 * a);\n    //   if (t1 > 0 && t1 < 1) {\n    //     tvalues.push(t1);\n    //   }\n    //   t2 = (-b - sqrtb2ac) / (2 * a);\n    //   if (t2 > 0 && t2 < 1) {\n    //     tvalues.push(t2);\n    //   }\n    // }\n    // let j = tvalues.length;\n    // let mt;\n    // const jlen = j;\n    // while (j--) {\n    //   t = tvalues[j];\n    //   mt = 1 - t;\n    //   bounds[0][j] =\n    //     mt * mt * mt * this.x +\n    //     3 * mt * mt * t * this.c1x +\n    //     3 * mt * t * t * this.c2x +\n    //     t * t * t * this.toX;\n    //   bounds[1][j] =\n    //     mt * mt * mt * this.y +\n    //     3 * mt * mt * t * this.c1y +\n    //     3 * mt * t * t * this.c2y +\n    //     t * t * t * this.toY;\n    // }\n    // bounds[0][jlen] = this.x;\n    // bounds[1][jlen] = this.y;\n    // bounds[0][jlen + 1] = this.toX;\n    // bounds[1][jlen + 1] = this.toY;\n    // bounds[0].length = bounds[1].length = jlen + 2;\n    // const min = {\n    //   x: Math.min.apply(0, bounds[0]),\n    //   y: Math.min.apply(0, bounds[1])\n    // };\n    // const max = {\n    //   x: Math.max.apply(0, bounds[0]),\n    //   y: Math.max.apply(0, bounds[1])\n    // };\n    // return {\n    //   x: maxDotNumber(min.x, e),\n    //   y: maxDotNumber(min.y, e),\n    //   width: maxDotNumber(max.x - min.x, e),\n    //   height: maxDotNumber(max.y - min.y, e)\n    // };\n\n    /// 另一种方法\n    let a =\n      this.c2x - 2 * this.c1x + this.x - (this.toX - 2 * this.c2x + this.c1x);\n    let b = 2 * (this.c1x - this.x) - 2 * (this.c2x - this.c1x);\n    let c = this.x - this.c1x;\n    let t1 = (-b + Math.sqrt(b * b - 4 * a * c)) / 2 / a;\n    let t2 = (-b - Math.sqrt(b * b - 4 * a * c)) / 2 / a;\n    const y = [this.y, this.toY];\n    const x = [this.x, this.toX];\n    let dot;\n    const dots = [];\n    Math.abs(t1) > 1e12 && (t1 = 0.5);\n    Math.abs(t2) > 1e12 && (t2 = 0.5);\n    if (t1 >= 0 && t1 <= 1) {\n      dot = this.interpolate(t1);\n      x.push(dot.x);\n      y.push(dot.y);\n      dots.push({ X: dot.x, Y: dot.y });\n    }\n    if (t2 >= 0 && t2 <= 1) {\n      dot = this.interpolate(t2);\n      x.push(dot.x);\n      y.push(dot.y);\n      dots.push({ X: dot.x, Y: dot.y });\n    }\n    a = this.c2y - 2 * this.c1y + this.y - (this.toY - 2 * this.c2y + this.c1y);\n    b = 2 * (this.c1y - this.y) - 2 * (this.c2y - this.c1y);\n    c = this.y - this.c1y;\n    t1 = (-b + Math.sqrt(b * b - 4 * a * c)) / 2 / a;\n    t2 = (-b - Math.sqrt(b * b - 4 * a * c)) / 2 / a;\n    Math.abs(t1) > 1e12 && (t1 = 0.5);\n    Math.abs(t2) > 1e12 && (t2 = 0.5);\n    if (t1 >= 0 && t1 <= 1) {\n      dot = this.interpolate(t1);\n      x.push(dot.x);\n      y.push(dot.y);\n      dots.push({ X: dot.x, Y: dot.y });\n    }\n    if (t2 >= 0 && t2 <= 1) {\n      dot = this.interpolate(t2);\n      x.push(dot.x);\n      y.push(dot.y);\n      dots.push({ X: dot.x, Y: dot.y });\n    }\n    // remove duplicate dots\n    const dots2 = [];\n    const l = dots.length;\n    for (let i = 0; i < l; i++) {\n      for (let j = i + 1; j < l; j++) {\n        if (dots[i].X === dots[j].X && dots[i].Y === dots[j].Y) j = ++i;\n      }\n      dots2.push({ X: dots[i].X, Y: dots[i].Y });\n    }\n    const min = { x: Math.min(...x), y: Math.min(...y) };\n    const max = { x: Math.max(...x), y: Math.max(...y) };\n    return {\n      x: maxDotNumber(min.x, e),\n      y: maxDotNumber(min.y, e),\n      width: maxDotNumber(max.x - min.x, e),\n      height: maxDotNumber(max.y - min.y, e),\n      dots: dots2 // these are the extrema points\n    };\n  }\n\n  static base3(\n    t: number,\n    p1: number,\n    p2: number,\n    p3: number,\n    p4: number\n  ): number {\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\n  /**\n   * Based on snap.svg bezlen() function\n   * like getTotalLength(), approximate a cubic bézier length\n   * https://github.com/adobe-webplatform/Snap.svg/blob/master/dist/snap.svg.js#L5786\n   */\n  static bezlen(\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    z = 1 /// length: 0 ~ 1\n  ): number {\n    z = Math.max(0, Math.min(z, 1));\n    const z2 = z / 2;\n    const Tvalues = [\n      -0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699,\n      -0.9041, 0.9041, -0.9816, 0.9816\n    ];\n    const Cvalues = [\n      0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069,\n      0.1069, 0.0472, 0.0472\n    ];\n    let sum = 0;\n    /// 12 = Tvalues.length = Cvalues.length\n    for (let i = 0; i < 12; i++) {\n      const ct = z2 * Tvalues[i] + z2;\n      const xbase = CubicBezier.base3(ct, x1, x2, x3, x4);\n      const ybase = CubicBezier.base3(ct, y1, y2, y3, y4);\n      sum += Cvalues[i] * Math.sqrt(xbase * xbase + ybase * ybase);\n    }\n    return z2 * sum;\n  }\n\n  // returns length in pixels\n  public length(z = 1): number {\n    return CubicBezier.bezlen(\n      this.x,\n      this.y,\n      this.c1x,\n      this.c1y,\n      this.c2x,\n      this.c2y,\n      this.toX,\n      this.toY,\n      z\n    );\n  }\n\n  // Find dot coordinates on the given cubic bezier curve at the given length\n  public getPointAtSegmentLength(length: number) {\n    const t = this.getTatLen(length);\n    const t1 = 1 - t,\n      t13 = Math.pow(t1, 3),\n      t12 = Math.pow(t1, 2),\n      t2 = t * t,\n      t3 = t2 * t,\n      x =\n        t13 * this.x +\n        t12 * 3 * t * this.c1x +\n        t1 * 3 * t * t * this.c2x +\n        t3 * this.toX,\n      y =\n        t13 * this.y +\n        t12 * 3 * t * this.c1y +\n        t1 * 3 * t * t * this.c2y +\n        t3 * this.toY,\n      mx =\n        this.x +\n        2 * t * (this.c1x - this.x) +\n        t2 * (this.c2x - 2 * this.c1x + this.x),\n      my =\n        this.y +\n        2 * t * (this.c1y - this.y) +\n        t2 * (this.c2y - 2 * this.c1y + this.y),\n      nx =\n        this.c1x +\n        2 * t * (this.c2x - this.c1x) +\n        t2 * (this.toX - 2 * this.c2x + this.c1x),\n      ny =\n        this.c1y +\n        2 * t * (this.c2y - this.c1y) +\n        t2 * (this.toY - 2 * this.c2y + this.c1y),\n      ax = t1 * this.x + t * this.c1x,\n      ay = t1 * this.y + t * this.c1y,\n      cx = t1 * this.c2x + t * this.toX,\n      cy = t1 * this.c2y + t * this.toY,\n      alpha = 90 - (Math.atan2(mx - nx, my - ny) * 180) / Math.PI;\n    // (mx > nx || my < ny) && (alpha += 180);\n    return {\n      x: x, // x coordinate of the point\n      y: y, // y coordinate of the point\n      m: {\n        x: mx, // x coordinate of the left anchor\n        y: my // y coordinate of the left anchor\n      },\n      n: {\n        x: nx, // x coordinate of the right anchor\n        y: ny // y coordinate of the right anchor\n      },\n      start: {\n        x: ax, // x coordinate of the start of the curve\n        y: ay // y coordinate of the start of the curve\n      },\n      end: {\n        x: cx, //  x coordinate of the end of the curve\n        y: cy // y coordinate of the end of the curve\n      },\n      alpha: alpha // degree: angle of the curve derivative at the point\n    };\n  }\n\n  // 将 length 转为 t (0.0 to 1.0)\n  public getTatLen(length: number): number {\n    const x1 = this.x;\n    const y1 = this.y;\n    const x2 = this.c1x;\n    const y2 = this.c1y;\n    const x3 = this.c2x;\n    const y3 = this.c2y;\n    const x4 = this.toX;\n    const y4 = this.toY;\n    if (\n      length < 0 ||\n      CubicBezier.bezlen(x1, y1, x2, y2, x3, y3, x4, y4) < length\n    ) {\n      return 0;\n    }\n    const t = 1;\n    let step = t / 2;\n    let t2 = t - step;\n    let l = CubicBezier.bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n    while (Math.abs(l - length) > 0.01) {\n      step /= 2;\n      t2 += (l < length ? 1 : -1) * step;\n      l = CubicBezier.bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n    }\n    return t2;\n  }\n\n  // t (0.0 to 1.0) : The fraction of the overall duration of the path\n  public interpolate(t: number): { x: number; y: number } {\n    return {\n      x:\n        Math.pow(1 - t, 3) * this.x +\n        3 * Math.pow(1 - t, 2) * t * this.c1x +\n        3 * Math.pow(1 - t, 1) * Math.pow(t, 2) * this.c2x +\n        Math.pow(t, 3) * this.toX,\n      y:\n        Math.pow(1 - t, 3) * this.y +\n        3 * Math.pow(1 - t, 2) * t * this.c1y +\n        3 * Math.pow(1 - t, 1) * Math.pow(t, 2) * this.c2y +\n        Math.pow(t, 3) * this.toY\n    };\n  }\n}\n\nexport default CubicBezier;\n","import {\n  lerps,\n  maxDotNumber,\n  withinErrorMarginNumber,\n  angle,\n  distance\n} from \"@zyzgroup/core-common\";\nimport { Matrix } from \"../../../math\";\nimport { YZCanvasContext } from \"../canvas\";\nimport {\n  absolutizeSVGPath,\n  normalizeSVGPath,\n  parseSVGPath,\n  SVGPathDataToD,\n  type SVGParsedPathData,\n  a2c,\n  l2c,\n  q2c\n} from \"../../../svg/\";\nimport L from \"./L\";\nimport CubicBezier from \"./CubicBezier\";\nimport QuadraticBezier from \"./QuadraticBezier\";\nimport Arc from \"./Arc\";\n\n// 连续的曲线，在坐标系的绝对值\nexport class PathD {\n  // 在坐标系的绝对值\n  public prevPathX = 0;\n  public prevPathY = 0;\n\n  // 提高性能, 没更新时使用缓存值\n  private isUpdatedSVGPathData = true;\n  private isUpdatedSVGPathD = true;\n  private isUpdatedBoundingClientRect = true;\n  private isUpdatedPolymorphPoints = true;\n  private isUpdatedTotalLength = true;\n\n  public normalizedLines: CubicBezier[] = [];\n\n  // d = \"M0,0\"\n  // d = [['C',1,2,3,4,5,6]]\n  constructor(d?: string | SVGParsedPathData[]) {\n    const data = typeof d == \"string\" ? parseSVGPath(d) : d || [];\n    /// paths 只包含 M 或 C 语句\n    const paths = normalizeSVGPath(absolutizeSVGPath(data));\n    for (let i = 0, count = paths.length; i < count; i++) {\n      const path = paths[i];\n      const command = path[0];\n      if (command == \"M\") {\n        this.prevPathX = path[1];\n        this.prevPathY = path[2];\n      } else {\n        this._appendLine(\n          new CubicBezier({\n            x: this.prevPathX,\n            y: this.prevPathY,\n            c1x: path[1],\n            c1y: path[2],\n            c2x: path[3],\n            c2y: path[4],\n            toX: path[5],\n            toY: path[6]\n          })\n        );\n      }\n    }\n  }\n\n  private _appendLine(line: L) {\n    this.isUpdatedSVGPathData = true;\n    this.isUpdatedSVGPathD = true;\n    this.isUpdatedBoundingClientRect = true;\n    this.isUpdatedPolymorphPoints = true;\n    this.isUpdatedTotalLength = true;\n    if (line instanceof Arc) {\n      const curves = a2c(\n        this.prevPathX,\n        this.prevPathY,\n        line.toX,\n        line.toY,\n        line.largeArcFlag,\n        line.sweepFlag,\n        line.rx,\n        line.ry,\n        line.xAxisRotate\n      );\n      curves.forEach((curve) => {\n        const [x0, y0, x1, y1, x2, y2, x, y] = curve;\n        this.normalizedLines.push(\n          new CubicBezier({\n            x: this.prevPathX,\n            y: this.prevPathY,\n            c1x: x1,\n            c1y: y1,\n            c2x: x2,\n            c2y: y2,\n            toX: x,\n            toY: y\n          })\n        );\n        this.prevPathX = x;\n        this.prevPathY = y;\n      });\n      return;\n    }\n    if (line instanceof CubicBezier) {\n      this.normalizedLines.push(line.clone());\n      this.prevPathX = line.toX;\n      this.prevPathY = line.toY;\n      return;\n    }\n    let x1, y1, x2, y2, toX, toY;\n    if (line instanceof QuadraticBezier) {\n      [x1, y1, x2, y2, toX, toY] = q2c(\n        this.prevPathX,\n        this.prevPathY,\n        line.cx,\n        line.cy,\n        line.toX,\n        line.toY\n      );\n    } else {\n      // L\n      [x1, y1, x2, y2, toX, toY] = l2c(\n        this.prevPathX,\n        this.prevPathY,\n        line.toX,\n        line.toY\n      );\n    }\n    this.normalizedLines.push(\n      new CubicBezier({\n        x: this.prevPathX,\n        y: this.prevPathY,\n        c1x: x1,\n        c1y: y1,\n        c2x: x2,\n        c2y: y2,\n        toX: toX,\n        toY: toY\n      })\n    );\n    this.prevPathX = toX;\n    this.prevPathY = toY;\n  }\n\n  public static fromPolymorphPoints(points: number[]): PathD {\n    const d = new PathD();\n    const count = points.length;\n    if (count) {\n      d.prevPathX = points[0];\n      d.prevPathY = points[1];\n      for (let k = 2; k + 5 < count; k += 6) {\n        d._appendLine(\n          new CubicBezier({\n            x: d.prevPathX,\n            y: d.prevPathY,\n            c1x: points[k],\n            c1y: points[k + 1],\n            c2x: points[k + 2],\n            c2y: points[k + 3],\n            toX: points[k + 4],\n            toY: points[k + 5]\n          })\n        );\n      }\n    }\n    return d;\n  }\n\n  public static fromLines(lines: L[]): PathD {\n    const d = new PathD();\n    const count = lines.length;\n    if (count) {\n      d.prevPathX = lines[0].x;\n      d.prevPathY = lines[0].y;\n      for (let i = 0; i < count; i++) {\n        d._appendLine(lines[i]);\n      }\n    }\n    return d;\n  }\n\n  public clone(): PathD {\n    return PathD.fromLines(this.normalizedLines);\n  }\n\n  // 在坐标系的绝对值\n  private cachedSVGPathData: SVGParsedPathData[] = [];\n  public toSVGPathData(): SVGParsedPathData[] {\n    if (this.isUpdatedSVGPathData) {\n      const data: SVGParsedPathData[] = [];\n      for (let i = 0, count = this.normalizedLines.length; i < count; i++) {\n        const line = this.normalizedLines[i];\n        if (i == 0) {\n          data.push([\"M\", line.x, line.y]);\n        }\n        data.push(...line.toSVGPathData());\n      }\n      // data.push([\"z\"]);\n      this.cachedSVGPathData = data;\n      this.isUpdatedSVGPathData = false;\n    }\n    return this.cachedSVGPathData;\n  }\n\n  // 外部使用\n  private cachedSVGPathD = \"\";\n  public toSVGPathD(): string {\n    if (this.isUpdatedSVGPathD) {\n      this.cachedSVGPathD = SVGPathDataToD(this.toSVGPathData());\n      this.isUpdatedSVGPathD = false;\n    }\n    return this.cachedSVGPathD;\n  }\n\n  // 外部使用\n  public toCanvasContext(ctx: YZCanvasContext) {\n    ctx.beginPath();\n    for (let i = 0, count = this.normalizedLines.length; i < count; i++) {\n      const line = this.normalizedLines[i];\n      if (i == 0) {\n        ctx.moveTo(line.x, line.y);\n      }\n      line.toCanvasContext(ctx);\n    }\n    // ctx.closePath();\n  }\n\n  // 外部使用\n  // 相对坐标系原点 - 坐标系没有考虑 transform : translate rotate scale\n  private cachedBoundingClientRect = {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  };\n  public getBoundingClientRect(dot = 2) {\n    if (this.isUpdatedBoundingClientRect) {\n      const X: number[] = [];\n      const Y: number[] = [];\n      this.normalizedLines.forEach((l) => {\n        const rect = l.getBoundingClientRect(dot);\n        X.push(rect.x, rect.x + rect.width);\n        Y.push(rect.y, rect.y + rect.height);\n      });\n      if (X.length == 0 || Y.length == 0) {\n        this.cachedBoundingClientRect = { x: 0, y: 0, width: 0, height: 0 };\n      } else {\n        const xmin = Math.min(...X);\n        const ymin = Math.min(...Y);\n        const xmax = Math.max(...X);\n        const ymax = Math.max(...Y);\n        this.cachedBoundingClientRect = {\n          x: maxDotNumber(xmin, dot),\n          y: maxDotNumber(ymin, dot),\n          width: maxDotNumber(xmax - xmin, dot),\n          height: maxDotNumber(ymax - ymin, dot)\n        };\n      }\n      this.isUpdatedBoundingClientRect = false;\n    }\n    return this.cachedBoundingClientRect;\n  }\n\n  // 相对坐标系原点 - 坐标系没有考虑 transform : translate rotate scale\n  public getBoundingClientRectCenter(dot = 2) {\n    const rect = this.getBoundingClientRect(dot);\n    return {\n      x: maxDotNumber(rect.x + rect.width * 0.5, dot),\n      y: maxDotNumber(rect.y + rect.height * 0.5, dot)\n    };\n  }\n\n  // 通过 DrawContext shape.m 获得 新的 PathD\n  public transform(options: {\n    m?: Matrix | DOMMatrix;\n    x?: number;\n    y?: number;\n    centerX?: number;\n    centerY?: number;\n    degree?: number;\n    scaleX?: number;\n    scaleY?: number;\n  }): PathD {\n    let m: Matrix | DOMMatrix;\n    if (options.m) {\n      m = options.m;\n    } else {\n      // 移动的是坐标系\n      // the order of these are important\n      m = new Matrix();\n      m.translate(options.x || 0, options.y || 0);\n      m.rotate(options.degree || 0, options.centerX, options.centerY);\n      m.scale(\n        options.scaleX || 1,\n        options.scaleY || 1,\n        options.centerX,\n        options.centerY\n      );\n    }\n    if (!m.isIdentity) {\n      return PathD.fromLines(\n        this.normalizedLines.map((l) => {\n          let x = l.x;\n          let y = l.y;\n          let c1x = l.c1x;\n          let c1y = l.c1y;\n          let c2x = l.c2x;\n          let c2y = l.c2y;\n          let toX = l.toX;\n          let toY = l.toY;\n          ({ x: x, y: y } = m.transformPoint({ x: x, y: y }));\n          ({ x: c1x, y: c1y } = m.transformPoint({ x: c1x, y: c1y }));\n          ({ x: c2x, y: c2y } = m.transformPoint({ x: c2x, y: c2y }));\n          ({ x: toX, y: toY } = m.transformPoint({ x: toX, y: toY }));\n          return new CubicBezier({ x, y, c1x, c1y, c2x, c2y, toX, toY });\n        })\n      );\n    } else {\n      return this.clone();\n      // return this;\n    }\n  }\n\n  // returns length in pixels\n  private cachedTotalLength?: number;\n  public getTotalLength(): number {\n    if (\n      !(typeof this.cachedTotalLength == \"number\") ||\n      this.isUpdatedTotalLength\n    ) {\n      this.cachedTotalLength = Math.round(\n        this.normalizedLines.reduce((acc, l) => (acc += l.length()), 0)\n      ); // 实际测试值：1718.289461119151\n      // const el = createSvgPath(this.toSVGPathD());\n      // return el.getTotalLength(); // 实际测试值：1718.2906494140625\n      this.isUpdatedTotalLength = false;\n    }\n    return this.cachedTotalLength;\n  }\n\n  // 获取插值方法1\n  public getPointAtLength(length: number): {\n    x: number;\n    y: number;\n    alpha: number; // degree: angle of derivative\n  } {\n    let len = 0;\n    let l = 0;\n    const linesCount = this.normalizedLines.length;\n    for (let i = 0; i < linesCount; i++) {\n      const p = this.normalizedLines[i];\n      l = p.length();\n      if (len + l >= length) {\n        return p.getPointAtSegmentLength(length - len);\n      }\n      len += l;\n    }\n    return this.normalizedLines[linesCount - 1].getPointAtSegmentLength(l); // 实际测试值：{x: 69.12001660070015, y: 139.8368628028231}\n    // const el = createSvgPath(this.toSVGPathD());\n    // return el.getPointAtLength(length); // 实际测试值：{x: 69.12151336669922, y: 139.8350830078125}\n  }\n\n  // 获取插值方法2 t (0.0 to 1.0) : The fraction of the overall duration of the path\n  public interpolate(t: number): { x: number; y: number } {\n    const linesCount = this.normalizedLines.length;\n    if (linesCount === 0) {\n      return { x: 0, y: 0 };\n    } else if (linesCount === 1) {\n      return this.normalizedLines[0].interpolate(t);\n    } else {\n      let ratio = t * linesCount;\n      let path = this.normalizedLines[0];\n      ratio--;\n      if (ratio > 1) {\n        for (let i = 1; i < linesCount; i++) {\n          path = this.normalizedLines[i];\n          if (ratio > 1) {\n            ratio -= 1;\n          } else {\n            break;\n          }\n        }\n      }\n      return path.interpolate(ratio);\n    }\n  }\n\n  public getSubPathD(\n    fromLength: number,\n    toLength: number,\n    margin = 1e-6\n  ): PathD {\n    const p = this.getSubPathDAtLength(toLength, true);\n    if (withinErrorMarginNumber(margin)(fromLength, 0)) {\n      return p;\n    } else {\n      return p.getSubPathDAtLength(fromLength, false);\n    }\n  }\n\n  private getSubPathDAtLength(\n    length: number, // 以 length 为点 一分为二\n    getStart = false // 返回 一分为二的 前面一部分 还是 后面一部分\n  ): PathD {\n    const sp = new PathD();\n    let len = 0;\n    let isReached = false;\n    for (let i = 0, ii = this.normalizedLines.length; i < ii; i++) {\n      const line = this.normalizedLines[i];\n      if (i == 0) {\n        sp.prevPathX = line.x;\n        sp.prevPathY = line.y;\n      }\n      const l = line.length();\n      if (len + l > length && !isReached) {\n        // 从 0 到 length 的 开头部分\n        isReached = true;\n        const point = line.getPointAtSegmentLength(length - len);\n        sp._appendLine(\n          new CubicBezier({\n            x: sp.prevPathX,\n            y: sp.prevPathY,\n            c1x: point.start.x,\n            c1y: point.start.y,\n            c2x: point.m.x,\n            c2y: point.m.y,\n            toX: point.x,\n            toY: point.y\n          })\n        );\n        if (getStart) {\n          return sp;\n        }\n        // 从 length 到 end 的 结尾部分\n        sp.normalizedLines = [];\n        sp._appendLine(\n          new CubicBezier({\n            x: sp.prevPathX,\n            y: sp.prevPathY,\n            c1x: point.n.x,\n            c1y: point.n.y,\n            c2x: point.end.x,\n            c2y: point.end.y,\n            toX: line.toX,\n            toY: line.toY\n          })\n        );\n        len += l;\n        continue;\n      }\n      sp._appendLine(line);\n      len += l;\n    }\n    return sp;\n  }\n\n  public closestPoint(\n    pointX: number,\n    pointY: number\n  ): {\n    point: {\n      x: number;\n      y: number;\n    };\n    rotation: number;\n    distance: number;\n  } {\n    const pathLength = this.getTotalLength();\n    let best = { x: pointX, y: pointY };\n    let bestLength = 0;\n    let bestDistance = Infinity;\n    let precision = 8;\n\n    // linear scan for coarse approximation\n    for (\n      let scanLength = 0;\n      scanLength <= pathLength;\n      scanLength += precision\n    ) {\n      const scan = this.getPointAtLength(scanLength);\n      const scanDistance =\n        (pointX - scan.x) * (pointX - scan.x) +\n        (pointY - scan.y) * (pointY - scan.y);\n      if (scanDistance < bestDistance) {\n        best = scan;\n        bestLength = scanLength;\n        bestDistance = scanDistance;\n      }\n    }\n\n    // binary search for precise estimate\n    precision /= 2;\n    while (precision > 0.5) {\n      const beforeLength = bestLength - precision;\n      const before = this.getPointAtLength(beforeLength);\n      const beforeDistance =\n        (pointX - before.x) * (pointX - before.x) +\n        (pointY - before.y) * (pointY - before.y);\n      const afterLength = bestLength + precision;\n      const after = this.getPointAtLength(afterLength);\n      const afterDistance =\n        (pointX - after.x) * (pointX - after.x) +\n        (pointY - after.y) * (pointY - after.y);\n      if (beforeLength >= 0 && beforeDistance < bestDistance) {\n        best = before;\n        bestLength = beforeLength;\n        bestDistance = beforeDistance;\n      } else if (afterLength <= pathLength && afterDistance < bestDistance) {\n        best = after;\n        bestLength = afterLength;\n        bestDistance = afterDistance;\n      } else {\n        precision /= 2;\n      }\n    }\n\n    const p = this.getPointAtLength(\n      bestLength + (bestLength === pathLength ? -0.1 : 0.1)\n    );\n\n    return {\n      point: best,\n      rotation:\n        bestLength >= pathLength\n          ? angle(p.x, p.y, best.x, best.y)\n          : angle(best.x, best.y, p.x, p.y),\n      distance: Math.sqrt(bestDistance)\n    };\n  }\n\n  // 获得 Polymorph 要用的所有的点\n  private cachedPolymorphPoints: number[] = [];\n  public getPolymorphPoints(): number[] {\n    if (this.isUpdatedPolymorphPoints) {\n      if (this.normalizedLines.length) {\n        const firstLine = this.normalizedLines[0];\n        this.cachedPolymorphPoints = [firstLine.x, firstLine.y].concat(\n          this.normalizedLines.reduce(\n            (acc, l) => acc.concat([l.c1x, l.c1y, l.c2x, l.c2y, l.toX, l.toY]),\n            [] as number[]\n          )\n        );\n      }\n      this.isUpdatedPolymorphPoints = false;\n    }\n    return [...this.cachedPolymorphPoints];\n  }\n\n  public getPolymorphPointsPerimeter(): number {\n    let p = 0;\n    const pts = this.getPolymorphPoints();\n    const n = pts.length;\n    if (n) {\n      let x2 = pts[n - 2];\n      let y2 = pts[n - 1];\n      for (let i = 0; i < n; i += 6) {\n        p += distance(pts[i], pts[i + 1], x2, y2);\n        x2 = pts[i];\n        y2 = pts[i + 1];\n      }\n    }\n    return Math.floor(p);\n  }\n\n  // 扩充 PolymorphPoints 到对应数量的点，返回新 PathD\n  public expendToPolymorphPoints(maxPoints: number[]): PathD {\n    const maxCount = maxPoints.length;\n    const ns = this.getPolymorphPoints();\n    const nsLength = ns.length;\n    if (nsLength) {\n      const points: SVGParsedPathData[] = [];\n      let needAddedCount = maxCount - nsLength;\n      const ratio = Math.ceil(maxCount / nsLength);\n      points.push([\"M\", ns[0], ns[1]]);\n      let k = 2;\n      while (k + 5 <= nsLength - 1) {\n        const c1x = ns[k++];\n        const c1y = ns[k++];\n        const c2x = ns[k++];\n        const c2y = ns[k++];\n        const x = ns[k++];\n        const y = ns[k++];\n        points.push([\"C\", c1x, c1y, c2x, c2y, x, y]);\n        let f = 0;\n        while (f < ratio && needAddedCount > 0) {\n          points.push([\"C\", x, y, x, y, x, y]);\n          needAddedCount -= 6;\n          f++;\n        }\n      }\n      return new PathD(points);\n    } else {\n      return PathD.fromPolymorphPoints(maxPoints);\n    }\n  }\n\n  // 返回 从 leftPathD 到 rightPathD 的 插值函数\n  public static getInterpolator(\n    left: PathD,\n    right: PathD\n  ): (\n    t: number // t (0.0 to 1.0)\n  ) => PathD {\n    return (t: number) => {\n      const m = withinErrorMarginNumber(Number.EPSILON);\n      if (m(t, 0)) {\n        return left.clone();\n      }\n      if (m(t, 1)) {\n        return right.clone();\n      }\n      return PathD.fromPolymorphPoints(\n        lerps(left.getPolymorphPoints(), right.getPolymorphPoints(), t).map(\n          (n) => maxDotNumber(n, 2)\n        )\n      );\n    };\n  }\n}\n\nexport default PathD;\n","// Unpack entities lookup where the numbers are in radix 32 to reduce the size\n// entity mapping courtesy of tinymce\nconst namedEntities = createNamedToNumberedLookup(\n  \"50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,\" +\n    \"5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,\" +\n    \"5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,\" +\n    \"5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,\" +\n    \"68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,\" +\n    \"6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,\" +\n    \"6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,\" +\n    \"75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,\" +\n    \"7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,\" +\n    \"7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,\" +\n    \"sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,\" +\n    \"st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,\" +\n    \"t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,\" +\n    \"tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,\" +\n    \"u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,\" +\n    \"81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,\" +\n    \"8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,\" +\n    \"8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,\" +\n    \"8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,\" +\n    \"8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,\" +\n    \"nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,\" +\n    \"rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,\" +\n    \"Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,\" +\n    \"80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,\" +\n    \"811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro\",\n  32\n);\n\nfunction createNamedToNumberedLookup(itemsString: string, radix = 10) {\n  const lookup = {} as Record<string, string>;\n  const items = itemsString.split(\",\");\n  // Map from named to numbered entities.\n  for (let i = 0; i < items.length; i += 2) {\n    const entity = \"&\" + items[i + 1] + \";\";\n    const base10 = parseInt(items[i], radix);\n    lookup[entity] = \"&#\" + base10 + \";\";\n  }\n  // FF and IE need to create a regex from hex values ie &nbsp; == \\xa0\n  lookup[\"\\\\xa0\"] = \"&#160;\";\n  return lookup;\n}\n\nfunction format(str: string, args: Record<string, string | number>) {\n  const keys = Object.keys(args);\n  for (let i = 0; i < keys.length; i++) {\n    str = str.replace(\n      new RegExp(\"{\" + keys[i] + \"}\", \"gi\"),\n      \"\" + args[keys[i]]\n    );\n  }\n  return str;\n}\n\nfunction randomString(holder: { [x: string]: any }) {\n  let randomstring, i;\n  if (!holder) {\n    throw new Error(\n      \"cannot create a random attribute name for an undefined object\"\n    );\n  }\n  const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\";\n  randomstring = \"\";\n  do {\n    randomstring = \"\";\n    for (i = 0; i < 12; i++) {\n      randomstring += chars[Math.floor(Math.random() * chars.length)];\n    }\n  } while (holder[randomstring]);\n  return randomstring;\n}\n\n// helper function to map canvas-textAlign to svg-textAnchor\nfunction getTextAnchor(textAlign: string) {\n  // TODO: support rtl languages\n  const mapping = {\n    left: \"start\",\n    right: \"end\",\n    center: \"middle\",\n    start: \"start\",\n    end: \"end\"\n  } as Record<string, string>;\n  return mapping[textAlign] || mapping.start;\n}\n\n// helper function to map canvas-textBaseline to svg-dominantBaseline\nfunction getDominantBaseline(textBaseline: string) {\n  // INFO: not supported in all browsers\n  const mapping = {\n    alphabetic: \"alphabetic\",\n    hanging: \"hanging\",\n    top: \"text-before-edge\",\n    bottom: \"text-after-edge\",\n    middle: \"central\"\n  } as Record<string, string>;\n  return mapping[textBaseline] || mapping.alphabetic;\n}\n\n// Some basic mappings for attributes and default values.\nconst STYLES: Record<\n  string,\n  {\n    svgAttr?: string; // corresponding svg attribute\n    canvas?: string | number | string[] | number[]; // canvas default\n    svg?: string | number | null; // svg default\n    apply?: string; // apply on stroke() or fill()\n  }\n> = {\n  strokeStyle: {\n    svgAttr: \"stroke\",\n    canvas: \"#000000\",\n    svg: \"none\",\n    apply: \"stroke\"\n  },\n  fillStyle: {\n    svgAttr: \"fill\",\n    canvas: \"#000000\",\n    svg: null, // svg default is black, but we need to special case this to handle canvas stroke without fill\n    apply: \"fill\"\n  },\n  lineCap: {\n    svgAttr: \"stroke-linecap\",\n    canvas: \"butt\",\n    svg: \"butt\",\n    apply: \"stroke\"\n  },\n  lineJoin: {\n    svgAttr: \"stroke-linejoin\",\n    canvas: \"miter\",\n    svg: \"miter\",\n    apply: \"stroke\"\n  },\n  miterLimit: {\n    svgAttr: \"stroke-miterlimit\",\n    canvas: 10,\n    svg: 4,\n    apply: \"stroke\"\n  },\n  lineWidth: {\n    svgAttr: \"stroke-width\",\n    canvas: 1,\n    svg: 1,\n    apply: \"stroke\"\n  },\n  globalAlpha: {\n    svgAttr: \"opacity\",\n    canvas: 1,\n    svg: 1,\n    apply: \"fill stroke\"\n  },\n  font: {\n    // font converts to multiple svg attributes, there is custom logic for this\n    canvas: \"10px sans-serif\"\n  },\n  shadowColor: {\n    canvas: \"#000000\"\n  },\n  shadowOffsetX: {\n    canvas: 0\n  },\n  shadowOffsetY: {\n    canvas: 0\n  },\n  shadowBlur: {\n    canvas: 0\n  },\n  textAlign: {\n    canvas: \"start\"\n  },\n  textBaseline: {\n    canvas: \"alphabetic\"\n  },\n  lineDash: {\n    svgAttr: \"stroke-dasharray\",\n    canvas: [],\n    svg: null,\n    apply: \"stroke\"\n  },\n  lineDashOffset: {\n    svgAttr: \"stroke-dashoffset\",\n    canvas: 0,\n    svg: 0,\n    apply: \"stroke\"\n  }\n};\n\nexport class CustomCanvasGradient {\n  __root: SVGElement;\n  __ctx: CustomCanvasContext;\n  constructor(gradientNode: SVGElement, ctx: CustomCanvasContext) {\n    this.__root = gradientNode;\n    this.__ctx = ctx;\n  }\n\n  /**\n   * Adds a color stop to the gradient root\n   */\n  addColorStop(offset: number, color: string) {\n    const stop = this.__ctx.__createElement(\"stop\");\n    stop.setAttribute(\"offset\", \"\" + offset);\n    if (color.indexOf(\"rgba\") !== -1) {\n      // separate alpha value, since webkit can't handle it\n      const regex =\n        /rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?\\.?\\d*)\\s*\\)/gi;\n      const matches = regex.exec(color);\n      if (matches) {\n        stop.setAttribute(\n          \"stop-color\",\n          format(\"rgb({r},{g},{b})\", {\n            r: matches[1],\n            g: matches[2],\n            b: matches[3]\n          })\n        );\n        stop.setAttribute(\"stop-opacity\", matches[4]);\n      }\n    } else {\n      stop.setAttribute(\"stop-color\", color);\n    }\n    this.__root.appendChild(stop);\n  }\n}\n\nexport class CustomCanvasPattern {\n  __root: SVGElement;\n  __ctx: CustomCanvasContext;\n  constructor(pattern: SVGElement, ctx: CustomCanvasContext) {\n    this.__root = pattern;\n    this.__ctx = ctx;\n  }\n}\n\n/**\n * The mock canvas context\n */\nexport class CustomCanvasContext {\n  [index: keyof typeof STYLES]: any;\n\n  __document: Document = document;\n  __canvas: HTMLCanvasElement;\n  __ctx: CanvasRenderingContext2D;\n  width: number;\n  height: number;\n  __styleStack: Record<string, any>[];\n  __groupStack: SVGElement[];\n  __rootSVG: SVGElement;\n  __ids: Record<string, string>;\n  __SVGdefs: SVGDefsElement;\n  __currentElement: SVGElement;\n  __currentElementsToStyle: {\n    element: SVGElement;\n    children: SVGElement[];\n  } | null = null;\n\n  constructor({\n    canvas,\n    width = 500,\n    height = 500\n  }: {\n    canvas?: HTMLCanvasElement;\n    width?: number;\n    height?: number;\n  }) {\n    if (canvas) {\n      this.__canvas = canvas;\n      this.__ctx = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n    } else {\n      this.__canvas = this.__document.createElement(\"canvas\");\n      this.__ctx = this.__canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n    }\n\n    this.width = width || canvas?.width || 0;\n    this.height = height || canvas?.height || 0;\n\n    this.__setDefaultStyles();\n    this.__styleStack = [this.__getStyleState()];\n    this.__groupStack = [];\n\n    this.__rootSVG = this.__document.createElementNS(\n      \"http://www.w3.org/2000/svg\",\n      \"svg\"\n    );\n    this.__rootSVG.setAttribute(\"version\", \"1.1\");\n    this.__rootSVG.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n    this.__rootSVG.setAttributeNS(\n      \"http://www.w3.org/2000/xmlns/\",\n      \"xmlns:xlink\",\n      \"http://www.w3.org/1999/xlink\"\n    );\n    this.__rootSVG.setAttribute(\"width\", \"\" + this.width);\n    this.__rootSVG.setAttribute(\"height\", \"\" + this.height);\n\n    // make sure we don't generate the same ids in defs\n    this.__ids = {};\n\n    // defs tag\n    this.__SVGdefs = this.__document.createElementNS(\n      \"http://www.w3.org/2000/svg\",\n      \"defs\"\n    );\n    this.__rootSVG.appendChild(this.__SVGdefs);\n\n    // also add a group child. the svg element can't use the transform attribute\n    this.__currentElement = this.__document.createElementNS(\n      \"http://www.w3.org/2000/svg\",\n      \"g\"\n    );\n    this.__rootSVG.appendChild(this.__currentElement);\n  }\n\n  /**\n   * Applies default canvas styles to the context\n   */\n  __setDefaultStyles() {\n    // default 2d canvas context properties see: http://www.w3.org/TR/2dcontext/\n    const keys = Object.keys(STYLES);\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      this[key] = STYLES[key].canvas;\n    }\n  }\n\n  /**\n   * Gets the current style state\n   */\n  __getStyleState() {\n    const styleState: Record<string, any> = {};\n    const keys = Object.keys(STYLES);\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      styleState[key] = this[key];\n    }\n    return styleState;\n  }\n\n  /**\n   * Applies styles on restore\n   */\n  __applyStyleState(styleState: Record<string, any>) {\n    const keys = Object.keys(styleState);\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      this[key] = styleState[key];\n    }\n  }\n\n  /**\n   * Creates the specified svg element\n   */\n  __createElement(\n    elementName: string,\n    properties: Record<string, any> = {},\n    resetFill = false\n  ) {\n    const element = this.__document.createElementNS(\n      \"http://www.w3.org/2000/svg\",\n      elementName\n    );\n    const keys = Object.keys(properties);\n    if (resetFill) {\n      // if fill or stroke is not specified, the svg element should not display. By default SVG's fill is black.\n      element.setAttribute(\"fill\", \"none\");\n      element.setAttribute(\"stroke\", \"none\");\n    }\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      element.setAttribute(key, properties[key]);\n    }\n    return element;\n  }\n\n  /**\n   * Apples the current styles to the current SVG element. On \"CustomCanvasContext.fill\" or \"CustomCanvasContext.stroke\"\n   */\n  __applyStyleToCurrentElement(type: \"fill\" | \"stroke\") {\n    let currentElement = this.__currentElement;\n    const currentStyleGroup = this.__currentElementsToStyle;\n    if (currentStyleGroup) {\n      currentElement.setAttribute(type, \"\");\n      currentElement = currentStyleGroup.element;\n      currentStyleGroup.children.forEach((node: SVGElement) => {\n        node.setAttribute(type, \"\");\n      });\n    }\n\n    const keys = Object.keys(STYLES);\n    for (let i = 0; i < keys.length; i++) {\n      const style = STYLES[keys[i]];\n      const value = this[keys[i]];\n      if (style.apply) {\n        if (value instanceof CustomCanvasPattern) {\n          if (value.__ctx) {\n            // copy over defs\n            while (value.__ctx.__SVGdefs.childNodes.length) {\n              const id = (\n                value.__ctx.__SVGdefs.childNodes[0] as SVGElement\n              ).getAttribute(\"id\") as string;\n              this.__ids[id] = id;\n              this.__SVGdefs.appendChild(value.__ctx.__SVGdefs.childNodes[0]);\n            }\n          }\n          currentElement.setAttribute(\n            style.apply,\n            format(\"url(#{id})\", {\n              id: value.__root.getAttribute(\"id\") as string\n            })\n          );\n        } else if (value instanceof CustomCanvasGradient) {\n          currentElement.setAttribute(\n            style.apply,\n            format(\"url(#{id})\", {\n              id: value.__root.getAttribute(\"id\") as string\n            })\n          );\n        } else if (style.apply.indexOf(type) !== -1 && style.svg !== value) {\n          if (\n            (style.svgAttr === \"stroke\" || style.svgAttr === \"fill\") &&\n            value.indexOf(\"rgba\") !== -1\n          ) {\n            // separate alpha value, since illustrator can't handle it\n            const regex =\n              /rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?\\.?\\d*)\\s*\\)/gi;\n            const matches = regex.exec(value);\n            if (matches) {\n              currentElement.setAttribute(\n                style.svgAttr,\n                format(\"rgb({r},{g},{b})\", {\n                  r: matches[1],\n                  g: matches[2],\n                  b: matches[3]\n                })\n              );\n              // should take globalAlpha here\n              let opacity = parseFloat(matches[4]);\n              const globalAlpha = this.globalAlpha;\n              if (globalAlpha != null) {\n                opacity *= globalAlpha;\n              }\n              currentElement.setAttribute(\n                style.svgAttr + \"-opacity\",\n                \"\" + opacity\n              );\n            }\n          } else {\n            let attr = style.svgAttr;\n            if (keys[i] === \"globalAlpha\") {\n              attr = type + \"-\" + style.svgAttr;\n              if (currentElement.getAttribute(attr)) {\n                // fill-opacity or stroke-opacity has already been set by stroke or fill.\n                continue;\n              }\n            }\n            //otherwise only update attribute if right type, and not svg default\n            if (attr) currentElement.setAttribute(attr, value);\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Will return the closest group or svg node. May return the current element.\n   */\n  __closestGroupOrSvg(node?: SVGElement | null): SVGElement {\n    node = node || this.__currentElement;\n    if (node.nodeName === \"g\" || node.nodeName === \"svg\") {\n      return node;\n    } else {\n      return this.__closestGroupOrSvg(node.parentNode as unknown as SVGElement);\n    }\n  }\n\n  /**\n   * Returns the serialized value of the svg so far\n   * @param fixNamedEntities - Standalone SVG doesn't support named entities, which document.createTextNode encodes.\n   *                           If true, we attempt to find all named entities and encode it as a numeric entity.\n   * @return serialized svg\n   */\n  getSerializedSvg(fixNamedEntities: boolean) {\n    let serialized = new XMLSerializer().serializeToString(this.__rootSVG);\n\n    // IE search for a duplicate xmnls because they didn't implement setAttributeNS correctly\n    const xmlns =\n      /xmlns=\"http:\\/\\/www\\.w3\\.org\\/2000\\/svg\".+xmlns=\"http:\\/\\/www\\.w3\\.org\\/2000\\/svg/gi;\n    if (xmlns.test(serialized)) {\n      serialized = serialized.replace(\n        'xmlns=\"http://www.w3.org/2000/svg',\n        'xmlns:xlink=\"http://www.w3.org/1999/xlink'\n      );\n    }\n\n    if (fixNamedEntities) {\n      const keys = Object.keys(namedEntities);\n      //loop over each named entity and replace with the proper equivalent.\n      for (let i = 0, length = keys.length; i < length; i++) {\n        const key = keys[i];\n        const value = namedEntities[key];\n        const regexp = new RegExp(key, \"gi\");\n        if (regexp.test(serialized)) {\n          serialized = serialized.replace(regexp, value);\n        }\n      }\n    }\n\n    return serialized;\n  }\n\n  /**\n   * Returns the root svg\n   */\n  getSvg() {\n    return this.__rootSVG;\n  }\n\n  /**\n   * Will generate a group tag\n   */\n  save() {\n    const group = this.__createElement(\"g\");\n    const parent = this.__closestGroupOrSvg();\n    this.__groupStack.push(parent);\n    parent.appendChild(group);\n    this.__currentElement = group;\n    this.__styleStack.push(this.__getStyleState());\n  }\n\n  /**\n   * Sets current element to parent, or just root if already root\n   */\n  restore() {\n    this.__currentElementsToStyle = null;\n    const currentElement = this.__groupStack.pop();\n    // Clearing canvas will make the poped group invalid, currentElement is set to the root group node.\n    if (!currentElement) {\n      this.__currentElement = this.__rootSVG\n        .childNodes[1] as unknown as SVGElement;\n    } else {\n      this.__currentElement = currentElement;\n    }\n    const state = this.__styleStack.pop();\n    if (state) {\n      this.__applyStyleState(state);\n    }\n  }\n\n  /**\n   * Helper method to add transform\n   */\n  __addTransform(t: string) {\n    // if the current element has siblings, add another group\n    const parent = this.__closestGroupOrSvg();\n    if (parent.childNodes.length > 0) {\n      if (this.__currentElement.nodeName === \"path\") {\n        if (!this.__currentElementsToStyle)\n          this.__currentElementsToStyle = { element: parent, children: [] };\n        this.__currentElementsToStyle.children.push(this.__currentElement);\n        this.__applyCurrentDefaultPath();\n      }\n      const group = this.__createElement(\"g\");\n      parent.appendChild(group);\n      this.__currentElement = group;\n    }\n\n    let transform = this.__currentElement.getAttribute(\"transform\");\n    if (transform) {\n      transform += \" \";\n    } else {\n      transform = \"\";\n    }\n    transform += t;\n    this.__currentElement.setAttribute(\"transform\", transform);\n  }\n\n  /**\n   *  scales the current element\n   */\n  scale(x: number, y?: number) {\n    if (y === undefined) {\n      y = x;\n    }\n    this.__addTransform(format(\"scale({x},{y})\", { x: x, y: y }));\n  }\n\n  /**\n   * rotates the current element\n   */\n  rotate(angle: number) {\n    const degrees = (angle * 180) / Math.PI;\n    this.__addTransform(\n      format(\"rotate({angle},{cx},{cy})\", {\n        angle: degrees,\n        cx: 0,\n        cy: 0\n      })\n    );\n  }\n\n  /**\n   * translates the current element\n   */\n  translate(x: number, y: number) {\n    this.__addTransform(format(\"translate({x},{y})\", { x: x, y: y }));\n  }\n\n  /**\n   * applies a transform to the current element\n   */\n  transform(a: number, b: number, c: number, d: number, e: number, f: number) {\n    this.__addTransform(\n      format(\"matrix({a},{b},{c},{d},{e},{f})\", {\n        a: a,\n        b: b,\n        c: c,\n        d: d,\n        e: e,\n        f: f\n      })\n    );\n  }\n\n  /**\n   * Create a new Path Element\n   */\n  beginPath() {\n    // Note that there is only one current default path, it is not part of the drawing state.\n    // See also: https://html.spec.whatwg.org/multipage/scripting.html#current-default-path\n    this.__currentDefaultPath = \"\";\n    this.__currentPosition = {};\n\n    const path = this.__createElement(\"path\", {}, true);\n    const parent = this.__closestGroupOrSvg();\n    parent.appendChild(path);\n    this.__currentElement = path;\n  }\n\n  /**\n   * Helper function to apply currentDefaultPath to current path element\n   */\n  __applyCurrentDefaultPath() {\n    const currentElement = this.__currentElement;\n    if (currentElement.nodeName === \"path\") {\n      currentElement.setAttribute(\"d\", this.__currentDefaultPath);\n    } else {\n      // console.error(\n      //   \"Attempted to apply path command to node\",\n      //   currentElement.nodeName\n      // );\n    }\n  }\n\n  /**\n   * Helper function to add path command\n   */\n  __addPathCommand(command: string) {\n    this.__currentDefaultPath += \" \";\n    this.__currentDefaultPath += command;\n  }\n\n  /**\n   * Adds the move command to the current path element,\n   * if the currentPathElement is not empty create a new path element\n   */\n  moveTo(x: number, y: number) {\n    if (this.__currentElement.nodeName !== \"path\") {\n      this.beginPath();\n    }\n\n    // creates a new subpath with the given point\n    this.__currentPosition = { x: x, y: y };\n    this.__addPathCommand(format(\"M {x} {y}\", this.__currentPosition));\n  }\n\n  /**\n   * Closes the current path\n   */\n  closePath() {\n    if (this.__currentDefaultPath) {\n      this.__addPathCommand(\"Z\");\n    }\n  }\n\n  /**\n   * Adds a line to command\n   */\n  lineTo(x: number, y: number) {\n    this.__currentPosition = { x: x, y: y };\n    if (this.__currentDefaultPath.indexOf(\"M\") > -1) {\n      this.__addPathCommand(format(\"L {x} {y}\", this.__currentPosition));\n    } else {\n      this.__addPathCommand(format(\"M {x} {y}\", this.__currentPosition));\n    }\n  }\n\n  /**\n   * Add a bezier command\n   */\n  bezierCurveTo(\n    cp1x: number,\n    cp1y: number,\n    cp2x: number,\n    cp2y: number,\n    x: number,\n    y: number\n  ) {\n    this.__currentPosition = { x: x, y: y };\n    this.__addPathCommand(\n      format(\"C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}\", {\n        cp1x: cp1x,\n        cp1y: cp1y,\n        cp2x: cp2x,\n        cp2y: cp2y,\n        x: x,\n        y: y\n      })\n    );\n  }\n\n  /**\n   * Adds a quadratic curve to command\n   */\n  quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n    this.__currentPosition = { x: x, y: y };\n    this.__addPathCommand(\n      format(\"Q {cpx} {cpy} {x} {y}\", { cpx: cpx, cpy: cpy, x: x, y: y })\n    );\n  }\n\n  /**\n   * Return a new normalized vector of given vector\n   */\n  normalize(vector: [number, number]) {\n    const len = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]);\n    return [vector[0] / len, vector[1] / len];\n  }\n\n  /**\n   * Adds the arcTo to the current path\n   *\n   * @see http://www.w3.org/TR/2015/WD-2dcontext-20150514/#dom-context-2d-arcto\n   */\n  arcTo(x1: number, y1: number, x2: number, y2: number, radius: number) {\n    // Let the point (x0, y0) be the last point in the subpath.\n    const x0 = this.__currentPosition && this.__currentPosition.x;\n    const y0 = this.__currentPosition && this.__currentPosition.y;\n\n    // First ensure there is a subpath for (x1, y1).\n    if (typeof x0 == \"undefined\" || typeof y0 == \"undefined\") {\n      return;\n    }\n\n    // Negative values for radius must cause the implementation to throw an IndexSizeError exception.\n    if (radius < 0) {\n      throw new Error(\n        \"IndexSizeError: The radius provided (\" + radius + \") is negative.\"\n      );\n    }\n\n    // If the point (x0, y0) is equal to the point (x1, y1),\n    // or if the point (x1, y1) is equal to the point (x2, y2),\n    // or if the radius radius is zero,\n    // then the method must add the point (x1, y1) to the subpath,\n    // and connect that point to the previous point (x0, y0) by a straight line.\n    if ((x0 === x1 && y0 === y1) || (x1 === x2 && y1 === y2) || radius === 0) {\n      this.lineTo(x1, y1);\n      return;\n    }\n\n    // Otherwise, if the points (x0, y0), (x1, y1), and (x2, y2) all lie on a single straight line,\n    // then the method must add the point (x1, y1) to the subpath,\n    // and connect that point to the previous point (x0, y0) by a straight line.\n    const unit_vec_p1_p0 = this.normalize([x0 - x1, y0 - y1]);\n    const unit_vec_p1_p2 = this.normalize([x2 - x1, y2 - y1]);\n    if (\n      unit_vec_p1_p0[0] * unit_vec_p1_p2[1] ===\n      unit_vec_p1_p0[1] * unit_vec_p1_p2[0]\n    ) {\n      this.lineTo(x1, y1);\n      return;\n    }\n\n    // Otherwise, let The Arc be the shortest arc given by circumference of the circle that has radius radius,\n    // and that has one point tangent to the half-infinite line that crosses the point (x0, y0) and ends at the point (x1, y1),\n    // and that has a different point tangent to the half-infinite line that ends at the point (x1, y1), and crosses the point (x2, y2).\n    // The points at which this circle touches these two lines are called the start and end tangent points respectively.\n\n    // note that both vectors are unit vectors, so the length is 1\n    const cos =\n      unit_vec_p1_p0[0] * unit_vec_p1_p2[0] +\n      unit_vec_p1_p0[1] * unit_vec_p1_p2[1];\n    const theta = Math.acos(Math.abs(cos));\n\n    // Calculate origin\n    const unit_vec_p1_origin = this.normalize([\n      unit_vec_p1_p0[0] + unit_vec_p1_p2[0],\n      unit_vec_p1_p0[1] + unit_vec_p1_p2[1]\n    ]);\n    const len_p1_origin = radius / Math.sin(theta / 2);\n    const x = x1 + len_p1_origin * unit_vec_p1_origin[0];\n    const y = y1 + len_p1_origin * unit_vec_p1_origin[1];\n\n    // Calculate start angle and end angle\n    // rotate 90deg clockwise (note that y axis points to its down)\n    const unit_vec_origin_start_tangent = [\n      -unit_vec_p1_p0[1],\n      unit_vec_p1_p0[0]\n    ];\n    // rotate 90deg counter clockwise (note that y axis points to its down)\n    const unit_vec_origin_end_tangent = [unit_vec_p1_p2[1], -unit_vec_p1_p2[0]];\n    const getAngle = function (vector: number[]) {\n      // get angle (clockwise) between vector and (1, 0)\n      const x = vector[0];\n      const y = vector[1];\n      if (y >= 0) {\n        // note that y axis points to its down\n        return Math.acos(x);\n      } else {\n        return -Math.acos(x);\n      }\n    };\n    const startAngle = getAngle(unit_vec_origin_start_tangent);\n    const endAngle = getAngle(unit_vec_origin_end_tangent);\n\n    // Connect the point (x0, y0) to the start tangent point by a straight line\n    this.lineTo(\n      x + unit_vec_origin_start_tangent[0] * radius,\n      y + unit_vec_origin_start_tangent[1] * radius\n    );\n\n    // Connect the start tangent point to the end tangent point by arc\n    // and adding the end tangent point to the subpath.\n    this.arc(x, y, radius, startAngle, endAngle);\n  }\n\n  /**\n   * Sets the stroke property on the current element\n   */\n  stroke() {\n    if (this.__currentElement.nodeName === \"path\") {\n      this.__currentElement.setAttribute(\"paint-order\", \"fill stroke markers\");\n    }\n    this.__applyCurrentDefaultPath();\n    this.__applyStyleToCurrentElement(\"stroke\");\n  }\n\n  /**\n   * Sets fill properties on the current element\n   */\n  fill() {\n    if (this.__currentElement.nodeName === \"path\") {\n      this.__currentElement.setAttribute(\"paint-order\", \"stroke fill markers\");\n    }\n    this.__applyCurrentDefaultPath();\n    this.__applyStyleToCurrentElement(\"fill\");\n  }\n\n  /**\n   *  Adds a rectangle to the path.\n   */\n  rect(x: number, y: number, width: number, height: number) {\n    if (this.__currentElement.nodeName !== \"path\") {\n      this.beginPath();\n    }\n    this.moveTo(x, y);\n    this.lineTo(x + width, y);\n    this.lineTo(x + width, y + height);\n    this.lineTo(x, y + height);\n    this.lineTo(x, y);\n    this.closePath();\n  }\n\n  /**\n   * adds a rectangle element\n   */\n  fillRect(x: number, y: number, width: number, height: number) {\n    const rect = this.__createElement(\n      \"rect\",\n      {\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      },\n      true\n    );\n    const parent = this.__closestGroupOrSvg();\n    parent.appendChild(rect);\n    this.__currentElement = rect;\n    this.__applyStyleToCurrentElement(\"fill\");\n  }\n\n  /**\n   * Draws a rectangle with no fill\n   */\n  strokeRect(x: number, y: number, width: number, height: number) {\n    const rect = this.__createElement(\n      \"rect\",\n      {\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      },\n      true\n    );\n    const parent = this.__closestGroupOrSvg();\n    parent.appendChild(rect);\n    this.__currentElement = rect;\n    this.__applyStyleToCurrentElement(\"stroke\");\n  }\n\n  /**\n   * Clear entire canvas:\n   * 1. save current transforms\n   * 2. remove all the childNodes of the root g element\n   */\n  __clearCanvas() {\n    const current = this.__closestGroupOrSvg();\n    const transform = current.getAttribute(\"transform\");\n    const rootGroup = this.__rootSVG.childNodes[1] as SVGElement;\n    const childNodes = rootGroup.childNodes;\n    for (let i = childNodes.length - 1; i >= 0; i--) {\n      if (childNodes[i]) {\n        rootGroup.removeChild(childNodes[i]);\n      }\n    }\n    this.__currentElement = rootGroup;\n    // reset __groupStack as all the child group nodes are all removed.\n    this.__groupStack = [];\n    if (transform) {\n      this.__addTransform(transform);\n    }\n  }\n\n  /**\n   * \"Clears\" a canvas by just drawing a white rectangle in the current group.\n   */\n  clearRect(x: number, y: number, width: number, height: number) {\n    // clear entire canvas\n    if (x === 0 && y === 0 && width === this.width && height === this.height) {\n      this.__clearCanvas();\n      return;\n    }\n    const parent = this.__closestGroupOrSvg();\n    const rect = this.__createElement(\n      \"rect\",\n      {\n        x: x,\n        y: y,\n        width: width,\n        height: height,\n        fill: \"#FFFFFF\"\n      },\n      true\n    );\n    parent.appendChild(rect);\n  }\n\n  /**\n   * Adds a linear gradient to a defs tag.\n   * Returns a canvas gradient object that has a reference to it's parent def\n   */\n  createLinearGradient(x1: number, y1: number, x2: number, y2: number) {\n    const grad = this.__createElement(\n      \"linearGradient\",\n      {\n        id: randomString(this.__ids),\n        x1: x1 + \"px\",\n        x2: x2 + \"px\",\n        y1: y1 + \"px\",\n        y2: y2 + \"px\",\n        gradientUnits: \"userSpaceOnUse\"\n      },\n      false\n    );\n    this.__SVGdefs.appendChild(grad);\n    return new CustomCanvasGradient(grad as unknown as SVGElement, this);\n  }\n\n  /**\n   * Adds a radial gradient to a defs tag.\n   * Returns a canvas gradient object that has a reference to it's parent def\n   */\n  createRadialGradient(\n    x0: number,\n    y0: number,\n    r0: number,\n    x1: number,\n    y1: number,\n    r1: number\n  ) {\n    const grad = this.__createElement(\n      \"radialGradient\",\n      {\n        id: randomString(this.__ids),\n        cx: x1 + \"px\",\n        cy: y1 + \"px\",\n        r: r1 + \"px\",\n        fx: x0 + \"px\",\n        fy: y0 + \"px\",\n        gradientUnits: \"userSpaceOnUse\"\n      },\n      false\n    );\n    this.__SVGdefs.appendChild(grad);\n    return new CustomCanvasGradient(grad as unknown as SVGElement, this);\n  }\n\n  /**\n   * Parses the font string and returns svg mapping\n   */\n  __parseFont() {\n    const regex =\n      /^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:%|in|[cem]m|ex|p[CustomCanvasContext]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:%|in|[cem]m|ex|p[CustomCanvasContext])))?\\s*([-,'\"\\sa-z0-9]+?)\\s*$/i;\n    const fontPart = regex.exec(this.font) as RegExpExecArray;\n    const data = {\n      style: fontPart[1] || \"normal\",\n      size: fontPart[4] || \"10px\",\n      family: fontPart[6] || \"sans-serif\",\n      weight: fontPart[3] || \"normal\",\n      decoration: fontPart[2] || \"normal\",\n      href: null\n    };\n\n    //canvas doesn't support underline natively, but we can pass this attribute\n    if (this.__fontUnderline === \"underline\") {\n      data.decoration = \"underline\";\n    }\n\n    //canvas also doesn't support linking, but we can pass this as well\n    if (this.__fontHref) {\n      data.href = this.__fontHref;\n    }\n\n    return data;\n  }\n\n  /**\n   * Helper to link text fragments\n   */\n  __wrapTextLink(font: { href: string | null }, element: HTMLElement) {\n    if (font.href) {\n      const a = this.__createElement(\"a\");\n      a.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", font.href);\n      a.appendChild(element);\n      return a;\n    }\n    return element;\n  }\n\n  /**\n   * Fills or strokes text\n   * @param text\n   * @param x\n   * @param y\n   * @param action - stroke or fill\n   */\n  __applyText(text: string, x: number, y: number, action: \"stroke\" | \"fill\") {\n    const font = this.__parseFont(),\n      parent = this.__closestGroupOrSvg(),\n      textElement = this.__createElement(\n        \"text\",\n        {\n          \"font-family\": font.family,\n          \"font-size\": font.size,\n          \"font-style\": font.style,\n          \"font-weight\": font.weight,\n          \"text-decoration\": font.decoration,\n          x: x,\n          y: y,\n          \"text-anchor\": getTextAnchor(this.textAlign),\n          \"dominant-baseline\": getDominantBaseline(this.textBaseline)\n        },\n        true\n      );\n\n    textElement.appendChild(this.__document.createTextNode(text));\n    this.__currentElement = textElement;\n    this.__applyStyleToCurrentElement(action);\n    parent.appendChild(\n      this.__wrapTextLink(font, textElement as unknown as HTMLElement)\n    );\n  }\n\n  /**\n   * Creates a text element\n   * @param text\n   * @param x\n   * @param y\n   */\n  fillText(text: string, x: number, y: number) {\n    this.__applyText(text, x, y, \"fill\");\n  }\n\n  /**\n   * Strokes text\n   * @param text\n   * @param x\n   * @param y\n   */\n  strokeText(text: string, x: number, y: number) {\n    this.__applyText(text, x, y, \"stroke\");\n  }\n\n  /**\n   * No need to implement this for svg.\n   * @param text\n   * @return {TextMetrics}\n   */\n  measureText(text: string) {\n    this.__ctx.font = this.font;\n    return this.__ctx.measureText(text);\n  }\n\n  /**\n   *  Arc command!\n   */\n  arc(\n    x: number,\n    y: number,\n    radius: number,\n    startAngle: number,\n    endAngle: number,\n    counterClockwise?: number\n  ) {\n    // in canvas no circle is drawn if no angle is provided.\n    if (startAngle === endAngle) {\n      return;\n    }\n    startAngle = startAngle % (2 * Math.PI);\n    endAngle = endAngle % (2 * Math.PI);\n    if (startAngle === endAngle) {\n      //circle time! subtract some of the angle so svg is happy (svg elliptical arc can't draw a full circle)\n      endAngle =\n        (endAngle + 2 * Math.PI - 0.001 * (counterClockwise ? -1 : 1)) %\n        (2 * Math.PI);\n    }\n    const endX = x + radius * Math.cos(endAngle),\n      endY = y + radius * Math.sin(endAngle),\n      startX = x + radius * Math.cos(startAngle),\n      startY = y + radius * Math.sin(startAngle),\n      sweepFlag = counterClockwise ? 0 : 1;\n    let largeArcFlag = 0;\n    let diff = endAngle - startAngle;\n\n    // https://github.com/gliffy/canvas2svg/issues/4\n    if (diff < 0) {\n      diff += 2 * Math.PI;\n    }\n\n    if (counterClockwise) {\n      largeArcFlag = diff > Math.PI ? 0 : 1;\n    } else {\n      largeArcFlag = diff > Math.PI ? 1 : 0;\n    }\n\n    this.lineTo(startX, startY);\n    this.__addPathCommand(\n      format(\n        \"A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}\",\n        {\n          rx: radius,\n          ry: radius,\n          xAxisRotation: 0,\n          largeArcFlag: largeArcFlag,\n          sweepFlag: sweepFlag,\n          endX: endX,\n          endY: endY\n        }\n      )\n    );\n\n    this.__currentPosition = { x: endX, y: endY };\n  }\n\n  /**\n   * Generates a ClipPath from the clip command.\n   */\n  clip() {\n    const group = this.__closestGroupOrSvg(),\n      clipPath = this.__createElement(\"clipPath\"),\n      id = randomString(this.__ids),\n      newGroup = this.__createElement(\"g\");\n\n    this.__applyCurrentDefaultPath();\n    group.removeChild(this.__currentElement);\n    clipPath.setAttribute(\"id\", id);\n    clipPath.appendChild(this.__currentElement);\n\n    this.__SVGdefs.appendChild(clipPath);\n\n    //set the clip path to this group\n    group.setAttribute(\"clip-path\", format(\"url(#{id})\", { id: id }));\n\n    //clip paths can be scaled and transformed, we need to add another wrapper group to avoid later transformations\n    // to this path\n    group.appendChild(newGroup);\n\n    this.__currentElement = newGroup;\n  }\n\n  /**\n   * Draws a canvas, image or mock context to this canvas.\n   * Note that all svg dom manipulation uses node.childNodes rather than node.children for IE support.\n   * http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage\n   */\n  drawImage(...args: any[]) {\n    let image = args[0],\n      dx,\n      dy,\n      dw,\n      dh,\n      sx = 0,\n      sy = 0,\n      sw,\n      sh,\n      svg,\n      defs,\n      group,\n      svgImage,\n      canvas,\n      id;\n\n    if (args.length === 3) {\n      dx = args[1];\n      dy = args[2];\n      sw = image.width;\n      sh = image.height;\n      dw = sw;\n      dh = sh;\n    } else if (args.length === 5) {\n      dx = args[1];\n      dy = args[2];\n      dw = args[3];\n      dh = args[4];\n      sw = image.width;\n      sh = image.height;\n    } else if (args.length === 9) {\n      sx = args[1];\n      sy = args[2];\n      sw = args[3];\n      sh = args[4];\n      dx = args[5];\n      dy = args[6];\n      dw = args[7];\n      dh = args[8];\n    } else {\n      throw new Error(\n        \"Invalid number of arguments passed to drawImage: \" + arguments.length\n      );\n    }\n\n    const parent = this.__closestGroupOrSvg();\n    const currentElement = this.__currentElement;\n    const translateDirective = \"translate(\" + dx + \", \" + dy + \")\";\n    if (image instanceof CustomCanvasContext) {\n      //canvas2svg mock canvas context. In the future we may want to clone nodes instead.\n      //also I'm currently ignoring dw, dh, sw, sh, sx, sy for a mock context.\n      svg = image.getSvg().cloneNode(true);\n      if (svg.childNodes && svg.childNodes.length > 1) {\n        defs = svg.childNodes[0] as SVGElement;\n        while (defs.childNodes.length) {\n          id = (defs.childNodes[0] as SVGElement).getAttribute(\"id\") as string;\n          this.__ids[id] = id;\n          this.__SVGdefs.appendChild(defs.childNodes[0]);\n        }\n        group = svg.childNodes[1] as SVGElement;\n        if (group) {\n          //save original transform\n          const originTransform = group.getAttribute(\"transform\");\n          let transformDirective;\n          if (originTransform) {\n            transformDirective = originTransform + \" \" + translateDirective;\n          } else {\n            transformDirective = translateDirective;\n          }\n          group.setAttribute(\"transform\", transformDirective);\n          parent.appendChild(group);\n        }\n      }\n    } else if (image.nodeName === \"CANVAS\" || image.nodeName === \"IMG\") {\n      //canvas or image\n      svgImage = this.__createElement(\"image\");\n      svgImage.setAttribute(\"width\", dw);\n      svgImage.setAttribute(\"height\", dh);\n      svgImage.setAttribute(\"preserveAspectRatio\", \"none\");\n\n      if (sx || sy || sw !== image.width || sh !== image.height) {\n        //crop the image using a temporary canvas\n        canvas = this.__document.createElement(\"canvas\");\n        canvas.width = dw;\n        canvas.height = dh;\n        const context = canvas.getContext(\"2d\");\n        context?.drawImage(image, sx, sy, sw, sh, 0, 0, dw, dh);\n        image = canvas;\n      }\n      svgImage.setAttribute(\"transform\", translateDirective);\n      svgImage.setAttributeNS(\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:href\",\n        image.nodeName === \"CANVAS\"\n          ? image.toDataURL()\n          : image.getAttribute(\"src\")\n      );\n      parent.appendChild(svgImage);\n    }\n  }\n\n  /**\n   * Generates a pattern tag\n   */\n  createPattern(\n    image: HTMLImageElement | HTMLCanvasElement | CustomCanvasContext,\n    repetition: number\n  ) {\n    const pattern = this.__document.createElementNS(\n        \"http://www.w3.org/2000/svg\",\n        \"pattern\"\n      ),\n      id = randomString(this.__ids);\n    let img;\n    pattern.setAttribute(\"id\", id);\n\n    if (image.nodeName === \"CANVAS\" || image.nodeName === \"IMG\") {\n      img = this.__document.createElementNS(\n        \"http://www.w3.org/2000/svg\",\n        \"image\"\n      );\n      img.setAttribute(\n        \"width\",\n        \"\" + (image as HTMLImageElement | HTMLCanvasElement).width\n      );\n      img.setAttribute(\n        \"height\",\n        \"\" + (image as HTMLImageElement | HTMLCanvasElement).height\n      );\n      img.setAttributeNS(\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:href\",\n        image.nodeName === \"CANVAS\"\n          ? (image as HTMLCanvasElement).toDataURL()\n          : image.getAttribute(\"src\")\n      );\n      pattern.appendChild(img);\n      this.__SVGdefs.appendChild(pattern);\n    } else if (image instanceof CustomCanvasContext) {\n      pattern.setAttribute(\"width\", \"\" + (image as CustomCanvasContext).width);\n      pattern.setAttribute(\n        \"height\",\n        \"\" + (image as CustomCanvasContext).height\n      );\n      pattern.appendChild(image.__rootSVG.childNodes[1]);\n      this.__SVGdefs.appendChild(pattern);\n    }\n    return new CustomCanvasPattern(pattern as unknown as SVGElement, this);\n  }\n\n  setLineDash(dashArray: number[]) {\n    if (dashArray && dashArray.length > 0) {\n      this.lineDash = dashArray.join(\",\");\n    } else {\n      this.lineDash = null;\n    }\n  }\n\n  drawFocusRing() {\n    /// Not yet implemented\n  }\n  createImageData() {\n    /// Not yet implemented\n  }\n  getImageData() {\n    /// Not yet implemented\n  }\n  putImageData() {\n    /// Not yet implemented\n  }\n  globalCompositeOperation() {\n    /// Not yet implemented\n  }\n  setTransform() {\n    /// Not yet implemented\n  }\n}\n\nexport default CustomCanvasContext;\n","import {\n  CustomCanvasContext,\n  CustomCanvasGradient\n} from \"./CustomCanvasContext\";\n\nexport const canUsePaths =\n  typeof Path2D === \"function\" && typeof DOMMatrix === \"function\";\n\n// direction:\"ltr\"\n// filter:\"none\"\n// fontKerning:\"auto\"\n// fontStretch:\"normal\"\n// fontVariantCaps:\"normal\"\n// globalCompositeOperation:\"source-over\"\n// imageSmoothingEnabled:true\n// imageSmoothingQuality:\"low\"\n// letterSpacing:\"0px\"\n// lineCap:\"butt\"\n// lineWidth:1\n// shadowBlur:0\n// shadowColor:\"rgba(0, 0, 0, 0)\"\n// shadowOffsetX:0\n// shadowOffsetY:0\n// textRendering:\"auto\"\n// wordSpacing:\"0px\"\n\n// clip\n// createConicGradient\n// createImageData\n// direction\n// drawFocusIfNeeded\n// filter\n// fontKerning\n// fontStretch\n// fontVariantCaps\n// getContextAttributes\n// getLineDash\n// getTransform\n// globalCompositeOperation\n// imageSmoothingEnabled\n// imageSmoothingQuality\n// isContextLost\n// letterSpacing\n// reset\n// resetTransform\n// roundRect\n// setTransform\n// shadowBlur\n// shadowColor\n// shadowOffsetX\n// shadowOffsetY\n// textRendering\n// wordSpacing\n\nexport class YZCanvasContext {\n  canvas: HTMLCanvasElement;\n\n  context: CanvasRenderingContext2D;\n  // context: CanvasRenderingContext2D\n  // | WebGLRenderingContext\n  // | WebGL2RenderingContext\n  // | GPUCanvasContext\n  // | ImageBitmapRenderingContext\n  customContext?: CustomCanvasContext;\n\n  // https://developer.mozilla.org/en-US/docs/Web/API/Path2D\n  enablePath2D = false;\n  currentPath2D: Path2D = new Path2D();\n  path2Ds: Path2D[] = [];\n\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix\n  currentMatrix: DOMMatrix = new DOMMatrix();\n  // currentMatrix = document\n  //   .createElementNS(\"http://www.w3.org/2000/svg\", \"svg\")\n  //   .createSVGMatrix();\n\n  hasSetCustomStrokeStyle = false;\n  hasSetCustomFillStyle = false;\n\n  constructor(\n    canvas: HTMLCanvasElement,\n    width?: number,\n    height?: number,\n    enableCustomContext = false, // 性能影响\n    enablePath2D = false // 性能影响\n  ) {\n    this.canvas = canvas;\n    this.context = canvas.getContext(\"2d\", {\n      willReadFrequently: true\n    }) as CanvasRenderingContext2D;\n    if (enableCustomContext) {\n      this.customContext = new CustomCanvasContext({\n        canvas: this.canvas,\n        width: width || this.canvas.width,\n        height: height || this.canvas.height\n      });\n    }\n    this.enablePath2D = typeof enablePath2D == \"boolean\" ? enablePath2D : false;\n  }\n\n  set lineWidth(lineWidth: number) {\n    this.hasSetCustomStrokeStyle = true;\n    this.context.lineWidth = lineWidth;\n    if (this.customContext) this.customContext.lineWidth = lineWidth;\n  }\n\n  get lineWidth(): number {\n    return this.context.lineWidth;\n  }\n\n  set lineCap(lineCap: CanvasLineCap) {\n    this.hasSetCustomStrokeStyle = true;\n    this.context.lineCap = lineCap;\n    if (this.customContext) this.customContext.lineCap = lineCap;\n  }\n\n  get lineCap(): CanvasLineCap {\n    return this.context.lineCap;\n  }\n\n  set lineJoin(lineJoin: CanvasLineJoin) {\n    this.hasSetCustomStrokeStyle = true;\n    this.context.lineJoin = lineJoin;\n    if (this.customContext) this.customContext.lineCap = lineJoin;\n  }\n\n  get lineJoin(): CanvasLineJoin {\n    return this.context.lineJoin;\n  }\n\n  set lineDashOffset(lineDashOffset: number) {\n    this.hasSetCustomStrokeStyle = true;\n    this.context.lineDashOffset = lineDashOffset;\n    if (this.customContext) this.customContext.lineDashOffset = lineDashOffset;\n  }\n\n  get lineDashOffset(): number {\n    return this.context.lineDashOffset;\n  }\n\n  set miterLimit(miterLimit: number) {\n    this.hasSetCustomStrokeStyle = true;\n    this.context.miterLimit = miterLimit;\n    if (this.customContext) this.customContext.miterLimit = miterLimit;\n  }\n\n  get miterLimit(): number {\n    return this.context.miterLimit;\n  }\n\n  set globalAlpha(alpha: number) {\n    this.context.globalAlpha = alpha;\n    if (this.customContext) this.customContext.globalAlpha = alpha;\n  }\n\n  get globalAlpha(): number {\n    return this.context.globalAlpha;\n  }\n\n  // rgb(255,221,0)\n  // rgba(255,221,0,1)\n  // #000000\n  set fillStyle(\n    style:\n      | string\n      | CanvasGradient\n      | CanvasPattern\n      | { gradient: CanvasGradient; gradientCustom: CustomCanvasGradient }\n  ) {\n    this.hasSetCustomFillStyle = true;\n    if (\n      typeof style == \"string\" ||\n      style instanceof CanvasGradient ||\n      style instanceof CanvasPattern\n    ) {\n      this.context.fillStyle = style;\n      if (this.customContext) this.customContext.fillStyle = style;\n    } else {\n      this.context.fillStyle = style.gradient;\n      if (this.customContext)\n        this.customContext.fillStyle = style.gradientCustom;\n    }\n  }\n\n  get fillStyle(): string | CanvasGradient | CanvasPattern {\n    return this.context.fillStyle;\n  }\n\n  set strokeStyle(\n    style:\n      | string\n      | CanvasGradient\n      | CanvasPattern\n      | { gradient: CanvasGradient; gradientCustom: CustomCanvasGradient }\n  ) {\n    this.hasSetCustomStrokeStyle = true;\n    if (\n      typeof style == \"string\" ||\n      style instanceof CanvasGradient ||\n      style instanceof CanvasPattern\n    ) {\n      this.context.strokeStyle = style;\n      if (this.customContext) this.customContext.strokeStyle = style;\n    } else {\n      this.context.strokeStyle = style.gradient;\n      if (this.customContext)\n        this.customContext.strokeStyle = style.gradientCustom;\n    }\n  }\n\n  get strokeStyle(): string | CanvasGradient | CanvasPattern {\n    return this.context.strokeStyle;\n  }\n\n  // font:\"10px sans-serif\"\n  set font(font: string) {\n    this.context.font = font;\n    if (this.customContext) this.customContext.font = font;\n  }\n\n  get font(): string {\n    return this.context.font;\n  }\n\n  set textBaseline(textBaseline: CanvasTextBaseline) {\n    this.context.textBaseline = textBaseline;\n    if (this.customContext) this.customContext.textBaseline = textBaseline;\n  }\n\n  get textBaseline(): CanvasTextBaseline {\n    return this.context.textBaseline;\n  }\n\n  set textAlign(textAlign: CanvasTextAlign) {\n    this.context.textAlign = textAlign;\n    if (this.customContext) this.customContext.textAlign = textAlign;\n  }\n\n  get textAlign(): CanvasTextAlign {\n    return this.context.textAlign;\n  }\n\n  fill(path?: Path2D) {\n    if (path) {\n      this.context.fill(path);\n      /// customContext Not yet implemented\n    } else {\n      this.context.fill();\n      if (this.customContext) this.customContext.fill();\n    }\n    return this;\n  }\n\n  fillRect(x: number, y: number, w: number, h: number) {\n    this.context.fillRect(x, y, w, h);\n    if (this.customContext) this.customContext.fillRect(x, y, w, h);\n    return this;\n  }\n\n  fillText(text: string, x: number, y: number, maxWidth?: number | undefined) {\n    this.hasSetCustomFillStyle = false;\n    this.context.fillText(text, x, y, maxWidth);\n    if (this.customContext) this.customContext.fillText(text, x, y);\n    return this;\n  }\n\n  setLineDash(dashArray: number[]) {\n    this.context.setLineDash(dashArray);\n    if (this.customContext) this.customContext.setLineDash(dashArray);\n    return this;\n  }\n\n  stroke(path?: Path2D) {\n    if (path) {\n      this.context.stroke(path);\n      /// customContext Not yet implemented\n    } else {\n      this.context.stroke();\n      if (this.customContext) this.customContext.stroke();\n    }\n    return this;\n  }\n\n  strokeText(\n    text: string,\n    x: number,\n    y: number,\n    maxWidth?: number | undefined\n  ) {\n    this.context.strokeText(text, x, y, maxWidth);\n    if (this.customContext) this.customContext.strokeText(text, x, y);\n    return this;\n  }\n\n  strokeRect(x: number, y: number, w: number, h: number) {\n    this.context.strokeRect(x, y, w, h);\n    if (this.customContext) this.customContext.strokeRect(x, y, w, h);\n    return this;\n  }\n\n  measureText(text: string): TextMetrics {\n    return this.context.measureText(text);\n    /// customContext Not yet implemented\n  }\n\n  clearRect(x = 0, y = 0, w = this.canvas.width, h = this.canvas.height) {\n    this.context.clearRect(x, y, w, h);\n    if (this.customContext) this.customContext.clearRect(x, y, w, h);\n    return this;\n  }\n\n  save() {\n    this.context.save();\n    if (this.customContext) {\n      this.customContext.save();\n    }\n    this.currentMatrix = new DOMMatrix();\n    if (this.enablePath2D) {\n      this.path2Ds.push(this.currentPath2D);\n      this.currentPath2D = new Path2D();\n    }\n    return this;\n  }\n\n  restore() {\n    this.context.restore();\n    if (this.customContext) {\n      this.customContext.restore();\n    }\n    this.hasSetCustomStrokeStyle = false;\n    this.hasSetCustomFillStyle = false;\n    this.currentMatrix = new DOMMatrix();\n    if (this.enablePath2D) {\n      this.currentPath2D = this.path2Ds.pop() || new Path2D();\n    }\n    return this;\n  }\n\n  beginPath() {\n    this.context.beginPath();\n    if (this.customContext) this.customContext.beginPath();\n    return this;\n  }\n\n  closePath() {\n    this.context.closePath();\n    if (this.customContext) this.customContext.closePath();\n    if (this.enablePath2D) {\n      this.currentPath2D.closePath();\n    }\n    return this;\n  }\n\n  changePath2D(path = this.currentPath2D, transform = this.currentMatrix) {\n    if (this.enablePath2D) {\n      const newPath = new Path2D();\n      newPath.addPath(path, transform);\n      this.currentPath2D = newPath;\n    }\n  }\n\n  isPointInStroke(path: Path2D, x: number, y: number): boolean;\n  isPointInStroke(x: number, y: number): boolean;\n  isPointInStroke(...args: any[]): boolean {\n    if (args[0] instanceof Path2D) {\n      return this.context.isPointInStroke(args[0], args[1], args[2]);\n    }\n    return this.context.isPointInStroke(args[0], args[1]);\n    /// customContext Not yet implemented\n  }\n\n  isPointInPath(path: Path2D, x: number, y: number): boolean;\n  isPointInPath(x: number, y: number): boolean;\n  isPointInPath(...args: any[]): boolean {\n    if (args[0] instanceof Path2D) {\n      return this.context.isPointInPath(args[0], args[1], args[2]);\n    }\n    return this.context.isPointInPath(args[0], args[1]);\n    /// customContext Not yet implemented\n  }\n\n  // transform(a: number, b: number, c: number, d: number, e: number, f: number) {\n  //   this.context.transform(a, b, c, d, e, f);\n  //   if (this.customContext) this.customContext.transform(a, b, c, d, e, f);\n  //   return this;\n  // }\n\n  translate(x: number, y: number) {\n    this.context.translate(x, y);\n    if (this.customContext) {\n      this.customContext.translate(x, y);\n    }\n    this.currentMatrix = this.currentMatrix.translate(x, y);\n    this.changePath2D();\n    return this;\n  }\n\n  rotate(radian: number, centerX = 0, centerY = 0) {\n    /// 移动的是坐标系\n    this.translate(centerX, centerY);\n    this.context.rotate(radian);\n    if (this.customContext) {\n      this.customContext.rotate(radian);\n    }\n    this.currentMatrix = this.currentMatrix.rotate(radian);\n    this.translate(-centerX, -centerY);\n    this.changePath2D();\n    return this;\n  }\n\n  scale(x: number, y = x, centerX = 0, centerY = 0) {\n    /// 移动的是坐标系\n    this.translate(centerX, centerY);\n    this.context.scale(x, y);\n    if (this.customContext) {\n      this.customContext.scale(x, y);\n    }\n    this.currentMatrix = this.currentMatrix.scale(x, y);\n    this.translate(-centerX, -centerY);\n    this.changePath2D();\n    return this;\n  }\n\n  moveTo(x: number, y: number) {\n    this.context.moveTo(x, y);\n    if (this.customContext) this.customContext.moveTo(x, y);\n    if (this.enablePath2D) {\n      this.currentPath2D.moveTo(x, y);\n    }\n    return this;\n  }\n\n  lineTo(x: number, y: number) {\n    this.context.lineTo(x, y);\n    if (this.customContext) this.customContext.lineTo(x, y);\n    if (this.enablePath2D) {\n      this.currentPath2D.lineTo(x, y);\n    }\n    return this;\n  }\n\n  arc(\n    x: number,\n    y: number,\n    radius: number,\n    startAngle: number,\n    endAngle: number,\n    counterClockwise?: boolean\n  ) {\n    this.context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n    if (this.customContext)\n      this.customContext.arc(\n        x,\n        y,\n        radius,\n        startAngle,\n        endAngle,\n        counterClockwise ? -1 : 1\n      );\n    if (this.enablePath2D) {\n      this.currentPath2D.arc(\n        x,\n        y,\n        radius,\n        startAngle,\n        endAngle,\n        counterClockwise\n      );\n    }\n    return this;\n  }\n\n  arcTo(x1: number, y1: number, x2: number, y2: number, radius: number) {\n    this.context.arcTo(x1, y1, x2, y2, radius);\n    if (this.customContext) this.customContext.arcTo(x1, y1, x2, y2, radius);\n    if (this.enablePath2D) {\n      this.currentPath2D.arcTo(x1, y1, x2, y2, radius);\n    }\n    return this;\n  }\n\n  ellipse(\n    x: number,\n    y: number,\n    radiusX: number,\n    radiusY: number,\n    rotation: number,\n    startAngle: number,\n    endAngle: number,\n    counterClockwise?: boolean\n  ) {\n    this.context.ellipse(\n      x,\n      y,\n      radiusX,\n      radiusY,\n      rotation,\n      startAngle,\n      endAngle,\n      counterClockwise\n    );\n    /// customContext Not yet implemented\n    if (this.enablePath2D) {\n      this.currentPath2D.ellipse(\n        x,\n        y,\n        radiusX,\n        radiusY,\n        rotation,\n        startAngle,\n        endAngle,\n        counterClockwise\n      );\n    }\n    return this;\n  }\n\n  quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n    this.context.quadraticCurveTo(cpx, cpy, x, y);\n    if (this.customContext) this.customContext.quadraticCurveTo(cpx, cpy, x, y);\n    if (this.enablePath2D) {\n      this.currentPath2D.quadraticCurveTo(cpx, cpy, x, y);\n    }\n    return this;\n  }\n\n  bezierCurveTo(\n    cp1x: number,\n    cp1y: number,\n    cp2x: number,\n    cp2y: number,\n    x: number,\n    y: number\n  ) {\n    this.context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    if (this.customContext)\n      this.customContext.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    if (this.enablePath2D) {\n      this.currentPath2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    }\n    return this;\n  }\n\n  rect(x: number, y: number, w: number, h: number) {\n    this.context.rect(x, y, w, h);\n    if (this.customContext) this.customContext.rect(x, y, w, h);\n    if (this.enablePath2D) {\n      this.currentPath2D.rect(x, y, w, h);\n    }\n    return this;\n  }\n\n  // { 0: \"#ffffff\", 1: \"#ff0000\" }\n  createLinearGradient(\n    x1: number,\n    y1: number,\n    x2: number,\n    y2: number,\n    colorStops?: Record<number, string>\n  ) {\n    const gradient: CanvasGradient = this.context.createLinearGradient(\n      x1,\n      y1,\n      x2,\n      y2\n    );\n    // const gradientCustom: CustomCanvasGradient =\n    //   this.customContext.createLinearGradient(x1, y1, x2, y2);\n    if (colorStops) {\n      Object.entries(colorStops).forEach(([key, value]) => {\n        gradient.addColorStop(parseFloat(key), value);\n        // gradientCustom.addColorStop(parseFloat(key), value);\n      });\n    }\n    return gradient;\n    // return {\n    //   gradient\n    //   // gradientCustom\n    // };\n  }\n\n  createRadialGradient(\n    x0: number,\n    y0: number,\n    r0: number,\n    x1: number,\n    y1: number,\n    r1: number,\n    colorStops?: Record<number, string>\n  ) {\n    const gradient: CanvasGradient = this.context.createRadialGradient(\n      x0,\n      y0,\n      r0,\n      x1,\n      y1,\n      r1\n    );\n    // const gradientCustom: CustomCanvasGradient =\n    //   this.customContext.createRadialGradient(x0, y0, r0, x1, y1, r1);\n    if (colorStops) {\n      Object.entries(colorStops).forEach(([key, value]) => {\n        gradient.addColorStop(parseFloat(key), value);\n        // gradientCustom.addColorStop(parseFloat(key), value);\n      });\n    }\n    return gradient;\n    // return {\n    //   gradient\n    //   // gradientCustom\n    // };\n  }\n\n  //  const image = new Image();\n  //  image.src = \"../assets/images/picture.jpg\";\n  //  image.onload = function () {\n  //    co.drawImage(image);\n  //  };\n  drawImage(\n    element:\n      | HTMLOrSVGImageElement\n      | HTMLVideoElement\n      | HTMLCanvasElement\n      | ImageBitmap\n      | OffscreenCanvas,\n    ...args: number[]\n  ) {\n    if (args.length === 0) {\n      this.context.drawImage(element, 0, 0);\n    } else if (args.length === 2) {\n      const dx = args[0];\n      const dy = args[1];\n      this.context.drawImage(element, dx, dy);\n    } else if (args.length === 4) {\n      const dx = args[0];\n      const dy = args[1];\n      const dw = args[2];\n      const dh = args[3];\n      this.context.drawImage(element, dx, dy, dw, dh);\n    } else if (args.length === 8) {\n      const sx = args[0];\n      const sy = args[1];\n      const sw = args[2];\n      const sh = args[3];\n      const dx = args[4];\n      const dy = args[5];\n      const dw = args[6];\n      const dh = args[7];\n      this.context.drawImage(element, sx, sy, sw, sh, dx, dy, dw, dh);\n    } else {\n      throw new Error(\n        \"Invalid number of arguments passed to drawImage: \" + args.length\n      );\n    }\n    if (this.customContext) this.customContext.drawImage(element, ...args);\n    return this;\n  }\n\n  getImageData(\n    sx = 0,\n    sy = 0,\n    sw = this.canvas.width,\n    sh = this.canvas.height,\n    settings?: ImageDataSettings | undefined\n  ): ImageData {\n    return this.context.getImageData(sx, sy, sw, sh, settings);\n    /// customContext Not yet implemented\n  }\n\n  putImageData(imageData: ImageData, dx = 0, dy = 0) {\n    return this.context.putImageData(imageData, dx, dy);\n    /// customContext Not yet implemented\n  }\n\n  createPattern(\n    image:\n      | HTMLImageElement\n      | SVGImageElement\n      | HTMLVideoElement\n      | HTMLCanvasElement\n      | ImageBitmap\n      | OffscreenCanvas,\n    repetition: \"repeat\" | \"repeat-x\" | \"repeat-y\" | \"no-repeat\" | null\n  ): CanvasPattern | null {\n    return this.context.createPattern(image, repetition);\n    /// customContext Not yet implemented\n  }\n\n  toRawSVG() {\n    if (this.customContext) {\n      const serializedSVG: string = this.customContext.getSerializedSvg(true);\n      const svgElement: SVGElement = this.customContext.getSvg();\n      return { raw: serializedSVG, element: svgElement };\n    } else {\n      return { raw: \"\", element: null };\n    }\n  }\n}\n\nexport default YZCanvasContext;\n","import { Subject } from \"rxjs\";\nimport {\n  extractNumber,\n  randomUUID,\n  maxDotNumber,\n  toKebab,\n  withinErrorMarginNumber,\n  Color,\n  distance,\n  angle,\n  polar,\n  toDegree,\n  toRadian\n} from \"@zyzgroup/core-common\";\nimport { Arc, L, PathD } from \"./line\";\nimport {\n  absolutizeSVGPath,\n  isSVGPath,\n  parseSVGPath,\n  SVGParse,\n  SVGParsedPathData\n} from \"../../svg\";\nimport { YZCanvasContext } from \"./canvas\";\nimport { parseTransformToMatrix, Matrix, rotatePoint } from \"../../math\";\nimport Timeline, { TweenRawOptions, TweenValue } from \"../../animate/Timeline\";\nimport { MousePointGroup } from \"../../dom\";\n\nexport type ShapeBaseOptions = {\n  // 强制设置 SVG path d, 优先级比 toSVGPathData() 高\n  // 传入 initD ，即代表为 静态Shape\n  initD?: string | SVGParsedPathData[] | PathD;\n};\n\nexport type ShapeAttributeOptions = {\n  // 属性\n  attrs?: Record<string, string | CanvasGradient>;\n  // 样式\n  style?: Record<string, string>;\n};\n\nexport type ShapeTransformOptions = {\n  // transform origin: 相对于自身（0,0）的坐标\n  centerX?: number;\n  centerY?: number;\n\n  // translate: 相对于自身（0,0）的坐标\n  x?: number;\n  y?: number;\n\n  // rotate: 相对于自身\n  degree?: number;\n\n  // scale: 相对于自身\n  scale?: number;\n  scaleX?: number;\n  scaleY?: number;\n};\n\nexport type ShapeAnimateOptions = {\n  // 速度\n  vx?: number;\n  vy?: number;\n\n  // 加速度\n  ax?: number;\n  ay?: number;\n\n  // 重量\n  mass?: number;\n};\nexport type ShapeAnimateConstantOptions = {\n  // 重力常量，例如 0.1 0.5\n  gravity?: number;\n  // 是否开启万有引力\n  enableGravityBetweenObjects?: boolean;\n\n  // 摩擦系数常量，例如 1\n  friction?: number;\n\n  // 例如 0.05\n  easing?: number;\n\n  // 例如 0.03 0.0005\n  spring?: number;\n  // 例如 100\n  springLength?: number;\n\n  // 回弹检测\n  wall?: {\n    x: number;\n    y: number;\n    width: number;\n    height: number;\n    cycle?: boolean;\n    // 回弹常量，例如 -1\n    bounce?: number;\n  };\n\n  // 是否开启碰撞检测\n  enableCollision?: boolean;\n\n  enableSpringMassAlpha?: boolean;\n};\n\nexport type ShapeDrawOptions = {\n  // 是否可交互: 性能影响，可关闭检测 isMouseIn\n  interactive?: boolean;\n\n  // 是否可拖拽\n  drag?: {\n    enable?: boolean;\n    // 如果 parent.combo.shapes 其中一个 drag 了，自己也跟着 move\n    followSibling?: boolean;\n    // 拖拽时沿的路线，相对值\n    alongPath?: PathD;\n  };\n};\n\nexport type ShapeOptions = ShapeBaseOptions &\n  ShapeAttributeOptions &\n  ShapeTransformOptions &\n  ShapeAnimateOptions &\n  ShapeDrawOptions;\n\nexport class Shape {\n  [index: string | number | symbol]: any;\n\n  // this.shouldUpdatePathD 交给子类变更\n  public shouldUpdatePathD = false;\n  public shouldUpdateTransformPathD = false;\n  public shouldUpdateSVGElInDraw = false;\n  public shouldUpdateMInDraw = true;\n  public shouldUpdateAttrsInDraw = true;\n  public shouldUpdateStyleInDraw = true;\n\n  public id: string;\n  public initD?: string | SVGParsedPathData[] | PathD;\n  public d?: PathD;\n  public parent?: {\n    combo: ShapeCombo;\n    dX: number;\n    dY: number;\n    dDegree: number;\n    dScaleX: number;\n    dScaleY: number;\n  };\n\n  public attrs: Record<string, string | CanvasGradient> = {};\n  public style: Record<string, string> = {};\n\n  private initCenterX?: number;\n  private initCenterY?: number;\n\n  private _x: number;\n  private _y: number;\n\n  private _degree: number;\n\n  private _scaleX: number;\n  private _scaleY: number;\n\n  public vx: number;\n  public vy: number;\n  public ax: number;\n  public ay: number;\n  public mass: number;\n\n  public interactive: boolean;\n  public drag?: ShapeDrawOptions[\"drag\"];\n\n  public transform$ = new Subject<{\n    dX?: number;\n    dY?: number;\n    dDegree?: number;\n    dScaleX?: number;\n    dScaleY?: number;\n  }>();\n  private transformSubscription: any;\n\n  // DrawContext 动态注入参数\n  public isMouseIn = false;\n  public isDragging = false;\n  public m?: Matrix | DOMMatrix;\n  public el?: HTMLElement | SVGElement;\n\n  constructor(options?: ShapeOptions) {\n    this.id = randomUUID();\n    this.initD = options?.initD;\n\n    this.setAttr({\n      // \"paint-order\": \"markers stroke fill\", // 先 stroke 再 fill\n      // \"paint-order\": \"fill stroke markers\", // default\n      stroke: \"none\",\n      fill: \"none\"\n      // \"pointerEvents\": \"none\",\n    });\n    if (options?.attrs) {\n      this.setAttr(options.attrs);\n    }\n    if (options?.style) {\n      this.setStyle(options.style);\n    }\n\n    this.initCenterX = options?.centerX;\n    this.initCenterY = options?.centerY;\n\n    this._x = options?.x || 0;\n    this._y = options?.y || 0;\n\n    this._degree = options?.degree || 0;\n\n    this._scaleX = 1;\n    this._scaleY = 1;\n    if (options?.scale !== void 0) {\n      this._scaleX = options.scale;\n      this._scaleY = options.scale;\n    }\n    if (options?.scaleX !== void 0) {\n      this._scaleX = options.scaleX;\n    }\n    if (options?.scaleY !== void 0) {\n      this._scaleY = options.scaleY;\n    }\n\n    this.vx = options?.vx || 0;\n    this.vy = options?.vy || 0;\n    this.ax = options?.ax || 0;\n    this.ay = options?.ay || 0;\n    this.mass = options?.mass || 1;\n\n    this.interactive =\n      typeof options?.interactive == \"boolean\" ? options?.interactive : true;\n    this.drag = options?.drag;\n\n    // return new Proxy(this, {\n    //   set(target, prop, value) {\n    //     // console.log(`Property ${String(prop)} is being set to ${value}`);\n    //     if (\n    //       prop == \"_x\" ||\n    //       prop == \"_y\" ||\n    //       prop == \"_degree\" ||\n    //       prop == \"_scaleX\" ||\n    //       prop == \"_scaleY\"\n    //     ) {\n    //       // console.log(`transform 不变更 PathD`);\n    //     } else {\n    //       // console.log(`Should Change PathD!`);\n    //       (this as Shape).shouldUpdatePathD = true;\n    //     }\n    //     target[prop] = value;\n    //     return true;\n    //   }\n    // });\n\n    this.transformSubscription = this.transform$.subscribe(() => {\n      // 提升性能：延迟到使用时再计算\n      this.shouldUpdateTransformPathD = true;\n      this.shouldUpdateMInDraw = true;\n    });\n  }\n\n  public destroy() {\n    this.transformSubscription.unsubscribe();\n  }\n\n  // 基操\n  public moveTo(x: number, y: number) {\n    const prevX = this._x;\n    const prevY = this._y;\n    if (prevX !== x || prevY !== y) {\n      this._x = x;\n      this._y = y;\n      this.transform$.next({ dX: x - prevX, dY: y - prevY });\n    }\n  }\n  public move(dx: number, dy = 0) {\n    this.moveTo(this._x + dx, this._y + dy);\n  }\n  public moveXTo(x: number) {\n    this.moveTo(x, this._y);\n  }\n  public moveX(dx: number) {\n    this.moveTo(this._x + dx, this._y);\n  }\n  public moveYTo(y: number) {\n    this.moveTo(this._x, y);\n  }\n  public moveY(dy: number) {\n    this.moveTo(this._x, this._y + dy);\n  }\n  public get x(): number {\n    return this._x;\n  }\n  // 基操\n  public set x(v: number) {\n    if (this._x !== v) {\n      this.transform$.next({ dX: v - this._x });\n      this._x = v;\n    }\n  }\n  public get y(): number {\n    return this._y;\n  }\n  // 基操\n  public set y(v: number) {\n    if (this._y !== v) {\n      this.transform$.next({ dY: v - this._y });\n      this._y = v;\n    }\n  }\n  // 基操\n  public rotateTo(degree: number) {\n    if (this._degree !== degree) {\n      this.transform$.next({ dDegree: degree - this._degree });\n      this._degree = degree;\n    }\n  }\n  public rotate(degree: number) {\n    this.rotateTo(this._degree + degree);\n  }\n  public get degree(): number {\n    return this._degree;\n  }\n  // 基操\n  public set degree(v: number) {\n    if (this._degree !== v) {\n      this.transform$.next({ dDegree: v - this._degree });\n      this._degree = v;\n    }\n  }\n  // 基操\n  public scaleTo(scaleX: number, scaleY?: number) {\n    const prevScaleX = this._scaleX;\n    const prevScaleY = this._scaleY;\n    if (this._scaleX !== scaleX || this._scaleY !== (scaleY || scaleX)) {\n      this._scaleX = scaleX;\n      this._scaleY = scaleY || scaleX;\n      this.transform$.next({\n        dScaleX: this._scaleX / prevScaleX,\n        dScaleY: this._scaleY / prevScaleY\n      });\n    }\n  }\n  public scale(scaleX: number, scaleY?: number) {\n    this.scaleTo(this._scaleX * scaleX, this._scaleY * (scaleY || scaleX));\n  }\n  public get scaleX(): number {\n    return this._scaleX;\n  }\n  // 基操\n  public set scaleX(v: number) {\n    if (this._scaleX !== v) {\n      this.transform$.next({\n        dScaleX: v / this._scaleX\n      });\n      this._scaleX = v;\n    }\n  }\n  public get scaleY(): number {\n    return this._scaleY;\n  }\n  // 基操\n  public set scaleY(v: number) {\n    if (this._scaleY !== v) {\n      this.transform$.next({\n        dScaleY: v / this._scaleY\n      });\n      this._scaleY = v;\n    }\n  }\n\n  // 无法在 constructor 中获得 子类.toSVGPathData()\n  public pathD(force?: PathD): PathD {\n    if (force) {\n      this.d = force;\n      this.shouldUpdateTransformPathD = true;\n      this.shouldUpdateSVGElInDraw = true;\n    } else if (this.initD) {\n      // 静态-Shape 可以缓存\n      if (!this.d) {\n        this.d =\n          this.initD instanceof PathD ? this.initD : new PathD(this.initD);\n      }\n    } else {\n      // 解决性能瓶颈：加入缓存, 减少计算, transform 不变更 PathD\n      // this.shouldUpdatePathD 交给子类变更\n      if (!this.d || this.shouldUpdatePathD) {\n        // 子类.toSVGPathData() 可能会动态变化， 所以间歇缓存\n        this.d = new PathD(this.toSVGPathData());\n        this.shouldUpdatePathD = false;\n        this.shouldUpdateTransformPathD = true;\n        this.shouldUpdateSVGElInDraw = true;\n      }\n    }\n    return this.d;\n  }\n\n  protected cachedTransformedPathD?: PathD;\n  public transformPathD(): PathD {\n    if (!this.m) {\n      // 初次计算，与 DrawContext 内一致\n      // transform origin - 不缓存, 直接使用 getBoundingClientRectCenter， 间接使用 getBoundingClientRect\n      const { x: centerX, y: centerY } = this.transformOrigin();\n      let centerXSelf = 0;\n      let centerYSelf = 0;\n      if (\n        this.parent?.dDegree ||\n        this.parent?.dScaleX !== 1 ||\n        this.parent?.dScaleY !== 1\n      ) {\n        const tos = this.transformOrigin(true);\n        centerXSelf = tos.x;\n        centerYSelf = tos.y;\n      }\n      // 移动的是坐标系 the order of these are important !\n      const m = new Matrix();\n      // 公共\n      m.translate(\n        this.x + (this.parent?.dX || 0),\n        this.y + (this.parent?.dY || 0)\n      );\n      m.rotate(this.degree, centerX, centerY);\n      m.scale(this.scaleX, this.scaleY, centerX, centerY);\n      // 自己\n      if (this.parent?.dDegree) {\n        m.rotate(this.parent.dDegree, centerXSelf, centerYSelf);\n      }\n      if (this.parent?.dScaleX !== 1 || this.parent?.dScaleY !== 1) {\n        m.scale(\n          this.parent?.dScaleX || 1,\n          this.parent?.dScaleY || 1,\n          centerXSelf,\n          centerYSelf\n        );\n      }\n      // 缓存计算结果\n      this.m = m;\n    }\n    if (this.shouldUpdateTransformPathD || !this.cachedTransformedPathD) {\n      this.cachedTransformedPathD = this.pathD().transform({ m: this.m });\n      this.shouldUpdateTransformPathD = false;\n    }\n    return this.cachedTransformedPathD;\n  }\n\n  public getBaseOptions() {\n    return {\n      initD: this.initD,\n\n      attrs: { ...this.attrs },\n      style: { ...this.style },\n\n      centerX: this.initCenterX,\n      centerY: this.initCenterY,\n\n      x: this._x,\n      y: this._y,\n\n      degree: this._degree,\n\n      scaleX: this._scaleX,\n      scaleY: this._scaleY,\n\n      vx: this.vx,\n      vy: this.vy,\n      ax: this.ax,\n      ay: this.ay,\n      mass: this.mass,\n\n      interactive: this.interactive,\n      drag: { ...this.drag }\n    };\n  }\n\n  public clone() {\n    const shape = this.cloneShape();\n    // if (this.parent) {\n    //   shape.parent = { ...this.parent };\n    // }\n    return shape;\n  }\n\n  // 子类需覆盖！\n  protected cloneShape() {\n    return new Shape(this.getBaseOptions());\n  }\n\n  // 供外部使用：基本属性变更\n  public update(options?: Partial<ShapeOptions>) {\n    this.shouldUpdatePathD = true;\n  }\n\n  // 优先级比 toSVGPathData() 高\n  // 使用相对值! transform 交给 DrawContext\n  public toSVGEl(): SVGElement | null {\n    // SVGElement = 子类覆盖!\n    return null;\n  }\n\n  // shape 内部定义\n  // 使用相对值! transform 交给 DrawContext\n  public toSVGPathData(): SVGParsedPathData[] {\n    // 子类需覆盖!\n    return [];\n  }\n\n  // 外部使用\n  // 使用相对值!\n  public toSVGPathD(): string {\n    return this.pathD().toSVGPathD();\n  }\n\n  // 使用相对值! transform 交给 DrawContext\n  // ctx.createLinearGradient 使用相对值\n  // 如果子类没有覆盖 toCanvasContext , 默认使用 PathD 的 toCanvasContext\n  // 如果子类覆盖 toCanvasContext , 则使用 原生canvas系统\n  public toCanvasContext(ctx: YZCanvasContext): void {\n    this.pathD().toCanvasContext(ctx);\n  }\n\n  // 子类可覆盖\n  // 相对坐标系原点 - 坐标系没有考虑 transform : translate rotate scale\n  public getBoundingClientRect(dot = 2) {\n    return this.pathD().getBoundingClientRect(dot);\n  }\n\n  // 相对坐标系原点 - 坐标系加入考虑 transform : translate rotate scale\n  public getRealBoundingClientRect(dot = 2) {\n    return this.transformPathD().getBoundingClientRect(dot);\n  }\n\n  // 相对坐标系原点 - 坐标系没有考虑 transform : translate rotate scale\n  public getBoundingClientRectCenter(dot = 2) {\n    return this.pathD().getBoundingClientRectCenter(dot);\n  }\n\n  // 相对坐标系原点 - 坐标系加入考虑 transform : translate rotate scale\n  public getRealBoundingClientRectCenter(dot = 2) {\n    return this.transformPathD().getBoundingClientRectCenter(dot);\n  }\n\n  // transform origin - 不缓存, 直接使用 getBoundingClientRectCenter， 间接使用 getBoundingClientRect\n  // 相对坐标系原点 - 坐标系没有考虑 transform : translate rotate scale\n  public transformOrigin(forceSelf = false, dot = 2): { x: number; y: number } {\n    let x = 0;\n    let y = 0;\n    if (this.parent && !forceSelf) {\n      const parentRectCenter =\n        this.parent.combo.getBoundingClientRectCenter(dot);\n      x = parentRectCenter.x - this.parent.dX;\n      y = parentRectCenter.y - this.parent.dY;\n    } else {\n      if (\n        typeof this.initCenterX == \"undefined\" &&\n        typeof this.initCenterY == \"undefined\"\n      ) {\n        // 没有强制设置 transform origin 时，默认为 中心点\n        const selfRectCenter = this.getBoundingClientRectCenter(dot);\n        x = selfRectCenter.x;\n        y = selfRectCenter.y;\n      } else {\n        // 强制设置 transform origin\n        x = this.initCenterX || 0;\n        y = this.initCenterY || 0;\n      }\n    }\n    return { x, y };\n  }\n\n  public isPointInPath(\n    ctx: YZCanvasContext | SVGElement,\n    x: number,\n    y: number\n  ): boolean {\n    // Canvas\n    if (ctx instanceof YZCanvasContext) {\n      return ctx.isPointInPath(new Path2D(this.toSVGPathD()), x, y);\n    }\n    // SVG\n    if (this.el instanceof SVGGeometryElement) {\n      // 以下也是可用的，但性能未知\n      const matrix = this.el.getCTM();\n      if (matrix) {\n        const invertedMatrix = matrix.inverse();\n        return this.el.isPointInFill({\n          x: invertedMatrix.a * x + invertedMatrix.c * y + invertedMatrix.e,\n          y: invertedMatrix.b * x + invertedMatrix.d * y + invertedMatrix.f\n        });\n      }\n      // 以下也是可用的，但性能未知\n      // if (this.m) {\n      //   const invertedMatrix =\n      //     this.m instanceof Matrix\n      //       ? this.m.clone().inverse()\n      //       : this.m.inverse();\n      //   if (invertedMatrix) {\n      //     return this.el.isPointInFill(invertedMatrix.transformPoint({ x, y }));\n      //   }\n      // }\n    }\n    return false;\n  }\n\n  public isPointInStroke(\n    ctx: YZCanvasContext | SVGElement,\n    x: number,\n    y: number\n  ): boolean {\n    // Canvas\n    if (ctx instanceof YZCanvasContext) {\n      return ctx.isPointInStroke(new Path2D(this.toSVGPathD()), x, y);\n    }\n    // SVG\n    if (this.el instanceof SVGGeometryElement) {\n      // 以下也是可用的，但性能未知\n      const matrix = this.el.getCTM();\n      if (matrix) {\n        const invertedMatrix = matrix.inverse();\n        return this.el.isPointInStroke({\n          x: invertedMatrix.a * x + invertedMatrix.c * y + invertedMatrix.e,\n          y: invertedMatrix.b * x + invertedMatrix.d * y + invertedMatrix.f\n        });\n      }\n      // 以下也是可用的，但性能未知\n      // if (this.m) {\n      //   const invertedMatrix =\n      //     this.m instanceof Matrix\n      //       ? this.m.clone().inverse()\n      //       : this.m.inverse();\n      //   if (invertedMatrix) {\n      //     return this.el.isPointInStroke(\n      //       invertedMatrix.transformPoint({ x, y })\n      //     );\n      //   }\n      // }\n    }\n    // UNDO: node-canvas return undefined\n    return false;\n  }\n\n  public setStyle(obj: Record<string, string>): void {\n    Object.assign(this.style, obj);\n    this.shouldUpdateStyleInDraw = true;\n  }\n\n  public setAttr(obj: Record<string, string | CanvasGradient>): void;\n  public setAttr(name: string, value: string | CanvasGradient): void;\n  public setAttr(\n    nameOrObj: string | Record<string, string | CanvasGradient>,\n    value?: string | CanvasGradient\n  ): void {\n    if (typeof nameOrObj !== \"string\") {\n      for (const k in nameOrObj) {\n        const v = nameOrObj[k];\n        if (v && v != this.getAttr(k)) {\n          this.attrs[toKebab(k)] = v;\n          this.shouldUpdateAttrsInDraw = true;\n        }\n      }\n    } else {\n      if (value && value != this.getAttr(nameOrObj)) {\n        this.attrs[toKebab(nameOrObj)] = value;\n        this.shouldUpdateAttrsInDraw = true;\n      }\n    }\n  }\n\n  public getAttr(\n    name: string,\n    defaultValue: string | CanvasGradient\n  ): string | CanvasGradient;\n  public getAttr(name: string): string | CanvasGradient | undefined;\n  public getAttr(\n    name: string,\n    defaultValue?: string | CanvasGradient\n  ): string | CanvasGradient | undefined {\n    return this.attrs[name] || this.attrs[toKebab(name)] || defaultValue;\n  }\n\n  public hasAttr(name: string): boolean {\n    return !!this.getAttr(name);\n  }\n\n  public animate(\n    options?: Pick<ShapeAnimateConstantOptions, \"gravity\" | \"friction\">\n  ) {\n    // 加速度\n    this.vx += this.ax;\n    this.vy += this.ay;\n\n    // 重力\n    const gravity = options?.gravity || 0;\n    this.vy += gravity;\n\n    // 摩擦力方式一\n    // const friction = options?.friction || 0;\n    // if (friction > 0) {\n    //   const radian = Math.atan2(this.vy, this.vx);\n    //   let speed = Math.sqrt(this.vx * this.vx + this.vy * this.vy);\n    //   if (speed > friction) {\n    //     speed -= friction;\n    //   } else {\n    //     speed = 0;\n    //   }\n    //   this.vx = Math.cos(radian) * speed;\n    //   this.vy = Math.sin(radian) * speed;\n    // }\n\n    // 摩擦力方式二\n    const friction = options?.friction || 1;\n    this.vx *= friction;\n    this.vy *= friction;\n\n    this.move(this.vx, this.vy);\n  }\n\n  public animateEaseTo(\n    target: { x: number; y: number },\n    options?: Pick<\n      ShapeAnimateConstantOptions,\n      \"easing\" | \"gravity\" | \"friction\"\n    >\n  ) {\n    const easing = options?.easing || 0.05;\n    const dx = target.x - this.x;\n    const dy = target.y - this.y;\n    this.vx = dx * easing;\n    this.vy = dy * easing;\n    this.animate(options);\n  }\n\n  public animateSpringTo(\n    target: { x: number; y: number } | { x: number; y: number }[],\n    options?: Pick<\n      ShapeAnimateConstantOptions,\n      \"spring\" | \"gravity\" | \"friction\"\n    >\n  ) {\n    const spring = options?.spring || 0.03;\n    (Array.isArray(target) ? target : [target]).forEach((t) => {\n      const dx = t.x - this.x;\n      const dy = t.y - this.y;\n      const ax = dx * spring;\n      const ay = dy * spring;\n      this.vx += ax;\n      this.vy += ay;\n    });\n    this.animate({ friction: 0.9, ...options });\n  }\n\n  public getSpringMassAlphaTo(\n    target: Shape,\n    options?: Pick<\n      ShapeAnimateConstantOptions,\n      \"spring\" | \"springLength\" | \"gravity\" | \"friction\"\n    >\n  ): number {\n    const springLength = options?.springLength || 100;\n    const spring = options?.spring || 0.0005;\n    const dx = target.x - this.x;\n    const dy = target.y - this.y;\n    const dist = Math.sqrt(dx * dx + dy * dy);\n    if (dist < springLength) {\n      const ax = dx * spring;\n      const ay = dy * spring;\n      this.vx += ax / this.mass;\n      this.vy += ay / this.mass;\n      target.vx -= ax / target.mass;\n      target.vy -= ay / target.mass;\n      return 1 - dist / springLength; // alpha: 0 ~ 1\n    }\n    return 0;\n  }\n\n  public followTo(target: { x: number; y: number }, length = 3) {\n    this.rotateTo(toDegree(angle(this.x, this.y, target.x, target.y)));\n    const { dx: vx, dy: vy } = polar(toRadian(this.degree), length);\n    this.vx = vx;\n    this.vy = vy;\n    this.animate();\n  }\n\n  public followAccelerationTo(target: { x: number; y: number }, length = 0.05) {\n    this.rotateTo(toDegree(angle(this.x, this.y, target.x, target.y)));\n    const { dx: ax, dy: ay } = polar(toRadian(this.degree), length);\n    this.ax = ax;\n    this.ay = ay;\n    this.animate();\n  }\n\n  // 物体之间引力\n  public gravitateTo(target: Shape) {\n    const dx = target.x - this.x;\n    const dy = target.y - this.y;\n    const distSQ = dx * dx + dy * dy;\n    const dist = Math.sqrt(distSQ);\n    const force = (this.mass * target.mass) / distSQ;\n    const ax = (force * dx) / dist;\n    const ay = (force * dy) / dist;\n    this.vx += ax / this.mass;\n    this.vy += ay / this.mass;\n    target.vx -= ax / target.mass;\n    target.vy -= ay / target.mass;\n  }\n\n  // 碰撞检测\n  public checkCollision(target: Shape) {\n    // 子类按需重写\n    const dx = target.x - this.x;\n    const dy = target.y - this.y;\n    const dist = Math.sqrt(dx * dx + dy * dy);\n    const {\n      x: targetX,\n      y: targetY,\n      width: targetWidth,\n      height: targetHeight\n    } = target.getBoundingClientRect();\n    const { x: targetCenterX, y: targetCenterY } =\n      target.getBoundingClientRectCenter();\n    const { x, y, width, height } = this.getBoundingClientRect();\n    const { x: centerX, y: centerY } = this.getBoundingClientRectCenter();\n    // if (dist < this.ballRadius + target.ballRadius) {\n    if (\n      dist < Math.abs(targetCenterX - targetX) + Math.abs(centerX - x) ||\n      dist < Math.abs(targetCenterY - targetY) + Math.abs(centerY - y)\n    ) {\n      const radian = Math.atan2(dy, dx);\n      // rotate ball0's position\n      const pos0 = { x: 0, y: 0 };\n      // rotate ball1's position\n      const pos1 = rotatePoint(-radian, dx, dy);\n      // rotate ball0's velocity\n      const vel0 = rotatePoint(-radian, this.vx, this.vy);\n      // rotate ball1's velocity\n      const vel1 = rotatePoint(-radian, target.vx, target.vy);\n      // collision reaction\n      const vxTotal = vel0.x - vel1.x;\n      vel0.x =\n        ((this.mass - target.mass) * vel0.x + 2 * target.mass * vel1.x) /\n        (this.mass + target.mass);\n      vel1.x = vxTotal + vel0.x;\n      // update position - to avoid objects becoming stuck together\n      const absV = Math.abs(vel0.x) + Math.abs(vel1.x);\n      const overlap =\n        this.ballRadius + target.ballRadius - Math.abs(pos0.x - pos1.x);\n      pos0.x += (vel0.x / absV) * overlap;\n      pos1.x += (vel1.x / absV) * overlap;\n      // rotate positions back\n      const pos0F = rotatePoint(radian, pos0.x, pos0.y);\n      const pos1F = rotatePoint(radian, pos1.x, pos1.y);\n      // adjust positions to actual screen positions\n      target.moveTo(this.x + pos1F.x, this.y + pos1F.y);\n      this.moveTo(this.x + pos0F.x, this.y + pos0F.y);\n      // rotate velocities back\n      const vel0F = rotatePoint(radian, vel0.x, vel0.y);\n      const vel1F = rotatePoint(radian, vel1.x, vel1.y);\n      this.vx = vel0F.x;\n      this.vy = vel0F.y;\n      target.vx = vel1F.x;\n      target.vy = vel1F.y;\n    }\n  }\n\n  // 回弹检测 或 重回检测\n  public checkWall(options?: ShapeAnimateConstantOptions) {\n    // 子类按需重写\n    if (!options?.wall) {\n      return;\n    }\n    const bounce =\n      typeof options.wall.bounce == \"number\" ? options.wall.bounce : -1;\n    const left = options.wall.x;\n    const top = options.wall.y;\n    const right = options.wall.x + options.wall.width;\n    const bottom = options.wall.y + options.wall.height;\n    const { x, y, width, height } = this.getBoundingClientRect();\n    // 碰撞后是 回弹 还是 重回\n    const isCycle = options.wall.cycle || false;\n    if (!isCycle) {\n      // 回弹检测\n      if (this.x + x + width > right) {\n        this.moveXTo(right - (x + width));\n        this.vx *= bounce;\n      } else if (this.x + x < left) {\n        this.moveXTo(left + (x + width));\n        this.vx *= bounce;\n      }\n      if (this.y + y + height > bottom) {\n        this.moveYTo(bottom - (y + height));\n        this.vy *= bounce;\n      } else if (this.y + y < top) {\n        this.moveYTo(top + (y + height));\n        this.vy *= bounce;\n      }\n      // if (this.x + this.ballRadius > right) {\n      //   this.moveXTo(right - this.ballRadius);\n      //   this.vx *= bounce;\n      // } else if (this.x - this.ballRadius < left) {\n      //   this.moveXTo(left + this.ballRadius);\n      //   this.vx *= bounce;\n      // }\n      // if (this.y + this.ballRadius > bottom) {\n      //   this.moveYTo(bottom - this.ballRadius);\n      //   this.vy *= bounce;\n      // } else if (this.y - this.ballRadius < top) {\n      //   this.moveYTo(top + this.ballRadius);\n      //   this.vy *= bounce;\n      // }\n    } else {\n      // 重回视野\n      if (this.x + x > right) {\n        this.moveXTo(left - (x + width));\n      } else if (this.x + x + width < left) {\n        this.moveXTo(right - x);\n      }\n      if (this.y + y > bottom) {\n        this.moveYTo(top - (y + height));\n      } else if (this.y + y + height < top) {\n        this.moveYTo(bottom - y);\n      }\n    }\n  }\n\n  // 相对坐标系原点 - 坐标系没有考虑 transform : translate rotate scale\n  public getTotalLength(): number {\n    return this.transformPathD().getTotalLength();\n  }\n\n  // 相对坐标系原点 - 坐标系没有考虑 transform : translate rotate scale\n  // 获取插值方法1\n  public getPointAtLength(length: number): {\n    x: number;\n    y: number;\n    alpha: number;\n  } {\n    return this.transformPathD().getPointAtLength(length);\n  }\n\n  // 相对坐标系原点 - 坐标系没有考虑 transform : translate rotate scale\n  // 获取插值方法2 t (0.0 to 1.0)\n  public interpolate(t: number): { x: number; y: number } {\n    return this.transformPathD().interpolate(t);\n  }\n\n  // t (0.0 to 1.0)\n  public trailPath(st = 0, et = 1) {\n    const totalLength = this.getTotalLength();\n    const fromLength = st * totalLength;\n    const toLength = et * totalLength;\n    return {\n      subPathD: this.transformPathD().getSubPathD(fromLength, toLength),\n      point: this.getPointAtLength(toLength)\n    };\n  }\n\n  // frameDuration 1帧运行时间\n  public strokeDashTween(frameDuration = 1000, options?: TweenRawOptions) {\n    // 未 transform 之前的 totalLength\n    const totalLength = this.pathD().getTotalLength();\n    this.setAttr({\n      strokeDasharray: `${totalLength} ${totalLength}`,\n      strokeDashoffset: `${totalLength}`\n    });\n    const prevOnUpdate = options?.onUpdate;\n    const tl = new Timeline({ frameDuration });\n    tl.addTween(\n      { offset: totalLength },\n      { offset: 0 },\n      Object.assign(options || {}, {\n        onUpdate: (coords: TweenValue, elapsed: number) => {\n          this.setAttr(\"strokeDashoffset\", \"\" + maxDotNumber(coords.offset, 2));\n          prevOnUpdate?.(coords, elapsed);\n        }\n      })\n    );\n    tl.play();\n  }\n\n  // const rosetta = Shape.generateRosetta(120, 120, 55, 35, 6);\n  public static generateRosetta(\n    x: number,\n    y: number,\n    rx: number,\n    ry: number,\n    n: number\n  ): Shape {\n    if (n == 0) {\n      throw new Error(\"no dividing by zero, please\");\n    }\n    const lines: L[] = [];\n    const angle = 360 / n; // negative values of n are fine\n    for (let c = 0; c < n; c += 1) {\n      // need angle for each leaf of rosetta in radians\n      const theta = (angle * c * Math.PI) / 180;\n      // coords of farthest point from center for this leaf\n      const dx = x + 2 * rx * Math.cos(theta);\n      const dy = y + 2 * rx * Math.sin(theta);\n      lines.push(\n        new Arc({\n          x: x,\n          y: y,\n          rx,\n          ry,\n          xAxisRotate: angle * c,\n          largeArcFlag: 1,\n          sweepFlag: 1,\n          toX: dx,\n          toY: dy\n        })\n      );\n      lines.push(\n        new Arc({\n          x: dx,\n          y: dy,\n          rx,\n          ry,\n          xAxisRotate: angle * c,\n          largeArcFlag: 1,\n          sweepFlag: 1,\n          toX: x,\n          toY: y\n        })\n      );\n    }\n    return new Shape({ initD: PathD.fromLines(lines) });\n  }\n}\n\nexport type ShapeComboOptions = {\n  svg?: string;\n  forceWidth?: number;\n} & ShapeAttributeOptions &\n  ShapeTransformOptions &\n  ShapeDrawOptions;\n\nexport class ShapeCombo {\n  public shapes: Shape[] = [];\n\n  public svg?: string;\n  public forceWidth?: number;\n\n  public attrs: Record<string, string | CanvasGradient> = {};\n  public style: Record<string, string> = {};\n\n  public initCenterX?: number;\n  public initCenterY?: number;\n\n  public x: number;\n  public y: number;\n\n  public degree: number;\n\n  public scaleX: number;\n  public scaleY: number;\n\n  public interactive: boolean;\n  public drag?: ShapeDrawOptions[\"drag\"];\n\n  constructor(options?: ShapeComboOptions) {\n    this.initCenterX = options?.centerX;\n    this.initCenterY = options?.centerY;\n\n    this.x = options?.x || 0;\n    this.y = options?.y || 0;\n\n    this.degree = options?.degree || 0;\n\n    this.scaleX = 1;\n    this.scaleY = 1;\n    if (options?.scale !== void 0) {\n      this.scaleX = options.scale;\n      this.scaleY = options.scale;\n    }\n    if (options?.scaleX !== void 0) {\n      this.scaleX = options.scaleX;\n    }\n    if (options?.scaleY !== void 0) {\n      this.scaleY = options.scaleY;\n    }\n\n    if (options?.attrs) {\n      this.setAttr(options.attrs);\n    }\n    if (options?.style) {\n      this.setStyle(options.style);\n    }\n\n    // UNDO：陆续添加到 getBaseOptions() addShape()\n    this.interactive =\n      typeof options?.interactive == \"boolean\" ? options?.interactive : true;\n    this.drag = options?.drag;\n\n    this.svg = options?.svg;\n    this.forceWidth = options?.forceWidth;\n\n    // get ShapeCombo from parse svg\n    if (options?.svg) {\n      // SVG LinePicture 强制中心点为（0,0）\n      this.initCenterX = 0;\n      this.initCenterY = 0;\n      let svgWidth = 0;\n      let svgHeight = 0;\n      let width = 0;\n      let height = 0;\n      const items = new SVGParse(options.svg).parse();\n      for (let i = 0, count = items.length; i < count; i++) {\n        const item = items[i];\n\n        if (item.type == \"viewbox\" && item.width && item.height) {\n          svgWidth = parseFloat(item.width);\n          svgHeight = parseFloat(item.height);\n          if (options.forceWidth) {\n            const aspectRatio = svgWidth / svgHeight;\n            width = options.forceWidth;\n            height = width / aspectRatio;\n          } else {\n            width = svgWidth;\n            height = svgHeight;\n          }\n          continue;\n        }\n\n        // 暂时只支持解析 path\n        if (item.type != \"path\") {\n          continue;\n        }\n        if (!isSVGPath(item.path)) {\n          continue;\n        }\n\n        const attrs: Record<string, string> = {};\n        for (const key in item) {\n          if (key === \"type\" || key === \"path\" || key === \"transform\") {\n            continue;\n          }\n          attrs[key] = item[key];\n        }\n\n        const pathDatas = absolutizeSVGPath(parseSVGPath(item.path));\n        // const pathDatas = relativeSVGPath(parseSVGPath(item.path));\n        const ds: SVGParsedPathData[][] = [];\n        let d: SVGParsedPathData[] = [];\n        for (let j = 0, allCount = pathDatas.length; j < allCount; j++) {\n          const data = pathDatas[j];\n          d.push(data);\n          // 每遇到一个 Z 就生成一个新的 PathD\n          if (data[0].toLowerCase() == \"z\") {\n            ds.push(d);\n            d = [];\n          }\n        }\n        if (d.length) {\n          ds.push(d);\n        }\n        ds.forEach((d) => {\n          const shape = new Shape({\n            attrs,\n            initD: d\n          });\n          if (item.transform) {\n            const matrix = parseTransformToMatrix(item.transform);\n            const s = matrix.split();\n            shape.moveTo(s.x, s.y);\n            shape.rotateTo(s.degree);\n            shape.scaleTo(s.scaleX, s.scaleY);\n          }\n          this.addShape(shape);\n        });\n      }\n\n      if (width && svgWidth && height && svgHeight) {\n        this.comboScale(width / svgWidth, height / svgHeight, true);\n      }\n    }\n  }\n\n  public destroy() {\n    this.shapes.forEach((s) => s.destroy());\n  }\n\n  public getBaseOptions() {\n    return {\n      svg: this.svg,\n      forceWidth: this.forceWidth,\n\n      attrs: { ...this.attrs },\n      style: { ...this.style },\n\n      centerX: this.initCenterX,\n      centerY: this.initCenterY,\n\n      x: this.x,\n      y: this.y,\n\n      degree: this.degree,\n\n      scaleX: this.scaleX,\n      scaleY: this.scaleY,\n\n      interactive: this.interactive,\n      drag: { ...this.drag }\n    };\n  }\n\n  public clone() {\n    const shapeCombo = this.cloneShapeCombo();\n\n    // shapeCombo.shapes 一般在 constructor 中以 addShape() 初始化了?\n    shapeCombo.shapes = this.shapes.map((s) => {\n      // s.clone()可以改写，用以复制「自定义属性」\n      const c = s.clone();\n      if (s.parent) {\n        c.parent = { ...s.parent, combo: shapeCombo };\n      }\n      return c;\n    });\n\n    return shapeCombo;\n  }\n\n  // 子类需覆盖！\n  protected cloneShapeCombo() {\n    return new ShapeCombo(this.getBaseOptions());\n  }\n\n  // 供外部使用：基本属性变更\n  public update(options?: Partial<ShapeComboOptions>) {\n    this.shapes.forEach((s) => s.update(options));\n  }\n\n  public addShape(\n    shape: Shape,\n    options?: {\n      dX?: number;\n      dY?: number;\n      dDegree?: number;\n      dScaleX?: number;\n      dScaleY?: number;\n      notCopyFromCombo?: boolean;\n    }\n  ) {\n    if (options?.notCopyFromCombo !== true) {\n      shape.setAttr(this.attrs);\n      shape.setStyle(this.style);\n      shape.interactive = shape.interactive || this.interactive;\n      shape.drag = { ...this.drag, ...shape.drag };\n    }\n    shape.parent = {\n      combo: this,\n      dX: options?.dX || 0,\n      dY: options?.dY || 0,\n      dDegree: options?.dDegree || 0,\n      dScaleX: options?.dScaleX || 1,\n      dScaleY: options?.dScaleY || 1\n    };\n    this.shapes.push(shape);\n  }\n\n  public comboMove(dx: number, dy: number, justChild = false) {\n    if (!justChild) {\n      this.x += dx;\n      this.y += dy;\n    }\n    this.shapes.forEach((s) => {\n      s.move(dx, dy);\n    });\n  }\n  public comboRotate(degree: number, justChild = false) {\n    if (!justChild) {\n      this.degree += degree;\n    }\n    this.shapes.forEach((s) => {\n      s.rotate(degree);\n    });\n  }\n  public comboScale(scaleX: number, scaleY?: number, justChild = false) {\n    if (!justChild) {\n      this.scaleX *= scaleX;\n      this.scaleY *= scaleY || scaleX;\n    }\n    this.shapes.forEach((s) => {\n      s.scale(scaleX, scaleY);\n    });\n  }\n\n  public comboTransform(\n    options?: {\n      x?: number;\n      y?: number;\n      degree?: number;\n      scale?: number;\n      scaleX?: number;\n      scaleY?: number;\n    },\n    justChild = false\n  ) {\n    if (typeof options?.x == \"number\" || typeof options?.y == \"number\") {\n      this.comboMove(options?.x || 0, options?.y || 0, justChild);\n    }\n    if (typeof options?.degree == \"number\") {\n      this.comboRotate(options?.degree || 0, justChild);\n    }\n    if (\n      typeof options?.scale == \"number\" ||\n      typeof options?.scaleX == \"number\" ||\n      typeof options?.scaleY == \"number\"\n    ) {\n      this.comboScale(\n        options?.scaleX || options?.scale || 1,\n        options?.scaleY || options?.scale || 1,\n        justChild\n      );\n    }\n  }\n\n  // 子类可覆盖\n  // 相对坐标系原点 - 坐标系没有考虑 transform : translate rotate scale\n  public getBoundingClientRect(dot = 2) {\n    const X: number[] = [];\n    const Y: number[] = [];\n    this.shapes.forEach((s) => {\n      const rect = s.getBoundingClientRect(dot);\n      X.push(rect.x, rect.x + rect.width);\n      Y.push(rect.y, rect.y + rect.height);\n    });\n    if (X.length == 0 || Y.length == 0) {\n      return { x: 0, y: 0, width: 0, height: 0 };\n    }\n    const xmin = Math.min(...X);\n    const ymin = Math.min(...Y);\n    const xmax = Math.max(...X);\n    const ymax = Math.max(...Y);\n    return {\n      x: maxDotNumber(xmin, dot),\n      y: maxDotNumber(ymin, dot),\n      width: maxDotNumber(xmax - xmin, dot),\n      height: maxDotNumber(ymax - ymin, dot)\n    };\n  }\n\n  // 相对坐标系原点 - 坐标系没有考虑 transform : translate rotate scale\n  public getBoundingClientRectCenter(dot = 2): { x: number; y: number } {\n    if (\n      typeof this.initCenterX == \"number\" &&\n      typeof this.initCenterY == \"number\"\n    ) {\n      // 强制设置了中心点\n      return { x: this.initCenterX, y: this.initCenterY };\n    }\n    const rect = this.getBoundingClientRect(dot);\n    return {\n      x: maxDotNumber(rect.x + rect.width * 0.5, dot),\n      y: maxDotNumber(rect.y + rect.height * 0.5, dot)\n    };\n  }\n\n  public setStyle(obj: Record<string, string>): void {\n    Object.assign(this.style, obj);\n    this.shapes.forEach((s) => {\n      s.setStyle(obj);\n    });\n  }\n\n  public setAttr(obj: Record<string, string | CanvasGradient>): void;\n  public setAttr(name: string, value: string | CanvasGradient): void;\n  public setAttr(\n    nameOrObj: string | Record<string, string | CanvasGradient>,\n    value?: string | CanvasGradient\n  ) {\n    if (typeof nameOrObj !== \"string\") {\n      for (const k in nameOrObj) {\n        const v = nameOrObj[k];\n        if (v && v != this.getAttr(k)) {\n          this.attrs[toKebab(k)] = v;\n        }\n      }\n      this.shapes.forEach((s) => {\n        s.setAttr(nameOrObj);\n      });\n    } else {\n      if (value && value != this.getAttr(nameOrObj)) {\n        this.attrs[toKebab(nameOrObj)] = value;\n        this.shapes.forEach((s) => {\n          s.setAttr(nameOrObj, value);\n        });\n      }\n    }\n  }\n\n  public getAttr(\n    name: string,\n    defaultValue: string | CanvasGradient\n  ): string | CanvasGradient;\n  public getAttr(name: string): string | CanvasGradient | undefined;\n  public getAttr(\n    name: string,\n    defaultValue?: string | CanvasGradient\n  ): string | CanvasGradient | undefined {\n    return this.attrs[name] || this.attrs[toKebab(name)] || defaultValue;\n  }\n\n  public hasAttr(name: string): boolean {\n    return !!this.getAttr(name);\n  }\n\n  // 从小到大排序\n  public sort(): void {\n    this.shapes\n      .map((shape) => {\n        return {\n          shape,\n          perimeter: shape.transformPathD().getPolymorphPointsPerimeter()\n        };\n      })\n      .sort((a, b) => b.perimeter - a.perimeter)\n      .map((a) => a.shape);\n  }\n\n  public expendTo(larger: ShapeCombo): void {\n    const largeLen = larger.shapes.length;\n    const smallLen = this.shapes.length;\n    if (largeLen < smallLen) {\n      return larger.expendTo(this);\n    }\n    for (let i = smallLen; i < largeLen; i++) {\n      const shape = larger.shapes[i];\n      // this.addShape(\n      //   new Shape({\n      //     initD: shape.transformPathD().clone()\n      //   }),\n      //   { notCopyFromCombo: true }\n      // );\n      this.addShape(\n        new Shape({\n          initD: shape.pathD().clone()\n        }),\n        {\n          dX: shape.x - this.x,\n          dY: shape.y - this.y,\n          dDegree: shape.degree - this.degree,\n          dScaleX: shape.scaleX / this.scaleX,\n          dScaleY: shape.scaleY / this.scaleY,\n          notCopyFromCombo: true\n        }\n      );\n    }\n  }\n\n  public strokeDashTween(\n    frameDuration?: number,\n    options?: Omit<TweenRawOptions, \"onStart\" | \"onUpdate\" | \"onComplete\"> & {\n      type?: \"parallel\" | \"sequence\";\n      onGroupStart?: () => void;\n      onGroupUpdate?: () => void;\n      onGroupComplete?: () => void;\n    }\n  ): void {\n    switch (options?.type) {\n      case \"sequence\":\n        this.shapes.forEach((s, i) => {\n          s.strokeDashTween(frameDuration, {\n            ...options, // 注意 options 浅拷贝\n            delay: i,\n            onStart: () => {\n              if (i == 0) {\n                options?.onGroupStart?.();\n              }\n            },\n            onUpdate: () => {\n              options?.onGroupUpdate?.();\n            },\n            onComplete: () => {\n              if (i == this.shapes.length - 1) {\n                options?.onGroupComplete?.();\n              }\n            }\n          });\n        });\n        break;\n      case \"parallel\":\n      default:\n        // eslint-disable-next-line no-case-declarations\n        const tl = new Timeline({ frameDuration });\n        // eslint-disable-next-line no-case-declarations\n        const from: TweenValue = {};\n        // eslint-disable-next-line no-case-declarations\n        const to: TweenValue = {};\n        this.shapes.forEach((s, i) => {\n          // 未 transform 之前的 totalLength\n          const totalLength = s.pathD().getTotalLength();\n          from[`offset_${i}`] = totalLength;\n          to[`offset_${i}`] = 0;\n          s.setAttr({\n            strokeDasharray: `${totalLength} ${totalLength}`,\n            strokeDashoffset: `${totalLength}`\n          });\n        });\n        tl.addTween(\n          from,\n          to,\n          Object.assign(options || {}, {\n            onStart: () => {\n              options?.onGroupStart?.();\n            },\n            onUpdate: (coords: TweenValue, elapsed: number) => {\n              for (const c in coords) {\n                const index = extractNumber(c).number;\n                this.shapes[index].setAttr(\n                  \"strokeDashoffset\",\n                  \"\" + maxDotNumber(coords[c], 2)\n                );\n              }\n              options?.onGroupUpdate?.();\n            },\n            onComplete: () => {\n              options?.onGroupComplete?.();\n            }\n          })\n        );\n        tl.play();\n        break;\n    }\n  }\n}\n\n// 跟随鼠标\nexport function followMouseShape(\n  shape: Shape,\n  mpg: MousePointGroup,\n  margin = 5\n) {\n  const m = withinErrorMarginNumber(margin);\n  if (!m(shape.x, mpg.current.x) || !m(shape.y, mpg.current.y)) {\n    shape.followTo(mpg.current);\n  }\n}\n\n// 鼠标放开后运动到 target\nexport function targetToAfterDropShape(\n  shape: Shape,\n  target: { x: number; y: number },\n  options?: ShapeAnimateConstantOptions\n) {\n  if (shape.drag && shape.drag.enable && !shape.isDragging) {\n    shape.animateEaseTo(target, options);\n  }\n}\n\n// 运动[加速度+重力+摩擦力] +碰撞检测 (+回弹检测) (+万有引力)\nexport function animateShapes(\n  shapes: Shape[],\n  options?: ShapeAnimateConstantOptions\n): number[][] {\n  const alphas: number[][] = []; // [fromX, fromY, toX, toY, alpha][]\n  const numParticles = shapes.length;\n  for (let i = 0; i < numParticles; i++) {\n    const s = shapes[i];\n    if (options?.springLength) {\n      // SpringConnect\n      const springLength = options?.springLength || 100;\n      if (!s.isDragging) {\n        shapes\n          .filter((_s) => _s.id !== s.id)\n          .forEach((_s) => {\n            const radian = angle(s.x, s.y, _s.x, _s.y);\n            s.animateSpringTo(\n              {\n                x: _s.x - Math.cos(radian) * springLength,\n                y: _s.y - Math.sin(radian) * springLength\n              },\n              options\n            );\n          });\n      }\n    } else if (options?.spring) {\n      // Spring\n      if (i > 0) {\n        s.animateSpringTo(shapes[i - 1], options);\n      }\n    } else {\n      s.animate(options);\n    }\n    if (options?.wall) {\n      s.checkWall(options);\n    }\n    if (\n      options?.enableCollision ||\n      options?.enableGravityBetweenObjects ||\n      options?.enableSpringMassAlpha\n    ) {\n      for (let j = i + 1; j < numParticles; j++) {\n        if (options?.enableCollision) {\n          s.checkCollision(shapes[j]);\n        }\n        if (options?.enableGravityBetweenObjects) {\n          s.gravitateTo(shapes[j]);\n        }\n        if (options?.enableSpringMassAlpha) {\n          alphas.push([\n            s.x,\n            s.y,\n            shapes[j].x,\n            shapes[j].y,\n            s.getSpringMassAlphaTo(shapes[j], options)\n          ]);\n        }\n      }\n    }\n  }\n  return alphas;\n}\n\nfunction getShapesInterpolator(shapes: Shape[]): (\n  offset: number // offset (0.0 to 1.0)\n) => Shape {\n  if (shapes.length < 2) {\n    throw new Error(\"shapes个数必须大于等于2\");\n  }\n  const hlen = shapes.length - 1;\n  const ds = new Array(hlen);\n  for (let h = 0; h < hlen; h++) {\n    const pathd1 = shapes[h].transformPathD();\n    const pathd2 = shapes[h + 1].transformPathD();\n    const pathd1Points = pathd1.getPolymorphPoints();\n    const pathd2Points = pathd2.getPolymorphPoints();\n    const maxPoints =\n      pathd1Points.length >= pathd2Points.length ? pathd1Points : pathd2Points;\n    ds[h] = PathD.getInterpolator(\n      pathd1.expendToPolymorphPoints(maxPoints),\n      pathd2.expendToPolymorphPoints(maxPoints)\n    );\n  }\n  // 该 shape 无 toSVGEl()，所以可以放心 Polymorph\n  const shape = new Shape({ initD: \"\" });\n  return (offset: number): Shape => {\n    const d = maxDotNumber(hlen * offset, 6);\n    const flr = Math.min(Math.floor(d), hlen - 1);\n    const t = maxDotNumber(d - flr, 6);\n    shape.pathD(ds[flr](t));\n    shape.setAttr(shapes[flr + 1].attrs);\n    // const fill1Style = shapes[flr].getAttr(\"fill\", \"none\");\n    // const fill2Style = shapes[flr + 1].getAttr(\"fill\", \"none\");\n    // if (typeof fill1Style == \"string\" && typeof fill2Style == \"string\") {\n    //   shape.setAttr(\n    //     \"fill\",\n    //     Color.gradient(fill1Style, fill2Style, t).toString()\n    //   );\n    // }\n    // const stroke1Style = shapes[flr].getAttr(\"stroke\", \"none\");\n    // const stroke2Style = shapes[flr + 1].getAttr(\"stroke\", \"none\");\n    // if (typeof stroke1Style == \"string\" && typeof stroke2Style == \"string\") {\n    //   shape.setAttr(\n    //     \"stroke\",\n    //     Color.gradient(stroke1Style, stroke2Style, t).toString()\n    //   );\n    // }\n    return shape;\n  };\n}\n\nfunction getShapeCombosInterpolator(shapeCombos: (Shape | ShapeCombo)[]): (\n  offset: number // offset (0.0 to 1.0)\n) => ShapeCombo {\n  if (shapeCombos.length < 2) {\n    throw new Error(\"shapeCombos个数必须大于等于2\");\n  }\n  let maxShapeCombo: ShapeCombo;\n  const combos: ShapeCombo[] = [];\n  shapeCombos.forEach((c) => {\n    let combo: ShapeCombo;\n    if (c instanceof ShapeCombo) {\n      combo = c;\n      combo.sort();\n    } else {\n      combo = new ShapeCombo();\n      combo.addShape(c);\n    }\n    combos.push(combo);\n    if (!maxShapeCombo || maxShapeCombo.shapes.length < combo.shapes.length) {\n      maxShapeCombo = combo;\n    }\n  });\n  const shapess: Shape[][] = [];\n  combos.forEach((c, i) => {\n    if (c !== maxShapeCombo) {\n      c.expendTo(maxShapeCombo);\n    }\n    c.shapes.forEach((s, j) => {\n      shapess[j] = shapess[j] || [];\n      shapess[j][i] = s;\n    });\n  });\n  const interpolators: ((offset: number) => Shape)[] = [];\n  shapess.forEach((shapes) => {\n    interpolators.push(getShapesInterpolator(shapes));\n  });\n  const combo = new ShapeCombo();\n  interpolators.forEach((interpolator) => {\n    combo.addShape(interpolator(0));\n  });\n  return (offset: number): ShapeCombo => {\n    interpolators.forEach((interpolator) => {\n      interpolator(offset);\n    });\n    return combo;\n  };\n}\n\nexport function polymorphTween(\n  shapes: (Shape | ShapeCombo)[],\n  frameDuration = 6000,\n  options?: TweenRawOptions & {\n    shapeOrCombo?: (s: Shape | ShapeCombo, offset: number) => void;\n  }\n): Shape | ShapeCombo {\n  const interpolator =\n    shapes.findIndex((s) => s instanceof ShapeCombo) >= 0\n      ? getShapeCombosInterpolator(shapes)\n      : getShapesInterpolator(shapes as Shape[]);\n  const shapeOrCombo = interpolator(0);\n  const prevOnUpdate = options?.onUpdate;\n  const tl = new Timeline({ frameDuration });\n  tl.addTween(\n    { t: 0 },\n    { t: 1 },\n    Object.assign(options || {}, {\n      onUpdate: (coords: TweenValue, elapsed: number) => {\n        prevOnUpdate?.(coords, elapsed);\n        interpolator(coords.t);\n        options?.shapeOrCombo?.(shapeOrCombo, coords.t);\n      }\n    })\n  );\n  tl.play();\n  return shapeOrCombo;\n}\n","import {\n  flushArray,\n  isEmptyObject,\n  Color,\n  toRadian\n} from \"@zyzgroup/core-common\";\nimport { HTMLEventObservable, createElement, empty, insert } from \"../../dom/\";\nimport {\n  atomWriteAttribute,\n  cssAttrsToCanvasAttrs,\n  attribute,\n  setStyle,\n  waitElementAddedInDOM,\n  resize$,\n  tap$,\n  mouseAndPointerDownMovePoint$,\n  createMousePoint,\n  pointerDownMovePoint$\n} from \"../../dom\";\nimport { Shape, ShapeCombo } from \"./Shape\";\nimport {\n  createSVGElement,\n  createSvgPath,\n  downloadFromSVGElement,\n  isSVGElementPath\n} from \"../../svg/\";\nimport { YZCanvasContext } from \"./canvas\";\nimport { Matrix } from \"../../math\";\nimport { BehaviorSubject } from \"rxjs\";\n\n// d3\n// https://jsfiddle.net/user/raphaeljs/fiddles\n\nexport type DrawShape = Shape | ShapeCombo;\n\nexport type DrawType = \"svg\" | \"canvas\" | \"div\";\n\nexport class DrawContext {\n  public PARENT_EL: HTMLEventObservable;\n\n  public SVG_EL: SVGElement | null = null;\n\n  public CANVAS_EL: HTMLCanvasElement | null = null;\n  public ctx: YZCanvasContext | null = null;\n\n  public rect = {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  };\n  public size$ = new BehaviorSubject<DOMRect | null>(null);\n  private resizeSubscription: any;\n\n  public mpg = createMousePoint();\n  private mouseSubscription: any;\n\n  public shapes: Shape[] = [];\n\n  public shapeTap$ = new BehaviorSubject<Shape | null>(null);\n  private tapSubscription: any;\n\n  private lastMouseInShapeId = \"\";\n  // 一旦拖拽开始，不释放时，可以一直触发\n  private draggingShapeId = \"\";\n  private prevCursor = \"default\";\n\n  constructor(\n    PARENT_EL: HTMLEventObservable = document.documentElement,\n    type: DrawType = \"canvas\",\n    enableCustomContext = false // true 影响性能\n  ) {\n    this.PARENT_EL = PARENT_EL;\n\n    if (type == \"svg\" || type == \"canvas\") {\n      empty(this.PARENT_EL);\n    }\n\n    if (type == \"svg\") {\n      this.SVG_EL = createSVGElement(\"svg\") as unknown as SVGElement;\n      insert(this.PARENT_EL, this.SVG_EL);\n    }\n\n    if (type == \"canvas\") {\n      this.CANVAS_EL = createElement(\"canvas\") as unknown as HTMLCanvasElement;\n      insert(this.PARENT_EL, this.CANVAS_EL);\n    }\n\n    this.resizeSubscription = resize$(this.PARENT_EL).subscribe(\n      (r: DOMRect) => {\n        this.rect.x = r.x;\n        this.rect.y = r.y;\n        this.rect.width = r.width;\n        this.rect.height = r.height;\n        if (this.SVG_EL) {\n          attribute(this.SVG_EL, {\n            viewBox: `0 0 ${this.rect.width} ${this.rect.height}`,\n            width: `${this.rect.width}`,\n            height: `${this.rect.height}`\n          });\n        }\n        if (this.CANVAS_EL) {\n          attribute(this.CANVAS_EL, {\n            width: `${this.rect.width}`,\n            height: `${this.rect.height}`\n          });\n          this.ctx = new YZCanvasContext(\n            this.CANVAS_EL,\n            this.rect.width,\n            this.rect.height,\n            enableCustomContext\n          );\n        }\n        this.size$.next(r);\n      }\n    );\n\n    this.mouseSubscription = mouseAndPointerDownMovePoint$(\n      this.SVG_EL || this.CANVAS_EL || this.PARENT_EL,\n      {\n        createMousePoint: this.mpg\n      }\n    ).subscribe(() => {});\n\n    this.tapSubscription = tap$(this.PARENT_EL).subscribe((e) => {\n      for (const shape of this.shapes) {\n        if (shape.isMouseIn) {\n          this.shapeTap$.next(shape);\n          // if (shape.parent) {\n          //   shape.parent.combo.shapes.forEach((s) => {\n          //     if (s !== shape) {\n          //       this.shapeTap$.next(s);\n          //     }\n          //   });\n          // }\n          break;\n        }\n      }\n    });\n  }\n\n  public destroy() {\n    this.resizeSubscription.unsubscribe();\n    this.mouseSubscription.unsubscribe();\n    this.tapSubscription.unsubscribe();\n  }\n\n  private setCursor(\n    cursor: \"default\" | \"pointer\" | \"grab\" | \"grabbing\" = \"default\"\n  ) {\n    if (cursor != this.prevCursor) {\n      this.PARENT_EL.style.cursor = cursor;\n      this.prevCursor = cursor;\n    }\n  }\n\n  // requestAnimationFrameLoop()\n  public draw(...ss: DrawShape[]) {\n    // 传入空数组：保持原 shapes 以提高性能\n    if (ss.length) {\n      const frameShapes: Shape[] = [];\n      ss.forEach((s) => {\n        if (s instanceof ShapeCombo) {\n          frameShapes.push(...s.shapes);\n        } else {\n          frameShapes.push(s);\n        }\n      });\n\n      // 删除不需要的 shape el\n      if (this.SVG_EL) {\n        this.shapes\n          .filter(\n            (shape) => frameShapes.findIndex((s) => s.id == shape.id) == -1\n          )\n          .forEach((shape) => {\n            if (shape.el) {\n              shape.el.remove();\n              delete shape.el;\n            }\n          });\n      }\n\n      flushArray(this.shapes, frameShapes);\n    }\n\n    if (this.ctx) {\n      // draw in Canvas\n      this.ctx.clearRect();\n    }\n\n    this.lastMouseInShapeId = \"\";\n    if (!this.mpg.current.isDown) {\n      this.draggingShapeId = \"\";\n    }\n\n    for (const shape of this.shapes) {\n      // transform origin - 不缓存, 直接使用 getBoundingClientRectCenter， 间接使用 getBoundingClientRect\n      const { x: centerX, y: centerY } = shape.transformOrigin();\n      let centerXSelf = 0;\n      let centerYSelf = 0;\n      if (\n        shape.parent?.dDegree ||\n        shape.parent?.dScaleX !== 1 ||\n        shape.parent?.dScaleY !== 1\n      ) {\n        const tos = shape.transformOrigin(true);\n        centerXSelf = tos.x;\n        centerYSelf = tos.y;\n      }\n\n      if (shape.shouldUpdatePathD) {\n        // 强制更新\n        shape.pathD();\n      }\n\n      if (this.SVG_EL) {\n        // draw in SVG\n        if (!shape.el || shape.shouldUpdateSVGElInDraw) {\n          const newEl = shape.toSVGEl();\n          if (!shape.el) {\n            // 新增\n            shape.el = newEl || createSvgPath();\n            insert(this.SVG_EL, shape.el);\n            attribute(shape.el, { id: shape.id });\n            // 异步更新问题未解决！\n            // waitElementAddedInDOM(this.SVG_EL, shape.el).then(() => {\n            //   console.log(shape.id, \"added to DOM!\");\n            // });\n          } else {\n            // 只更新 toSVGEl()\n            if (newEl) {\n              shape.el.remove();\n              shape.el = newEl;\n              insert(this.SVG_EL, shape.el);\n              attribute(shape.el, { id: shape.id });\n            }\n          }\n          if (isSVGElementPath(shape.el)) {\n            attribute(shape.el, { d: shape.toSVGPathD() });\n          }\n          shape.shouldUpdateSVGElInDraw = false;\n          shape.shouldUpdateAttrsInDraw = true;\n          shape.shouldUpdateStyleInDraw = true;\n          shape.shouldUpdateMInDraw = true;\n        }\n        if (shape.shouldUpdateAttrsInDraw) {\n          if (!isEmptyObject(shape.attrs)) {\n            attribute(shape.el, shape.attrs);\n          }\n          shape.shouldUpdateAttrsInDraw = false;\n        }\n        if (shape.shouldUpdateStyleInDraw) {\n          if (!isEmptyObject(shape.style)) {\n            setStyle(shape.el, shape.style);\n          }\n          shape.shouldUpdateStyleInDraw = false;\n        }\n        // 性能瓶颈\n        if (shape.shouldUpdateMInDraw || !shape.m) {\n          // 移动的是坐标系 the order of these are important !\n          const m = new Matrix();\n          // 公共\n          m.translate(\n            shape.x + (shape.parent?.dX || 0),\n            shape.y + (shape.parent?.dY || 0)\n          );\n          m.rotate(shape.degree, centerX, centerY);\n          m.scale(shape.scaleX, shape.scaleY, centerX, centerY);\n          // 自己\n          if (shape.parent?.dDegree) {\n            m.rotate(shape.parent.dDegree, centerXSelf, centerYSelf);\n          }\n          if (shape.parent?.dScaleX !== 1 || shape.parent?.dScaleY !== 1) {\n            m.scale(\n              shape.parent?.dScaleX || 1,\n              shape.parent?.dScaleY || 1,\n              centerXSelf,\n              centerYSelf\n            );\n          }\n          attribute(shape.el, { transform: m.toString() });\n          // 缓存计算结果\n          shape.m = m;\n          shape.shouldUpdateMInDraw = false;\n        }\n      }\n      if (this.ctx) {\n        // draw in Canvas\n        this.ctx.save();\n        // 移动的是坐标系 the order of these are important !\n        // 公共\n        this.ctx.translate(\n          shape.x + (shape.parent?.dX || 0),\n          shape.y + (shape.parent?.dY || 0)\n        );\n        this.ctx.rotate(toRadian(shape.degree), centerX, centerY);\n        this.ctx.scale(shape.scaleX, shape.scaleY, centerX, centerY);\n        // 自己\n        if (shape.parent?.dDegree) {\n          this.ctx.rotate(\n            toRadian(shape.parent.dDegree),\n            centerXSelf,\n            centerYSelf\n          );\n        }\n        if (shape.parent?.dScaleX !== 1 || shape.parent?.dScaleY !== 1) {\n          this.ctx.scale(\n            shape.parent?.dScaleX || 1,\n            shape.parent?.dScaleY || 1,\n            centerXSelf,\n            centerYSelf\n          );\n        }\n        // 缓存计算结果\n        shape.m = this.ctx.currentMatrix;\n        cssAttrsToCanvasAttrs(this.ctx, shape.attrs);\n        shape.toCanvasContext(this.ctx);\n        if (this.ctx.hasSetCustomStrokeStyle) {\n          this.ctx.stroke();\n        }\n        if (this.ctx.hasSetCustomFillStyle) {\n          this.ctx.fill();\n        }\n        // // 画出本次 path2d\n        // this.ctx.save();\n        // this.ctx.lineWidth = 4;\n        // this.ctx.strokeStyle = \"#ff0000\";\n        // this.const path2d = ctx.currentPath2D;\n        // this.ctx.stroke(path2d);\n        // this.ctx.restore();\n      }\n\n      // 性能影响，可关闭检测\n      if (shape.interactive) {\n        // isMouseIn\n        if (this.SVG_EL) {\n          shape.isMouseIn =\n            shape.isPointInPath(\n              this.SVG_EL,\n              this.mpg.current.x,\n              this.mpg.current.y\n            ) ||\n            shape.isPointInStroke(\n              this.SVG_EL,\n              this.mpg.current.x,\n              this.mpg.current.y\n            );\n        } else if (this.ctx) {\n          shape.isMouseIn =\n            shape.isPointInPath(\n              this.ctx,\n              this.mpg.current.x,\n              this.mpg.current.y\n            ) ||\n            shape.isPointInStroke(\n              this.ctx,\n              this.mpg.current.x,\n              this.mpg.current.y\n            );\n        } else {\n          shape.isMouseIn = false;\n        }\n      } else {\n        shape.isMouseIn = false;\n      }\n\n      if (shape.isMouseIn) {\n        this.setCursor(\"pointer\");\n        this.lastMouseInShapeId = shape.id;\n      }\n\n      // isDragging\n      shape.isDragging = shape.id == this.draggingShapeId;\n      if (\n        this.mpg.current.isDown &&\n        (shape.isDragging ||\n          (!this.draggingShapeId &&\n            shape.isMouseIn &&\n            shape.drag &&\n            shape.drag.enable))\n      ) {\n        this.setCursor(\"grabbing\");\n        shape.isDragging = true;\n        this.draggingShapeId = shape.id;\n        let dx = this.mpg.current.x - this.mpg.start.x;\n        let dy = this.mpg.current.y - this.mpg.start.y;\n        if (dx || dy) {\n          if (shape.drag && shape.drag.enable && shape.drag.alongPath) {\n            const closestPoint = shape.drag.alongPath\n              .transform({ m: shape.m })\n              .closestPoint(this.mpg.current.x, this.mpg.current.y);\n            dx = closestPoint.point.x - shape.x;\n            dy = closestPoint.point.y - shape.y;\n          }\n          if (dx || dy) {\n            shape.move(dx, dy);\n            shape.parent?.combo.shapes.forEach((s) => {\n              if (s.drag?.followSibling && s !== shape) {\n                s.move(dx, dy);\n              }\n            });\n          }\n        }\n        this.mpg.setStart(this.mpg.current);\n      } else if (shape.isMouseIn && shape.drag && shape.drag.enable) {\n        this.setCursor(\"grab\");\n      }\n\n      if (this.ctx) {\n        this.ctx.restore();\n      }\n    }\n\n    if (!this.lastMouseInShapeId && !this.draggingShapeId) {\n      this.setCursor(\"default\");\n    }\n  }\n\n  public clear() {\n    this.shapes.forEach((shape) => {\n      if (shape.el) {\n        shape.el.remove();\n        delete shape.el;\n      }\n    });\n    if (this.ctx) {\n      this.ctx.clearRect();\n    }\n    this.shapes = [];\n  }\n\n  public drawMouseMoveLine(options?: {\n    brushSize?: number;\n    brushColor?: string;\n  }) {\n    const brushSize = options?.brushSize || 4;\n    const brushColor = options?.brushColor || \"#000000\";\n    let hasSetMoveTo = false;\n    const s = pointerDownMovePoint$(\n      this.SVG_EL || this.CANVAS_EL || this.PARENT_EL,\n      {\n        start: () => {\n          hasSetMoveTo = false;\n          if (this.ctx) {\n            this.ctx.save();\n            this.ctx.lineWidth = brushSize;\n            this.ctx.strokeStyle = brushColor;\n            this.ctx.beginPath();\n          }\n        },\n        end: () => {\n          if (this.ctx) {\n            // this.ctx.closePath();\n            this.ctx.restore();\n          }\n        }\n      }\n    ).subscribe((mpg) => {\n      if (this.ctx) {\n        if (!hasSetMoveTo) {\n          hasSetMoveTo = true;\n          this.ctx.moveTo(mpg.current.x, mpg.current.y);\n        } else {\n          this.ctx.lineTo(mpg.current.x, mpg.current.y);\n        }\n        this.ctx.stroke();\n      }\n    });\n    return () => {\n      s.unsubscribe();\n    };\n  }\n\n  public drawMouseMoveBrush(options?: {\n    brushSize?: number;\n    brushDensity?: number;\n    brushColor?: string;\n  }) {\n    const brushSize = options?.brushSize || 10;\n    const brushDensity = options?.brushDensity || 50;\n    const brushColor = options?.brushColor || \"#000000\";\n    const brushColorNumber = new Color(brushColor);\n    const r = brushColorNumber.r;\n    const g = brushColorNumber.g;\n    const b = brushColorNumber.b;\n    const s = pointerDownMovePoint$(\n      this.SVG_EL || this.CANVAS_EL || this.PARENT_EL\n    ).subscribe((mpg) => {\n      if (this.ctx) {\n        const imageData = this.ctx.getImageData(\n          0,\n          0,\n          this.ctx.canvas.width,\n          this.ctx.canvas.height\n        );\n        const pixels = imageData.data;\n        for (let i = 0; i < brushDensity; i++) {\n          const angle = Math.random() * Math.PI * 2;\n          const radius = Math.random() * brushSize;\n          const xpos = (mpg.current.x + Math.cos(angle) * radius) | 0;\n          const ypos = (mpg.current.y + Math.sin(angle) * radius) | 0;\n          const offset = (xpos + ypos * imageData.width) * 4; // array index of canvas coordinate\n          // set the color of a pixel using its component colors: r,g,b,a (0-255)\n          pixels[offset] = r; // red\n          pixels[offset + 1] = g; // green\n          pixels[offset + 2] = b; // blue\n          pixels[offset + 3] = 255; // alpha\n        }\n        this.ctx.putImageData(imageData);\n      }\n    });\n    return () => {\n      s.unsubscribe();\n    };\n  }\n\n  public downloadSVG = () => {\n    if (this.SVG_EL) {\n      downloadFromSVGElement(this.SVG_EL);\n    }\n  };\n}\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\nimport {\n  angle,\n  distance,\n  polar,\n  toDegree,\n  toRadian\n} from \"@zyzgroup/core-common\";\n\nexport type LineShapeOptions = {\n  lineLength?: number;\n  // 渐变色\n  startColor?: string;\n  endColor?: string;\n} & ShapeOptions;\n\n/**\n * canvas svg Vector 坐标系\n *                [-90° / 270°]\n *                  *\n *                  *\n *                  *\n *  [180°] *  *  *  *  *  *  *  [0°]\n *                  *\n *                  *\n *                  *\n *                [90°]\n */\n\n// 直线：默认以 （0,0）为起点， 0° 划线\nexport class LineShape extends Shape {\n  public lineLength: number;\n  public startColor?: string;\n  public endColor?: string;\n\n  constructor(options?: LineShapeOptions) {\n    // transformOrigin 为（0,0）\n    super({ ...options, centerX: 0, centerY: 0 });\n    this.lineLength = options?.lineLength || 0;\n    this.startColor = options?.startColor;\n    this.endColor = options?.endColor;\n    this.setAttr({\n      strokeWidth: this.getAttr(\"strokeWidth\") || \"1\",\n      stroke: this.startColor || this.getAttr(\"stroke\") || \"#000000\"\n    });\n  }\n\n  protected cloneShape(): LineShape {\n    const shape = new LineShape({\n      ...super.getBaseOptions(),\n      lineLength: this.lineLength,\n      startColor: this.startColor,\n      endColor: this.endColor\n    });\n    return shape;\n  }\n\n  // 供外部变更\n  public lineToAbsolutePoint(point: { x: number; y: number }) {\n    const degree = toDegree(angle(this.x, this.y, point.x, point.y));\n    const lineLength = distance(this.x, this.y, point.x, point.y);\n    if (degree != this.degree || lineLength != this.lineLength) {\n      if (degree != this.degree) {\n        this.rotateTo(degree);\n      }\n      if (lineLength != this.lineLength) {\n        this.lineLength = lineLength;\n      }\n      this.shouldUpdatePathD = true;\n    }\n  }\n\n  public enableGradient(startColor: string, endColor: string) {\n    this.startColor = startColor;\n    this.endColor = endColor;\n    this.setAttr({\n      stroke: this.startColor\n    });\n    // 在 toCanvasContext 或 toSVGPathData 里设置渐变\n  }\n  public disableGradient(startColor: string) {\n    this.startColor = startColor;\n    this.endColor = undefined;\n    this.setAttr({\n      stroke: this.startColor\n    });\n  }\n\n  public getBoundingClientRect() {\n    return {\n      x: 0,\n      y: 0,\n      width: this.lineLength,\n      height: parseFloat(this.getAttr(\"strokeWidth\") as string)\n    };\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    return [\n      [\"m\", 0, 0],\n      [\"l\", this.lineLength, 0]\n    ];\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext): void {\n    if (this.startColor && this.endColor) {\n      // canvas 支持渐变色\n      this.setAttr({\n        stroke: ctx.createLinearGradient(0, 0, this.lineLength, 0, {\n          0: this.startColor,\n          1: this.endColor\n        })\n      });\n    }\n    ctx.beginPath();\n    ctx.moveTo(0, 0);\n    ctx.lineTo(this.lineLength, 0);\n  }\n\n  // 绝对值 - 考虑 transform : translate rotate scale\n  public intersection(line: LineShape): { x: number; y: number } | null {\n    const l1 = this.transformPathD().normalizedLines[0];\n    const l2 = line.transformPathD().normalizedLines[0];\n    return l1.intersection(l2);\n  }\n}\n\nexport default LineShape;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\n\nexport type CurveShapeOptions = {\n  cx?: number; // 相对于自身（0,0）的坐标\n  cy?: number; // 相对于自身（0,0）的坐标\n  toX?: number; // 相对于自身（0,0）的坐标\n  toY?: number; // 相对于自身（0,0）的坐标\n  isLineThrough?: boolean;\n} & ShapeOptions;\n\n// 曲线\nexport class CurveShape extends Shape {\n  public cx: number;\n  public cy: number;\n  public toX: number;\n  public toY: number;\n  public isLineThrough: boolean;\n\n  constructor(options?: CurveShapeOptions) {\n    super(options);\n    this.cx = options?.cx || 0;\n    this.cy = options?.cy || 0;\n    this.toX = options?.toX || 0;\n    this.toY = options?.toY || 0;\n    this.isLineThrough =\n      typeof options?.isLineThrough == \"boolean\"\n        ? options.isLineThrough\n        : false;\n    this.setAttr({\n      strokeWidth: this.getAttr(\"strokeWidth\") || \"1\",\n      stroke: this.getAttr(\"stroke\") || \"#000000\"\n    });\n  }\n\n  protected cloneShape(): CurveShape {\n    const shape = new CurveShape({\n      ...super.getBaseOptions(),\n      cx: this.cx,\n      cy: this.cy,\n      toX: this.toX,\n      toY: this.toY,\n      isLineThrough: this.isLineThrough\n    });\n    return shape;\n  }\n\n  // 供外部变更\n  public update(options: Partial<CurveShapeOptions>) {\n    if (typeof options.cx == \"number\") {\n      this.cx = options.cx;\n      this.shouldUpdatePathD = true;\n    }\n    if (typeof options.cy == \"number\") {\n      this.cy = options.cy;\n      this.shouldUpdatePathD = true;\n    }\n    if (typeof options.toX == \"number\") {\n      this.toX = options.toX;\n      this.shouldUpdatePathD = true;\n    }\n    if (typeof options.toY == \"number\") {\n      this.toY = options.toY;\n      this.shouldUpdatePathD = true;\n    }\n    if (typeof options.isLineThrough == \"boolean\") {\n      this.isLineThrough = options.isLineThrough;\n      this.shouldUpdatePathD = true;\n    }\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    if (this.isLineThrough) {\n      const c1x = this.cx * 2 - (0 + this.toX) / 2;\n      const c1y = this.cy * 2 - (0 + this.toY) / 2;\n      return [\n        [\"m\", 0, 0],\n        [\"q\", c1x, c1y, this.toX, this.toY]\n      ];\n    } else {\n      return [\n        [\"m\", 0, 0],\n        [\"q\", this.cx, this.cy, this.toX, this.toY]\n      ];\n    }\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext): void {\n    ctx.beginPath();\n    ctx.moveTo(0, 0);\n    if (this.isLineThrough) {\n      const c1x = this.cx * 2 - (0 + this.toX) / 2;\n      const c1y = this.cy * 2 - (0 + this.toY) / 2;\n      ctx.quadraticCurveTo(c1x, c1y, this.toX, this.toY);\n    } else {\n      ctx.quadraticCurveTo(this.cx, this.cy, this.toX, this.toY);\n    }\n  }\n}\n\nexport default CurveShape;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\nimport { polar } from \"@zyzgroup/core-common\";\n\nexport type PointsShapeOptions = {\n  points?: { x: number; y: number }[]; // 相对于自身（0,0）的坐标\n  isStraight?: boolean;\n} & ShapeOptions;\n\n// 封闭式多边形\n// Polygon\n// Polyline\n// Triangle\nexport class PointsShape extends Shape {\n  private points: { x: number; y: number }[];\n  public isStraight: boolean;\n\n  constructor(options?: PointsShapeOptions) {\n    super(options);\n    this.points = options?.points || [];\n    this.isStraight =\n      typeof options?.isStraight == \"boolean\" ? options.isStraight : true;\n    this.setAttr({\n      strokeWidth: this.getAttr(\"strokeWidth\") || \"1\",\n      stroke: this.getAttr(\"stroke\") || \"#000000\"\n    });\n  }\n\n  protected cloneShape(): PointsShape {\n    const shape = new PointsShape({\n      ...super.getBaseOptions(),\n      points: [...this.points],\n      isStraight: this.isStraight\n    });\n    return shape;\n  }\n\n  // 供外部变更\n  public update(options: Partial<PointsShapeOptions>) {\n    if (\"points\" in options) {\n      this.points = [...(options.points || this.points)];\n      this.shouldUpdatePathD = true;\n    }\n    if (typeof options.isStraight == \"boolean\") {\n      this.isStraight = options.isStraight;\n      this.shouldUpdatePathD = true;\n    }\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    const data: SVGParsedPathData[] = [];\n    if (this.points.length < 3) {\n      // throw new Error(\"PointsShape.points length must >= 3\");\n      return data;\n    }\n    const numPoints = this.points.length;\n    if (this.isStraight) {\n      data.push([\"m\", this.points[0].x, this.points[0].y]);\n      for (let i = 1; i <= numPoints - 1; i++) {\n        data.push([\n          \"l\",\n          this.points[i].x - this.points[i - 1].x,\n          this.points[i].y - this.points[i - 1].y\n        ]);\n      }\n      data.push([\"z\"]);\n    } else {\n      // find the first midpoint and move to it\n      const ctrlPoint1X = (this.points[0].x + this.points[numPoints - 1].x) / 2;\n      const ctrlPoint1Y = (this.points[0].y + this.points[numPoints - 1].y) / 2;\n      let prevX = ctrlPoint1X;\n      let prevY = ctrlPoint1Y;\n      data.push([\"m\", prevX, prevY]);\n      // curve through the rest, stopping at each midpoint\n      for (let i = 0; i < numPoints - 1; i++) {\n        const ctrlPointX = (this.points[i].x + this.points[i + 1].x) / 2;\n        const ctrlPointY = (this.points[i].y + this.points[i + 1].y) / 2;\n        data.push([\n          \"q\",\n          this.points[i].x - prevX,\n          this.points[i].y - prevY,\n          ctrlPointX - prevX,\n          ctrlPointY - prevY\n        ]);\n        prevX = ctrlPointX;\n        prevY = ctrlPointY;\n      }\n      // curve through the last point, back to the first midpoint\n      data.push([\n        \"q\",\n        this.points[numPoints - 1].x - prevX,\n        this.points[numPoints - 1].y - prevY,\n        ctrlPoint1X - prevX,\n        ctrlPoint1Y - prevY\n      ]);\n    }\n    return data;\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext): void {\n    if (this.points.length < 3) {\n      // throw new Error(\"PointsShape.points length must >= 3\");\n      return;\n    }\n    ctx.beginPath();\n    const numPoints = this.points.length;\n    if (this.isStraight) {\n      ctx.moveTo(this.points[0].x, this.points[0].y);\n      for (let i = 1; i <= numPoints - 1; i++) {\n        ctx.lineTo(this.points[i].x, this.points[i].y);\n      }\n      ctx.closePath();\n    } else {\n      // find the first midpoint and move to it\n      const ctrlPoint1X = (this.points[0].x + this.points[numPoints - 1].x) / 2;\n      const ctrlPoint1Y = (this.points[0].y + this.points[numPoints - 1].y) / 2;\n      ctx.moveTo(ctrlPoint1X, ctrlPoint1Y);\n      // curve through the rest, stopping at each midpoint\n      for (let i = 0; i < numPoints - 1; i++) {\n        const ctrlPointX = (this.points[i].x + this.points[i + 1].x) / 2;\n        const ctrlPointY = (this.points[i].y + this.points[i + 1].y) / 2;\n        ctx.quadraticCurveTo(\n          this.points[i].x,\n          this.points[i].y,\n          ctrlPointX,\n          ctrlPointY\n        );\n      }\n      // curve through the last point, back to the first midpoint\n      ctx.quadraticCurveTo(\n        this.points[numPoints - 1].x,\n        this.points[numPoints - 1].y,\n        ctrlPoint1X,\n        ctrlPoint1Y\n      );\n    }\n  }\n\n  public isPointInShape(point: { x: number; y: number }) {\n    const count = this.points.length;\n    let isInside = false;\n    const precision = 2e-10;\n\n    for (let i = 0, j = count - 1; i < count; j = i, i++) {\n      const x1 = this.points[i].x;\n      const y1 = this.points[i].y;\n      const x2 = this.points[j].x;\n      const y2 = this.points[j].y;\n\n      if (\n        (x1 === point.x && y1 === point.y) ||\n        (x2 === point.x && y2 === point.y)\n      ) {\n        return true;\n      }\n\n      if (point.y === y1 && point.y === y2) {\n        return true;\n      }\n\n      if ((point.y >= y1 && point.y < y2) || (point.y < y1 && point.y >= y2)) {\n        const k = (x2 - x1) / (y2 - y1);\n        const _x = x1 + k * (point.y - y1);\n\n        if (_x === point.x) {\n          return true;\n        }\n\n        if (Math.abs(_x - point.x) < precision) {\n          return true;\n        }\n\n        if (_x > point.x) {\n          isInside = !isInside;\n        }\n      }\n    }\n\n    return isInside;\n  }\n\n  public [Symbol.iterator]() {\n    let index = -1;\n    return {\n      next: () => ({\n        value:\n          index <= this.points.length - 1 ? this.points[++index] : undefined,\n        done: index >= this.points.length\n      })\n    };\n  }\n\n  public static generate(\n    centerX: number,\n    centerY: number,\n    sideDistance: number, // 中心到边的直线距离\n    sideCount: number\n  ): PointsShape {\n    const points: { x: number; y: number }[] = [];\n    for (let i = 0; i < sideCount; i++) {\n      const theta = (i / sideCount) * 2 * Math.PI;\n      const { dx, dy } = polar(theta, sideDistance);\n      points.push({ x: centerX + dx, y: centerY + dy });\n    }\n    return new PointsShape({ points });\n  }\n}\n\nexport default PointsShape;\n","import { ShapeCombo, ShapeComboOptions } from \"../Shape\";\nimport LineShape from \"./LineShape\";\n\nexport class TreeShapeCombo extends ShapeCombo {\n  private length = 100;\n\n  constructor(options?: ShapeComboOptions) {\n    super(options);\n\n    const line1 = new LineShape({\n      drag: {\n        followSibling: true\n      },\n      lineLength: this.length\n    });\n    this.addShape(line1);\n\n    const line2 = new LineShape({\n      drag: {\n        followSibling: true\n      },\n      lineLength: 20 + Math.random() * 20\n    });\n    this.addShape(line2, {\n      dX: 90 - Math.random() * 40,\n      dDegree: Math.random() * 70\n    });\n\n    const line3 = new LineShape({\n      drag: {\n        followSibling: true\n      },\n      lineLength: 20 + Math.random() * 20\n    });\n    this.addShape(line3, {\n      dX: 90 - Math.random() * 40,\n      dDegree: -Math.random() * 70\n    });\n\n    this.comboRotate(-90, true);\n  }\n\n  protected cloneShapeCombo(): TreeShapeCombo {\n    const shapeCombo = new TreeShapeCombo(super.getBaseOptions());\n    return shapeCombo;\n  }\n}\n\nexport default TreeShapeCombo;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData, createSVGElement } from \"../../../svg\";\nimport { YZCanvasContext } from \"../canvas\";\nimport { length } from \"@zyzgroup/core-common\";\n\nexport type BallShapeOptions = {\n  ballRadius?: number; // 半径\n} & ShapeOptions;\n\nexport class BallShape extends Shape {\n  public ballRadius: number;\n\n  constructor(options?: BallShapeOptions) {\n    super(options);\n    this.ballRadius = options?.ballRadius || 0;\n  }\n\n  protected cloneShape(): BallShape {\n    const shape = new BallShape({\n      ...super.getBaseOptions(),\n      ballRadius: this.ballRadius\n    });\n    return shape;\n  }\n\n  // 供外部使用：基本属性变更\n  public update(options: Partial<BallShapeOptions>) {\n    if (typeof options.ballRadius == \"number\") {\n      this.ballRadius = options.ballRadius;\n      this.shouldUpdatePathD = true;\n    }\n  }\n\n  public getBoundingClientRect() {\n    return {\n      x: -this.ballRadius,\n      y: -this.ballRadius,\n      width: this.ballRadius * 2,\n      height: this.ballRadius * 2\n    };\n  }\n\n  public toSVGEl(): SVGElement {\n    const el = createSVGElement(\"circle\");\n    this.setAttr({\n      cx: \"0\",\n      cy: \"0\",\n      r: String(this.ballRadius)\n    });\n    return el;\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    if (this.ballRadius) {\n      return [\n        [\"m\", 0, -this.ballRadius],\n        [\n          \"a\",\n          this.ballRadius,\n          this.ballRadius,\n          0,\n          1,\n          1,\n          0,\n          2 * this.ballRadius\n        ],\n        [\n          \"a\",\n          this.ballRadius,\n          this.ballRadius,\n          0,\n          1,\n          1,\n          0,\n          -2 * this.ballRadius\n        ],\n        [\"z\"]\n      ];\n    } else {\n      return [[\"m\", 0, 0]];\n    }\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext) {\n    ctx.beginPath();\n    ctx.arc(0, 0, this.ballRadius, 0, Math.PI * 2, true);\n    ctx.closePath();\n  }\n\n  public eq(ball: BallShape): boolean {\n    return (\n      this.x === ball.x &&\n      this.y === ball.y &&\n      this.ballRadius === ball.ballRadius &&\n      this.mass === ball.mass\n    );\n  }\n\n  public midPointBtw(ball: BallShape) {\n    return {\n      x: this.x + (ball.x - this.x) / 2,\n      y: this.y + (ball.y - this.y) / 2\n    };\n  }\n\n  public length() {\n    return length(this.x, this.y);\n  }\n\n  public scalar(scale: number) {\n    this.moveTo(this.x * scale, this.y * scale);\n    return this;\n  }\n\n  public normalize(len = 1): BallShape {\n    const totalLength = this.length();\n    if (totalLength) {\n      const scale = len / totalLength;\n      this.scalar(scale);\n    }\n    return this;\n  }\n\n  public clamp(len: number) {\n    const totalLength = this.length();\n    if (totalLength && totalLength > len) {\n      this.scalar(len / totalLength);\n    }\n    return this;\n  }\n\n  public cross(pt: { x: number; y: number }) {\n    const x = this.x;\n    const y = this.y;\n    return {\n      x: y * pt.x - x * pt.y,\n      y: x * pt.y - y * pt.x\n    };\n  }\n\n  public multiply(pt: { x: number; y: number }) {\n    return {\n      x: this.x * pt.x,\n      y: this.y * pt.y\n    };\n  }\n\n  public div(pt: { x: number; y: number }) {\n    return {\n      x: this.x / pt.x,\n      y: this.y / pt.y\n    };\n  }\n\n  public add(pt: { x: number; y: number }) {\n    return {\n      x: this.x + pt.x,\n      y: this.y + pt.y\n    };\n  }\n\n  public sub(pt: { x: number; y: number }) {\n    return {\n      x: this.x - pt.x,\n      y: this.y - pt.y\n    };\n  }\n\n  public dot(pt: { x: number; y: number }): number {\n    return this.x * pt.x + this.y * pt.y;\n  }\n\n  public reflect(pt: { x: number; y: number }) {\n    const dp = this.dot(pt);\n    return {\n      x: this.x - 2 * dp * pt.x,\n      y: this.y - 2 * dp * pt.y\n    };\n  }\n}\n\nexport default BallShape;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../../svg\";\nimport { YZCanvasContext } from \"../canvas\";\n\nexport class ArrowShape extends Shape {\n  constructor(options?: ShapeOptions) {\n    super(options);\n  }\n\n  protected cloneShape(): ArrowShape {\n    const shape = new ArrowShape({\n      ...super.getBaseOptions()\n    });\n    return shape;\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    return [\n      [\"m\", -50, -25],\n      [\"l\", 50, 0],\n      [\"l\", 0, -25],\n      [\"l\", 50, 50],\n      [\"l\", -50, 50],\n      [\"l\", 0, -25],\n      [\"l\", -50, 0],\n      [\"l\", 0, -50],\n      [\"z\"]\n    ];\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext) {\n    ctx.beginPath();\n    ctx.moveTo(-50, -25);\n    ctx.lineTo(0, -25);\n    ctx.lineTo(0, -50);\n    ctx.lineTo(50, 0);\n    ctx.lineTo(0, 50);\n    ctx.lineTo(0, 25);\n    ctx.lineTo(-50, 25);\n    ctx.lineTo(-50, -25);\n    ctx.closePath();\n  }\n}\n\nexport default ArrowShape;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData, createSVGElement } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\nimport { CubicBezier } from \"../line/\";\n\nexport type RectShapeOptions = {\n  rectWidth?: number;\n  rectHeight?: number;\n  rectBorderRadius?: number; // x y rectWidth rectHeight 包含 rectBorderRadius\n} & ShapeOptions;\n\nexport class RectShape extends Shape {\n  rectWidth: number;\n  rectHeight: number;\n  rectBorderRadius: number;\n\n  constructor(options: RectShapeOptions) {\n    super(options);\n    this.rectWidth = options.rectWidth || 0;\n    this.rectHeight = options.rectHeight || 0;\n    this.rectBorderRadius = options.rectBorderRadius || 0;\n  }\n\n  protected cloneShape(): RectShape {\n    const shape = new RectShape({\n      ...super.getBaseOptions(),\n      rectWidth: this.rectWidth,\n      rectHeight: this.rectHeight,\n      rectBorderRadius: this.rectBorderRadius\n    });\n    return shape;\n  }\n\n  // 供外部使用：基本属性变更\n  public update(options: Partial<RectShapeOptions>) {\n    if (typeof options.rectWidth == \"number\") {\n      this.rectWidth = options.rectWidth;\n      this.shouldUpdatePathD = true;\n    }\n    if (typeof options.rectHeight == \"number\") {\n      this.rectHeight = options.rectHeight;\n      this.shouldUpdatePathD = true;\n    }\n    if (typeof options.rectBorderRadius == \"number\") {\n      this.rectBorderRadius = options.rectBorderRadius;\n      this.shouldUpdatePathD = true;\n    }\n  }\n\n  public getBoundingClientRect() {\n    return {\n      x: 0,\n      y: 0,\n      width: this.rectWidth,\n      height: this.rectHeight\n    };\n  }\n\n  public toSVGEl(): SVGElement | null {\n    const el = createSVGElement(\"rect\");\n    this.setAttr({\n      x: \"0\",\n      y: \"0\",\n      width: String(this.rectWidth),\n      height: String(this.rectHeight),\n      rx: String(this.rectBorderRadius),\n      ry: String(this.rectBorderRadius)\n    });\n    return el;\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    if (!this.rectBorderRadius) {\n      return [\n        [\"m\", 0, 0],\n        [\"l\", this.rectWidth, 0],\n        [\"l\", 0, this.rectHeight],\n        [\"l\", -this.rectWidth, 0],\n        [\"z\"]\n      ];\n    } else {\n      return [\n        [\"m\", this.rectBorderRadius, 0],\n        [\"l\", this.rectWidth - this.rectBorderRadius * 2, 0],\n        [\n          \"a\",\n          this.rectBorderRadius,\n          this.rectBorderRadius,\n          0,\n          0,\n          1,\n          this.rectBorderRadius,\n          this.rectBorderRadius\n        ],\n        [\"l\", 0, this.rectHeight - this.rectBorderRadius * 2],\n        [\n          \"a\",\n          this.rectBorderRadius,\n          this.rectBorderRadius,\n          0,\n          0,\n          1,\n          -this.rectBorderRadius,\n          this.rectBorderRadius\n        ],\n        [\"l\", this.rectBorderRadius * 2 - this.rectWidth, 0],\n        [\n          \"a\",\n          this.rectBorderRadius,\n          this.rectBorderRadius,\n          0,\n          0,\n          1,\n          -this.rectBorderRadius,\n          -this.rectBorderRadius\n        ],\n        [\"l\", 0, this.rectBorderRadius * 2 - this.rectHeight],\n        [\n          \"a\",\n          this.rectBorderRadius,\n          this.rectBorderRadius,\n          0,\n          0,\n          1,\n          this.rectBorderRadius,\n          -this.rectBorderRadius\n        ],\n        [\"z\"]\n      ];\n    }\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext) {\n    ctx.beginPath();\n    if (this.rectBorderRadius <= 0) {\n      ctx.rect(0, 0, this.rectWidth, this.rectHeight);\n    } else {\n      ctx.moveTo(0, this.rectBorderRadius);\n      ctx.lineTo(0, this.rectHeight - this.rectBorderRadius);\n      ctx.quadraticCurveTo(\n        0,\n        this.rectHeight,\n        this.rectBorderRadius,\n        this.rectHeight\n      );\n      ctx.lineTo(this.rectWidth - this.rectBorderRadius, this.rectHeight);\n      ctx.quadraticCurveTo(\n        this.rectWidth,\n        this.rectHeight,\n        this.rectWidth,\n        this.rectHeight - this.rectBorderRadius\n      );\n      ctx.lineTo(this.rectWidth, this.rectBorderRadius);\n      ctx.quadraticCurveTo(\n        this.rectWidth,\n        0,\n        this.rectWidth - this.rectBorderRadius,\n        0\n      );\n      ctx.lineTo(this.rectBorderRadius, 0);\n      ctx.quadraticCurveTo(0, 0, 0, this.rectBorderRadius);\n    }\n    ctx.closePath();\n  }\n\n  public static fromCubicBezier(\n    p1x: number,\n    p1y: number,\n    c1x: number,\n    c1y: number,\n    c2x: number,\n    c2y: number,\n    p2x: number,\n    p2y: number\n  ): RectShape {\n    const cubicBezier = new CubicBezier({\n      x: p1x,\n      y: p1y,\n      c1x,\n      c1y,\n      c2x,\n      c2y,\n      toX: p2x,\n      toY: p2y\n    });\n    const rect = cubicBezier.getBoundingClientRect();\n    return new RectShape({\n      x: rect.x,\n      y: rect.y,\n      rectWidth: rect.width,\n      rectHeight: rect.height\n    });\n  }\n\n  public eq(rect: RectShape): boolean {\n    return (\n      this.x === rect.x &&\n      this.y === rect.y &&\n      this.rectWidth === rect.rectWidth &&\n      this.rectHeight === rect.rectHeight &&\n      this.rectBorderRadius === rect.rectBorderRadius\n    );\n  }\n\n  public intersection(rect: RectShape): boolean {\n    return !(\n      this.x + this.rectWidth < rect.x ||\n      rect.x + rect.rectWidth < this.x ||\n      this.y + this.rectHeight < rect.y ||\n      rect.y + rect.rectHeight < this.y\n    );\n  }\n\n  public isPointInShape(p: { x: number; y: number }) {\n    return (\n      p.x >= this.x &&\n      p.x <= this.x + this.rectWidth &&\n      p.y >= this.y &&\n      p.y <= this.y + this.rectHeight\n    );\n  }\n}\n\nexport default RectShape;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\n\nexport type HeartShapeOptions = {\n  heartRx?: number;\n  heartRy?: number;\n} & ShapeOptions;\n\nexport class HeartShape extends Shape {\n  rx: number;\n  ry: number;\n\n  constructor(options?: HeartShapeOptions) {\n    super(options);\n    this.rx = options?.heartRx || 10;\n    this.ry = options?.heartRy || 10;\n  }\n\n  protected cloneShape(): HeartShape {\n    const shape = new HeartShape({\n      ...super.getBaseOptions(),\n      heartRx: this.rx,\n      heartRy: this.ry\n    });\n    return shape;\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    return [\n      [\"m\", 0, 0],\n      // bottom right curve\n      [\"l\", this.rx * 2.4, -this.ry * 3.14],\n      // top right curve\n      [\"a\", this.rx / 2, this.ry / 2, 0, 0, 0, -this.rx * 2.4, -this.ry * 1.5],\n      // top left curve\n      [\"a\", this.rx / 2, this.ry / 2, 0, 0, 0, -this.rx * 2.4, this.ry * 1.5],\n      // bottom left curve\n      [\"l\", this.rx * 2.4, this.ry * 3.14],\n      [\"z\"]\n    ];\n  }\n}\n\nexport default HeartShape;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\n\nexport type HeartVariantShapeOptions = {\n  heartRx?: number;\n  heartRy?: number;\n} & ShapeOptions;\n\nexport class HeartVariantShape extends Shape {\n  rx: number;\n  ry: number;\n\n  constructor(options?: HeartVariantShapeOptions) {\n    super(options);\n    this.rx = options?.heartRx || 50;\n    this.ry = options?.heartRy || 50;\n  }\n\n  protected cloneShape(): HeartVariantShape {\n    const shape = new HeartVariantShape({\n      ...super.getBaseOptions(),\n      heartRx: this.rx,\n      heartRy: this.ry\n    });\n    return shape;\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    return [\n      [\"m\", 0, 0 + this.ry * 0.3],\n      // top left curve\n      [\"C\", 0, 0, 0 - this.rx / 2, 0, 0 - this.rx / 2, 0 + this.ry * 0.3],\n      // bottom left curve\n      [\n        \"C\",\n        0 - this.rx / 2,\n        0 + (this.ry + this.ry * 0.3) / 2,\n        0,\n        0 + (this.ry + this.ry * 0.3) / 1.4,\n        0,\n        0 + this.ry\n      ],\n      // bottom right curve\n      [\n        \"C\",\n        0,\n        0 + (this.ry + this.ry * 0.3) / 1.8,\n        0 + this.rx / 2,\n        0 + (this.ry + this.ry * 0.3) / 2,\n        0 + this.rx / 2,\n        0 + this.ry * 0.3\n      ],\n      // top right curve\n      [\"C\", 0 + this.rx / 2, 0, 0, 0, 0, 0 + this.ry * 0.3],\n      [\"z\"]\n    ];\n  }\n}\n\nexport default HeartVariantShape;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\nimport { toRadian } from \"@zyzgroup/core-common\";\n\nexport type StarShapeOptions = {\n  starR?: number;\n} & ShapeOptions;\n\nexport class StarShape extends Shape {\n  r: number;\n\n  constructor(options?: StarShapeOptions) {\n    super(options);\n    this.r = options?.starR || 20;\n  }\n\n  protected cloneShape(): StarShape {\n    const shape = new StarShape({\n      ...super.getBaseOptions(),\n      starR: this.r\n    });\n    return shape;\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    const data: SVGParsedPathData[] = [[\"m\", 0, -this.r]];\n    for (let c = 0; c < 6; c += 1) {\n      /// +18 摆正 StarShape\n      const degree = 18 + 270 + c * 144;\n      const rx = this.r * Math.cos(toRadian(degree));\n      const ry = this.r * Math.sin(toRadian(degree));\n      data.push([\"l\", rx, ry]);\n    }\n    return data;\n  }\n}\n\nexport default StarShape;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\n\nexport class FoxShape extends Shape {\n  constructor(options?: ShapeOptions) {\n    super(options);\n  }\n\n  protected cloneShape(): FoxShape {\n    const shape = new FoxShape({\n      ...super.getBaseOptions()\n    });\n    return shape;\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    return [\n      [\"m\", 4, 24],\n      [\"l\", 4, -8],\n      [\"l\", 6, -6],\n      [\"l\", 1, -10],\n      [\"l\", -6, -10],\n      [\"l\", -7, 10],\n      [\"l\", -4, 0],\n      [\"l\", -7, -10],\n      [\"l\", -6, 10],\n      [\"l\", 1, 10],\n      [\"l\", 6, 6],\n      [\"l\", 4, 8],\n      [\"z\"]\n    ];\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext) {\n    ctx.beginPath();\n    ctx.moveTo(4, 24);\n    ctx.lineTo(8, 16);\n    ctx.lineTo(14, 10);\n    ctx.lineTo(15, 0);\n    ctx.lineTo(9, -10);\n    ctx.lineTo(2, 0);\n    ctx.lineTo(-2, 0);\n    ctx.lineTo(-9, -10);\n    ctx.lineTo(-15, 0);\n    ctx.lineTo(-14, 10);\n    ctx.lineTo(-8, 16);\n    ctx.lineTo(-4, 24);\n    ctx.closePath();\n  }\n}\n\nexport default FoxShape;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\n\nexport class RabbitShape extends Shape {\n  constructor(options?: ShapeOptions) {\n    super(options);\n  }\n\n  protected cloneShape(): RabbitShape {\n    const shape = new RabbitShape({\n      ...super.getBaseOptions()\n    });\n    return shape;\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    return [\n      [\"M\", 0, 0],\n      [\"C\", 15, 0, 15, -40, 5, -30],\n      [\"L\", 0, 0],\n      [\"C\", -15, 0, -15, -40, -5, -30],\n      [\"L\", 0, 0],\n      [\"a\", 15, 15, 0, 1, 1, 0, 2 * 15],\n      [\"a\", 15, 15, 0, 1, 1, 0, -2 * 15]\n    ];\n  }\n}\n\nexport default RabbitShape;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\n\nexport class CrossShape extends Shape {\n  constructor(options?: ShapeOptions) {\n    super({\n      ...options,\n      initD: `m5.068 9.267-3.08-.77a.512.512 0 0 1 0-.994l3.08-.77a2.289 2.289 0 0 0 1.665-1.665l.77-3.08a.512.512 0 0 1 .994 0l.77 3.08c.205.82.845 1.46 1.665 1.665l3.08.77a.512.512 0 0 1 0 .994l-3.08.77a2.29 2.29 0 0 0-1.665 1.665l-.77 3.08a.512.512 0 0 1-.994 0l-.77-3.08a2.289 2.289 0 0 0-1.665-1.665Z`\n    });\n  }\n\n  protected cloneShape(): CrossShape {\n    const shape = new CrossShape({\n      ...super.getBaseOptions()\n    });\n    return shape;\n  }\n}\n\nexport default CrossShape;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData, createSVGElement } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\n\nexport type EllipseShapeOptions = {\n  // 半径\n  rx?: number;\n  ry?: number;\n} & ShapeOptions;\n\nexport class EllipseShape extends Shape {\n  public rx: number;\n  public ry: number;\n\n  constructor(options: EllipseShapeOptions) {\n    super(options);\n    this.rx = options?.rx || 0;\n    this.ry = options?.ry || 0;\n  }\n\n  protected cloneShape(): EllipseShape {\n    const shape = new EllipseShape({\n      ...super.getBaseOptions(),\n      rx: this.rx,\n      ry: this.ry\n    });\n    return shape;\n  }\n\n  public getBoundingClientRect() {\n    return {\n      x: this.x - this.rx,\n      y: this.y - this.ry,\n      width: this.rx * 2,\n      height: this.ry * 2\n    };\n  }\n\n  public toSVGEl(): SVGElement {\n    const el = createSVGElement(\"ellipse\");\n    this.setAttr({\n      cx: \"0\",\n      cy: \"0\",\n      rx: String(this.rx),\n      ry: String(this.ry)\n    });\n    return el;\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    return [\n      [\"m\", 0, -this.ry],\n      [\"a\", this.rx, this.ry, 0, 1, 1, 0, 2 * this.ry],\n      [\"a\", this.rx, this.ry, 0, 1, 1, 0, -2 * this.ry],\n      [\"z\"]\n    ];\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext) {\n    ctx.beginPath();\n    /// 方法1\n    // ctx.scale(this.rx, this.ry);\n    // ctx.arc(0, 0, 1, 0, 2 * Math.PI, true);\n    /// 方法2\n    ctx.ellipse(0, 0, this.rx, this.ry, 0, 0, 2 * Math.PI, true);\n    ctx.closePath();\n  }\n}\n\nexport default EllipseShape;\n","import { Shape, ShapeCombo, ShapeComboOptions } from \"../Shape\";\n\nexport type ShipShapeComboOptions = {\n  showFlame?: boolean;\n} & ShapeComboOptions;\n\nexport class ShipShapeCombo extends ShapeCombo {\n  protected showFlame: boolean;\n  protected flame: Shape;\n  protected ship: Shape;\n\n  constructor(options?: ShipShapeComboOptions) {\n    super(options);\n\n    this.showFlame =\n      typeof options?.showFlame == \"boolean\" ? options?.showFlame : true;\n\n    this.flame = new Shape({\n      initD: [[\"M\", -15, 0], [\"L\", -2.5, -5], [\"L\", -2.5, 5], [\"Z\"]],\n      drag: {\n        followSibling: true\n      }\n    });\n    if (this.showFlame) {\n      this.addShape(this.flame);\n    }\n\n    this.ship = new Shape({\n      initD: [\n        [\"M\", 10, 0],\n        [\"L\", -10, 10],\n        [\"L\", -5, 0],\n        [\"L\", -10, -10],\n        [\"L\", 10, 0],\n        [\"Z\"]\n      ],\n      drag: {\n        followSibling: true\n      }\n    });\n    this.addShape(this.ship);\n  }\n\n  protected cloneShapeCombo(): ShipShapeCombo {\n    const shapeCombo = new ShipShapeCombo({\n      ...super.getBaseOptions(),\n      showFlame: this.showFlame\n    });\n    return shapeCombo;\n  }\n\n  // 供外部使用：基本属性变更\n  public update(options: ShipShapeComboOptions) {\n    if (typeof options?.showFlame == \"boolean\") {\n      this.shapes = [];\n      this.showFlame = options?.showFlame;\n      if (this.showFlame) {\n        this.addShape(this.flame);\n      }\n      this.addShape(this.ship);\n    }\n  }\n}\n\nexport default ShipShapeCombo;\n","import { ShapeCombo, ShapeComboOptions } from \"../Shape\";\nimport BallShape from \"./BallShape\";\nimport RectShape from \"./RectShape\";\nimport { toRadian } from \"@zyzgroup/core-common\";\n\nexport type SegmentShapeComboOptions = {\n  segmentWidth: number; // 2个控制点之间的距离\n  segmentHeight: number;\n  segmentCornerRadius?: number;\n} & ShapeComboOptions;\n\nexport class SegmentShapeCombo extends ShapeCombo {\n  width: number;\n  height: number;\n  cornerRadius: number;\n\n  constructor(options: SegmentShapeComboOptions) {\n    super(options);\n\n    this.width = options.segmentWidth;\n    this.height = options.segmentHeight;\n\n    this.cornerRadius =\n      typeof options.segmentCornerRadius == \"number\"\n        ? options.segmentCornerRadius\n        : this.height * 0.5;\n\n    // 圆柱体\n    const mainRect = new RectShape({\n      drag: {\n        followSibling: true\n      },\n      rectWidth: this.width + this.cornerRadius * 2,\n      rectHeight: this.height,\n      rectBorderRadius: this.cornerRadius\n    });\n    this.addShape(mainRect, {\n      dX: 0 - this.cornerRadius,\n      dY: 0 - this.height * 0.5\n    });\n\n    // 左点 - 控制点\n    const controlPoint = new BallShape({\n      drag: {\n        followSibling: true\n      },\n      ballRadius: 2\n    });\n    this.addShape(controlPoint);\n\n    // 右点\n    const rightPoint = new BallShape({\n      drag: {\n        followSibling: true\n      },\n      ballRadius: 2\n    });\n    this.addShape(rightPoint, { dX: 0 + this.width });\n  }\n\n  protected cloneShapeCombo(): SegmentShapeCombo {\n    const shapeCombo = new SegmentShapeCombo({\n      ...super.getBaseOptions(),\n      segmentWidth: this.width,\n      segmentHeight: this.height,\n      segmentCornerRadius: this.cornerRadius\n    });\n    return shapeCombo;\n  }\n\n  // 重写覆盖\n  public getBoundingClientRectCenter() {\n    return {\n      x: 0,\n      y: 0\n    };\n  }\n\n  // 绝对值\n  getPin() {\n    const controlPoint = this.shapes[1];\n    return {\n      x: controlPoint.x + Math.cos(toRadian(controlPoint.degree)) * this.width,\n      y: controlPoint.y + Math.sin(toRadian(controlPoint.degree)) * this.width\n    };\n  }\n}\n\nexport default SegmentShapeCombo;\n","import { Subject } from \"rxjs\";\nimport { clamp, stepMap } from \"@zyzgroup/core-common\";\nimport { ShapeCombo, ShapeComboOptions } from \"../Shape\";\nimport BallShape from \"./BallShape\";\nimport RectShape from \"./RectShape\";\nimport { PathD } from \"../line\";\n\nexport type SliderShapeComboOptions = {\n  sliderMin?: number;\n  sliderMax?: number;\n  sliderStep?: number;\n  sliderDefaultValue?: number;\n  sliderWidth?: number;\n  sliderHeight?: number;\n  sliderBackgroundColor?: string;\n  sliderForegroundColor?: string;\n} & ShapeComboOptions;\n\nexport class SliderShapeCombo extends ShapeCombo {\n  protected options?: SliderShapeComboOptions;\n  public value$: Subject<number> = new Subject<number>();\n  public subscription: any;\n\n  constructor(options?: SliderShapeComboOptions) {\n    super(options);\n    this.options = options;\n\n    const min = options?.sliderMin || 0;\n    const max = options?.sliderMax || 100;\n    const step = options?.sliderStep || 1;\n\n    const stepFunc = stepMap(min, max, step);\n\n    const value = stepFunc(\n      typeof options?.sliderDefaultValue == \"number\"\n        ? clamp(options.sliderDefaultValue, min, max)\n        : min\n    );\n    this.value$.next(value);\n\n    const percent = value / (max - min);\n\n    const rectWidth = options?.sliderWidth || 100;\n    const rectHeight = options?.sliderHeight || 4;\n    const rectBorderRadius = rectHeight * 0.5;\n    const ballRadius = rectHeight * 2.5;\n\n    const backgroundColor = options?.sliderBackgroundColor || \"#f5f5f5\";\n    const foregroundColor = options?.sliderForegroundColor || \"#5a82f0\";\n\n    const backgroundRect = new RectShape({\n      rectWidth,\n      rectHeight,\n      rectBorderRadius,\n      attrs: {\n        fill: backgroundColor\n      },\n      drag: {\n        enable: false\n      }\n    });\n    this.addShape(backgroundRect);\n\n    const occupyRect = new RectShape({\n      rectWidth: rectWidth * percent,\n      rectHeight: rectHeight,\n      rectBorderRadius,\n      attrs: {\n        fill: foregroundColor\n      },\n      drag: {\n        enable: false\n      }\n    });\n    this.addShape(occupyRect);\n\n    const handle = new BallShape({\n      x: rectWidth * percent,\n      y: rectBorderRadius,\n      ballRadius,\n      attrs: {\n        fill: foregroundColor\n      },\n      drag: {\n        enable: true,\n        alongPath: new PathD([\n          [\"m\", 0, 0],\n          [\"l\", rectWidth, 0]\n        ])\n      }\n    });\n    this.addShape(handle);\n\n    this.subscription = handle.transform$.subscribe(({ dX }) => {\n      console.log(dX);\n      const percent = (handle.x - backgroundRect.x) / rectWidth;\n      occupyRect.update({\n        rectWidth: rectWidth * percent\n      });\n      this.value$.next(stepFunc(percent * (max - min) + min));\n    });\n  }\n\n  public destroy() {\n    super.destroy();\n    this.subscription.unsubscribe();\n  }\n\n  protected cloneShapeCombo(): SliderShapeCombo {\n    const shapeCombo = new SliderShapeCombo({\n      ...super.getBaseOptions(),\n      ...this.options\n    });\n    return shapeCombo;\n  }\n}\n\nexport default SliderShapeCombo;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\nimport { polar, toRadian } from \"@zyzgroup/core-common\";\n\n/**\n * CSS 坐标系\n * 0deg = 从下到上\n * 90deg = 从左到右\n *                   [0deg]            [45deg]\n *                      ⬆            ⬈\n *                      *         *\n *                      *     *\n *                      *  *\n *  [-90deg] ⬅ *  *  *  *  *  *  * ⮕  [90deg]\n *                      *\n *                      *\n *                      *\n *                      ⬇\n *                   [180deg]\n */\n\n/**\n * canvas svg Vector 坐标系\n *                [-90° / 270°]\n *                  *\n *                  *\n *                  *\n *  [180°] *  *  *  *  *  *  *  [0°]\n *                  *\n *                  *\n *                  *\n *                [90°]\n */\n\nexport type RingShapeOptions = {\n  half?: boolean; // 半圆 或 全圆\n  lineWidth: number; // 圆环宽度\n  radius?: number;\n  width?: number;\n  height?: number;\n  forceCoordinate?: boolean;\n  startDegree: number; // CSS 坐标系 half=true 时，左右两边比180°水平线多出的角度，范围 +90 ~ 0 ~ -90，设计图建议 +15°\n  endDegree: number; // CSS 坐标系 half=true 时，左右两边比180°水平线多出的角度，范围 +90 ~ 0 ~ -90，设计图建议 +15°\n  // bgColor?: CanvasGradient | string;\n  // 渐变色\n  startColor?: string;\n  endColor?: string;\n  percent?: number;\n} & ShapeOptions;\n\n// 圆环\nexport class RingShape extends Shape {\n  public half: boolean;\n  public lineWidth: number;\n\n  public radius: number;\n\n  public startDegree: number;\n  public endDegree: number;\n\n  public percent = 0;\n  public percentDegree = 0;\n\n  // public bgColor?: CanvasGradient | string;\n  public startColor?: string;\n  public endColor?: string;\n\n  constructor(options: RingShapeOptions) {\n    super(options);\n\n    this.half = typeof options?.half == \"boolean\" ? options?.half : false;\n    this.lineWidth = options.lineWidth;\n\n    const width = options.width || 0;\n    const height = options.height || 0;\n    const extendDegree = (options.endDegree - options.startDegree - 180) / 2;\n\n    // 圆半径\n    if (options.radius) {\n      this.radius = options.radius;\n    } else if (this.half) {\n      // 半圆\n      const min = Math.min(width / 2, height) - this.lineWidth;\n      this.radius = Math.max(0, min - min * Math.sin(toRadian(extendDegree)));\n    } else {\n      // 全圆\n      this.radius = Math.max(\n        0,\n        Math.min(width / 2, height / 2) - this.lineWidth\n      );\n    }\n\n    // 圆心 x 坐标 自动移动到画布中心\n    if (!options.x) {\n      this.x = width / 2;\n    }\n\n    // 圆心 y 坐标 自动移动到画布中心\n    if (!options.y) {\n      if (this.half) {\n        this.y =\n          height -\n          this.lineWidth -\n          this.radius * Math.sin(toRadian(extendDegree));\n      } else {\n        this.y = height / 2;\n      }\n    }\n\n    if (options.forceCoordinate) {\n      // clone\n      this.startDegree = options.startDegree;\n      this.endDegree = options.endDegree;\n    } else {\n      // css坐标系 切换成 画布坐标系\n      this.startDegree = -90 + options.startDegree;\n      this.endDegree = -90 + options.endDegree;\n    }\n\n    // this.bgColor = options.bgColor;\n    this.startColor = options?.startColor;\n    this.endColor = options?.endColor;\n    this.setAttr({\n      \"stroke-linecap\": \"round\",\n      \"stroke-width\": String(this.lineWidth),\n      stroke: this.startColor || \"#000000\" || \"none\"\n    });\n\n    // 默认 100%\n    this.setPercent(options.percent || 1);\n  }\n\n  protected cloneShape(): RingShape {\n    const shape = new RingShape({\n      ...super.getBaseOptions(),\n      half: this.half,\n      lineWidth: this.lineWidth,\n      radius: this.radius,\n      forceCoordinate: true,\n      startDegree: this.startDegree,\n      endDegree: this.endDegree,\n      startColor: this.startColor,\n      endColor: this.endColor,\n      percent: this.percent\n    });\n    return shape;\n  }\n\n  // 提供外部变更\n  public setPercent(percent: number) {\n    this.percent = Math.max(0, percent);\n    this.percentDegree =\n      this.startDegree + (this.endDegree - this.startDegree) * percent;\n  }\n\n  public enableGradient(startColor: string, endColor: string) {\n    this.startColor = startColor;\n    this.endColor = endColor;\n    this.setAttr({\n      stroke: this.startColor\n    });\n    // 在 toCanvasContext 或 toSVGPathData 里设置渐变\n  }\n  public disableGradient(startColor: string) {\n    this.startColor = startColor;\n    this.endColor = undefined;\n    this.setAttr({\n      stroke: this.startColor\n    });\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    const { dx: fromX, dy: fromY } = polar(\n      toRadian(this.startDegree),\n      this.radius\n    );\n    const { dx: endX, dy: endY } = polar(\n      toRadian(this.percentDegree),\n      this.radius\n    );\n    return [\n      [\"m\", fromX, fromY],\n      [\n        \"a\",\n        this.radius,\n        this.radius,\n        0,\n        Math.abs(this.percentDegree - this.startDegree) >= 180 ? 1 : 0,\n        1,\n        endX - fromX,\n        endY - fromY\n      ]\n    ];\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext) {\n    if (this.startColor && this.endColor) {\n      // canvas 支持渐变色\n      let gradient;\n      if (this.half) {\n        const dX = this.radius - this.radius * Math.cos(Math.PI * this.percent);\n        const dY = this.radius * Math.sin(Math.PI * this.percent);\n        gradient = ctx.createLinearGradient(\n          -this.radius,\n          0,\n          -this.radius + dX,\n          -dY,\n          {\n            0: this.startColor,\n            1: this.endColor\n          }\n        );\n      } else {\n        const dX = this.radius * Math.sin(2 * Math.PI * this.percent);\n        const dY = this.radius * Math.cos(2 * Math.PI * this.percent);\n        gradient = ctx.createLinearGradient(0, -this.radius, dX, -dY, {\n          0: this.startColor,\n          1: this.endColor\n        });\n      }\n      this.setAttr({\n        stroke: gradient\n      });\n    }\n    ctx.beginPath();\n    ctx.arc(\n      0,\n      0,\n      this.radius,\n      toRadian(this.startDegree),\n      toRadian(this.percentDegree),\n      false\n    );\n  }\n}\n\nexport default RingShape;\n","import { ShapeCombo, ShapeComboOptions, ShapeOptions } from \"../Shape\";\nimport RingShape from \"./RingShape\";\nimport LineShape from \"./LineShape\";\nimport { toRadian } from \"@zyzgroup/core-common\";\n\n/**\n * CSS 坐标系\n * 0deg = 从下到上\n * 90deg = 从左到右\n *                   [0deg]            [45deg]\n *                      ⬆            ⬈\n *                      *         *\n *                      *     *\n *                      *  *\n *  [-90deg] ⬅ *  *  *  *  *  *  * ⮕  [90deg]\n *                      *\n *                      *\n *                      *\n *                      ⬇\n *                   [180deg]\n */\n\n/**\n * canvas svg Vector 坐标系\n *                [-90° / 270°]\n *                  *\n *                  *\n *                  *\n *  [180°] *  *  *  *  *  *  *  [0°]\n *                  *\n *                  *\n *                  *\n *                [90°]\n */\n\nexport type RingIndicatorShapeComboOptions = {\n  half?: boolean; // 半圆 或 全圆\n  lineWidth?: number;\n  width: number;\n  height: number;\n  startDegree?: number;\n  endDegree?: number;\n  bgColor: string;\n  startColor: string;\n  endColor: string;\n  percent?: number;\n} & ShapeComboOptions;\n\nexport class RingIndicatorShapeCombo extends ShapeCombo {\n  public half: boolean;\n  public lineWidth: number;\n  public width: number;\n  public height: number;\n\n  public bgColor: string;\n  public startColor: string;\n  public endColor: string;\n\n  public startDegree: number;\n  public endDegree: number;\n\n  public percent = 0;\n\n  public ringBg: RingShape;\n  public ring: RingShape;\n  public lines: LineShape[] = [];\n  public indicatorLineCount: number;\n\n  constructor(options: RingIndicatorShapeComboOptions) {\n    super(options);\n\n    this.half = typeof options?.half == \"boolean\" ? options?.half : false;\n    this.lineWidth = options?.lineWidth || 12;\n    this.width = options.width;\n    this.height = options.height;\n\n    this.bgColor = options?.bgColor;\n    this.startColor = options?.startColor;\n    this.endColor = options?.endColor;\n\n    if (this.half) {\n      this.startDegree = options?.startDegree || -90 - 15;\n      this.endDegree = options?.endDegree || 90 + 15;\n    } else {\n      this.startDegree = options?.startDegree || 0;\n      this.endDegree = options?.endDegree || 360;\n    }\n\n    this.percent = options?.percent || 0;\n\n    this.ringBg = new RingShape({\n      half: this.half,\n      lineWidth: this.lineWidth,\n      width: options.width,\n      height: options.height,\n      startDegree: this.startDegree,\n      endDegree: this.endDegree,\n      startColor: this.bgColor,\n      percent: 1\n    });\n    this.addShape(this.ringBg);\n\n    this.ring = new RingShape({\n      half: this.half,\n      lineWidth: this.lineWidth,\n      width: options.width,\n      height: options.height,\n      startDegree: this.startDegree,\n      endDegree: this.endDegree,\n      startColor: this.startColor,\n      endColor: this.endColor,\n      percent: 0\n    });\n    this.addShape(this.ring);\n\n    this.indicatorLineCount = 22 + 1;\n\n    if (this.half) {\n      const indicatorLineToRingDistance = 20;\n      const indicatorLineHeight = 17;\n      const indicatorLineWidth = 2;\n      const length =\n        this.ringBg.radius - indicatorLineToRingDistance - indicatorLineHeight;\n      for (let i = 0; i < this.indicatorLineCount; i++) {\n        const line = new LineShape({\n          lineLength: indicatorLineHeight,\n          startColor: this.startColor,\n          endColor: this.endColor,\n          attrs: {\n            \"stroke-linecap\": \"round\",\n            \"stroke-width\": String(indicatorLineWidth),\n            stroke: this.bgColor\n          }\n        });\n        this.lines.push(line);\n        const lineDegree =\n          -90 +\n          this.startDegree +\n          ((this.endDegree - this.startDegree) /\n            (this.indicatorLineCount - 1)) *\n            i;\n        this.addShape(line, {\n          dX: this.ringBg.x + Math.cos(toRadian(lineDegree)) * length,\n          dY: this.ringBg.y + Math.sin(toRadian(lineDegree)) * length,\n          dDegree: lineDegree\n        });\n      }\n    }\n\n    // 默认 0%\n    this.setPercent(options.percent || 0);\n  }\n\n  protected cloneShapeCombo(): RingIndicatorShapeCombo {\n    const shapeCombo = new RingIndicatorShapeCombo({\n      ...super.getBaseOptions(),\n      half: this.half,\n      lineWidth: this.lineWidth,\n      width: this.width,\n      height: this.height,\n      bgColor: this.bgColor,\n      startColor: this.startColor,\n      endColor: this.endColor,\n      startDegree: this.startDegree,\n      endDegree: this.endDegree,\n      percent: this.percent\n    });\n    return shapeCombo;\n  }\n\n  // 提供外部变更\n  public setPercent(percent: number) {\n    this.percent = Math.max(0, percent);\n    this.ring.setPercent(percent);\n    if (this.half) {\n      for (let i = 0; i < this.indicatorLineCount; i++) {\n        const isInPercent = i / (this.indicatorLineCount - 1) <= this.percent;\n        if (isInPercent) {\n          this.lines[i].enableGradient(this.startColor, this.endColor);\n        } else {\n          this.lines[i].disableGradient(this.bgColor);\n        }\n      }\n    }\n  }\n}\n\nexport default RingIndicatorShapeCombo;\n","import { Shape, ShapeOptions } from \"../Shape\";\nimport { SVGParsedPathData, createSVGElement } from \"../../../svg/\";\nimport { YZCanvasContext } from \"../canvas\";\nimport { extractNumber } from \"@zyzgroup/core-common\";\n\nexport type TextShapeOptions = {\n  text: string;\n} & ShapeOptions;\n\nexport class TextShape extends Shape {\n  public text: string;\n  public width = 0;\n  public height = 0;\n\n  constructor(options: TextShapeOptions) {\n    super(options);\n    this.text = options.text;\n\n    this.setAttr({\n      // default attributes\n      fontSize: \"10px\",\n      fontFamily: `system-ui, Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif`,\n      // see https://nolanlawson.com/2022/04/08/the-struggle-of-using-native-emoji-on-the-web/\n      emojiFontFamily:\n        '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\", \"EmojiOne Color\", \"Android Emoji\", \"Twemoji Mozilla\", \"system emoji\", sans-serif',\n      fill: \"#666666\",\n      stroke: \"none\",\n      \"alignment-baseline\": \"middle\",\n      textAnchor: \"start\", // start | end\n      // custom attributes\n      ...this.attrs\n    });\n\n    const fontSize = extractNumber(this.getAttr(\"fontSize\"), 10).number;\n    const fontWeight = extractNumber(this.getAttr(\"fontWeight\"), 400).number;\n    const mt = TextShape.measureText(this.text, fontSize, fontWeight);\n    this.width = mt.width;\n    this.height = mt.height;\n  }\n\n  protected cloneShape(): TextShape {\n    const shape = new TextShape({\n      ...super.getBaseOptions(),\n      text: this.text\n    });\n    return shape;\n  }\n\n  public toSVGEl(): SVGElement {\n    const el = createSVGElement(\"text\");\n    el.setAttribute(\"x\", \"0\");\n    el.setAttribute(\"y\", \"0\");\n    el.style.alignmentBaseline = \"middle\";\n    const texts = this.text.split(\"\\n\");\n    if (texts.length <= 1) {\n      el.innerHTML = this.text;\n    } else {\n      const lineHeight = this.getAttr(\"line-height\", \"1.2em\") as string;\n      texts.forEach((t, index) => {\n        if (t.trim()) {\n          const tspan = createSVGElement(\"tspan\");\n          tspan.setAttribute(\"x\", \"0\");\n          tspan.setAttribute(\"dy\", index > 0 ? lineHeight : \"0\");\n          tspan.innerHTML = t.trim();\n          tspan.style.alignmentBaseline = \"middle\";\n          el.append(tspan);\n        }\n      });\n    }\n    return el;\n  }\n\n  public toSVGPathData(): SVGParsedPathData[] {\n    return [];\n  }\n\n  public toCanvasContext(ctx: YZCanvasContext) {\n    const texts = this.text.split(\"\\n\");\n    if (texts.length <= 1) {\n      ctx.fillText(this.text, 0, 0);\n    } else {\n      const metrics: TextMetrics = ctx.measureText(this.text);\n      const height =\n        metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n      const lineHeight =\n        height * parseFloat(this.getAttr(\"line-height\", \"1.2em\") as string);\n      let y = 0;\n      texts.forEach((t, index) => {\n        if (t.trim()) {\n          y += index > 0 ? lineHeight : 0;\n          ctx.fillText(t.trim(), 0, y);\n        }\n      });\n    }\n  }\n\n  public static measureText(\n    text: string,\n    fontSize = 12,\n    fontWeight = 400\n  ): { width: number; height: number } {\n    const span = document.createElement(\"span\");\n    span.style.visibility = \"hidden\";\n    span.style.margin = \"0\";\n    span.style.padding = \"0\";\n    span.style.inset = \"0\";\n    span.style.whiteSpace = \"nowrap\";\n    span.style.overflow = \"visible\";\n    span.style.fontSize = fontSize + \"px\";\n    span.style.fontWeight = fontWeight.toString();\n    span.innerText = text;\n    document.body.appendChild(span);\n    const width = span.offsetWidth;\n    const height = span.offsetHeight;\n    document.body.removeChild(span);\n    return { width, height };\n    // const canvas = new OffscreenCanvas(fontSize, fontSize);\n    // const ctx = canvas.getContext(\"2d\");\n    // const metrics: TextMetrics = ctx.measureText(this.text);\n  }\n\n  /**\n   * 获取固定宽度的字符串，如果传入的text的宽度不够width,则返回原字符串\n   * @text   将要被提取的原字符串\n   * @width  想要提取的字符串长度\n   * @fontSize  字符串显示时的字符大小，支持>=12\n   * @fontWeight  字符串显示时的字符粗细\n   * @isNeedEllipsis   当text的宽度大于width时是否需要省略号\n   */\n  public static getFixedWidthText(\n    text: string,\n    width: number,\n    fontSize = 12,\n    fontWeight = 400,\n    gap = \"...\"\n  ) {\n    let returnText = \"\";\n    if (!text || width < fontSize) {\n      return returnText;\n    }\n    const arr = text.split(\"\");\n    let nowWidth = gap\n      ? TextShape.measureText(gap, fontSize, fontWeight).width\n      : 0;\n    for (let i = 0, l = arr.length; i < l; i++) {\n      nowWidth += TextShape.measureText(arr[i], fontSize, fontWeight).width;\n      if (nowWidth > width) {\n        if (gap) {\n          returnText += gap;\n        }\n        break;\n      } else {\n        returnText += arr[i];\n      }\n    }\n    return returnText;\n  }\n}\n\nexport default TextShape;\n","import { Color, toDegree, toRadian } from \"@zyzgroup/core-common\";\nimport { Shape, ShapeCombo, ShapeComboOptions } from \"../Shape\";\nimport RectShape from \"./RectShape\";\n// import StarShape from \"./StarShape\";\n\n// https://www.kirilv.com/canvas-confetti/\n// https://github.com/catdad/canvas-confetti\n\nexport type ConfettiShapeComboOptions = Partial<{\n  shapeCreator: () => Shape;\n  width: number;\n  height: number;\n  x: number;\n  y: number;\n  particleCount: number;\n  angle: number;\n  spread: number;\n  startVelocity: number;\n  decay: number;\n  gravity: number;\n  drift: number;\n  ticks: number;\n  colors: string[];\n  scalar: number;\n  flat: boolean;\n}> &\n  ShapeComboOptions;\n\nexport class ConfettiShapeCombo extends ShapeCombo {\n  private options: ConfettiShapeComboOptions;\n\n  constructor(options: ConfettiShapeComboOptions) {\n    super(options);\n\n    this.options = options;\n\n    const {\n      shapeCreator,\n      width,\n      height,\n      x,\n      y,\n      particleCount,\n      angle,\n      spread,\n      startVelocity,\n      decay,\n      gravity,\n      drift,\n      ticks,\n      colors,\n      scalar,\n      flat\n    } = Object.assign(\n      {\n        shapeCreator: () => new RectShape({ rectWidth: 10, rectHeight: 10 }),\n        width: 100,\n        height: 100,\n        x: 0.5,\n        y: 0.6,\n        particleCount: 100,\n        angle: 90,\n        spread: 70,\n        startVelocity: 45,\n        decay: 0.9,\n        gravity: 1,\n        drift: 0,\n        ticks: 200,\n        colors: [\n          \"rgb(10,194,210)\",\n          \"rgb(123,183,250)\",\n          \"rgb(96,215,169)\",\n          \"rgb(253,193,98)\",\n          \"rgb(253,106,98)\",\n          \"rgb(246,141,187)\",\n          \"rgb(38,204,255)\",\n          \"rgb(162,90,253)\",\n          \"rgb(255,94,126)\",\n          \"rgb(136,255,90)\",\n          \"rgb(252,255,66)\",\n          \"rgb(255,166,45)\",\n          \"rgb(255,54,255)\",\n          \"rgb(220,73,22)\",\n          \"rgb(104,113,177)\",\n          \"rgb(209,185,53)\",\n          \"rgb(27,188,155)\",\n          \"rgb(255,127,80)\",\n          \"rgb(75,191,195)\",\n          \"rgb(255,153,0)\"\n        ],\n        scalar: 1,\n        flat: false\n      },\n      options || {}\n    );\n    const addShapeAttributes = (s: Shape, temp: number) => {\n      // 通用属性\n      s.x = width * x;\n      s.y = height * y;\n      s.scaleX = scalar;\n      s.scaleY = scalar;\n      const fillColor = colors[temp % colors.length];\n      s.setAttr({\n        fill: fillColor\n      });\n      s.interactive = false;\n      // 自定义属性\n      s.wobble = Math.random() * 10;\n      s.wobbleSpeed = Math.min(0.11, Math.random() * 0.1 + 0.05);\n      s.velocity = startVelocity * 0.5 + Math.random() * startVelocity;\n      s.angle2D = -radAngle + (0.5 * radSpread - Math.random() * radSpread);\n      s.tiltAngle = (Math.random() * (0.75 - 0.25) + 0.25) * Math.PI;\n      s.tick = 0;\n      s.totalTicks = ticks;\n      s.decay = decay;\n      s.drift = drift;\n      s.random = Math.random() + 2;\n      s.tiltSin = 0;\n      s.tiltCos = 0;\n      s.wobbleX = 0;\n      s.wobbleY = 0;\n      s.gravity = gravity * 3;\n      s.scalar = scalar;\n      s.flat = flat;\n      s.color = new Color(fillColor);\n    };\n    const radAngle = toRadian(angle);\n    const radSpread = toRadian(spread);\n    let temp = particleCount;\n    while (temp) {\n      const s = shapeCreator();\n      addShapeAttributes(s, temp);\n      // s.clone()可以改写，用以复制「自定义属性」\n      s.clone = ((temp) => () => {\n        const sc = shapeCreator();\n        addShapeAttributes(sc, temp);\n        return sc;\n      })(temp);\n      this.addShape(s);\n      temp--;\n    }\n  }\n\n  protected cloneShapeCombo(): ConfettiShapeCombo {\n    const shapeCombo = new ConfettiShapeCombo(this.options);\n    return shapeCombo;\n  }\n\n  // 提供外部变更\n  public update() {\n    this.shapes = this.shapes.filter((fetti) => {\n      fetti.x += Math.cos(fetti.angle2D) * fetti.velocity + fetti.drift;\n      fetti.y += Math.sin(fetti.angle2D) * fetti.velocity + fetti.gravity;\n      fetti.velocity *= fetti.decay;\n\n      if (fetti.flat) {\n        fetti.wobble = 0;\n        fetti.wobbleX = fetti.x + 10 * fetti.scalar;\n        fetti.wobbleY = fetti.y + 10 * fetti.scalar;\n        fetti.tiltSin = 0;\n        fetti.tiltCos = 0;\n        fetti.random = 1;\n      } else {\n        fetti.wobble += fetti.wobbleSpeed;\n        fetti.wobbleX = fetti.x + 10 * fetti.scalar * Math.cos(fetti.wobble);\n        fetti.wobbleY = fetti.y + 10 * fetti.scalar * Math.sin(fetti.wobble);\n        fetti.tiltAngle += 0.1;\n        fetti.tiltSin = Math.sin(fetti.tiltAngle);\n        fetti.tiltCos = Math.cos(fetti.tiltAngle);\n        fetti.random = Math.random() + 2;\n      }\n\n      const progress = fetti.tick++ / fetti.totalTicks;\n      const x1 = fetti.x + fetti.random * fetti.tiltCos;\n      const y1 = fetti.y + fetti.random * fetti.tiltSin;\n      const x2 = fetti.wobbleX + fetti.random * fetti.tiltCos;\n      const y2 = fetti.wobbleY + fetti.random * fetti.tiltSin;\n\n      fetti.setAttr(\"fill\", fetti.color.setAlpha(1 - progress).toString());\n      fetti.degree = toDegree((Math.PI / 10) * fetti.wobble);\n      fetti.scaleX = Math.abs(x2 - x1) * 0.1;\n      fetti.scaleY = Math.abs(y2 - y1) * 0.1;\n\n      return fetti.tick < fetti.totalTicks;\n    });\n\n    // if can continue\n    return this.shapes.length > 0;\n  }\n}\n\nexport default ConfettiShapeCombo;\n","// Chinese (China) [zh-cn]\n\nexport default {\n  name: \"zh-cn\",\n  weekdays: \"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),\n  weekdaysShort: \"周日_周一_周二_周三_周四_周五_周六\".split(\"_\"),\n  weekdaysMin: \"日_一_二_三_四_五_六\".split(\"_\"),\n  months:\n    \"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\n      \"_\"\n    ),\n  monthsShort: \"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),\n  ordinal: (number: number, period: string) => {\n    switch (period) {\n      case \"W\":\n        return `${number}周`;\n      default:\n        return `${number}日`;\n    }\n  },\n  weekStart: 1,\n  yearStart: 4,\n  formats: {\n    LT: \"HH:mm\",\n    LTS: \"HH:mm:ss\",\n    L: \"YYYY/MM/DD\",\n    LL: \"YYYY年M月D日\",\n    LLL: \"YYYY年M月D日Ah点mm分\",\n    LLLL: \"YYYY年M月D日ddddAh点mm分\",\n    l: \"YYYY/M/D\",\n    ll: \"YYYY年M月D日\",\n    lll: \"YYYY年M月D日 HH:mm\",\n    llll: \"YYYY年M月D日dddd HH:mm\"\n  },\n  relativeTime: {\n    future: \"%s内\",\n    past: \"%s前\",\n    s: \"几秒\",\n    m: \"1 分钟\",\n    mm: \"%d 分钟\",\n    h: \"1 小时\",\n    hh: \"%d 小时\",\n    d: \"1 天\",\n    dd: \"%d 天\",\n    M: \"1 个月\",\n    MM: \"%d 个月\",\n    y: \"1 年\",\n    yy: \"%d 年\"\n  },\n  meridiem: (hour: number, minute: number) => {\n    const hm = hour * 100 + minute;\n    if (hm < 600) {\n      return \"凌晨\";\n    } else if (hm < 900) {\n      return \"早上\";\n    } else if (hm < 1100) {\n      return \"上午\";\n    } else if (hm < 1300) {\n      return \"中午\";\n    } else if (hm < 1800) {\n      return \"下午\";\n    }\n    return \"晚上\";\n  }\n};\n","// English [en]\nexport default {\n  name: \"en\",\n  weekdays: \"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\n    \"_\"\n  ),\n  months:\n    \"January_February_March_April_May_June_July_August_September_October_November_December\".split(\n      \"_\"\n    ),\n  ordinal: (n: number) => {\n    const s = [\"th\", \"st\", \"nd\", \"rd\"];\n    const v = n % 100;\n    return `[${n}${s[(v - 20) % 10] || s[v] || s[0]}]`;\n  }\n};\n","import { MapCache } from \"@zyzgroup/core-common\";\nimport zh from \"./locales/zh-cn\";\nimport en from \"./locales/en\";\n\n// global loaded locale\nexport const Ls = new MapCache<any>();\n\n// global locale\nlet L = \"zh-cn\";\n// Ls.set(L, zh);\n\nuseLocale(en);\nuseLocale(zh);\n\nexport function useLocale(\n  preset?: string | { name: string },\n  object?: { name: string }\n): Promise<{ name: string }> {\n  if (!preset) {\n    // get current locale\n    return Ls.get(L);\n  }\n  let l;\n  if (typeof preset === \"string\") {\n    const presetLower = preset.toLowerCase();\n    if (Ls.get(presetLower)) {\n      /// 已加载\n      l = presetLower;\n    } else if (object) {\n      /// 覆盖\n      Ls.set(presetLower, object);\n      l = presetLower;\n    } else {\n      /// 未加载\n      // return useLocale(await import(`./locales/${preset}`));\n      return Ls.get(L);\n    }\n  } else {\n    /// 按需加载语言文件\n    const { name } = preset;\n    Ls.set(name, preset);\n    l = name;\n  }\n  if (l) {\n    L = l;\n  }\n  return Ls.get(l) || Ls.get(L);\n}\n","\"use client\";\n\nimport * as motion from \"motion/react-client\";\nimport { useRef } from \"react\";\nimport { rh } from \"../../../hooks\";\nimport { MotionValue } from \"motion/react\";\n\nexport function Ball({\n  size = 100,\n  color = \"var(--yz-foreground)\"\n}: {\n  size?: number;\n  color?: string | MotionValue<string>;\n}) {\n  const ref = useRef<HTMLDivElement>(null);\n\n  const { x, y } = rh.useFollowPointer(ref);\n\n  return (\n    <motion.div\n      ref={ref}\n      style={{\n        width: size,\n        height: size,\n        backgroundColor: color,\n        borderRadius: \"50%\",\n        x,\n        y\n      }}\n    />\n  );\n}\n","\"use client\";\n\nimport * as motion from \"motion/react-client\";\nimport { useEffect, useRef } from \"react\";\nimport { MotionValue, useAnimationFrame, useMotionValue } from \"motion/react\";\n\nexport function Cube({\n  x = 300,\n  y = 200,\n  z = 100,\n  perspective = 400, // 定义摄像机到屏幕的距离 : 100px ~ 2000px | none\n  color = \"var(--yz-foreground)\",\n  action\n}: {\n  x: number;\n  y: number;\n  z: number;\n  perspective?: number;\n  color?: string | MotionValue<string>;\n  action?:\n    | \"show-front\"\n    | \"show-back\"\n    | \"show-left\"\n    | \"show-right\"\n    | \"show-top\"\n    | \"show-bottom\";\n}) {\n  const halfX = Math.floor(x / 2);\n  const halfY = Math.floor(y / 2);\n  const halfZ = Math.floor(z / 2);\n\n  const ref = useRef<HTMLDivElement>(null);\n\n  // useAnimationFrame((time, delta) => {\n  //   if (!ref.current) return;\n  //   const rotate = Math.sin(time / 10000) * 360;\n  //   const y = (1 + Math.sin(time / 1000)) * -10;\n  //   ref.current.style.transform = `translateY(${y}px) rotateX(${rotate}deg) rotateY(${rotate}deg)`;\n  // });\n\n  const transform = useMotionValue(\"\");\n  useEffect(() => {\n    switch (action) {\n      case \"show-front\":\n        // transform.set(`translateZ(-${halfZ}px) rotateY(0deg)`);\n        transform.set(`rotateY(0deg)`);\n        break;\n      case \"show-back\":\n        // transform.set(`translateZ(-${halfZ}px) rotateY(-180deg)`);\n        transform.set(`rotateY(-180deg)`);\n        break;\n      case \"show-left\":\n        // transform.set(`translateZ(-${halfX}px) rotateY(90deg)`);\n        transform.set(`rotateY(90deg)`);\n        break;\n      case \"show-right\":\n        // transform.set(`translateZ(-${halfX}px) rotateY(-90deg)`);\n        transform.set(`rotateY(-90deg)`);\n        break;\n      case \"show-top\":\n        // transform.set(`translateZ(-${halfY}px) rotateX(-90deg)`);\n        transform.set(`rotateX(-90deg)`);\n        break;\n      case \"show-bottom\":\n        // transform.set(`translateZ(-${halfY}px) rotateX(90deg)`);\n        transform.set(`rotateX(90deg)`);\n        break;\n    }\n  }, [action, halfX, halfY, halfZ]);\n\n  return (\n    <div\n      className=\"camera\"\n      style={{ width: x, height: y, perspective }}>\n      <motion.div\n        ref={ref}\n        className=\"cube\"\n        style={{\n          width: x,\n          height: y,\n          transition: \"transform 1s\",\n          transform\n        }}>\n        <motion.div\n          className=\"surface front\"\n          style={{\n            width: x,\n            height: y,\n            transform: `rotateY(0deg) translateZ(${halfZ}px)`,\n            backgroundColor: \"var(--yz-rainbow-red)\"\n          }}>\n          front\n        </motion.div>\n        <motion.div\n          className=\"surface back\"\n          style={{\n            width: x,\n            height: y,\n            transform: `rotateY(180deg) translateZ(${halfZ}px)`,\n            backgroundColor: \"var(--yz-rainbow-indigo)\"\n          }}>\n          back\n        </motion.div>\n        <motion.div\n          className=\"surface left\"\n          style={{\n            width: z,\n            height: y,\n            left: halfX - halfZ,\n            transform: `rotateY(-90deg) translateZ(${halfX}px)`,\n            backgroundColor: \"var(--yz-rainbow-orange)\"\n          }}>\n          left\n        </motion.div>\n        <motion.div\n          className=\"surface right\"\n          style={{\n            width: z,\n            height: y,\n            left: halfX - halfZ,\n            transform: `rotateY(90deg) translateZ(${halfX}px)`,\n            backgroundColor: \"var(--yz-rainbow-yellow)\"\n          }}>\n          right\n        </motion.div>\n        <motion.div\n          className=\"surface top\"\n          style={{\n            width: x,\n            height: z,\n            top: halfY - halfZ,\n            transform: `rotateX(90deg) translateZ(${halfY}px)`,\n            backgroundColor: \"var(--yz-rainbow-green)\"\n          }}>\n          top\n        </motion.div>\n        <motion.div\n          className=\"surface bottom\"\n          style={{\n            width: x,\n            height: z,\n            top: halfY - halfZ,\n            transform: `rotateX(-90deg) translateZ(${halfY}px)`,\n            backgroundColor: \"var(--yz-rainbow-blue)\"\n          }}>\n          bottom\n        </motion.div>\n      </motion.div>\n      <StyleSheet></StyleSheet>\n    </div>\n  );\n}\n\nfunction StyleSheet() {\n  return (\n    <style>{`\n      .camera {\n        perspective-origin: 50% 50%;\n        /* animation: cameraMove 2s ease-out infinite alternate both; */\n      }\n\n      /*\n      @keyframes cameraMove {\n        0% {\n          perspective-origin: 50% 180px;\n        }\n        100% {\n          perspective-origin: 50% -200px;\n        }\n      }\n      */\n\n      .cube {\n        position: relative;\n        transform-style: preserve-3d;\n      }\n\n      .cube .surface {\n        position: absolute;\n        opacity: 0.6;\n        font-size: 16px;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        backface-visibility: visible;\n      }\n\n    `}</style>\n  );\n}\n","\"use client\";\n\nimport { MotionValue } from \"motion/react\";\nimport * as motion from \"motion/react-client\";\n\nconst button = {\n  rest: { scale: 1 },\n  hover: { scale: 1.1 },\n  pressed: { scale: 0.95 }\n};\nconst arrow = {\n  rest: { rotate: 0 },\n  hover: { rotate: 360, transition: { duration: 0.4 } }\n};\n\nexport const RefreshBtn = ({\n  onClick,\n  color = \"var(--yz-foreground)\"\n}: {\n  onClick: () => void;\n  color?: string | MotionValue<string>;\n}) => {\n  return (\n    <motion.div\n      style={{\n        ...btnStyle,\n        border: `1px dotted ${color}`\n      }}\n      onClick={onClick}\n      variants={button}\n      initial=\"rest\"\n      whileHover=\"hover\"\n      whileTap=\"pressed\">\n      <motion.svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"16\"\n        height=\"16\"\n        viewBox=\"0 0 16 16\"\n        variants={arrow}>\n        <motion.path\n          d=\"M12.8 5.1541V2.5a.7.7 0 0 1 1.4 0v5a.7.7 0 0 1-.7.7h-5a.7.7 0 0 1 0-1.4h3.573c-.7005-1.8367-2.4886-3.1-4.5308-3.1C4.8665 3.7 2.7 5.85 2.7 8.5s2.1665 4.8 4.8422 4.8c1.3035 0 2.523-.512 3.426-1.4079a.7.7 0 0 1 .986.9938C10.7915 14.0396 9.2186 14.7 7.5422 14.7 4.0957 14.7 1.3 11.9257 1.3 8.5s2.7957-6.2 6.2422-6.2c2.1801 0 4.137 1.1192 5.2578 2.8541z\"\n          fill=\"#ffffff\"\n          fillRule=\"nonzero\"\n          style={{ fill: color }}\n        />\n      </motion.svg>\n    </motion.div>\n  );\n};\n\nconst btnStyle = {\n  display: \"inline-flex\",\n  justifyContent: \"center\",\n  alignItems: \"center\",\n  cursor: \"pointer\",\n  height: \"var(--yz-button-height-tertiary)\",\n  padding: \"0 var(--yz-button-padding-horizontal-tertiary)\",\n  borderRadius: \"var(--yz-button-border-radius-tertiary)\"\n};\n","\"use client\";\n\nimport { MotionValue } from \"motion/react\";\nimport * as motion from \"motion/react-client\";\n\nexport function ProgressCircle({\n  progress,\n  size,\n  strokeWidth = 10,\n  color = \"var(--yz-foreground)\",\n  bgColor = \"rgba(255,255,255,0)\"\n}: {\n  progress: MotionValue<number>;\n  size?: number;\n  strokeWidth?: number;\n  color?: string | MotionValue<string>;\n  bgColor?: string;\n}) {\n  const circle: React.CSSProperties = {\n    strokeWidth,\n    strokeDashoffset: 0,\n    strokeLinecap: \"round\",\n    fill: \"none\"\n  };\n  // 基于 viewBox 计算\n  const r = Math.max(1, Math.floor(50 - strokeWidth / 2));\n\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 100 100\"\n      preserveAspectRatio=\"xMidYMid meet\"\n      style={{\n        width: size ?? \"100%\",\n        height: size ?? \"100%\",\n        overflow: \"visible\"\n      }}>\n      <g transform=\"rotate(-90 50 50)\">\n        <circle\n          cx=\"50\"\n          cy=\"50\"\n          r={r}\n          pathLength=\"1\"\n          style={{ ...circle, stroke: bgColor }}\n        />\n        <motion.circle\n          cx=\"50\"\n          cy=\"50\"\n          r={r}\n          pathLength=\"0\"\n          style={{ ...circle, stroke: color, pathLength: progress }}\n        />\n      </g>\n    </svg>\n  );\n}\n","\"use client\";\n\nimport { MotionValue } from \"motion/react\";\nimport * as motion from \"motion/react-client\";\n\nexport function ProgressTick({\n  progress,\n  size,\n  strokeWidth = 2,\n  color = \"var(--yz-success)\"\n}: {\n  progress: MotionValue<number>;\n  size?: number;\n  strokeWidth?: number;\n  color?: string | MotionValue<string>;\n}) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 50 50\"\n      preserveAspectRatio=\"xMidYMid meet\"\n      style={{\n        width: size ?? \"100%\",\n        height: size ?? \"100%\",\n        overflow: \"visible\"\n      }}>\n      <motion.path\n        fill=\"none\"\n        strokeWidth={strokeWidth}\n        stroke={color}\n        d=\"M14,26 L 22,33 L 35,16\"\n        strokeDasharray=\"0 1\"\n        style={{ pathLength: progress }}\n      />\n    </svg>\n  );\n}\n","\"use client\";\n\nimport { MotionValue, useTransform } from \"motion/react\";\nimport * as motion from \"motion/react-client\";\n\nexport function ProgressCross({\n  progress,\n  size,\n  strokeWidth = 2,\n  color = \"var(--yz-error)\"\n}: {\n  progress: MotionValue<number>;\n  size?: number;\n  strokeWidth?: number;\n  color?: string | MotionValue<string>;\n}) {\n  const crossPathAProgress = useTransform(progress, [0, 0.55], [0, 1]);\n  const crossPathBProgress = useTransform(progress, [0.5, 1], [0, 1]);\n\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 50 50\"\n      preserveAspectRatio=\"xMidYMid meet\"\n      style={{\n        width: size ?? \"100%\",\n        height: size ?? \"100%\",\n        overflow: \"visible\"\n      }}>\n      <motion.path\n        fill=\"none\"\n        strokeWidth={strokeWidth}\n        stroke={color}\n        d=\"M17,17 L33,33\"\n        strokeDasharray=\"0 1\"\n        style={{ pathLength: crossPathAProgress }}\n      />\n      <motion.path\n        fill=\"none\"\n        strokeWidth={strokeWidth}\n        stroke={color}\n        d=\"M33,17 L17,33\"\n        strokeDasharray=\"0 1\"\n        style={{ pathLength: crossPathBProgress }}\n      />\n    </svg>\n  );\n}\n","\"use client\";\n\nimport { useScroll, UseScrollOptions } from \"motion/react\";\nimport * as motion from \"motion/react-client\";\nimport { ReactNode, useRef } from \"react\";\nimport { rh } from \"../../hooks\";\n\nexport function Scroll({\n  children,\n  options,\n  render\n}: {\n  children?: ReactNode;\n  options?: UseScrollOptions;\n  render?: (v: rh.ScrollProgressContextValue) => ReactNode;\n}) {\n  // useScroll() → 基于 window 滚动\n  // useScroll({ container }) → 基于 container 滚动\n  // useScroll({ target }) → target 基于 viewport 滚动\n  // useScroll({ container, target }) → target position relative to container viewport, target 在 container 的可视区域中的位置变化进度\n\n  // offset: [\n  //   \"target位置 viewport位置\", // scrollYProgress = 0，when the top of the target meets the bottom of the container\n  //   \"target位置 viewport位置\" // scrollYProgress = 1，when the bottom of the target meets the top of the container\n  // ]\n  // offset: [\"start end\", \"end start\"] // axis: 'y' : 从元素刚进入 viewport ，到元素完全离开 viewport，这段距离映射到 0~1\n  // offset: [\"end end\", \"start start\"] // axis: 'y' : 从元素完整进入 viewport，到元素顶部贴 viewport 顶部，这段滚动距离映射到 0~1\n  // offset: [\"start end\", \"center center\"] // Scroll image reveal effect\n  // offset: [\"start start\", \"end end\"] // Horizontal scroll section\n\n  const { scrollXProgress, scrollYProgress } = useScroll(options);\n\n  const value = {\n    scrollXProgress,\n    scrollYProgress,\n    type: options?.container?.current ? \"container\" : \"window\",\n    container: options?.container?.current\n  } as rh.ScrollProgressContextValue;\n\n  return (\n    <rh.ScrollProgressContext.Provider value={value}>\n      {render && render(value)}\n      {children}\n    </rh.ScrollProgressContext.Provider>\n  );\n}\n\nexport function TrackElementWithinViewport({\n  children,\n  offset = [\"start end\", \"end start\"] // offset = [\"end end\", \"start start\"]\n}: {\n  children: ReactNode;\n  offset?: any;\n}) {\n  const ref = useRef(null);\n\n  return (\n    <Scroll options={{ target: ref, offset }}>\n      <div ref={ref}>{children}</div>\n    </Scroll>\n  );\n}\n","\"use client\";\n\nimport { MotionValue, UseScrollOptions, useSpring } from \"motion/react\";\nimport * as motion from \"motion/react-client\";\nimport { ReactNode } from \"react\";\nimport { rh } from \"../../hooks\";\nimport { Scroll } from \"./Scroll\";\n\nexport function ScrollYIndicator({\n  children,\n  options,\n  color = \"var(--yz-foreground)\",\n  height = 10\n}: {\n  children: ReactNode;\n  options?: UseScrollOptions;\n  color?: string | MotionValue<string>;\n  height?: number;\n}) {\n  return (\n    <Scroll options={{ ...(options ?? {}), axis: \"y\" }}>\n      <Indicator\n        color={color}\n        height={height}\n      />\n      {children}\n    </Scroll>\n  );\n}\n\nfunction Indicator({\n  color = \"var(--yz-foreground)\",\n  height = 10\n}: {\n  color?: string | MotionValue<string>;\n  height?: number;\n}) {\n  const { scrollYProgress, type } = rh.useScrollProgress();\n\n  const scaleX = useSpring(scrollYProgress, {\n    stiffness: 100,\n    damping: 30,\n    restDelta: 0.001\n  });\n\n  return (\n    <motion.div\n      style={{\n        scaleX,\n        originX: 0,\n        position: type === \"container\" ? \"absolute\" : \"fixed\",\n        top: 0,\n        left: 0,\n        right: 0,\n        height,\n        backgroundColor: color,\n        zIndex: 99999\n      }}\n    />\n  );\n}\n","\"use client\";\n\nimport * as motion from \"motion/react-client\";\nimport { ReactNode, useRef } from \"react\";\nimport { rh } from \"../../hooks\";\nimport { Scroll } from \"./Scroll\";\n\nexport function ScrollXContainer({ children }: { children: ReactNode }) {\n  const ref = useRef(null);\n\n  return (\n    <Scroll\n      options={{\n        container: ref,\n        offset: [\"start start\", \"end end\"],\n        axis: \"x\"\n      }}\n      render={({ scrollXProgress }) => {\n        const maskImage = rh.useScrollXOverflowMaskImage(scrollXProgress);\n        return (\n          <div className=\"scroll-x-container\">\n            <motion.div\n              ref={ref}\n              className=\"scrollable\"\n              style={{ maskImage }}>\n              {children}\n            </motion.div>\n            <StyleSheet />\n          </div>\n        );\n      }}></Scroll>\n  );\n}\n\nfunction StyleSheet() {\n  return (\n    <style>{`\n      .scroll-x-container {\n        width: 100%;\n        position: relative;\n      }\n      .scroll-x-container .scrollable {\n        display: flex;\n        overflow-x: scroll;\n        margin: 0 auto;\n      }\n    `}</style>\n  );\n}\n","\"use client\";\n\nimport { animate, useMotionValue, useTransform } from \"motion/react\";\nimport * as motion from \"motion/react-client\";\nimport { useEffect, useState } from \"react\";\nimport { useFlubber } from \"../../hooks/react\";\n\nexport function PathMorphing({\n  paths = samplePaths,\n  fills = sampleColors,\n  size\n}: {\n  paths?: string[];\n  fills?: string[];\n  size?: number;\n}) {\n  const [pathIndex, setPathIndex] = useState(0);\n  const pathIndexProgress = useMotionValue(pathIndex);\n\n  const fill = useTransform(\n    pathIndexProgress,\n    paths.map((_, index) => index),\n    fills\n  );\n\n  const path = useFlubber(pathIndexProgress, paths);\n\n  useEffect(() => {\n    const animation = animate(\n      pathIndexProgress, // change value\n      pathIndex, // final value\n      {\n        duration: 0.8,\n        ease: \"easeInOut\",\n        onComplete: () => {\n          if (pathIndex === paths.length - 1) {\n            pathIndexProgress.set(0); // 骤变\n            setPathIndex(1); // next\n          } else {\n            setPathIndex(pathIndex + 1); // next\n          }\n        }\n      }\n    );\n    return () => animation.stop();\n  }, [\n    pathIndex,\n    paths.length,\n    pathIndexProgress // 引用地址不会变\n  ]);\n\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      preserveAspectRatio=\"xMidYMid meet\"\n      style={{\n        width: size ?? \"100%\",\n        height: size ?? \"100%\",\n        overflow: \"visible\"\n      }}>\n      <motion.path\n        d={path}\n        fill={fill}\n      />\n    </svg>\n  );\n}\n\n// Paths taken from https://github.com/veltman/flubber/blob/master/demos/basic-svg.html\nconst star =\n  \"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\";\nconst heart =\n  \"M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z\";\nconst hand =\n  \"M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z\";\nconst plane =\n  \"M21 16v-2l-8-5V3.5c0-.83-.67-1.5-1.5-1.5S10 2.67 10 3.5V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5z\";\nconst lightning = \"M7 2v11h3v9l7-12h-4l4-8z\";\nconst note =\n  \"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z\";\n\nconst samplePaths = [lightning, hand, plane, heart, note, star, lightning];\nconst sampleColors = [\n  \"#fff312\",\n  \"#ff0088\",\n  \"#dd00ee\",\n  \"#9911ff\",\n  \"#0d63f8\",\n  \"#0cdcf7\",\n  \"#fff312\"\n];\n","import {\n  randomString,\n  randomStringNumber,\n  getRetryDelay,\n  info,\n  mergeObjectDeep,\n  treeify,\n  warn\n} from \"@zyzgroup/core-common\";\n\ntype SocketMessage = string | Blob | ArrayBuffer;\n\ntype WebSocketClientRequest = {\n  requestid: number;\n  resolve?: (value: any) => void;\n};\n\ntype SocketCreator = (\n  url: string,\n  protocols?: string | string[],\n  options?: Record<string, any>\n) => WebSocket;\n\nexport function createWebSocket(\n  url: string,\n  protocols?: string | string[],\n  options?: Record<string, any>\n): WebSocket {\n  return new WebSocket(url);\n}\n\n// export function createSocketJS(\n//   url: string,\n//   protocols?: string | string[],\n//   options?: Record<string, any>\n// ): WebSocket {\n//   return new SockJS(url, null, options);\n// }\n\n// export function createWxWebSocket(\n//   url: string,\n//   protocols?: string | string[],\n//   options?: Record<string, any>\n// ): WebSocket {\n//   return wx.connectSocket(\n//     mergeObjectDeep(\n//       {\n//         url,\n//         ...options\n//       },\n//       {\n//         header: {\n//           // \"Cookie\": \"JSESSIONID=dummy\",\n//           // 'content-type': 'application/json'\n//         },\n//         timeout: 120000\n//         // success: console.log,\n//         // fail:console.log\n//       }\n//     )\n//   );\n// }\n\n// export function createAliWebSocket(\n//   url: string,\n//   protocols?: string | string[],\n//   options?: Record<string, any>\n// ): WebSocket {\n//   return my.connectSocket(\n//     mergeObjectDeep(\n//       {\n//         url,\n//         ...options\n//       },\n//       {\n//         header: {\n//           // \"Cookie\": \"JSESSIONID=dummy\",\n//           // 'content-type': 'application/json'\n//         },\n//         timeout: 120000,\n//         multiple: true\n//         // success: console.log,\n//         // fail:console.log\n//       }\n//     )\n//   );\n// }\n\nexport function getVertxRegisterBaseUrl(baseUrl: string) {\n  return `${baseUrl}eventbus/${randomStringNumber(3)}/${randomString(\n    8\n  )}/websocket`;\n}\n\nexport class WebSocketClient {\n  static CONNECTING = WebSocket.CONNECTING; // 0\n  static OPEN = WebSocket.OPEN; // 1\n  static CLOSING = WebSocket.CLOSING; // 2\n  static CLOSED = WebSocket.CLOSED; // 3\n\n  url: string;\n  socketCreatorProtocols?: string | string[];\n  socketCreatorOptions: Record<string, any>;\n  socketCreator: SocketCreator;\n\n  socket?: WebSocket;\n  state:\n    | typeof WebSocketClient.CONNECTING\n    | typeof WebSocketClient.OPEN\n    | typeof WebSocketClient.CLOSING\n    | typeof WebSocketClient.CLOSED = WebSocketClient.CONNECTING;\n\n  messageQueue: Record<string, any>[] = [];\n\n  pingInterval: number;\n  pingTimerID?: ReturnType<typeof setInterval>;\n\n  reconnect: boolean;\n  reconnectAttempts = 0;\n  maxReconnectAttempts: number;\n  reconnectTimerID?: ReturnType<typeof setTimeout>;\n\n  onopen?: () => void;\n  onclose?: (e: CloseEvent) => void;\n  onerror?: (e: any) => void;\n\n  requestid = 0;\n  waitings: Record<number, WebSocketClientRequest> = {};\n  listeners: Record<string, ((err: any, message?: any) => void)[]> = {};\n\n  // wss://echo.websocket.org/\n  // wss://xinge.ruolin-link.com/\n  // wss://test.xinge.me/\n  constructor(\n    url = \"\",\n    options?: {\n      socketCreatorProtocols?: string | string[];\n      socketCreatorOptions?: Record<string, any>;\n      socketCreator?: SocketCreator;\n      pingInterval?: number;\n      onopen?: () => void;\n      onclose?: (e: CloseEvent) => void;\n      onerror?: (e: Event) => void;\n      reconnect?: boolean;\n      maxReconnectAttempts?: number;\n    }\n  ) {\n    this.url = url;\n    this.socketCreatorProtocols = options?.socketCreatorProtocols;\n    this.socketCreatorOptions = options?.socketCreatorOptions || {};\n    this.socketCreator = options?.socketCreator || createWebSocket;\n    this.pingInterval = options?.pingInterval || 5000;\n    this.onopen = options?.onopen;\n    this.onclose = options?.onclose;\n    this.onerror = options?.onerror;\n    this.reconnect =\n      typeof options?.reconnect == \"boolean\" ? options.reconnect : true;\n    this.maxReconnectAttempts =\n      typeof options?.maxReconnectAttempts == \"number\"\n        ? options.maxReconnectAttempts\n        : Infinity;\n    this._connect();\n  }\n\n  public open() {\n    this.reconnectAttempts = 0;\n    this._connect();\n  }\n\n  public close() {\n    this.state = WebSocketClient.CLOSING;\n    this.socket?.close();\n  }\n\n  private _connect() {\n    if (\n      this.socket?.readyState === WebSocketClient.CONNECTING ||\n      this.socket?.readyState === WebSocketClient.OPEN\n    ) {\n      return;\n    }\n    this.state = WebSocketClient.CONNECTING;\n    this.socket = this.socketCreator(\n      this.url,\n      this.socketCreatorProtocols,\n      this.socketCreatorOptions\n    );\n\n    this.socket.onopen = () => {\n      info(`(${this.url}) onopen`);\n      this.state = WebSocketClient.OPEN;\n      // clear reconnect\n      if (this.reconnectTimerID) {\n        clearTimeout(this.reconnectTimerID);\n        this.reconnectTimerID = undefined;\n      }\n      // 继续发送未发消息\n      const copies = this.messageQueue.slice();\n      this.messageQueue = [];\n      copies.forEach(this._send.bind(this));\n      // Send the first ping then send a ping every pingInterval milliseconds\n      this.ping();\n      this.pingTimerID = setInterval(this.ping.bind(this), this.pingInterval);\n      this.onopen?.();\n    };\n\n    this.socket.onclose = (e: CloseEvent) => {\n      const { code, reason, wasClean } = e;\n      info(\n        `(${this.url}) onclose: code(${code}) reason(${reason}) wasClean(${wasClean})`\n      );\n      this.state = WebSocketClient.CLOSED;\n      this.socket = undefined;\n      // clear ping\n      if (this.pingTimerID) {\n        clearInterval(this.pingTimerID);\n        this.pingTimerID = undefined;\n      }\n      this.onclose?.(e);\n      // reconnect\n      if (\n        this.reconnect &&\n        this.reconnectAttempts < this.maxReconnectAttempts\n      ) {\n        this.reconnectTimerID = setTimeout(\n          this._connect.bind(this),\n          getRetryDelay(this.reconnectAttempts++)\n        );\n      }\n    };\n\n    this.socket.onerror = (e: Event) => {\n      info(`(${this.url}) onerror: ${e}`);\n      this.onerror?.(e);\n    };\n\n    // 指定收到数据类型\n    // this.socket.binaryType = \"blob\";\n    // this.socket.binaryType = \"arraybuffer\";\n\n    this.socket.onmessage = (e: MessageEvent) => {\n      info(`(${this.url}) onmessage: { type: ${e.type}, data: ${e.data} }`);\n      if (typeof e.data === \"string\") {\n        // 可能需要根据协议变更传输格式\n        let jsons: string[];\n        const originData = e.data.substring(1);\n        try {\n          jsons = JSON.parse(originData);\n        } catch (ex: any) {\n          jsons = [\n            JSON.stringify({\n              type: \"err\",\n              failureCode: \"fe-json-parse-error\",\n              failureType: ex.toString(),\n              message: originData\n            })\n          ];\n        }\n        jsons.forEach((j) => {\n          const json = JSON.parse(j);\n          if (\n            json.body &&\n            Object.prototype.hasOwnProperty.call(json.body, \"requestid\")\n          ) {\n            // 回应 send\n            const request = this.waitings[json.body.requestid];\n            if (request) {\n              request.resolve?.(json.body);\n            } else {\n              warn(\n                `(${this.url}) onmessage: found no associated request, already timed out`\n              );\n            }\n          } else if (this.listeners[json.address]) {\n            // 回应注册监听回调\n            const listeners = this.listeners[json.address];\n            for (let i = 0; i < listeners.length; i++) {\n              if (json.type === \"err\") {\n                listeners[i]({\n                  failureCode: json.failureCode,\n                  failureType: json.failureType,\n                  message: json.message\n                });\n              } else {\n                listeners[i](null, json.body);\n              }\n            }\n          } else {\n            // unhandle string\n            this.onunhandled(json);\n          }\n        });\n      } else if (e.data instanceof ArrayBuffer) {\n        warn(`(${this.url}) onmessage: unhandle ArrayBuffer`);\n      } else if (e.data instanceof Blob) {\n        warn(`(${this.url}) onmessage: unhandle Blob`);\n      }\n    };\n  }\n\n  private onunhandled(json: Record<string, any>) {\n    try {\n      if (json.type === \"err\") {\n        this.onerror?.(json);\n      } else if (json.event) {\n        console.warn(\n          \"No handler found for event: %o. Message: %O\",\n          json.event,\n          json\n        );\n      } else {\n        console.warn(\"No handler found for message: \", json);\n      }\n    } catch (e) {\n      // dev tools are disabled so we cannot use console on IE\n    }\n  }\n\n  // 可能需要根据协议变更传输格式\n  private _send(data: Record<string, any>) {\n    if (this.socket?.readyState === WebSocketClient.OPEN) {\n      // [\"{\\\"type\\\":\\\"ping\\\"}\"]\n      // [\"{\\\"type\\\":\\\"register\\\",\\\"address\\\":\\\"CHARGECONN_1\\\",\\\"headers\\\":{}}\"]\n      this.socket.send(JSON.stringify([JSON.stringify(data)]));\n    } else {\n      // 未发消息缓存\n      this.messageQueue.push(data);\n      this._connect();\n    }\n  }\n\n  public ping() {\n    this._send({ type: \"ping\" });\n  }\n\n  // 注册监听\n  public register(\n    address: string,\n    listener: (err: any, message?: any) => void,\n    headers: Record<string, string> = {}\n  ) {\n    if (!this.listeners[address]) {\n      this.listeners[address] = [];\n      // First handler for this address so we should register the connection\n      this._send({\n        type: \"register\",\n        address: address,\n        headers: mergeObjectDeep(\n          headers,\n          this.socketCreatorOptions.headers,\n          false\n        )\n      });\n    }\n    this.listeners[address].push(listener);\n  }\n\n  // 取消注册监听\n  public unregister(\n    address: string,\n    listener: (err: any, message?: any) => void,\n    headers: Record<string, string> = {}\n  ) {\n    const listeners = this.listeners[address];\n    if (listeners) {\n      const idx = listeners.indexOf(listener);\n      if (idx != -1) {\n        listeners.splice(idx, 1);\n        if (listeners.length === 0) {\n          // No more local listeners so we should unregister the connection\n          this._send({\n            type: \"unregister\",\n            address: address,\n            headers: mergeObjectDeep(\n              headers,\n              this.socketCreatorOptions.headers,\n              false\n            )\n          });\n          delete this.listeners[address];\n        }\n      }\n    }\n  }\n\n  // 广播\n  public publish(\n    address: string,\n    body: Record<string, any>,\n    headers: Record<string, string> = {}\n  ) {\n    this._send({\n      type: \"publish\",\n      address: address,\n      headers: mergeObjectDeep(\n        headers,\n        this.socketCreatorOptions.headers,\n        false\n      ),\n      body\n    });\n  }\n\n  // 普通发送，等待回应\n  public async send(\n    address: string,\n    body: Record<string, any>,\n    headers: Record<string, string> = {},\n    timeout = 30000\n  ): Promise<string> {\n    this.requestid++;\n    const request: WebSocketClientRequest = (this.waitings[this.requestid] = {\n      requestid: this.requestid\n    });\n    const receivedMessage = await new Promise<string>((resolve, reject) => {\n      request.resolve = resolve;\n      this._send({\n        type: \"send\",\n        address: address,\n        headers: mergeObjectDeep(\n          headers,\n          this.socketCreatorOptions.headers,\n          false\n        ),\n        body: {\n          requestid: request.requestid,\n          ...body\n        }\n      });\n      setTimeout(() => {\n        reject(\n          `(${this.url}) send(${request.requestid}: ${treeify(body)}) Timeout!`\n        );\n      }, timeout);\n    });\n    delete this.waitings[request.requestid];\n    return receivedMessage;\n  }\n}\n","export function setRem(designWidth = 750) {\n  const docEl = document.documentElement;\n\n  const dpr = window.top === window.self ? window.devicePixelRatio : 1;\n  docEl.dataset.dpr = dpr;\n\n  // 设置viewport，进行缩放，达到高清效果\n  // const metaEl = document.querySelector('meta[name=\"viewport\"]');\n  // const scale = 1 / dpr;\n  // metaEl.setAttribute(\n  //   \"content\",\n  //   \"width=device-width\" +\n  //     \",initial-scale=\" +\n  //     scale +\n  //     \",maximum-scale=\" +\n  //     scale +\n  //     \", minimum-scale=\" +\n  //     scale +\n  //     \",user-scalable=no, viewport-fit=cover, shrink-to-fit=no\"\n  // );\n\n  let rem = 100; // max: 1rem = 100px\n  const recalc = function () {\n    // 修正页面高度100%的渲染错误\n    docEl.style.height = window.innerHeight + \"px\";\n\n    // const clientWidth = Math.min(docEl.clientWidth, designWidth);\n    const clientWidth = docEl.clientWidth;\n    docEl.dataset.width = clientWidth;\n    docEl.dataset.layout = clientWidth > designWidth ? \"pc\" : \"mobile\";\n\n    docEl.dataset.rem = rem = Math.min(\n      100,\n      Math.round(100 * (clientWidth / designWidth))\n    );\n    // 配合设置viewport，进行缩放，达到高清效果\n    // docEl.dataset.rem = rem =\n    //   Math.round(100 * (clientWidth / designWidth)) * dpr;\n    docEl.style.fontSize = rem + \"px\";\n  };\n\n  recalc();\n\n  // 供js调用的，某一dpr下rem和px之间的转换函数\n  window.rem2px = function (v) {\n    return parseFloat(v) * rem;\n  };\n  window.px2rem = function (v) {\n    return parseFloat(v) / rem;\n  };\n\n  if (!window.addEventListener) {\n    return;\n  }\n  window.addEventListener(\n    \"orientationchange\" in window ? \"orientationchange\" : \"resize\",\n    recalc,\n    false\n  );\n}\n","import \"./adapter\";\nimport { DOMVideo } from \"../dom/DOMVideo\";\n\nexport class WebRTCClient {\n  localVideoUtil: DOMVideo;\n  remoteVideoUtil: DOMVideo;\n  localPeerConnection: RTCPeerConnection | null = null;\n  remotePeerConnection: RTCPeerConnection | null = null;\n\n  constructor(localVideoEl: HTMLVideoElement, remoteVideoEl: HTMLVideoElement) {\n    this.localVideoUtil = new DOMVideo(localVideoEl);\n    this.remoteVideoUtil = new DOMVideo(remoteVideoEl);\n  }\n\n  start() {\n    this.getLocalMediaStream().then((mediaStream) => {\n      this.call(mediaStream);\n    });\n  }\n\n  end() {\n    this.localPeerConnection?.close();\n    this.remotePeerConnection?.close();\n    this.localPeerConnection = null;\n    this.remotePeerConnection = null;\n    this.trace(\"Ending call.\");\n  }\n\n  getLocalMediaStream() {\n    return new Promise<MediaStream>((resolve, reject) => {\n      navigator.mediaDevices\n        .getUserMedia({\n          audio: true,\n          video: true\n        })\n        .then((mediaStream) => {\n          this.localVideoUtil.setSrcObject(mediaStream);\n          resolve(mediaStream);\n        })\n        .catch((error) => {\n          this.trace(`navigator.getUserMedia error: ${error}.`);\n          reject(error);\n        });\n    });\n  }\n\n  gotRemoteMediaStream(event: RTCTrackEvent) {\n    const mediaStream = event.streams[0];\n    this.remoteVideoUtil.setSrcObject(mediaStream);\n    this.trace(\"Remote peer connection received remote stream.\");\n  }\n\n  call(localStream: MediaStream) {\n    const videoTracks = localStream.getVideoTracks();\n    const audioTracks = localStream.getAudioTracks();\n    if (videoTracks.length > 0) {\n      this.trace(`Using video device: ${videoTracks[0].label}.`);\n    }\n    if (audioTracks.length > 0) {\n      this.trace(`Using audio device: ${audioTracks[0].label}.`);\n    }\n\n    // Allows for RTC server configuration.\n    const servers = undefined;\n\n    // Create peer connections and add behavior.\n    const localPeerConnection = new RTCPeerConnection(servers);\n    this.localPeerConnection = localPeerConnection;\n    this.trace(\"Created local peer connection object localPeerConnection.\");\n    localPeerConnection.addEventListener(\"icecandidate\", this.handleConnection);\n    localPeerConnection.addEventListener(\n      \"iceconnectionstatechange\",\n      this.handleConnectionChange\n    );\n\n    const remotePeerConnection = new RTCPeerConnection(servers);\n    this.remotePeerConnection = remotePeerConnection;\n    this.trace(\"Created remote peer connection object remotePeerConnection.\");\n    remotePeerConnection.addEventListener(\n      \"icecandidate\",\n      this.handleConnection\n    );\n    remotePeerConnection.addEventListener(\n      \"iceconnectionstatechange\",\n      this.handleConnectionChange\n    );\n    remotePeerConnection.addEventListener(\"track\", this.gotRemoteMediaStream);\n\n    this.trace(\"Add local localStream to localPeerConnection.\");\n    localPeerConnection.addTrack(videoTracks[0], localStream);\n    localPeerConnection.addTrack(audioTracks[0], localStream);\n\n    this.trace(\"localPeerConnection createOffer start.\");\n    localPeerConnection\n      .createOffer({\n        offerToReceiveVideo: true\n      })\n      .then((description) => this.createdOffer(description))\n      .catch((err) => this.setSessionDescriptionError(err));\n  }\n\n  handleConnection(event: RTCPeerConnectionIceEvent) {\n    const peerConnection = event.target as RTCPeerConnection | null;\n    const iceCandidate = event.candidate;\n\n    if (peerConnection && iceCandidate) {\n      const newIceCandidate = new RTCIceCandidate(iceCandidate);\n      const otherPeer = this.getOtherPeer(peerConnection);\n\n      if (otherPeer) {\n        otherPeer\n          .addIceCandidate(newIceCandidate)\n          .then(() => {\n            this.handleConnectionSuccess(peerConnection);\n          })\n          .catch((error: any) => {\n            this.handleConnectionFailure(peerConnection, error);\n          });\n        this.trace(\n          `${this.getPeerName(peerConnection)} ICE candidate:\\n` +\n            `${event.candidate.candidate}.`\n        );\n      }\n    }\n  }\n\n  handleConnectionSuccess(peerConnection: RTCPeerConnection) {\n    this.trace(`${this.getPeerName(peerConnection)} addIceCandidate success.`);\n  }\n\n  handleConnectionFailure(peerConnection: RTCPeerConnection, error: any) {\n    this.trace(\n      `${this.getPeerName(peerConnection)} failed to add ICE Candidate:\\n` +\n        `${error.toString()}.`\n    );\n  }\n\n  handleConnectionChange(event: Event) {\n    const peerConnection = event.target as RTCPeerConnection | null;\n    console.log(\"ICE state change event: \", event);\n    if (peerConnection) {\n      this.trace(\n        `${this.getPeerName(peerConnection)} ICE state: ` +\n          `${peerConnection.iceConnectionState}.`\n      );\n    }\n  }\n\n  createdOffer(description: RTCSessionDescriptionInit) {\n    this.trace(`Offer from localPeerConnection:\\n${description.sdp}`);\n\n    if (this.localPeerConnection) {\n      this.trace(\"localPeerConnection setLocalDescription start.\");\n      this.localPeerConnection\n        .setLocalDescription(description)\n        .then(() => {\n          this.setLocalDescriptionSuccess(this.localPeerConnection!);\n        })\n        .catch((err) => this.setSessionDescriptionError(err));\n    }\n\n    if (this.remotePeerConnection) {\n      this.trace(\"remotePeerConnection setRemoteDescription start.\");\n      this.remotePeerConnection\n        .setRemoteDescription(description)\n        .then(() => {\n          this.setRemoteDescriptionSuccess(this.remotePeerConnection!);\n        })\n        .catch((err) => this.setSessionDescriptionError(err));\n\n      this.trace(\"remotePeerConnection createAnswer start.\");\n      this.remotePeerConnection\n        .createAnswer()\n        .then((description) => this.createdAnswer(description))\n        .catch((err) => this.setSessionDescriptionError(err));\n    }\n  }\n\n  createdAnswer(description: RTCSessionDescriptionInit) {\n    this.trace(`Answer from remotePeerConnection:\\n${description.sdp}.`);\n\n    if (this.remotePeerConnection) {\n      this.trace(\"remotePeerConnection setLocalDescription start.\");\n      this.remotePeerConnection\n        .setLocalDescription(description)\n        .then(() => {\n          this.setLocalDescriptionSuccess(this.remotePeerConnection!);\n        })\n        .catch((err) => this.setSessionDescriptionError(err));\n    }\n\n    if (this.localPeerConnection) {\n      this.trace(\"localPeerConnection setRemoteDescription start.\");\n      this.localPeerConnection\n        .setRemoteDescription(description)\n        .then(() => {\n          this.setRemoteDescriptionSuccess(this.localPeerConnection!);\n        })\n        .catch((err) => this.setSessionDescriptionError(err));\n    }\n  }\n\n  setSessionDescriptionError(error: any) {\n    this.trace(`Failed to create session description: ${error.toString()}.`);\n  }\n\n  setDescriptionSuccess(\n    peerConnection: RTCPeerConnection,\n    functionName: string\n  ) {\n    const peerName = this.getPeerName(peerConnection);\n    this.trace(`${peerName} ${functionName} complete.`);\n  }\n\n  setLocalDescriptionSuccess(peerConnection: RTCPeerConnection) {\n    this.setDescriptionSuccess(peerConnection, \"setLocalDescription\");\n  }\n\n  setRemoteDescriptionSuccess(peerConnection: RTCPeerConnection) {\n    this.setDescriptionSuccess(peerConnection, \"setRemoteDescription\");\n  }\n\n  trace(text: string) {\n    text = text.trim();\n    const now = (window.performance.now() / 1000).toFixed(3);\n    console.log(now, text);\n    const div = document.createElement(\"div\");\n    div.innerHTML = `<div>${now}, ${text}</div>`;\n    document.getElementById(\"trace\")?.appendChild(div);\n  }\n\n  getOtherPeer(peerConnection: RTCPeerConnection) {\n    return peerConnection === this.localPeerConnection\n      ? this.remotePeerConnection\n      : this.localPeerConnection;\n  }\n\n  getPeerName(peerConnection: RTCPeerConnection) {\n    return peerConnection === this.localPeerConnection\n      ? \"localPeerConnection\"\n      : \"remotePeerConnection\";\n  }\n}\n\nexport default WebRTCClient;\n","export class WebGLRenderer {\n  canvas: HTMLCanvasElement;\n  gl: RenderingContext | null;\n\n  constructor(canvas: HTMLCanvasElement) {\n    this.canvas = canvas;\n    const webglConfig = { alpha: true, premultipliedAlpha: false };\n    this.gl = this.canvas.getContext(\"webgl\", webglConfig);\n    if (!this.gl) {\n      throw new Error(\"WebGL failed to initialize.\");\n    }\n  }\n}\n\nexport default WebGLRenderer;\n","// https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html\n// import \"@lib/third/jweixin-1.6.0.js\";\n\n/**\n * 信鸽停车微信服务号\n * appid      wxdb8468d8262792d3\n * appsecret  296cf699a5a7caf535c50a22a9c99a29\n *\n * 卓能微信服务号\n * appid      wxcc4645ca16ab0a43\n * appsecret  0f35ef010de126b71817e88f026c3909\n *\n * 信鸽停车微信小程序\n * appid  wx9e3fd78a7b00b202\n *\n * 卓能微信小程序\n * appid  wx8f38e0d03cf5da91\n */\n\ndeclare const document: Document & {\n  attachEvent: any;\n  createEventObject: any;\n};\n\nimport { trimHash } from \"@zyzgroup/core-common\";\n\ntype wxConfig = {\n  appId: string; // 必填，公众号的唯一标识\n  timestamp: string; // 必填，生成签名的时间戳\n  nonceStr: string; // 必填，生成签名的随机串\n  signature: string; // 必填，签名\n\n  debug: boolean; // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印\n  jsApiList: string[]; // 必填，需要使用的JS接口列表\n};\n\ntype wxConfigFromServer = Omit<wxConfig, \"debug\" | \"jsApiList\">;\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\ndeclare namespace wx {\n  function config(config: wxConfig): void;\n  function ready(cb: () => void): void;\n  function error(cb: (res: any) => void): void;\n  function checkJsApi(config: {\n    jsApiList: string[]; // 需要检测的JS接口列表，所有JS接口列表见附录2,\n    success: (res: {\n      // 以键值对的形式返回，可用的api值true，不可用为false\n      // 如：{\"checkResult\":{\"chooseImage\":true},\"errMsg\":\"checkJsApi:ok\"}\n      checkResult: Record<string, boolean>;\n      errMsg: string;\n    }) => void;\n    fail?: (res: any) => void;\n  }): void;\n  function updateAppMessageShareData(shareConfig: {\n    title: string; // 分享标题\n    desc: string; // 分享描述\n    link: string; // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致\n    imgUrl: string; // 分享图标\n    success: () => void; // 设置成功\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function updateTimelineShareData(shareConfig: {\n    title: string; // 分享标题\n    link: string; // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致\n    imgUrl: string; // 分享图标\n    success: () => void; // 设置成功\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function chooseImage(apiConfig: {\n    count: number; // 默认9\n    sizeType: [\"original\", \"compressed\"] | [\"original\"] | [\"compressed\"]; // 可以指定是原图还是压缩图，默认二者都有\n    sourceType: [\"album\", \"camera\"] | [\"album\"] | [\"camera\"]; // 可以指定来源是相册还是相机，默认二者都有\n    success: (res: {\n      localIds: string[]; // 返回选定照片的本地ID列表，localId可以作为img标签的src属性显示图片\n    }) => void;\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function previewImage(apiConfig: {\n    current: string; // 当前显示图片的http链接\n    urls: string[]; // 需要预览的图片http链接列表\n  }): void;\n  function uploadImage(apiConfig: {\n    localId: string; // 需要上传的图片的本地ID，由chooseImage接口获得\n    isShowProgressTips: 0 | 1; // 默认为1，显示进度提示\n    success: (res: {\n      serverId: string; // 返回图片的服务器端ID\n    }) => void;\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function downloadImage(apiConfig: {\n    serverId: string; // 需要下载的图片的服务器端ID，由uploadImage接口获得\n    isShowProgressTips: 0 | 1; // 默认为1，显示进度提示\n    success: (res: {\n      localId: string; // 返回图片下载后的本地ID\n    }) => void;\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function getLocalImgData(apiConfig: {\n    localId: string; // 图片的localID\n    success: (res: {\n      localData: string; // localData是图片的base64数据，可以用img标签显示\n    }) => void;\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function startRecord(): void;\n  function stopRecord(apiConfig: {\n    success: (res: { localId: string }) => void;\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function onVoiceRecordEnd(apiConfig: {\n    // 录音时间超过一分钟没有停止的时候会执行 complete 回调\n    complete: (res: { localId: string }) => void;\n  }): void;\n  function playVoice(apiConfig: {\n    localId: string; // 需要播放的音频的本地ID，由stopRecord接口获得\n  }): void;\n  function pauseVoice(apiConfig: {\n    localId: string; // 需要暂停的音频的本地ID，由stopRecord接口获得\n  }): void;\n  function stopVoice(apiConfig: {\n    localId: string; // 需要停止的音频的本地ID，由stopRecord接口获得\n  }): void;\n  function onVoicePlayEnd(apiConfig: {\n    success: (res: {\n      localId: string; // 返回音频的本地ID\n    }) => void;\n  }): void;\n  function uploadVoice(apiConfig: {\n    localId: string; // 需要上传的音频的本地ID，由stopRecord接口获得\n    isShowProgressTips: 0 | 1; // 默认为1，显示进度提示\n    success: (res: {\n      serverId: string; // 返回音频的服务器端ID\n    }) => void;\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function downloadVoice(apiConfig: {\n    serverId: string; // 需要下载的音频的服务器端ID，由uploadVoice接口获得\n    isShowProgressTips: 0 | 1; // 默认为1，显示进度提示\n    success: (res: {\n      localId: string; // 返回音频的本地ID\n    }) => void;\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function translateVoice(apiConfig: {\n    localId: string; // 需要识别的音频的本地Id，由录音相关接口获得\n    isShowProgressTips: 0 | 1; // 默认为1，显示进度提示\n    success: (res: {\n      translateResult: string; // 语音识别的结果\n    }) => void;\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function getNetworkType(apiConfig: {\n    success: (res: {\n      networkType: string; // 返回网络类型2g，3g，4g，wifi\n    }) => void;\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function openLocation(apiConfig: {\n    latitude: number; // 纬度，浮点数，范围为90 ~ -90\n    longitude: number; // 经度，浮点数，范围为180 ~ -180。\n    name: string; // 位置名\n    address: string; // 地址详情说明\n    scale: number; // 地图缩放级别,整型值,范围从1~28。默认为最大\n    infoUrl: string; // 在查看位置界面底部显示的超链接,可点击跳转\n  }): void;\n  function getLocation(apiConfig: {\n    type: \"wgs84\" | \"gcj02\"; // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'\n    success: (res: {\n      latitude: number; // 纬度，浮点数，范围为90 ~ -90\n      longitude: number; // 经度，浮点数，范围为180 ~ -180。\n      speed: number; // 速度，以米/每秒计\n      accuracy: number; // 位置精度\n    }) => void;\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n  function scanQRCode(apiConfig: {\n    needResult: 0 | 1; // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，\n    scanType: [\"qrCode\", \"barCode\"] | [\"qrCode\"] | [\"barCode\"]; // 可以指定扫二维码还是一维码，默认二者都有\n    success: (res: {\n      resultStr: string; // 当needResult 为 1 时，扫码返回的结果\n    }) => void;\n    fail?: (res: { errMsg: string }) => void;\n  }): void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\ndeclare namespace WeixinJSBridge {\n  function invoke(\n    method: \"getBrandWCPayRequest\",\n    config: {\n      appId: string; // 公众号ID\n      timeStamp: string; // 时间戳，自1970年以来的秒数\n      nonceStr: string; // 随机串\n      package: string;\n      signType: string; // 微信签名方式\n      paySign: string; // 微信签名\n    },\n    cb: (res: { err_msg: string }) => void\n  ): void;\n}\n\nconst initWxJsReadyFns: (() => void)[] = [];\nconst initWxJsConfigRecord: Record<string, boolean> = {};\n\nexport function addWxJsReadyFnBeforeConfig(fn: () => void) {\n  initWxJsReadyFns.push(fn);\n}\n\n// 所有需要使用JS-SDK的页面必须先注入配置信息，否则将无法调用\n// 同一个url仅需调用一次，对于变化url的SPA的web app可在每次url变化时进行调用\n// 目前Android微信客户端不支持pushState的H5新特性，所以使用pushState来实现web app的页面会导致签名失败，此问题会在Android6.2中修复\nexport function injectWxJsConfig(\n  configFromServer: wxConfigFromServer,\n  debug = false\n) {\n  // 不包含#hash\n  const currentURL = trimHash();\n  if (initWxJsConfigRecord[currentURL]) {\n    return;\n  }\n  // config信息验证失败会执行error函数，如签名过期导致验证失败，\n  // 具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名\n  wx.error((res) => {\n    console.log(res.errMsg || JSON.stringify(res));\n  });\n  // config信息验证后会执行ready方法\n  // 所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。\n  // 对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。\n  wx.ready(() => {\n    initWxJsReadyFns.forEach((fn) => fn());\n  });\n  const ALL_WX_JS_APIS = [\n    \"updateAppMessageShareData\",\n    \"updateTimelineShareData\",\n    \"onMenuShareWeibo\",\n    \"onMenuShareQZone\",\n    \"startRecord\",\n    \"stopRecord\",\n    \"onVoiceRecordEnd\",\n    \"playVoice\",\n    \"pauseVoice\",\n    \"stopVoice\",\n    \"onVoicePlayEnd\",\n    \"uploadVoice\",\n    \"downloadVoice\",\n    \"chooseImage\",\n    \"previewImage\",\n    \"uploadImage\",\n    \"downloadImage\",\n    \"getLocalImgData\",\n    \"translateVoice\",\n    \"getNetworkType\",\n    \"openLocation\",\n    \"getLocation\",\n    \"hideOptionMenu\",\n    \"showOptionMenu\",\n    \"hideMenuItems\",\n    \"showMenuItems\",\n    \"hideAllNonBaseMenuItem\",\n    \"showAllNonBaseMenuItem\",\n    \"closeWindow\",\n    \"scanQRCode\",\n    \"openProductSpecificView\",\n    \"addCard\",\n    \"chooseCard\",\n    \"openCard\"\n  ];\n  // 需要使用的开放标签列表\n  const ALL_WX_OPEN_TAGS = [\n    \"wx-open-launch-app\",\n    \"wx-open-launch-app\",\n    \"wx-open-subscribe\",\n    \"wx-open-audio\"\n  ];\n  // 所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作\n  wx.config(\n    Object.assign(configFromServer, {\n      debug,\n      jsApiList: ALL_WX_JS_APIS,\n      openTagList: ALL_WX_OPEN_TAGS\n    }) as wxConfig\n  );\n  initWxJsConfigRecord[currentURL] = true;\n}\n\n// checkJsApi接口是客户端6.0.2新引入的一个预留接口，第一期开放的接口均可不使用checkJsApi来检测\nexport function checkWxJsApi(apiName: string) {\n  return new Promise<boolean>((resolve, reject) => {\n    wx.checkJsApi({\n      jsApiList: [apiName],\n      success: function (res) {\n        if (res.checkResult[apiName]) {\n          resolve(true);\n        } else {\n          reject(false);\n        }\n      },\n      fail: function () {\n        reject(false);\n      }\n    });\n  });\n}\n\n// 自定义“分享给朋友”及“分享到QQ”按钮的分享内容（1.4.0）\nexport function wxJsUpdateAppMessageShareData(shareConfig: {\n  title: string; // 分享标题\n  desc: string; // 分享描述\n  link: string; // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致\n  imgUrl: string; // 分享图标\n  success: () => void; // 设置成功\n  ffail?: (res: { errMsg: string }) => void;\n}) {\n  addWxJsReadyFnBeforeConfig(function () {\n    wx.updateAppMessageShareData(shareConfig);\n  });\n}\n\n// 自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容（1.4.0）\nexport function wxJsUpdateTimelineShareData(shareConfig: {\n  title: string; // 分享标题\n  link: string; // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致\n  imgUrl: string; // 分享图标\n  success: () => void; // 设置成功\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  addWxJsReadyFnBeforeConfig(function () {\n    wx.updateTimelineShareData(shareConfig);\n  });\n}\n\n// 拍照或从手机相册中选图接口\nexport function wxJsChooseImage(apiConfig: {\n  count: number; // 默认9\n  sizeType: [\"original\", \"compressed\"] | [\"original\"] | [\"compressed\"]; // 可以指定是原图还是压缩图，默认二者都有\n  sourceType: [\"album\", \"camera\"] | [\"album\"] | [\"camera\"]; // 可以指定来源是相册还是相机，默认二者都有\n  success: (res: {\n    localIds: string[]; // 返回选定照片的本地ID列表，localId可以作为img标签的src属性显示图片\n  }) => void;\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  wx.chooseImage(apiConfig);\n}\n\n// 预览图片接口\nexport function wxJsPreviewImage(apiConfig: {\n  current: string; // 当前显示图片的http链接\n  urls: string[]; // 需要预览的图片http链接列表\n}) {\n  wx.previewImage(apiConfig);\n}\n\n// 上传图片接口\n// 备注：上传图片有效期3天，可用微信多媒体接口下载图片到自己的服务器，此处获得的 serverId 即 media_id。\nexport function wxJsUploadImage(apiConfig: {\n  localId: string; // 需要上传的图片的本地ID，由chooseImage接口获得\n  isShowProgressTips: 0 | 1; // 默认为1，显示进度提示\n  success: (res: {\n    serverId: string; // 返回图片的服务器端ID\n  }) => void;\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  wx.uploadImage(apiConfig);\n}\n\n// 下载图片接口\nexport function wxJsDownloadImage(apiConfig: {\n  serverId: string; // 需要下载的图片的服务器端ID，由uploadImage接口获得\n  isShowProgressTips: 0 | 1; // 默认为1，显示进度提示\n  success: (res: {\n    localId: string; // 返回图片下载后的本地ID\n  }) => void;\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  wx.downloadImage(apiConfig);\n}\n\n// 获取本地图片接口\n// 备注：此接口仅在 iOS WKWebview 下提供，用于兼容 iOS WKWebview 不支持 localId 直接显示图片的问题。具体可参考《iOS WKWebview网页开发适配指南》\nexport function wxJsGetLocalImgData(apiConfig: {\n  localId: string; // 图片的localID\n  success: (res: {\n    localData: string; // localData是图片的base64数据，可以用img标签显示\n  }) => void;\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  wx.getLocalImgData(apiConfig);\n}\n\n// 开始录音接口\nexport function wxJsStartRecord() {\n  wx.startRecord();\n}\n\n// 停止录音接口\nexport function wxJsStopRecord(apiConfig: {\n  success: (res: { localId: string }) => void;\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  wx.stopRecord(apiConfig);\n}\n\n// 监听录音自动停止接口\nexport function wxJsOnVoiceRecordEnd(apiConfig: {\n  // 录音时间超过一分钟没有停止的时候会执行 complete 回调\n  complete: (res: { localId: string }) => void;\n}) {\n  wx.onVoiceRecordEnd(apiConfig);\n}\n\n// 播放语音接口\nexport function wxJsPlayVoice(apiConfig: {\n  localId: string; // 需要播放的音频的本地ID，由stopRecord接口获得\n}) {\n  wx.playVoice(apiConfig);\n}\n\n// 暂停播放接口\nexport function wxJsPauseVoice(apiConfig: {\n  localId: string; // 需要暂停的音频的本地ID，由stopRecord接口获得\n}) {\n  wx.pauseVoice(apiConfig);\n}\n\n// 停止播放接口\nexport function wxJsStopVoice(apiConfig: {\n  localId: string; // 需要停止的音频的本地ID，由stopRecord接口获得\n}) {\n  wx.stopVoice(apiConfig);\n}\n\n// 监听语音播放完毕接口\nexport function wxJsOnVoicePlayEnd(apiConfig: {\n  success: (res: {\n    localId: string; // 返回音频的本地ID\n  }) => void;\n}) {\n  wx.onVoicePlayEnd(apiConfig);\n}\n\n// 上传语音接口\n// 备注：上传语音有效期3天，可用微信多媒体接口下载语音到自己的服务器，此处获得的 serverId 即 media_id，参考文档 .目前多媒体文件下载接口的频率限制为10000次/天，如需要调高频率，请登录微信公众平台，在开发 - 接口权限的列表中，申请提高临时上限。\nexport function wxJsUploadVoice(apiConfig: {\n  localId: string; // 需要上传的音频的本地ID，由stopRecord接口获得\n  isShowProgressTips: 0 | 1; // 默认为1，显示进度提示\n  success: (res: {\n    serverId: string; // 返回音频的服务器端ID\n  }) => void;\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  wx.uploadVoice(apiConfig);\n}\n\n// 下载语音接口\nexport function wxJsDownloadVoice(apiConfig: {\n  serverId: string; // 需要下载的音频的服务器端ID，由uploadVoice接口获得\n  isShowProgressTips: 0 | 1; // 默认为1，显示进度提示\n  success: (res: {\n    localId: string; // 返回音频的本地ID\n  }) => void;\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  wx.downloadVoice(apiConfig);\n}\n\n// 识别音频并返回识别结果接口\nexport function wxJsTranslateVoice(apiConfig: {\n  localId: string; // 需要识别的音频的本地Id，由录音相关接口获得\n  isShowProgressTips: 0 | 1; // 默认为1，显示进度提示\n  success: (res: {\n    translateResult: string; // 语音识别的结果\n  }) => void;\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  wx.translateVoice(apiConfig);\n}\n\n// 获取网络状态接口\nexport function wxJsGetNetworkType(apiConfig: {\n  success: (res: {\n    networkType: string; // 返回网络类型2g，3g，4g，wifi\n  }) => void;\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  wx.getNetworkType(apiConfig);\n}\n\n// 使用微信内置地图查看位置接口\nexport function wxJsOpenLocation(apiConfig: {\n  latitude: number; // 纬度，浮点数，范围为90 ~ -90\n  longitude: number; // 经度，浮点数，范围为180 ~ -180。\n  name: string; // 位置名\n  address: string; // 地址详情说明\n  scale: number; // 地图缩放级别,整型值,范围从1~28。默认为最大\n  infoUrl: string; // 在查看位置界面底部显示的超链接,可点击跳转\n}) {\n  wx.openLocation(apiConfig);\n}\n\n// 获取地理位置接口\nexport function wxJsGetLocation(apiConfig: {\n  type: \"wgs84\" | \"gcj02\"; // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'\n  success: (res: {\n    latitude: number; // 纬度，浮点数，范围为90 ~ -90\n    longitude: number; // 经度，浮点数，范围为180 ~ -180。\n    speed: number; // 速度，以米/每秒计\n    accuracy: number; // 位置精度\n  }) => void;\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  wx.getLocation(apiConfig);\n}\n\n// 调起微信扫一扫接口\nexport function wxJsScanQRCode(apiConfig: {\n  needResult: 0 | 1; // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，\n  scanType: [\"qrCode\", \"barCode\"] | [\"qrCode\"] | [\"barCode\"]; // 可以指定扫二维码还是一维码，默认二者都有\n  success: (res: {\n    resultStr: string; // 当needResult 为 1 时，扫码返回的结果\n  }) => void;\n  fail?: (res: { errMsg: string }) => void;\n}) {\n  wx.scanQRCode(apiConfig);\n}\n\n// 微信支付\n// 请参考微信支付文档，JSAPI调起支付API：https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_4.shtml\n// 备注：\n// 微信支付V2的开发文档：https://pay.weixin.qq.com/wiki/doc/api/index.html\n// 微信支付V3的开发文档：https://pay.weixin.qq.com/wiki/doc/apiv3/index.shtml\nexport function wxJsPay(\n  config: {\n    appId: string; // 公众号ID\n    timeStamp: string; // 时间戳，自1970年以来的秒数\n    nonceStr: string; // 随机串\n    package: string;\n    signType: string; // 微信签名方式\n    paySign: string; // 微信签名\n  },\n  successCb: () => void,\n  errorCb: (err_msg: string) => void\n) {\n  function onBridgeReady() {\n    WeixinJSBridge.invoke(\"getBrandWCPayRequest\", config, function (res) {\n      if (res.err_msg == \"get_brand_wcpay_request:ok\") {\n        // 微信团队郑重提示：\n        // res.err_msg 将在用户支付成功后返回 ok，但并不保证它绝对可靠\n        successCb();\n      } else {\n        errorCb(res.err_msg);\n      }\n    });\n  }\n  if (typeof WeixinJSBridge == \"undefined\") {\n    if (document.addEventListener) {\n      document.addEventListener(\"WeixinJSBridgeReady\", onBridgeReady, false);\n    } else if (document.attachEvent) {\n      document.attachEvent(\"WeixinJSBridgeReady\", onBridgeReady);\n      document.attachEvent(\"onWeixinJSBridgeReady\", onBridgeReady);\n    }\n  } else {\n    onBridgeReady();\n  }\n}\n\n// 关闭当前网页窗口接口\n// wx.closeWindow();\n\n// 批量隐藏功能按钮接口\n// wx.hideMenuItems({\n//   menuList: [] // 要隐藏的菜单项，只能隐藏“传播类”和“保护类”按钮\n// });\n\n// 批量显示功能按钮接口\n// wx.showMenuItems({\n//   menuList: [] // 要显示的菜单项，所有menu项见附录3\n// });\n\n// 隐藏所有非基础按钮接口\n// wx.hideAllNonBaseMenuItem();\n\n// 显示所有功能按钮接口\n// wx.showAllNonBaseMenuItem();\n\n// 基本类\n// 举报: \"menuItem:exposeArticle\"\n// 调整字体: \"menuItem:setFont\"\n// 日间模式: \"menuItem:dayMode\"\n// 夜间模式: \"menuItem:nightMode\"\n// 刷新: \"menuItem:refresh\"\n// 查看公众号（已添加）: \"menuItem:profile\"\n// 查看公众号（未添加）: \"menuItem:addContact\"\n\n// 传播类\n// 发送给朋友: \"menuItem:share:appMessage\"\n// 分享到朋友圈: \"menuItem:share:timeline\"\n// 分享到QQ: \"menuItem:share:qq\"\n// 分享到Weibo: \"menuItem:share:weiboApp\"\n// 收藏: \"menuItem:favorite\"\n// 分享到FB: \"menuItem:share:facebook\"\n// 分享到 QQ 空间 \"menuItem:share:QZone\"\n\n// 保护类\n// 编辑标签: \"menuItem:editTag\"\n// 删除: \"menuItem:delete\"\n// 复制链接: \"menuItem:copyUrl\"\n// 原网页: \"menuItem:originPage\"\n// 阅读模式: \"menuItem:readMode\"\n// 在QQ浏览器中打开: \"menuItem:openWithQQBrowser\"\n// 在Safari中打开: \"menuItem:openWithSafari\"\n// 邮件: \"menuItem:share:email\"\n// 一些特殊公众号: \"menuItem:share:brand\"\n\n// UnionID\n// https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html\n// 需要前往微信开放平台（open.weixin.qq.com）绑定公众号后，才可利用UnionID\n// 卓能：xl@ruolin-link.com\n// 若临：third@ruolin-link.com\n\n// 微信网页授权规范\n// 授权流程需引导清晰、准确：在申请获取用户信息的弹窗出现前，应该清晰、准确地告知用户获取信息的范围及获取信息的目的；\n// 必要场景申请：在必须获取用户信息时才申请，而不是用户尚未了解服务前就强制弹窗。如使用医院挂号时才需要获取用户信息；\n// 不强制登录：提供游客模式，供用户了解网页提供的基础服务，不强制用户允许网页获取用户信息后才能使用网页服务。\n\n// 常见的微信网页授权不规范使用案例\n// 强制登录：在用户打开网页时立即要求用户授权，用户拒绝后无法使用网页提供的服务；\n// 违规收集个人信息：未在网页提前告知使用个人信息的目的、方式和范围；\n// 非必要收集：非必要获取用户信息的网页，如文章、视频等，要求用户在浏览内容前登录；\n// 差别对待微信用户：同样的网页在浏览器内可以无需登录直接访问，在微信内却要求用户先登录才可访问。\n\n// 如果用户同意授权，页面将跳转至 redirect_uri/?code=CODE&state=STATE\nexport function wxJsLogin(\n  appid: string,\n  redirect_uri: string,\n  scope: \"snsapi_base\" | \"snsapi_userinfo\" = \"snsapi_userinfo\",\n  state = \"\"\n) {\n  return `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${encodeURIComponent(\n    redirect_uri\n  )}&response_type=code&scope=${scope}&state=${state}#wechat_redirect`;\n}\n","// https://opendocs.alipay.com/open/025a4p\n// https://myjsapi.alipay.com/alipayjsapi/index.html\n\n// import \"@lib/third/alipayjsapi.min.js\";\n// import \"@lib/third/alipayjsapi-3.1.1.inc.min.js\";\n\n/**\n * 信鸽停车支付宝生活号\n * appid\n *\n * 卓能支付宝生活号\n * appid\n *\n * 信鸽停车支付宝小程序\n * appid  2019021863245748\n *\n * 卓能支付宝小程序\n * appid  2021001108622239\n */\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\ndeclare namespace AlipayJSBridge {\n  function call(method: string, ...args: any[]): void;\n}\n\ntype commonFailOption = { error: number; errorMessage: string };\n\ntype commonOption = {\n  success?: () => void;\n  fail?: (res: commonFailOption) => void;\n  complete?: () => void;\n};\n\ntype tradePayOption = {\n  tradeNO?: string; // 交易号，多个交易号请用英文分号;分隔\n  partnerID?: string; // 商户id\n  bizType?: string; // 交易类型，默认为 ‘trade’\n  bizSubType?: string; // 交易子类型\n  bizContext?: string; //\t支付额外的参数，格式为JSON字符串\n  orderStr?: string; //\t完整的支付参数拼接成的字符串，从服务端获取。需要入驻蚂蚁金服开放平台\n};\n\ntype scanOption = {\n  type?: \"qr\" | \"bar\"; // 扫描目标类型，支持 qr / bar，相应扫码选框会不同，默认 qr\n};\n\ntype getLocationOption = {\n  cacheTimeout?: number; // 钱包经纬度定位缓存过期时间，单位秒。默认 30s。使用缓存会加快定位速度，缓存过期会重新定位\n  type?: 0 | 1 | 2; // 支持 0：详细逆地理编码，带周边信息；1：逆地理编码到城市；2：仅获取经纬度、速度和精度。默认为 2\n  timeout?: number; // 定位超时失败回调时间，单位秒。默认10s\n  bizType?: number; // 自定义业务类型\n};\n\ntype getLocationResult = {\n  longitude: string; // 经度\n  latitude: string; // 纬度\n  accuracy: string; // 精度，单位米\n  speed: string; // 速度，单位毫秒\n  country?: string; // 国家名\n  countryCode?: string; // 国家编号\n  province?: string; // 省份名\n  city?: string; // 城市名\n  cityCode?: string; // 城市编码\n  adCode?: string; // 区域编码\n  streetNumber?: { street: string; number: number }; // 街道门牌信息\n  pois?: { name: string; address: string }[]; // 定位点附近的 POI 信息\n};\n\ntype openLocationOption = {\n  longitude: string; // 经度\n  latitude: string; // 纬度\n  name?: string; // 位置名称\n  address?: string; // 地址的详细说明\n  scale?: number; // 缩放比例，范围3~19，默认为15\n};\n\ntype chooseImageOption = {\n  count?: number; //\t最大可选照片数，默认1张，上限9张\n  sourceType?: [\"camera\", \"album\"] | [\"camera\"] | [\"album\"]; //\t相册选取或者拍照，默认 ['camera','album']\n};\n\ntype chooseImageResult = {\n  apFilePaths: string[]; // 图片文件路径\n};\n\ntype previewImageOption = {\n  urls: string[]; // 要预览的图片链接列表\n  current?: number; // 当前显示图片索引，默认 0\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\ndeclare namespace ap {\n  function tradePay(\n    option: tradePayOption & commonOption,\n    complete: (res: {\n      resultCode: number; // 支付结果状态码\n    }) => void\n  ): void;\n  function scan(\n    option: scanOption & commonOption,\n    complete: (res: {\n      code: string; // 扫码所得数据\n    }) => void\n  ): void;\n  function getLocation(\n    option: getLocationOption & commonOption,\n    complete: (res: getLocationResult) => void\n  ): void;\n  function openLocation(\n    option: openLocationOption & commonOption,\n    complete?: () => void\n  ): void;\n  function chooseImage(\n    option: chooseImageOption & commonOption,\n    complete: (res: chooseImageResult) => void\n  ): void;\n  function previewImage(\n    option: previewImageOption & commonOption,\n    complete?: () => void\n  ): void;\n}\n\n// 由于机制问题，JSAPI注入是异步过程，时序无法保证。\n// 如果使用原生AlipayJSBridge接口，需要先监听AlipayJSBridgeReady事件后再调用原生JSAPI接口。\nexport function aliJsReady(callback: () => void) {\n  // 如果jsbridge已经注入则直接调用\n  if ((<any>window).AlipayJSBridge) {\n    callback && callback();\n  } else {\n    // 如果没有注入则监听注入的事件\n    document.addEventListener(\"AlipayJSBridgeReady\", callback, false);\n  }\n}\n// aliJsReady(function () {\n//   AlipayJSBridge.call(\"toast\", {\n//     content: \"hello\"\n//   });\n// });\n\n// 通过 Scheme 启动 支付宝生活号H5App\n// 支付宝客户端的标准 Scheme 为：alipays://platformapi/startapp?appId=xxx\n// 但如果是某些运营页之类的单独页面，没有自己的 APPID，可以使用Nebula容器的通用浏览器模式 appId=20000067 来启动，同时将需要打开的 H5 页面 URL 经过 encode 编码后设置到 URL 参数内，例如：alipays://platformapi/startapp?appId=20000067&url=http%3A%2F%2Fm.taobao.com\n\n// 通过 JSAPI: startApp 接口启动 支付宝生活号H5App\n// 可通过 closeCurrentApp 入参来同时关闭自身\n\n// 退出 H5App 也存在两种情况：\n// 第一种为当前 H5App 的窗口栈中的最后一个窗口也被销毁时，Nebula 容器会同时自动销毁掉这个 H5App实例。\n// 第二种即为调用 JSAPI: exitApp 接口，可以在当前 H5App 下的任意一个 Window 窗口中调用，关闭一整个当前 H5App。\n\n// H5 在 Nebula 容器中有多种页面跳转的方式，除了原生的 location.href / location.replace 之类的页面跳转方法以外，还有一个 JSAPI：pushWindow 接口。\n\nfunction aliJsFormatCommonFailMessage(\n  res: commonFailOption,\n  methodName?: string\n) {\n  let errorCodeMessage = \"未知错误\";\n  switch (res.error) {\n    case 1:\n      errorCodeMessage = \"接口不存在\";\n      break;\n    case 2:\n      errorCodeMessage = \"参数无效\";\n      break;\n    case 3:\n      errorCodeMessage = \"发生未知错误\";\n      break;\n    case 4:\n      errorCodeMessage = \"接口无权限\";\n      break;\n    case 10:\n      errorCodeMessage = \"用户取消\";\n      break;\n    case 11:\n      errorCodeMessage = \"操作失败\";\n      if (methodName === \"chooseImage\") {\n        errorCodeMessage = \"操作失败（权限不够）\";\n      }\n      break;\n    case 12:\n      errorCodeMessage = \"GPS打开，但定位失败\";\n      break;\n    case 13:\n      errorCodeMessage = \"获取地理位置信息失败\";\n      break;\n    case 14:\n      errorCodeMessage = \"定位超时\";\n      break;\n    case 15:\n      errorCodeMessage = \"网络错误\";\n      break;\n    case 16:\n      errorCodeMessage = \"GPS未打开或用户未授权\";\n      break;\n  }\n  return `${res.error}(${errorCodeMessage}): ${res.errorMessage}`;\n}\n\n// 发起支付\nexport function aliJsTradePay(\n  option: tradePayOption,\n  successCb?: (message: string) => void,\n  errorCb?: (message: string) => void\n) {\n  ap.tradePay(\n    Object.assign(option, {\n      // fail: (res: commonFailOption) => {\n      //   errorCb?.(aliJsFormatCommonFailMessage(res));\n      // }\n    }),\n    function (res) {\n      let resultMessage = \"未知错误\";\n      switch (res.resultCode) {\n        case 9000:\n          resultMessage = \"订单支付成功\";\n          return successCb?.(resultMessage);\n        case 8000:\n          resultMessage = \"正在处理中\";\n          break;\n        case 4000:\n          resultMessage = \"订单支付失败\";\n          break;\n        case 6001:\n          resultMessage = \"用户中途取消\";\n          break;\n        case 6002:\n          resultMessage = \"网络连接出错\";\n          break;\n        case 99:\n          resultMessage = \"用户点击忘记密码导致快捷界面退出(only iOS)\";\n          break;\n      }\n      errorCb?.(resultMessage);\n    }\n  );\n}\n\n// 调用扫一扫功能\nexport function aliJsScan(\n  option: scanOption,\n  successCb?: (code: string) => void,\n  errorCb?: (message: string) => void\n) {\n  ap.scan(\n    Object.assign(option, {\n      fail: (res: commonFailOption) => {\n        errorCb?.(aliJsFormatCommonFailMessage(res));\n      }\n    }),\n    function (res) {\n      successCb?.(res.code);\n    }\n  );\n}\n\n// 获取当前的地理位置信息\nexport function aliJsGetLocation(\n  option: getLocationOption,\n  successCb?: (res: getLocationResult) => void,\n  errorCb?: (message: string) => void\n) {\n  ap.getLocation(\n    Object.assign(option, {\n      fail: (res: commonFailOption) => {\n        errorCb?.(aliJsFormatCommonFailMessage(res));\n      }\n    }),\n    function (res) {\n      successCb?.(res);\n    }\n  );\n}\n\n// 使用支付宝内置地图查看位置\nexport function aliJsOpenLocation(\n  option: openLocationOption,\n  successCb?: () => void,\n  errorCb?: (message: string) => void\n) {\n  ap.openLocation(\n    Object.assign(option, {\n      fail: (res: commonFailOption) => {\n        errorCb?.(aliJsFormatCommonFailMessage(res));\n      }\n    }),\n    function () {\n      successCb?.();\n    }\n  );\n}\n\n// 拍照或从手机相册中选择图片\nexport function aliJsChooseImage(\n  option: chooseImageOption,\n  successCb?: (res: chooseImageResult) => void,\n  errorCb?: (message: string) => void\n) {\n  ap.chooseImage(\n    Object.assign(option, {\n      fail: (res: commonFailOption) => {\n        errorCb?.(aliJsFormatCommonFailMessage(res, \"chooseImage\"));\n      }\n    }),\n    function (res) {\n      successCb?.(res);\n    }\n  );\n}\n\n// 预览图片\nexport function aliJsPreviewImage(\n  option: previewImageOption,\n  successCb?: () => void,\n  errorCb?: (message: string) => void\n) {\n  ap.previewImage(\n    Object.assign(option, {\n      fail: (res: commonFailOption) => {\n        errorCb?.(aliJsFormatCommonFailMessage(res));\n      }\n    }),\n    function () {\n      successCb?.();\n    }\n  );\n}\n","// http://lbs.tianditu.gov.cn/\n\n// http://api.tianditu.gov.cn/api?v=4.0&tk=您的密钥\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\ndeclare namespace T {\n  class Map {\n    constructor(name: string | HTMLElement);\n    centerAndZoom(lngLat: LngLat, zoom: number): Map;\n    setStyle(style: \"indigo\" | \"black\"): Map;\n    removeStyle(): Map;\n  }\n  class LngLat {\n    constructor(lng: number, lat: number);\n  }\n}\n\nexport class mapTDTJSSDK {\n  map: T.Map;\n\n  constructor(\n    container: string | HTMLElement,\n    mapCenterLng = 120.619585,\n    mapCenterLat = 31.299379,\n    mapZoom = 18\n  ) {\n    this.map = new T.Map(container);\n    this.map.centerAndZoom(new T.LngLat(mapCenterLng, mapCenterLat), mapZoom);\n  }\n}\nexport default mapTDTJSSDK;\n","import { error, readableTimestamp } from \"@zyzgroup/core-common\";\nimport { documentVisible$, onDocumentReady } from \"./dom\";\n\n// 缓存策略要正确，否则问题会被放大\n// 最佳缓存策略：入口文件要尽快更新，静态资源要放心缓存，版本文件要实时可读\n\n// index.html 不要强缓存\n// index.html是整个 SPA 的入口\n// 如果它被长时间缓存，用户就可能始终拿不到新的资源入口映射\n// 推荐策略：no-cache 或 更严格的 no-store\n// 例如 Nginx：\n// location =/index.html {\n//   add_header Cache-Control \"no-cache, no-store, must-revalidate\";\n// }\n\n// 带 hash 的 js/css 可以强缓存\n// 这类资源天然适合长期缓存，因为文件名已经包含内容签名\n// 只要内容变化，hash 就会变，浏览器就会自动拉新文件, 这样可以显著提升加载性能\n// 例如：\n// location /assets/ {\n//   add_header Cache-Control\"public, max-age=31536000, immutable\";\n// }\n\nexport class WebMonitor {\n  appId: string;\n  reportUrl?: string;\n\n  constructor(options: {\n    appId: string;\n    reportUrl?: string;\n    checkWhiteScreen?: boolean;\n  }) {\n    this.appId = options.appId;\n    this.reportUrl = options.reportUrl;\n    this.listenJSRuntimeError();\n    this.listenAssetsLoadError();\n    this.listenPromiseError();\n    if (options.checkWhiteScreen) {\n      this.listenWhiteScreenError();\n    }\n  }\n\n  // 捕获绝大多数运行时错误\n  public listenJSRuntimeError() {\n    window.onerror = (message, source, lineno, colno, error) => {\n      const log = {\n        type: \"js_runtime_error\",\n        msg: message,\n        file: source,\n        row: lineno,\n        col: colno,\n        stack: error?.stack\n      };\n      this.report(log);\n    };\n  }\n\n  // 资源加载错误\n  public listenAssetsLoadError() {\n    window.addEventListener(\n      \"error\",\n      (event) => {\n        const target = event.target;\n        // 排除 JS 报错\n        if (\n          target instanceof HTMLScriptElement ||\n          target instanceof HTMLStyleElement ||\n          target instanceof HTMLImageElement\n        ) {\n          const log = {\n            type: \"resource_load_error\",\n            filename: (target as any).src || (target as any).href,\n            tagName: target.tagName\n          };\n          this.report(log);\n        }\n      },\n      true // 资源错误不会冒泡\n    );\n  }\n\n  // Promise 报错\n  public listenPromiseError() {\n    window.addEventListener(\n      \"unhandledrejection\",\n      (event: PromiseRejectionEvent) => {\n        const log = {\n          type: \"promise_error\",\n          reason: event.reason\n        };\n        this.report(log);\n      }\n    );\n  }\n\n  // 白屏检测\n  public listenWhiteScreenError() {\n    // 页面加载 3 秒后检测\n    onDocumentReady(() => {\n      setTimeout(() => {\n        const points = [\n          [window.innerWidth / 2, window.innerHeight / 2], // 中心点\n          [window.innerWidth / 2, window.innerHeight * 0.2], // 上\n          [window.innerWidth / 2, window.innerHeight * 0.8], // 下\n          [window.innerWidth * 0.2, window.innerHeight / 2], // 左\n          [window.innerWidth * 0.8, window.innerHeight / 2] // 右\n          // ... 可以多取几个点\n        ];\n\n        let wrapperElements = 0;\n\n        points.forEach((point) => {\n          const [x, y] = point;\n          // 获取坐标处的元素列表\n          const elements = document.elementsFromPoint(x, y);\n          const topElement = elements[0]; // 最上层元素\n\n          // 如果最上层是 body 或 html 或 骨架屏的那个div，说明没内容覆盖\n          // UNDO : 骨架屏检查\n          if (\n            topElement?.tagName === \"BODY\" ||\n            topElement?.tagName === \"HTML\"\n          ) {\n            wrapperElements++;\n          }\n        });\n\n        // 如果 80% 的采样点都是空壳，判定白屏\n        if (wrapperElements >= points.length * 0.8) {\n          const log = {\n            type: \"whitescreen_error\",\n            reason: \"检测到白屏！\"\n          };\n          this.report(log);\n        }\n      }, 3000);\n    });\n  }\n\n  // 数据上报：别用 AJAX\n  // 如果页面正在关闭或卸载（用户看到白屏气得关网页），AJAX 请求很可能会被浏览器切断（Canceled），导致上报失败\n  // 标准方案：navigator.sendBeacon\n  // 不占用主线程：它把数据放入浏览器的传输队列，浏览器会在空闲时发送\n  // 页面关闭也能发：即使用户强制关闭 Tab，浏览器也会保证把这条请求发出去\n  public report(data: Record<string, any>) {\n    const payload = JSON.stringify({\n      ...data,\n      appId: this.appId,\n      time: readableTimestamp()\n    });\n    // error(payload);\n    console.error(payload);\n    if (this.reportUrl) {\n      navigator.sendBeacon(this.reportUrl, payload);\n    }\n  }\n\n  // 计算一些关键的性能指标\n  // public performance() {\n  //   window.addEventListener(\"load\", (event) => {\n  //     // Time to Interactive 可交互时间\n  //     let timing: PerformanceEntry =\n  //       performance.getEntriesByType(\"navigation\")[0];\n  //     let tti = timing.domInteractive - timing.fetchStart;\n  //   });\n  // }\n\n  // 网络连接状态\n  // public networkStatus() {\n  //   const connection =\n  //     navigator.connection ||\n  //     navigator.mozConnection ||\n  //     navigator.webkitConnection;\n  //   const type = connection.effectiveType;\n  //   function updateConnectionStatus() {\n  //     console.log(\n  //       \"Connection type changed from \" +\n  //         type +\n  //         \" to \" +\n  //         connection.effectiveType\n  //     );\n  //     type = connection.effectiveType;\n  //   }\n  //   connection.addEventListener(\"change\", updateConnectionStatus);\n  // }\n}\n\n// 获取当前版本\nfunction getCurrentVersion() {\n  return document\n    .querySelector('meta[name=\"app-version\"]')\n    ?.getAttribute(\"content\");\n}\n\n// 获取最新版本\nasync function fetchLatestVersionFromHtml() {\n  const res = await fetch(`/index.html?t=${Date.now()}`, {\n    cache: \"no-store\"\n  });\n  const html = await res.text();\n  const match = html.match(\n    /<meta\\s+name=[\"']app-version[\"']\\s+content=[\"']([^\"']+)[\"']/\n  );\n  return match ? match[1] : null;\n}\n\n// 版本检测 + 刷新提示\nexport async function checkVersion() {\n  try {\n    const currentVersion = getCurrentVersion();\n    const latestVersion = await fetchLatestVersionFromHtml();\n    if (currentVersion && latestVersion && currentVersion !== latestVersion) {\n      // 发现新版本后，提示用户刷新\n      const ok = window.confirm(\"系统已更新，是否立即刷新页面？\");\n      if (ok) {\n        window.location.reload();\n      }\n    }\n  } catch (err) {\n    console.error(\"版本检测失败:\", err);\n  }\n}\n\n// checkVersion();\n// setInterval(checkVersion, 5 * 60 * 1000);\n// documentVisible$().subscribe((visible) => {\n//   if (visible) {\n//     checkVersion();\n//   }\n// });\n\n// 场景：\n// - 版本检测还没来得及执行\n// - 用户刚好在检测间隔内点击了菜单\n// - 服务端刚完成发布\n// - 某个懒加载 chunk 已经失效\n// 这时候: 问题已经发生了, 如果没有兜底机制，用户就会直接看到报错或白屏\nfunction isChunkLoadError(error: any) {\n  const message =\n    error?.message ?? error?.reason?.message ?? typeof error == \"string\"\n      ? error\n      : \"\";\n  return (\n    message.includes(\"Loading chunk\") ||\n    message.includes(\"ChunkLoadError\") ||\n    message.includes(\"Failed to fetch dynamically imported module\")\n  );\n}\n\n// 为什么只自动刷新一次?\n// 因为如果失败原因不是“版本切换”，而是：\n// - 网络异常\n// - CDN 故障\n// - 资源服务器不可用\n// - 权限拦截\n// 那么无限刷新只会让问题更严重，甚至让用户完全无法操作\n// 所以最佳实践是：\n// - 自动刷新一次尝试恢复\n// - 如果仍失败，再提示用户手动处理或联系支持人员\nfunction handleChunkLoadError() {\n  const key = \"app_chunk_reload_once\";\n  if (!sessionStorage.getItem(key)) {\n    sessionStorage.setItem(key, \"1\");\n    alert(\"系统资源已更新，正在为您刷新页面\");\n    window.location.reload();\n  } else {\n    console.error(\"刷新后仍然失败，请提示用户手动刷新或联系管理员\");\n  }\n}\n// 页面正常加载成功后清理标记：\n// window.addEventListener(\"load\", () => {\n//   sessionStorage.removeItem(\"app_chunk_reload_once\");\n// });\n\n// 监听 vite 预加载错误，如果发生错误，则重新加载页面\n// window.addEventListener(\"vite:preloadError\", () => {\n//   window.location.reload();\n// });\n// window.addEventListener(\"error\", (event) => {\n//   if (isChunkLoadError(event.error || event)) {\n//     handleChunkLoadError();\n//   }\n// });\n// window.addEventListener(\"unhandledrejection\", (event) => {\n//   if (isChunkLoadError(event.reason || event)) {\n//     handleChunkLoadError();\n//   }\n// });\n","import {\n  createTimestampValue,\n  TimestampValue,\n  type TimestampValueOptions\n} from \"@zyzgroup/core-common\";\n\n// localStorage 存储的数据可以跨浏览器会话访问\n// localStorage 的范围： 同源（Same Origin） + 浏览器实例，只要域名一样，所有 Tab 共享数据\n\n// 存储量 5MB\n\n// 不会带到 HTTP 请求中，仅位于浏览器端，不与服务端发生通信\n\nexport function createLocalStorage(\n  key: string | symbol,\n  options?: TimestampValueOptions\n) {\n  const k = typeof key == \"string\" ? key : key.toString();\n\n  // read\n  const getInDom = () => {\n    try {\n      const fromLocal = window.localStorage.getItem(k);\n      if (fromLocal) {\n        return JSON.parse(fromLocal);\n      }\n    } catch (e) {\n      // do nothing\n    }\n    return undefined;\n  };\n\n  // write or remove\n  const setInDom = (timestampValue: TimestampValue) => {\n    try {\n      if (typeof timestampValue.value != \"undefined\") {\n        window.localStorage.setItem(k, JSON.stringify(timestampValue));\n      } else {\n        window.localStorage.removeItem(k);\n      }\n    } catch (e) {\n      // do nothing\n    }\n  };\n\n  return {\n    get: () => createTimestampValue(getInDom(), options).get().value,\n    set: (v: any) => setInDom(createTimestampValue(getInDom(), options).set(v))\n  };\n}\n\nexport function clearLocalStorage() {\n  window.localStorage.clear();\n}\n","// https://www.w3.org/TR/webdriver1/#cookies\n\n// Cookie 就是一个存储在浏览器里的一个文本文件\n// 通常由服务端生成，发送到客户端\n// 不占用服务器资源\n// HTTP Header : Set-Cookie: name=xxx; domain=xxx.com\n\n// 同一个域名下的所有请求，都会携带 Cookie\n// 过量的 Cookie 会带来巨大的性能浪费\n\n// cookie 大小限制在 4KB\n// 复杂场景不够用\n\nexport function createCookie(\n  name: string,\n  options?: {\n    value?: any;\n    days?: number;\n    path?: string;\n    domain?: string;\n    secure?: boolean;\n  }\n) {\n  let value = options?.value || \"\";\n\n  if (!value) {\n    const c = `; ${document.cookie}`\n      .split(`; ${name}=`)\n      .pop()\n      ?.split(\";\")\n      .shift();\n    if (c) {\n      value = decodeURIComponent(c);\n    }\n  }\n\n  const get = () => value;\n\n  const set = (v: any) => {\n    value = v;\n    if (value) {\n      const domain = options?.domain ? \"; domain=\" + options.domain : \"\";\n      const path = options?.path ? \"; path=\" + options.path : \"\";\n      const secureString = options?.secure == true ? \"; secure\" : \"\";\n      let cookie =\n        name + \"=\" + encodeURIComponent(value) + domain + path + secureString;\n      if (options?.days) {\n        const expires =\n          \"; expires=\" +\n          new Date(Date.now() + options.days * 864e5).toUTCString();\n        cookie += expires;\n      }\n      document.cookie = cookie;\n    }\n  };\n\n  set(value);\n\n  return {\n    get,\n    set\n  };\n}\n\nexport function clearCookies() {\n  // document.cookie\n  //   .split(\";\")\n  //   .forEach(\n  //     (cookie) =>\n  //       (document.cookie = cookie\n  //         .replace(/^ +/, \"\")\n  //         .replace(/=.\\*/, `=;expires=${new Date(0).toUTCString()};path=/`))\n  //   );\n  const cookies = document.cookie.split(\"; \");\n  for (let c = 0; c < cookies.length; c++) {\n    const d = window.location.hostname.split(\".\");\n    while (d.length > 0) {\n      const cookieBase =\n        encodeURIComponent(cookies[c].split(\";\")[0].split(\"=\")[0]) +\n        \"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=\" +\n        d.join(\".\") +\n        \" ;path=\";\n      const p = location.pathname.split(\"/\");\n      document.cookie = cookieBase + \"/\";\n      while (p.length > 0) {\n        document.cookie = cookieBase + p.join(\"/\");\n        p.pop();\n      }\n      d.shift();\n    }\n  }\n}\n","// IndexDB 是一个运行在浏览器上的非关系型数据库\n\n// 使用索引实现对数据的高性能搜索，使用上接近于数据库\n// 能够解决 Web Storage 在存储 大量的结构化数据时存储容量小，搜索速度慢等问题\n\n// 理论上来说，IndexDB 是没有存储上限的（一般来说不会小于 250M）\n\n// 遵守同源策略\n\n// 支持二进制存储：不仅可以存储字符串，也可以存储 File 或 Blob 对象\n\n// IndexedDB 操作默认为异步操作\n\n// 创建表\nfunction ensureTable(db: IDBDatabase, tableName: string) {\n  let objectStore;\n  if (!db.objectStoreNames.contains(tableName)) {\n    objectStore = db.createObjectStore(tableName, { keyPath: \"id\" });\n  }\n  return objectStore;\n}\n\nexport function createIndexDB(\n  dbName: string,\n  dbVersion = 1,\n  tableName: string\n) {\n  return new Promise((resolve, reject) => {\n    let db: IDBDatabase;\n    const request: IDBOpenDBRequest = window.indexedDB.open(dbName, dbVersion);\n    request.onerror = () => {\n      reject(\"无法使用IndexDB!\");\n    };\n    request.onsuccess = (e) => {\n      db = (e.target as IDBRequest).result;\n      ensureTable(db, tableName);\n      resolve(db);\n    };\n    // 在 初始化数据库 / 版本发生更新时被调用\n    // request.onupgradeneeded = request.onsuccess;\n  });\n}\n\nexport function writeToIndexDB(\n  db: IDBDatabase,\n  tableName: string,\n  json: Record<string, string | number> = { id: 1, name: \"xxx\" }\n) {\n  return new Promise((resolve, reject) => {\n    const transaction: IDBTransaction = db.transaction(\n      [tableName],\n      \"readwrite\"\n    );\n    const objectStore: IDBObjectStore = transaction.objectStore(tableName);\n    objectStore.add(json);\n    transaction.oncomplete = (e) => {\n      resolve(e);\n    };\n    transaction.onerror = (e) => {\n      reject(e);\n    };\n  });\n}\n","import { Observable, Subject, combineLatest } from \"rxjs\";\nimport { map, startWith } from \"rxjs/operators\";\nimport { createLocalStorage } from \"./createLocalStorage\";\nimport { atomWriteAttribute, matchMedia$ } from \"./dom\";\n\nexport const COLOR_SCHEME = [\"dark\", \"light\"] as const;\nexport type ColorScheme = (typeof COLOR_SCHEME)[number];\n\n// import \"@zyzgroup/core-web/dist/css/theme.css\";\nexport type Theme =\n  | \"xg-blue\" // 信鸽蓝\n  | \"xg-red\" // 信鸽红\n  | \"xg-green\" // 信鸽绿\n  | \"ks-green\" // 昆山绿\n  | \"yz-green\"; // 扬州绿\n\nexport type Colors = ReturnType<typeof getThemeColors>;\n\nconst { get: getColorSchemeInLocalStorage, set: setColorSchemeInLocalStorage } =\n  createLocalStorage(\"color-scheme\");\n\nconst localBi$ = new Subject<ColorScheme | undefined>();\nconst local$ = localBi$.pipe(startWith(undefined));\n\nfunction setColorSchemeInDOM(scheme: ColorScheme) {\n  switch (scheme) {\n    case \"dark\":\n      document.documentElement.classList.add(\"dark\");\n      atomWriteAttribute(document.documentElement, \"data-color-scheme\", \"dark\");\n      break;\n    case \"light\":\n    default:\n      document.documentElement.classList.remove(\"dark\");\n      atomWriteAttribute(\n        document.documentElement,\n        \"data-color-scheme\",\n        \"light\"\n      );\n      break;\n  }\n}\n\nexport function setColorScheme(scheme: ColorScheme): ColorScheme {\n  setColorSchemeInLocalStorage(scheme);\n  setColorSchemeInDOM(scheme);\n  localBi$.next(scheme);\n  return scheme;\n}\n\n// export function toggleColorScheme(): ColorScheme {\n//   return setColorScheme(\n//     getColorSchemeInLocalStorage() == \"dark\" ? \"light\" : \"dark\"\n//   );\n// }\n\nexport function getColorScheme$(): Observable<ColorScheme> {\n  return combineLatest([\n    local$,\n    matchMedia$(\"(prefers-color-scheme: dark)\")\n  ]).pipe(\n    map(([scheme, matchMediaDark]) => {\n      if (scheme) {\n        return scheme;\n      }\n      scheme = getColorSchemeInLocalStorage();\n      if (!scheme) {\n        // 如果用户没有初始设置过：获取「系统默认设置」\n        scheme = matchMediaDark ? \"dark\" : \"light\";\n        setColorSchemeInLocalStorage(scheme);\n      }\n      setColorSchemeInDOM(scheme);\n      return scheme;\n    })\n  );\n}\n\nexport function getRootCSSVar(name: string, defaultValue = \"\"): string {\n  return (\n    getComputedStyle(document.documentElement).getPropertyValue(name) ||\n    defaultValue\n  );\n}\n\nexport function setRootCSSVar(name: string, value: string): void {\n  // getComputedStyle(document.documentElement).setProperty(name, value);\n  document.documentElement.style.setProperty(name, value);\n}\n\nexport function getThemeColors(theme: Theme) {\n  return {\n    // 预定义颜色：深色模式下：颜色加深\n    red: getRootCSSVar(\"--yz-red\", \"#fa503c\"),\n    redPanel: getRootCSSVar(\"--yz-red-panel\", \"#fff5f5\"),\n    redPanelBorder: getRootCSSVar(\"--yz-red-panel-border\", \"#fac8c8\"),\n    redGradient: getRootCSSVar(\"--yz-red-gradient\", \"#fa8c78\"),\n    green: getRootCSSVar(\"--yz-green\", \"#00be5a\"),\n    yellow: getRootCSSVar(\"--yz-yellow\", \"#fa8c00\"),\n    newenergy: getRootCSSVar(\"--yz-newenergy\", \"#64c896\"),\n    newenergyPanel: getRootCSSVar(\"--yz-newenergy-panel\", \"#ebfaf2\"),\n\n    success: getRootCSSVar(\"--yz-success\", \"#00be5a\"),\n    error: getRootCSSVar(\"--yz-error\", \"#fa503c\"),\n    warn: getRootCSSVar(\"--yz-warn\", \"#fa8c00\"),\n\n    // system：深色模式下：颜色加深\n    foreground: getRootCSSVar(`--yz-foreground`, \"#5a82f0\"),\n    foregroundSecondary: getRootCSSVar(`--yz-foreground-secondary`, \"#e6f0ff\"),\n    foregroundGradient: getRootCSSVar(`--yz-foreground-gradient`, \"#66b3ff\"),\n    background: getRootCSSVar(`--yz-background`, \"#ffffff\"),\n    backgroundBorder: getRootCSSVar(`--yz-background-border`, \"#e6e6e6\"),\n    panel: getRootCSSVar(`--yz-panel`, \"#f5f5f5\"),\n    panelBorder: getRootCSSVar(`--yz-panel-border`, \"#b3b3b3\"),\n    gap: getRootCSSVar(`--yz-gap`, \"#cccccc\"),\n    placeholder: getRootCSSVar(`--yz-placeholder`, \"#8f8f8f\"),\n    font: getRootCSSVar(`--yz-font`, \"#333333\"),\n    fontSecondary: getRootCSSVar(`--yz-font-secondary`, \"#666666\"),\n    fontTertiary: getRootCSSVar(`--yz-font-tertiary`, \"#999999\"),\n\n    // system：深色模式下：颜色反向\n    foregroundReverse: getRootCSSVar(`--yz-foreground-reverse`, \"#5a82f0\"),\n    foregroundSecondaryReverse: getRootCSSVar(\n      `--yz-foreground-secondary-reverse`,\n      \"#e6f0ff\"\n    ),\n    foregroundGradientReverse: getRootCSSVar(\n      `--yz-foreground-gradient-reverse`,\n      \"#66b3ff\"\n    ),\n    backgroundReverse: getRootCSSVar(`--yz-background-reverse`, \"#ffffff\"),\n    backgroundBorderReverse: getRootCSSVar(\n      `--yz-background-border-reverse`,\n      \"#e6e6e6\"\n    ),\n    panelReverse: getRootCSSVar(`--yz-panel-reverse`, \"#f5f5f5\"),\n    panelBorderReverse: getRootCSSVar(`--yz-panel-border-reverse`, \"#b3b3b3\"),\n    gapReverse: getRootCSSVar(`--yz-gap-reverse`, \"#cccccc\"),\n    placeholderReverse: getRootCSSVar(`--yz-placeholder-reverse`, \"#8f8f8f\"),\n    fontReverse: getRootCSSVar(`--yz-font-reverse`, \"#333333\"),\n    fontSecondaryReverse: getRootCSSVar(\n      `--yz-font-secondary-reverse`,\n      \"#666666\"\n    ),\n    fontTertiaryReverse: getRootCSSVar(`--yz-font-tertiary-reverse`, \"#999999\"),\n\n    // theme：深色模式下：颜色加深\n    themePrimary: getRootCSSVar(`--yz-theme-${theme}-primary`, \"#5a82f0\"),\n    themeSecondary: getRootCSSVar(`--yz-theme-${theme}-secondary`, \"#e6f0ff\"),\n    themeGradient: getRootCSSVar(`--yz-theme-${theme}-gradient`, \"#66b3ff\"),\n    themeBackground: getRootCSSVar(`--yz-theme-${theme}-background`, \"#ffffff\"),\n    themeBackgroundBorder: getRootCSSVar(\n      `--yz-theme-${theme}-background-border`,\n      \"#e6e6e6\"\n    ),\n    themePanel: getRootCSSVar(`--yz-theme-${theme}-panel`, \"#f5f5f5\"),\n    themePanelBorder: getRootCSSVar(\n      `--yz-theme-${theme}-panel-border`,\n      \"#b3b3b3\"\n    ),\n    themeGap: getRootCSSVar(`--yz-theme-${theme}-gap`, \"#cccccc\"),\n    themePlaceholder: getRootCSSVar(\n      `--yz-theme-${theme}-placeholder`,\n      \"#8f8f8f\"\n    ),\n    themeFont: getRootCSSVar(`--yz-theme-${theme}-font`, \"#333333\"),\n    themeFontSecondary: getRootCSSVar(\n      `--yz-theme-${theme}-font-secondary`,\n      \"#666666\"\n    ),\n    themeFontTertiary: getRootCSSVar(\n      `--yz-theme-${theme}-font-tertiary`,\n      \"#999999\"\n    )\n  };\n}\n","// src/format.ts\nvar POSITIONALS_EXP = /(%?)(%([sdijo]))/g;\nfunction serializePositional(positional, flag) {\n  switch (flag) {\n    case \"s\":\n      return positional;\n    case \"d\":\n    case \"i\":\n      return Number(positional);\n    case \"j\":\n      return JSON.stringify(positional);\n    case \"o\": {\n      if (typeof positional === \"string\") {\n        return positional;\n      }\n      const json = JSON.stringify(positional);\n      if (json === \"{}\" || json === \"[]\" || /^\\[object .+?\\]$/.test(json)) {\n        return positional;\n      }\n      return json;\n    }\n  }\n}\nfunction format(message, ...positionals) {\n  if (positionals.length === 0) {\n    return message;\n  }\n  let positionalIndex = 0;\n  let formattedMessage = message.replace(\n    POSITIONALS_EXP,\n    (match, isEscaped, _, flag) => {\n      const positional = positionals[positionalIndex];\n      const value = serializePositional(positional, flag);\n      if (!isEscaped) {\n        positionalIndex++;\n        return value;\n      }\n      return match;\n    }\n  );\n  if (positionalIndex < positionals.length) {\n    formattedMessage += ` ${positionals.slice(positionalIndex).join(\" \")}`;\n  }\n  formattedMessage = formattedMessage.replace(/%{2,2}/g, \"%\");\n  return formattedMessage;\n}\n\n// src/invariant.ts\nvar STACK_FRAMES_TO_IGNORE = 2;\nfunction cleanErrorStack(error) {\n  if (!error.stack) {\n    return;\n  }\n  const nextStack = error.stack.split(\"\\n\");\n  nextStack.splice(1, STACK_FRAMES_TO_IGNORE);\n  error.stack = nextStack.join(\"\\n\");\n}\nvar InvariantError = class extends Error {\n  constructor(message, ...positionals) {\n    super(message);\n    this.message = message;\n    this.name = \"Invariant Violation\";\n    this.message = format(message, ...positionals);\n    cleanErrorStack(this);\n  }\n};\nvar invariant = (predicate, message, ...positionals) => {\n  if (!predicate) {\n    throw new InvariantError(message, ...positionals);\n  }\n};\ninvariant.as = (ErrorConstructor, predicate, message, ...positionals) => {\n  if (!predicate) {\n    const formatMessage = positionals.length === 0 ? message : format(message, ...positionals);\n    let error;\n    try {\n      error = Reflect.construct(ErrorConstructor, [\n        formatMessage\n      ]);\n    } catch (err) {\n      error = ErrorConstructor(formatMessage);\n    }\n    throw error;\n  }\n};\nexport {\n  InvariantError,\n  format,\n  invariant\n};\n//# sourceMappingURL=index.mjs.map","import { format } from \"outvariant\";\nconst LIBRARY_PREFIX = \"[MSW]\";\nfunction formatMessage(message, ...positionals) {\n  const interpolatedMessage = format(message, ...positionals);\n  return `${LIBRARY_PREFIX} ${interpolatedMessage}`;\n}\nfunction warn(message, ...positionals) {\n  console.warn(formatMessage(message, ...positionals));\n}\nfunction error(message, ...positionals) {\n  console.error(formatMessage(message, ...positionals));\n}\nconst devUtils = {\n  formatMessage,\n  warn,\n  error\n};\nclass InternalError extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"InternalError\";\n  }\n}\nexport {\n  InternalError,\n  devUtils\n};\n//# sourceMappingURL=devUtils.mjs.map","import { invariant } from \"outvariant\";\nimport { devUtils } from './devUtils.mjs';\nfunction checkGlobals() {\n  invariant(\n    typeof URL !== \"undefined\",\n    devUtils.formatMessage(\n      `Global \"URL\" class is not defined. This likely means that you're running MSW in an environment that doesn't support all Node.js standard API (e.g. React Native). If that's the case, please use an appropriate polyfill for the \"URL\" class, like \"react-native-url-polyfill\".`\n    )\n  );\n}\nexport {\n  checkGlobals\n};\n//# sourceMappingURL=checkGlobals.mjs.map","//#region src/lens-list.ts\nvar LensList = class {\n\t#list;\n\t#lens;\n\tconstructor() {\n\t\tthis.#list = [];\n\t\tthis.#lens = /* @__PURE__ */ new Map();\n\t}\n\tget [Symbol.iterator]() {\n\t\treturn this.#list[Symbol.iterator].bind(this.#list);\n\t}\n\tentries() {\n\t\treturn this.#lens.entries();\n\t}\n\t/**\n\t* Return an order-sensitive list of values by the given key.\n\t*/\n\tget(key) {\n\t\treturn this.#lens.get(key) || [];\n\t}\n\t/**\n\t* Return an order-sensitive list of all values.\n\t*/\n\tgetAll() {\n\t\treturn this.#list.map(([, value]) => value);\n\t}\n\t/**\n\t* Append a new value to the given key.\n\t*/\n\tappend(key, value) {\n\t\tthis.#list.push([key, value]);\n\t\tthis.#openLens(key, (list) => list.push(value));\n\t}\n\t/**\n\t* Prepend a new value to the given key.\n\t*/\n\tprepend(key, value) {\n\t\tthis.#list.unshift([key, value]);\n\t\tthis.#openLens(key, (list) => list.unshift(value));\n\t}\n\t/**\n\t* Delete the value belonging to the given key.\n\t* Returns `true` if the value was present and removed, `false` otherwise.\n\t*/\n\tdelete(key, value) {\n\t\tif (this.size === 0) return false;\n\t\tconst values = this.#lens.get(key);\n\t\tif (!values) return false;\n\t\tconst index = values.indexOf(value);\n\t\tif (index === -1) return false;\n\t\tvalues.splice(index, 1);\n\t\tthis.#list.splice(this.#list.findIndex((item) => item[0] === key && item[1] === value), 1);\n\t\treturn true;\n\t}\n\t/**\n\t* Delete all values belogning to the given key.\n\t*/\n\tdeleteAll(key) {\n\t\tif (this.size === 0) return;\n\t\tthis.#list = this.#list.filter((item) => item[0] !== key);\n\t\tthis.#lens.delete(key);\n\t}\n\tget size() {\n\t\treturn this.#list.length;\n\t}\n\tclear() {\n\t\tif (this.size === 0) return;\n\t\tthis.#list.length = 0;\n\t\tthis.#lens.clear();\n\t}\n\t#openLens(key, setter) {\n\t\tsetter(this.#lens.get(key) || this.#lens.set(key, []).get(key));\n\t}\n};\n\n//#endregion\nexport { LensList };\n//# sourceMappingURL=lens-list.mjs.map","import { LensList } from \"./lens-list.mjs\";\n\n//#region src/index.ts\nconst kDefaultPrevented = Symbol(\"kDefaultPrevented\");\nconst kPropagationStopped = Symbol(\"kPropagationStopped\");\nconst kImmediatePropagationStopped = Symbol(\"kImmediatePropagationStopped\");\nvar TypedEvent = class extends MessageEvent {\n\t/**\n\t* @note Keep a placeholder property with the return type\n\t* because the type must be set somewhere in order to be\n\t* correctly associated and inferred from the event.\n\t*/\n\t#returnType;\n\t[kDefaultPrevented];\n\t[kPropagationStopped];\n\t[kImmediatePropagationStopped];\n\tconstructor(...args) {\n\t\tsuper(args[0], args[1]);\n\t\tthis[kDefaultPrevented] = false;\n\t}\n\tget defaultPrevented() {\n\t\treturn this[kDefaultPrevented];\n\t}\n\tpreventDefault() {\n\t\tsuper.preventDefault();\n\t\tthis[kDefaultPrevented] = true;\n\t}\n\tstopImmediatePropagation() {\n\t\t/**\n\t\t* @note Despite `.stopPropagation()` and `.stopImmediatePropagation()` being defined\n\t\t* in Node.js, they do nothing. It is safe to re-define them.\n\t\t*/\n\t\tsuper.stopImmediatePropagation();\n\t\tthis[kImmediatePropagationStopped] = true;\n\t}\n};\nvar Emitter = class {\n\t#listeners;\n\t#listenerOptions;\n\t#listenerAbortCleanups;\n\t#typelessListeners;\n\t#hookListeners;\n\t#hookListenerOptions;\n\t#hookListenerAbortCleanups;\n\thooks;\n\tconstructor() {\n\t\tthis.#listeners = new LensList();\n\t\tthis.#listenerOptions = /* @__PURE__ */ new WeakMap();\n\t\tthis.#listenerAbortCleanups = /* @__PURE__ */ new WeakMap();\n\t\tthis.#typelessListeners = /* @__PURE__ */ new WeakSet();\n\t\tthis.#hookListeners = new LensList();\n\t\tthis.#hookListenerOptions = /* @__PURE__ */ new WeakMap();\n\t\tthis.#hookListenerAbortCleanups = /* @__PURE__ */ new WeakMap();\n\t\tthis.hooks = {\n\t\t\ton: (hook, callback, options) => {\n\t\t\t\t/**\n\t\t\t\t* @note An already-aborted signal would never fire its 'abort' event,\n\t\t\t\t* leaving the hook registered indefinitely. Skip registration entirely.\n\t\t\t\t*/\n\t\t\t\tif (options?.signal?.aborted) return;\n\t\t\t\tif (options?.once) {\n\t\t\t\t\tconst original = callback;\n\t\t\t\t\tconst wrapper = ((...args) => {\n\t\t\t\t\t\tthis.#deleteHookListener(hook, wrapper);\n\t\t\t\t\t\treturn original(...args);\n\t\t\t\t\t});\n\t\t\t\t\tcallback = wrapper;\n\t\t\t\t}\n\t\t\t\tthis.#hookListeners.append(hook, callback);\n\t\t\t\tif (options) this.#hookListenerOptions.set(callback, options);\n\t\t\t\tif (options?.signal) {\n\t\t\t\t\tconst { signal } = options;\n\t\t\t\t\tconst onAbort = () => {\n\t\t\t\t\t\tthis.#deleteHookListener(hook, callback);\n\t\t\t\t\t};\n\t\t\t\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\t\tthis.#hookListenerAbortCleanups.set(callback, () => {\n\t\t\t\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tremoveListener: (hook, callback) => {\n\t\t\t\tthis.#deleteHookListener(hook, callback);\n\t\t\t}\n\t\t};\n\t}\n\t#deleteHookListener(hook, callback) {\n\t\tthis.#hookListeners.delete(hook, callback);\n\t\tconst cleanup = this.#hookListenerAbortCleanups.get(callback);\n\t\tif (cleanup) {\n\t\t\tcleanup();\n\t\t\tthis.#hookListenerAbortCleanups.delete(callback);\n\t\t}\n\t}\n\t#deleteListener(type, listener) {\n\t\tconst removed = this.#listeners.delete(type, listener);\n\t\tconst cleanup = this.#listenerAbortCleanups.get(listener);\n\t\tif (cleanup) {\n\t\t\tcleanup();\n\t\t\tthis.#listenerAbortCleanups.delete(listener);\n\t\t}\n\t\treturn removed;\n\t}\n\t/**\n\t* Adds a listener for the given event type.\n\t*/\n\ton(type, listener, options) {\n\t\tthis.#addListener(type, listener, options);\n\t\treturn this;\n\t}\n\t/**\n\t* Adds a one-time listener for the given event type.\n\t*/\n\tonce(type, listener, options) {\n\t\treturn this.on(type, listener, {\n\t\t\t...options || {},\n\t\t\tonce: true\n\t\t});\n\t}\n\t/**\n\t* Prepends a listener for the given event type.\n\t*/\n\tearlyOn(type, listener, options) {\n\t\tthis.#addListener(type, listener, options, \"prepend\");\n\t\treturn this;\n\t}\n\t/**\n\t* Prepends a one-time listener for the given event type.\n\t*/\n\tearlyOnce(type, listener, options) {\n\t\treturn this.earlyOn(type, listener, {\n\t\t\t...options || {},\n\t\t\tonce: true\n\t\t});\n\t}\n\t/**\n\t* Emits the given typed event.\n\t*\n\t* @returns {boolean} Returns `true` if the event had any listeners, `false` otherwise.\n\t*/\n\temit(event) {\n\t\tif (this.#listeners.size === 0) return false;\n\t\t/**\n\t\t* @note Calculate matching listeners before calling them\n\t\t* since one-time listeners will self-destruct.\n\t\t*/\n\t\tconst hasListeners = this.listenerCount(event.type) > 0;\n\t\tconst proxiedEvent = this.#proxyEvent(event);\n\t\tfor (const listener of this.#matchListeners(event.type)) {\n\t\t\tif (proxiedEvent.event[kPropagationStopped] != null && proxiedEvent.event[kPropagationStopped] !== this) {\n\t\t\t\tproxiedEvent.revoke();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (proxiedEvent.event[kImmediatePropagationStopped]) break;\n\t\t\tthis.#callListener(proxiedEvent.event, listener);\n\t\t}\n\t\tproxiedEvent.revoke();\n\t\treturn hasListeners;\n\t}\n\t/**\n\t* Emits the given typed event and returns a promise that resolves\n\t* when all the listeners for that event have settled.\n\t*\n\t* @returns {Promise<Array<Emitter.ListenerReturnType>>} A promise that resolves\n\t* with the return values of all listeners.\n\t*/\n\tasync emitAsPromise(event) {\n\t\tif (this.#listeners.size === 0) return [];\n\t\tconst pendingListeners = [];\n\t\tconst proxiedEvent = this.#proxyEvent(event);\n\t\tfor (const listener of this.#matchListeners(event.type)) {\n\t\t\tif (proxiedEvent.event[kPropagationStopped] != null && proxiedEvent.event[kPropagationStopped] !== this) {\n\t\t\t\tproxiedEvent.revoke();\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tif (proxiedEvent.event[kImmediatePropagationStopped]) break;\n\t\t\tconst returnValue = await Promise.resolve(this.#callListener(proxiedEvent.event, listener));\n\t\t\tif (!this.#isTypelessListener(listener)) pendingListeners.push(returnValue);\n\t\t}\n\t\tproxiedEvent.revoke();\n\t\treturn Promise.allSettled(pendingListeners).then((results) => {\n\t\t\treturn results.map((result) => result.status === \"fulfilled\" ? result.value : result.reason);\n\t\t});\n\t}\n\t/**\n\t* Emits the given event and returns a generator that yields\n\t* the result of each listener in the order of their registration.\n\t* This way, you stop exhausting the listeners once you get the expected value.\n\t*/\n\t*emitAsGenerator(event) {\n\t\tif (this.#listeners.size === 0) return;\n\t\tconst proxiedEvent = this.#proxyEvent(event);\n\t\tfor (const listener of this.#matchListeners(event.type)) {\n\t\t\tif (proxiedEvent.event[kPropagationStopped] != null && proxiedEvent.event[kPropagationStopped] !== this) {\n\t\t\t\tproxiedEvent.revoke();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (proxiedEvent.event[kImmediatePropagationStopped]) break;\n\t\t\tconst returnValue = this.#callListener(proxiedEvent.event, listener);\n\t\t\tif (!this.#isTypelessListener(listener)) yield returnValue;\n\t\t}\n\t\tproxiedEvent.revoke();\n\t}\n\t/**\n\t* Removes a listener for the given event type.\n\t*/\n\tremoveListener(type, listener) {\n\t\tconst options = this.#listenerOptions.get(listener);\n\t\tif (!this.#deleteListener(type, listener)) return;\n\t\t/**\n\t\t* @note Snapshot the hook list before iterating so a hook that removes\n\t\t* another `removeListener` hook can't shift the live array mid-iteration.\n\t\t*/\n\t\tfor (const hook of this.#hookListeners.get(\"removeListener\").slice()) hook(type, listener, options);\n\t}\n\t/**\n\t* Removes all listeners for the given event type.\n\t* If no event type is provided, removes all existing listeners.\n\t*/\n\tremoveAllListeners(type) {\n\t\tif (type == null) {\n\t\t\tfor (const [listenerType, listeners$1] of this.#listeners.entries()) while (listeners$1.length > 0) this.removeListener(listenerType, listeners$1[0]);\n\t\t\tfor (const [hookType, hookListener] of [...this.#hookListeners]) if (!this.#hookListenerOptions.get(hookListener)?.persist) this.#deleteHookListener(hookType, hookListener);\n\t\t\treturn;\n\t\t}\n\t\tconst listeners = this.listeners(type);\n\t\twhile (listeners.length > 0) this.removeListener(type, listeners[0]);\n\t}\n\t/**\n\t* Returns the list of listeners for the given event type.\n\t* If no even type is provided, returns all listeners.\n\t*/\n\tlisteners(type) {\n\t\tif (type == null) return this.#listeners.getAll();\n\t\treturn this.#listeners.get(type);\n\t}\n\t/**\n\t* Returns the number of listeners for the given event type.\n\t* If no even type is provided, returns the total number of listeners.\n\t*/\n\tlistenerCount(type) {\n\t\tif (type == null) return this.#listeners.size;\n\t\treturn this.listeners(type).length;\n\t}\n\t#addListener(type, listener, options, insertMode = \"append\") {\n\t\t/**\n\t\t* @note An already-aborted signal would never fire its 'abort' event,\n\t\t* leaving the listener registered indefinitely. Skip registration entirely.\n\t\t*/\n\t\tif (options?.signal?.aborted) return;\n\t\tfor (const hook of this.#hookListeners.get(\"newListener\").slice()) hook(type, listener, options);\n\t\tif (type === \"*\") this.#typelessListeners.add(listener);\n\t\tif (insertMode === \"prepend\") this.#listeners.prepend(type, listener);\n\t\telse this.#listeners.append(type, listener);\n\t\tif (options) {\n\t\t\tthis.#listenerOptions.set(listener, options);\n\t\t\tif (options.signal) {\n\t\t\t\tconst { signal } = options;\n\t\t\t\tconst onAbort = () => {\n\t\t\t\t\tthis.removeListener(type, listener);\n\t\t\t\t};\n\t\t\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\tthis.#listenerAbortCleanups.set(listener, () => {\n\t\t\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t#proxyEvent(event) {\n\t\tconst { stopPropagation } = event;\n\t\tevent.stopPropagation = () => {\n\t\t\tevent[kPropagationStopped] = this;\n\t\t\tstopPropagation.call(event);\n\t\t};\n\t\treturn {\n\t\t\tevent,\n\t\t\trevoke() {\n\t\t\t\tevent.stopPropagation = stopPropagation;\n\t\t\t}\n\t\t};\n\t}\n\t#callListener(event, listener) {\n\t\tfor (const hook of this.#hookListeners.get(\"beforeEmit\").slice()) if (hook(event) === false) return;\n\t\tconst returnValue = listener.call(this, event);\n\t\tconst options = this.#listenerOptions.get(listener);\n\t\tif (options?.once) {\n\t\t\tconst type = this.#isTypelessListener(listener) ? \"*\" : event.type;\n\t\t\tif (this.#deleteListener(type, listener)) for (const hook of this.#hookListeners.get(\"removeListener\").slice()) hook(type, listener, options);\n\t\t}\n\t\treturn returnValue;\n\t}\n\t/**\n\t* Return a list of all event listeners relevant for the given event type.\n\t* This includes the explicit event listeners and also typeless event listeners.\n\t*\n\t* @note Snapshot the matching listeners before yielding. Listeners can add or\n\t* remove other listeners during emission (e.g. `earlyOn` unshifts `#list`),\n\t* which would otherwise shift the live iterator and re-yield prior entries.\n\t*/\n\t*#matchListeners(type) {\n\t\tconst snapshot = [];\n\t\tfor (const [key, listener] of this.#listeners) if (key === \"*\" || key === type) snapshot.push(listener);\n\t\tyield* snapshot;\n\t}\n\t#isTypelessListener(listener) {\n\t\treturn this.#typelessListeners.has(listener);\n\t}\n};\n\n//#endregion\nexport { Emitter, TypedEvent };\n//# sourceMappingURL=index.mjs.map","var defaultParseOptions = {\n  decodeValues: true,\n  map: false,\n  silent: false,\n  split: \"auto\", // auto = split strings but not arrays\n};\n\nfunction isForbiddenKey(key) {\n  return typeof key !== \"string\" || key in {};\n}\n\nfunction createNullObj() {\n  return Object.create(null);\n}\n\nfunction isNonEmptyString(str) {\n  return typeof str === \"string\" && !!str.trim();\n}\n\nfunction parseString(setCookieValue, options) {\n  var parts = setCookieValue.split(\";\").filter(isNonEmptyString);\n\n  var nameValuePairStr = parts.shift();\n  var parsed = parseNameValuePair(nameValuePairStr);\n  var name = parsed.name;\n  var value = parsed.value;\n\n  options = options\n    ? Object.assign({}, defaultParseOptions, options)\n    : defaultParseOptions;\n\n  if (isForbiddenKey(name)) {\n    return null;\n  }\n\n  try {\n    value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value\n  } catch (e) {\n    console.error(\n      \"set-cookie-parser: failed to decode cookie value. Set options.decodeValues=false to disable decoding.\",\n      e\n    );\n  }\n\n  var cookie = createNullObj();\n  cookie.name = name;\n  cookie.value = value;\n\n  parts.forEach(function (part) {\n    var sides = part.split(\"=\");\n    var key = sides.shift().trim().toLowerCase();\n    if (isForbiddenKey(key)) {\n      return;\n    }\n    var value = sides.join(\"=\").trim();\n    if (key === \"expires\") {\n      cookie.expires = new Date(value);\n    } else if (key === \"max-age\") {\n      var n = parseInt(value, 10);\n      if (!Number.isNaN(n)) cookie.maxAge = n;\n    } else if (key === \"secure\") {\n      cookie.secure = true;\n    } else if (key === \"httponly\") {\n      cookie.httpOnly = true;\n    } else if (key === \"samesite\") {\n      cookie.sameSite = value;\n    } else if (key === \"partitioned\") {\n      cookie.partitioned = true;\n    } else if (key) {\n      cookie[key] = value;\n    }\n  });\n\n  return cookie;\n}\n\nfunction parseNameValuePair(nameValuePairStr) {\n  // Parses name-value-pair according to rfc6265bis draft\n\n  var name = \"\";\n  var value = \"\";\n  var nameValueArr = nameValuePairStr.split(\"=\");\n  if (nameValueArr.length > 1) {\n    name = nameValueArr.shift();\n    value = nameValueArr.join(\"=\"); // everything after the first =, joined by a \"=\" if there was more than one part\n  } else {\n    value = nameValuePairStr;\n  }\n\n  return { name: name, value: value };\n}\n\nfunction parseSetCookie(input, options) {\n  options = options\n    ? Object.assign({}, defaultParseOptions, options)\n    : defaultParseOptions;\n\n  if (!input) {\n    if (!options.map) {\n      return [];\n    } else {\n      return createNullObj();\n    }\n  }\n\n  if (input.headers) {\n    if (typeof input.headers.getSetCookie === \"function\") {\n      // for fetch responses - they combine headers of the same type in the headers array,\n      // but getSetCookie returns an uncombined array\n      input = input.headers.getSetCookie();\n    } else if (input.headers[\"set-cookie\"]) {\n      // fast-path for node.js (which automatically normalizes header names to lower-case)\n      input = input.headers[\"set-cookie\"];\n    } else {\n      // slow-path for other environments - see #25\n      var sch =\n        input.headers[\n          Object.keys(input.headers).find(function (key) {\n            return key.toLowerCase() === \"set-cookie\";\n          })\n        ];\n      // warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36\n      if (!sch && input.headers.cookie && !options.silent) {\n        console.warn(\n          \"Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning.\"\n        );\n      }\n      input = sch;\n    }\n  }\n\n  var split = options.split;\n  var isArray = Array.isArray(input);\n\n  if (split === \"auto\") {\n    split = !isArray;\n  }\n\n  if (!isArray) {\n    input = [input];\n  }\n\n  input = input.filter(isNonEmptyString);\n\n  if (split) {\n    input = input.map(splitCookiesString).flat();\n  }\n\n  if (!options.map) {\n    return input\n      .map(function (str) {\n        return parseString(str, options);\n      })\n      .filter(Boolean);\n  } else {\n    var cookies = createNullObj();\n    return input.reduce(function (cookies, str) {\n      var cookie = parseString(str, options);\n      if (cookie && !isForbiddenKey(cookie.name)) {\n        cookies[cookie.name] = cookie;\n      }\n      return cookies;\n    }, cookies);\n  }\n}\n\n/*\n  Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n  that are within a single set-cookie field-value, such as in the Expires portion.\n\n  This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n  Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n  React Native's fetch does this for *every* header, including set-cookie.\n\n  Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n  Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nfunction splitCookiesString(cookiesString) {\n  if (Array.isArray(cookiesString)) {\n    return cookiesString;\n  }\n  if (typeof cookiesString !== \"string\") {\n    return [];\n  }\n\n  var cookiesStrings = [];\n  var pos = 0;\n  var start;\n  var ch;\n  var lastComma;\n  var nextStart;\n  var cookiesSeparatorFound;\n\n  function skipWhitespace() {\n    while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n      pos += 1;\n    }\n    return pos < cookiesString.length;\n  }\n\n  function notSpecialChar() {\n    ch = cookiesString.charAt(pos);\n\n    return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n  }\n\n  while (pos < cookiesString.length) {\n    start = pos;\n    cookiesSeparatorFound = false;\n\n    while (skipWhitespace()) {\n      ch = cookiesString.charAt(pos);\n      if (ch === \",\") {\n        // ',' is a cookie separator if we have later first '=', not ';' or ','\n        lastComma = pos;\n        pos += 1;\n\n        skipWhitespace();\n        nextStart = pos;\n\n        while (pos < cookiesString.length && notSpecialChar()) {\n          pos += 1;\n        }\n\n        // currently special character\n        if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n          // we found cookies separator\n          cookiesSeparatorFound = true;\n          // pos is inside the next cookie, so back up and return it.\n          pos = nextStart;\n          cookiesStrings.push(cookiesString.substring(start, lastComma));\n          start = pos;\n        } else {\n          // in param ',' or param separator ';',\n          // we continue from that comma\n          pos = lastComma + 1;\n        }\n      } else {\n        pos += 1;\n      }\n    }\n\n    if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n      cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n    }\n  }\n\n  return cookiesStrings;\n}\n\n// named export for CJS\nparseSetCookie.parseSetCookie = parseSetCookie;\n// for backwards compatibility\nparseSetCookie.parse = parseSetCookie;\nparseSetCookie.parseString = parseString;\nparseSetCookie.splitCookiesString = splitCookiesString;\n\n// EXPORTS\n// (this section is replaced by build-cjs.js)\n\n// named export for ESM\nexport { parseSetCookie };\n// for backwards compatibility\nexport default parseSetCookie;\nexport { parseSetCookie as parse, parseString, splitCookiesString };\n","import { splitCookiesString } from \"set-cookie-parser\";\n//#region src/utils/normalizeHeaderName.ts\nconst HEADERS_INVALID_CHARACTERS = /[^a-z0-9\\-#$%&'*+.^_`|~]/i;\nfunction normalizeHeaderName(name) {\n\tif (HEADERS_INVALID_CHARACTERS.test(name) || name.trim() === \"\") throw new TypeError(\"Invalid character in header field name\");\n\treturn name.trim().toLowerCase();\n}\n//#endregion\n//#region src/utils/normalizeHeaderValue.ts\nconst charCodesToRemove = [\n\tString.fromCharCode(10),\n\tString.fromCharCode(13),\n\tString.fromCharCode(9),\n\tString.fromCharCode(32)\n];\nconst HEADER_VALUE_REMOVE_REGEXP = new RegExp(`(^[${charCodesToRemove.join(\"\")}]|$[${charCodesToRemove.join(\"\")}])`, \"g\");\n/**\n* Normalize the given header value.\n* @see https://fetch.spec.whatwg.org/#concept-header-value-normalize\n*/\nfunction normalizeHeaderValue(value) {\n\treturn value.replace(HEADER_VALUE_REMOVE_REGEXP, \"\");\n}\n//#endregion\n//#region src/utils/isValidHeaderName.ts\n/**\n* Validate the given header name.\n* @see https://fetch.spec.whatwg.org/#header-name\n*/\nfunction isValidHeaderName(value) {\n\tif (typeof value !== \"string\") return false;\n\tif (value.length === 0) return false;\n\tfor (let i = 0; i < value.length; i++) {\n\t\tconst character = value.charCodeAt(i);\n\t\tif (character > 127 || !isToken(character)) return false;\n\t}\n\treturn true;\n}\nfunction isToken(value) {\n\treturn ![\n\t\t127,\n\t\t32,\n\t\t\"(\",\n\t\t\")\",\n\t\t\"<\",\n\t\t\">\",\n\t\t\"@\",\n\t\t\",\",\n\t\t\";\",\n\t\t\":\",\n\t\t\"\\\\\",\n\t\t\"\\\"\",\n\t\t\"/\",\n\t\t\"[\",\n\t\t\"]\",\n\t\t\"?\",\n\t\t\"=\",\n\t\t\"{\",\n\t\t\"}\"\n\t].includes(value);\n}\n//#endregion\n//#region src/utils/isValidHeaderValue.ts\n/**\n* Validate the given header value.\n* @see https://fetch.spec.whatwg.org/#header-value\n*/\nfunction isValidHeaderValue(value) {\n\tif (typeof value !== \"string\") return false;\n\tif (value.trim() !== value) return false;\n\tfor (let i = 0; i < value.length; i++) {\n\t\tconst character = value.charCodeAt(i);\n\t\tif (character === 0 || character === 10 || character === 13) return false;\n\t}\n\treturn true;\n}\n//#endregion\n//#region src/Headers.ts\nlet _Symbol$toStringTag;\nconst NORMALIZED_HEADERS = Symbol(\"normalizedHeaders\");\nconst RAW_HEADER_NAMES = Symbol(\"rawHeaderNames\");\nconst HEADER_VALUE_DELIMITER = \", \";\nvar Headers = class Headers {\n\tconstructor(init) {\n\t\tthis[NORMALIZED_HEADERS] = {};\n\t\tthis[RAW_HEADER_NAMES] = /* @__PURE__ */ new Map();\n\t\tthis[_Symbol$toStringTag] = \"Headers\";\n\t\t/**\n\t\t* @note Cannot necessarily check if the `init` is an instance of the\n\t\t* `Headers` because that class may not be defined in Node or jsdom.\n\t\t*/\n\t\tif ([\"Headers\", \"HeadersPolyfill\"].includes(init?.constructor?.name) || init instanceof Headers || typeof globalThis.Headers !== \"undefined\" && init instanceof globalThis.Headers) init.forEach((value, name) => {\n\t\t\tthis.append(name, value);\n\t\t}, this);\n\t\telse if (Array.isArray(init)) init.forEach(([name, value]) => {\n\t\t\tthis.append(name, Array.isArray(value) ? value.join(HEADER_VALUE_DELIMITER) : value);\n\t\t});\n\t\telse if (init) Object.getOwnPropertyNames(init).forEach((name) => {\n\t\t\tconst value = init[name];\n\t\t\tthis.append(name, Array.isArray(value) ? value.join(HEADER_VALUE_DELIMITER) : value);\n\t\t});\n\t}\n\t[(_Symbol$toStringTag = Symbol.toStringTag, Symbol.iterator)]() {\n\t\treturn this.entries();\n\t}\n\t*keys() {\n\t\tfor (const [name] of this.entries()) yield name;\n\t}\n\t*values() {\n\t\tfor (const [, value] of this.entries()) yield value;\n\t}\n\t*entries() {\n\t\tlet sortedKeys = Object.keys(this[NORMALIZED_HEADERS]).sort((a, b) => a.localeCompare(b));\n\t\tfor (const name of sortedKeys) if (name === \"set-cookie\") for (const value of this.getSetCookie()) yield [name, value];\n\t\telse yield [name, this.get(name)];\n\t}\n\t/**\n\t* Returns a boolean stating whether a `Headers` object contains a certain header.\n\t*/\n\thas(name) {\n\t\tif (!isValidHeaderName(name)) throw new TypeError(`Invalid header name \"${name}\"`);\n\t\treturn this[NORMALIZED_HEADERS].hasOwnProperty(normalizeHeaderName(name));\n\t}\n\t/**\n\t* Returns a `ByteString` sequence of all the values of a header with a given name.\n\t*/\n\tget(name) {\n\t\tif (!isValidHeaderName(name)) throw TypeError(`Invalid header name \"${name}\"`);\n\t\treturn this[NORMALIZED_HEADERS][normalizeHeaderName(name)] ?? null;\n\t}\n\t/**\n\t* Sets a new value for an existing header inside a `Headers` object, or adds the header if it does not already exist.\n\t*/\n\tset(name, value) {\n\t\tif (!isValidHeaderName(name) || !isValidHeaderValue(value)) return;\n\t\tconst normalizedName = normalizeHeaderName(name);\n\t\tconst normalizedValue = normalizeHeaderValue(value);\n\t\tthis[NORMALIZED_HEADERS][normalizedName] = normalizeHeaderValue(normalizedValue);\n\t\tthis[RAW_HEADER_NAMES].set(normalizedName, name);\n\t}\n\t/**\n\t* Appends a new value onto an existing header inside a `Headers` object, or adds the header if it does not already exist.\n\t*/\n\tappend(name, value) {\n\t\tif (!isValidHeaderName(name) || !isValidHeaderValue(value)) return;\n\t\tconst normalizedName = normalizeHeaderName(name);\n\t\tconst normalizedValue = normalizeHeaderValue(value);\n\t\tlet resolvedValue = this.has(normalizedName) ? `${this.get(normalizedName)}, ${normalizedValue}` : normalizedValue;\n\t\tthis.set(name, resolvedValue);\n\t}\n\t/**\n\t* Deletes a header from the `Headers` object.\n\t*/\n\tdelete(name) {\n\t\tif (!isValidHeaderName(name)) return;\n\t\tif (!this.has(name)) return;\n\t\tconst normalizedName = normalizeHeaderName(name);\n\t\tdelete this[NORMALIZED_HEADERS][normalizedName];\n\t\tthis[RAW_HEADER_NAMES].delete(normalizedName);\n\t}\n\t/**\n\t* Traverses the `Headers` object,\n\t* calling the given callback for each header.\n\t*/\n\tforEach(callback, thisArg) {\n\t\tfor (const [name, value] of this.entries()) callback.call(thisArg, value, name, this);\n\t}\n\t/**\n\t* Returns an array containing the values\n\t* of all Set-Cookie headers associated\n\t* with a response\n\t*/\n\tgetSetCookie() {\n\t\tconst setCookieHeader = this.get(\"set-cookie\");\n\t\tif (setCookieHeader === null) return [];\n\t\tif (setCookieHeader === \"\") return [\"\"];\n\t\treturn splitCookiesString(setCookieHeader);\n\t}\n};\n//#endregion\n//#region src/getRawHeaders.ts\n/**\n* Returns the object of all raw headers.\n*/\nfunction getRawHeaders(headers) {\n\tconst rawHeaders = {};\n\tfor (const [name, value] of headers.entries()) rawHeaders[headers[RAW_HEADER_NAMES].get(name)] = value;\n\treturn rawHeaders;\n}\n//#endregion\n//#region src/transformers/headersToList.ts\nfunction headersToList(headers) {\n\tconst headersList = [];\n\theaders.forEach((value, name) => {\n\t\tconst resolvedValue = value.includes(\",\") ? value.split(\",\").map((value) => value.trim()) : value;\n\t\theadersList.push([name, resolvedValue]);\n\t});\n\treturn headersList;\n}\n//#endregion\n//#region src/transformers/headersToString.ts\n/**\n* Converts a given `Headers` instance to its string representation.\n*/\nfunction headersToString(headers) {\n\treturn headersToList(headers).map(([name, value]) => {\n\t\treturn `${name}: ${[].concat(value).join(\", \")}`;\n\t}).join(\"\\r\\n\");\n}\n//#endregion\n//#region src/transformers/headersToObject.ts\nconst singleValueHeaders = [\"user-agent\"];\n/**\n* Converts a given `Headers` instance into a plain object.\n* Respects headers with multiple values.\n*/\nfunction headersToObject(headers) {\n\tconst headersObject = {};\n\theaders.forEach((value, name) => {\n\t\theadersObject[name] = !singleValueHeaders.includes(name.toLowerCase()) && value.includes(\",\") ? value.split(\",\").map((s) => s.trim()) : value;\n\t});\n\treturn headersObject;\n}\n//#endregion\n//#region src/transformers/stringToHeaders.ts\n/**\n* Converts a string representation of headers (i.e. from XMLHttpRequest)\n* to a new `Headers` instance.\n*/\nfunction stringToHeaders(str) {\n\treturn str.trim().split(/[\\r\\n]+/).reduce((headers, line) => {\n\t\tif (line.trim() === \"\") return headers;\n\t\tconst parts = line.split(\": \");\n\t\tconst name = parts.shift();\n\t\tconst value = parts.join(\": \");\n\t\theaders.append(name, value);\n\t\treturn headers;\n\t}, new Headers());\n}\n//#endregion\n//#region src/transformers/listToHeaders.ts\nfunction listToHeaders(list) {\n\tconst headers = new Headers();\n\tlist.forEach(([name, value]) => {\n\t\t[].concat(value).forEach((value) => {\n\t\t\theaders.append(name, value);\n\t\t});\n\t});\n\treturn headers;\n}\n//#endregion\n//#region src/transformers/reduceHeadersObject.ts\n/**\n* Reduces given headers object instnace.\n*/\nfunction reduceHeadersObject(headers, reducer, initialState) {\n\treturn Object.keys(headers).reduce((nextHeaders, name) => {\n\t\treturn reducer(nextHeaders, name, headers[name]);\n\t}, initialState);\n}\n//#endregion\n//#region src/transformers/objectToHeaders.ts\n/**\n* Converts a given headers object to a new `Headers` instance.\n*/\nfunction objectToHeaders(headersObject) {\n\treturn reduceHeadersObject(headersObject, (headers, name, value) => {\n\t\t[].concat(value).filter(Boolean).forEach((value) => {\n\t\t\theaders.append(name, value);\n\t\t});\n\t\treturn headers;\n\t}, new Headers());\n}\n//#endregion\n//#region src/transformers/flattenHeadersList.ts\nfunction flattenHeadersList(list) {\n\treturn list.map(([name, values]) => {\n\t\treturn [name, [].concat(values).join(\", \")];\n\t});\n}\n//#endregion\n//#region src/transformers/flattenHeadersObject.ts\nfunction flattenHeadersObject(headersObject) {\n\treturn reduceHeadersObject(headersObject, (headers, name, value) => {\n\t\theaders[name] = [].concat(value).join(\", \");\n\t\treturn headers;\n\t}, {});\n}\n//#endregion\nexport { Headers, flattenHeadersList, flattenHeadersObject, getRawHeaders, headersToList, headersToObject, headersToString, listToHeaders, objectToHeaders, reduceHeadersObject, stringToHeaders };\n\n//# sourceMappingURL=index.mjs.map","const SOURCE_FRAME = /[/\\\\]msw[/\\\\]src[/\\\\](.+)/;\nconst BUILD_FRAME = /(node_modules)?[/\\\\]lib[/\\\\](core|browser|node|native|iife)[/\\\\]|^[^/\\\\]*$/;\nfunction getCallFrame(error) {\n  const stack = error.stack;\n  if (!stack) {\n    return;\n  }\n  const frames = stack.split(\"\\n\").slice(1);\n  const declarationFrame = frames.find((frame) => {\n    return !(SOURCE_FRAME.test(frame) || BUILD_FRAME.test(frame));\n  });\n  if (!declarationFrame) {\n    return;\n  }\n  const declarationPath = declarationFrame.replace(/\\s*at [^()]*\\(([^)]+)\\)/, \"$1\").replace(/^@/, \"\");\n  return declarationPath;\n}\nexport {\n  getCallFrame\n};\n//# sourceMappingURL=getCallFrame.mjs.map","function isIterable(fn) {\n  if (!fn) {\n    return false;\n  }\n  return Reflect.has(fn, Symbol.iterator) || Reflect.has(fn, Symbol.asyncIterator);\n}\nexport {\n  isIterable\n};\n//# sourceMappingURL=isIterable.mjs.map","// src/index.ts\nfunction isNodeProcess() {\n  if (typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\") {\n    return true;\n  }\n  if (typeof process !== \"undefined\") {\n    const type = process.type;\n    if (type === \"renderer\" || type === \"worker\") {\n      return false;\n    }\n    return !!(process.versions && process.versions.node);\n  }\n  return false;\n}\nexport {\n  isNodeProcess\n};\n//# sourceMappingURL=index.mjs.map","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/index.ts\nimport { isNodeProcess } from \"is-node-process\";\nimport { format } from \"outvariant\";\n\n// src/colors.ts\nvar colors_exports = {};\n__export(colors_exports, {\n  blue: () => blue,\n  gray: () => gray,\n  green: () => green,\n  red: () => red,\n  yellow: () => yellow\n});\nfunction yellow(text) {\n  return `\\x1B[33m${text}\\x1B[0m`;\n}\nfunction blue(text) {\n  return `\\x1B[34m${text}\\x1B[0m`;\n}\nfunction gray(text) {\n  return `\\x1B[90m${text}\\x1B[0m`;\n}\nfunction red(text) {\n  return `\\x1B[31m${text}\\x1B[0m`;\n}\nfunction green(text) {\n  return `\\x1B[32m${text}\\x1B[0m`;\n}\n\n// src/index.ts\nvar IS_NODE = isNodeProcess();\nvar Logger = class {\n  constructor(name) {\n    this.name = name;\n    this.prefix = `[${this.name}]`;\n    const LOGGER_NAME = getVariable(\"DEBUG\");\n    const LOGGER_LEVEL = getVariable(\"LOG_LEVEL\");\n    const isLoggingEnabled = LOGGER_NAME === \"1\" || LOGGER_NAME === \"true\" || typeof LOGGER_NAME !== \"undefined\" && this.name.startsWith(LOGGER_NAME);\n    if (isLoggingEnabled) {\n      this.debug = isDefinedAndNotEquals(LOGGER_LEVEL, \"debug\") ? noop : this.debug;\n      this.info = isDefinedAndNotEquals(LOGGER_LEVEL, \"info\") ? noop : this.info;\n      this.success = isDefinedAndNotEquals(LOGGER_LEVEL, \"success\") ? noop : this.success;\n      this.warning = isDefinedAndNotEquals(LOGGER_LEVEL, \"warning\") ? noop : this.warning;\n      this.error = isDefinedAndNotEquals(LOGGER_LEVEL, \"error\") ? noop : this.error;\n    } else {\n      this.info = noop;\n      this.success = noop;\n      this.warning = noop;\n      this.error = noop;\n      this.only = noop;\n    }\n  }\n  prefix;\n  extend(domain) {\n    return new Logger(`${this.name}:${domain}`);\n  }\n  /**\n   * Print a debug message.\n   * @example\n   * logger.debug('no duplicates found, creating a document...')\n   */\n  debug(message, ...positionals) {\n    this.logEntry({\n      level: \"debug\",\n      message: gray(message),\n      positionals,\n      prefix: this.prefix,\n      colors: {\n        prefix: \"gray\"\n      }\n    });\n  }\n  /**\n   * Print an info message.\n   * @example\n   * logger.info('start parsing...')\n   */\n  info(message, ...positionals) {\n    this.logEntry({\n      level: \"info\",\n      message,\n      positionals,\n      prefix: this.prefix,\n      colors: {\n        prefix: \"blue\"\n      }\n    });\n    const performance2 = new PerformanceEntry();\n    return (message2, ...positionals2) => {\n      performance2.measure();\n      this.logEntry({\n        level: \"info\",\n        message: `${message2} ${gray(`${performance2.deltaTime}ms`)}`,\n        positionals: positionals2,\n        prefix: this.prefix,\n        colors: {\n          prefix: \"blue\"\n        }\n      });\n    };\n  }\n  /**\n   * Print a success message.\n   * @example\n   * logger.success('successfully created document')\n   */\n  success(message, ...positionals) {\n    this.logEntry({\n      level: \"info\",\n      message,\n      positionals,\n      prefix: `\\u2714 ${this.prefix}`,\n      colors: {\n        timestamp: \"green\",\n        prefix: \"green\"\n      }\n    });\n  }\n  /**\n   * Print a warning.\n   * @example\n   * logger.warning('found legacy document format')\n   */\n  warning(message, ...positionals) {\n    this.logEntry({\n      level: \"warning\",\n      message,\n      positionals,\n      prefix: `\\u26A0 ${this.prefix}`,\n      colors: {\n        timestamp: \"yellow\",\n        prefix: \"yellow\"\n      }\n    });\n  }\n  /**\n   * Print an error message.\n   * @example\n   * logger.error('something went wrong')\n   */\n  error(message, ...positionals) {\n    this.logEntry({\n      level: \"error\",\n      message,\n      positionals,\n      prefix: `\\u2716 ${this.prefix}`,\n      colors: {\n        timestamp: \"red\",\n        prefix: \"red\"\n      }\n    });\n  }\n  /**\n   * Execute the given callback only when the logging is enabled.\n   * This is skipped in its entirety and has no runtime cost otherwise.\n   * This executes regardless of the log level.\n   * @example\n   * logger.only(() => {\n   *   logger.info('additional info')\n   * })\n   */\n  only(callback) {\n    callback();\n  }\n  createEntry(level, message) {\n    return {\n      timestamp: /* @__PURE__ */ new Date(),\n      level,\n      message\n    };\n  }\n  logEntry(args) {\n    const {\n      level,\n      message,\n      prefix,\n      colors: customColors,\n      positionals = []\n    } = args;\n    const entry = this.createEntry(level, message);\n    const timestampColor = customColors?.timestamp || \"gray\";\n    const prefixColor = customColors?.prefix || \"gray\";\n    const colorize = {\n      timestamp: colors_exports[timestampColor],\n      prefix: colors_exports[prefixColor]\n    };\n    const write = this.getWriter(level);\n    write(\n      [colorize.timestamp(this.formatTimestamp(entry.timestamp))].concat(prefix != null ? colorize.prefix(prefix) : []).concat(serializeInput(message)).join(\" \"),\n      ...positionals.map(serializeInput)\n    );\n  }\n  formatTimestamp(timestamp) {\n    return `${timestamp.toLocaleTimeString(\n      \"en-GB\"\n    )}:${timestamp.getMilliseconds()}`;\n  }\n  getWriter(level) {\n    switch (level) {\n      case \"debug\":\n      case \"success\":\n      case \"info\": {\n        return log;\n      }\n      case \"warning\": {\n        return warn;\n      }\n      case \"error\": {\n        return error;\n      }\n    }\n  }\n};\nvar PerformanceEntry = class {\n  startTime;\n  endTime;\n  deltaTime;\n  constructor() {\n    this.startTime = performance.now();\n  }\n  measure() {\n    this.endTime = performance.now();\n    const deltaTime = this.endTime - this.startTime;\n    this.deltaTime = deltaTime.toFixed(2);\n  }\n};\nvar noop = () => void 0;\nfunction log(message, ...positionals) {\n  if (IS_NODE) {\n    process.stdout.write(format(message, ...positionals) + \"\\n\");\n    return;\n  }\n  console.log(message, ...positionals);\n}\nfunction warn(message, ...positionals) {\n  if (IS_NODE) {\n    process.stderr.write(format(message, ...positionals) + \"\\n\");\n    return;\n  }\n  console.warn(message, ...positionals);\n}\nfunction error(message, ...positionals) {\n  if (IS_NODE) {\n    process.stderr.write(format(message, ...positionals) + \"\\n\");\n    return;\n  }\n  console.error(message, ...positionals);\n}\nfunction getVariable(variableName) {\n  if (IS_NODE) {\n    return process.env[variableName];\n  }\n  return globalThis[variableName]?.toString();\n}\nfunction isDefinedAndNotEquals(value, expected) {\n  return value !== void 0 && value !== expected;\n}\nfunction serializeInput(message) {\n  if (typeof message === \"undefined\") {\n    return \"undefined\";\n  }\n  if (message === null) {\n    return \"null\";\n  }\n  if (typeof message === \"string\") {\n    return message;\n  }\n  if (typeof message === \"object\") {\n    return JSON.stringify(message);\n  }\n  return message.toString();\n}\nexport {\n  Logger\n};\n","// src/MemoryLeakError.ts\nvar MemoryLeakError = class extends Error {\n  constructor(emitter, type, count) {\n    super(\n      `Possible EventEmitter memory leak detected. ${count} ${type.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`\n    );\n    this.emitter = emitter;\n    this.type = type;\n    this.count = count;\n    this.name = \"MaxListenersExceededWarning\";\n  }\n};\n\n// src/Emitter.ts\nvar _Emitter = class {\n  static listenerCount(emitter, eventName) {\n    return emitter.listenerCount(eventName);\n  }\n  constructor() {\n    this.events = /* @__PURE__ */ new Map();\n    this.maxListeners = _Emitter.defaultMaxListeners;\n    this.hasWarnedAboutPotentialMemoryLeak = false;\n  }\n  _emitInternalEvent(internalEventName, eventName, listener) {\n    this.emit(\n      internalEventName,\n      ...[eventName, listener]\n    );\n  }\n  _getListeners(eventName) {\n    return Array.prototype.concat.apply([], this.events.get(eventName)) || [];\n  }\n  _removeListener(listeners, listener) {\n    const index = listeners.indexOf(listener);\n    if (index > -1) {\n      listeners.splice(index, 1);\n    }\n    return [];\n  }\n  _wrapOnceListener(eventName, listener) {\n    const onceListener = (...data) => {\n      this.removeListener(eventName, onceListener);\n      return listener.apply(this, data);\n    };\n    Object.defineProperty(onceListener, \"name\", { value: listener.name });\n    return onceListener;\n  }\n  setMaxListeners(maxListeners) {\n    this.maxListeners = maxListeners;\n    return this;\n  }\n  /**\n   * Returns the current max listener value for the `Emitter` which is\n   * either set by `emitter.setMaxListeners(n)` or defaults to\n   * `Emitter.defaultMaxListeners`.\n   */\n  getMaxListeners() {\n    return this.maxListeners;\n  }\n  /**\n   * Returns an array listing the events for which the emitter has registered listeners.\n   * The values in the array will be strings or Symbols.\n   */\n  eventNames() {\n    return Array.from(this.events.keys());\n  }\n  /**\n   * Synchronously calls each of the listeners registered for the event named `eventName`,\n   * in the order they were registered, passing the supplied arguments to each.\n   * Returns `true` if the event has listeners, `false` otherwise.\n   *\n   * @example\n   * const emitter = new Emitter<{ hello: [string] }>()\n   * emitter.emit('hello', 'John')\n   */\n  emit(eventName, ...data) {\n    const listeners = this._getListeners(eventName);\n    listeners.forEach((listener) => {\n      listener.apply(this, data);\n    });\n    return listeners.length > 0;\n  }\n  addListener(eventName, listener) {\n    this._emitInternalEvent(\"newListener\", eventName, listener);\n    const nextListeners = this._getListeners(eventName).concat(listener);\n    this.events.set(eventName, nextListeners);\n    if (this.maxListeners > 0 && this.listenerCount(eventName) > this.maxListeners && !this.hasWarnedAboutPotentialMemoryLeak) {\n      this.hasWarnedAboutPotentialMemoryLeak = true;\n      const memoryLeakWarning = new MemoryLeakError(\n        this,\n        eventName,\n        this.listenerCount(eventName)\n      );\n      console.warn(memoryLeakWarning);\n    }\n    return this;\n  }\n  on(eventName, listener) {\n    return this.addListener(eventName, listener);\n  }\n  once(eventName, listener) {\n    return this.addListener(\n      eventName,\n      this._wrapOnceListener(eventName, listener)\n    );\n  }\n  prependListener(eventName, listener) {\n    const listeners = this._getListeners(eventName);\n    if (listeners.length > 0) {\n      const nextListeners = [listener].concat(listeners);\n      this.events.set(eventName, nextListeners);\n    } else {\n      this.events.set(eventName, listeners.concat(listener));\n    }\n    return this;\n  }\n  prependOnceListener(eventName, listener) {\n    return this.prependListener(\n      eventName,\n      this._wrapOnceListener(eventName, listener)\n    );\n  }\n  removeListener(eventName, listener) {\n    const listeners = this._getListeners(eventName);\n    if (listeners.length > 0) {\n      this._removeListener(listeners, listener);\n      this.events.set(eventName, listeners);\n      this._emitInternalEvent(\"removeListener\", eventName, listener);\n    }\n    return this;\n  }\n  /**\n   * Alias for `emitter.removeListener()`.\n   *\n   * @example\n   * emitter.off('hello', listener)\n   */\n  off(eventName, listener) {\n    return this.removeListener(eventName, listener);\n  }\n  removeAllListeners(eventName) {\n    if (eventName) {\n      this.events.delete(eventName);\n    } else {\n      this.events.clear();\n    }\n    return this;\n  }\n  /**\n   * Returns a copy of the array of listeners for the event named `eventName`.\n   */\n  listeners(eventName) {\n    return Array.from(this._getListeners(eventName));\n  }\n  /**\n   * Returns the number of listeners listening to the event named `eventName`.\n   */\n  listenerCount(eventName) {\n    return this._getListeners(eventName).length;\n  }\n  rawListeners(eventName) {\n    return this.listeners(eventName);\n  }\n};\nvar Emitter = _Emitter;\nEmitter.defaultMaxListeners = 10;\nexport {\n  Emitter,\n  MemoryLeakError\n};\n//# sourceMappingURL=index.mjs.map","import { Logger } from \"@open-draft/logger\";\nimport { Emitter } from \"strict-event-emitter\";\n\n//#region src/Interceptor.ts\n/**\n* Request header name to detect when a single request\n* is being handled by nested interceptors (XHR -> ClientRequest).\n* Obscure by design to prevent collisions with user-defined headers.\n* Ideally, come up with the Interceptor-level mechanism for this.\n* @see https://github.com/mswjs/interceptors/issues/378\n*/\nconst INTERNAL_REQUEST_ID_HEADER_NAME = \"x-interceptors-internal-request-id\";\nfunction getGlobalSymbol(symbol) {\n\treturn globalThis[symbol] || void 0;\n}\nfunction setGlobalSymbol(symbol, value) {\n\tglobalThis[symbol] = value;\n}\nfunction deleteGlobalSymbol(symbol) {\n\tdelete globalThis[symbol];\n}\nlet InterceptorReadyState = /* @__PURE__ */ function(InterceptorReadyState$1) {\n\tInterceptorReadyState$1[\"INACTIVE\"] = \"INACTIVE\";\n\tInterceptorReadyState$1[\"APPLYING\"] = \"APPLYING\";\n\tInterceptorReadyState$1[\"APPLIED\"] = \"APPLIED\";\n\tInterceptorReadyState$1[\"DISPOSING\"] = \"DISPOSING\";\n\tInterceptorReadyState$1[\"DISPOSED\"] = \"DISPOSED\";\n\treturn InterceptorReadyState$1;\n}({});\nvar Interceptor = class {\n\tconstructor(symbol) {\n\t\tthis.symbol = symbol;\n\t\tthis.readyState = InterceptorReadyState.INACTIVE;\n\t\tthis.emitter = new Emitter();\n\t\tthis.subscriptions = [];\n\t\tthis.logger = new Logger(symbol.description);\n\t\tthis.emitter.setMaxListeners(0);\n\t\tthis.logger.info(\"constructing the interceptor...\");\n\t}\n\t/**\n\t* Determine if this interceptor can be applied\n\t* in the current environment.\n\t*/\n\tcheckEnvironment() {\n\t\treturn true;\n\t}\n\t/**\n\t* Apply this interceptor to the current process.\n\t* Returns an already running interceptor instance if it's present.\n\t*/\n\tapply() {\n\t\tconst logger = this.logger.extend(\"apply\");\n\t\tlogger.info(\"applying the interceptor...\");\n\t\tif (this.readyState === InterceptorReadyState.APPLIED) {\n\t\t\tlogger.info(\"intercepted already applied!\");\n\t\t\treturn;\n\t\t}\n\t\tif (!this.checkEnvironment()) {\n\t\t\tlogger.info(\"the interceptor cannot be applied in this environment!\");\n\t\t\treturn;\n\t\t}\n\t\tthis.readyState = InterceptorReadyState.APPLYING;\n\t\tconst runningInstance = this.getInstance();\n\t\tif (runningInstance) {\n\t\t\tlogger.info(\"found a running instance, reusing...\");\n\t\t\tthis.on = (event, listener) => {\n\t\t\t\tlogger.info(\"proxying the \\\"%s\\\" listener\", event);\n\t\t\t\trunningInstance.emitter.addListener(event, listener);\n\t\t\t\tthis.subscriptions.push(() => {\n\t\t\t\t\trunningInstance.emitter.removeListener(event, listener);\n\t\t\t\t\tlogger.info(\"removed proxied \\\"%s\\\" listener!\", event);\n\t\t\t\t});\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tthis.readyState = InterceptorReadyState.APPLIED;\n\t\t\treturn;\n\t\t}\n\t\tlogger.info(\"no running instance found, setting up a new instance...\");\n\t\tthis.setup();\n\t\tthis.setInstance();\n\t\tthis.readyState = InterceptorReadyState.APPLIED;\n\t}\n\t/**\n\t* Setup the module augments and stubs necessary for this interceptor.\n\t* This method is not run if there's a running interceptor instance\n\t* to prevent instantiating an interceptor multiple times.\n\t*/\n\tsetup() {}\n\t/**\n\t* Listen to the interceptor's public events.\n\t*/\n\ton(event, listener) {\n\t\tconst logger = this.logger.extend(\"on\");\n\t\tif (this.readyState === InterceptorReadyState.DISPOSING || this.readyState === InterceptorReadyState.DISPOSED) {\n\t\t\tlogger.info(\"cannot listen to events, already disposed!\");\n\t\t\treturn this;\n\t\t}\n\t\tlogger.info(\"adding \\\"%s\\\" event listener:\", event, listener);\n\t\tthis.emitter.on(event, listener);\n\t\treturn this;\n\t}\n\tonce(event, listener) {\n\t\tthis.emitter.once(event, listener);\n\t\treturn this;\n\t}\n\toff(event, listener) {\n\t\tthis.emitter.off(event, listener);\n\t\treturn this;\n\t}\n\tremoveAllListeners(event) {\n\t\tthis.emitter.removeAllListeners(event);\n\t\treturn this;\n\t}\n\t/**\n\t* Disposes of any side-effects this interceptor has introduced.\n\t*/\n\tdispose() {\n\t\tconst logger = this.logger.extend(\"dispose\");\n\t\tif (this.readyState === InterceptorReadyState.DISPOSED) {\n\t\t\tlogger.info(\"cannot dispose, already disposed!\");\n\t\t\treturn;\n\t\t}\n\t\tlogger.info(\"disposing the interceptor...\");\n\t\tthis.readyState = InterceptorReadyState.DISPOSING;\n\t\tif (!this.getInstance()) {\n\t\t\tlogger.info(\"no interceptors running, skipping dispose...\");\n\t\t\treturn;\n\t\t}\n\t\tthis.clearInstance();\n\t\tlogger.info(\"global symbol deleted:\", getGlobalSymbol(this.symbol));\n\t\tif (this.subscriptions.length > 0) {\n\t\t\tlogger.info(\"disposing of %d subscriptions...\", this.subscriptions.length);\n\t\t\tfor (const dispose of this.subscriptions) dispose();\n\t\t\tthis.subscriptions = [];\n\t\t\tlogger.info(\"disposed of all subscriptions!\", this.subscriptions.length);\n\t\t}\n\t\tthis.emitter.removeAllListeners();\n\t\tlogger.info(\"destroyed the listener!\");\n\t\tthis.readyState = InterceptorReadyState.DISPOSED;\n\t}\n\tgetInstance() {\n\t\tconst instance = getGlobalSymbol(this.symbol);\n\t\tthis.logger.info(\"retrieved global instance:\", instance?.constructor?.name);\n\t\treturn instance;\n\t}\n\tsetInstance() {\n\t\tsetGlobalSymbol(this.symbol, this);\n\t\tthis.logger.info(\"set global instance!\", this.symbol.description);\n\t}\n\tclearInstance() {\n\t\tdeleteGlobalSymbol(this.symbol);\n\t\tthis.logger.info(\"cleared global instance!\", this.symbol.description);\n\t}\n};\n\n//#endregion\n//#region src/createRequestId.ts\n/**\n* Generate a random ID string to represent a request.\n* @example\n* createRequestId()\n* // \"f774b6c9c600f\"\n*/\nfunction createRequestId() {\n\treturn Math.random().toString(16).slice(2);\n}\n\n//#endregion\nexport { deleteGlobalSymbol as a, InterceptorReadyState as i, INTERNAL_REQUEST_ID_HEADER_NAME as n, getGlobalSymbol as o, Interceptor as r, createRequestId as t };\n//# sourceMappingURL=createRequestId-DYCsFHOi.mjs.map","// src/createDeferredExecutor.ts\nfunction createDeferredExecutor() {\n  const executor = (resolve, reject) => {\n    executor.state = \"pending\";\n    executor.resolve = (data) => {\n      if (executor.state !== \"pending\") {\n        return;\n      }\n      executor.result = data;\n      const onFulfilled = (value) => {\n        executor.state = \"fulfilled\";\n        return value;\n      };\n      return resolve(\n        data instanceof Promise ? data : Promise.resolve(data).then(onFulfilled)\n      );\n    };\n    executor.reject = (reason) => {\n      if (executor.state !== \"pending\") {\n        return;\n      }\n      queueMicrotask(() => {\n        executor.state = \"rejected\";\n      });\n      return reject(executor.rejectionReason = reason);\n    };\n  };\n  return executor;\n}\n\n// src/DeferredPromise.ts\nvar DeferredPromise = class extends Promise {\n  #executor;\n  resolve;\n  reject;\n  constructor(executor = null) {\n    const deferredExecutor = createDeferredExecutor();\n    super((originalResolve, originalReject) => {\n      deferredExecutor(originalResolve, originalReject);\n      executor?.(deferredExecutor.resolve, deferredExecutor.reject);\n    });\n    this.#executor = deferredExecutor;\n    this.resolve = this.#executor.resolve;\n    this.reject = this.#executor.reject;\n  }\n  get state() {\n    return this.#executor.state;\n  }\n  get rejectionReason() {\n    return this.#executor.rejectionReason;\n  }\n  then(onFulfilled, onRejected) {\n    return this.#decorate(super.then(onFulfilled, onRejected));\n  }\n  catch(onRejected) {\n    return this.#decorate(super.catch(onRejected));\n  }\n  finally(onfinally) {\n    return this.#decorate(super.finally(onfinally));\n  }\n  #decorate(promise) {\n    return Object.defineProperties(promise, {\n      resolve: { configurable: true, value: this.resolve },\n      reject: { configurable: true, value: this.reject }\n    });\n  }\n};\nexport {\n  DeferredPromise,\n  createDeferredExecutor\n};\n//# sourceMappingURL=index.mjs.map","import { DeferredPromise } from \"@open-draft/deferred-promise\";\nimport { invariant } from \"outvariant\";\n\n//#region src/InterceptorError.ts\nvar InterceptorError = class InterceptorError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"InterceptorError\";\n\t\tObject.setPrototypeOf(this, InterceptorError.prototype);\n\t}\n};\n\n//#endregion\n//#region src/RequestController.ts\nvar RequestController = class RequestController {\n\tstatic {\n\t\tthis.PENDING = 0;\n\t}\n\tstatic {\n\t\tthis.PASSTHROUGH = 1;\n\t}\n\tstatic {\n\t\tthis.RESPONSE = 2;\n\t}\n\tstatic {\n\t\tthis.ERROR = 3;\n\t}\n\tconstructor(request, source) {\n\t\tthis.request = request;\n\t\tthis.source = source;\n\t\tthis.readyState = RequestController.PENDING;\n\t\tthis.handled = new DeferredPromise();\n\t}\n\tget #handled() {\n\t\treturn this.handled;\n\t}\n\t/**\n\t* Perform this request as-is.\n\t*/\n\tasync passthrough() {\n\t\tinvariant.as(InterceptorError, this.readyState === RequestController.PENDING, \"Failed to passthrough the \\\"%s %s\\\" request: the request has already been handled\", this.request.method, this.request.url);\n\t\tthis.readyState = RequestController.PASSTHROUGH;\n\t\tawait this.source.passthrough();\n\t\tthis.#handled.resolve();\n\t}\n\t/**\n\t* Respond to this request with the given `Response` instance.\n\t*\n\t* @example\n\t* controller.respondWith(new Response())\n\t* controller.respondWith(Response.json({ id }))\n\t* controller.respondWith(Response.error())\n\t*/\n\trespondWith(response) {\n\t\tinvariant.as(InterceptorError, this.readyState === RequestController.PENDING, \"Failed to respond to the \\\"%s %s\\\" request with \\\"%d %s\\\": the request has already been handled (%d)\", this.request.method, this.request.url, response.status, response.statusText || \"OK\", this.readyState);\n\t\tthis.readyState = RequestController.RESPONSE;\n\t\tthis.#handled.resolve();\n\t\t/**\n\t\t* @note Although `source.respondWith()` is potentially asynchronous,\n\t\t* do NOT await it for backward-compatibility. Awaiting it will short-circuit\n\t\t* the request listener invocation as soon as a listener responds to a request.\n\t\t* Ideally, that's what we want, but that's not what we promise the user.\n\t\t*/\n\t\tthis.source.respondWith(response);\n\t}\n\t/**\n\t* Error this request with the given reason.\n\t*\n\t* @example\n\t* controller.errorWith()\n\t* controller.errorWith(new Error('Oops!'))\n\t* controller.errorWith({ message: 'Oops!'})\n\t*/\n\terrorWith(reason) {\n\t\tinvariant.as(InterceptorError, this.readyState === RequestController.PENDING, \"Failed to error the \\\"%s %s\\\" request with \\\"%s\\\": the request has already been handled (%d)\", this.request.method, this.request.url, reason?.toString(), this.readyState);\n\t\tthis.readyState = RequestController.ERROR;\n\t\tthis.source.errorWith(reason);\n\t\tthis.#handled.resolve();\n\t}\n};\n\n//#endregion\n//#region src/utils/canParseUrl.ts\n/**\n* Returns a boolean indicating whether the given URL string\n* can be parsed into a `URL` instance.\n* A substitute for `URL.canParse()` for Node.js 18.\n*/\nfunction canParseUrl(url) {\n\ttry {\n\t\tnew URL(url);\n\t\treturn true;\n\t} catch (_error) {\n\t\treturn false;\n\t}\n}\n\n//#endregion\n//#region src/utils/getValueBySymbol.ts\n/**\n* Returns the value behind the symbol with the given name.\n*/\nfunction getValueBySymbol(symbolName, source) {\n\tconst symbol = Object.getOwnPropertySymbols(source).find((symbol$1) => {\n\t\treturn symbol$1.description === symbolName;\n\t});\n\tif (symbol) return Reflect.get(source, symbol);\n}\n\n//#endregion\n//#region src/utils/fetchUtils.ts\nvar FetchRequest = class FetchRequest extends Request {\n\tstatic #resolveProperty(input, init = {}, key) {\n\t\treturn init[key] ?? (input instanceof Request ? input[key] : void 0);\n\t}\n\t/**\n\t* Check if the given request method is configurable.\n\t* @see https://fetch.spec.whatwg.org/#methods\n\t*/\n\tstatic isConfigurableMethod(method) {\n\t\treturn method !== \"CONNECT\" && method !== \"TRACE\" && method !== \"TRACK\";\n\t}\n\tstatic isMethodWithBody(method) {\n\t\treturn method !== \"HEAD\" && method !== \"GET\" && FetchRequest.isConfigurableMethod(method);\n\t}\n\t/**\n\t* Check if the given request `mode` is configurable.\n\t* @see https://fetch.spec.whatwg.org/#concept-request-mode\n\t*/\n\tstatic isConfigurableMode(mode) {\n\t\treturn mode !== \"navigate\" && mode !== \"websocket\" && mode !== \"webtransport\";\n\t}\n\tconstructor(input, init) {\n\t\tconst method = FetchRequest.#resolveProperty(input, init, \"method\") || \"GET\";\n\t\tconst safeMethod = FetchRequest.isConfigurableMethod(method) ? method : \"GET\";\n\t\tconst hasExplicitBody = init != null && \"body\" in init;\n\t\t/**\n\t\t* Only include `body` in the super init when it needs to be overridden.\n\t\t* When `input` is a Request and no explicit body is in `init`, let the\n\t\t* Request constructor handle body transfer naturally so it properly\n\t\t* marks the original request's body as consumed (bodyUsed = true).\n\t\t*/\n\t\tconst bodyInit = !FetchRequest.isMethodWithBody(method) ? { body: void 0 } : hasExplicitBody ? { body: init.body } : {};\n\t\tconst mode = FetchRequest.#resolveProperty(input, init, \"mode\") ?? void 0;\n\t\tconst safeMode = FetchRequest.isConfigurableMode(mode) ? mode : void 0;\n\t\tsuper(input, {\n\t\t\t...init || {},\n\t\t\tmethod: safeMethod,\n\t\t\tmode: safeMode,\n\t\t\tduplex: init?.duplex ?? (FetchRequest.isMethodWithBody(method) ? \"half\" : void 0),\n\t\t\t...bodyInit\n\t\t});\n\t\tif (method !== safeMethod) this.#setInternalProperty(\"method\", method);\n\t\tif (method === \"CONNECT\") {\n\t\t\tconst url = new URL(input instanceof Request ? input.url : input);\n\t\t\tlet authority;\n\t\t\t/**\n\t\t\t* @note Node.js has a bug parsing raw CONNECT requests URLs like\n\t\t\t* \"http://127.0.0.1:1337/localhost:80\". It would treat \"localhost:\" as a protocol.\n\t\t\t*/\n\t\t\tif (url.protocol === \"localhost:\") authority = url.href;\n\t\t\telse authority = url.pathname.replace(/^\\/+/, \"\");\n\t\t\t/**\n\t\t\t* @note Define \"url\" as a getter because Undici uses their own\n\t\t\t* logic to resolve the \"request.url\" property. Simply reassigning\n\t\t\t* its value doesn't do anything. This is a destructive action\n\t\t\t* but it's safe because \"CONNECT\" requests are forbidden per fetch.\n\t\t\t*/\n\t\t\tObject.defineProperty(this, \"url\", {\n\t\t\t\tget: () => authority,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\t\t}\n\t\tif (mode != null && mode !== safeMode) this.#setInternalProperty(\"mode\", mode);\n\t}\n\t#setInternalProperty(key, value) {\n\t\tconst internalState = getValueBySymbol(\"state\", this);\n\t\tif (internalState) Reflect.set(internalState, key, value);\n\t\telse Object.defineProperty(this, key, {\n\t\t\tvalue,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: false\n\t\t});\n\t}\n};\nconst kStatus = Symbol(\"kStatus\");\nconst kUrl = Symbol(\"kUrl\");\nvar FetchResponse = class FetchResponse extends Response {\n\tstatic {\n\t\tthis.STATUS_CODES_WITHOUT_BODY = [\n\t\t\t101,\n\t\t\t103,\n\t\t\t204,\n\t\t\t205,\n\t\t\t304\n\t\t];\n\t}\n\tstatic {\n\t\tthis.STATUS_CODES_WITH_REDIRECT = [\n\t\t\t301,\n\t\t\t302,\n\t\t\t303,\n\t\t\t307,\n\t\t\t308\n\t\t];\n\t}\n\tstatic isConfigurableStatusCode(status) {\n\t\treturn status >= 200 && status <= 599;\n\t}\n\tstatic isRedirectResponse(status) {\n\t\treturn FetchResponse.STATUS_CODES_WITH_REDIRECT.includes(status);\n\t}\n\t/**\n\t* Returns a boolean indicating whether the given response status\n\t* code represents a response that can have a body.\n\t*/\n\tstatic isResponseWithBody(status) {\n\t\treturn !FetchResponse.STATUS_CODES_WITHOUT_BODY.includes(status);\n\t}\n\tstatic setStatus(status, response) {\n\t\t/**\n\t\t* @note Undici keeps an internal \"Symbol(state)\" that holds\n\t\t* the actual value of response status. Update that in Node.js.\n\t\t*/\n\t\tconst internalState = getValueBySymbol(\"state\", response);\n\t\tif (internalState) internalState.status = status;\n\t\telse Object.defineProperty(response, \"status\", {\n\t\t\tvalue: status,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: false\n\t\t});\n\t\tObject.defineProperty(response, kStatus, {\n\t\t\tvalue: status,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\tstatic setUrl(url, response) {\n\t\tif (!url || url === \"about:\" || !canParseUrl(url)) return;\n\t\tconst state = getValueBySymbol(\"state\", response);\n\t\tif (state) state.urlList.push(new URL(url));\n\t\telse Object.defineProperty(response, \"url\", {\n\t\t\tvalue: url,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: false\n\t\t});\n\t\tObject.defineProperty(response, kUrl, {\n\t\t\tvalue: url,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\t/**\n\t* Parses the given raw HTTP headers into a Fetch API `Headers` instance.\n\t*/\n\tstatic parseRawHeaders(rawHeaders) {\n\t\tconst headers = new Headers();\n\t\tfor (let line = 0; line < rawHeaders.length; line += 2) headers.append(rawHeaders[line], rawHeaders[line + 1]);\n\t\treturn headers;\n\t}\n\t/**\n\t* Safely clones the given `Response`.\n\t* Coerces response clone exceptions into 500 mocked responses.\n\t* Handy in the environments that introduce arbitrary response\n\t* cloning restrictions, like \"101 Switching Protocols\" cloning\n\t* in \"miniflare\".\n\t*/\n\tstatic clone(response) {\n\t\ttry {\n\t\t\treturn response.clone();\n\t\t} catch (error) {\n\t\t\treturn Response.json(error instanceof Error ? {\n\t\t\t\tname: error.name,\n\t\t\t\tmessage: error.message,\n\t\t\t\tstack: error.stack\n\t\t\t} : {}, {\n\t\t\t\tstatus: 500,\n\t\t\t\tstatusText: \"Unclonable Response\"\n\t\t\t});\n\t\t}\n\t}\n\tconstructor(body, init = {}) {\n\t\tconst status = init.status ?? 200;\n\t\tconst safeStatus = FetchResponse.isConfigurableStatusCode(status) ? status : 200;\n\t\tconst finalBody = FetchResponse.isResponseWithBody(status) ? body : null;\n\t\tsuper(finalBody, {\n\t\t\tstatus: safeStatus,\n\t\t\tstatusText: init.statusText,\n\t\t\theaders: init.headers\n\t\t});\n\t\t/**\n\t\t* Since Node.js v24, Undici stores the Response state in an inaccessible field \"#state\".\n\t\t* Forward the modified status/URL to the cloned response manually.\n\t\t* @see https://github.com/nodejs/undici/blob/f734c87280e626c75f59aad55b65eb6a89cef392/lib/web/fetch/response.js#L242\n\t\t*/\n\t\tif (status !== safeStatus) FetchResponse.setStatus(status, this);\n\t\tFetchResponse.setUrl(init.url, this);\n\t}\n\tclone() {\n\t\tconst clonedResponse = super.clone();\n\t\tconst customStatus = Reflect.get(this, kStatus);\n\t\tif (customStatus) FetchResponse.setStatus(customStatus, clonedResponse);\n\t\tconst customUrl = Reflect.get(this, kUrl);\n\t\tif (customUrl) FetchResponse.setUrl(customUrl, clonedResponse);\n\t\treturn clonedResponse;\n\t}\n};\n\n//#endregion\n//#region src/getRawRequest.ts\nconst kRawRequest = Symbol(\"kRawRequest\");\n/**\n* Returns a raw request instance associated with this request.\n*\n* @example\n* interceptor.on('request', ({ request }) => {\n*   const rawRequest = getRawRequest(request)\n*\n*   if (rawRequest instanceof http.ClientRequest) {\n*     console.log(rawRequest.rawHeaders)\n*   }\n* })\n*/\nfunction getRawRequest(request) {\n\treturn Reflect.get(request, kRawRequest);\n}\nfunction setRawRequest(request, rawRequest) {\n\tReflect.set(request, kRawRequest, rawRequest);\n}\n\n//#endregion\nexport { canParseUrl as a, FetchResponse as i, setRawRequest as n, RequestController as o, FetchRequest as r, InterceptorError as s, getRawRequest as t };\n//# sourceMappingURL=getRawRequest-B1BqgWG6.mjs.map","//#region src/utils/bufferUtils.ts\nconst encoder = new TextEncoder();\nfunction encodeBuffer(text) {\n\treturn encoder.encode(text);\n}\nfunction decodeBuffer(buffer, encoding) {\n\treturn new TextDecoder(encoding).decode(buffer);\n}\n/**\n* Create an `ArrayBuffer` from the given `Uint8Array`.\n* Takes the byte offset into account to produce the right buffer\n* in the case when the buffer is bigger than the data view.\n*/\nfunction toArrayBuffer(array) {\n\treturn array.buffer.slice(array.byteOffset, array.byteOffset + array.byteLength);\n}\n\n//#endregion\nexport { encodeBuffer as n, toArrayBuffer as r, decodeBuffer as t };\n//# sourceMappingURL=bufferUtils-BiiO6HZv.mjs.map","//#region src/utils/resolveWebSocketUrl.ts\n/**\n* Resolve potentially relative WebSocket URLs the same way\n* the browser does (replace the protocol, use the origin, etc).\n*\n* @see https://websockets.spec.whatwg.org//#dom-websocket-websocket\n*/\nfunction resolveWebSocketUrl(url) {\n\tif (typeof url === \"string\") return resolveWebSocketUrl(new URL(url, typeof location !== \"undefined\" ? location.href : void 0));\n\tif (url.protocol === \"http:\") url.protocol = \"ws:\";\n\telse if (url.protocol === \"https:\") url.protocol = \"wss:\";\n\tif (url.protocol !== \"ws:\" && url.protocol !== \"wss:\")\n /**\n\t* @note These errors are modeled after the browser errors.\n\t* The exact error messages aren't provided in the specification.\n\t* Node.js uses more obscure error messages that I don't wish to replicate.\n\t*/\n\tthrow new SyntaxError(`Failed to construct 'WebSocket': The URL's scheme must be either 'http', 'https', 'ws', or 'wss'. '${url.protocol}' is not allowed.`);\n\tif (url.hash !== \"\") throw new SyntaxError(`Failed to construct 'WebSocket': The URL contains a fragment identifier ('${url.hash}'). Fragment identifiers are not allowed in WebSocket URLs.`);\n\treturn url.href;\n}\n\n//#endregion\nexport { resolveWebSocketUrl as t };\n//# sourceMappingURL=resolveWebSocketUrl-C83-x9iE.mjs.map","import { a as deleteGlobalSymbol, i as InterceptorReadyState, n as INTERNAL_REQUEST_ID_HEADER_NAME, o as getGlobalSymbol, r as Interceptor, t as createRequestId } from \"./createRequestId-DYCsFHOi.mjs\";\nimport { i as FetchResponse, o as RequestController, r as FetchRequest, t as getRawRequest } from \"./getRawRequest-B1BqgWG6.mjs\";\nimport { n as encodeBuffer, t as decodeBuffer } from \"./bufferUtils-BiiO6HZv.mjs\";\nimport { t as resolveWebSocketUrl } from \"./resolveWebSocketUrl-C83-x9iE.mjs\";\n\n//#region src/BatchInterceptor.ts\n/**\n* A batch interceptor that exposes a single interface\n* to apply and operate with multiple interceptors at once.\n*/\nvar BatchInterceptor = class BatchInterceptor extends Interceptor {\n\tconstructor(options) {\n\t\tBatchInterceptor.symbol = Symbol.for(options.name);\n\t\tsuper(BatchInterceptor.symbol);\n\t\tthis.interceptors = options.interceptors;\n\t}\n\tsetup() {\n\t\tconst logger = this.logger.extend(\"setup\");\n\t\tlogger.info(\"applying all %d interceptors...\", this.interceptors.length);\n\t\tfor (const interceptor of this.interceptors) {\n\t\t\tlogger.info(\"applying \\\"%s\\\" interceptor...\", interceptor.constructor.name);\n\t\t\tinterceptor.apply();\n\t\t\tlogger.info(\"adding interceptor dispose subscription\");\n\t\t\tthis.subscriptions.push(() => interceptor.dispose());\n\t\t}\n\t}\n\ton(event, listener) {\n\t\tfor (const interceptor of this.interceptors) interceptor.on(event, listener);\n\t\treturn this;\n\t}\n\tonce(event, listener) {\n\t\tfor (const interceptor of this.interceptors) interceptor.once(event, listener);\n\t\treturn this;\n\t}\n\toff(event, listener) {\n\t\tfor (const interceptor of this.interceptors) interceptor.off(event, listener);\n\t\treturn this;\n\t}\n\tremoveAllListeners(event) {\n\t\tfor (const interceptors of this.interceptors) interceptors.removeAllListeners(event);\n\t\treturn this;\n\t}\n};\n\n//#endregion\n//#region src/utils/getCleanUrl.ts\n/**\n* Removes query parameters and hashes from a given URL.\n*/\nfunction getCleanUrl(url, isAbsolute = true) {\n\treturn [isAbsolute && url.origin, url.pathname].filter(Boolean).join(\"\");\n}\n\n//#endregion\nexport { BatchInterceptor, FetchRequest, FetchResponse, INTERNAL_REQUEST_ID_HEADER_NAME, Interceptor, InterceptorReadyState, RequestController, createRequestId, decodeBuffer, deleteGlobalSymbol, encodeBuffer, getCleanUrl, getGlobalSymbol, getRawRequest, resolveWebSocketUrl };\n//# sourceMappingURL=index.mjs.map","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function __require() {\n  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n  // If the importer is in node compatibility mode or this is not an ESM\n  // file that has been converted to a CommonJS file using a Babel-\n  // compatible transform (i.e. \"__esModule\" has not been set), then set\n  // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n  isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n  mod\n));\n\n// node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/codes.json\nvar require_codes = __commonJS({\n  \"node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/codes.json\"(exports, module) {\n    module.exports = {\n      \"100\": \"Continue\",\n      \"101\": \"Switching Protocols\",\n      \"102\": \"Processing\",\n      \"103\": \"Early Hints\",\n      \"200\": \"OK\",\n      \"201\": \"Created\",\n      \"202\": \"Accepted\",\n      \"203\": \"Non-Authoritative Information\",\n      \"204\": \"No Content\",\n      \"205\": \"Reset Content\",\n      \"206\": \"Partial Content\",\n      \"207\": \"Multi-Status\",\n      \"208\": \"Already Reported\",\n      \"226\": \"IM Used\",\n      \"300\": \"Multiple Choices\",\n      \"301\": \"Moved Permanently\",\n      \"302\": \"Found\",\n      \"303\": \"See Other\",\n      \"304\": \"Not Modified\",\n      \"305\": \"Use Proxy\",\n      \"307\": \"Temporary Redirect\",\n      \"308\": \"Permanent Redirect\",\n      \"400\": \"Bad Request\",\n      \"401\": \"Unauthorized\",\n      \"402\": \"Payment Required\",\n      \"403\": \"Forbidden\",\n      \"404\": \"Not Found\",\n      \"405\": \"Method Not Allowed\",\n      \"406\": \"Not Acceptable\",\n      \"407\": \"Proxy Authentication Required\",\n      \"408\": \"Request Timeout\",\n      \"409\": \"Conflict\",\n      \"410\": \"Gone\",\n      \"411\": \"Length Required\",\n      \"412\": \"Precondition Failed\",\n      \"413\": \"Payload Too Large\",\n      \"414\": \"URI Too Long\",\n      \"415\": \"Unsupported Media Type\",\n      \"416\": \"Range Not Satisfiable\",\n      \"417\": \"Expectation Failed\",\n      \"418\": \"I'm a Teapot\",\n      \"421\": \"Misdirected Request\",\n      \"422\": \"Unprocessable Entity\",\n      \"423\": \"Locked\",\n      \"424\": \"Failed Dependency\",\n      \"425\": \"Too Early\",\n      \"426\": \"Upgrade Required\",\n      \"428\": \"Precondition Required\",\n      \"429\": \"Too Many Requests\",\n      \"431\": \"Request Header Fields Too Large\",\n      \"451\": \"Unavailable For Legal Reasons\",\n      \"500\": \"Internal Server Error\",\n      \"501\": \"Not Implemented\",\n      \"502\": \"Bad Gateway\",\n      \"503\": \"Service Unavailable\",\n      \"504\": \"Gateway Timeout\",\n      \"505\": \"HTTP Version Not Supported\",\n      \"506\": \"Variant Also Negotiates\",\n      \"507\": \"Insufficient Storage\",\n      \"508\": \"Loop Detected\",\n      \"509\": \"Bandwidth Limit Exceeded\",\n      \"510\": \"Not Extended\",\n      \"511\": \"Network Authentication Required\"\n    };\n  }\n});\n\n// node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/index.js\nvar require_statuses = __commonJS({\n  \"node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/index.js\"(exports, module) {\n    \"use strict\";\n    var codes = require_codes();\n    module.exports = status;\n    status.message = codes;\n    status.code = createMessageToStatusCodeMap(codes);\n    status.codes = createStatusCodeList(codes);\n    status.redirect = {\n      300: true,\n      301: true,\n      302: true,\n      303: true,\n      305: true,\n      307: true,\n      308: true\n    };\n    status.empty = {\n      204: true,\n      205: true,\n      304: true\n    };\n    status.retry = {\n      502: true,\n      503: true,\n      504: true\n    };\n    function createMessageToStatusCodeMap(codes2) {\n      var map = {};\n      Object.keys(codes2).forEach(function forEachCode(code) {\n        var message2 = codes2[code];\n        var status2 = Number(code);\n        map[message2.toLowerCase()] = status2;\n      });\n      return map;\n    }\n    function createStatusCodeList(codes2) {\n      return Object.keys(codes2).map(function mapCode(code) {\n        return Number(code);\n      });\n    }\n    function getStatusCode(message2) {\n      var msg = message2.toLowerCase();\n      if (!Object.prototype.hasOwnProperty.call(status.code, msg)) {\n        throw new Error('invalid status message: \"' + message2 + '\"');\n      }\n      return status.code[msg];\n    }\n    function getStatusMessage(code) {\n      if (!Object.prototype.hasOwnProperty.call(status.message, code)) {\n        throw new Error(\"invalid status code: \" + code);\n      }\n      return status.message[code];\n    }\n    function status(code) {\n      if (typeof code === \"number\") {\n        return getStatusMessage(code);\n      }\n      if (typeof code !== \"string\") {\n        throw new TypeError(\"code must be a number or string\");\n      }\n      var n = parseInt(code, 10);\n      if (!isNaN(n)) {\n        return getStatusMessage(n);\n      }\n      return getStatusCode(code);\n    }\n  }\n});\n\n// src/shims/statuses.ts\nvar allStatuses = __toESM(require_statuses(), 1);\nvar statuses = allStatuses.default || allStatuses;\nvar message = statuses.message;\nvar statuses_default = statuses;\nexport {\n  statuses_default as default,\n  message\n};\n/*! Bundled license information:\n\nstatuses/index.js:\n  (*!\n   * statuses\n   * Copyright(c) 2014 Jonathan Ong\n   * Copyright(c) 2016 Douglas Christopher Wilson\n   * MIT Licensed\n   *)\n*/\n","import statuses from '../../../shims/statuses.mjs';\nconst { message } = statuses;\nconst kSetCookie = /* @__PURE__ */ Symbol(\"kSetCookie\");\nfunction normalizeResponseInit(init = {}) {\n  const status = init?.status || 200;\n  const statusText = init?.statusText || message[status] || \"\";\n  const headers = new Headers(init?.headers);\n  return {\n    ...init,\n    headers,\n    status,\n    statusText\n  };\n}\nfunction decorateResponse(response, init) {\n  if (init.type) {\n    Object.defineProperty(response, \"type\", {\n      value: init.type,\n      enumerable: true,\n      writable: false\n    });\n  }\n  const responseCookies = init.headers.get(\"set-cookie\");\n  if (responseCookies) {\n    Object.defineProperty(response, kSetCookie, {\n      value: responseCookies,\n      enumerable: false,\n      writable: false\n    });\n  }\n  return response;\n}\nfunction getRawSetCookie(response) {\n  return Reflect.get(response, kSetCookie);\n}\nfunction copyResponseOwnProperties(source, target) {\n  for (const propertyName of Reflect.ownKeys(source)) {\n    const descriptor = Object.getOwnPropertyDescriptor(source, propertyName);\n    const existingDescriptor = Object.getOwnPropertyDescriptor(\n      target,\n      propertyName\n    );\n    if (descriptor && existingDescriptor == null) {\n      Object.defineProperty(target, propertyName, descriptor);\n    }\n  }\n}\nexport {\n  copyResponseOwnProperties,\n  decorateResponse,\n  getRawSetCookie,\n  normalizeResponseInit\n};\n//# sourceMappingURL=decorators.mjs.map","import { FetchResponse } from \"@mswjs/interceptors\";\nimport {\n  decorateResponse,\n  normalizeResponseInit\n} from './utils/HttpResponse/decorators.mjs';\nconst bodyType = /* @__PURE__ */ Symbol(\"bodyType\");\nconst kDefaultContentType = /* @__PURE__ */ Symbol.for(\"kDefaultContentType\");\nclass HttpResponse extends FetchResponse {\n  [bodyType] = null;\n  constructor(body, init) {\n    const responseInit = normalizeResponseInit(init);\n    super(body, responseInit);\n    decorateResponse(this, responseInit);\n  }\n  static error() {\n    return super.error();\n  }\n  /**\n   * Create a `Response` with a `Content-Type: \"text/plain\"` body.\n   * @example\n   * HttpResponse.text('hello world')\n   * HttpResponse.text('Error', { status: 500 })\n   */\n  static text(body, init) {\n    const responseInit = normalizeResponseInit(init);\n    const hasExplicitContentType = responseInit.headers.has(\"Content-Type\");\n    if (!hasExplicitContentType) {\n      responseInit.headers.set(\"Content-Type\", \"text/plain\");\n    }\n    if (!responseInit.headers.has(\"Content-Length\")) {\n      responseInit.headers.set(\n        \"Content-Length\",\n        body ? new Blob([body]).size.toString() : \"0\"\n      );\n    }\n    const response = new HttpResponse(body, responseInit);\n    if (!hasExplicitContentType) {\n      Object.defineProperty(response, kDefaultContentType, {\n        value: true,\n        enumerable: false\n      });\n    }\n    return response;\n  }\n  /**\n   * Create a `Response` with a `Content-Type: \"application/json\"` body.\n   * @example\n   * HttpResponse.json({ firstName: 'John' })\n   * HttpResponse.json({ error: 'Not Authorized' }, { status: 401 })\n   */\n  static json(body, init) {\n    const responseInit = normalizeResponseInit(init);\n    const hasExplicitContentType = responseInit.headers.has(\"Content-Type\");\n    if (!hasExplicitContentType) {\n      responseInit.headers.set(\"Content-Type\", \"application/json\");\n    }\n    const responseText = JSON.stringify(body);\n    if (!responseInit.headers.has(\"Content-Length\")) {\n      responseInit.headers.set(\n        \"Content-Length\",\n        responseText ? new Blob([responseText]).size.toString() : \"0\"\n      );\n    }\n    const response = new HttpResponse(responseText, responseInit);\n    if (!hasExplicitContentType) {\n      Object.defineProperty(response, kDefaultContentType, {\n        value: true,\n        enumerable: false\n      });\n    }\n    return response;\n  }\n  /**\n   * Create a `Response` with a `Content-Type: \"application/xml\"` body.\n   * @example\n   * HttpResponse.xml(`<user name=\"John\" />`)\n   * HttpResponse.xml(`<article id=\"abc-123\" />`, { status: 201 })\n   */\n  static xml(body, init) {\n    const responseInit = normalizeResponseInit(init);\n    const hasExplicitContentType = responseInit.headers.has(\"Content-Type\");\n    if (!hasExplicitContentType) {\n      responseInit.headers.set(\"Content-Type\", \"text/xml\");\n    }\n    const response = new HttpResponse(body, responseInit);\n    if (!hasExplicitContentType) {\n      Object.defineProperty(response, kDefaultContentType, {\n        value: true,\n        enumerable: false\n      });\n    }\n    return response;\n  }\n  /**\n   * Create a `Response` with a `Content-Type: \"text/html\"` body.\n   * @example\n   * HttpResponse.html(`<p class=\"author\">Jane Doe</p>`)\n   * HttpResponse.html(`<main id=\"abc-123\">Main text</main>`, { status: 201 })\n   */\n  static html(body, init) {\n    const responseInit = normalizeResponseInit(init);\n    const hasExplicitContentType = responseInit.headers.has(\"Content-Type\");\n    if (!hasExplicitContentType) {\n      responseInit.headers.set(\"Content-Type\", \"text/html\");\n    }\n    const response = new HttpResponse(body, responseInit);\n    if (!hasExplicitContentType) {\n      Object.defineProperty(response, kDefaultContentType, {\n        value: true,\n        enumerable: false\n      });\n    }\n    return response;\n  }\n  /**\n   * Create a `Response` with an `ArrayBuffer` body.\n   * @example\n   * const buffer = new ArrayBuffer(3)\n   * const view = new Uint8Array(buffer)\n   * view.set([1, 2, 3])\n   *\n   * HttpResponse.arrayBuffer(buffer)\n   */\n  static arrayBuffer(body, init) {\n    const responseInit = normalizeResponseInit(init);\n    const hasExplicitContentType = responseInit.headers.has(\"Content-Type\");\n    if (!hasExplicitContentType) {\n      responseInit.headers.set(\"Content-Type\", \"application/octet-stream\");\n    }\n    if (body && !responseInit.headers.has(\"Content-Length\")) {\n      responseInit.headers.set(\"Content-Length\", body.byteLength.toString());\n    }\n    const response = new HttpResponse(body, responseInit);\n    if (!hasExplicitContentType) {\n      Object.defineProperty(response, kDefaultContentType, {\n        value: true,\n        enumerable: false\n      });\n    }\n    return response;\n  }\n  /**\n   * Create a `Response` with a `FormData` body.\n   * @example\n   * const data = new FormData()\n   * data.set('name', 'Alice')\n   *\n   * HttpResponse.formData(data)\n   */\n  static formData(body, init) {\n    return new HttpResponse(body, normalizeResponseInit(init));\n  }\n}\nexport {\n  HttpResponse,\n  bodyType,\n  kDefaultContentType\n};\n//# sourceMappingURL=HttpResponse.mjs.map","//#region src/create-deferred-executor.ts\nfunction createDeferredExecutor() {\n\tconst executor = ((resolve, reject) => {\n\t\texecutor.state = \"pending\";\n\t\texecutor.resolve = (data) => {\n\t\t\tif (executor.state !== \"pending\") return;\n\t\t\texecutor.result = data;\n\t\t\tconst onFulfilled = (value) => {\n\t\t\t\texecutor.state = \"fulfilled\";\n\t\t\t\treturn value;\n\t\t\t};\n\t\t\treturn resolve(data instanceof Promise ? data : Promise.resolve(data).then(onFulfilled));\n\t\t};\n\t\texecutor.reject = (reason) => {\n\t\t\tif (executor.state !== \"pending\") return;\n\t\t\tqueueMicrotask(() => {\n\t\t\t\texecutor.state = \"rejected\";\n\t\t\t});\n\t\t\treturn reject(executor.rejectionReason = reason);\n\t\t};\n\t});\n\treturn executor;\n}\n//#endregion\n//#region src/deferred-promise.ts\nvar DeferredPromise = class extends Promise {\n\t#executor;\n\tresolve;\n\treject;\n\tconstructor(executor = null) {\n\t\tconst deferredExecutor = createDeferredExecutor();\n\t\tsuper((originalResolve, originalReject) => {\n\t\t\tdeferredExecutor(originalResolve, originalReject);\n\t\t\texecutor?.(deferredExecutor.resolve, deferredExecutor.reject);\n\t\t});\n\t\tthis.#executor = deferredExecutor;\n\t\tthis.resolve = this.#executor.resolve;\n\t\tthis.reject = this.#executor.reject;\n\t}\n\tget state() {\n\t\treturn this.#executor.state;\n\t}\n\tget rejectionReason() {\n\t\treturn this.#executor.rejectionReason;\n\t}\n\tthen(onFulfilled, onRejected) {\n\t\treturn this.#decorate(super.then(onFulfilled, onRejected));\n\t}\n\tcatch(onRejected) {\n\t\treturn this.#decorate(super.catch(onRejected));\n\t}\n\tfinally(onfinally) {\n\t\treturn this.#decorate(super.finally(onfinally));\n\t}\n\t#decorate(promise) {\n\t\treturn Object.defineProperties(promise, {\n\t\t\tresolve: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: this.resolve\n\t\t\t},\n\t\t\treject: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: this.reject\n\t\t\t}\n\t\t});\n\t}\n};\n//#endregion\nexport { DeferredPromise, createDeferredExecutor };\n\n//# sourceMappingURL=index.mjs.map","import { DeferredPromise } from \"@open-draft/deferred-promise\";\nimport { FetchResponse } from \"@mswjs/interceptors\";\nimport { copyResponseOwnProperties } from '../HttpResponse/decorators.mjs';\nfunction observeResponseBodyStream(response) {\n  if (response.body == null || response.bodyUsed || response.body.locked) {\n    return null;\n  }\n  const settled = new DeferredPromise();\n  const reader = response.body.getReader();\n  const observedStream = new ReadableStream({\n    async pull(controller) {\n      try {\n        const readResult = await reader.read();\n        if (readResult.done) {\n          settled.resolve();\n          controller.close();\n          return;\n        }\n        controller.enqueue(readResult.value);\n      } catch (error) {\n        settled.resolve();\n        throw error;\n      }\n    },\n    async cancel(reason) {\n      settled.resolve();\n      await reader.cancel(reason);\n    }\n  });\n  const observedResponse = new FetchResponse(observedStream, {\n    status: response.status,\n    statusText: response.statusText,\n    headers: response.headers\n  });\n  copyResponseOwnProperties(response, observedResponse);\n  return {\n    response: observedResponse,\n    settled\n  };\n}\nexport {\n  observeResponseBodyStream\n};\n//# sourceMappingURL=observe-response-body-stream.mjs.map","import { Headers as HeadersPolyfill } from \"headers-polyfill\";\nimport { getCallFrame } from '../utils/internal/getCallFrame.mjs';\nimport {\n  isIterable\n} from '../utils/internal/isIterable.mjs';\nimport {\n} from '../HttpResponse.mjs';\nimport { devUtils } from '../utils/internal/devUtils.mjs';\nimport { getRawSetCookie } from '../utils/HttpResponse/decorators.mjs';\nimport { observeResponseBodyStream } from '../utils/internal/observe-response-body-stream.mjs';\nclass RequestHandler {\n  static cache = /* @__PURE__ */ new WeakMap();\n  kind = \"request\";\n  resolver;\n  resolverIterator;\n  resolverIteratorResult;\n  resolverIteratorCleanups;\n  options;\n  scheduledCleanups;\n  info;\n  /**\n   * Indicates whether this request handler has been used\n   * (its resolver has successfully executed).\n   */\n  isUsed;\n  constructor(args) {\n    this.resolver = args.resolver;\n    this.options = args.options;\n    this.scheduledCleanups = /* @__PURE__ */ new Map();\n    const callFrame = getCallFrame(new Error());\n    this.info = {\n      ...args.info,\n      callFrame\n    };\n    this.isUsed = false;\n  }\n  /**\n   * Reset the runtime state accumulated during response resolution,\n   * such as generator iterator progress. Called when this handler is\n   * removed from the active handlers list so re-adding it later starts\n   * from a clean state.\n   */\n  reset() {\n    this.scheduledCleanups.clear();\n    const iterator = this.resolverIterator;\n    this.resolverIterator = void 0;\n    this.resolverIteratorResult = void 0;\n    this.resolverIteratorCleanups = void 0;\n    if (typeof iterator?.return === \"function\") {\n      void Promise.resolve(iterator.return());\n    }\n  }\n  /**\n   * Restore this handler so it can match requests again after being\n   * exhausted (e.g. via `{ once: true }`). Also clears any accumulated\n   * resolution state.\n   */\n  restore() {\n    if (this.options?.once) {\n      this.reset();\n      this.isUsed = false;\n    }\n  }\n  /**\n   * Parse the intercepted request to extract additional information from it.\n   * Parsed result is then exposed to other methods of this request handler.\n   */\n  async parse(_args) {\n    return {};\n  }\n  /**\n   * Test if this handler matches the given request.\n   *\n   * This method is not used internally but is exposed\n   * as a convenience method for consumers writing custom\n   * handlers.\n   */\n  async test(args) {\n    const parsedResult = await this.parse({\n      request: args.request,\n      resolutionContext: args.resolutionContext\n    });\n    return this.predicate({\n      request: args.request,\n      parsedResult,\n      resolutionContext: args.resolutionContext\n    });\n  }\n  extendResolverArgs(_args) {\n    return {};\n  }\n  // Clone the request instance before it's passed to the handler phases\n  // and the response resolver so we can always read it for logging.\n  // We only clone it once per request to avoid unnecessary overhead.\n  cloneRequestOrGetFromCache(request) {\n    const existingClone = RequestHandler.cache.get(request);\n    if (typeof existingClone !== \"undefined\") {\n      return existingClone;\n    }\n    const clonedRequest = request.clone();\n    RequestHandler.cache.set(request, clonedRequest);\n    return clonedRequest;\n  }\n  /**\n   * Execute this request handler and produce a mocked response\n   * using the given resolver function.\n   */\n  async run(args) {\n    if (this.isUsed && this.options?.once) {\n      return null;\n    }\n    const requestClone = this.cloneRequestOrGetFromCache(args.request);\n    const parsedResult = await this.parse({\n      request: args.request,\n      resolutionContext: args.resolutionContext\n    });\n    const shouldInterceptRequest = await this.predicate({\n      request: args.request,\n      parsedResult,\n      resolutionContext: args.resolutionContext\n    });\n    if (!shouldInterceptRequest) {\n      return null;\n    }\n    if (this.isUsed && this.options?.once) {\n      return null;\n    }\n    this.isUsed = true;\n    const executeResolver = this.wrapResolver(this.resolver);\n    const resolverExtras = this.extendResolverArgs({\n      request: args.request,\n      parsedResult\n    });\n    const listenerController = new AbortController();\n    let finalizeFunction;\n    const getFinalize = () => {\n      if (finalizeFunction == null) {\n        if (!args.request.signal.aborted) {\n          args.request.signal.addEventListener(\n            \"abort\",\n            () => this.runScheduledCleanups(args.requestId),\n            {\n              once: true,\n              signal: listenerController.signal\n            }\n          );\n        }\n        finalizeFunction = (callback) => {\n          this.scheduleCleanup(args.requestId, callback);\n          if (args.request.signal.aborted) {\n            void this.runScheduledCleanups(args.requestId);\n          }\n        };\n      }\n      return finalizeFunction;\n    };\n    const mockedResponsePromise = executeResolver({\n      ...resolverExtras,\n      get finalize() {\n        return getFinalize();\n      },\n      requestId: args.requestId,\n      request: args.request\n    }).catch((errorOrResponse) => {\n      if (errorOrResponse instanceof Response) {\n        return errorOrResponse;\n      }\n      throw errorOrResponse;\n    }).finally(() => {\n      listenerController.abort();\n    });\n    const mockedResponse = await mockedResponsePromise;\n    if (mockedResponse) {\n      forwardResponseCookies(mockedResponse);\n    }\n    const executionResult = this.createExecutionResult({\n      // Pass the cloned request to the result so that logging\n      // and other consumers could read its body once more.\n      request: requestClone,\n      requestId: args.requestId,\n      response: mockedResponse,\n      parsedResult\n    });\n    return executionResult;\n  }\n  wrapResolver(resolver) {\n    return async (info) => {\n      if (!this.resolverIterator) {\n        let result;\n        try {\n          result = await resolver(info);\n        } catch (error) {\n          await this.runScheduledCleanups(info.requestId);\n          throw error;\n        }\n        if (!isIterable(result)) {\n          return this.complete({\n            request: info.request,\n            requestId: info.requestId,\n            response: result\n          });\n        }\n        const existingCleanups = this.scheduledCleanups.get(info.requestId);\n        if (existingCleanups != null && existingCleanups.length > 0) {\n          this.resolverIteratorCleanups = existingCleanups;\n          this.scheduledCleanups.delete(info.requestId);\n        }\n        this.resolverIterator = Symbol.iterator in result ? result[Symbol.iterator]() : result[Symbol.asyncIterator]();\n      }\n      this.isUsed = false;\n      const { done, value } = await this.resolverIterator.next();\n      const nextResponse = await value;\n      if (nextResponse) {\n        this.resolverIteratorResult = nextResponse.clone();\n      }\n      if (done) {\n        this.isUsed = true;\n        return this.complete({\n          request: info.request,\n          requestId: info.requestId,\n          response: this.resolverIteratorResult?.clone()\n        });\n      }\n      return nextResponse;\n    };\n  }\n  createExecutionResult(args) {\n    return {\n      handler: this,\n      request: args.request,\n      requestId: args.requestId,\n      response: args.response,\n      parsedResult: args.parsedResult\n    };\n  }\n  scheduleCleanup(requestId, callback) {\n    if (this.resolverIterator) {\n      ;\n      (this.resolverIteratorCleanups ||= []).unshift(callback);\n      return;\n    }\n    const cleanups = this.scheduledCleanups.get(requestId) || [];\n    cleanups.unshift(callback);\n    this.scheduledCleanups.set(requestId, cleanups);\n  }\n  async exhaustCleanups(cleanups) {\n    const errors = [];\n    for (const cleanup of cleanups) {\n      try {\n        await cleanup();\n      } catch (error) {\n        if (error instanceof Error) {\n          errors.push(error);\n        }\n      }\n    }\n    if (errors.length > 0) {\n      devUtils.error(\n        'Failed to execute cleanup for request handler \"%s\"',\n        this.info.header,\n        new AggregateError(\n          errors,\n          `Failed to execute cleanup for request handler \"${this.info.header}\"`\n        )\n      );\n    }\n  }\n  /**\n   * Remove and return the cleanups scheduled for the given request\n   * (or the pending iterator cleanups for generator resolvers).\n   */\n  takeScheduledCleanups(requestId) {\n    if (this.resolverIterator && this.resolverIteratorCleanups != null && this.resolverIteratorCleanups.length > 0) {\n      const cleanups2 = this.resolverIteratorCleanups;\n      this.resolverIteratorCleanups = void 0;\n      return cleanups2;\n    }\n    const cleanups = this.scheduledCleanups.get(requestId);\n    if (!cleanups || cleanups.length === 0) {\n      return void 0;\n    }\n    this.scheduledCleanups.delete(requestId);\n    return cleanups;\n  }\n  async runScheduledCleanups(requestId) {\n    const cleanups = this.takeScheduledCleanups(requestId);\n    if (cleanups) {\n      await this.exhaustCleanups(cleanups);\n    }\n  }\n  /**\n   * Conclude the response resolution for the given request.\n   * Runs the scheduled cleanups immediately for responses without a\n   * `ReadableStream` body. For streamed responses, returns an observed\n   * copy of the response and defers the cleanups until its body settles\n   * (is read to completion, errored, or canceled) or the request is\n   * aborted, whichever comes first.\n   */\n  async complete(args) {\n    const cleanups = this.takeScheduledCleanups(args.requestId);\n    if (!cleanups) {\n      return args.response;\n    }\n    const observedResponse = args.response ? observeResponseBodyStream(args.response) : null;\n    if (!observedResponse) {\n      await this.exhaustCleanups(cleanups);\n      return args.response;\n    }\n    const listenerController = new AbortController();\n    const runCleanupsOnce = () => {\n      if (listenerController.signal.aborted) {\n        return;\n      }\n      listenerController.abort();\n      void this.exhaustCleanups(cleanups);\n    };\n    void observedResponse.settled.then(runCleanupsOnce);\n    if (args.request.signal.aborted) {\n      runCleanupsOnce();\n    } else {\n      args.request.signal.addEventListener(\"abort\", runCleanupsOnce, {\n        once: true,\n        signal: listenerController.signal\n      });\n    }\n    return observedResponse.response;\n  }\n}\nfunction forwardResponseCookies(response) {\n  if (typeof document === \"undefined\") {\n    return;\n  }\n  const responseCookies = getRawSetCookie(response);\n  if (!responseCookies) {\n    return;\n  }\n  const allResponseCookies = HeadersPolyfill.prototype.getSetCookie.call(\n    new Headers([[\"set-cookie\", responseCookies]])\n  );\n  for (const cookieString of allResponseCookies) {\n    document.cookie = cookieString;\n  }\n}\nexport {\n  RequestHandler,\n  forwardResponseCookies\n};\n//# sourceMappingURL=RequestHandler.mjs.map","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n    var tokens = [];\n    var i = 0;\n    while (i < str.length) {\n        var char = str[i];\n        if (char === \"*\" || char === \"+\" || char === \"?\") {\n            tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === \"\\\\\") {\n            tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n            continue;\n        }\n        if (char === \"{\") {\n            tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === \"}\") {\n            tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n            continue;\n        }\n        if (char === \":\") {\n            var name = \"\";\n            var j = i + 1;\n            while (j < str.length) {\n                var code = str.charCodeAt(j);\n                if (\n                // `0-9`\n                (code >= 48 && code <= 57) ||\n                    // `A-Z`\n                    (code >= 65 && code <= 90) ||\n                    // `a-z`\n                    (code >= 97 && code <= 122) ||\n                    // `_`\n                    code === 95) {\n                    name += str[j++];\n                    continue;\n                }\n                break;\n            }\n            if (!name)\n                throw new TypeError(\"Missing parameter name at \".concat(i));\n            tokens.push({ type: \"NAME\", index: i, value: name });\n            i = j;\n            continue;\n        }\n        if (char === \"(\") {\n            var count = 1;\n            var pattern = \"\";\n            var j = i + 1;\n            if (str[j] === \"?\") {\n                throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n            }\n            while (j < str.length) {\n                if (str[j] === \"\\\\\") {\n                    pattern += str[j++] + str[j++];\n                    continue;\n                }\n                if (str[j] === \")\") {\n                    count--;\n                    if (count === 0) {\n                        j++;\n                        break;\n                    }\n                }\n                else if (str[j] === \"(\") {\n                    count++;\n                    if (str[j + 1] !== \"?\") {\n                        throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n                    }\n                }\n                pattern += str[j++];\n            }\n            if (count)\n                throw new TypeError(\"Unbalanced pattern at \".concat(i));\n            if (!pattern)\n                throw new TypeError(\"Missing pattern at \".concat(i));\n            tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n            i = j;\n            continue;\n        }\n        tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n    }\n    tokens.push({ type: \"END\", index: i, value: \"\" });\n    return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n    if (options === void 0) { options = {}; }\n    var tokens = lexer(str);\n    var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a, _b = options.delimiter, delimiter = _b === void 0 ? \"/#?\" : _b;\n    var result = [];\n    var key = 0;\n    var i = 0;\n    var path = \"\";\n    var tryConsume = function (type) {\n        if (i < tokens.length && tokens[i].type === type)\n            return tokens[i++].value;\n    };\n    var mustConsume = function (type) {\n        var value = tryConsume(type);\n        if (value !== undefined)\n            return value;\n        var _a = tokens[i], nextType = _a.type, index = _a.index;\n        throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n    };\n    var consumeText = function () {\n        var result = \"\";\n        var value;\n        while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n            result += value;\n        }\n        return result;\n    };\n    var isSafe = function (value) {\n        for (var _i = 0, delimiter_1 = delimiter; _i < delimiter_1.length; _i++) {\n            var char = delimiter_1[_i];\n            if (value.indexOf(char) > -1)\n                return true;\n        }\n        return false;\n    };\n    var safePattern = function (prefix) {\n        var prev = result[result.length - 1];\n        var prevText = prefix || (prev && typeof prev === \"string\" ? prev : \"\");\n        if (prev && !prevText) {\n            throw new TypeError(\"Must have text between two parameters, missing text after \\\"\".concat(prev.name, \"\\\"\"));\n        }\n        if (!prevText || isSafe(prevText))\n            return \"[^\".concat(escapeString(delimiter), \"]+?\");\n        return \"(?:(?!\".concat(escapeString(prevText), \")[^\").concat(escapeString(delimiter), \"])+?\");\n    };\n    while (i < tokens.length) {\n        var char = tryConsume(\"CHAR\");\n        var name = tryConsume(\"NAME\");\n        var pattern = tryConsume(\"PATTERN\");\n        if (name || pattern) {\n            var prefix = char || \"\";\n            if (prefixes.indexOf(prefix) === -1) {\n                path += prefix;\n                prefix = \"\";\n            }\n            if (path) {\n                result.push(path);\n                path = \"\";\n            }\n            result.push({\n                name: name || key++,\n                prefix: prefix,\n                suffix: \"\",\n                pattern: pattern || safePattern(prefix),\n                modifier: tryConsume(\"MODIFIER\") || \"\",\n            });\n            continue;\n        }\n        var value = char || tryConsume(\"ESCAPED_CHAR\");\n        if (value) {\n            path += value;\n            continue;\n        }\n        if (path) {\n            result.push(path);\n            path = \"\";\n        }\n        var open = tryConsume(\"OPEN\");\n        if (open) {\n            var prefix = consumeText();\n            var name_1 = tryConsume(\"NAME\") || \"\";\n            var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n            var suffix = consumeText();\n            mustConsume(\"CLOSE\");\n            result.push({\n                name: name_1 || (pattern_1 ? key++ : \"\"),\n                pattern: name_1 && !pattern_1 ? safePattern(prefix) : pattern_1,\n                prefix: prefix,\n                suffix: suffix,\n                modifier: tryConsume(\"MODIFIER\") || \"\",\n            });\n            continue;\n        }\n        mustConsume(\"END\");\n    }\n    return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n    return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n    if (options === void 0) { options = {}; }\n    var reFlags = flags(options);\n    var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n    // Compile all the tokens into regexps.\n    var matches = tokens.map(function (token) {\n        if (typeof token === \"object\") {\n            return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n        }\n    });\n    return function (data) {\n        var path = \"\";\n        for (var i = 0; i < tokens.length; i++) {\n            var token = tokens[i];\n            if (typeof token === \"string\") {\n                path += token;\n                continue;\n            }\n            var value = data ? data[token.name] : undefined;\n            var optional = token.modifier === \"?\" || token.modifier === \"*\";\n            var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n            if (Array.isArray(value)) {\n                if (!repeat) {\n                    throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n                }\n                if (value.length === 0) {\n                    if (optional)\n                        continue;\n                    throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n                }\n                for (var j = 0; j < value.length; j++) {\n                    var segment = encode(value[j], token);\n                    if (validate && !matches[i].test(segment)) {\n                        throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n                    }\n                    path += token.prefix + segment + token.suffix;\n                }\n                continue;\n            }\n            if (typeof value === \"string\" || typeof value === \"number\") {\n                var segment = encode(String(value), token);\n                if (validate && !matches[i].test(segment)) {\n                    throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n                }\n                path += token.prefix + segment + token.suffix;\n                continue;\n            }\n            if (optional)\n                continue;\n            var typeOfMessage = repeat ? \"an array\" : \"a string\";\n            throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n        }\n        return path;\n    };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n    var keys = [];\n    var re = pathToRegexp(str, keys, options);\n    return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n    return function (pathname) {\n        var m = re.exec(pathname);\n        if (!m)\n            return false;\n        var path = m[0], index = m.index;\n        var params = Object.create(null);\n        var _loop_1 = function (i) {\n            if (m[i] === undefined)\n                return \"continue\";\n            var key = keys[i - 1];\n            if (key.modifier === \"*\" || key.modifier === \"+\") {\n                params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n                    return decode(value, key);\n                });\n            }\n            else {\n                params[key.name] = decode(m[i], key);\n            }\n        };\n        for (var i = 1; i < m.length; i++) {\n            _loop_1(i);\n        }\n        return { path: path, index: index, params: params };\n    };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n    return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n    return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n    if (!keys)\n        return path;\n    var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n    var index = 0;\n    var execResult = groupsRegex.exec(path.source);\n    while (execResult) {\n        keys.push({\n            // Use parenthesized substring match if available, index otherwise\n            name: execResult[1] || index++,\n            prefix: \"\",\n            suffix: \"\",\n            modifier: \"\",\n            pattern: \"\",\n        });\n        execResult = groupsRegex.exec(path.source);\n    }\n    return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n    var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n    return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n    return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n    var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n    var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n    var route = start ? \"^\" : \"\";\n    // Iterate over the tokens and create our regexp string.\n    for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n        var token = tokens_1[_i];\n        if (typeof token === \"string\") {\n            route += escapeString(encode(token));\n        }\n        else {\n            var prefix = escapeString(encode(token.prefix));\n            var suffix = escapeString(encode(token.suffix));\n            if (token.pattern) {\n                if (keys)\n                    keys.push(token);\n                if (prefix || suffix) {\n                    if (token.modifier === \"+\" || token.modifier === \"*\") {\n                        var mod = token.modifier === \"*\" ? \"?\" : \"\";\n                        route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n                    }\n                    else {\n                        route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n                    }\n                }\n                else {\n                    if (token.modifier === \"+\" || token.modifier === \"*\") {\n                        throw new TypeError(\"Can not repeat \\\"\".concat(token.name, \"\\\" without a prefix and suffix\"));\n                    }\n                    route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n                }\n            }\n            else {\n                route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n            }\n        }\n    }\n    if (end) {\n        if (!strict)\n            route += \"\".concat(delimiterRe, \"?\");\n        route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n    }\n    else {\n        var endToken = tokens[tokens.length - 1];\n        var isEndDelimited = typeof endToken === \"string\"\n            ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n            : endToken === undefined;\n        if (!strict) {\n            route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n        }\n        if (!isEndDelimited) {\n            route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n        }\n    }\n    return new RegExp(route, flags(options));\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 */\nexport function pathToRegexp(path, keys, options) {\n    if (path instanceof RegExp)\n        return regexpToRegexp(path, keys);\n    if (Array.isArray(path))\n        return arrayToRegexp(path, keys, options);\n    return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","const REDUNDANT_CHARACTERS_EXP = /[?|#].*$/g;\nfunction cleanUrl(path) {\n  if (path.endsWith(\"?\")) {\n    return path;\n  }\n  return path.replace(REDUNDANT_CHARACTERS_EXP, \"\");\n}\nexport {\n  cleanUrl\n};\n//# sourceMappingURL=cleanUrl.mjs.map","function isAbsoluteUrl(url) {\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nexport {\n  isAbsoluteUrl\n};\n//# sourceMappingURL=isAbsoluteUrl.mjs.map","import { isAbsoluteUrl } from './isAbsoluteUrl.mjs';\nfunction getAbsoluteUrl(path, baseUrl) {\n  if (isAbsoluteUrl(path)) {\n    return path;\n  }\n  if (path.startsWith(\"*\")) {\n    return path;\n  }\n  const origin = baseUrl || typeof location !== \"undefined\" && location.href;\n  return origin ? (\n    // Encode and decode the path to preserve escaped characters.\n    decodeURI(new URL(encodeURI(path), origin).href)\n  ) : path;\n}\nexport {\n  getAbsoluteUrl\n};\n//# sourceMappingURL=getAbsoluteUrl.mjs.map","import { cleanUrl } from '../url/cleanUrl.mjs';\nimport { getAbsoluteUrl } from '../url/getAbsoluteUrl.mjs';\nfunction normalizePath(path, baseUrl) {\n  if (path instanceof RegExp) {\n    return path;\n  }\n  const maybeAbsoluteUrl = getAbsoluteUrl(path, baseUrl);\n  return cleanUrl(maybeAbsoluteUrl);\n}\nexport {\n  normalizePath\n};\n//# sourceMappingURL=normalizePath.mjs.map","import { match } from \"path-to-regexp\";\nimport { getCleanUrl } from \"@mswjs/interceptors\";\nimport { normalizePath } from './normalizePath.mjs';\nfunction coercePath(path) {\n  return path.replace(\n    /([:a-zA-Z_-]*)(\\*{1,2})+/g,\n    (_, parameterName, wildcard) => {\n      const expression = \"(.*)\";\n      if (!parameterName) {\n        return expression;\n      }\n      return parameterName.startsWith(\":\") ? `${parameterName}${wildcard}` : `${parameterName}${expression}`;\n    }\n  ).replace(/([^/])(:)(?=(?:\\d+|\\(\\.\\*\\))(?=\\/|$))/, \"$1\\\\$2\").replace(/^([^/]+)(:)(?=\\/\\/)/, \"$1\\\\$2\");\n}\nfunction matchRequestUrl(url, path, baseUrl) {\n  const normalizedPath = normalizePath(path, baseUrl);\n  const cleanPath = typeof normalizedPath === \"string\" ? coercePath(normalizedPath) : normalizedPath;\n  const cleanUrl = getCleanUrl(url);\n  const result = match(cleanPath, { decode: decodeURIComponent })(cleanUrl);\n  const params = result && result.params || {};\n  return {\n    matches: result !== false,\n    params\n  };\n}\nfunction isPath(value) {\n  return typeof value === \"string\" || value instanceof RegExp;\n}\nexport {\n  coercePath,\n  isPath,\n  matchRequestUrl\n};\n//# sourceMappingURL=matchRequestUrl.mjs.map","function getTimestamp(options) {\n  const now = /* @__PURE__ */ new Date();\n  const timestamp = `${now.getHours().toString().padStart(2, \"0\")}:${now.getMinutes().toString().padStart(2, \"0\")}:${now.getSeconds().toString().padStart(2, \"0\")}`;\n  if (options?.milliseconds) {\n    return `${timestamp}.${now.getMilliseconds().toString().padStart(3, \"0\")}`;\n  }\n  return timestamp;\n}\nexport {\n  getTimestamp\n};\n//# sourceMappingURL=getTimestamp.mjs.map","function toPublicUrl(url) {\n  const urlInstance = url instanceof URL ? url : new URL(url);\n  if (typeof location !== \"undefined\" && urlInstance.origin === location.origin) {\n    return urlInstance.pathname;\n  }\n  return urlInstance.origin + urlInstance.pathname;\n}\nexport {\n  toPublicUrl\n};\n//# sourceMappingURL=toPublicUrl.mjs.map","function isObject(value) {\n  return value != null && typeof value === \"object\" && !Array.isArray(value);\n}\nexport {\n  isObject\n};\n//# sourceMappingURL=isObject.mjs.map","import { Emitter } from \"strict-event-emitter\";\nimport { createRequestId, resolveWebSocketUrl } from \"@mswjs/interceptors\";\nimport {\n  matchRequestUrl\n} from '../utils/matching/matchRequestUrl.mjs';\nimport { getCallFrame } from '../utils/internal/getCallFrame.mjs';\nimport { attachWebSocketLogger } from '../ws/utils/attachWebSocketLogger.mjs';\nconst kEmitter = /* @__PURE__ */ Symbol(\"kEmitter\");\nconst kSender = /* @__PURE__ */ Symbol(\"kSender\");\nconst kConnect = /* @__PURE__ */ Symbol(\"kConnect\");\nconst kAutoConnect = /* @__PURE__ */ Symbol(\"kAutoConnect\");\nconst kStopPropagationPatched = /* @__PURE__ */ Symbol(\"kStopPropagationPatched\");\nconst KOnStopPropagation = /* @__PURE__ */ Symbol(\"KOnStopPropagation\");\nclass WebSocketHandler {\n  constructor(url) {\n    this.url = url;\n    this.id = createRequestId();\n    this[kEmitter] = new Emitter();\n    this.callFrame = getCallFrame(new Error());\n  }\n  url;\n  id;\n  callFrame;\n  kind = \"websocket\";\n  [kEmitter];\n  parse(args) {\n    const clientUrl = new URL(args.url);\n    const resolvedHandlerUrl = this.url instanceof RegExp || this.url.startsWith(\"*\") ? this.url : this.#resolveWebSocketUrl(this.url, args.resolutionContext?.baseUrl);\n    clientUrl.pathname = clientUrl.pathname.replace(/^\\/socket.io\\//, \"/\");\n    const match = matchRequestUrl(\n      clientUrl,\n      resolvedHandlerUrl,\n      args.resolutionContext?.baseUrl\n    );\n    return {\n      match\n    };\n  }\n  predicate(args) {\n    return args.parsedResult.match.matches;\n  }\n  test(url, resolutionContext) {\n    return this.#match(url, resolutionContext) != null;\n  }\n  async run(connection, resolutionContext) {\n    const parsedResult = this.#match(connection.client.url, resolutionContext);\n    if (parsedResult == null) {\n      return null;\n    }\n    const resolvedConnection = {\n      ...connection,\n      params: parsedResult.match.params || {}\n    };\n    if (resolutionContext?.[kAutoConnect] ?? true) {\n      if (this[kConnect](resolvedConnection)) {\n        return resolvedConnection;\n      }\n      return null;\n    }\n    return resolvedConnection;\n  }\n  #match(url, resolutionContext) {\n    const resolvedUrl = this.#resolveWebSocketUrl(\n      url.toString(),\n      resolutionContext?.baseUrl\n    );\n    const parsedResult = this.parse({\n      url: resolvedUrl,\n      resolutionContext\n    });\n    if (this.predicate({\n      url,\n      parsedResult\n    })) {\n      return parsedResult;\n    }\n    return null;\n  }\n  [kConnect](connection) {\n    connection.client.addEventListener(\n      \"message\",\n      createStopPropagationListener(this)\n    );\n    connection.client.addEventListener(\n      \"close\",\n      createStopPropagationListener(this)\n    );\n    connection.server.addEventListener(\n      \"open\",\n      createStopPropagationListener(this)\n    );\n    connection.server.addEventListener(\n      \"message\",\n      createStopPropagationListener(this)\n    );\n    connection.server.addEventListener(\n      \"error\",\n      createStopPropagationListener(this)\n    );\n    connection.server.addEventListener(\n      \"close\",\n      createStopPropagationListener(this)\n    );\n    return this[kEmitter].emit(\"connection\", connection);\n  }\n  log(connection) {\n    return attachWebSocketLogger(connection);\n  }\n  #resolveWebSocketUrl(url, baseUrl) {\n    const resolvedUrl = resolveWebSocketUrl(\n      baseUrl ? (\n        /**\n         * @note Resolve against the base URL preemtively because `resolveWebSocketUrl` only\n         * resolves against `location.href`, which is missing in Node.js. Base URL allows\n         * the handler to accept a relative URL in Node.js.\n         */\n        new URL(url, baseUrl)\n      ) : url\n    );\n    return resolvedUrl.replace(/\\/$/, \"\");\n  }\n}\nfunction createStopPropagationListener(handler) {\n  return function stopPropagationListener(event) {\n    const propagationStoppedAt = Reflect.get(event, \"kPropagationStoppedAt\");\n    if (propagationStoppedAt && handler.id !== propagationStoppedAt) {\n      event.stopImmediatePropagation();\n      return;\n    }\n    Object.defineProperty(event, KOnStopPropagation, {\n      value() {\n        Object.defineProperty(event, \"kPropagationStoppedAt\", {\n          value: handler.id\n        });\n      },\n      configurable: true\n    });\n    if (!Reflect.get(event, kStopPropagationPatched)) {\n      event.stopPropagation = new Proxy(event.stopPropagation, {\n        apply: (target, thisArg, args) => {\n          Reflect.get(event, KOnStopPropagation)?.call(handler);\n          return Reflect.apply(target, thisArg, args);\n        }\n      });\n      Object.defineProperty(event, kStopPropagationPatched, {\n        value: true,\n        // If something else attempts to redefine this, throw.\n        configurable: false\n      });\n    }\n  };\n}\nexport {\n  WebSocketHandler,\n  kAutoConnect,\n  kConnect,\n  kEmitter,\n  kSender\n};\n//# sourceMappingURL=WebSocketHandler.mjs.map","import { invariant } from \"outvariant\";\nconst kSiblingHandlers = /* @__PURE__ */ Symbol(\"kSiblingHandlers\");\nfunction attachSiblingHandlers(owner, siblings) {\n  invariant(\n    getSiblingHandlers(owner).length === 0,\n    'Failed to merge handlers: the owner \"%s\" handler is already merged',\n    owner.kind\n  );\n  Object.defineProperty(owner, kSiblingHandlers, {\n    value: siblings,\n    enumerable: false,\n    writable: false,\n    configurable: false\n  });\n  return owner;\n}\nfunction getSiblingHandlers(owner) {\n  return Reflect.get(owner, kSiblingHandlers) || [];\n}\nexport {\n  attachSiblingHandlers,\n  getSiblingHandlers\n};\n//# sourceMappingURL=attachSiblingHandlers.mjs.map","import { invariant } from \"outvariant\";\nimport {} from '../handlers/RequestHandler.mjs';\nimport {} from '../handlers/WebSocketHandler.mjs';\nimport { devUtils } from '../utils/internal/devUtils.mjs';\nimport { getSiblingHandlers } from '../utils/internal/attachSiblingHandlers.mjs';\nfunction groupHandlersByKind(handlers) {\n  const groups = {};\n  const pushUnique = (kind, handler) => {\n    const bucket = groups[kind] ||= [];\n    if (!bucket.includes(handler)) {\n      bucket.push(handler);\n    }\n  };\n  for (const handler of handlers) {\n    pushUnique(handler.kind, handler);\n    for (const sibling of getSiblingHandlers(handler)) {\n      pushUnique(sibling.kind, sibling);\n    }\n  }\n  return groups;\n}\nclass HandlersController {\n  getInitialState(initialHandlers) {\n    invariant(\n      this.#validateHandlers(initialHandlers),\n      devUtils.formatMessage(\n        \"Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?\"\n      )\n    );\n    const normalizedInitialHandlers = groupHandlersByKind(initialHandlers);\n    return {\n      initialHandlers: normalizedInitialHandlers,\n      handlers: { ...normalizedInitialHandlers }\n    };\n  }\n  currentHandlers() {\n    return Object.values(this.getState().handlers).flat().filter((handler) => handler != null);\n  }\n  getHandlersByKind(kind) {\n    return this.getState().handlers[kind] || [];\n  }\n  use(nextHandlers) {\n    invariant(\n      this.#validateHandlers(nextHandlers),\n      devUtils.formatMessage(\n        '[MSW] Failed to call \"use()\" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?'\n      )\n    );\n    if (nextHandlers.length === 0) {\n      return;\n    }\n    const { handlers } = this.getState();\n    const overrides = groupHandlersByKind(nextHandlers);\n    for (const kind in overrides) {\n      const overridesForKind = overrides[kind];\n      const existingForKind = handlers[kind];\n      handlers[kind] = existingForKind ? [...overridesForKind, ...existingForKind] : overridesForKind;\n    }\n    this.setState({ handlers });\n  }\n  reset(nextHandlers) {\n    invariant(\n      nextHandlers.length > 0 ? this.#validateHandlers(nextHandlers) : true,\n      devUtils.formatMessage(\n        \"Failed to replace initial handlers during reset: invalid handlers. Did you forget to spread the handlers array?\"\n      )\n    );\n    for (const handler of this.currentHandlers()) {\n      if (\"reset\" in handler) {\n        handler[\"reset\"]();\n      }\n    }\n    const { initialHandlers } = this.getState();\n    if (nextHandlers.length === 0) {\n      this.setState({\n        handlers: { ...initialHandlers }\n      });\n      return;\n    }\n    const normalizedNextHandlers = groupHandlersByKind(nextHandlers);\n    this.setState({\n      initialHandlers: normalizedNextHandlers,\n      handlers: { ...normalizedNextHandlers }\n    });\n  }\n  restore() {\n    for (const handler of this.currentHandlers()) {\n      if (\"restore\" in handler) {\n        handler[\"restore\"]();\n      }\n    }\n  }\n  #validateHandlers(handlers) {\n    return handlers.every((handler) => !Array.isArray(handler));\n  }\n}\nclass InMemoryHandlersController extends HandlersController {\n  #handlers;\n  #initialHandlers;\n  constructor(initialHandlers) {\n    super();\n    const initialState = this.getInitialState(initialHandlers);\n    this.#initialHandlers = initialState.initialHandlers;\n    this.#handlers = initialState.handlers;\n  }\n  getState() {\n    return {\n      initialHandlers: this.#initialHandlers,\n      handlers: this.#handlers\n    };\n  }\n  setState(nextState) {\n    if (nextState.initialHandlers) {\n      this.#initialHandlers = nextState.initialHandlers;\n    }\n    if (nextState.handlers) {\n      this.#handlers = nextState.handlers;\n    }\n  }\n}\nexport {\n  HandlersController,\n  InMemoryHandlersController,\n  groupHandlersByKind\n};\n//# sourceMappingURL=handlers-controller.mjs.map","import { devUtils } from './devUtils.mjs';\nclass Disposable {\n  subscriptions = [];\n  dispose() {\n    let subscription;\n    const errors = [];\n    while (subscription = this.subscriptions.shift()) {\n      try {\n        subscription();\n      } catch (error) {\n        if (error instanceof Error) {\n          errors.push(error);\n        }\n      }\n    }\n    if (errors.length > 0) {\n      console.error(\n        new AggregateError(\n          errors,\n          devUtils.formatMessage(\n            \"Failed to dispose of some side effects. This is likely an issue with MSW, please report it on GitHub: https://github.com/mswjs/msw/issues\"\n          )\n        )\n      );\n    }\n  }\n}\nexport {\n  Disposable\n};\n//# sourceMappingURL=Disposable.mjs.map","function toReadonlyArray(source) {\n  const clone = [...source];\n  Object.freeze(clone);\n  return clone;\n}\nexport {\n  toReadonlyArray\n};\n//# sourceMappingURL=toReadonlyArray.mjs.map","import {} from '../handlers/RequestHandler.mjs';\nconst executeHandlers = async ({\n  request,\n  requestId,\n  handlers,\n  resolutionContext\n}) => {\n  let matchingHandler = null;\n  let result = null;\n  for (const handler of handlers) {\n    result = await handler.run({ request, requestId, resolutionContext });\n    if (result !== null) {\n      matchingHandler = handler;\n    }\n    if (result?.response) {\n      break;\n    }\n  }\n  if (matchingHandler) {\n    return {\n      handler: matchingHandler,\n      parsedResult: result?.parsedResult,\n      response: result?.response\n    };\n  }\n  return null;\n};\nexport {\n  executeHandlers\n};\n//# sourceMappingURL=executeHandlers.mjs.map","function isStringEqual(actual, expected) {\n  return actual.toLowerCase() === expected.toLowerCase();\n}\nexport {\n  isStringEqual\n};\n//# sourceMappingURL=isStringEqual.mjs.map","var StatusCodeColor = /* @__PURE__ */ ((StatusCodeColor2) => {\n  StatusCodeColor2[\"Success\"] = \"#69AB32\";\n  StatusCodeColor2[\"Warning\"] = \"#F0BB4B\";\n  StatusCodeColor2[\"Danger\"] = \"#E95F5D\";\n  return StatusCodeColor2;\n})(StatusCodeColor || {});\nfunction getStatusCodeColor(status) {\n  if (status < 300) {\n    return \"#69AB32\" /* Success */;\n  }\n  if (status < 400) {\n    return \"#F0BB4B\" /* Warning */;\n  }\n  return \"#E95F5D\" /* Danger */;\n}\nexport {\n  StatusCodeColor,\n  getStatusCodeColor\n};\n//# sourceMappingURL=getStatusCodeColor.mjs.map","async function serializeRequest(request) {\n  const requestClone = request.clone();\n  const requestText = await requestClone.text();\n  return {\n    url: new URL(request.url),\n    method: request.method,\n    headers: Object.fromEntries(request.headers.entries()),\n    body: requestText\n  };\n}\nexport {\n  serializeRequest\n};\n//# sourceMappingURL=serializeRequest.mjs.map","import statuses from '../../../shims/statuses.mjs';\nconst { message } = statuses;\nasync function serializeResponse(response) {\n  const responseClone = response.clone();\n  const responseText = await responseClone.text();\n  const responseStatus = responseClone.status || 200;\n  const responseStatusText = responseClone.statusText || message[responseStatus] || \"OK\";\n  return {\n    status: responseStatus,\n    statusText: responseStatusText,\n    headers: Object.fromEntries(responseClone.headers.entries()),\n    body: responseText\n  };\n}\nexport {\n  serializeResponse\n};\n//# sourceMappingURL=serializeResponse.mjs.map","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function __require() {\n  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n  // If the importer is in node compatibility mode or this is not an ESM\n  // file that has been converted to a CommonJS file using a Babel-\n  // compatible transform (i.e. \"__esModule\" has not been set), then set\n  // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n  isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n  mod\n));\n\n// node_modules/.pnpm/cookie@1.1.1/node_modules/cookie/dist/index.js\nvar require_dist = __commonJS({\n  \"node_modules/.pnpm/cookie@1.1.1/node_modules/cookie/dist/index.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.parseCookie = parseCookie;\n    exports.parse = parseCookie;\n    exports.stringifyCookie = stringifyCookie;\n    exports.stringifySetCookie = stringifySetCookie;\n    exports.serialize = stringifySetCookie;\n    exports.parseSetCookie = parseSetCookie;\n    exports.stringifySetCookie = stringifySetCookie;\n    exports.serialize = stringifySetCookie;\n    var cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n    var cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n    var domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n    var pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n    var maxAgeRegExp = /^-?\\d+$/;\n    var __toString = Object.prototype.toString;\n    var NullObject = /* @__PURE__ */ (() => {\n      const C = function() {\n      };\n      C.prototype = /* @__PURE__ */ Object.create(null);\n      return C;\n    })();\n    function parseCookie(str, options) {\n      const obj = new NullObject();\n      const len = str.length;\n      if (len < 2)\n        return obj;\n      const dec = options?.decode || decode;\n      let index = 0;\n      do {\n        const eqIdx = eqIndex(str, index, len);\n        if (eqIdx === -1)\n          break;\n        const endIdx = endIndex(str, index, len);\n        if (eqIdx > endIdx) {\n          index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n          continue;\n        }\n        const key = valueSlice(str, index, eqIdx);\n        if (obj[key] === void 0) {\n          obj[key] = dec(valueSlice(str, eqIdx + 1, endIdx));\n        }\n        index = endIdx + 1;\n      } while (index < len);\n      return obj;\n    }\n    function stringifyCookie(cookie2, options) {\n      const enc = options?.encode || encodeURIComponent;\n      const cookieStrings = [];\n      for (const name of Object.keys(cookie2)) {\n        const val = cookie2[name];\n        if (val === void 0)\n          continue;\n        if (!cookieNameRegExp.test(name)) {\n          throw new TypeError(`cookie name is invalid: ${name}`);\n        }\n        const value = enc(val);\n        if (!cookieValueRegExp.test(value)) {\n          throw new TypeError(`cookie val is invalid: ${val}`);\n        }\n        cookieStrings.push(`${name}=${value}`);\n      }\n      return cookieStrings.join(\"; \");\n    }\n    function stringifySetCookie(_name, _val, _opts) {\n      const cookie2 = typeof _name === \"object\" ? _name : { ..._opts, name: _name, value: String(_val) };\n      const options = typeof _val === \"object\" ? _val : _opts;\n      const enc = options?.encode || encodeURIComponent;\n      if (!cookieNameRegExp.test(cookie2.name)) {\n        throw new TypeError(`argument name is invalid: ${cookie2.name}`);\n      }\n      const value = cookie2.value ? enc(cookie2.value) : \"\";\n      if (!cookieValueRegExp.test(value)) {\n        throw new TypeError(`argument val is invalid: ${cookie2.value}`);\n      }\n      let str = cookie2.name + \"=\" + value;\n      if (cookie2.maxAge !== void 0) {\n        if (!Number.isInteger(cookie2.maxAge)) {\n          throw new TypeError(`option maxAge is invalid: ${cookie2.maxAge}`);\n        }\n        str += \"; Max-Age=\" + cookie2.maxAge;\n      }\n      if (cookie2.domain) {\n        if (!domainValueRegExp.test(cookie2.domain)) {\n          throw new TypeError(`option domain is invalid: ${cookie2.domain}`);\n        }\n        str += \"; Domain=\" + cookie2.domain;\n      }\n      if (cookie2.path) {\n        if (!pathValueRegExp.test(cookie2.path)) {\n          throw new TypeError(`option path is invalid: ${cookie2.path}`);\n        }\n        str += \"; Path=\" + cookie2.path;\n      }\n      if (cookie2.expires) {\n        if (!isDate(cookie2.expires) || !Number.isFinite(cookie2.expires.valueOf())) {\n          throw new TypeError(`option expires is invalid: ${cookie2.expires}`);\n        }\n        str += \"; Expires=\" + cookie2.expires.toUTCString();\n      }\n      if (cookie2.httpOnly) {\n        str += \"; HttpOnly\";\n      }\n      if (cookie2.secure) {\n        str += \"; Secure\";\n      }\n      if (cookie2.partitioned) {\n        str += \"; Partitioned\";\n      }\n      if (cookie2.priority) {\n        const priority = typeof cookie2.priority === \"string\" ? cookie2.priority.toLowerCase() : void 0;\n        switch (priority) {\n          case \"low\":\n            str += \"; Priority=Low\";\n            break;\n          case \"medium\":\n            str += \"; Priority=Medium\";\n            break;\n          case \"high\":\n            str += \"; Priority=High\";\n            break;\n          default:\n            throw new TypeError(`option priority is invalid: ${cookie2.priority}`);\n        }\n      }\n      if (cookie2.sameSite) {\n        const sameSite = typeof cookie2.sameSite === \"string\" ? cookie2.sameSite.toLowerCase() : cookie2.sameSite;\n        switch (sameSite) {\n          case true:\n          case \"strict\":\n            str += \"; SameSite=Strict\";\n            break;\n          case \"lax\":\n            str += \"; SameSite=Lax\";\n            break;\n          case \"none\":\n            str += \"; SameSite=None\";\n            break;\n          default:\n            throw new TypeError(`option sameSite is invalid: ${cookie2.sameSite}`);\n        }\n      }\n      return str;\n    }\n    function parseSetCookie(str, options) {\n      const dec = options?.decode || decode;\n      const len = str.length;\n      const endIdx = endIndex(str, 0, len);\n      const eqIdx = eqIndex(str, 0, endIdx);\n      const setCookie = eqIdx === -1 ? { name: \"\", value: dec(valueSlice(str, 0, endIdx)) } : {\n        name: valueSlice(str, 0, eqIdx),\n        value: dec(valueSlice(str, eqIdx + 1, endIdx))\n      };\n      let index = endIdx + 1;\n      while (index < len) {\n        const endIdx2 = endIndex(str, index, len);\n        const eqIdx2 = eqIndex(str, index, endIdx2);\n        const attr = eqIdx2 === -1 ? valueSlice(str, index, endIdx2) : valueSlice(str, index, eqIdx2);\n        const val = eqIdx2 === -1 ? void 0 : valueSlice(str, eqIdx2 + 1, endIdx2);\n        switch (attr.toLowerCase()) {\n          case \"httponly\":\n            setCookie.httpOnly = true;\n            break;\n          case \"secure\":\n            setCookie.secure = true;\n            break;\n          case \"partitioned\":\n            setCookie.partitioned = true;\n            break;\n          case \"domain\":\n            setCookie.domain = val;\n            break;\n          case \"path\":\n            setCookie.path = val;\n            break;\n          case \"max-age\":\n            if (val && maxAgeRegExp.test(val))\n              setCookie.maxAge = Number(val);\n            break;\n          case \"expires\":\n            if (!val)\n              break;\n            const date = new Date(val);\n            if (Number.isFinite(date.valueOf()))\n              setCookie.expires = date;\n            break;\n          case \"priority\":\n            if (!val)\n              break;\n            const priority = val.toLowerCase();\n            if (priority === \"low\" || priority === \"medium\" || priority === \"high\") {\n              setCookie.priority = priority;\n            }\n            break;\n          case \"samesite\":\n            if (!val)\n              break;\n            const sameSite = val.toLowerCase();\n            if (sameSite === \"lax\" || sameSite === \"strict\" || sameSite === \"none\") {\n              setCookie.sameSite = sameSite;\n            }\n            break;\n        }\n        index = endIdx2 + 1;\n      }\n      return setCookie;\n    }\n    function endIndex(str, min, len) {\n      const index = str.indexOf(\";\", min);\n      return index === -1 ? len : index;\n    }\n    function eqIndex(str, min, max) {\n      const index = str.indexOf(\"=\", min);\n      return index < max ? index : -1;\n    }\n    function valueSlice(str, min, max) {\n      let start = min;\n      let end = max;\n      do {\n        const code = str.charCodeAt(start);\n        if (code !== 32 && code !== 9)\n          break;\n      } while (++start < end);\n      while (end > start) {\n        const code = str.charCodeAt(end - 1);\n        if (code !== 32 && code !== 9)\n          break;\n        end--;\n      }\n      return str.slice(start, end);\n    }\n    function decode(str) {\n      if (str.indexOf(\"%\") === -1)\n        return str;\n      try {\n        return decodeURIComponent(str);\n      } catch (e) {\n        return str;\n      }\n    }\n    function isDate(val) {\n      return __toString.call(val) === \"[object Date]\";\n    }\n  }\n});\n\n// src/shims/cookie.ts\nvar allCookie = __toESM(require_dist(), 1);\nvar cookie = allCookie.default || allCookie;\nvar parse = cookie.parse;\nvar serialize = cookie.serialize;\nvar cookie_default = cookie;\nexport {\n  cookie_default as default,\n  parse,\n  serialize\n};\n","/**\n * Check if `vhost` is a valid suffix of `hostname` (top-domain)\n *\n * It means that `vhost` needs to be a suffix of `hostname` and we then need to\n * make sure that: either they are equal, or the character preceding `vhost` in\n * `hostname` is a '.' (it should not be a partial label).\n *\n * * hostname = 'not.evil.com' and vhost = 'vil.com'      => not ok\n * * hostname = 'not.evil.com' and vhost = 'evil.com'     => ok\n * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok\n */\nfunction shareSameDomainSuffix(hostname, vhost) {\n    if (hostname.endsWith(vhost)) {\n        return (hostname.length === vhost.length ||\n            hostname[hostname.length - vhost.length - 1] === '.');\n    }\n    return false;\n}\n/**\n * Given a hostname and its public suffix, extract the general domain.\n */\nfunction extractDomainWithSuffix(hostname, publicSuffix) {\n    // Locate the index of the last '.' in the part of the `hostname` preceding\n    // the public suffix.\n    //\n    // examples:\n    //   1. not.evil.co.uk  => evil.co.uk\n    //         ^    ^\n    //         |    | start of public suffix\n    //         | index of the last dot\n    //\n    //   2. example.co.uk   => example.co.uk\n    //     ^       ^\n    //     |       | start of public suffix\n    //     |\n    //     | (-1) no dot found before the public suffix\n    const publicSuffixIndex = hostname.length - publicSuffix.length - 2;\n    const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);\n    // No '.' found, then `hostname` is the general domain (no sub-domain)\n    if (lastDotBeforeSuffixIndex === -1) {\n        return hostname;\n    }\n    // Extract the part between the last '.'\n    return hostname.slice(lastDotBeforeSuffixIndex + 1);\n}\n/**\n * Detects the domain based on rules and upon and a host string\n */\nexport default function getDomain(suffix, hostname, options) {\n    // Check if `hostname` ends with a member of `validHosts`.\n    if (options.validHosts !== null) {\n        const validHosts = options.validHosts;\n        for (const vhost of validHosts) {\n            if ( /*@__INLINE__*/shareSameDomainSuffix(hostname, vhost)) {\n                return vhost;\n            }\n        }\n    }\n    let numberOfLeadingDots = 0;\n    if (hostname.startsWith('.')) {\n        while (numberOfLeadingDots < hostname.length &&\n            hostname[numberOfLeadingDots] === '.') {\n            numberOfLeadingDots += 1;\n        }\n    }\n    // If `hostname` is a valid public suffix, then there is no domain to return.\n    // Since we already know that `getPublicSuffix` returns a suffix of `hostname`\n    // there is no need to perform a string comparison and we only compare the\n    // size.\n    if (suffix.length === hostname.length - numberOfLeadingDots) {\n        return null;\n    }\n    // To extract the general domain, we start by identifying the public suffix\n    // (if any), then consider the domain to be the public suffix with one added\n    // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:\n    // `co.uk`, then we take one more level: `evil`, giving the final result:\n    // `evil.co.uk`).\n    return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);\n}\n//# sourceMappingURL=domain.js.map","/**\n * Return the part of domain without suffix.\n *\n * Example: for domain 'foo.com', the result would be 'foo'.\n */\nexport default function getDomainWithoutSuffix(domain, suffix) {\n    // Note: here `domain` and `suffix` cannot have the same length because in\n    // this case we set `domain` to `null` instead. It is thus safe to assume\n    // that `suffix` is shorter than `domain`.\n    return domain.slice(0, -suffix.length - 1);\n}\n//# sourceMappingURL=domain-without-suffix.js.map","/**\n * Matches an ASCII tab (U+0009) or newline (U+000A / U+000D). The WHATWG URL\n * parser strips these before parsing; we only allocate a cleaned copy (and\n * re-parse) on the rare input that actually contains one.\n */\nconst CONTROL_CHARS = /[\\t\\n\\r]/g;\n// Set by `extractHostname` (a module-scope flag, read synchronously by\n// `parseImpl` right after the call — same pattern as the reused RESULT object).\n// `true` ONLY when extraction validated the returned host inline (a confirmed-\n// valid, \"simple\" authority) so `parseImpl` can skip the separate\n// `isValidHostname` pass. `false` in every other case (validation disabled, a\n// complex authority — userinfo/port/brackets/trailing-dot/control — an invalid\n// host, or a non-main return path); `parseImpl` then validates as usual. The\n// fast path can only ever SKIP a redundant scan for hosts already known valid,\n// never accept an invalid one.\nexport let extractedHostnameValidated = false;\n/**\n * True if char `code` is a valid hostname character. This is the per-char half\n * of `is-valid.ts`'s `isValidAscii` (a-z, 0-9, > U+007F) PLUS three additions:\n * A-Z (the host is lowercased before validation, so uppercase ≡ a valid\n * lowercase letter) and '-' / '_' (valid inside a label). KEEP IN SYNC with\n * `is-valid.ts`: these rules are deliberately duplicated to validate during\n * extraction, so any change to the accepted character set there must be\n * mirrored here (and vice-versa).\n */\nfunction isValidHostnameChar(code) {\n    return ((code >= 97 && code <= 122) || // a-z\n        (code >= 48 && code <= 57) || // 0-9\n        code > 127 || // non-ASCII (accepted, not punycode-checked)\n        (code >= 65 && code <= 90) || // A-Z (becomes valid once lowercased)\n        code === 45 || // '-'\n        code === 95 // '_'\n    );\n}\n/**\n * Classify scheme `url.slice(schemeStart, colonIndex)` as a WHATWG special\n * scheme without allocating a substring (case-insensitive via `| 32`).\n * Special schemes: ftp, file, http, https, ws, wss\n * (https://url.spec.whatwg.org/#special-scheme).\n *\n * @returns 0 = not special, 1 = special, 2 = file (its host sits only between\n *          \"//\" and the next slash).\n */\nfunction getSpecialScheme(url, schemeStart, colonIndex) {\n    const length = colonIndex - schemeStart;\n    const c0 = url.charCodeAt(schemeStart) | 32;\n    if (length === 2) {\n        return c0 === 119 && (url.charCodeAt(schemeStart + 1) | 32) === 115 ? 1 : 0; // ws\n    }\n    else if (length === 3) {\n        const c1 = url.charCodeAt(schemeStart + 1) | 32;\n        const c2 = url.charCodeAt(schemeStart + 2) | 32;\n        if (c0 === 119 && c1 === 115 && c2 === 115)\n            return 1; // wss\n        if (c0 === 102 && c1 === 116 && c2 === 112)\n            return 1; // ftp\n        return 0;\n    }\n    else if (length === 4) {\n        const c1 = url.charCodeAt(schemeStart + 1) | 32;\n        const c2 = url.charCodeAt(schemeStart + 2) | 32;\n        const c3 = url.charCodeAt(schemeStart + 3) | 32;\n        if (c0 === 104 && c1 === 116 && c2 === 116 && c3 === 112)\n            return 1; // http\n        if (c0 === 102 && c1 === 105 && c2 === 108 && c3 === 101)\n            return 2; // file\n        return 0;\n    }\n    else if (length === 5) {\n        return c0 === 104 &&\n            (url.charCodeAt(schemeStart + 1) | 32) === 116 &&\n            (url.charCodeAt(schemeStart + 2) | 32) === 116 &&\n            (url.charCodeAt(schemeStart + 3) | 32) === 112 &&\n            (url.charCodeAt(schemeStart + 4) | 32) === 115\n            ? 1\n            : 0; // https\n    }\n    return 0;\n}\n/**\n * Extract a hostname from `url`, matching a WHATWG URL parser's host-boundary\n * behaviour (https://url.spec.whatwg.org/#concept-basic-url-parser) for tldts'\n * scope. It deliberately does NOT normalise the host (no IDNA/punycode or IPv4\n * canonicalisation; IPv6 brackets are stripped, not compressed), strips trailing\n * dots, and stays lenient where a strict parser rejects (bare host:port,\n * out-of-range port, user@host) — all documented deviations.\n *\n * @param urlIsValidHostname - when true, `url` is already a valid hostname and is\n *   returned by the same reference (factory.ts skips re-validation on that\n *   identity), keeping the common path allocation-free.\n * @param validate - when true, validate the host inline during the authority\n *   scan and publish the verdict via `extractedHostnameValidated` so `parseImpl`\n *   can skip the redundant `isValidHostname` pass for simple authorities.\n */\nexport default function extractHostname(url, urlIsValidHostname, validate = false) {\n    let start = 0;\n    let end = url.length;\n    let hasUpper = false;\n    let isSpecial = false;\n    extractedHostnameValidated = false;\n    if (!urlIsValidHostname) {\n        // Data URLs never carry a host (and may be huge — short-circuit them).\n        if (url.startsWith('data:')) {\n            return null;\n        }\n        // WHATWG step 1: trim leading/trailing C0 control or space (<= U+0020).\n        // Tab/newline elsewhere are handled lazily below.\n        while (start < url.length && url.charCodeAt(start) <= 32) {\n            start += 1;\n        }\n        while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {\n            end -= 1;\n        }\n        if (url.charCodeAt(start) === 47 /* '/' */ &&\n            url.charCodeAt(start + 1) === 47 /* '/' */) {\n            // Scheme-relative reference (\"//host/path\").\n            start += 2;\n        }\n        else {\n            const indexOfProtocol = url.indexOf(':/', start);\n            if (indexOfProtocol !== -1) {\n                // \"scheme://…\". Classify the scheme, then position `start` at the host.\n                const special = getSpecialScheme(url, start, indexOfProtocol);\n                if (special === 1) {\n                    // Special scheme: skip the run of '/' and '\\' after it\n                    // (special-authority-(ignore-)slashes states; '\\' acts as '/').\n                    isSpecial = true;\n                    start = indexOfProtocol + 2;\n                    while (url.charCodeAt(start) === 47 /* '/' */ ||\n                        url.charCodeAt(start) === 92 /* '\\' */) {\n                        start += 1;\n                    }\n                }\n                else if (special === 2) {\n                    // file: the host is only what sits between \"//\" and the next slash, so\n                    // \"file://h/x\" => \"h\" but \"file:///x\" / \"file:/x\" => no host.\n                    isSpecial = true;\n                    start = indexOfProtocol + 1;\n                    let slashes = 0;\n                    while ((url.charCodeAt(start) === 47 || url.charCodeAt(start) === 92) &&\n                        slashes < 2) {\n                        start += 1;\n                        slashes += 1;\n                    }\n                    if (slashes < 2) {\n                        return null;\n                    }\n                }\n                else {\n                    // Unknown scheme: validate the WHATWG scheme grammar [A-Za-z0-9+.-];\n                    // a control char means it was split by a tab/newline (strip + re-parse).\n                    for (let i = start; i < indexOfProtocol; i += 1) {\n                        const code = url.charCodeAt(i) | 32;\n                        if (!(((code >= 97 && code <= 122) || // [a, z]\n                            (code >= 48 && code <= 57) || // [0, 9]\n                            code === 46 || // '.'\n                            code === 45 || // '-'\n                            code === 43) // '+'\n                        )) {\n                            const raw = url.charCodeAt(i);\n                            if (raw === 9 || raw === 10 || raw === 13) {\n                                return extractHostname(url.replace(CONTROL_CHARS, ''), urlIsValidHostname, validate);\n                            }\n                            return null;\n                        }\n                    }\n                    // A non-special scheme has an authority only after \"//\" (else it is an\n                    // opaque path with no host). `indexOf(':/')` already gave the first '/'.\n                    if (url.charCodeAt(indexOfProtocol + 2) === 47 /* '/' */) {\n                        start = indexOfProtocol + 3;\n                    }\n                    else {\n                        return null;\n                    }\n                }\n            }\n            else if (url.charCodeAt(start) !== 91 /* '[' */) {\n                // Cold path: no scheme \"://\", and not a bare IPv6 literal (whose first\n                // ':' would otherwise look like a scheme separator; \"[…]\" falls through\n                // to the ipv6 handling below). May be a bare host, a host:port, a\n                // user@host, a slash-less special scheme (\"https:host\"), or an opaque\n                // URI (\"mailto:\", \"tel:\", \"urn:…\").\n                let indexOfColon = -1;\n                for (let i = start; i < end; i += 1) {\n                    const code = url.charCodeAt(i);\n                    if (code === 9 || code === 10 || code === 13) {\n                        return extractHostname(url.replace(CONTROL_CHARS, ''), urlIsValidHostname, validate);\n                    }\n                    if (code === 58 /* ':' */) {\n                        indexOfColon = i;\n                        break;\n                    }\n                    if (code === 47 || code === 92 || code === 63 || code === 35) {\n                        break;\n                    }\n                }\n                if (indexOfColon !== -1) {\n                    // An '@' before the next delimiter => the ':' is userinfo, not a\n                    // scheme (\"user:pass@host\", \"mailto:a@b\"): keep the whole authority.\n                    let hasIdentifier = false;\n                    for (let i = indexOfColon + 1; i < end; i += 1) {\n                        const code = url.charCodeAt(i);\n                        if (code === 47 || code === 92 || code === 63 || code === 35) {\n                            break;\n                        }\n                        if (code === 64 /* '@' */) {\n                            hasIdentifier = true;\n                            break;\n                        }\n                    }\n                    if (!hasIdentifier) {\n                        // All-digits after ':' => a bare \"host:port\" (tldts accepts\n                        // hostnames too); keep `start` and let the port handling trim it.\n                        let allDigits = true;\n                        let i = indexOfColon + 1;\n                        for (; i < end; i += 1) {\n                            const code = url.charCodeAt(i);\n                            if (code === 47 || code === 92 || code === 63 || code === 35) {\n                                break;\n                            }\n                            if (code < 48 /* '0' */ || code > 57 /* '9' */) {\n                                allDigits = false;\n                                break;\n                            }\n                        }\n                        if (i === indexOfColon + 1) {\n                            allDigits = false; // nothing after ':' => not a port\n                        }\n                        if (!allDigits) {\n                            const special = getSpecialScheme(url, start, indexOfColon);\n                            if (special === 0) {\n                                // No \"://\" anywhere on the cold path and not a special scheme.\n                                // A second ':' before the host's end marks a bare, unbracketed\n                                // IPv6 literal (\"2a01:e35::1\"): fall through and let the host\n                                // loop + isIp classify it. Without one this is an opaque path\n                                // with no host (\"mailto:x\", \"foo:bar\").\n                                let isBareIpv6 = false;\n                                for (let j = indexOfColon + 1; j < end; j += 1) {\n                                    const code = url.charCodeAt(j);\n                                    if (code === 47 ||\n                                        code === 92 ||\n                                        code === 63 ||\n                                        code === 35) {\n                                        break;\n                                    }\n                                    if (code === 58 /* ':' */) {\n                                        isBareIpv6 = true;\n                                        break;\n                                    }\n                                }\n                                if (!isBareIpv6) {\n                                    return null;\n                                }\n                            }\n                            else {\n                                isSpecial = true;\n                                start = indexOfColon + 1;\n                                if (special === 2) {\n                                    // file (e.g. \"file:\\\\host\"): host only between \"//\" and next slash.\n                                    let slashes = 0;\n                                    while ((url.charCodeAt(start) === 47 ||\n                                        url.charCodeAt(start) === 92) &&\n                                        slashes < 2) {\n                                        start += 1;\n                                        slashes += 1;\n                                    }\n                                    if (slashes < 2) {\n                                        return null;\n                                    }\n                                }\n                                else {\n                                    while (url.charCodeAt(start) === 47 ||\n                                        url.charCodeAt(start) === 92) {\n                                        start += 1;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        // Find the host's end: first '/', '?' or '#' (and '\\' for special URLs,\n        // which WHATWG treats like '/'). Track the last '@', ']' and ':' for\n        // userinfo, ipv6 and port, plus the first ':' of the host (reset at each\n        // '@') to tell a bare IPv6 (>= 2 colons) from a host:port (exactly one);\n        // flag uppercase and a stray tab/newline. The loop is split on `code < 64`\n        // so common host characters take fewer comparisons.\n        //\n        // When `validate`, also accumulate `is-valid.ts`'s checks over the scanned\n        // run so a simple authority's host can be validated in this single pass.\n        // `vValid` only stays meaningful for a \"simple\" authority (no userinfo, port,\n        // brackets, control or trailing dot); those cases clear it / are rejected by\n        // the guard below, falling back to `isValidHostname`.\n        let indexOfIdentifier = -1;\n        let indexOfClosingBracket = -1;\n        let indexOfPort = -1;\n        let indexOfFirstColon = -1;\n        let hasControl = false;\n        let vValid = validate; // seeded true when validating; cleared on the first invalid char\n        let vLastDot = start - 1; // mirrors is-valid.ts `lastDotIndex = -1` at host start\n        let vLastCode = -1;\n        if (validate && start < end) {\n            // First-char rule: must be a valid host char, '.', or '_' (NOT '-').\n            const c0 = url.charCodeAt(start);\n            if (!(\n            /*@__INLINE__*/ (isValidHostnameChar(c0) ||\n                c0 === 46 /* '.' */ ||\n                c0 === 95 /* '_' */)) ||\n                c0 === 45 /* '-' (isValidHostnameChar allows it mid-label, not first) */) {\n                vValid = false;\n            }\n        }\n        for (let i = start; i < end; i += 1) {\n            const code = url.charCodeAt(i);\n            if (code < 64) {\n                if (code === 47 || code === 35 || code === 63) {\n                    end = i;\n                    break;\n                }\n                else if (code === 58 /* ':' */) {\n                    if (indexOfFirstColon === -1) {\n                        indexOfFirstColon = i;\n                    }\n                    indexOfPort = i;\n                }\n                else if (code === 9 || code === 10 || code === 13) {\n                    hasControl = true;\n                }\n                else if (validate) {\n                    if (code === 46 /* '.' */) {\n                        if (i - vLastDot > 64 || vLastCode === 46 || vLastCode === 45) {\n                            vValid = false;\n                        }\n                        vLastDot = i;\n                    }\n                    else if (code < 48 || code > 57) {\n                        // < 64 and not a delimiter/dot/digit => only '-' (45) is a valid\n                        // host char here; everything else (space, %, !, etc.) is invalid.\n                        // A '-' must also not START a label (the byte right after a '.') —\n                        // mirrors is-valid.ts; the first label is covered by the first-char\n                        // rule above. (RFC 1034 §3.5 / RFC 1035 §2.3.1 LDH.)\n                        if (code !== 45 || vLastCode === 46 /* label-leading '-' */) {\n                            vValid = false;\n                        }\n                    }\n                }\n            }\n            else if (isSpecial && code === 92 /* '\\' */) {\n                end = i;\n                break;\n            }\n            else if (code === 64 /* '@' */) {\n                indexOfIdentifier = i;\n                indexOfFirstColon = -1; // colons before '@' are userinfo, not the host\n            }\n            else if (code === 93 /* ']' */) {\n                indexOfClosingBracket = i;\n            }\n            else if (code >= 65 && code <= 90) {\n                hasUpper = true;\n            }\n            else if (validate && !( /*@__INLINE__*/isValidHostnameChar(code))) {\n                // >= 64, not '@'/']'/upper: valid only if a-z, '_', or non-ASCII.\n                vValid = false;\n            }\n            if (validate) {\n                vLastCode = code;\n            }\n        }\n        // A tab/newline inside the authority: strip everything and re-parse (rare).\n        if (hasControl) {\n            return extractHostname(url.replace(CONTROL_CHARS, ''), urlIsValidHostname, validate);\n        }\n        // Skip userinfo. '>= start' so an empty userinfo (\"http://@host\") works too.\n        if (indexOfIdentifier !== -1 &&\n            indexOfIdentifier >= start &&\n            indexOfIdentifier < end) {\n            start = indexOfIdentifier + 1;\n        }\n        if (url.charCodeAt(start) === 91 /* '[' */) {\n            // ipv6 address: return what is between the brackets, or null if unclosed.\n            if (indexOfClosingBracket !== -1) {\n                return url.slice(start + 1, indexOfClosingBracket).toLowerCase();\n            }\n            return null;\n        }\n        else if (indexOfPort !== -1 &&\n            indexOfPort > start &&\n            indexOfPort < end &&\n            // A host:port has exactly one ':' in the host (so its first ':' is its\n            // last); a bare, unbracketed IPv6 literal (\"2a01:e35::1\") has >= 2, so\n            // its first ':' precedes the last. Only the former has a ':port' to trim.\n            indexOfFirstColon === indexOfPort) {\n            end = indexOfPort; // trim ':port'\n        }\n        // Empty authority (\"http://\", \"file:///path\", \"//\"); only reachable here via\n        // extraction — a bare valid hostname never lands here.\n        if (start >= end) {\n            return null;\n        }\n        // Publish the inline-validation verdict — but only for a \"simple\" authority,\n        // where the scanned run equals the final host: no userinfo skip, no port\n        // trim, no brackets, no trailing dot (trimmed below), and length within RFC\n        // limits. Anything else leaves it `false` so `parseImpl` re-validates.\n        //\n        // Every clause below is load-bearing for CORRECTNESS, not just speed: the\n        // loop accumulates `vValid` over the whole scanned run (it does not stop at\n        // ':' or '@', so any port/userinfo bytes are included), so the verdict is\n        // only sound when that run equals the final host. Do not drop a clause as\n        // \"redundant\" — e.g. without `indexOfPort === -1`, `host:8080` would be\n        // wrongly accepted.\n        if (validate &&\n            vValid &&\n            indexOfIdentifier === -1 &&\n            indexOfPort === -1 &&\n            indexOfClosingBracket === -1 &&\n            url.charCodeAt(end - 1) !== 46 /* no trailing dot */ &&\n            end - start <= 255 && // total length\n            end - vLastDot - 1 <= 63 && // last label length\n            vLastCode !== 45 /* last char not '-' */) {\n            extractedHostnameValidated = true;\n        }\n    }\n    // Trim trailing dots\n    while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {\n        end -= 1;\n    }\n    const hostname = start !== 0 || end !== url.length ? url.slice(start, end) : url;\n    if (hasUpper) {\n        return hostname.toLowerCase();\n    }\n    return hostname;\n}\n//# sourceMappingURL=extract-hostname.js.map","/**\n * Check if a hostname is an IP. You should be aware that this only works\n * because `hostname` is already garanteed to be a valid hostname!\n */\nfunction isProbablyIpv4(hostname) {\n    // Cannot be shorted than 1.1.1.1\n    if (hostname.length < 7) {\n        return false;\n    }\n    // Cannot be longer than: 255.255.255.255\n    if (hostname.length > 15) {\n        return false;\n    }\n    let numberOfDots = 0;\n    for (let i = 0; i < hostname.length; i += 1) {\n        const code = hostname.charCodeAt(i);\n        if (code === 46 /* '.' */) {\n            numberOfDots += 1;\n        }\n        else if (code < 48 /* '0' */ || code > 57 /* '9' */) {\n            return false;\n        }\n    }\n    return (numberOfDots === 3 &&\n        hostname.charCodeAt(0) !== 46 /* '.' */ &&\n        hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */);\n}\n/**\n * Similar to isProbablyIpv4.\n */\nfunction isProbablyIpv6(hostname) {\n    if (hostname.length < 3) {\n        return false;\n    }\n    let start = hostname.startsWith('[') ? 1 : 0;\n    let end = hostname.length;\n    if (hostname[end - 1] === ']') {\n        end -= 1;\n    }\n    // We only consider the maximum size of a normal IPV6. Note that this will\n    // fail on so-called \"IPv4 mapped IPv6 addresses\" but this is a corner-case\n    // and a proper validation library should be used for these.\n    if (end - start > 39) {\n        return false;\n    }\n    let hasColon = false;\n    for (; start < end; start += 1) {\n        const code = hostname.charCodeAt(start);\n        if (code === 58 /* ':' */) {\n            hasColon = true;\n        }\n        else if (!(((code >= 48 && code <= 57) || // 0-9\n            (code >= 97 && code <= 102) || // a-f\n            (code >= 65 && code <= 70)) // A-F (RFC 4291 §2.2: an IPv6 hextet is hex digits only)\n        )) {\n            return false;\n        }\n    }\n    return hasColon;\n}\n/**\n * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).\n * This *will not* work on any string. We need `hostname` to be a valid\n * hostname.\n */\nexport default function isIp(hostname) {\n    return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);\n}\n//# sourceMappingURL=is-ip.js.map","/**\n * Special-use domain names from the IANA \"Special-Use Domain Names\" registry:\n * the authoritative list, created by RFC 6761 and maintained as new RFCs add to\n * it: https://www.iana.org/assignments/special-use-domain-names/\n * Snapshot: 2026-05-24. (RFC 6761 is not obsoleted; draft-hoffman-rfc6761bis\n * proposes to retire its prose but keep this registry, so the registry is the\n * source of truth; re-sync this list against it.)\n *\n * These names never correspond to a public registration, yet neither\n * `isIcann` nor `isPrivate` marks one as special-use: most are absent from the\n * Public Suffix List (so `a.test` looks like a registrable domain), and the\n * few that are listed (`onion`, `home.arpa`) appear there as ordinary ICANN\n * suffixes. `isSpecialUse` is the single signal that covers them all.\n *\n * Per the registry and RFC 6761 (\"and any names falling within these domains\"),\n * the designation covers each listed name AND all of its sub-domains. DNS labels\n * are case-insensitive (RFC 4343); `hostname` is expected to be already\n * lower-cased and trailing-dot-stripped, as produced by `extractHostname`, the\n * same normalization the Public-Suffix-List lookup relies on.\n *\n * Two groups of registry entries are intentionally excluded: the numeric\n * reverse-DNS delegation zones (`10.in-addr.arpa`, the `*.ip6.arpa` ranges, …),\n * which are reverse-DNS PTR zones rather than hostnames and whose parents\n * (`in-addr.arpa`/`ip6.arpa`) are already in the Public Suffix List; and the\n * deprecated `eap-noob.arpa` entry.\n */\nconst SPECIAL_USE_DOMAINS = [\n    'test', // RFC 6761\n    'localhost', // RFC 6761\n    'invalid', // RFC 6761\n    'example', // RFC 6761\n    'example.com', // RFC 6761\n    'example.net', // RFC 6761\n    'example.org', // RFC 6761\n    'local', // RFC 6762 (mDNS)\n    'onion', // RFC 7686 (Tor)\n    'alt', // RFC 9476\n    'home.arpa', // RFC 8375\n    'ipv4only.arpa', // RFC 8880\n    'resolver.arpa', // RFC 9462\n    'service.arpa', // RFC 9665\n    '6tisch.arpa', // RFC 9031\n    'eap.arpa', // RFC 9965\n];\n/**\n * Return `true` if `hostname` is, or is a sub-domain of, a special-use domain\n * (see the registry note above). Expects an already-normalized `hostname`.\n */\nexport default function isSpecialUse(hostname) {\n    for (const name of SPECIAL_USE_DOMAINS) {\n        // Match on a label boundary: `hostname` is either exactly `name` or ends\n        // with `.name` (so `latest` is not matched by `test`, nor `myexample.com`\n        // by `example.com`).\n        if (hostname.endsWith(name) &&\n            (hostname.length === name.length ||\n                hostname.charCodeAt(hostname.length - name.length - 1) === 46) /* '.' */) {\n            return true;\n        }\n    }\n    return false;\n}\n//# sourceMappingURL=is-special-use.js.map","/**\n * Implements fast shallow verification of hostnames. This does not perform a\n * struct check on the content of labels (classes of Unicode characters, etc.)\n * but instead check that the structure is valid (number of labels, length of\n * labels, etc.).\n *\n * If you need stricter validation, consider using an external library.\n */\n// KEEP IN SYNC with `extract-hostname.ts` `isValidHostnameChar` + its inline\n// scan/verdict, which duplicate these structural rules to validate during\n// extraction (a perf fusion). That copy additionally accepts A-Z (the host is\n// not yet lowercased there) and folds in '-' / '_'. Any change to the accepted\n// character set or the label/length rules here must be mirrored there.\nfunction isValidAscii(code) {\n    return ((code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127);\n}\n/**\n * Check if a hostname string is valid. It's usually a preliminary check before\n * trying to use getDomain or anything else.\n *\n * Beware: it does not check if the TLD exists.\n */\nexport default function (hostname) {\n    if (hostname.length > 255) {\n        return false;\n    }\n    if (hostname.length === 0) {\n        return false;\n    }\n    if (\n    /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&\n        hostname.charCodeAt(0) !== 46 && // '.' (dot)\n        hostname.charCodeAt(0) !== 95 // '_' (underscore)\n    ) {\n        return false;\n    }\n    // Validate hostname according to RFC\n    let lastDotIndex = -1;\n    let lastCharCode = -1;\n    const len = hostname.length;\n    for (let i = 0; i < len; i += 1) {\n        const code = hostname.charCodeAt(i);\n        if (code === 46 /* '.' */) {\n            if (\n            // Check that previous label is < 63 bytes long (64 = 63 + '.')\n            i - lastDotIndex > 64 ||\n                // Check that previous character was not already a '.'\n                lastCharCode === 46 ||\n                // Check that the previous label does not end with '-' (RFC 1035 §2.3.1 LDH).\n                // '_' is intentionally NOT restricted: DNS allows any octet (RFC 2181 §11) and\n                // WHATWG URL does not treat '_' as a forbidden host code point.\n                lastCharCode === 45) {\n                return false;\n            }\n            lastDotIndex = i;\n        }\n        else if (\n        // A forbidden character in the label...\n        !( /*@__INLINE__*/(isValidAscii(code) || code === 45 || code === 95)) ||\n            // ...or a '-' starting a label (the byte right after a '.'). A label must\n            // not begin with a hyphen (RFC 1034 §3.5 / RFC 1035 §2.3.1 LDH, as amended\n            // by RFC 1123 §2.1; cf. UTS #46 CheckHyphens). The first label is covered by\n            // the leading-character guard above; mirrors the trailing-'-' rule below.\n            (code === 45 && lastCharCode === 46)) {\n            return false;\n        }\n        lastCharCode = code;\n    }\n    return (\n    // Check that last label is shorter than 63 chars\n    len - lastDotIndex - 1 <= 63 &&\n        // Check that the last character is an allowed trailing label character.\n        // Since we already checked that the char is a valid hostname character,\n        // we only need to check that it's different from '-'.\n        lastCharCode !== 45);\n}\n//# sourceMappingURL=is-valid.js.map","function setDefaultsImpl({ allowIcannDomains = true, allowPrivateDomains = false, detectIp = true, detectSpecialUse = false, extractHostname = true, mixedInputs = true, validHosts = null, validateHostname = true, }) {\n    return {\n        allowIcannDomains,\n        allowPrivateDomains,\n        detectIp,\n        detectSpecialUse,\n        extractHostname,\n        mixedInputs,\n        validHosts,\n        validateHostname,\n    };\n}\nconst DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});\nexport function setDefaults(options) {\n    if (options === undefined) {\n        return DEFAULT_OPTIONS;\n    }\n    return /*@__INLINE__*/ setDefaultsImpl(options);\n}\n//# sourceMappingURL=options.js.map","/**\n * Returns the subdomain of a hostname string\n */\nexport default function getSubdomain(hostname, domain) {\n    // If `hostname` and `domain` are the same, then there is no sub-domain\n    if (domain.length === hostname.length) {\n        return '';\n    }\n    return hostname.slice(0, -domain.length - 1);\n}\n//# sourceMappingURL=subdomain.js.map","/**\n * Implement a factory allowing to plug different implementations of suffix\n * lookup (e.g.: using a trie or the packed hashes datastructures). This is used\n * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.\n */\nimport getDomain from './domain';\nimport getDomainWithoutSuffix from './domain-without-suffix';\nimport extractHostname, { extractedHostnameValidated, } from './extract-hostname';\nimport isIp from './is-ip';\nimport isSpecialUse from './is-special-use';\nimport isValidHostname from './is-valid';\nimport { setDefaults } from './options';\nimport getSubdomain from './subdomain';\nexport function getEmptyResult() {\n    return {\n        domain: null,\n        domainWithoutSuffix: null,\n        hostname: null,\n        isIcann: null,\n        isIp: null,\n        isPrivate: null,\n        isSpecialUse: null,\n        publicSuffix: null,\n        subdomain: null,\n    };\n}\nexport function resetResult(result) {\n    result.domain = null;\n    result.domainWithoutSuffix = null;\n    result.hostname = null;\n    result.isIcann = null;\n    result.isIp = null;\n    result.isPrivate = null;\n    result.isSpecialUse = null;\n    result.publicSuffix = null;\n    result.subdomain = null;\n}\nexport function parseImpl(url, step, suffixLookup, partialOptions, result) {\n    const options = /*@__INLINE__*/ setDefaults(partialOptions);\n    // Very fast approximate check to make sure `url` is a string. This is needed\n    // because the library will not necessarily be used in a typed setup and\n    // values of arbitrary types might be given as argument.\n    if (typeof url !== 'string') {\n        return result;\n    }\n    // Extract hostname from `url` only if needed. This can be made optional\n    // using `options.extractHostname`. This option will typically be used\n    // whenever we are sure the inputs to `parse` are already hostnames and not\n    // arbitrary URLs.\n    //\n    // `mixedInput` allows to specify if we expect a mix of URLs and hostnames\n    // as input. If only hostnames are expected then `extractHostname` can be\n    // set to `false` to speed-up parsing. If only URLs are expected then\n    // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint\n    // and will not change the behavior of the library.\n    // Whether `url` itself was already a valid hostname (only computed on the\n    // mixedInputs path). Lets us skip the post-extraction validation below when\n    // extractHostname returned `url` unchanged (same reference).\n    let urlIsValid = false;\n    if (!options.extractHostname) {\n        result.hostname = url;\n    }\n    else if (options.mixedInputs) {\n        urlIsValid = isValidHostname(url);\n        result.hostname = extractHostname(url, urlIsValid, options.validateHostname);\n    }\n    else {\n        result.hostname = extractHostname(url, false, options.validateHostname);\n    }\n    // Check if `hostname` is a valid ip address\n    if (options.detectIp && result.hostname !== null) {\n        result.isIp = isIp(result.hostname);\n        if (result.isIp) {\n            return result;\n        }\n    }\n    // Perform hostname validation if enabled. If hostname is not valid, no need to\n    // go further as there will be no valid domain or sub-domain. This validation\n    // is applied before any early returns to ensure consistent behavior across\n    // all API methods including getHostname().\n    if (options.validateHostname &&\n        options.extractHostname &&\n        result.hostname !== null &&\n        // Skip the re-scan when `url` was already validated and extractHostname\n        // returned it unchanged (same reference => identical string, still valid).\n        !(urlIsValid && result.hostname === url) &&\n        // Skip the re-scan when extractHostname already validated the host inline\n        // (a confirmed-valid simple authority — see extract-hostname.ts).\n        !extractedHostnameValidated &&\n        !isValidHostname(result.hostname)) {\n        result.hostname = null;\n        return result;\n    }\n    if (step === 0 /* FLAG.HOSTNAME */ || result.hostname === null) {\n        return result;\n    }\n    // Flag special-use domains, only when opted in (`detectSpecialUse`) and only\n    // for the full `parse()` result (FLAG.ALL). Computed here, before the\n    // public-suffix/domain early-returns below, so single-label names like\n    // `localhost` (which have no registrable domain) are still flagged.\n    if (step === 5 /* FLAG.ALL */ && options.detectSpecialUse) {\n        result.isSpecialUse = isSpecialUse(result.hostname);\n    }\n    // Extract public suffix\n    suffixLookup(result.hostname, options, result);\n    if (step === 2 /* FLAG.PUBLIC_SUFFIX */ || result.publicSuffix === null) {\n        return result;\n    }\n    // Extract domain\n    result.domain = getDomain(result.publicSuffix, result.hostname, options);\n    if (step === 3 /* FLAG.DOMAIN */ || result.domain === null) {\n        return result;\n    }\n    // Extract subdomain\n    result.subdomain = getSubdomain(result.hostname, result.domain);\n    if (step === 4 /* FLAG.SUB_DOMAIN */) {\n        return result;\n    }\n    // Extract domain without suffix\n    result.domainWithoutSuffix = getDomainWithoutSuffix(result.domain, result.publicSuffix);\n    return result;\n}\n//# sourceMappingURL=factory.js.map","export default function (hostname, options, out) {\n    // Fast path for very popular suffixes; this allows to by-pass lookup\n    // completely as well as any extra allocation or string manipulation.\n    if (!options.allowPrivateDomains && hostname.length > 3) {\n        const last = hostname.length - 1;\n        const c3 = hostname.charCodeAt(last);\n        const c2 = hostname.charCodeAt(last - 1);\n        const c1 = hostname.charCodeAt(last - 2);\n        const c0 = hostname.charCodeAt(last - 3);\n        if (c3 === 109 /* 'm' */ &&\n            c2 === 111 /* 'o' */ &&\n            c1 === 99 /* 'c' */ &&\n            c0 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'com';\n            return true;\n        }\n        else if (c3 === 103 /* 'g' */ &&\n            c2 === 114 /* 'r' */ &&\n            c1 === 111 /* 'o' */ &&\n            c0 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'org';\n            return true;\n        }\n        else if (c3 === 117 /* 'u' */ &&\n            c2 === 100 /* 'd' */ &&\n            c1 === 101 /* 'e' */ &&\n            c0 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'edu';\n            return true;\n        }\n        else if (c3 === 118 /* 'v' */ &&\n            c2 === 111 /* 'o' */ &&\n            c1 === 103 /* 'g' */ &&\n            c0 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'gov';\n            return true;\n        }\n        else if (c3 === 116 /* 't' */ &&\n            c2 === 101 /* 'e' */ &&\n            c1 === 110 /* 'n' */ &&\n            c0 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'net';\n            return true;\n        }\n        else if (c3 === 101 /* 'e' */ &&\n            c2 === 100 /* 'd' */ &&\n            c1 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'de';\n            return true;\n        }\n    }\n    return false;\n}\n//# sourceMappingURL=fast-path.js.map","// Auto-generated flat public-suffix trie. Do not edit.\nexport const nodeFlags = /*#__PURE__*/ new Uint8Array([1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 1, 0, 0, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 2, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0, 2, 0, 1, 1, 0, 2, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]);\nexport const edgeStart = /*#__PURE__*/ new Uint16Array([0, 0, 0, 9, 10, 17, 105, 110, 116, 123, 129, 135, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 156, 158, 225, 238, 240, 241, 242, 257, 264, 265, 268, 269, 270, 273, 275, 294, 295, 297, 306, 311, 312, 330, 331, 334, 336, 337, 339, 373, 374, 376, 379, 380, 384, 386, 390, 393, 425, 428, 441, 442, 450, 451, 453, 463, 477, 478, 479, 488, 489, 526, 531, 547, 567, 573, 614, 615, 642, 669, 670, 818, 824, 827, 828, 829, 834, 839, 848, 870, 871, 872, 873, 874, 875, 876, 894, 896, 897, 900, 902, 903, 905, 907, 922, 937, 942, 943, 945, 946, 947, 948, 949, 951, 954, 959, 960, 961, 963, 964, 967, 970, 971, 972, 985, 987, 999, 1010, 1018, 1020, 1060, 1063, 1067, 1068, 1070, 1073, 1084, 1086, 1096, 1098, 1104, 1106, 1107, 1109, 1112, 1113, 1114, 1166, 1168, 1170, 1190, 1191, 1192, 1193, 1195, 1206, 1237, 1248, 1260, 1269, 1276, 1281, 1294, 1305, 1318, 1319, 1330, 1364, 1365, 1366, 1381, 1396, 1468, 1469, 1471, 1472, 1506, 1507, 1508, 1511, 1515, 1517, 1546, 1547, 1555, 1556, 1557, 1559, 1561, 1562, 1564, 1565, 1566, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1593, 1594, 1595, 1597, 2052, 2055, 2056, 2058, 2065, 2072, 2080, 2084, 2095, 2096, 2097, 2109, 2110, 2112, 2114, 2115, 2122, 2123, 2125, 2126, 2128, 2129, 2130, 2131, 2132, 2204, 2206, 2227, 2228, 2229, 2231, 2257, 2258, 2309, 2310, 2312, 2319, 2325, 2335, 2345, 2398, 2399, 2400, 2410, 2424, 2425, 2428, 2435, 2436, 2444, 2445, 2446, 2447, 2448, 2459, 2460, 2461, 2463, 2464, 2465, 2466, 2468, 2478, 2490, 2496, 2528, 2532, 2534, 2535, 2537, 2538, 2545, 2546, 2548, 2556, 2563, 2569, 2574, 2575, 2581, 2584, 2590, 2597, 2598, 2605, 2613, 2614, 2615, 2653, 2659, 2674, 2675, 2680, 2698, 2729, 2747, 2749, 2752, 2760, 2762, 2769, 2817, 2841, 2842, 2843, 2844, 2845, 2846, 2847, 2848, 2855, 2856, 2857, 2858, 2859, 2860, 2862, 2863, 2867, 2951, 2964, 2965, 3401, 3405, 3419, 3471, 3499, 3521, 3579, 3601, 3616, 3679, 3730, 3768, 3804, 3829, 3971, 4017, 4068, 4087, 4121, 4136, 4156, 4186, 4217, 4240, 4271, 4301, 4333, 4360, 4435, 4457, 4495, 4505, 4539, 4558, 4584, 4626, 4676, 4702, 4771, 4772, 4774, 4797, 4820, 4856, 4887, 4904, 4961, 4974, 4998, 5027, 5029, 5063, 5079, 5107, 5412, 5421, 5430, 5437, 5454, 5458, 5464, 5503, 5505, 5512, 5519, 5528, 5535, 5536, 5547, 5550, 5565, 5566, 5575, 5576, 5585, 5594, 5600, 5602, 5603, 5604, 5640, 5641, 5643, 5651, 5658, 5671, 5675, 5677, 5678, 5684, 5691, 5705, 5715, 5720, 5728, 5736, 5742, 5743, 5747, 5749, 5750, 5762, 5763, 5764, 5765, 5767, 5768, 5771, 5773, 5776, 5780, 5781, 5787, 5788, 5789, 5791, 5793, 5795, 5796, 5797, 5800, 5802, 5805, 5806, 5808, 6005, 6012, 6013, 6023, 6028, 6045, 6059, 6068, 6069, 6070, 6074, 6075, 6077, 6079, 6085, 6086, 6089, 6090, 6092, 6093, 6094, 6985, 6986, 6990, 7008, 7017, 7020, 7027, 7028, 7030, 7031, 7032, 7034, 7086, 7087, 7090, 7091, 7208, 7209, 7220, 7231, 7238, 7241, 7250, 7251, 7252, 7267, 7322, 7513, 7515, 7516, 7518, 7523, 7536, 7551, 7558, 7567, 7570, 7573, 7580, 7588, 7592, 7593, 7594, 7608, 7612, 7621, 7622, 7623, 7627, 7662, 7663, 7680, 7687, 7695, 7696, 7700, 7708, 7752, 7753, 7759, 7762, 7773, 7778, 7779, 7782, 7815, 7816, 7822, 7829, 7830, 7839, 7848, 7863, 7867, 7919, 7920, 7925, 7927, 7930, 7932, 7933, 7934, 7943, 7958, 7966, 7980, 7992, 7993, 7995, 7997, 8019, 8030, 8036, 8037, 8049, 8061, 8148, 8160, 8162, 8171, 8174, 8180, 8205, 8208, 8209, 8210, 8212, 8215, 8218, 8229, 8231, 8233, 8261, 8335, 8342, 8346, 8347, 8356, 8378, 8379, 8384, 8385, 8464, 8466, 8468, 8477, 8481, 8487, 8493, 8499, 8509, 8514, 8515, 8533, 8544, 8549, 8554, 8564, 8570, 8574, 8580, 8586, 10194, 10195, 10196, 10203, 10205]);\nexport const edgeLength = /*#__PURE__*/ new Uint8Array([3, 3, 3, 3, 3, 3, 3, 5, 8, 8, 2, 2, 3, 3, 3, 3, 3, 8, 5, 5, 5, 5, 5, 3, 3, 5, 5, 9, 12, 19, 8, 19, 8, 11, 9, 9, 8, 7, 7, 6, 8, 9, 16, 10, 7, 7, 11, 8, 6, 6, 9, 7, 11, 7, 14, 4, 4, 4, 4, 4, 4, 10, 7, 6, 6, 6, 6, 10, 10, 6, 10, 10, 22, 11, 9, 10, 10, 10, 9, 10, 8, 7, 7, 7, 8, 21, 13, 11, 11, 9, 10, 9, 13, 10, 8, 8, 9, 12, 9, 7, 10, 7, 7, 13, 7, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 6, 3, 3, 3, 3, 3, 3, 2, 5, 3, 3, 3, 7, 2, 2, 2, 2, 2, 2, 3, 3, 3, 1, 1, 7, 8, 5, 2, 2, 7, 2, 2, 1, 4, 1, 11, 9, 9, 5, 5, 8, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 5, 11, 9, 9, 13, 7, 14, 7, 6, 6, 6, 7, 6, 6, 6, 6, 6, 10, 7, 11, 9, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 8, 7, 10, 9, 9, 9, 8, 9, 8, 10, 6, 9, 9, 8, 10, 10, 7, 8, 1, 9, 10, 12, 12, 12, 10, 9, 9, 10, 10, 9, 9, 1, 1, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 6, 6, 4, 3, 3, 3, 7, 4, 4, 4, 3, 3, 6, 7, 3, 4, 1, 2, 2, 2, 6, 1, 2, 2, 2, 2, 2, 12, 5, 3, 8, 9, 13, 4, 4, 13, 9, 9, 11, 7, 3, 12, 9, 2, 2, 2, 3, 3, 3, 3, 3, 8, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 7, 10, 15, 7, 15, 15, 20, 15, 9, 10, 10, 12, 14, 14, 14, 12, 12, 12, 12, 12, 14, 14, 10, 10, 10, 10, 14, 9, 9, 9, 10, 14, 14, 14, 13, 13, 9, 9, 9, 9, 9, 9, 7, 8, 6, 8, 8, 6, 8, 13, 8, 8, 6, 13, 8, 11, 13, 8, 6, 13, 8, 6, 9, 10, 10, 12, 14, 14, 14, 12, 12, 12, 12, 14, 14, 10, 10, 10, 10, 9, 9, 9, 10, 14, 14, 11, 13, 13, 9, 9, 9, 9, 9, 9, 2, 6, 9, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 2, 3, 3, 3, 3, 3, 3, 7, 7, 2, 3, 2, 2, 5, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 5, 7, 2, 2, 12, 8, 10, 8, 10, 7, 18, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 2, 3, 3, 3, 5, 5, 3, 8, 8, 6, 8, 6, 6, 4, 6, 7, 7, 7, 10, 11, 2, 5, 5, 3, 3, 3, 3, 3, 3, 5, 5, 6, 11, 10, 7, 7, 7, 4, 4, 4, 2, 3, 3, 3, 3, 3, 2, 7, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 7, 7, 7, 11, 7, 6, 9, 6, 6, 8, 10, 8, 6, 8, 13, 4, 4, 4, 4, 4, 10, 8, 11, 8, 8, 8, 10, 10, 7, 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 10, 13, 7, 8, 7, 11, 8, 8, 6, 9, 8, 8, 6, 6, 6, 8, 8, 6, 6, 6, 6, 6, 9, 7, 6, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 9, 7, 8, 10, 8, 8, 2, 3, 3, 3, 3, 3, 2, 8, 9, 9, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 9, 2, 2, 3, 3, 3, 3, 3, 3, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 12, 5, 5, 3, 5, 4, 2, 3, 2, 4, 3, 9, 2, 2, 2, 2, 2, 5, 5, 3, 8, 8, 13, 6, 10, 9, 4, 7, 9, 11, 2, 3, 7, 3, 3, 4, 1, 3, 4, 2, 9, 3, 3, 12, 5, 3, 7, 10, 10, 7, 4, 4, 6, 14, 7, 9, 7, 13, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 8, 15, 4, 4, 2, 3, 3, 3, 7, 4, 9, 9, 2, 3, 3, 3, 5, 3, 2, 2, 7, 2, 7, 6, 6, 7, 2, 4, 2, 2, 2, 2, 2, 2, 8, 8, 8, 9, 5, 2, 3, 3, 3, 3, 3, 3, 10, 7, 4, 4, 4, 4, 3, 4, 2, 3, 3, 3, 3, 3, 10, 7, 4, 4, 4, 4, 2, 3, 3, 3, 3, 10, 7, 4, 4, 4, 4, 3, 9, 6, 6, 6, 9, 13, 9, 2, 2, 2, 8, 7, 9, 5, 3, 3, 3, 5, 5, 12, 9, 10, 7, 8, 7, 6, 8, 6, 11, 12, 7, 9, 10, 4, 4, 7, 8, 11, 6, 7, 9, 8, 7, 10, 8, 9, 15, 7, 8, 5, 4, 7, 2, 3, 3, 3, 2, 14, 10, 2, 14, 10, 2, 14, 3, 9, 13, 13, 10, 14, 16, 17, 11, 2, 14, 2, 14, 3, 9, 13, 10, 14, 16, 17, 11, 14, 10, 14, 2, 7, 3, 10, 7, 14, 10, 2, 14, 10, 9, 9, 17, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 10, 10, 10, 12, 9, 4, 10, 11, 8, 8, 8, 7, 9, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 8, 4, 4, 4, 4, 4, 4, 6, 16, 3, 3, 14, 3, 14, 2, 14, 9, 13, 10, 10, 14, 16, 17, 11, 6, 9, 10, 10, 12, 14, 14, 14, 12, 12, 12, 12, 14, 14, 10, 10, 10, 10, 14, 9, 9, 9, 10, 14, 14, 14, 9, 9, 9, 9, 9, 9, 2, 14, 9, 13, 10, 10, 14, 16, 17, 11, 6, 2, 14, 9, 17, 13, 10, 10, 14, 16, 17, 11, 6, 2, 14, 9, 13, 10, 14, 16, 17, 11, 2, 14, 9, 13, 10, 16, 11, 2, 14, 10, 19, 7, 2, 14, 9, 13, 10, 19, 10, 7, 14, 16, 17, 11, 6, 2, 14, 9, 13, 10, 19, 7, 14, 16, 17, 11, 2, 14, 9, 13, 17, 13, 10, 10, 14, 16, 17, 11, 6, 3, 2, 14, 9, 13, 10, 10, 14, 16, 17, 11, 6, 9, 10, 12, 14, 14, 14, 12, 12, 12, 12, 12, 14, 14, 14, 10, 10, 10, 14, 9, 9, 9, 9, 14, 14, 14, 13, 13, 14, 9, 9, 9, 9, 9, 9, 4, 11, 2, 14, 9, 13, 17, 13, 10, 19, 10, 7, 14, 16, 17, 11, 6, 2, 14, 9, 13, 17, 13, 10, 19, 10, 7, 14, 16, 17, 11, 6, 2, 9, 10, 10, 7, 17, 3, 3, 12, 12, 16, 15, 15, 12, 14, 14, 14, 20, 20, 13, 12, 12, 12, 12, 12, 12, 20, 25, 14, 14, 12, 12, 10, 10, 10, 10, 9, 9, 9, 25, 4, 9, 17, 10, 7, 14, 16, 21, 13, 13, 14, 20, 14, 13, 17, 24, 9, 12, 13, 25, 13, 21, 20, 17, 9, 9, 9, 9, 9, 9, 12, 17, 4, 4, 9, 9, 9, 10, 10, 12, 14, 14, 14, 12, 12, 12, 12, 12, 14, 14, 10, 10, 10, 10, 14, 9, 9, 9, 10, 14, 14, 14, 13, 13, 9, 9, 9, 9, 9, 9, 1, 8, 7, 11, 11, 1, 3, 3, 3, 4, 8, 9, 10, 14, 14, 12, 12, 12, 12, 14, 14, 10, 10, 10, 10, 14, 9, 9, 9, 10, 14, 14, 14, 13, 13, 9, 9, 9, 9, 9, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9, 12, 6, 14, 4, 12, 7, 2, 2, 1, 2, 7, 6, 4, 4, 4, 6, 8, 8, 7, 4, 5, 6, 3, 3, 3, 3, 4, 16, 8, 3, 5, 4, 3, 3, 3, 5, 2, 2, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 11, 12, 7, 7, 13, 9, 10, 12, 8, 9, 7, 8, 5, 12, 10, 13, 14, 5, 5, 5, 13, 5, 5, 5, 3, 3, 3, 5, 16, 5, 5, 5, 5, 5, 7, 12, 14, 8, 12, 8, 10, 12, 9, 11, 7, 9, 7, 10, 7, 13, 9, 7, 12, 8, 17, 7, 7, 16, 10, 13, 13, 8, 10, 10, 14, 17, 7, 16, 16, 15, 8, 10, 10, 12, 17, 7, 17, 14, 7, 10, 17, 8, 7, 7, 7, 8, 15, 15, 7, 14, 10, 10, 10, 11, 11, 7, 7, 13, 8, 10, 7, 16, 7, 8, 7, 14, 17, 12, 10, 11, 21, 8, 9, 7, 13, 9, 8, 13, 6, 12, 7, 6, 13, 10, 10, 10, 8, 18, 9, 17, 13, 10, 12, 6, 13, 6, 11, 8, 13, 10, 13, 18, 13, 11, 13, 8, 16, 7, 10, 8, 16, 12, 10, 8, 8, 6, 14, 11, 8, 15, 8, 8, 7, 7, 12, 7, 8, 9, 14, 15, 8, 9, 10, 9, 15, 7, 8, 8, 12, 13, 9, 10, 15, 15, 13, 7, 10, 10, 20, 7, 6, 9, 6, 6, 14, 11, 14, 11, 12, 9, 10, 16, 16, 12, 7, 11, 28, 8, 11, 10, 7, 21, 8, 7, 9, 4, 4, 4, 17, 7, 8, 6, 9, 6, 6, 13, 6, 6, 6, 6, 18, 20, 14, 8, 11, 12, 9, 10, 13, 15, 19, 8, 9, 12, 7, 10, 16, 12, 9, 9, 9, 14, 12, 11, 9, 12, 11, 18, 9, 9, 9, 10, 7, 7, 16, 8, 9, 7, 13, 12, 10, 18, 7, 8, 11, 7, 7, 8, 8, 13, 7, 7, 7, 11, 15, 13, 11, 7, 8, 15, 11, 7, 8, 18, 14, 13, 18, 15, 10, 12, 12, 9, 7, 11, 11, 8, 7, 10, 8, 14, 12, 10, 18, 7, 10, 9, 7, 8, 13, 10, 14, 9, 10, 8, 8, 23, 7, 7, 11, 12, 12, 17, 7, 7, 11, 11, 17, 16, 16, 7, 8, 11, 14, 14, 8, 10, 7, 7, 16, 16, 13, 9, 11, 9, 15, 15, 11, 11, 7, 7, 14, 7, 9, 7, 7, 16, 10, 13, 10, 11, 14, 7, 11, 10, 11, 7, 11, 10, 11, 15, 11, 15, 10, 12, 17, 10, 14, 13, 11, 11, 12, 13, 10, 7, 13, 10, 16, 12, 21, 9, 10, 10, 7, 11, 14, 17, 7, 7, 8, 11, 12, 8, 15, 14, 14, 8, 17, 12, 10, 10, 7, 9, 11, 7, 10, 7, 11, 18, 7, 11, 7, 12, 11, 8, 8, 14, 12, 7, 8, 15, 3, 7, 7, 5, 2, 9, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 5, 11, 6, 4, 7, 10, 7, 7, 11, 1, 10, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 7, 3, 5, 6, 3, 3, 5, 2, 2, 5, 3, 4, 13, 11, 3, 3, 6, 3, 5, 14, 2, 2, 3, 8, 2, 2, 12, 18, 5, 3, 3, 3, 16, 5, 5, 5, 10, 7, 13, 12, 13, 9, 12, 14, 19, 9, 9, 21, 9, 9, 10, 6, 9, 6, 15, 10, 6, 12, 8, 6, 10, 15, 4, 4, 6, 6, 9, 9, 12, 16, 14, 23, 7, 7, 7, 14, 9, 7, 7, 11, 14, 10, 7, 10, 10, 10, 12, 11, 10, 13, 11, 15, 11, 7, 12, 10, 3, 7, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 3, 7, 2, 5, 5, 3, 3, 5, 5, 5, 5, 7, 6, 6, 6, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 7, 10, 2, 2, 2, 5, 5, 5, 5, 3, 3, 3, 3, 3, 5, 5, 10, 9, 11, 8, 7, 12, 8, 9, 7, 6, 13, 11, 6, 13, 7, 9, 9, 4, 4, 4, 4, 4, 4, 6, 10, 7, 8, 13, 8, 8, 9, 14, 8, 10, 7, 7, 7, 9, 6, 9, 7, 2, 12, 5, 3, 3, 13, 4, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 5, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 1, 7, 6, 4, 12, 3, 3, 3, 3, 3, 8, 7, 3, 3, 3, 3, 3, 3, 4, 4, 11, 14, 2, 8, 3, 5, 5, 8, 10, 8, 6, 4, 7, 17, 7, 4, 5, 2, 6, 3, 5, 2, 4, 4, 2, 12, 5, 5, 3, 15, 13, 10, 8, 11, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 3, 3, 3, 3, 4, 18, 2, 12, 5, 3, 3, 3, 3, 3, 5, 16, 8, 8, 9, 6, 6, 4, 4, 4, 4, 31, 6, 6, 10, 11, 21, 10, 9, 7, 10, 7, 7, 2, 4, 4, 4, 4, 6, 5, 3, 3, 4, 3, 3, 3, 3, 3, 3, 6, 6, 2, 2, 2, 5, 3, 3, 3, 7, 7, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 8, 2, 3, 3, 3, 3, 3, 5, 9, 11, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 5, 10, 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 11, 10, 10, 10, 10, 10, 11, 10, 11, 10, 11, 10, 9, 9, 11, 3, 3, 3, 3, 3, 3, 5, 3, 7, 8, 8, 7, 6, 6, 11, 4, 4, 4, 7, 8, 9, 9, 2, 3, 7, 4, 4, 2, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 2, 2, 5, 5, 5, 5, 5, 3, 3, 5, 5, 5, 7, 7, 6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 6, 9, 12, 3, 7, 10, 7, 2, 2, 3, 3, 3, 3, 3, 4, 3, 3, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 8, 8, 6, 8, 7, 4, 4, 4, 4, 4, 6, 7, 5, 5, 20, 19, 8, 10, 9, 7, 10, 6, 8, 11, 6, 6, 6, 6, 13, 12, 8, 6, 7, 14, 11, 9, 2, 5, 3, 3, 6, 2, 3, 2, 2, 2, 2, 2, 2, 2, 5, 4, 3, 7, 6, 4, 7, 4, 3, 6, 4, 7, 2, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 9, 10, 10, 8, 11, 7, 8, 20, 7, 8, 9, 8, 12, 6, 6, 6, 8, 9, 8, 12, 6, 6, 8, 13, 10, 12, 6, 6, 7, 7, 8, 9, 6, 4, 4, 4, 4, 4, 4, 4, 10, 6, 6, 6, 7, 14, 11, 10, 7, 8, 10, 8, 11, 14, 11, 11, 9, 7, 9, 8, 11, 9, 17, 10, 9, 2, 2, 2, 9, 3, 3, 3, 3, 15, 14, 9, 5, 5, 2, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 15, 12, 22, 19, 17, 18, 18, 19, 21, 7, 16, 16, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 7, 16, 11, 11, 7, 7, 7, 7, 17, 7, 8, 12, 15, 9, 19, 7, 19, 8, 16, 21, 11, 12, 19, 14, 22, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 16, 16, 19, 24, 12, 7, 14, 7, 12, 7, 8, 10, 10, 13, 7, 12, 12, 7, 7, 10, 18, 15, 12, 16, 7, 14, 12, 17, 10, 16, 17, 12, 17, 25, 7, 7, 7, 13, 6, 9, 6, 9, 18, 6, 6, 11, 20, 10, 6, 6, 6, 6, 6, 6, 6, 17, 6, 6, 6, 15, 6, 6, 6, 6, 6, 8, 14, 11, 12, 15, 13, 19, 17, 21, 7, 18, 8, 13, 13, 8, 12, 8, 6, 6, 13, 6, 15, 15, 16, 6, 6, 16, 6, 6, 6, 14, 6, 18, 6, 6, 6, 17, 18, 9, 13, 15, 8, 19, 8, 15, 15, 18, 14, 16, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 11, 10, 11, 6, 21, 23, 12, 17, 12, 11, 14, 13, 22, 15, 15, 11, 12, 14, 12, 7, 12, 8, 14, 12, 18, 10, 8, 16, 19, 17, 12, 14, 15, 8, 9, 19, 17, 12, 13, 13, 15, 18, 13, 23, 24, 23, 21, 17, 24, 8, 21, 8, 14, 14, 16, 14, 8, 8, 15, 20, 8, 19, 21, 9, 8, 13, 12, 13, 15, 11, 8, 11, 9, 9, 8, 11, 8, 21, 14, 21, 15, 15, 13, 7, 19, 7, 7, 7, 7, 7, 7, 16, 12, 17, 18, 7, 7, 11, 11, 7, 9, 9, 2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 10, 10, 7, 9, 7, 7, 7, 6, 8, 6, 6, 6, 6, 6, 6, 6, 7, 6, 8, 6, 6, 9, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, 8, 9, 8, 7, 8, 7, 8, 10, 7, 5, 5, 5, 5, 5, 5, 3, 9, 7, 7, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 6, 6, 9, 11, 13, 7, 8, 9, 9, 5, 5, 5, 7, 8, 6, 6, 6, 6, 6, 6, 6, 7, 8, 9, 7, 10, 9, 10, 7, 8, 5, 5, 5, 5, 5, 5, 7, 7, 9, 8, 7, 7, 6, 6, 6, 6, 6, 6, 10, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 10, 4, 4, 4, 4, 8, 7, 7, 10, 10, 9, 8, 8, 15, 9, 8, 8, 8, 8, 8, 9, 10, 9, 10, 7, 8, 13, 5, 5, 5, 5, 5, 3, 3, 7, 7, 8, 6, 6, 6, 4, 4, 11, 9, 7, 8, 9, 10, 7, 5, 5, 5, 5, 5, 3, 3, 7, 6, 6, 13, 7, 9, 8, 7, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 7, 8, 7, 8, 13, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 6, 6, 6, 6, 7, 6, 7, 6, 6, 9, 7, 4, 4, 4, 4, 4, 4, 4, 7, 8, 7, 8, 9, 8, 8, 8, 7, 10, 7, 8, 5, 5, 5, 5, 5, 5, 5, 5, 3, 7, 7, 7, 7, 9, 7, 10, 9, 6, 6, 6, 6, 6, 8, 8, 6, 6, 6, 7, 6, 6, 6, 9, 9, 4, 4, 13, 7, 10, 9, 9, 12, 7, 8, 8, 10, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 3, 7, 7, 11, 7, 9, 8, 8, 6, 6, 10, 6, 8, 8, 8, 6, 7, 6, 6, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9, 8, 8, 16, 8, 9, 8, 7, 5, 5, 5, 5, 5, 3, 3, 7, 7, 7, 10, 15, 8, 9, 8, 9, 9, 6, 6, 6, 6, 6, 6, 7, 4, 8, 7, 8, 8, 7, 8, 11, 8, 5, 5, 5, 5, 5, 3, 7, 7, 6, 11, 16, 7, 6, 4, 4, 4, 4, 9, 9, 8, 8, 8, 13, 12, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 11, 7, 8, 8, 9, 13, 7, 7, 7, 9, 8, 8, 9, 12, 7, 12, 7, 12, 8, 7, 10, 12, 9, 9, 6, 6, 8, 8, 6, 6, 6, 6, 6, 6, 6, 9, 8, 9, 11, 8, 6, 6, 6, 6, 6, 12, 7, 6, 6, 6, 9, 7, 7, 6, 6, 6, 6, 6, 11, 9, 6, 6, 6, 6, 6, 7, 9, 4, 4, 4, 4, 4, 4, 4, 4, 9, 9, 9, 9, 7, 7, 7, 7, 7, 11, 7, 7, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 7, 7, 11, 11, 7, 12, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 13, 12, 8, 8, 8, 8, 7, 7, 7, 9, 5, 5, 5, 5, 5, 5, 5, 3, 3, 7, 7, 11, 7, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 10, 11, 6, 7, 9, 4, 4, 4, 4, 4, 4, 9, 9, 8, 9, 8, 8, 8, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 11, 7, 7, 7, 9, 6, 6, 11, 8, 10, 6, 6, 6, 12, 8, 8, 7, 6, 6, 8, 7, 4, 4, 4, 4, 4, 4, 4, 4, 9, 10, 9, 9, 8, 10, 9, 11, 8, 5, 5, 5, 7, 6, 6, 8, 7, 4, 4, 4, 4, 8, 7, 7, 8, 7, 8, 8, 5, 5, 5, 5, 7, 7, 8, 8, 8, 6, 6, 6, 6, 6, 10, 8, 9, 13, 6, 7, 6, 6, 8, 7, 8, 4, 4, 4, 4, 11, 8, 8, 8, 10, 5, 5, 8, 7, 8, 13, 8, 7, 6, 8, 6, 9, 7, 8, 7, 5, 5, 5, 5, 5, 5, 3, 3, 7, 8, 9, 6, 4, 8, 10, 10, 8, 12, 9, 13, 2, 7, 5, 5, 5, 5, 5, 7, 7, 10, 6, 6, 6, 6, 6, 6, 6, 8, 4, 4, 9, 8, 8, 8, 14, 8, 8, 8, 9, 8, 5, 5, 5, 5, 5, 3, 3, 9, 6, 6, 6, 6, 10, 12, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 11, 8, 7, 8, 8, 8, 5, 5, 3, 3, 3, 3, 7, 7, 6, 8, 6, 8, 11, 7, 6, 6, 6, 7, 4, 8, 11, 9, 10, 5, 5, 5, 3, 3, 3, 7, 7, 8, 9, 8, 15, 9, 6, 6, 6, 6, 6, 6, 11, 11, 4, 4, 4, 4, 4, 7, 9, 9, 10, 8, 7, 5, 5, 5, 5, 5, 5, 3, 3, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 7, 4, 4, 4, 4, 4, 9, 9, 8, 8, 10, 13, 5, 5, 5, 3, 17, 7, 7, 7, 7, 7, 8, 6, 8, 13, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 9, 10, 8, 8, 8, 5, 5, 5, 5, 3, 7, 7, 7, 8, 8, 6, 6, 6, 8, 8, 8, 9, 10, 8, 4, 8, 10, 9, 8, 8, 8, 9, 13, 10, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 7, 8, 9, 9, 7, 7, 7, 10, 9, 9, 8, 9, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 12, 6, 6, 6, 6, 6, 6, 6, 6, 6, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 11, 8, 8, 9, 9, 10, 8, 9, 7, 7, 5, 5, 5, 5, 5, 5, 3, 7, 8, 7, 6, 6, 8, 6, 6, 10, 4, 7, 8, 9, 12, 8, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 7, 14, 7, 9, 8, 8, 6, 6, 8, 12, 12, 6, 6, 7, 7, 10, 4, 4, 4, 4, 4, 9, 9, 14, 9, 13, 8, 7, 5, 5, 5, 6, 6, 6, 7, 4, 8, 7, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 7, 7, 7, 8, 6, 6, 6, 6, 6, 6, 12, 6, 6, 6, 6, 4, 4, 9, 9, 8, 8, 11, 7, 7, 7, 5, 5, 5, 3, 9, 8, 6, 6, 7, 4, 4, 4, 4, 4, 4, 8, 8, 11, 5, 5, 5, 7, 7, 7, 9, 6, 6, 6, 6, 6, 6, 9, 8, 4, 4, 4, 4, 7, 12, 9, 8, 8, 8, 7, 10, 10, 5, 5, 5, 5, 5, 5, 5, 3, 11, 14, 8, 7, 8, 8, 6, 6, 6, 6, 6, 8, 7, 6, 6, 6, 7, 6, 8, 9, 4, 4, 4, 7, 8, 9, 7, 9, 7, 7, 9, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 11, 3, 9, 7, 7, 12, 14, 8, 6, 6, 12, 11, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 7, 4, 4, 4, 16, 9, 9, 9, 8, 9, 9, 9, 9, 9, 8, 8, 8, 13, 11, 8, 5, 5, 5, 5, 3, 7, 6, 6, 8, 8, 8, 6, 6, 7, 10, 7, 4, 4, 4, 4, 9, 7, 8, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 7, 7, 7, 9, 6, 6, 6, 6, 6, 8, 8, 7, 7, 9, 6, 6, 6, 7, 6, 6, 6, 6, 6, 15, 4, 4, 4, 4, 4, 8, 8, 7, 8, 12, 9, 8, 8, 8, 8, 8, 9, 8, 8, 10, 8, 8, 8, 8, 16, 9, 10, 2, 5, 5, 5, 5, 5, 5, 5, 9, 7, 6, 8, 9, 4, 4, 4, 4, 4, 7, 8, 8, 8, 9, 8, 11, 10, 5, 5, 5, 5, 3, 7, 8, 6, 6, 6, 6, 6, 8, 6, 6, 6, 6, 4, 12, 10, 12, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 7, 7, 10, 8, 9, 7, 6, 10, 7, 6, 6, 4, 4, 8, 9, 7, 9, 9, 9, 9, 8, 8, 8, 8, 10, 5, 5, 5, 5, 5, 5, 8, 7, 6, 6, 6, 10, 6, 7, 10, 7, 4, 4, 4, 4, 4, 4, 4, 12, 9, 10, 7, 7, 10, 8, 10, 5, 12, 9, 6, 6, 6, 6, 6, 7, 6, 4, 4, 4, 10, 9, 9, 8, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 13, 7, 7, 9, 7, 7, 7, 8, 9, 9, 7, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 13, 9, 15, 15, 4, 4, 4, 4, 4, 10, 10, 9, 8, 9, 8, 8, 9, 7, 8, 7, 8, 5, 5, 7, 6, 6, 6, 4, 4, 4, 7, 8, 11, 8, 5, 5, 5, 5, 5, 5, 5, 7, 6, 6, 6, 6, 6, 6, 9, 11, 10, 7, 4, 4, 4, 9, 8, 8, 5, 5, 5, 5, 5, 9, 9, 6, 6, 6, 6, 6, 6, 6, 9, 9, 4, 4, 4, 4, 8, 8, 8, 9, 9, 8, 8, 8, 13, 2, 4, 2, 7, 5, 5, 5, 5, 5, 5, 9, 9, 6, 6, 6, 6, 10, 8, 8, 8, 6, 6, 6, 4, 4, 9, 8, 10, 8, 9, 8, 8, 8, 9, 8, 8, 5, 3, 3, 3, 11, 6, 6, 6, 7, 6, 6, 6, 4, 4, 9, 8, 5, 5, 5, 5, 5, 3, 11, 8, 6, 6, 6, 6, 6, 9, 7, 4, 4, 14, 10, 9, 8, 12, 8, 8, 8, 11, 15, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 11, 11, 11, 10, 10, 7, 7, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 7, 11, 7, 7, 11, 11, 7, 8, 9, 10, 7, 7, 9, 9, 9, 9, 7, 7, 10, 8, 13, 8, 8, 8, 8, 11, 10, 6, 6, 8, 10, 11, 14, 14, 6, 6, 6, 6, 6, 6, 9, 11, 7, 7, 6, 8, 12, 11, 11, 6, 6, 10, 6, 6, 6, 6, 6, 10, 7, 7, 6, 6, 11, 6, 6, 6, 11, 8, 9, 7, 6, 10, 11, 9, 10, 11, 7, 11, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 6, 6, 8, 9, 10, 9, 6, 6, 6, 10, 6, 6, 6, 6, 11, 10, 11, 10, 9, 8, 7, 7, 7, 7, 11, 14, 8, 10, 9, 9, 8, 8, 7, 11, 8, 8, 8, 11, 11, 10, 10, 9, 10, 8, 11, 10, 8, 11, 9, 12, 8, 10, 8, 11, 8, 9, 9, 11, 11, 10, 11, 13, 8, 7, 8, 8, 9, 7, 8, 8, 8, 8, 7, 8, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, 3, 3, 3, 3, 3, 3, 3, 3, 8, 6, 4, 4, 4, 11, 7, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 5, 3, 3, 3, 3, 8, 7, 7, 8, 8, 4, 8, 7, 7, 7, 9, 7, 8, 9, 8, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, 2, 3, 3, 3, 3, 3, 4, 5, 5, 3, 8, 8, 6, 9, 4, 4, 10, 7, 3, 3, 3, 2, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 2, 2, 2, 3, 3, 3, 3, 3, 4, 10, 2, 3, 3, 3, 3, 3, 3, 3, 4, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 5, 2, 4, 2, 6, 2, 2, 9, 5, 5, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 9, 8, 7, 6, 6, 11, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 7, 7, 11, 8, 8, 6, 5, 11, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, 2, 3, 3, 3, 3, 3, 3, 6, 4, 4, 4, 4, 3, 3, 3, 3, 5, 7, 2, 3, 3, 3, 3, 3, 8, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 4, 4, 4, 4, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, 2, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 6, 3, 3, 8, 10, 3, 4, 4, 1, 1, 1, 1, 1, 1, 1, 8, 9, 10, 7, 7, 1, 1, 3, 8, 7, 7, 8, 8, 8, 1, 6, 1, 1, 6, 3, 3, 4, 7, 3, 5, 5, 4, 4, 4, 4, 4, 2, 7, 7, 8, 12, 3, 4, 5, 1, 3, 4, 4, 10, 4, 3, 3, 3, 8, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 12, 9, 20, 7, 5, 5, 9, 13, 5, 5, 5, 5, 5, 3, 3, 3, 16, 5, 5, 5, 13, 7, 8, 8, 11, 8, 7, 9, 7, 11, 12, 9, 9, 8, 8, 11, 10, 14, 7, 12, 10, 11, 13, 7, 9, 11, 17, 17, 14, 13, 7, 8, 7, 10, 10, 7, 16, 13, 7, 8, 17, 12, 9, 8, 6, 7, 10, 6, 6, 12, 6, 8, 10, 8, 8, 8, 6, 8, 6, 14, 6, 6, 6, 13, 6, 10, 6, 6, 7, 14, 8, 6, 6, 10, 11, 10, 9, 9, 7, 7, 6, 6, 6, 9, 9, 7, 9, 10, 9, 13, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 8, 6, 8, 9, 10, 9, 7, 10, 10, 8, 7, 8, 7, 10, 12, 9, 8, 15, 8, 7, 8, 8, 7, 7, 15, 13, 7, 10, 9, 14, 18, 16, 7, 24, 7, 8, 10, 11, 16, 8, 14, 7, 9, 9, 9, 11, 13, 19, 14, 15, 14, 11, 7, 13, 9, 10, 7, 13, 9, 10, 11, 12, 8, 9, 2, 3, 5, 8, 7, 4, 4, 10, 5, 3, 3, 3, 3, 3, 5, 4, 4, 4, 2, 2, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, 12, 5, 3, 8, 10, 15, 6, 7, 2, 3, 2, 5, 5, 12, 2, 5, 5, 5, 5, 2, 2, 5, 5, 12, 9, 5, 2, 2, 9, 5, 5, 12, 12, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 9, 12, 5, 8, 8, 9, 5, 5, 5, 8, 19, 7, 16, 15, 14, 9, 9, 9, 9, 7, 11, 11, 11, 14, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 5, 15, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 9, 9, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 14, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 15, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 12, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 9, 9, 12, 9, 9, 12, 12, 12, 15, 7, 11, 7, 11, 18, 13, 8, 18, 15, 18, 12, 14, 12, 8, 8, 8, 8, 9, 9, 9, 12, 7, 10, 10, 8, 8, 12, 12, 12, 7, 12, 12, 9, 7, 7, 7, 7, 7, 8, 15, 12, 9, 10, 10, 7, 10, 10, 13, 11, 10, 9, 22, 11, 9, 8, 8, 8, 8, 8, 13, 18, 13, 9, 15, 19, 9, 7, 7, 10, 7, 7, 7, 11, 8, 13, 17, 7, 7, 10, 10, 10, 7, 20, 16, 7, 7, 7, 7, 11, 21, 12, 12, 13, 11, 14, 16, 8, 8, 13, 11, 9, 7, 7, 13, 7, 7, 14, 15, 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 13, 10, 18, 6, 6, 6, 6, 6, 6, 6, 6, 6, 11, 8, 8, 12, 12, 11, 11, 8, 12, 9, 9, 9, 13, 13, 9, 9, 9, 9, 9, 9, 10, 12, 6, 6, 6, 6, 17, 11, 7, 7, 7, 7, 14, 14, 12, 6, 7, 7, 6, 6, 15, 10, 13, 10, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 13, 9, 9, 15, 13, 6, 12, 12, 6, 19, 11, 10, 7, 7, 16, 8, 19, 17, 9, 9, 9, 9, 9, 6, 6, 6, 10, 8, 16, 8, 6, 6, 9, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 14, 6, 6, 6, 6, 20, 6, 9, 6, 9, 9, 9, 6, 9, 8, 8, 12, 9, 8, 8, 8, 7, 8, 12, 7, 8, 8, 8, 6, 8, 6, 6, 6, 6, 6, 6, 6, 9, 8, 8, 6, 6, 13, 9, 12, 13, 12, 14, 13, 12, 11, 11, 6, 8, 8, 8, 6, 13, 12, 11, 11, 12, 6, 11, 12, 11, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 15, 6, 6, 6, 6, 6, 6, 6, 13, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, 6, 18, 6, 12, 13, 13, 13, 9, 10, 15, 9, 12, 6, 6, 6, 6, 6, 6, 6, 6, 9, 15, 10, 9, 10, 13, 9, 19, 8, 18, 17, 10, 10, 8, 8, 6, 6, 6, 6, 6, 6, 10, 14, 8, 16, 16, 9, 8, 15, 8, 8, 10, 12, 14, 7, 7, 8, 8, 7, 7, 7, 7, 8, 13, 13, 11, 9, 9, 9, 12, 10, 17, 8, 11, 9, 7, 7, 14, 8, 14, 14, 7, 7, 7, 7, 7, 7, 14, 7, 7, 7, 7, 7, 10, 10, 8, 14, 7, 7, 7, 7, 8, 8, 8, 8, 8, 17, 9, 15, 7, 8, 12, 7, 9, 14, 7, 7, 7, 9, 13, 8, 14, 7, 16, 18, 13, 15, 14, 12, 13, 10, 15, 9, 7, 7, 7, 10, 13, 15, 15, 9, 9, 9, 9, 19, 11, 11, 11, 13, 8, 8, 8, 8, 7, 12, 19, 17, 9, 9, 13, 7, 7, 7, 9, 7, 7, 7, 12, 13, 15, 10, 8, 8, 14, 15, 12, 13, 13, 8, 12, 14, 7, 11, 7, 14, 15, 13, 12, 8, 8, 8, 8, 11, 13, 15, 15, 8, 13, 12, 8, 8, 8, 13, 10, 16, 14, 11, 8, 8, 12, 12, 9, 15, 15, 12, 12, 13, 8, 8, 9, 12, 13, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 11, 12, 11, 14, 7, 13, 13, 13, 12, 18, 16, 7, 12, 11, 10, 10, 15, 9, 9, 9, 21, 7, 7, 7, 11, 16, 8, 8, 11, 11, 7, 7, 7, 7, 7, 19, 7, 7, 7, 7, 7, 7, 7, 7, 7, 12, 8, 9, 12, 14, 11, 9, 9, 9, 22, 12, 3, 8, 8, 15, 4, 2, 2, 5, 5, 3, 3, 3, 3, 3, 3, 6, 6, 4, 4, 4, 12, 7, 10, 2, 3, 3, 3, 3, 3, 3, 3, 6, 7, 3, 7, 5, 14, 4, 4, 7, 8, 10, 4, 1, 3, 3, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 2, 2, 5, 3, 4, 2, 2, 2, 2, 2, 2, 11, 5, 5, 5, 11, 5, 5, 3, 5, 5, 5, 5, 11, 14, 13, 9, 11, 9, 12, 8, 11, 11, 8, 11, 16, 9, 9, 7, 10, 9, 12, 8, 15, 6, 7, 6, 6, 13, 10, 8, 11, 8, 6, 6, 6, 12, 16, 6, 11, 7, 8, 9, 18, 6, 6, 9, 4, 4, 6, 13, 6, 6, 6, 6, 8, 8, 9, 16, 7, 7, 14, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 15, 13, 7, 10, 7, 7, 10, 12, 16, 15, 7, 9, 9, 14, 11, 11, 10, 9, 10, 8, 12, 7, 8, 7, 7, 10, 12, 7, 12, 8, 7, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 5, 5, 5, 10, 4, 8, 7, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 7, 4, 5, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9, 8, 2, 2, 2, 8, 12, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 7, 11, 9, 8, 8, 8, 7, 8, 9, 7, 7, 9, 7, 7, 7, 10, 7, 7, 10, 9, 10, 6, 6, 6, 6, 6, 6, 15, 7, 8, 9, 9, 8, 6, 6, 10, 9, 6, 8, 13, 9, 7, 6, 6, 6, 6, 6, 6, 12, 6, 6, 7, 6, 7, 6, 6, 6, 10, 10, 7, 6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 14, 6, 6, 7, 7, 9, 6, 6, 6, 6, 9, 9, 8, 9, 10, 9, 8, 9, 12, 7, 7, 7, 8, 7, 10, 12, 11, 9, 10, 7, 7, 7, 9, 10, 10, 8, 12, 9, 7, 7, 9, 8, 8, 8, 10, 7, 7, 8, 9, 9, 7, 7, 7, 8, 2, 4, 6, 3, 4, 2, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 8, 6, 4, 7, 3, 3, 3, 3, 3, 3, 3, 12, 3, 3, 3, 3, 3, 3, 4, 4, 2, 3, 5, 3, 4, 7, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 6, 4, 3, 4, 2, 2, 2, 5, 3, 3, 3, 3, 3, 5, 4, 4, 4, 4, 7, 6, 8, 9, 2, 2, 2, 2, 3, 3, 3, 5, 7, 2, 3, 3, 8, 7, 7, 2, 2, 8, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 8, 8, 7, 7, 6, 10, 6, 9, 7, 11, 4, 6, 8, 8, 7, 8, 4, 5, 5, 5, 3, 3, 11, 8, 9, 6, 6, 8, 7, 4, 4, 7, 8, 7, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 7, 2, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 12, 5, 5, 3, 3, 3, 5, 10, 12, 6, 15, 4, 6, 6, 7, 14, 9, 3, 3, 3, 3, 3, 8, 2, 2, 3, 5, 3, 3, 3, 3, 3, 3, 8, 8, 8, 7, 5, 8, 4, 6, 11, 2, 2, 6, 7, 2, 9, 8, 5, 5, 3, 3, 5, 5, 7, 7, 6, 6, 10, 6, 6, 8, 9, 7, 4, 4, 4, 4, 7, 6, 6, 7, 7, 10, 9, 8, 11, 8, 3, 3, 3, 3, 3, 4, 4, 2, 3, 3, 3, 3, 3, 7, 6, 2, 5, 6, 7, 6, 4, 8, 9, 11, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 5, 3, 3, 3, 3, 3, 9, 9, 6, 4, 8, 7, 7, 5, 9, 8, 6, 8, 7, 8, 5, 5, 5, 5, 5, 3, 3, 3, 16, 8, 7, 7, 7, 8, 7, 7, 7, 7, 9, 6, 9, 6, 10, 7, 7, 7, 6, 10, 8, 9, 11, 11, 8, 4, 4, 10, 8, 8, 6, 9, 6, 11, 8, 8, 8, 15, 7, 8, 9, 5, 3, 3, 3, 3, 3, 5, 11, 2, 2, 3, 8, 9, 10, 3, 2, 2, 2, 2, 2, 2, 3, 6, 4, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 2, 3, 3, 3, 3, 3, 3, 3, 11, 5, 3, 3, 3, 3, 3, 3, 3, 3, 6, 7, 4, 4, 2, 3, 3, 3, 3, 3, 3, 3, 3, 12, 7, 4, 12, 4, 6, 5, 4, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 11, 10, 6, 4, 6, 10, 8, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 5, 3, 4, 4, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 7, 8, 8, 7, 13, 12, 10, 10, 8, 8, 7, 7, 9, 12, 11, 6, 6, 8, 8, 9, 7, 7, 7, 10, 15, 10, 4, 4, 4, 4, 4, 11, 8, 8, 9, 7, 9, 14, 14, 12, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 12, 5, 5, 5, 8, 11, 10, 7, 9, 3, 8, 7, 3, 15, 13, 11, 4, 4, 2, 2, 2, 19, 7, 5, 5, 3, 3, 3, 3, 3, 3, 3, 5, 22, 18, 6, 14, 17, 4, 4, 19, 16, 18, 2, 3, 3, 2, 3, 2, 3, 3, 6, 4, 2, 3, 3, 2, 5, 3, 3, 3, 3, 3, 3, 3, 9, 9, 2, 3, 2, 2, 2, 3, 3, 3, 5, 7, 14, 7, 7, 12, 9, 13, 6, 11, 6, 10, 9, 7, 7, 8, 12, 12, 8, 8, 8, 10, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 5, 8, 10, 7, 8, 11, 8, 12, 9, 4, 7, 7, 9, 13, 2, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 1, 2, 2, 3, 3, 3, 3, 3, 3, 5, 2, 2, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 4, 4, 4, 3, 2, 3, 3, 3, 3, 5, 2, 2, 2, 2, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 12, 9, 8, 8, 9, 8, 6, 17, 6, 6, 6, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 4, 4, 8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7, 9, 9, 9, 7, 8, 8, 8, 10, 7, 13, 10, 8, 9, 3, 3, 5, 13, 3, 3, 3, 3, 3, 7, 7, 6, 6, 10, 13, 11, 11, 8, 8, 9, 8, 9, 9, 10, 10, 10, 11, 10, 10, 13, 13, 16, 15, 11, 12, 9, 9, 10, 9, 11, 10, 9, 9, 14, 7, 8, 3, 10, 7, 7, 3, 2, 2, 2, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 7, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 11, 6, 7, 4, 6, 2, 2, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 6, 4, 4, 2, 2, 2, 3, 3, 3, 3, 4, 4, 6, 6, 6, 6, 5, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 9, 11, 6, 10, 9, 12, 7, 7, 11, 14, 9, 7, 12, 3, 3, 7, 12, 11, 12, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 9, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 11, 5, 5, 5, 5, 5, 5, 5, 5, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 10, 3, 3, 3, 11, 3, 5, 9, 11, 8, 12, 14, 9, 7, 8, 7, 7, 11, 11, 7, 7, 10, 9, 8, 10, 9, 7, 7, 7, 7, 7, 7, 8, 8, 7, 11, 8, 8, 8, 7, 7, 10, 8, 7, 13, 12, 7, 17, 10, 8, 8, 11, 7, 11, 11, 14, 7, 11, 7, 8, 6, 9, 20, 8, 7, 9, 16, 7, 10, 6, 11, 10, 8, 9, 7, 16, 11, 11, 9, 8, 9, 8, 8, 8, 11, 8, 15, 8, 8, 9, 7, 8, 8, 11, 10, 7, 5, 7, 10, 10, 15, 7, 7, 7, 8, 7, 8, 8, 10, 11, 10, 10, 10, 11, 11, 7, 8, 6, 8, 8, 8, 10, 6, 8, 6, 6, 7, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 16, 6, 15, 6, 7, 11, 11, 7, 9, 10, 11, 13, 10, 6, 16, 8, 10, 12, 11, 6, 6, 6, 6, 6, 6, 6, 10, 6, 10, 7, 7, 7, 7, 11, 7, 11, 6, 6, 6, 6, 6, 6, 17, 7, 7, 6, 6, 12, 22, 6, 6, 6, 6, 6, 8, 6, 6, 6, 6, 7, 6, 6, 5, 6, 6, 8, 11, 6, 9, 14, 11, 9, 11, 7, 7, 8, 6, 6, 6, 8, 10, 9, 6, 6, 6, 6, 9, 7, 6, 6, 6, 6, 6, 15, 6, 4, 4, 4, 6, 4, 17, 8, 11, 6, 6, 9, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 10, 6, 10, 6, 6, 6, 6, 12, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 6, 6, 6, 6, 18, 6, 6, 6, 8, 9, 10, 7, 8, 9, 10, 11, 7, 13, 6, 8, 8, 6, 6, 14, 7, 7, 7, 7, 10, 7, 14, 9, 6, 6, 9, 15, 9, 7, 14, 6, 11, 14, 13, 7, 12, 8, 7, 7, 7, 7, 7, 12, 7, 10, 9, 16, 6, 8, 6, 5, 17, 6, 8, 10, 4, 6, 4, 10, 15, 17, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 11, 7, 4, 4, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 19, 17, 6, 10, 11, 6, 6, 6, 6, 18, 6, 6, 11, 4, 4, 4, 5, 6, 6, 6, 9, 5, 6, 4, 6, 6, 4, 6, 6, 6, 6, 10, 6, 6, 4, 6, 6, 10, 6, 10, 6, 6, 6, 6, 11, 6, 6, 10, 6, 6, 8, 6, 6, 6, 8, 6, 11, 4, 11, 9, 10, 9, 11, 4, 8, 4, 11, 12, 7, 9, 8, 6, 7, 7, 8, 12, 12, 11, 13, 10, 11, 7, 7, 7, 9, 7, 11, 10, 7, 7, 7, 16, 11, 10, 11, 17, 9, 9, 8, 8, 7, 7, 7, 9, 7, 7, 7, 14, 7, 13, 9, 11, 10, 14, 10, 10, 12, 11, 10, 7, 10, 5, 14, 8, 8, 8, 9, 7, 8, 7, 7, 9, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 11, 8, 10, 8, 7, 8, 14, 11, 8, 9, 9, 9, 8, 24, 10, 10, 12, 7, 7, 15, 11, 8, 8, 12, 11, 8, 9, 9, 7, 8, 9, 10, 11, 10, 11, 7, 12, 7, 7, 11, 9, 8, 14, 13, 12, 8, 11, 10, 8, 8, 7, 7, 14, 9, 10, 8, 9, 11, 7, 14, 8, 8, 13, 8, 8, 12, 7, 10, 14, 14, 11, 9, 10, 9, 9, 7, 7, 11, 11, 13, 9, 13, 5, 5, 5, 7, 9, 5, 11, 12, 14, 8, 7, 7, 11, 10, 9, 7, 8, 8, 7, 10, 11, 11, 5, 5, 7, 5, 5, 5, 7, 7, 15, 7, 7, 8, 7, 15, 12, 12, 10, 7, 8, 7, 11, 7, 7, 7, 23, 11, 8, 8, 11, 10, 7, 8, 11, 7, 19, 7, 7, 6, 9, 9, 9, 11, 3, 4, 7, 8, 6, 6, 4, 10, 8, 2, 2]);\nexport const edgeChild = /*#__PURE__*/ new Uint16Array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 1, 1, 1, 1, 1, 17, 1, 1, 1, 12, 1, 12, 1, 12, 13, 1, 1, 1, 1, 12, 1, 12, 1, 1, 1, 1, 1, 14, 21, 1, 1, 1, 1, 1, 1, 1, 19, 12, 1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 16, 1, 18, 1, 1, 15, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 22, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 24, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 12, 12, 12, 12, 1, 32, 0, 0, 0, 1, 1, 1, 1, 35, 34, 1, 1, 1, 1, 1, 33, 1, 1, 1, 1, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 39, 40, 0, 0, 0, 41, 0, 12, 1, 1, 12, 1, 1, 1, 1, 44, 45, 45, 45, 44, 45, 44, 44, 46, 45, 44, 45, 44, 44, 44, 44, 44, 44, 46, 44, 44, 44, 44, 44, 44, 45, 47, 47, 45, 44, 44, 44, 44, 44, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 50, 52, 50, 50, 50, 52, 50, 51, 50, 53, 50, 51, 51, 50, 50, 50, 51, 53, 51, 53, 50, 51, 51, 12, 55, 55, 54, 56, 51, 53, 50, 50, 48, 49, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 60, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 67, 1, 12, 1, 1, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 12, 1, 1, 1, 1, 89, 1, 91, 1, 1, 1, 1, 1, 1, 1, 1, 94, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 97, 97, 1, 1, 12, 1, 100, 1, 1, 1, 1, 1, 1, 1, 98, 1, 99, 1, 101, 1, 1, 1, 1, 1, 102, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 110, 111, 1, 1, 1, 1, 1, 1, 113, 113, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 121, 122, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 122, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 122, 1, 1, 1, 1, 1, 1, 1, 1, 1, 126, 123, 125, 120, 1, 124, 1, 1, 114, 1, 1, 1, 1, 117, 1, 127, 1, 1, 1, 1, 1, 119, 1, 108, 1, 109, 1, 12, 128, 106, 1, 112, 1, 1, 1, 1, 1, 107, 115, 1, 12, 12, 12, 118, 116, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 12, 12, 1, 1, 1, 1, 1, 12, 134, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 136, 1, 1, 1, 1, 1, 1, 1, 1, 137, 138, 12, 12, 135, 133, 45, 45, 140, 50, 50, 139, 142, 141, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, 1, 0, 144, 132, 1, 0, 1, 12, 12, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 148, 147, 20, 1, 1, 12, 12, 1, 20, 12, 12, 1, 1, 1, 1, 1, 134, 1, 1, 152, 1, 1, 1, 1, 153, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 136, 1, 1, 152, 1, 1, 1, 1, 153, 1, 1, 134, 1, 1, 1, 152, 1, 1, 1, 1, 153, 1, 1, 134, 1, 1, 1, 1, 1, 1, 1, 1, 134, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 160, 1, 1, 1, 152, 1, 1, 1, 1, 1, 153, 1, 1, 160, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 134, 1, 1, 1, 1, 152, 1, 1, 1, 1, 153, 1, 1, 1, 134, 1, 1, 152, 1, 1, 1, 1, 164, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 167, 1, 1, 160, 1, 1, 1, 1, 1, 152, 1, 1, 1, 1, 1, 153, 1, 1, 160, 1, 1, 1, 1, 1, 152, 1, 1, 1, 1, 1, 153, 1, 154, 158, 158, 12, 1, 12, 166, 1, 1, 1, 1, 1, 158, 158, 158, 154, 1, 1, 1, 157, 158, 161, 165, 1, 1, 1, 1, 157, 157, 1, 1, 156, 154, 154, 157, 170, 156, 170, 1, 1, 168, 1, 156, 155, 157, 1, 1, 1, 1, 157, 1, 159, 1, 1, 1, 12, 1, 162, 1, 162, 1, 1, 1, 162, 161, 163, 169, 156, 154, 1, 1, 1, 1, 1, 1, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 173, 172, 173, 172, 172, 172, 172, 174, 174, 172, 173, 172, 173, 172, 172, 12, 12, 12, 12, 12, 1, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 193, 1, 1, 1, 1, 12, 199, 200, 201, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 196, 1, 1, 1, 184, 1, 210, 1, 1, 1, 208, 1, 1, 205, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 190, 1, 1, 1, 186, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 182, 1, 1, 1, 1, 1, 1, 1, 191, 1, 1, 1, 1, 195, 1, 1, 1, 1, 171, 1, 1, 189, 1, 1, 1, 192, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 180, 1, 12, 1, 1, 12, 1, 1, 1, 1, 183, 1, 1, 1, 188, 1, 203, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 209, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 194, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 176, 12, 1, 1, 1, 178, 12, 1, 1, 1, 1, 1, 1, 1, 198, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 177, 1, 1, 1, 1, 1, 1, 204, 1, 1, 1, 181, 1, 1, 1, 187, 1, 12, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 191, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 175, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 185, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 207, 1, 1, 12, 1, 1, 1, 1, 179, 1, 1, 1, 185, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1, 197, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 202, 1, 1, 12, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 220, 0, 0, 0, 0, 0, 221, 0, 0, 0, 0, 0, 0, 1, 12, 1, 1, 1, 225, 1, 1, 1, 0, 226, 223, 224, 1, 1, 1, 1, 1, 1, 231, 1, 233, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 229, 1, 1, 1, 1, 1, 235, 1, 1, 12, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 1, 1, 1, 12, 1, 1, 1, 1, 230, 1, 1, 1, 228, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 232, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 241, 13, 1, 1, 1, 12, 12, 238, 239, 1, 1, 1, 1, 240, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 242, 1, 1, 12, 16, 1, 1, 1, 1, 1, 1, 1, 243, 1, 1, 1, 12, 12, 1, 1, 1, 1, 1, 243, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 256, 256, 1, 0, 0, 0, 0, 0, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0, 172, 261, 262, 1, 12, 1, 1, 1, 1, 12, 264, 1, 1, 263, 1, 1, 266, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 271, 272, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 12, 0, 283, 0, 0, 284, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 60, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 327, 327, 328, 327, 0, 185, 1, 1, 13, 323, 1, 321, 0, 0, 0, 0, 1, 0, 0, 0, 324, 1, 1, 329, 1, 205, 1, 1, 1, 1, 1, 322, 1, 319, 1, 325, 1, 317, 1, 326, 1, 318, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1, 12, 1, 12, 320, 320, 1, 1, 1, 316, 184, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 12, 1, 1, 1, 1, 315, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 332, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 266, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 372, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 340, 351, 1, 1, 339, 374, 1, 345, 1, 1, 337, 369, 1, 1, 355, 336, 341, 1, 1, 1, 348, 379, 357, 1, 1, 1, 1, 1, 1, 358, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 367, 371, 0, 0, 79, 1, 1, 0, 365, 342, 378, 343, 346, 353, 1, 368, 0, 1, 0, 79, 362, 360, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 381, 1, 1, 352, 1, 79, 1, 0, 1, 1, 1, 384, 1, 0, 0, 79, 359, 0, 1, 338, 1, 1, 1, 0, 1, 1, 361, 1, 0, 1, 1, 1, 0, 1, 386, 349, 1, 1, 0, 1, 0, 0, 377, 0, 1, 1, 1, 79, 370, 1, 1, 366, 363, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 344, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 376, 0, 79, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 380, 1, 1, 1, 0, 0, 383, 0, 0, 0, 1, 356, 1, 0, 79, 382, 1, 0, 0, 0, 0, 385, 1, 1, 0, 0, 1, 0, 1, 0, 354, 0, 350, 0, 1, 1, 1, 0, 1, 1, 0, 373, 347, 375, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 400, 400, 1, 1, 12, 12, 1, 400, 1, 1, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 412, 1, 1, 0, 1, 1, 1, 1, 205, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 430, 430, 1, 1, 0, 0, 317, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 442, 1, 441, 1, 1, 1, 1, 1, 1, 1, 1, 445, 1, 12, 12, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 453, 1, 1, 1, 455, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 452, 1, 447, 1, 1, 1, 435, 1, 1, 1, 1, 1, 1, 1, 1, 448, 12, 1, 1, 1, 1, 454, 1, 1, 1, 449, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 317, 1, 433, 1, 1, 12, 451, 1, 1, 317, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 437, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 454, 1, 1, 1, 1, 317, 1, 450, 1, 1, 1, 439, 1, 1, 1, 1, 1, 440, 1, 456, 443, 1, 1, 1, 1, 1, 438, 1, 1, 1, 1, 1, 1, 1, 1, 1, 434, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 446, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 436, 1, 1, 1, 1, 1, 1, 1, 220, 457, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 462, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 12, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 466, 0, 466, 466, 466, 466, 466, 466, 466, 0, 466, 466, 466, 466, 466, 1, 466, 466, 466, 0, 466, 466, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 471, 470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 468, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 467, 0, 0, 478, 473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 476, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 198, 198, 1, 492, 1, 1, 1, 491, 1, 1, 1, 1, 487, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 489, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 493, 1, 1, 490, 1, 1, 1, 1, 1, 1, 1, 1, 372, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 494, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 12, 1, 507, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 60, 1, 1, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 526, 1, 1, 1, 1, 1, 1, 1, 527, 1, 1, 1, 1, 1, 1, 1, 525, 1, 1, 12, 1, 529, 239, 1, 1, 12, 12, 1, 1, 12, 1, 12, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 533, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 539, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 107, 1, 1, 12, 1, 1, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 548, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 144, 1, 1, 1, 228, 1, 1, 12, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 572, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 577, 1, 220, 1, 328, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 578, 1, 1, 1, 1, 0, 580, 0, 79, 0, 579, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 12, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 582, 582, 0, 585, 583, 582, 582, 582, 582, 582, 587, 582, 582, 591, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 588, 585, 582, 582, 585, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 583, 582, 582, 582, 582, 582, 589, 582, 582, 582, 582, 582, 582, 0, 0, 0, 1, 590, 1, 1, 1, 1, 584, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 595, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 12, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 1, 1, 12, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 65, 280, 306, 411, 535, 0, 4, 68, 236, 254, 282, 307, 334, 388, 413, 0, 499, 519, 536, 597, 9, 0, 61, 88, 398, 409, 429, 575, 0, 497, 518, 532, 612, 0, 30, 6, 0, 461, 500, 602, 560, 70, 0, 7, 285, 255, 389, 463, 416, 538, 79, 598, 0, 576, 309, 418, 465, 9, 105, 288, 506, 6, 30, 0, 311, 79, 391, 79, 483, 10, 6, 131, 248, 275, 0, 613, 509, 0, 563, 0, 64, 6, 6, 251, 95, 2, 432, 399, 410, 596, 0, 6, 0, 6, 286, 103, 6, 561, 501, 540, 0, 464, 390, 273, 287, 8, 71, 104, 599, 543, 392, 312, 300, 419, 146, 74, 290, 546, 510, 601, 564, 335, 330, 479, 6, 75, 149, 11, 0, 249, 522, 547, 565, 514, 551, 570, 611, 36, 6, 260, 295, 333, 304, 218, 30, 528, 553, 218, 42, 216, 265, 296, 305, 406, 423, 481, 274, 0, 73, 562, 0, 403, 417, 299, 79, 247, 79, 0, 581, 545, 504, 292, 421, 79, 393, 387, 0, 0, 0, 9, 555, 571, 217, 0, 424, 407, 531, 516, 573, 615, 85, 218, 43, 297, 396, 425, 569, 0, 511, 293, 276, 79, 215, 80, 28, 390, 30, 6, 394, 331, 303, 604, 592, 524, 550, 513, 0, 258, 81, 30, 405, 422, 0, 30, 426, 0, 219, 593, 517, 9, 408, 427, 218, 248, 86, 222, 594, 574, 557, 482, 428, 397, 250, 227, 87, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 414, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 129, 0, 0, 84, 549, 0, 0, 0, 0, 0, 0, 0, 27, 0, 552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 414, 0, 0, 0, 0, 503, 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 617, 0, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 395, 0, 0, 0, 484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 495, 0, 0, 0, 0, 0, 0, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 269, 281, 0, 0, 0, 0, 0, 530, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458, 0, 0, 0, 314, 0, 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 568, 0, 0, 0, 0, 600, 521, 0, 0, 0, 0, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 480, 0, 0, 0, 0, 0, 62, 0, 0, 0, 267, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 0, 0, 0, 0, 0, 279, 610, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 619, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 278, 0, 0, 0, 0, 0, 0, 567, 0, 0, 0, 0, 0, 0, 523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 502, 0, 0, 0, 0, 0, 554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 486, 0, 485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 459, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 537, 0, 0, 0, 0, 0, 0, 0, 0, 298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 498, 0, 614, 0, 0, 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, 0, 0, 544, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 29, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, 0, 0, 0, 214, 0, 0, 0, 0, 0, 0, 558, 0, 270, 0, 0, 130, 0, 0, 0, 0, 0, 559, 0, 0, 0, 0, 0, 0, 0, 414, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 0, 0, 0, 415, 0, 0, 401, 0, 0, 0, 0, 0, 0, 603, 0, 0, 0, 541, 0, 0, 90, 0, 542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 618, 0, 0, 0, 0, 0, 556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 0, 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 623, 623, 623, 623, 623, 623, 623, 622, 624]);\nexport const labelText = \"orgmilcomnetedugovdrrformsfeedbackofficialaccoorgmilschnetgovmagazinemediaunioncargopilotgroupcaarespressworksaerodromeworkinggroupair-traffic-controlaircraftaccident-preventioneducatormarketplaceambulanceinsurancecateringairportrepbodyenginesoftwaremodellingair-surveillanceconsultingchartertrainermaintenanceservicesdesignflightskydivingfreightassociationstudentgroundhandlingdgcafuelclubtaxicrewshowballooningexpresstraderbrokerauthoragentsairtrafficjournalistsafetyconsultantmicrolightaccident-investigationparachutingequipmentproductionfederationrecreationscientistnavigationengineertradingglidingleasingresearchpassenger-associationentertainmentparaglidinghangglidingaerobaticrotorcraftemergencycertificationgovernmentaeroclubexchangelogisticschampionshiphomebuiltcouncilconferencecontrolairlinecivilaviationjournalorgcomnetedugovcoorgcomnomnetobjofforgcomnetuwukiloappsframerorgmilcomnetedugovcoradioorgcomnetcommuneedogpbcoitgvorgedugov*spreviewfrontendrelayononstagingupid*mtls*privatelinktypedreamdeveloperbravemochawindsurfaivenmirenupsunwnextbegetngrokclerkwale2bwebcsbrunputerflutterflowspawnbaseshiptodaymagicpatternsnetlifyondigitaloceanrailwayhostedclaudehasurabotdashvercelgithubluyanigadgetreplitcloudflaretelebitedgecomputeevervaultdetaexponyatnoopencrpplxzeaburwasmerframerzeropsconvexmedusajsspritesonherculeseasypanelstreamlitsnowflakemesserliloginlinehackclubnorthflankbase44corespeedadaptableleapcellngrok-freeclerkstagelovableon-fleek*us-west-3ap-south-2us-central-2us-central-1eu-central-1ap-south-1us-west-2us-east-2eu-north-1ap-north-1us-west-1us-east-1*rcloudintsegorgmilcomgobbetnetintedugovturmusicasenasamutualcoopip6uriurnin-addre164homeirisgovdixdaemoncloudnssthwien*inexexkunden4accogvormymyspreadshop4lima2ixortsinfofuturecmsfuturehosting12hpprivfuturemailinglima-cityfunkfeuer123webseitednshomemelmyspreadshopcloudletswasantqldvicactnswtascatholicwasaqldvictasvpsidwasantozqldorgcomvicasnactnetedugovnswtasconfhrsncomairflowlambda-urltransfer-webappairflowtransfer-webapptransfer-webapptransfer-webapp-fipstransfer-webappeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1privatenotebookstudiolabelingnotebookstudionotebooknotebook-fipslabelingnotebookstudionotebook-fipsnotebookstudio-fipsnotebook-fipsnotebookstudionotebook-fipsnotebookstudioeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2experimentsus-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1onrepostsagemakercopporgmilcompronetintedugovbiznameinfoshoprsorgmilcomnetedugovbrendlyresolvenzauscotvstoreorgcomnetedugovbizinfoidacaicoittvorgmilcomschnetedugovinfocloudezproxyacmymyspreadshopkuleuvenwebhostingtransurl123websitecloudnsinterhostsolutionsddns5476103298edgfacbmlonihkjutwvqpsryxzbarsycoororgcomedumyftpno-iporxcloud-ipfor-somemmafanfor-morewebhopselfipjozidyndnscloudnsdscloudfor-thefor-betteractivetrailcoeconorestooteorgcomeconeteduassurmoneyafricaarchitectesrestaurantloisirstourismavocatsinfoagrounivcoorgcomnetedugovtvdeportesaludtksatorgmilcomwebgobnetinteducienciaboliviarevistacooperativaempresanombreindustriamusicapatriamedicinademocraciapoliticapuebloindigenaplurinacionalarteblogwikiinfoagrotransportenoticiasprofesionalacademiaeconomiaecologiamovimientotecnologianaturalsimplesitecepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesmscepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesms*biaamfmtcmptvfeirasampajampanatalbelemananiradiog12medindfndbmdtrdthepoaggfjdfdefinfenflegsegongengcngorgzlgslglogppgmillelqslcimcomnomadmjabimbbibbsbabcrectecsjcetcpscpvhudieticriapipsiecnbiorioecogeoteoodoproatoartfstmatvetdetbetnetcntnotfotgrueduajuespappreptmpemparqsrvadvdevgovntrturagrjorfarjusmusdesvixxyzcozfozslzbhzmaringasantamariacampinagrandegoianiasorocabafloripasaobernardocuritibaboavistarecifeaparecidasaogoncasalvadorcuiabamorenamacapalondrinacontagemsocialfortalmaceioleilaoosascoriobranconiteroi9guacutcheblogflogvlogwikitaxicoopmanauspalmascaxiasjoinvillebaruericampinassantoandreribeiraoriopretoweorgcomnetedugovv0windsurfshiptodaycloudsitecoaccoorgnetgovofmilcomgovmediatechzacoorgcomnetedugsjgovmydnspenfnlabnbmbgcbcqconcontnuyksknsmyspreadshopno-ipawdevboxbarsyonidatemfuinabusavinstanceseceuguukussryzespawncsxcloud-ipmyphotosfantasyleaguetwmailcleverappsscrappingccwucloudnsftpaccessgame-serverccgovobjectsrmalpgcust*svcalp1aeappenginermalpgmyspreadshop4lima2ixsquare7cloudscale123websitefirenet12hpflowgotdnslinkyard-cloudcloudnslima-citydnskingobjectstorageedaccogoorusorgcomnetinteduaéroportxn--aroport-byaassogouvcomilgobgovcloudnses-1eu-west-1us-east-1euvipit1eurarubait1s3lbwebsites3websiteru-spbru-mskelasticcsrunstnukukcaukusnl-ams-1fr-par-1fr-par-2functionsnodess3ddlwhmrdbfnck8sifrs3-websitecockpitscblmgdbdtwhkafkpubprivs3ddlwhmrdbk8sifrs3-websitecockpitscblmgdbdtwhkafks3ddlrdbk8sifrs3-websitecockpitscblmgdbdtwhkafkk8sscalebookpl-wawfr-parnl-amsbaremetalsmartlabelinginstancesdechk2kuleuvenlaravelvoorloperurownoxazapscwhstgrvaporobservablehqelementorantagonistreclaimjoteluluencowaydiademjelasticmatlabmagentositetrendhostingaxarnetperspectajenv-arubajelejoteravendbemergenttrafficplexconvexkeliwebserveboltbegetcdnstaticson-rancherprimetelonstackitunison-servicesdnshomelinkyardbarsyjelecloudnscocomnetgovmycn-northwest-1cn-north-1s3s3-accesspoints3-websites3s3-accesspointrdsdualstacks3-deprecatedemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspoints3s3-accesspointrdsdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicn-northwest-1cn-north-1cn-northwest-1ebcomputeelbcn-north-1airflowcn-northwest-1cn-north-1oncn-northwest-1cn-north-1amazonawssagemakeramazonwebservicesdirectasgdsdhehahljlnmhbacscahqhshhihnlnynsnmofjbjzjxjtjhkcqtwgsjssxnxjxgxxzgz網絡网络公司orgmilcomnetedugovxn--55qx5dcanva-appsxn--io0a7iquickconnectcanvasitekhsjxn--od0algmyqnapcloudsrvrlessclustersrealtimestorageleadpagescarrdcrdorgmilcomnomnetedugovhidnssupabaserdpareplmypiumsoxmitotaplpagesfirewalledreplitowodevwebview-assetsvfswebview-assetss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecateds3-websites3-object-lambdaexecute-apis3s3-accesspoints3-websites3-accesspoint-fipss3-fipss3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9vfss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1us-northeast-1ap-southeast-1me-south-1af-south-1ap-south-1ap-southeast-7us-west-2eu-west-2ap-east-2us-east-2ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1mrapaccesspoints3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3eu-west-3ap-south-2eu-south-2computes3-ap-northeast-2elbrdss3-ap-east-1s3-sa-east-1s3-us-gov-west-1s3-eu-central-1s3-ca-central-1eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3s3-website-us-west-2s3-website-eu-west-1s3-external-1eu-central-1me-central-1ca-central-1il-central-1s3-us-west-1s3-eu-west-1s3-website-sa-east-1s3-website-ap-southeast-2ap-northeast-1ap-southeast-1s3-us-west-2s3-eu-west-2me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2s3-website-ap-southeast-1s3-1s3-globals3-ap-northeast-3eu-north-1airflowap-southeast-2s3-us-gov-east-1s3-fips-us-gov-east-1s3-me-south-1s3-ap-south-1ap-northeast-2s3-website-us-west-1ap-southeast-5s3-eu-north-1s3-ap-southeast-1s3-website-us-gov-west-1compute-1s3-eu-west-3us-gov-west-1s3-website-ap-northeast-1us-gov-east-1s3-fips-us-gov-west-1s3-website-us-east-1s3-ap-southeast-2ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3-us-east-2s3-ap-northeast-1authauthauth-fipsauth-fipseu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1rservicesbuilderstg-builderdev-builder*ociocpocsdemoinstanceeu-west-3eu-south-2ap-southeast-3ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1previeweu-4us-4us-1eu-1us-2eu-2us-3eu-3appspaasrag-cloudrag-cloud-chjcloudjcloud-ver-jpcdemonodebalancermembersipeuxvsoncillaocelotonzayalilynxsphinxfentigercustomercaracalo365cloudstaticxendevapp001testcode-builder-stgplatformapimediasiteprojedrydpagesjsu2u2-localx0desazacncoitrueu4uhkukgrbrushatenadiarymyspreadshopfrom-flfrom-wvwebspace-hosttheworkpchatenablogservesarcasmapplinzisakuratanwixsiteappchizigiizeis-into-carsdnsiskinkyadobeaemcloudis-a-therapistpgfogmyvncdojinis-an-actress1kappfldrvkozowqa2jpnmexprgmrfirewall-gatewaydynnscafjsfbsbxooguyxnbayfrom-gawoltlab-demois-a-anarchistwiardwebteaches-yogadattowebtb-hostinglive-websiteservegamegotpantheonfrom-nhsubsc-payfrom-ohvipsinaappfrom-cadyndns-officehomelinuxfrom-mahercules-appservebbsstreakusercontentfrom-okfrom-wyfastly-terrariumis-a-llamaqualyhqportalserveexchangeon-vaporvivenushopciscofreakgrayjayleaguesmetaaiusercontentfrom-iais-a-libertariansaves-the-whalestaveusercontentyolasiteoperaunitepoint2thisis-a-catererlinodeusercontentfrom-vagithubusercontentsells-for-lesshosteurcanva-appsplaystation-cloudddnsfreefrom-pafrom-prfrom-waddnskingoutsystemscloudhotelwithflightmydattois-a-nascarfanmydbserverminiserverdamnserverservehumouris-a-playerfrom-nvfrom-nmemergentagentgentappsamplifyappfrom-kyis-an-accountantnfshostserveircfrom-akpythonanywherestackhero-networkpostman-echolikescandydyndns-mailobservableusercontentserveftpfreeboxosfrom-utcdn77-storageamazonawsneat-urldyndns-serverlinodeis-a-teacherfrom-vtgleezemythic-beastsus1-pleniteu1-plenitla1-plenitpaywhirlservecounterstrikejdevcloudhealth-carereformis-into-animegoogleapisis-a-painterafricaisa-hockeynutatmetais-an-actora2hostedis-a-democratdatadetectest-le-patrondigitaloceanspacesis-a-designeris-a-hunterlinodeobjectstemp-dnsissmarterthanyoufrom-arsimplesiteevennodetownnews-stagingis-a-liberalgooglecodejelasticservemp3stdlibqualyhqpartnerdyndns-free1cooldnsest-a-la-masiondrayddnsdynuddnsfrom-orfrom-miis-a-bloggerfrom-himydobisscanvacodeis-an-engineerest-a-la-maisonupsunappdevinappswafflecellmyasustorwpenginepoweredfrom-ctservep2psame-appmyshopblocksthingdustdatalikes-piediscordsezis-with-thebanddev-myqnapcloudlpusercontentis-leetshopitsite3utilitiesis-a-personaltrainersinaappladeskis-a-cheflogoipselfipbase44-sandboxnospamproxyalibabacloudcsmesswithdnsauthgearappsiamallamawithgooglelutrausercontentmochausercontentframercanvasmytabitdyndns-homew-credentialless-staticblitzcpserverdiscordsaysis-a-nurseappspotatlassian-isolated-3premotewdfrom-mtwixstudiocode0emm180rmyactivedirectoryawsappsmytuleapdnsabrpolyspaceqbuserrenderbuiltwithdarkboutirgotdnsabrdnsdopaascanva-hosted-embedawsglobalacceleratorhomesecuritypcmyiphostditchyouripclever-clouddyndns-ipon-aptibleis-a-musiciansecuritytacticsappspaceusercontenthomeunixstrapiappsame-previewcf-ipfsmycloudnaselasticbeanstalkis-certifieddontexistkasserverik-serverdrive-platformatlassian-3pfirebaseappherokuappawsapprunnerbarsycenteris-a-cubicle-slaveservehttpmyshopifyis-a-guruquicksytessiiitesorsitesmagicpatternsappis-a-cpameteorappfrom-wiis-a-rockstarbumbleshrimpdattolocalreadthedocs-hostedfrom-rifamilydsdyndns-picsplesknsbplaceddnsaliasdynaliasdyndns-remotedoomdnsip-ddnsblogdnsis-a-doctorroutingthecloudamazoncognitobarsyonlinedsmynasddnsgurucloudflare-ipfsdeus-canvasfrom-idsmushcdnpagespeedmobilizerdyndns-at-homeunusualpersonhosted-by-previderis-a-republicandyn-o-saurstreamlitappworkisboringonthewificprapidqualifioappis-uberleetis-slickgetmyipwpdevcloudtypeformdyndns-at-workgentlentapismynascloudw-corp-staticblitzfrom-ingeekgalaxyservebeerfrom-mdonrenderspace-to-rentaivencloudappspacehostedonfabricawafaicloudcodespotblogspotatlassian-3p-us-gov-modfrom-ndfrom-msis-a-techieis-a-studentcustomer-ociis-a-photographerdurumisfrom-ksmassivegriddyndns-wikiis-an-entertaineris-a-hard-workermysecuritycamerafrom-mnrackmazedyndns-blogis-a-bulls-fanwritesthisblogfreemyipsimple-urlfrom-sdreservdauthgear-stagingest-mon-blogueuris-into-gamesrice-labsxtooldevicesakurawebis-an-anarchistoraclecloudappsdyndns-worksells-for-urhcloudfrom-dcfastvps-serverwpmucdnis-a-geekscrysecfrom-txis-into-cartoonsmodelscapetrycloudflarelocaltonetstreak-linkbalena-devicesfrom-njforgeblocksfreebox-oswebadorsitefrom-ncdoesntexisthobby-sitestreaklinkshomesecuritymacownprovidertuleap-partnersdattorelaywphostedmailalpha-myqnapcloudservequakeis-a-socialistservehalflifepivohostingdynuhostingquipelementsw-staticblitzdyndns-webfrom-deproject-studyaliases121is-not-certifiedhercules-devis-a-financialadvisorservepicsis-a-greenloseyouripfrom-ilwithyoutubemwcloudnonprodwiredbladehostingdnsdojofrom-tnpixolinomyqnapcloudis-an-artisthostedpiis-a-landscaperauiusercontentoaiusercontenton-forgeis-a-conservativedreamhostersnet-freaksapps-1and1is-goneencoreapifastly-edgefrom-nesalesforcefrom-scdeployagentoraclegovcloudappsfrom-alis-a-lawyercechirevultrobjectsstufftoreadisa-geekddnsgeeklovableprojecttry-snowplowfrom-moblogsyteis-a-bookkeepernogmyforumravendbmyboxdeelementoredsaacficogoorinforgcomgobnatneteduidorgcomnetintedunomepublorgcomneteduathgovtestscalculatorspaynowinfoquizzesresearchedcloudnsfunnelsassessmentsjscaleforcetmacltdorgmilcompronetgovbizpresseklogesrsccloudcustomfltusrcloude4corealmgovmunicontentproxy9metacentrumdyndyndyndnsdynpagespages-researchitionoccustomercomymyspreadshopdiskussionsbereich4limacomrub2ixfirewall-gatewayddnssspdnsbarsykeymachinesquare7myhome-serverspeedpartnercommunity-proschuldockxenonconnectgünstigliefernbwcloud-os-instancedyndnssecmy-routerxn--gnstigliefern-wobin-butterl-o-g-i-nisteingeekin-dslin-berlinin-brbfuettertdasnetzleitungsenin-vpnlcube-serverdyn-ip24logoipdyn-berlinruhr-uni-bochum12hpgoipsrvdnsfruskygit-repossvn-reposinternet-dnsgünstigbestellenhome-webserverxn--gnstigbestellen-zvbbplacedheimdnscosidnswebspaceconfiglima-citydyndns1istmeinvirtualuserschulplattformmy-gatewayddnsseclebtimnetztest-iservmein-iservvirtual-useriservschuletaifun-dnstraeumtgeradeschulserverdynamisches-dns123webseitednshomehs-heilbronndnsupdaterbssgraphicdwadpdwdaepeweaawapaafpfwfabwbpbacwcpcciwebuserapiobjectsidsiskospockkimodorikerbonesteamsparisjanewaypicardglobaltarpitreedpikekiraworfsulukirkarchertuckerhackercanarywesleystagingprereleaset3r2lpbravepanelngrokiservstglclcrmerpflypagesbarsyvivenushoplocalcertlocalplayerbearbloggatewaydeno-stagingis-not-ais-a-goodbotdashvercelmocha-sandboxplatter-appreplitgithubpreviewworkersinbrowserevervaultdetais-ahrsndenoxmitmodxmyaddrstorageapipayloadgrebedocruncontainersstgstagelclstageloginlineis-a-fullstackleapcellngrok-freeis-coolstoragewebharemediatechlibp2pdiscourseimaginecomyspreadshopstoreregbiz123hjemmesidefirmcoorgcomnetedugovsldorgmilcomwebgobartnetedugovtmorgpolcomsocartnetedugovassoagrondiscoodontk12medcuegyecpaabgengorgmilgalsaltulcomadmesmgobpubdocmonfindgnriouioproartlatvetnetfotedulojgovntrturibrbarxxxofficialbasechefprofmktgpsictechinfoarqtcontdentrrpppsiqgit-pagesritmedfieorgcomlibprieduaipgovriikmeactvsportorgmilcomscieunnetedugovnameinfopintouchtawktotawkmyspreadshoporgcomnomgobedu123miwebcomputeorgcomnetedugovbiznameinfocognito-idpeusc-de-east-1onjelasticnxaspdnsbarsydirectwpdeuxfleurstransurldogadoprvwcloudnsamazonwebservicesdnshomeuserpartycokoobinmkmstorjfidemopaasdymyspreadshopalandkapsiikixn--hkkinen-5wacloudplatformdatacenterhäkkinen123kotisivuidacorgmilcompronetedugovbiznameinforadioorgcomneteduuserexperts-comptablestmmyspreadshopgretaprdcomnomynhccifbxoshuissier-justicenotairesaeroportfreeboxoson-webavocatassoportgouvkdnschirurgiens-dentistes-en-franceavouesfbx-os123sitewebveterinairechirurgiens-dentistespharmacienchambagrimedecinfreebox-osdediboxgoupilemszicpyicpvicppleysheezypagesedugovcnpyorgcompvtnetedugovschooldaemond6atcopanelorgnetplybotdashstackitkaasorgmilcomnetedugovbizmodltdorgcomedugovcoorgcomneteduappwriteacorgcomnetedugovcloudtranslateusercontentorgcomnetedumobiassoorgcomnetedugovbarsysimplesitediscourseindorgmilcomgobneteduorgcomwebnetedugovguaminfonxhra教育敎育網絡网絡组織組織网络網络组织組织公司政府個人个人箇人ltdorgcomincneteduidvgovxn--uc0ay4axn--55qx5dxn--mk0axixn--io0a7ixn--uc0atvxn--zf0avxxn--lcvr32dxn--od0algxn--wcvs22dxn--gmqw5axn--od0aq3bxn--mxtq1mxn--ciqpnxn--tn0agxn--gmq050iorgmilcomgobneteduiservwp2tempurlmircloudfreesitewpmudevmyfastgadgetcloudaccessjelehalfboltfastvpsemergenteasypanelopencraftizcombrendlynamefromrtpersoadultmedorgpolrelcomproartnetedufirminfoassoshopcoopgouvtmcomediahotelforumvideosportorgsexagrargameslakaseroticaerotikatozsdereklamcasino2000filmsuliinfoboltshopprivnewsszexcityutazasjogaszkonyveloingatlaneacaicogoormyᬩᬮᬶmilwebschnetkopbizzonedesaponpesxn--9tfkymyspreadshopgovmytabittabitorderravpageaccok12idforgnetgovmuniltdplcaccotttvorgcomnetmeca6g5gpgamacaicniocoukuptverdruscsdelhiindorgmilcomwebnicfingenpronetintedugovresbizbiharbarsyinternetbusinesstravelsupabasegujaratfirminfopostbankcoopindevscloudnsno-ipbarsybarrell-of-knowledgebarrel-of-knowledgensupdategroks-thisdnsupdatefor-ourknowsitalldvrcammittwalddynamic-dnsv-infowebhopselfipdyndnshere-for-moreilovecollegemayfirstforumzcloudnsmittwaldservertypo3servergroks-theeusekd1uk0cdndyndnsidrawsainaueuapjpusstagemocksysdevicesclientcustreservdcustdevdisrecprodtestingcobeebyteutwenteboxfusebravepstmndedynngrokorgmilcomnomhzcnetedugovqcxqzzbarsythingdustmo-siemensrb-hostingprotonetfh-muenstergitbookbluebitecloudbeesusercontentnodeartkiloappsforgerockdarklangresinstagingapigeebubbleb-datascryptedhypernodedappnodepantheonsitegitlabgithubkeeneticvirtualservercleverappshostyhostingon-rioedugitticketstelebiton-acornwixstudioon-k3sicp0icp12038jeleqotobigvlairbubbleappsmyaddrstolosmyrdbxwebflowdrive-platformbeagleboardhasura-applolipopdefinimavaporcloudmusicianwebflowtestazurecontainerresindevicereadthedocsloginlineeditorxmoonscalesandcatsbasicserverwebthingsbrowsersafetymarkbeebyteappbitbucketidaccovistablogorgschnetgovxn--mgba3a4f16axn--mgba3a4fraarvanedgeايرانایرانjclaspeziapdudcefegelemeperetevebacanatavaparasabgagfgogrgpgalclblimfmrmcbmbvbfclcmcvcrcpcchlimifibicivipirisimncnbnanenrnpntnnolomobocoaogorosopotoptvtatctbtmtltotpulunutpspapaqsvpvvvtvavvrtrsrprgrfrcrbrarorkrvstsssbscsmsispzczbzbozen-suedtirolmyspreadshopxn--bulsan-sdtirol-nsbxn--valledaoste-ebbtrentinoaltoadigetrentin-sued-tirolxn--forlcesena-c8axn--forl-cesena-fcbxn--bozen-sdtirol-2obtriestetrentinsuedtiroltrentino-s-tirollecceudineaostesienaparmaluccapaviagenoapaduaaostamonzaabruzzoternirietiturinmilanbozenlaziofermoleccocuneonuoropratola-speziavdataaligfvgpugmolcalcamlomumbsicpmnvenvaoedugovabrsarmaremrbastoslazibxosfirenzetrentinosüdtirolval-d-aostavalle-aostamessinacremonaravennatoscanatrentin-suedtirolbolognacalabriaurbinopesarofriuli-v-giuliaogliastraxn--valle-aoste-ebblaquilaandriatranibarlettasyncloudtrentinosudtirolxn--valle-d-aoste-ehbaostavalleyvalled-aostatrentino-alto-adigevallee-d-aostexn--balsan-sdtirol-nsbpistoiasicilialucaniacataniaiserniaperugiabresciaveneziagorizialiguriaimperiabulsan-suedtirolbalsan-suedtirolbarlettatraniandriaxn--trentino-sdtirol-szbforlì-cesenatuscanyvallée-d-aostemantovavallée-aostecasertapiemontevalleaostaval-daostafriulivgiuliatrevisoforli-cesenavalléedaosteferrarapescaravald-aostatrentino-altoadigefriuli-vegiuliavallee-aostecarboniaiglesiastarantomediocampidanovalleedaostetrentinosud-tirolcampobassotrentinsüd-tiroltrentinosüd-tirolmonzabrianzatrentino-südtirolxn--trentino-sd-tirol-c3bpotenzacosenzavicenzaemiliaromagnavenicefrosinonemarchepordenonetrentinosued-tirolvaresemolisevalléeaostefriuli-veneziagiuliabasilicatalatinaanconasavonaveronamodenaaquilabiellabolzano-altoadigepugliafoggiaumbriatrentino-stirolgenovapadovamateranovararagusapiacenzatrentinostirolvalleeaostetempio-olbiatrentinsudtirolmassa-carrarafriuliveneziagiuliatrentinosuedtirolandria-barletta-tranitrapanixn--cesenaforl-i8amaceratacaltanissettaascoli-picenobrindisicarraramassacagliaririmininapolivibo-valentiachietibulsan-sudtirolbalsan-sudtiroltrentino-a-adigebulsanbalsaniglesiascarboniamilanotorinoteramodell-ogliastraarezzotrentinoalto-adigerovigotrentovenetoiglesias-carboniatrentino-sud-tirolaltoadigereggio-emiliareggio-calabriasardegnatranibarlettaandriapiedmontxn--sdtirol-n2amedio-campidanotrentino-süd-tirolfriuli-vgiuliafriuli-ve-giuliaromeennaromapisa32-b16-b64-blodiastibarineencomonaplesforlicesenailiadboxosalessandriasicilytrani-barletta-andriaxn--trentin-sdtirol-7vbpesarourbinotrentinsued-tirolcesena-forliforlìcesenaemilia-romagnamonzaebrianzaxn--trentinsdtirol-nsbtrentinos-tiroltrentinsüdtirolvalledaostaolbia-tempiocampidanomediovibovalentiasassarivalle-daostalombardyfriulivegiuliareggioemiliamonzaedellabrianzaalto-adigevercellitrentin-sudtiroltraniandriabarlettatrentino-sudtirolascolipicenobozen-südtirolfriulive-giuliaflorencevaldaostaxn--cesena-forl-mcbcarbonia-iglesiasaosta-valleycarrara-massadellogliastratrentinoa-adigexn--valleaoste-e7apesaro-urbinoxn--trentinosdtirol-7vbxn--trentin-sd-tirol-rzbxn--trentinsd-tirol-6vbtrani-andria-barlettatrentin-süd-tirolxn--trentinosd-tirol-rzbgrossetomonza-e-della-brianzasüdtirolreggiocalabriatrentinoaadigetrentin-südtirolfriuliv-giuliaverbaniacampaniatrentino-aadigefriulivenezia-giuliasardiniaandriabarlettatranibarletta-trani-andriacatanzarooristanourbino-pesarocesena-forlìvalle-d-aostacampidano-medio123homepagesiracusatempioolbiasuedtirollombardiaavellinocesenaforlìtrentinofriuli-venezia-giuliabozen-sudtirolandria-trani-barlettabulsan-südtirolbalsan-südtirolmonza-brianzabolzanotrentino-sued-tirolbellunosalernolivornocrotonesondriodnshometrentinsud-tirolmassacarraratrentin-sud-tiroltrentino-suedtirolviterbobergamocesenaforliolbiatempiopalermobeneventoagrigentoofcoorgnetfmaitvphdengorgmilcomschnetedugovperagrikanieasukehandachitatokaiaisaikonanoharuamaobuhigashiuraowariasahiinuyamatobishimaiwakurashitarainazawatoyonegamagorimihamatoyotataharakariyayatomioguchikomakimiyoshinishiotokonamekiyosuchiryutoyohashiokazakiisshikikasugaikotakiratoeianjotogofusosetohazutsushimashinshirotakahamanisshinshikatsuhekinantoyokawaichinomiyatoyoakeodateogataakitaikawakyowahonjoogayurihonjonoshirokamiokakatagamimitanegojomeyokotekosakadaisenkazunonikahohonjyomoriyoshimisatohappoukamikoanihachirogatahigashinarusesembokufujisatokitaakitaitayanagiowanitakkomutsutsurutahirosakigonoheoirasetowadamisawanohejiaomorishingohiranairokunohehashikamitsugarushichinohehachinohenakadomarisannohekuroishisakaeisumiasahiotakiinzaiabikomatsudoyachiyomutsuzawakujukuriomigawakashiwatoganemihamanaritasakuranagaramobarahanamigawachoshishiroichoseikozakishisuikatorimidorichonankyonanfuttsuonjukufunabashinagareyamanodasosatakochuotohnoshourayasukimitsuyokaichibayotsukaidosodegauratateyamakamagayayokoshibahikariyachimatakatsuuratomisatokisarazukamogawaichikawanarashinoichinomiyashimofusaminamibososhirakoichiharaoamishirasatoikatahonaiainansaijoseiyoiyoozuuwajimaniihamanamikatamasakiuchikokihokutobetoonshikokuchuomatsuyamaimabarikamijimakumakogenyawatahamamatsunosabaeikedaobamasakaifukuiohionotsurugamihamawakasaminamiechizeneiheijikatsuyamatakahamaechizensoedaukihaomutaokawanishiogoribuzenonojosueumiokiotochikugosasagurisaigawamizumakishinyoshitomikurumekurateyamadakasuganakamamiyamanogatatakatahakataiizukakawaratagawakasuyaashiyainatsukimunakataminamitsuikishonaikurogifukuchikeisenhigashimiyakoshinguyukuhashiokagakiyamekogaongausuikahotohochuotoyotsumiyawakadazaifuhisayamatachiaraiyanagawanakagawahirokawachikujochikushinochikuhochikuzennamieotamaokumashowateneiiwakikoorinangoononishigoshimogoomotegomishimafukushimaasakawakagamiishishirakawaiitatefutabahiratayugawahanawakitakatakawamatakunimiyabukibandaihigashihironoyamatomiharuyamatsuriaizubangedatesomaaizuwakamatsuyanaizuaizumisatonishiaizuizumizakikitashiobarataishinkaneyamakoriyamainawashirotanagurafurudonosamegawasukagawaishikawatamakawaikedaogakitaruiginanenahashimahichisonakatsugawaibigawashirakawamizunamiminokamomitakekawauesekigaharatomikasakahogikitagatayamagatatajimianpachimotosuyaotsukakamigaharahidakanisekitokigujominogodoyorogifukasamatsutakayamawanouchihigashishirakawakasaharashimonitatsumagoichiyodakannakanrashowameiwakiryuotaoratomiokafujiokaitakuranaganoharahigashiagatsumatakasakishibukawaminakamikatashinatsukiyonokawabanumataannakaoizumimidorishintoisesakiuenoyoshiokakusatsutakayamanakanojonanmokutamamuratatebayashimaebashiotakekaitadaiwahongofuchukuietajimashobaramiharahatsukaichihigashihiroshimamiyoshikumanokurenakasakaseraseranishiasaminamifukuyamashinichionomichiosakikamijimajinsekikogentakeharaotobenanaeikedatohmaozoraobiraabirakyowaeniwataikibibaisharirebunerimohiroooketootarupippunishiokoppechitosefurubirahakodateshiranukakitahiroshimakushiroobihironanporoiwamizawaniikappukunneppufukushimanakasatsunaitoyourakuromatsunaiakabirakamisunagawashibechaurakawakamifuranonakatombetsuasahikawashimokawakayabeokoppebiratoriabashirisaromaatsumanumatahidakabifukamukawamikasahorokanaitoyotomisarufutsuhigashikawaishikarikitamiyoichiesashiiwanaitomariminamifuranoakkeshifuranotoyakoyakumootoineppushikaoishiraoinemuronayorohaboroashorobihororishirifujiutashinaihokutotakasuebetsuurausuassabukikonaishimamakinaiedatetoyabieinikiesanuryuoumuteshikagarikubetsuashibetsukimobetsuaibetsutobetsusobetsuembetsushimizuchippubetsurishirihokuryuhoronobeshintokutsubetsushibetsuhonbetsumombetsutsukigatakuriyamakoshimizushiriuchikutchanmurorannoboribetsukamishihorowassamushinshinotsukembuchiwakkanaikamoenaikiyosatotakinoueshikabesunagawafukagawanakagawatakikawakamikawahigashikagurahamatonbetsumatsumaemoseushirankoshishakotanimakanemashikeotofuketomakomaisandatambaitamiawajikasaiasagoshisoonoakoyashirotoyookaminamiawajiinagawafukusakitakasagokamigorikasugaharimayokawaashiyahimejiakashitaishiaogakisannantakinosumototakarazukanishinomiyashingugoshikinishiwakiyokatakaaioimikisayoyabukawanishiamagasakisasayamashinonsenkakogawaichikawakamikawatatsunotsukubaiwamaogawaasahisakaitokaioaraiitakobandodaigosuifuinaamikasumigaurakashimaomitamayachiyoshimodatetomobetoridehitachinakainashikisakuragawakasamayawaramoriyahitachiomiyanamegatayamagatahitachikamisuushikutakahagiibarakitonekoganakasowayukimihojosomitoryugasakishimotsumafujishirotsuchiurachikuseihitachiotashirosatotamatsukuriuchiharashikahakuinanaotsubatawajimakahokukawakitatsurugikaganominotosuzuuchinadakomatsuanamizunakanotohakusannonoichikanazawaiwateshiwafudaikawaimoriokaofunatohanamakikuzumakikitakamininohekunoheyamadayahabasumitaichinosekitanohatahiraizumirikuzentakatajobojiotsuchihironomiyakoiwaizumikarumaiichinohenodakujitonooshushizukuishifujisawamizusawakamaishikanegasakimannoutazukotohiraayagawazentsujihigashikagawauchinomikanonjisanukimarugamemitoyotakamatsutadotsunaoshimatonoshoakuneamamiizumihiokiyusuikinkoisasookouyamanakatanekagoshimakanoyaisenkawanabeminamitanemakurazakitarumizunishinoomotematsumotosatsumasendaioimatsudaayaseebinamiurazushinakaiodawaraiseharasagamiharahakoneaikawakaiseiatsugitsukuihadanoyamatoyamakitazamaoisochigasakininomiyayokosukakamakuraminamiashigarafujisawasamukawakiyokawahiratsukayugawaraokawaumajikochitsunootoyoakiinonishitosayasudahidakamiharasakawaniyodogawahigashitsunokagamigeiseisusakiotsukinaharisukumomurototosakamiochitoyotosashimizumotoyamanankokunakamurakitagawayusuharaogunichoyoukiasoutoozugyokutoamakusamifunetakamoriyamagaminamataminamiogunikikuchisumotoyamatonagasumashikiaraokumamotokamiamakusanishiharayatsushiroayabeseikasakyoideineujinakagyokameokakyotangokyotanabekyotambaminamiyamashiroyamashinatanabeyawatawazukaminaminantanmiyazuhigashiyamafukuchiyamakitamukokamojoyokizumaizuruujitawaraoyamazakinagaokakyokumiyamakawagoeinabeshimameiwaasahitaikiudonoisetsukisosakikuwanamihamamiyamasuzukatamakimisuginabarikumanokomonominamiisewataraitobakiwatakikihotadomatsusakayokkaichikameyamaureshinoishinomakishichikashukuohirataiwaosakizaohigashimatsushimashikamaiwanumashibataogawaraonagawakawasakiseminemarumoriminamisanrikukakudamuratawakuyatomiyanatoriwataritagajomisatotomekamirifushiroishimatsushimayamamotoshiogamafurukawahyugaebinotsunosaitoayakushimanobeokakitauramiyazakitakazakigokaseshiibamimatashintomikunitomikitakatakobayashikawaminamitakaharukijotakanabemiyakonojonishimeranichinankitagawakadogawamorotsukakisofukushimaminamimakisakaeobuseikedaogawamiasaokayaasahiotakiotarichinoinaomichikumakomaganechikuhokukaruizawayasuokaooshikaikusakaminamiaikitogakushimatsukawakawakamitateshinatakamorikitaaikishiojirimiyadahakubaiizunaiijimaiiyamamiyotasuzakayasakatoguraookuwanagawaminowahirayayamagataminamiminowafujimiomachisakakitakaginaganonakanosakuhokomoronagisoshinanomachiwadauedaiidaharasuwatomiachiaokianankisosakunozawaonsenagematsutakayamashimosuwamatsumotoyamanouchinakagawamochizukiazuminotatsunoobamaomuraseihiunzenosetofutsuikichijiwanagasakiisahayahasamisaikaikawatanasasebohiradokuchinotsugototogitsutsushimashimabarashinkamigotomatsuurayamazoekashibaikomakawaitenrioyodosangokoryoudaojiikarugayamatokoriyamatenkawakatsuragikurotakikawakamimiyakemitsuetakatorikamikitayamayamatotakadahegurishinjokanmakisakuraitawaramotogoseoudanarasoniandokawanishishimoichihigashiyoshinokashiharashimokitayamanosegawayoshinomintsivorytopazsakuragehirnsumomoaseinetopalmail-boxmokurenyoitamuikaojiyagosensanjoaganomyokoseiroagaomishibataniigatanagaokamurakamiuonumayuzawakariwatagamitainaitsunanminamiuonumatochioyahikojoetsuseiroukamosadoizumozakitokamachiitoigawasekikawakashiwazakitsubamemitsukekokonoesaikiusukibeppuusahimeshimakunisakihasamataketatsukumihitaoitahijikusuyufukujukamitsuebungoonobungotakadaibaraniimibizentsuyamaokayamakasaokahayashimayakagemaniwaakaiwamisakishinjotamanotakahashikibichuowakesojanagishookumenannishiawakurakurashikiasakuchisetouchikagaminosatoshotomigusukunakagusukuyaeseizenaurumaiheyaaguniogiminanjokinminamidaitokitanakagusukuyonaguniokinawaishigakikunigamiurasoekadenataramahiraraginozataketomishimojizamamitonakiitomanhigashimotobuyonabarugushikamionnanahanagohaebarukumejimakitadaitonakijinnishiharayomitanginowantokashikiishikawaikedasuitaminohizuminishisakaikananabenodaitoosakasayamayaokishiwadatadaokakaizukatondabayashichihayaakasakakumatorikadomasayamahigashiosakashijonawatehirakatataishimisakitajirihannansennankatanotoyonominatosettsuhigashiyodogawaibarakinosekitachuohigashisumiyoshifujiiderakashiwaraizumiotsutoyonakamatsubaramoriguchiizumisanoshimamototakatsukineyagawahabikinotakaishikawachinaganoyoshinogarikamiminearitaouchiimarihizenogikashimaariakekiyamafukudomikitagatakitahataomachigenkaikanzakinishiaritakyuragisagataratosutakushiroishikaratsuhamatamakouhokukawagoeyoshidasatteogoseirumaasakaurawaogawaniizaomiyayoriiotakishikihonjooganohannohanyuinasaitamaokegawaarakawayoshikawayokozehasudasayamahidakafukayachichibuiwatsukiryokamiyoshimikamiizumifujimiwarabiranzanmiyoshiminanoyashiosakadosugitomisatohigashichichibutodasokakukiyonokazoshiraokakasukabekounosukawajimatsurugashimamiyashirokitamotohatoyamamoroyamahatogayakumagayakawaguchinagatorokamisatomatsubushinamegawatokigawakamikawafujiminohigashimatsuyamakoshigayatokorozawas3isk01isk02ryuohkoseikonanaishorittotakashimamaibarahikonetorahimenishiazaikokagamokotoyasuotsukusatsunagahamamoriyamatoyosatotakatsukinotogawaomihachimanhigashiomiakagiunnanizumogotsuamayatsukakakinokimatsuehamadamasudahikawahikimiokuizumoyasugiyakumomisatotamayuohdahigashiizumookinoshimanishinoshimatsuwanoshimaneshimadafujiedayoshidashimodagotembaiwataatamikosaiyaizuitoizumishimahaibaramakinoharaomaezakikawanehonkannamisusonohigashiizufukuroinumazukawazufujiaraishizuokahamamatsushimizuizunokunimatsuzakimorimachiminamiizunishiizukikugawakakegawafujikawafujinomiyaujiietsugaoyamayaitaohiranikkoashikagakuroisokanumasakurashioyakarasuyamamotegiichikaikaminokawatochigihagamokanogisanobatonasumibunasushiobaranishikatautsunomiyaiwafunemashikoshimotsukeohtawaratakanezawaitanokomatsushimatokushimaichibaminamiaizumiwajikikainanmiyoshinarutomimamugiananmatsushigesanagochishishikuinakagawamachidachiyodakomaefussainagitaitochofufuchuomeotahigashiyamatotoshimaokutamaaogashimakodairaedogawaarakawahachiojishinagawatachikawashibuyasuginamihinodekiyosesumidaoshimanerimamitakahamuraadachinakanomizuhobunkyomegurominatokoganeihigashikurumekokubunjihigashimurayamamusashimurayamatamakitahinochuokotokatsushikakouzushimaogasawaraakishimakunitachishinjukusetagayamusashinohachijoitabashiakirunohinoharachizunanbukotouramisasawakasayonagokogehinoyazutottorinichinansakaiminatokawaharaoyabetairainamiasahinantoimizufuchutakaokakurobeyamadajohanatoyamatonaminyuzenfunahashinakaniikawanamerikawaunazukitogahimiuozufukumitsutateyamakamiichiiwadearidayuasainamitaijikatsuragiaridagawatanabemihamahidakakainankiminomisatoshingushirahamakamitondayurakozakoyagobokitayamawakayamakudoyamahashimotokushimotokozagawahirogawakinokawanachikatsuurarsuseroeoishidasagaeoguniasahinagaitendonanyoobanazawanishikawasakataohkuratozawamikawamamurogawayamagatafunagatatakahatashonaishinjokahokuiideyuzakawanishitsuruokakaminoyamayamanobeshiratakamurayamanakayamakaneyamahigashineyonezawasakegawamitouubeyuuabushimonosekitabuseoshimatoyotaiwakunihikarishunannagatohagihofukudamatsutokuyamashowadoshitsurunanbukoshukaiminami-alpsnirasakikosugeotsukioshinohokutominobuyamanashifuefukichuokofuichikawamisatoyamanakakonakamichitabayamanishikatsuranarusawafujikawahayakawafujiyoshidafujikawaguchikouenohara長野京都岐阜大阪三重群馬千葉滋賀佐賀奈良adednelgaccogogror秋田愛知高知埼玉沖縄栃木熊本岩手青森山梨新潟島根鳥取長崎香川宮城石川大分宮崎茨城山口兵庫山形徳島広島福島福岡岡山富山静岡愛媛福井東京xn--4it168dhatenadiaryxn--vgu402ckawaiishophatenablogcocottenamaste北海道penneehimeiwateversestabachibashigagonnagunmapermahaccaakitaosakauh-ohblushkochiaichifukuikuroncapooitigohyogotokyokyotopunyuthickcheap0t00g00j0mie2-ddaapyawjg0amfemsubxiiboomoobutchueekpgwrgrherskrboyrdyupperunderflierchipsmydnsheavyangryhippygirlyrulez神奈川鹿児島和歌山bambinaxn--nit225kokayamasaitamaxn--k7yn95exn--1lqs03nsapporoparasitelolipopmcxn--efvn9sniigatafukuokatokushimafukushimahiroshimakagoshimafakefurokinawaxn--8pvr4ucoolblogxn--0trq7p7nnkawasakinagasakimiyazakichilloutxn--8ltr62kxn--klty5xpeeweezombiecutegirlxn--rny31hxn--uuwu58axn--ntso0iqx3axn--djrs72d6uytoyamanikitanyantakagawamimozanagoyaboyfriendxn--2m4a15egreaterchowderegoismyamagatafashionstorexn--elqq16hxn--pssu33lsendaimiyagixn--rht27zpecoriaomorisaloonwatsonvivianxn--djty4knobushipigboatnaganopinokoxn--f6qx53asadistvelvetsecretxn--5js045dchicappayamanashiibarakidigickgirlfriendxn--1lqs71dmongolianxn--c3s14mxn--qqqt11mtochigixn--5rtq34kparallelo0o0mondkobesagabonadecaoitanarafoolkilldecimainhiholomosblokilociaoundopupugifutankcrapflopnooroopsmodsholyjeezstripperpepperbittershizuokaxn--rht3dkitakyushureadymadeicurusversusmatrixxn--rht61ehungryfloppygloomycrankyhandcraftedlittlestarxn--klt787dxn--kltx9awhitesnowsunnydaytottorilovepoptheshopbuyshopxn--5rtp49cxn--d5qv7z876cwebaccelxn--kbrq7oxn--4pvxsxn--1ctwolovesickkumamotocatfoodxn--tor131oyokohamawakayamatonkotsuxn--ehqz56nxn--uist22hxn--6btw5axn--kltp7dyamaguchifrenchkisspussycatxn--4it797kxn--uisz3gbabybluexn--zbx025dnetgamersxn--7t0a264ckanagawaxn--6orx2rishikawaxn--ntsq17ghalfmoonschoolbusjellybeanxn--mkru45iusercontentlolitapunkxn--32vp30hsakurastoragehokkaidoshimanecandypopbabymilksupersaleweblikeraindropbackdropwebsozaikikirarahateblodaynightmeneacsccogoormobiinfoaeusxxorgmilcomnetedugovorgcomnetedugovbizinfotmprdorgmilcomnomedugovassnotairespresseassocoopgouvveterinairemedecinpharmaciensorgnetedugovtraorgcomedurepgovmeneperekgacscaiiocogoitoresmshsseoulbusanulsandaeguc01milvkimmvchungnamjeonnamjeonbukeliv-dnsgyeonggijejueliv-cdnincheondaejeongangwongyeongbukgwangjuchungbukgyeongnameliv-apicoeduindorgcomembnetedugovorgmilcomnetedugovjcloudorgcomnetintedugovperbnrinfocooyorgcomnetedugovipfscanvamypepw3sstorachakeeneticjoinmcinbrowserdwebcyonnftstoragemyfritzaemewphlxachotelltdorgcomwebsocschngonetintedugrpgovassnomgacsccoorgnetedugovbizinfo123websiteidorgmilcomasnnetedugovconfidmedorgcomplcschnetedugovaccoorgnetgovpresstmassoirseproxaccosoundcasthoptocraftvp4c66orgnetedugovitsmcdirmyboxbarsyedgestacksynologylogintonohostwebhopdiskstationi234tcp4hoocgroknoipprivmydsddnsdnsforlohmustransipdscloudfilegear-sgbrasiliafilegearframerbarsybarsyonlinecoprdorgmilcomnomedugovinforgcomnetedugovnameacprorgcomartnetedugovpresseinfoassoinstgouvorgnycedugovbarsydscloudjuorgcomnetedugovminisiteaccoororgcomnetgovorgmilcompronetintedugovbizmuseumnameinfoaerocoopaccoorgcomnetintedugovbizcooporgcomgobneteduorgmilcomnetedugovbiznameaccoorgmilneteduadvgovcoorgcomnetaltgovforgotherhiskeeneticispmanagernomassoprod5476132eastasiacentraluswesteuropewestus2eastus2rucdnwest1-usfra1-desandboxjls-sto1jls-sto3jls-sto2aglobalabglobalsslmapprodfreetlsmaplon-1lon-2ny-1fr-1sg-1ny-2paassnwebpaashostingjelasticnordeste-idcsocuserpagescwebfileblobservicebuscoreatlricnjsjelasticwebsitestoragesezagbinruhuukjptsmyspreadshopmynetnameakamaiorigin-stagingfrom-codynv6cdn77serveblogadobeaemcloudhicamsprytdnsupno-ipownipde5ovhicpfirewall-gatewaysytesmypsxbarsyusgovcloudapimyamazemyradwebakamaihdsaveincloudfastlylbfrom-lasubsc-paysquare7in-the-bandblackbaudcdnhomelinuxoninfernoctfcloudservebbsdns-dynamiccloudfrontakamai-stagingipifonyham-radio-opsenseeringclickrisingcommunity-profrom-nylocalcertgrafana-devedgesuite-stagingcloudflareanycasteating-organicatlassian-devmydattofeste-iplocaltotorprojectknx-serveredgekeycloudflareglobalcloudyclustercasacamserveftpakamaized-stagingakamaiorigindns-cloudmyeffectboomlabotdashbuyshousestwmailhetemlazure-mobilein-dslthruhereredirectmedynuddnsbouncemesupabaseluyanicloudappakamaicloudfunctionsdebiannhlfanpgafanstatic-accessin-vpnmysynologymafeloappudohomeftptrafficmanagersiteleafseidatmemsetcloudflarecloudaccesskeyword-onazure-apiis-a-chefdoes-itgets-itwebhopselfiphomeipkicks-assedgesuitewindowsserver-ontunnelmolemydissentscrapper-sitecloudflarecnuni5srcfggffiobbzabcdenodynuopikddnsvpndnsakadnselastxkinghostvps-hostfastlyhomeunixazureedgeshopselectdontexistmyfritzcloudjiffyalwaysdatasells-itsquaresbroke-itazurefddattolocalat-band-campmeinforumfamilydsazurestaticappsdefinimabplaceddnsaliasdynaliasnow-dnsblogdnsroutingthecloudendofinternetdsmynasakamaiedgemymediapcadobeio-staticakamaiedge-stagingakamaihd-stagingddns-ipprivatizehealthinsurancelive-onkrellianschokokeksmassivegridmysecuritycamerarackmazeserveminecraftfrom-azis-a-geekakamaizedmoonscalecryptonomicoffice-on-theusgovtrafficmanageradobeioruntimeedgekey-stagingreserve-onlinechannelsdvrdnsdojousgovcloudappcdn77-sslapps-1and1podzoneazurewebsitesdynathomescaleforceyandexcloudvusercontentisa-geekcdn-edgescoaemalcesappwriteazimuthtlonarvonoticeablestorecomwebrecnetperotherfirminfoartslgdloncogoiltdorgmilcolcomplcschgenngonetedugovbiznamefirmmobiacincoorgmilcomnomwebgobnetintedubizinfocomyspreadshopdemongovtransurl123websitehosting-clusterkhplaycistrongsnesosvalervålerxn--vler-qoaossandeheroysandeherøybøboheroyherøyxn--hery-iraxn--b-5gavalerbøboxn--b-5gasandesandexn--hery-iraxn--vler-qoavålerhåålaahavaofsfvfhlolnlalrlhmfmtmahcostntbuåstrmreigersundmyspreadshopgálsáeidsvolltingvollgildeskalflorøvadsøvardøvanylvenxn--bhccavuotna-k7astrandaxn--kvnangen-k0axn--sknland-fxaxn--mosjen-eyarakkestadhyllestadnannestadvevelstadvaapstenordre-landsondre-landsøndre-landxn--vrggt-xqadsør-aurdalsor-aurdalheradstordmoldefordeførdeseljefedjeryggehemnexn--krehamn-dxasognegranesøgnebrynetjomevallebykletokkegiskedovretjømehobølvoldasaudatolgasømnaviknadønnasomnadonnatranafrananesnaraumasmolatrænafrænalesjasmølaørstaorstahitrafloraaukraloppafrøyarissasnasahalsagalsaromsaraisaráisafroyasnåsagronghobolfjelltydalårdalardalaskimharamkraanghkekråanghkesorumbarumhurumbærumsørummodumsálátbálátfrognbjugnvåganvagangulenskienløtenlotenstrynvefsnxn--merker-kuaskaunsveiobømlobomloskjåkvardoflorovadsosalatbalatsálatklæbuklabuselbubarduulvikskjakklepprisørxn--nttery-byaeflåeidflahofmilgolholsellomskifetvikdepvgsfhsaskerrisorhamarasnesåsnesrørosrorosxn--slat-5namasoynaroyvaroyluroydyroyaskoyradoyandoyrodoymeloyradøyandøyrødøymeløyaskøylurøydyrøymåsøyværøynærøyhoylandethøylandetdivtasvuodnalørenskoglorenskognesoddtangenxn--tjme-hraxn--smla-hraxn--stjrdal-s1aunjargalillehammerunjárgadavvenjargaxn--bearalvhki-y4a123hjemmesidegjerdrumxn--brnnysund-m8acxn--tnsberg-q1axn--mlatvuopmi-s4axn--snsa-roaxn--skierv-utaxn--brum-voatysfjordkvafjordeidfjordkvæfjordsongdalenmjondalenmjøndalenxn--gls-elackragerogáŋgaviikagangaviikasørreisasorreisasør-varangersor-varangerxn--risr-iraskiervaxn--frna-woaxn--trna-woakvinesdalleksvikleirvikrøyrvikroyrviksvelvikvenneslaevje-og-hornnessandnessjøenmarnardalvindafjordsandefjordenebakksnillfjordullensvangxn--trany-yuabrønnøysundnamsskoganaustevollxn--stjrdalshalsen-sqbnord-aurdalnord-frontrøgstadtrogstadgrimstadflakstadgjerstadxn--sandy-yuaxn--leagaviika-52bnore-og-uvdalvegarsheixn--rlingen-mxaxn--ggaviika-8ya47hvegårsheikarlsoykvitsoymasfjordenhamaroyinderoyosteroydavvenjárgasauheradguovdageaidnuxn--vre-eiker-k8abronnoysiellakkrødsheradkrodsheradkvinnheradbrønnøyxn--mtta-vrjjat-k7afxn--lrenskog-54akvitsøyvárggátosterøyinderøybronnoysundxn--aurskog-hland-jnbbahccavuotnabáhccavuotnagiehtavuoatnastor-elvdalmidtre-gauldalxn--gildeskl-g0akarasjokevenassixn--bievt-0qaxn--yer-znaaudnedalnlebesbynessebyxn--hbmer-xqamalselvmålselvxn--unjrga-rtamøre-og-romsdalmore-og-romsdalhareidmelandørlandorlandstrandålgårdsolundalgardafjordåfjorddielddanuorrikautokeinoxn--stre-toten-zcbskodjeaejriestangeliernebamblestokkefauskesnåasesnaasekongsvingerlangevagberlevagxn--flor-jrahattfjelldalostre-totenøstre-totenvestfoldxn--mely-iraálaheadjualaheadjunordreisaxn--troms-zuaxn--lgrd-poacporsangerflatangerstavangerleikangerbremangersamnangerkarasjohkaxn--rdy-0nabfrostautsirasnoasatromsaxn--sr-aurdal-l8aflekkefjordjølsterjolsteraremarkhedmarknååmesjevuemienaamesjevuemiexn--vard-jrarollagmeråkermerakerorskogørskogxn--bdddj-mrabdákŋoluoktaxn--osyro-wuaaknoluoktatrysilskjervøymandaljondalbindalrindalmeldalsuldalorkdalsigdalalvdallærdalhurdalsirdalverdallerdallardaloppdalåseralaseralhadselkragerødivttasvuotnaoverhallasteinkjerxn--hnefoss-q1askedsmokorsettromsøxn--dyry-iravestre-totenmuseumxn--sandnessjen-ogbrahkkeravjufylkesbiblbájddarbajddarxn--laheadju-7yarennesøyxn--koluokta-7ya57hxn--hgebostad-g3aleirfjordstorfjordbalsfjordbåtsfjordbatsfjordmuosátbievátloabátkárášjohkanøtterøyxn--mjndalen-64anordkappláhppilahppialstahaugsiljanverranrøykenroykenhaldenlyngenbergenhortenhønefosshonefosstroandinbeiarnvarggatosoyroosøyrotromsoidrettmuosatbievatruovatloabatvoagattynsetnessetxn--indery-fyaskánitskanitraholtråholtxn--ystre-slidre-ujbandebusarpsborgbearduhordalandjorpelandjørpelanddeatnuringsakersør-odalsor-odalxn--slt-elabringerikenittedalnissedalhemsedalslattumsurnadalxn--blt-elabelverumstjørdalnaustdalhjartdalgjøvikfyresdalhasviknarviklarvikgjovikmalvikgamviklenvikporsgrunnstjordalengerdaldrobakdrøbakxn--msy-ula0hvestvagoyxn--vgan-qoaxn--ryken-vuaxn--lten-graxn--stfold-9xaxn--hpmir-xqaxn--lury-iramálatvuopmimalatvuopmitysværkirkenesbirkenesmoskenesbáidárxn--fjord-lraxn--rdal-poabahcavuotnabáhcavuotnaxn--frde-gralindåsbearalvahkixn--hobl-iraráhkkerávjuxn--loabt-0qavågåáltábodøsundlundraderådeetnetimeholeauregrueoddavagavegaranatanaarnasolasulaaltalekafusavangbergkvamåmliamlifreibokntinnroangranosenoslobodorøstroststatåmotamotivguprivøyeroyerliermossvossxn--nvuotna-hwalusterlunnermarkerhábmerhabmerhvalerfjalerxn--rholt-mratysvarbaidarfitjargaularhápmirhapmirmelhusfosnesøksnesoksnestysneshemnesevenesflesbergeidsbergtonsbergtønsberglindasxn--sndre-land-0cbnamsosxn--srum-graøystre-slidreoystre-slidrevestre-slidretrondheimbalestrandxn--langevg-jxaaustrheimxn--skjk-soavagsoyaveroysandoykarmoyfinnoytranoyvestbytranbysykkylvenxn--hyanger-q1aspjelkavikandasuoloxn--fl-ziaxn--drbak-wuastathellexn--sr-varanger-ggbtelemarkxn--bhcavuotna-s4axn--porsgu-sta26fčáhcesuolocahcesuoloakrehamnåkrehamnsandøykarmøyfinnøytranøyvågsøyaverøynamdalseidxn--lesund-huabadaddjaxn--vegrshei-c0axn--btsfjord-9zagildeskålporsanguxn--trgstad-r1anávuotnanavuotnahammerfestxn--sgne-graxn--brnny-wuacibestadharstadnarviikaevenáššivestnesgjemnessandnesagdenesrennesoyxn--avery-yuaxn--tysvr-vrabearalváhkikongsbergspydebergrandabergxn--andy-iradavvesiidaxn--krdsherad-m8aporsáŋgufredrikstadbjerkreimringeburennebuaurskog-holandnotteroyxn--vgsy-qoa0jxn--rmskog-byaskierváivelandbyglandfrolandaurlandforsandxn--bjddar-ptamidsundålesundalesundfetsundfarsundovre-eikerøvre-eikerakershusxn--moreke-juasørfoldøstfoldostfoldsorfoldhøyangerhoyangerlevangerorkangertanangerxn--vestvgy-ixa6olillesandxn--rennesy-v1agranvinskjervoyxn--klbu-woalavagisxn--h-2faxn--ryrvik-byakafjordkåfjordseljordfolkebiblxn--gjvik-wuajevnakerxn--kfjord-iuabudejjuxn--kranghke-b0axn--davvenjrga-y4axn--rland-uuaxn--ldingen-q1axn--mlselv-iuaxn--rady-iraxn--linds-prabrumunddalxn--ygarden-p1amo-i-ranaeidskogrømskogromskoghjelmelandxn--finny-yuaxn--sr-odal-q1axn--skjervy-v1aballangenkvanangenkvænangengratangenxn--hmmrfeasta-s4acvossevangenxn--rde-ulaxn--mli-tlaxn--ksnes-uuanordlandskanlandskånlandsortlandfuoiskuxn--rros-graxn--hcesuolo-7ya35bxn--eveni-0qa01gagaivuotnagáivuotnaxn--seral-lradrammenmodalenmosjoenjan-mayentorskensteigengloppenxn--snes-poamatta-varjjatxn--sr-fron-q1aomasvuotnajessheimbådåddjåxn--krager-gyaxn--kvfjord-nxaxn--asky-iraxn--snase-nraxn--bidr-5nacholtålenxn--vads-jraxn--jlster-byamosjøenxn--rst-0nastavernxn--ostery-fyaxn--oppegrd-ixaxn--sknit-yqaxn--risa-5naoppegårdskiptvetrendalenholtalenxn--mot-tlaxn--lhppi-xqaxn--holtlen-hxaxn--srreisa-q1akopervikxn--muost-0qaxn--bmlo-grahokksundkvalsundegersundxn--karmy-yuaullensakerxn--hylandet-54axn--kvitsy-fyaxn--bod-2nalangevågberlevågkristiansandxn--rsta-frahornindalstjørdalshalsenstjordalshalsensandnessjoenhámmárfeastaxn--lrdal-srasør-fronsor-fronnord-odalkristiansundmátta-várjjatvestvågøynesoddennotoddenbuskerudøygardenoygardensalangenlavangenralingenrælingenlodingenlødingenleaŋgaviikalaakesvuemieleangaviikaxn--srfold-byaaskvollxn--rskog-uuaxn--nry-yla5gxn--vry-yla5ghammarfeastaxn--rhkkervju-01afxn--givuotna-8yakommunekrokstadelvanedre-eikerhagebostadhægebostadxn--berlevg-jxakviteseidxn--s-1faxn--l-1faxn--nmesjevuemie-tcbafuosskomoårekemoarekexn--lt-liacxn--jrpeland-54asvalbardoppegardholmestrandtvedestrandsogndalsokndalarendalsunndalfolldalxn--krjohka-hwab49jlyngdaletnedalnorddalsaltdalgausdalskedsmovaksdalgjesdalstordalxn--frya-hraaarbortedrangedalxn--smna-graaurskog-hølandxn--vg-yiabtjeldsundhaugesundlindesnesxn--mre-og-romsdal-qqbxn--dnna-gradynmerseineshacknetenterprisecloudmineaccomaorimāoriorgmilcriiwigennetschoolhealthkiwigovtgeekxn--mori-qsacloudnsparliamentcomedorgcompronetedugovmuseumwebsitekinservicebarsywebsitebuildereerobookheimdnsleapcelleero-stagetechcrscsslorigingohomecdbedeeeiemesecabgngilnlalplchfisiincnnoroptatitmtltruauhulumkdkukskjplvtrgrfrkrhrusesismycynzcznetinteduassoososcloudstgbetaaezaeuhkusjshatenadiarycdn77hoptozaptois-a-knightmyftpno-ipjpnddnssdpdnsspdnsbarsysweetpepperis-a-bruinsfanis-very-sweetservegameis-a-soxfanhomelinuxcdn77-secureservebbsmisconfusedwebredirectblogsitefreedesktopcouchpotatofriestoolforgeaccesscamis-lostreadmyblogsmall-webfedorapeopleserveftpis-a-celticsfanmywirepotagertwmailin-dslsellsyourhomeread-booksfreeddnscable-modemis-savednflfanufcfanmlbfanstuff-4-saleendoftheinternetin-vpnmy-firewallhomeftpis-localis-a-chefboldlygoingnowherewebhopselfipkicks-assroxatunkcamdvrfedoraprojectgotdnsdvrdnsdyndnspubtlspimientahomeunixdontexistfedorainfracloudwmflabsfspagesbmoattachmentsteckidsfamilydsdnsaliasdynaliasnow-dnscloudnsdoomdnsduckdnsblogdnshomednsroutingthecloudendofinternetdsmynasip-dynamicpoivronhttpbinmyfirewallis-very-evilmysecuritycamerais-a-linux-userwmcloudis-a-geektuxfamilyis-a-candidatedoesntexistis-very-badhobby-sitegame-hostaltervistais-foundis-a-patsfandnsdojohepforgepodzonedynservcollegefanis-very-goodfrom-meis-very-niceisa-geeknerdpolacmedsldingorgcomnomgobabonetedupleskaemhlxmyboxrockyprvcydeuxfleurspdnscodebergheyflowstatichostorgmilcomnomgobneteduorgcomeduiorgmilcomngonetedugovcloudns1337ngrokacorggogfamcomwebgobnetedugokgopgkpgovgosbizpasaugumicsopozpapuwmwsrprusiskwpspkppspkmpspokeoiawsawifoumsdnskokwpmuppuppsppiwwiwoowuzswkzoschrzpisdnwzmiuwwitdpssewsseumigugimoirmpinbwinbwiihupporzgwgriwupowwskrwioswuozstarostwokonsulattmpccopruszkowmyspreadshopostrodakartuzyopolegminamediaustkazgorajgoraolawailawalomzawloclradombytomjaworznotargilubinkoninzagantorunkutnokepnonakloczestsopotsanokturekplockslasksklepzarowlukowmedaidgdaorgmilrelcomnomatmgsmartneteduelkgovwawsossexbiztgorysejnytychypomorzeboleslawiechomesklepsdscloudunicloudzakopanelegnicarawa-mazbydgoszczswidnikkrasnikwloclawekbielawamragowograjeworealestatebeskidykaszubymalopolskaprzeworskswiebodzinlecznadfirmaszkolawarmiagdyniamiastakazimierz-dolnymalborkswidnicadlugolekaostrolekapodlasieelblagtravelsimplesitezachpomormielecszczecinnieruchomosciwalbrzychlezajsklublinbedzinpoznanwielunmielnooleckostarachowicedkontopowiatwroclawrybniksuwalkileborkslupskgdanskostrowwlkptarnobrzegtourismwegrowkrakowglogowyou2pilanysamailwrocinfoagroautobeepshopprivlapypiszlodzcfolksecommerce-shopmazurypulawyskoczowrzeszowpomorskiezgierzkaliszolkuszlowiczostrowiecsosnowiecmazowszewodzislawbialowiezazgorzeleckatowicepabianicejelenia-gorawolominkarpaczsieradznowarudaczeladzkonskowolaskierniewiceswinoujscieturystykabieszczadycieszynketrzynolsztynbialystokbabia-goraprochowicewarszawastalowa-wolapolkowicegorlicegliwiceponiatowalimanowalubartowaugustowkobierzyceopocznognieznoszczytnokolobrzegshoparenapodhalebielskoklodzkostargardatwithplayitownnamecoorgnetedugovacorgcomproestnetedugovbiznameislaprofinforechtngrokmedaaaacacpaenglawjurbarbarsykeeneticavocatacctcloudnsorgcomsecplonetedugov123paginaweborgcomnetintedugovnomepublidkinbarsygovx443cloudnsorgmilcomnetedugovcooporgmilcomschnetedugovnamecomcannetlibassoaemclantmcontstoreorgcomnomrecwwwbarsyfirminfoshopartsstackitmyddnswebspacelima-cityacincooxorgedugovbarsybrendlyhbvpsvpsspectrumlandinghostingacppmordoviamcprecbgorgmilcomspbnetintedumsknovgovbirrasmcdirmytismircloudvladimirnalchikadygeyamarinepyatigorskmyjinobashkiriaeurodirvladikavkazna4ugroznykustanaikalmykiacldmaildagestaniranbuildcanvaliaravalwixdevelopmentappwritemigrationneedleverceldatabasestackitcodereplravendbonporterlovableaccoorgmilnetgovcoopmedorgcompubschnetedugovservicemecoorggovtvmedorgcomnetedugovinfoedgfacbmlonihkutwpsryxzbdtmacfhppmyspreadshopbrandpartiorgcomfhvpress123minsidaitcouldbeworlanbibkommunalforbundfhskiopsyskomvuxkomforbnaturbruksgymnloginlineorgcomnetedugovenscaledeuusentbotdaorgmilcomnetgovnowteleporthashbangplatformlovablebarsyshopwarebasehoplixbarsyonlinemsf5gitappgitpagecofigma-govcaffeinefigmacanvasoltstputerbarsysupportchatgptsquareomniweopensocialcpanelnotionnovecorewpsquaredpreviewjelecyonbyensrhtfastvpspieboxconvexjouwwebheyflowplatformshloginlinemadethissourcecraftclouderaorgorgcomartedugouvunivmeorgcomnetedugovsurveysstatichfheiyuxs4allprojectmyfastubervibehostapp-ionosdeployagentmecoorgcomschnetedugovbizcncostoreorgmilcomneteduembaixadaconsuladokiraranohoprincipesaotomeheliohobarsystorebaseshopwaresellfyabkhaziavologdamordoviapenzalenugsochinavoiexnetspbmsknovnorth-kazakhstanashgabadkareliaarmeniageorgiavladimirnalchikivanovobukharaadygeyakhakassiakalugakrasnodarjambylaktyubinsktroitskbryanskobninskkurganazerbaijanpokrovskbashkiriatselinogradvladikavkazmurmansktulatuvamangyshlaktashkentchimkentgroznykaragandatermezarkhangelskkustanaikalmykiabalashoveast-kazakhstankaracoldagestantogliattibarsyredorgcomgobedumirenknightpointaccoorgjelasticdiscoursecleverappsschacmiincogoornetonlineshopaccogoorgmilcomwebnicnetintedugovbiznametestcoorgmilcomnomnetedugovorangecloudpersoindorgcomfinnatnetgovensmincomtourismintlinfox0611oyaorgmilcomnetedugovquickconnectvpnplusnettprequalifymeaddrmyaddrntdllwadlnctvavdrk12orgmilpolbeltelcomwebgennetedutskkepgovbbsbiznameinfocoorgmilcompronetedugovbiznameinfobetter-thanworse-thansakurafromdyndnson-the-webmymailerorgmilurlcomneteduidvgovmydnsgameclubebizmeneacsccogotvorhotelmilmobiinfovodteiflgplkmsmsbcckhincndnvncoztltmkckppzpdprvcvkvlvcrkrkscxuzchernovtsyrivneyaltaodesavolynrovnolutskltdinforgcomnetedugovbizvinnicazhitomirternopilpoltavakropyvnytskyizaporizhzhiasevastopolsebastopoluzhgoroduzhhorodkharkovkharkivvinnytsiakhmelnytskyizaporizhzhecrimeaodessazhytomyrnikolaevcherkassydonetskluganskluhanskkirovogradivano-frankivskchernivtsikrymkievkyivlvivsumyzakarpattiamykolaivcherkasychernigovkhersonchernihivdnipropetrovskdnepropetrovskkhmelnitskiyneacsccogoorusorgmilcomedugovvmdhmyspreadshopadimono-ipbarsybytemarkbarsyonlinelayershiftnh-servretrosnubapicampaignservicelugaffinitylotteryweeklylotteryraffleentrygluglugsmeaccoindependent-inquestnimsitecopropymntltdorgplcschnetgovnhsbarsyindependent-commissionindependent-reviewpolicepublic-inquiryindependent-panelconnhospindependent-inquiryroyal-commissionoraclegovcloudappscck12libccphxcclibpvtparochchtrcck12libcceatonk12coglibtecgendstmusann-arborwashtenawcck12glghcck12sealibforksolympiabainbridge-islkeyporthoquiamyarrow-pointcentraliaport-townsendsequimport-ludlowrentonsilverdalebremertonredmondsheltonbellevueport-orchardport-angeleskingstonchehalisaberdeengig-harborseattlepoulsboidmdndsddemenegacalamaiavawapailalflnmdcncscohnhmihiviwiriinmntnmocoutvtctmtgunjokakwvnvprarorasmskstxwynykyazisadninsnngosrvis-bymircloudservernamepointtoenscaledland-4-salefreeddnsstuff-4-saleazure-apinoipcloudnsgolffanheliohostazurewebsitesgvorgmilcomgubneteducoorgcomnetd0egvorgmilcomnetedugovmydnsiacostoree12orgmilcomnomwebgobbibrectecnetintedugovraremprendefirminfoartseducok12orgcomnethidnsidacaiiosonlahanamhanoicamauhueorgcompronetintedugovbizbacninhtayninhhoabinhnamdinhtravinhhaiphongvinhlonghaiduongquangnamquangtrithuathienhuequangninhbacgianghaugiangquangbinhsoctrangbentrethanhphohochiminhdanangkontumhatinhkhanhhoathanhhoahealthgialailaocaiyenbaibackanngheanlonganphuyenphuthocanthodaklakdongnainameinfovinhphucdongthapkiengiangtiengiangquangngailaichaulangsonlamdongdaknonghagiangangiangcaobangbinhduongninhthuanbinhthuanbaclieuthaibinhninhbinhbinhdinhtuyenquanghungyenbaria-vungtauthainguyendienbienbinhphuocschbizputerimagine-proxyorgcomnetedugovcloud66advisormypetsdyndnsxn--8dbq2axn--4dbgdty6cxn--5dbhl8dxn--hebda8bxn--80auxn--d1atxn--c1avgxn--o1acxn--o1achxn--90azhxn--55qx5dxn--uc0atvxn--od0algxn--wcvs22dxn--gmqw5axn--mxtq1mxn--12c1fe0brxn--h3cuzk1dixn--12co0c3b4evaxn--12cfi8ixb8lxn--o3cyx2axn--m3ch0j3axn--j1adpxn--90amcxn--90a1afxn--h1ahnxn--j1ael8bxn--h1alizxn--c1avgxn--j1aefxn--80aaa0cvacxn--41acaffeineexeopentunnelbotdashtelebitorgtmaccoagricorgmilnomwebnicngonetaltedugovlawnisschoolgrondaraccoorgmilcomschnetedugovbizinfoprg1-zeropstritonstackitlimazeropsaccoorgmilgovяспборгкоммскбизмирсамаракрымсочиакодпроргобрупрצהלממשלישובאקדמיהองค์กรธุรกิจรัฐบาลศึกษาทหารเน็ต教育網絡組織公司政府個人닷넷한국澳门新闻澳門联通家電嘉里招聘通販닷컴삼성コムგეбгрфеюadcdbdgdidmdsdtdaebedeeegeiejekemenepereseveyegabacalamanauavapaqasazacfbfafgfnfpfwftfbgcgagggegkgngmgsgpgvgtgugilmlnlalclglplsltlhmimjmkmmmomambmcmdmfmgmzmpmsmtmgbbblbsbecccacnclcmcvctcscmhkhghchbhthphshlinikifigiaibicivisikninhnmncnbngnsnpnvntnjoionomobocoaofodorosotoptstttytatbtetgtithtmtltrusuvuaucueuguhulumunufjdjbjtjsjlkmkhkfkdkcktkukskpkgpmpnpkpjpgqaqmqiqsvtvcvbvmvlvrwpwtwzwbwcwawgwkwmwtrsrprgrfrercrbrarnrmrlrkrirhrwsusrssspsgsesbsaslsmsissxmxaxcxuypysylymykygybycyuztzsznzmzkzdzczbzazελευ世界台灣购物公益点看臺灣网络書籍在线网站手机机构大拿游戏信息台湾谷歌慈善商标香港中国餐厅网址中國商城食品微博政务移动集团公司八卦商店健康网店政府时尚佛山中信娱乐广东企业homedepotengineeringاماراتrepublicankuokgroupversicherungchannelcitadelxn--pgbs0dhxn--b4w605ferdstatebankwebsitexn--mgb9awbf亚马逊淡马锡alibabaxn--ngbc5azdxn--mgbbh1axn--45br5cyltoshibabuildworldcloudtradeguideplacespacedancemoviephoneprimesmilebiblestyleappleazurestoreskypegripexn--l1accdrivelottehorsehouseleasechasereisestadahondaomegaaetnaamicaninjanokiamediadeltavodkaedekaosakapizzaslingemailgmailtirolshelltmallfinallegaltotalhotelamfamforumrehabmusicciticricohcoachwatchboschearthfaithirishmiamiarchidubaiguccipraxiみんなストアセールcanonsalononionnikonepsonkoelngreensevencrownikanoradioaudioweiboglobopromogalloyahoociscorodeovideomangobingotokyovolvolottokyotophotosmartsportquesttrusthyattjetztadultcymrubaidutushuxn--kprw13dubankclickblackmerckgroupsharpcheapnowtvxn--h2brj9cקוםհայоргсрбмонкомбелмкдқазрусукрمصرقطرعربكومdadcfdmedwedredphdthdbidpidkrdmsdltdiceonewmeglemoerwecfageacbanbambaaaammakianraspacpaaxawtfbcgaegongingaigvigorgdogdhlmilrilonlaolloluoljllcalgalnflafltelsrlfrllplkimibmcamcombommomifmabbjcbscbcabnabtabmlbpubabcbbcnecincpncllcstcwtcpwcnyckfhbzhovhmoiskiobisbitcifyituipinvinwinxincbnbcnmanfangdnmenrenkpnmtnyunrunfununobiojioriohbogmofooboooooacoecoceongoproartistottnttbbtcateatlatvetpetbetnethktmitfitintjothotgotdotbotprueduicujnjyouinknhktdkappsapgapmapdnptopgopllpjmpzipvipripesqtrvdtvitvdevmovgovhivnrwlawsewnewbmwwownowhowdvrftrmtrsfrbarcartvscrseusawsupsubssbsadsddsldssasbmsmlsxxxboxfoxgmxtjxsextaxbuyflydiysoyjoyskypaydaygayxyzanzbizwebersenerpokerlameractortatarsolarລາວคอมไทยtourslocusnexuslexusgiftsbeatsboatspartspressglassswissकॉमनेटtiresgivescodeshomesgamestunesshoescardswalesloansvegastoolsdealsautosparisファッションworkssucksrocksxeroxforexfedexpartylillymoneystudyrugbytoraytoday中文网xn--unup4y天主教飞利浦新加坡enterprises我爱你嘉里大酒店christmasxn--fct429kholdingsxn--8y0a063axn--mgbx4cd0ablifestyleabogadoallstatenetbankكاثوليكxn--s9brj9cxn--gk3at1ebestbuycharityxn--55qx5dmicrosoftpropertybasketballhomegoodscorsicajewelrygallerygrocerysurgerycountrybrusselsverisignferreroxn--czr694bhdfcbankcommbanksoftbankپاكستانپاکستانnextdirectالسعوديهالعليانxn--h2brj9c8cxn--80adxhksshikshaxn--mgbai9azgqp6jcuisinellabarclayscatholicxn--kpry57dcompanyxn--xhq521bblackfridayxn--mgba3a3ejtsandvikxn--d1acj3bacademydownloadمليسياxn--j1amhxn--w4r85el8fhu5dnraipirangaathletaxn--fhbeixn--mgbqly7cvafrzuerichxn--c2br7gஇலங்கைcontractorsxn--io0a7igraphicsinsurancetemasekxn--xkc2al3hye2amotorcyclesphotographydirectoryplumbingxn--vhquvclothingtrainingcleaningwilliamhilllightingxn--mgba3a4f16ashoppingcateringeducationokinawapicturesventuresproductionsxn--9et52uwalmartഭാരതംsupportrealestatecapitalonexn--nqv7fs00emaauspostfloristdentistxn--qxamgodaddybradescobargainsmitsubishikerryhotelsxn--9dbq2axn--3pxu8kimmobilienxn--fjq720axn--mgbtx2bholidaymckinseymadridbusinessbuildershelsinkixn--4gbrimмоскваالسعودیةcoffeedegreelacaixapartnersalsaceofficeabbvievoyageorangegeorgeonlinechromemobilekindlegoogleoraclecircleschulesecureinsurexn--mgba7c0bbn0aestatexn--mgbc0a9azcgcruisehangoutxn--vuq861bxn--42c2d9arexrothfirestoneuniversityxn--nnx388alifeinsuranceextraspaceонлайнvermögensberatersoftwarexn--fiqs8sxn--mgbab2bdxn--w4rs40ltiendaभारतम्africatoyotaotsukasakuracameracreditcardnagoyaconsultingnetworkjunipertheatermonsterprogressivepioneerxn--55qw42gracingdatingvotingvikinglivinggivingxn--bck1b9a5dre4cbrotherweatherjoburgفلسطينlplfinancialxn--clchc0ea0b2g2a9gcdfutbolschoolsocialglobaldentalwoodsidechanelairtelmatteltravelrealtorwebcamstreamభారత్unicomalstomxn--nodexn--6frz82gmuseumfurniturexn--rvc1e0am3exn--mix891faccenturexn--11b4c3dismailineustardiscountquebeccomsecclinicservicesxn--y9a3aqxn--c1avgswatchchurchsearchالاردنmarketingcontacthealthmonashshoujisanofitaipeiamericanexpresssuzukiアマゾンクラウドポイントbhartiグーグルxn--mgberp4a5d4armemorialxn--1qqw23alondonmormoninstitutevisionbostonnortoncouponmaisonamazonvirginberlindesigndurbanolayannissananquanxihuanhitachikaufengardenreisenbayerntechnologydatsunxn--90a3aclatinocasinostudiophysioxn--ngbe9e0apharmacytattootaobaoaramcoexpertreportabbottdirectselectimamatfairwindspictettargetmarketintuittravelersinsurancecreditdupontryukyusuppliesxn--tckwebnpparibasschmidtmerckmsdyodobashirestaurantbridgestonecricketxn--fpcrj9c3dbostikbroadwayattorneylefrakemerckxn--fiq228c5hscareersfarmerswinnersflowersxn--wgbh1cguitarsxn--54b7fta0ccxn--p1acfmakeupgalluplandroverxn--kcrx77d1x4agoldpointbauhausxn--mgbayh7gpahiphopplaystationxn--mgba3a4fraxn--eckvdtc9dhyundaixn--gckr3f0fistanbulticketsmarketsflightschintaireviewsxn--3e0b707ewindowsxn--fiqz9sfinancialxn--fzys8d69uvgmابوظبيdiscoverreviewবাংলাxn--5su34j936bgsgmoscowobserverapartmentsдетиارامكوсайтeurovisionxn--i1b6b1a6a2exn--xkc2dl3a5ee0hتونسموقعبارتڀارتشبكةعمانبيتكعراقreadkredbondlandbandfundfoodprodgoldfordtubecafesafelifeggeeieeefreefagepagegugezonewinememenamegamesaleablebikenikelikecarecbreherefiresaveloveliveblueartedatesitevotecaseluxebofamodaltdaasdatiaayogasinavanashiaasiajavabbvatevavivadatazaraarpacasavisasncfprofmaifsurfgolfdvagsongbingpingwangkpmggoogblogpohlfailcooldellcalldeallidlsarlfilmteamroomfarmimdbarabclubhdfcicbchsbcgmbhrichtechfishdishcashminiernikddiaudiwikimobitaxicitikiwidesiqponskinloanakdnwienopenporncerntownimmolimoolloinfonicofidolegosaxozeroaerovivoautovotomotofastbestresthostpostnextlgbtchatseatgiftmeetdietreitmintrentgentspotscotguruitausohumenucyoubanklinkpinkdclktalksilkbookseekworkrsvpaarpjeepshopcoophelpcamppccwshowbeerstarruhrflirweirhaircarsparsjprshausplusnewstipstoysjobskidsfanspicsdocsxboxamexsexynavycitysonyarmyallybabyplaydeliverybuzzgbizlamborghiniphilipsලංකාಭಾರತfitnessexpresslanxesspfizercenterwalterlawyersoccercareerkosherbrokerlockerdealerdoctorauthorxn--mgbqly7c0a67fbcvermögensberatungjaguarxn--pssy2uxn--hxt814eflickrrepairrogersairbusxn--mgbai9a5eva00beventsyachtsxn--t60b56aভাৰতভারতभारतभारोतviajeshermeshughesxn--j1aefसंगठनvillasଭାରତclaimshotelsભારતzapposphotosjuegoscondostatamotorsgratistennisਭਾਰਤtkmaxxtjmaxxschaeffleryandexxn--80aswgrealtysafetybeautyluxuryxn--3ds443gsupplyfamilyxn--o3cw4hhockeysydneyxn--90aenissayalipayenergycomputeragencyxn--rovu88b電訊盈科xn--gecrj9cstatefarmaccountantaquarelleolayangroup香格里拉xn--p1ai组织机构xn--1ck2e1bxn--mgbt3dhdschwarzموريتانياabudhabinowruzkomatsufujitsuhospitalxn--80asehdbxn--mgbtf8flxn--j6w193gxn--yfro4i67oprudentialxn--flw351ecruisescoursesrecipesxn--e1a4cferrarixn--ses554gxn--wgbl6awatchesstaplessinglesxn--mgbcpq6gpa1axn--otu796dpropertiescreditunionxn--mgbah1a3hjkrdstockholmhisamitsuالسعوديةstcgroupdomainsoriginscouponsbloombergclubmedfroganslimitedxn--80aqecdr1aexposedinternationalequipmentbarclaycardxn--q7ce6axn--mgbi4ecexpprotectionassociatesconstructionxn--cck2b3bxn--45q11candroidfoundationישראלxn--mgbca7dzdocliniqueboutiqueengineerxn--qxa6asystemsfirmdalefashionauctionxn--nqv7finfinitirentalsreliancetradingweddingfishinghostinggentingbookingcookingxn--3hcrj9cgraingerxn--czrs0tdemocratsamsungyokohamaxn--h2breg3evexn--nyqy26alundbeckmelbournevacationssolutionsfrontierxn--vermgensberatung-pwbmanagementxn--cg4bkixn--mgb2ddeslincolnhamburgsandvikcoromantblockbusterairforcebarefootxn--4dbrk0ceinvestmentsfeedbackcommunityxn--ngbrxالبحرينdiamondsamsterdamhealthcareredumbrellaxn--mxtq1mxn--2scrj9cagakhanxn--mgbpl2fhкатоликcaravanசிங்கப்பூர்richardlimortgageamericanfamilyxn--fzc2c9e2cscholarshipssaarlandxn--imr513nvlaanderensamsclubgoodyearkitchenஇந்தியாweatherchannelallfinanzxn--kput3iالسعودیۃxn--90aisxn--efvy88hالجزائرxn--mgbaam7a8hexchangejpmorganxn--tiq49xqyjfidelitysecurityxn--mk1bu44cwanggouxn--fiq64bxn--6qq986b3xlxn--mgbbh1a71exn--80ao21amarshallsxn--5tzm5gtravelerspanasoniclatrobeyoutubeaccountantsxn--rhqv96gxn--cckwcxetdanalyticsxn--ygbi2ammxبازاربھارتسوريةorganicfreseniusسورياxn--9krt00axn--qcka1pmcxn--jlq480n2rgdeloittesciencefinancexn--jvr189mxn--30rr7yhomesensehotmailbaseballfootballleclercboehringerxn--q9jyb4cxn--mix082fاليمنهمراهpolitieسودانايرانایرانnetflixyamaxunxn--lgbbat1ad8jcollegestoragecapetowncolognekerrypropertiesxn--mgbgu82axn--ogbpf8flxn--czru2dwhoswhociprianilasallexn--g2xx48cforsalebanamexaudiblexn--vermgensberater-ctbxn--zfr164bericssonvanguardxn--45brj9cindustriestheatremarriottxn--3bst00mcomparexn--mgberp4a5d4a87gcapitaldigitalالمغربbarcelonashangrilaxn--d1alfcalvinkleinwwwcitysapporokawasakinagoyasendaikobekitakyushuyokohamackjp\";\nexport const rulesRoot = 621;\nexport const exceptionsRoot = 625;\n//# sourceMappingURL=trie.js.map","// NOTE: kept (intentionally) near-identical to packages/tldts-icann/src/suffix-trie.ts.\n// They are separate copies rather than a shared helper because the lookup is\n// only fast when the typed arrays are module-scope monomorphic globals —\n// closing over them (a shared factory) measured ~20% slower. The ICANN build\n// also specializes (constant mask, no isIcann/isPrivate). Keep the two in sync.\nimport { fastPathLookup, } from 'tldts-core';\nimport { edgeChild, edgeLength, edgeStart, exceptionsRoot, labelText, nodeFlags, rulesRoot, } from './data/trie';\n// `edgeOffset` (where each label starts in `labelText`), `edgeHash` (djb2 of\n// each label) and `wildcardEdge` (each node's '*' edge, or -1) are derived once\n// at load instead of being shipped: the bundle then carries only the\n// compressible `labelText` + structure, while the lookup binary-searches\n// integer hashes. The cost is a single ~1ms pass at first import — cheaper than\n// the object trie it replaces. Kept at module scope (not captured in a closure)\n// so V8 treats the typed arrays as fast monomorphic globals.\nconst numberOfNodes = nodeFlags.length;\nconst numberOfEdges = edgeLength.length;\nconst edgeOffset = new Uint32Array(numberOfEdges);\nconst edgeHash = new Uint32Array(numberOfEdges);\nconst wildcardEdge = new Int32Array(numberOfNodes).fill(-1);\nfor (let node = 0, offset = 0; node < numberOfNodes; node += 1) {\n    for (let edge = edgeStart[node]; edge < edgeStart[node + 1]; edge += 1) {\n        edgeOffset[edge] = offset;\n        const end = offset + edgeLength[edge];\n        let hash = 5381;\n        for (let i = end - 1; i >= offset; i -= 1) {\n            hash = (hash * 33) ^ labelText.charCodeAt(i);\n        }\n        edgeHash[edge] = hash >>> 0;\n        if (edgeLength[edge] === 1 &&\n            labelText.charCodeAt(offset) === 42 /* '*' */) {\n            wildcardEdge[node] = edge;\n        }\n        offset = end;\n    }\n}\n// Result of the last `walk`, kept in module scope to avoid allocating a match\n// object. Safe because lookups are synchronous and read right after `walk`.\nlet matchNode = -1;\nlet matchStart = 0;\nlet matchEnd = 0;\n/**\n * True if edge `edge`'s label equals `hostname[start, start + length)`.\n */\nfunction labelEquals(edge, hostname, start, length) {\n    if (edgeLength[edge] !== length) {\n        return false;\n    }\n    const offset = edgeOffset[edge];\n    for (let i = 0; i < length; i += 1) {\n        if (labelText.charCodeAt(offset + i) !== hostname.charCodeAt(start + i)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Find the child edge of `node` whose label is `hostname[start, start + length)`.\n * Edges are sorted by hash, so binary-search the hash then verify the label\n * (scanning the rare run of equal hashes). Returns the edge index or -1.\n */\nfunction findEdge(node, hash, hostname, start, length) {\n    let lo = edgeStart[node];\n    let hi = edgeStart[node + 1];\n    while (lo < hi) {\n        const mid = (lo + hi) >>> 1;\n        const value = edgeHash[mid];\n        if (value < hash) {\n            lo = mid + 1;\n        }\n        else if (value > hash) {\n            hi = mid;\n        }\n        else {\n            for (let e = mid; e >= lo && edgeHash[e] === hash; e -= 1) {\n                if (labelEquals(e, hostname, start, length))\n                    return e;\n            }\n            for (let e = mid + 1; e < hi && edgeHash[e] === hash; e += 1) {\n                if (labelEquals(e, hostname, start, length))\n                    return e;\n            }\n            return -1;\n        }\n    }\n    return -1;\n}\n/**\n * Walk `hostname`'s labels right-to-left from `root`, recording the deepest\n * node whose flag passes `allowedMask` (with the label boundaries of that match\n * in `matchStart`/`matchEnd`). Returns whether any match was found.\n */\nfunction walk(hostname, root, allowedMask) {\n    let node = root;\n    let end = hostname.length;\n    let hash = 5381;\n    matchNode = -1;\n    for (let i = hostname.length - 1; i >= 0; i -= 1) {\n        const code = hostname.charCodeAt(i);\n        if (code === 46 /* '.' */) {\n            const start = i + 1;\n            let edge = findEdge(node, hash >>> 0, hostname, start, end - start);\n            if (edge === -1) {\n                edge = wildcardEdge[node];\n            }\n            if (edge === -1) {\n                return matchNode !== -1;\n            }\n            node = edgeChild[edge];\n            if ((nodeFlags[node] & allowedMask) !== 0) {\n                matchNode = node;\n                matchStart = start;\n                matchEnd = end;\n            }\n            end = i;\n            hash = 5381;\n        }\n        else {\n            hash = (hash * 33) ^ code;\n        }\n    }\n    // Left-most label: hostname[0, end). Same find/descend/record as the loop —\n    // duplicated rather than folded into the loop (via `i >= -1`) because that\n    // extra per-character branch measured slightly slower on the hot path.\n    let edge = findEdge(node, hash >>> 0, hostname, 0, end);\n    if (edge === -1) {\n        edge = wildcardEdge[node];\n    }\n    if (edge !== -1) {\n        node = edgeChild[edge];\n        if ((nodeFlags[node] & allowedMask) !== 0) {\n            matchNode = node;\n            matchStart = 0;\n            matchEnd = end;\n        }\n    }\n    return matchNode !== -1;\n}\n/**\n * Check if `hostname` has a valid public suffix in the trie.\n */\nexport default function suffixLookup(hostname, options, out) {\n    if (fastPathLookup(hostname, options, out)) {\n        return;\n    }\n    const allowedMask = (options.allowPrivateDomains ? 2 /* RULE_TYPE.PRIVATE */ : 0) |\n        (options.allowIcannDomains ? 1 /* RULE_TYPE.ICANN */ : 0);\n    // Exceptions have priority and strip their own left-most label (e.g. the\n    // rule '!www.ck' makes the suffix of 'www.ck' be 'ck').\n    if (walk(hostname, exceptionsRoot, allowedMask)) {\n        out.isIcann = (nodeFlags[matchNode] & 1 /* RULE_TYPE.ICANN */) !== 0;\n        out.isPrivate = (nodeFlags[matchNode] & 2 /* RULE_TYPE.PRIVATE */) !== 0;\n        out.publicSuffix = hostname.slice(matchEnd + 1);\n        return;\n    }\n    if (walk(hostname, rulesRoot, allowedMask)) {\n        out.isIcann = (nodeFlags[matchNode] & 1 /* RULE_TYPE.ICANN */) !== 0;\n        out.isPrivate = (nodeFlags[matchNode] & 2 /* RULE_TYPE.PRIVATE */) !== 0;\n        out.publicSuffix = hostname.slice(matchStart);\n        return;\n    }\n    // No match: the prevailing '*' rule makes the right-most label the suffix.\n    out.isIcann = false;\n    out.isPrivate = false;\n    const lastDot = hostname.lastIndexOf('.');\n    out.publicSuffix = lastDot === -1 ? hostname : hostname.slice(lastDot + 1);\n}\n//# sourceMappingURL=suffix-trie.js.map","import { getEmptyResult, parseImpl, resetResult, } from 'tldts-core';\nimport suffixLookup from './src/suffix-trie';\n// For all methods but 'parse', it does not make sense to allocate an object\n// every single time to only return the value of a specific attribute. To avoid\n// this un-necessary allocation, we use a global object which is re-used.\nconst RESULT = getEmptyResult();\nexport function parse(url, options) {\n    return parseImpl(url, 5 /* FLAG.ALL */, suffixLookup, options, getEmptyResult());\n}\nexport function getHostname(url, options) {\n    /*@__INLINE__*/ resetResult(RESULT);\n    return parseImpl(url, 0 /* FLAG.HOSTNAME */, suffixLookup, options, RESULT).hostname;\n}\nexport function getPublicSuffix(url, options) {\n    /*@__INLINE__*/ resetResult(RESULT);\n    return parseImpl(url, 2 /* FLAG.PUBLIC_SUFFIX */, suffixLookup, options, RESULT)\n        .publicSuffix;\n}\nexport function getDomain(url, options) {\n    /*@__INLINE__*/ resetResult(RESULT);\n    return parseImpl(url, 3 /* FLAG.DOMAIN */, suffixLookup, options, RESULT).domain;\n}\nexport function getFullDomain(url, options) {\n    /*@__INLINE__*/ resetResult(RESULT);\n    const result = parseImpl(url, 3 /* FLAG.DOMAIN */, suffixLookup, options, RESULT);\n    // The hostname *is* the full domain (subdomain + domain) whenever a\n    // registrable domain exists; gate on `domain` so non-registrable inputs\n    // (IPs, suffix-less or invalid hostnames) return `null` like `getDomain`.\n    return result.domain === null ? null : result.hostname;\n}\nexport function getSubdomain(url, options) {\n    /*@__INLINE__*/ resetResult(RESULT);\n    return parseImpl(url, 4 /* FLAG.SUB_DOMAIN */, suffixLookup, options, RESULT)\n        .subdomain;\n}\nexport function getDomainWithoutSuffix(url, options) {\n    /*@__INLINE__*/ resetResult(RESULT);\n    return parseImpl(url, 5 /* FLAG.ALL */, suffixLookup, options, RESULT)\n        .domainWithoutSuffix;\n}\n//# sourceMappingURL=index.js.map","// lib/pathMatch.ts\nfunction pathMatch(reqPath, cookiePath) {\n  if (cookiePath === reqPath) {\n    return true;\n  }\n  const idx = reqPath.indexOf(cookiePath);\n  if (idx === 0) {\n    if (cookiePath[cookiePath.length - 1] === \"/\") {\n      return true;\n    }\n    if (reqPath.startsWith(cookiePath) && reqPath[cookiePath.length] === \"/\") {\n      return true;\n    }\n  }\n  return false;\n}\n\n// lib/getPublicSuffix.ts\nimport { getDomain } from \"tldts\";\nvar SPECIAL_USE_DOMAINS = [\"local\", \"example\", \"invalid\", \"localhost\", \"test\"];\nvar SPECIAL_TREATMENT_DOMAINS = [\"localhost\", \"invalid\"];\nvar defaultGetPublicSuffixOptions = {\n  allowSpecialUseDomain: false,\n  ignoreError: false\n};\nfunction getPublicSuffix(domain, options = {}) {\n  options = { ...defaultGetPublicSuffixOptions, ...options };\n  const domainParts = domain.split(\".\");\n  const topLevelDomain = domainParts[domainParts.length - 1];\n  const allowSpecialUseDomain = !!options.allowSpecialUseDomain;\n  const ignoreError = !!options.ignoreError;\n  if (allowSpecialUseDomain && topLevelDomain !== void 0 && SPECIAL_USE_DOMAINS.includes(topLevelDomain)) {\n    if (domainParts.length > 1) {\n      const secondLevelDomain = domainParts[domainParts.length - 2];\n      return `${secondLevelDomain}.${topLevelDomain}`;\n    } else if (SPECIAL_TREATMENT_DOMAINS.includes(topLevelDomain)) {\n      return topLevelDomain;\n    }\n  }\n  if (!ignoreError && topLevelDomain !== void 0 && SPECIAL_USE_DOMAINS.includes(topLevelDomain)) {\n    throw new Error(\n      `Cookie has domain set to the public suffix \"${topLevelDomain}\" which is a special use domain. To allow this, configure your CookieJar with {allowSpecialUseDomain: true, rejectPublicSuffixes: false}.`\n    );\n  }\n  const publicSuffix = getDomain(domain, {\n    allowIcannDomains: true,\n    allowPrivateDomains: true\n  });\n  if (publicSuffix) return publicSuffix;\n}\n\n// lib/permuteDomain.ts\nfunction permuteDomain(domain, allowSpecialUseDomain) {\n  const pubSuf = getPublicSuffix(domain, {\n    allowSpecialUseDomain\n  });\n  if (!pubSuf) {\n    return void 0;\n  }\n  if (pubSuf == domain) {\n    return [domain];\n  }\n  if (domain.slice(-1) == \".\") {\n    domain = domain.slice(0, -1);\n  }\n  const prefix = domain.slice(0, -(pubSuf.length + 1));\n  const parts = prefix.split(\".\").reverse();\n  let cur = pubSuf;\n  const permutations = [cur];\n  while (parts.length) {\n    const part = parts.shift();\n    cur = `${part}.${cur}`;\n    permutations.push(cur);\n  }\n  return permutations;\n}\n\n// lib/store.ts\nvar Store = class {\n  constructor() {\n    this.synchronous = false;\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  findCookie(_domain, _path, _key, _callback) {\n    throw new Error(\"findCookie is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  findCookies(_domain, _path, _allowSpecialUseDomain = false, _callback) {\n    throw new Error(\"findCookies is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  putCookie(_cookie, _callback) {\n    throw new Error(\"putCookie is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  updateCookie(_oldCookie, _newCookie, _callback) {\n    throw new Error(\"updateCookie is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeCookie(_domain, _path, _key, _callback) {\n    throw new Error(\"removeCookie is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeCookies(_domain, _path, _callback) {\n    throw new Error(\"removeCookies is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeAllCookies(_callback) {\n    throw new Error(\"removeAllCookies is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  getAllCookies(_callback) {\n    throw new Error(\n      \"getAllCookies is not implemented (therefore jar cannot be serialized)\"\n    );\n  }\n};\n\n// lib/utils.ts\nvar objectToString = (obj) => Object.prototype.toString.call(obj);\nvar safeArrayToString = (arr, seenArrays) => {\n  if (typeof arr.join !== \"function\") return objectToString(arr);\n  seenArrays.add(arr);\n  const mapped = arr.map(\n    (val) => val === null || val === void 0 || seenArrays.has(val) ? \"\" : safeToStringImpl(val, seenArrays)\n  );\n  return mapped.join();\n};\nvar safeToStringImpl = (val, seenArrays = /* @__PURE__ */ new WeakSet()) => {\n  if (typeof val !== \"object\" || val === null) {\n    return String(val);\n  } else if (typeof val.toString === \"function\") {\n    return Array.isArray(val) ? (\n      // Arrays have a weird custom toString that we need to replicate\n      safeArrayToString(val, seenArrays)\n    ) : (\n      // eslint-disable-next-line @typescript-eslint/no-base-to-string\n      String(val)\n    );\n  } else {\n    return objectToString(val);\n  }\n};\nvar safeToString = (val) => safeToStringImpl(val);\nfunction createPromiseCallback(cb) {\n  let callback;\n  let resolve;\n  let reject;\n  const promise = new Promise((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  });\n  if (typeof cb === \"function\") {\n    callback = (err, result) => {\n      try {\n        if (err) cb(err);\n        else cb(null, result);\n      } catch (e) {\n        reject(e instanceof Error ? e : new Error());\n      }\n    };\n  } else {\n    callback = (err, result) => {\n      try {\n        if (err) reject(err);\n        else resolve(result);\n      } catch (e) {\n        reject(e instanceof Error ? e : new Error());\n      }\n    };\n  }\n  return {\n    promise,\n    callback,\n    resolve: (value) => {\n      callback(null, value);\n      return promise;\n    },\n    reject: (error) => {\n      callback(error);\n      return promise;\n    }\n  };\n}\nfunction inOperator(k, o) {\n  return k in o;\n}\n\n// lib/memstore.ts\nvar MemoryCookieStore = class extends Store {\n  /**\n   * Create a new {@link MemoryCookieStore}.\n   */\n  constructor() {\n    super();\n    this.synchronous = true;\n    this.idx = /* @__PURE__ */ Object.create(null);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  findCookie(domain, path, key, callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    if (domain == null || path == null || key == null) {\n      return promiseCallback.resolve(void 0);\n    }\n    const result = this.idx[domain]?.[path]?.[key];\n    return promiseCallback.resolve(result);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  findCookies(domain, path, allowSpecialUseDomain = false, callback) {\n    if (typeof allowSpecialUseDomain === \"function\") {\n      callback = allowSpecialUseDomain;\n      allowSpecialUseDomain = true;\n    }\n    const results = [];\n    const promiseCallback = createPromiseCallback(callback);\n    if (!domain) {\n      return promiseCallback.resolve([]);\n    }\n    let pathMatcher;\n    if (!path) {\n      pathMatcher = function matchAll(domainIndex) {\n        for (const curPath in domainIndex) {\n          const pathIndex = domainIndex[curPath];\n          for (const key in pathIndex) {\n            const value = pathIndex[key];\n            if (value) {\n              results.push(value);\n            }\n          }\n        }\n      };\n    } else {\n      pathMatcher = function matchRFC(domainIndex) {\n        for (const cookiePath in domainIndex) {\n          if (pathMatch(path, cookiePath)) {\n            const pathIndex = domainIndex[cookiePath];\n            for (const key in pathIndex) {\n              const value = pathIndex[key];\n              if (value) {\n                results.push(value);\n              }\n            }\n          }\n        }\n      };\n    }\n    const domains = permuteDomain(domain, allowSpecialUseDomain) || [domain];\n    const idx = this.idx;\n    domains.forEach((curDomain) => {\n      const domainIndex = idx[curDomain];\n      if (!domainIndex) {\n        return;\n      }\n      pathMatcher(domainIndex);\n    });\n    return promiseCallback.resolve(results);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  putCookie(cookie, callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    const { domain, path, key } = cookie;\n    if (domain == null || path == null || key == null) {\n      return promiseCallback.resolve(void 0);\n    }\n    const domainEntry = this.idx[domain] ?? /* @__PURE__ */ Object.create(null);\n    this.idx[domain] = domainEntry;\n    const pathEntry = domainEntry[path] ?? /* @__PURE__ */ Object.create(null);\n    domainEntry[path] = pathEntry;\n    pathEntry[key] = cookie;\n    return promiseCallback.resolve(void 0);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  updateCookie(_oldCookie, newCookie, callback) {\n    if (callback) this.putCookie(newCookie, callback);\n    else return this.putCookie(newCookie);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeCookie(domain, path, key, callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    delete this.idx[domain]?.[path]?.[key];\n    return promiseCallback.resolve(void 0);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeCookies(domain, path, callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    const domainEntry = this.idx[domain];\n    if (domainEntry) {\n      if (path) {\n        delete domainEntry[path];\n      } else {\n        delete this.idx[domain];\n      }\n    }\n    return promiseCallback.resolve(void 0);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeAllCookies(callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    this.idx = /* @__PURE__ */ Object.create(null);\n    return promiseCallback.resolve(void 0);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  getAllCookies(callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    const cookies = [];\n    const idx = this.idx;\n    const domains = Object.keys(idx);\n    domains.forEach((domain) => {\n      const domainEntry = idx[domain] ?? {};\n      const paths = Object.keys(domainEntry);\n      paths.forEach((path) => {\n        const pathEntry = domainEntry[path] ?? {};\n        const keys = Object.keys(pathEntry);\n        keys.forEach((key) => {\n          const keyEntry = pathEntry[key];\n          if (keyEntry != null) {\n            cookies.push(keyEntry);\n          }\n        });\n      });\n    });\n    cookies.sort((a, b) => {\n      return (a.creationIndex || 0) - (b.creationIndex || 0);\n    });\n    return promiseCallback.resolve(cookies);\n  }\n};\n\n// lib/validators.ts\nfunction isNonEmptyString(data) {\n  return isString(data) && data !== \"\";\n}\nfunction isEmptyString(data) {\n  return data === \"\" || data instanceof String && data.toString() === \"\";\n}\nfunction isString(data) {\n  return typeof data === \"string\" || data instanceof String;\n}\nfunction isObject(data) {\n  return objectToString(data) === \"[object Object]\";\n}\nfunction validate(bool, cbOrMessage, message) {\n  if (bool) return;\n  const cb = typeof cbOrMessage === \"function\" ? cbOrMessage : void 0;\n  let options = typeof cbOrMessage === \"function\" ? message : cbOrMessage;\n  if (!isObject(options)) options = \"[object Object]\";\n  const err = new ParameterError(safeToString(options));\n  if (cb) cb(err);\n  else throw err;\n}\nvar ParameterError = class extends Error {\n};\n\n// lib/version.ts\nvar version = \"6.0.2\";\n\n// lib/cookie/constants.ts\nvar PrefixSecurityEnum = {\n  SILENT: \"silent\",\n  STRICT: \"strict\",\n  DISABLED: \"unsafe-disabled\"\n};\nObject.freeze(PrefixSecurityEnum);\nvar IP_V6_REGEX = `\n\\\\[?(?:\n(?:[a-fA-F\\\\d]{1,4}:){7}(?:[a-fA-F\\\\d]{1,4}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|:[a-fA-F\\\\d]{1,4}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,2}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){4}(?:(?::[a-fA-F\\\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,3}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){3}(?:(?::[a-fA-F\\\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,4}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){2}(?:(?::[a-fA-F\\\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,5}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){1}(?:(?::[a-fA-F\\\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,6}|:)|\n(?::(?:(?::[a-fA-F\\\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,7}|:))\n)(?:%[0-9a-zA-Z]{1,})?\\\\]?\n`.replace(/\\s*\\/\\/.*$/gm, \"\").replace(/\\n/g, \"\").trim();\nvar IP_V6_REGEX_OBJECT = new RegExp(`^${IP_V6_REGEX}$`);\nvar IP_V4_REGEX = `(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])`;\nvar IP_V4_REGEX_OBJECT = new RegExp(`^${IP_V4_REGEX}$`);\n\n// lib/cookie/canonicalDomain.ts\nfunction domainToASCII(domain) {\n  return new URL(`http://${domain}`).hostname;\n}\nfunction canonicalDomain(domainName) {\n  if (domainName == null) {\n    return void 0;\n  }\n  let str = domainName.trim().replace(/^\\./, \"\");\n  if (IP_V6_REGEX_OBJECT.test(str)) {\n    if (!str.startsWith(\"[\")) {\n      str = \"[\" + str;\n    }\n    if (!str.endsWith(\"]\")) {\n      str = str + \"]\";\n    }\n    return domainToASCII(str).slice(1, -1);\n  }\n  if (/[^\\u0001-\\u007f]/.test(str)) {\n    return domainToASCII(str);\n  }\n  return str.toLowerCase();\n}\n\n// lib/cookie/formatDate.ts\nfunction formatDate(date) {\n  return date.toUTCString();\n}\n\n// lib/cookie/parseDate.ts\nfunction parseDate(cookieDate) {\n  if (!cookieDate) {\n    return void 0;\n  }\n  const flags = {\n    foundTime: void 0,\n    foundDayOfMonth: void 0,\n    foundMonth: void 0,\n    foundYear: void 0\n  };\n  const dateTokens = cookieDate.split(DELIMITER).filter((token) => token.length > 0);\n  for (const dateToken of dateTokens) {\n    if (flags.foundTime === void 0) {\n      const [, hours, minutes, seconds] = TIME.exec(dateToken) || [];\n      if (hours != void 0 && minutes != void 0 && seconds != void 0) {\n        const parsedHours = parseInt(hours, 10);\n        const parsedMinutes = parseInt(minutes, 10);\n        const parsedSeconds = parseInt(seconds, 10);\n        if (!isNaN(parsedHours) && !isNaN(parsedMinutes) && !isNaN(parsedSeconds)) {\n          flags.foundTime = {\n            hours: parsedHours,\n            minutes: parsedMinutes,\n            seconds: parsedSeconds\n          };\n          continue;\n        }\n      }\n    }\n    if (flags.foundDayOfMonth === void 0 && DAY_OF_MONTH.test(dateToken)) {\n      const dayOfMonth = parseInt(dateToken, 10);\n      if (!isNaN(dayOfMonth)) {\n        flags.foundDayOfMonth = dayOfMonth;\n        continue;\n      }\n    }\n    if (flags.foundMonth === void 0 && MONTH.test(dateToken)) {\n      const month = months.indexOf(dateToken.substring(0, 3).toLowerCase());\n      if (month >= 0 && month <= 11) {\n        flags.foundMonth = month;\n        continue;\n      }\n    }\n    if (flags.foundYear === void 0 && YEAR.test(dateToken)) {\n      const parsedYear = parseInt(dateToken, 10);\n      if (!isNaN(parsedYear)) {\n        flags.foundYear = parsedYear;\n        continue;\n      }\n    }\n  }\n  if (flags.foundYear !== void 0 && flags.foundYear >= 70 && flags.foundYear <= 99) {\n    flags.foundYear += 1900;\n  }\n  if (flags.foundYear !== void 0 && flags.foundYear >= 0 && flags.foundYear <= 69) {\n    flags.foundYear += 2e3;\n  }\n  if (flags.foundDayOfMonth === void 0 || flags.foundMonth === void 0 || flags.foundYear === void 0 || flags.foundTime === void 0) {\n    return void 0;\n  }\n  if (flags.foundDayOfMonth < 1 || flags.foundDayOfMonth > 31) {\n    return void 0;\n  }\n  if (flags.foundYear < 1601) {\n    return void 0;\n  }\n  if (flags.foundTime.hours > 23) {\n    return void 0;\n  }\n  if (flags.foundTime.minutes > 59) {\n    return void 0;\n  }\n  if (flags.foundTime.seconds > 59) {\n    return void 0;\n  }\n  const date = new Date(\n    Date.UTC(\n      flags.foundYear,\n      flags.foundMonth,\n      flags.foundDayOfMonth,\n      flags.foundTime.hours,\n      flags.foundTime.minutes,\n      flags.foundTime.seconds\n    )\n  );\n  if (date.getUTCFullYear() !== flags.foundYear || date.getUTCMonth() !== flags.foundMonth || date.getUTCDate() !== flags.foundDayOfMonth) {\n    return void 0;\n  }\n  return date;\n}\nvar months = [\n  \"jan\",\n  \"feb\",\n  \"mar\",\n  \"apr\",\n  \"may\",\n  \"jun\",\n  \"jul\",\n  \"aug\",\n  \"sep\",\n  \"oct\",\n  \"nov\",\n  \"dec\"\n];\nvar DELIMITER = /[\\x09\\x20-\\x2F\\x3B-\\x40\\x5B-\\x60\\x7B-\\x7E]/;\nvar TIME = /^(\\d{1,2}):(\\d{1,2}):(\\d{1,2})(?:[\\x00-\\x2F\\x3A-\\xFF][\\x00-\\xFF]*)?$/;\nvar DAY_OF_MONTH = /^[0-9]{1,2}(?:[\\x00-\\x2F\\x3A-\\xFF][\\x00-\\xFF]*)?$/;\nvar MONTH = /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[\\x00-\\xFF]*$/i;\nvar YEAR = /^[\\x30-\\x39]{2,4}(?:[\\x00-\\x2F\\x3A-\\xFF][\\x00-\\xFF]*)?$/;\n\n// lib/cookie/cookie.ts\nvar COOKIE_OCTETS = /^[\\x21\\x23-\\x2B\\x2D-\\x3A\\x3C-\\x5B\\x5D-\\x7E]+$/;\nvar PATH_VALUE = /[\\x20-\\x3A\\x3C-\\x7E]+/;\nvar CONTROL_CHARS = /[\\x00-\\x1F]/;\nvar TERMINATORS = [\"\\n\", \"\\r\", \"\\0\"];\nfunction trimTerminator(str) {\n  if (isEmptyString(str)) return str;\n  for (let t = 0; t < TERMINATORS.length; t++) {\n    const terminator = TERMINATORS[t];\n    const terminatorIdx = terminator ? str.indexOf(terminator) : -1;\n    if (terminatorIdx !== -1) {\n      str = str.slice(0, terminatorIdx);\n    }\n  }\n  return str;\n}\nfunction parseCookiePair(cookiePair, looseMode) {\n  cookiePair = trimTerminator(cookiePair);\n  let firstEq = cookiePair.indexOf(\"=\");\n  if (looseMode) {\n    if (firstEq === 0) {\n      cookiePair = cookiePair.substring(1);\n      firstEq = cookiePair.indexOf(\"=\");\n    }\n  } else {\n    if (firstEq <= 0) {\n      return void 0;\n    }\n  }\n  let cookieName, cookieValue;\n  if (firstEq <= 0) {\n    cookieName = \"\";\n    cookieValue = cookiePair.trim();\n  } else {\n    cookieName = cookiePair.slice(0, firstEq).trim();\n    cookieValue = cookiePair.slice(firstEq + 1).trim();\n  }\n  if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {\n    return void 0;\n  }\n  const c = new Cookie();\n  c.key = cookieName;\n  c.value = cookieValue;\n  return c;\n}\nfunction parse(str, options) {\n  if (isEmptyString(str) || !isString(str)) {\n    return void 0;\n  }\n  str = str.trim();\n  const firstSemi = str.indexOf(\";\");\n  const cookiePair = firstSemi === -1 ? str : str.slice(0, firstSemi);\n  const c = parseCookiePair(cookiePair, options?.loose ?? false);\n  if (!c) {\n    return void 0;\n  }\n  if (firstSemi === -1) {\n    return c;\n  }\n  const unparsed = str.slice(firstSemi + 1).trim();\n  if (unparsed.length === 0) {\n    return c;\n  }\n  const cookie_avs = unparsed.split(\";\");\n  while (cookie_avs.length) {\n    const av = (cookie_avs.shift() ?? \"\").trim();\n    if (av.length === 0) {\n      continue;\n    }\n    const av_sep = av.indexOf(\"=\");\n    let av_key, av_value;\n    if (av_sep === -1) {\n      av_key = av;\n      av_value = null;\n    } else {\n      av_key = av.slice(0, av_sep);\n      av_value = av.slice(av_sep + 1);\n    }\n    av_key = av_key.trim().toLowerCase();\n    if (av_value) {\n      av_value = av_value.trim();\n    }\n    switch (av_key) {\n      case \"expires\":\n        if (av_value) {\n          const exp = parseDate(av_value);\n          if (exp) {\n            c.expires = exp;\n          }\n        }\n        break;\n      case \"max-age\":\n        if (av_value) {\n          if (/^-?[0-9]+$/.test(av_value)) {\n            const delta = parseInt(av_value, 10);\n            c.setMaxAge(delta);\n          }\n        }\n        break;\n      case \"domain\":\n        if (av_value) {\n          const domain = av_value.trim().replace(/^\\./, \"\");\n          if (domain) {\n            c.domain = domain.toLowerCase();\n          }\n        }\n        break;\n      case \"path\":\n        c.path = av_value && av_value[0] === \"/\" ? av_value : null;\n        break;\n      case \"secure\":\n        c.secure = true;\n        break;\n      case \"httponly\":\n        c.httpOnly = true;\n        break;\n      case \"samesite\":\n        switch (av_value ? av_value.toLowerCase() : \"\") {\n          case \"strict\":\n            c.sameSite = \"strict\";\n            break;\n          case \"lax\":\n            c.sameSite = \"lax\";\n            break;\n          case \"none\":\n            c.sameSite = \"none\";\n            break;\n          default:\n            c.sameSite = void 0;\n            break;\n        }\n        break;\n      default:\n        c.extensions = c.extensions || [];\n        c.extensions.push(av);\n        break;\n    }\n  }\n  return c;\n}\nfunction fromJSON(str) {\n  if (!str || isEmptyString(str)) {\n    return void 0;\n  }\n  let obj;\n  if (typeof str === \"string\") {\n    try {\n      obj = JSON.parse(str);\n    } catch {\n      return void 0;\n    }\n  } else {\n    obj = str;\n  }\n  const c = new Cookie();\n  Cookie.serializableProperties.forEach((prop) => {\n    if (obj && typeof obj === \"object\" && inOperator(prop, obj)) {\n      const val = obj[prop];\n      if (val === void 0) {\n        return;\n      }\n      if (inOperator(prop, cookieDefaults) && val === cookieDefaults[prop]) {\n        return;\n      }\n      switch (prop) {\n        case \"key\":\n        case \"value\":\n        case \"sameSite\":\n          if (typeof val === \"string\") {\n            c[prop] = val;\n          }\n          break;\n        case \"expires\":\n        case \"creation\":\n        case \"lastAccessed\":\n          if (typeof val === \"number\" || typeof val === \"string\" || val instanceof Date) {\n            c[prop] = obj[prop] == \"Infinity\" ? \"Infinity\" : new Date(val);\n          } else if (val === null) {\n            c[prop] = null;\n          }\n          break;\n        case \"maxAge\":\n          if (typeof val === \"number\" || val === \"Infinity\" || val === \"-Infinity\") {\n            c[prop] = val;\n          }\n          break;\n        case \"domain\":\n        case \"path\":\n          if (typeof val === \"string\" || val === null) {\n            c[prop] = val;\n          }\n          break;\n        case \"secure\":\n        case \"httpOnly\":\n          if (typeof val === \"boolean\") {\n            c[prop] = val;\n          }\n          break;\n        case \"extensions\":\n          if (Array.isArray(val) && val.every((item) => typeof item === \"string\")) {\n            c[prop] = val;\n          }\n          break;\n        case \"hostOnly\":\n        case \"pathIsDefault\":\n          if (typeof val === \"boolean\" || val === null) {\n            c[prop] = val;\n          }\n          break;\n      }\n    }\n  });\n  return c;\n}\nvar cookieDefaults = {\n  // the order in which the RFC has them:\n  key: \"\",\n  value: \"\",\n  expires: \"Infinity\",\n  maxAge: null,\n  domain: null,\n  path: null,\n  secure: false,\n  httpOnly: false,\n  extensions: null,\n  // set by the CookieJar:\n  hostOnly: null,\n  pathIsDefault: null,\n  creation: null,\n  lastAccessed: null,\n  sameSite: void 0\n};\nvar _Cookie = class _Cookie {\n  /**\n   * Create a new Cookie instance.\n   * @public\n   * @param options - The attributes to set on the cookie\n   */\n  constructor(options = {}) {\n    this.key = options.key ?? cookieDefaults.key;\n    this.value = options.value ?? cookieDefaults.value;\n    this.expires = options.expires ?? cookieDefaults.expires;\n    this.maxAge = options.maxAge ?? cookieDefaults.maxAge;\n    this.domain = options.domain ?? cookieDefaults.domain;\n    this.path = options.path ?? cookieDefaults.path;\n    this.secure = options.secure ?? cookieDefaults.secure;\n    this.httpOnly = options.httpOnly ?? cookieDefaults.httpOnly;\n    this.extensions = options.extensions ?? cookieDefaults.extensions;\n    this.creation = options.creation ?? cookieDefaults.creation;\n    this.hostOnly = options.hostOnly ?? cookieDefaults.hostOnly;\n    this.pathIsDefault = options.pathIsDefault ?? cookieDefaults.pathIsDefault;\n    this.lastAccessed = options.lastAccessed ?? cookieDefaults.lastAccessed;\n    this.sameSite = options.sameSite ?? cookieDefaults.sameSite;\n    this.creation = options.creation ?? /* @__PURE__ */ new Date();\n    Object.defineProperty(this, \"creationIndex\", {\n      configurable: false,\n      enumerable: false,\n      // important for assert.deepEqual checks\n      writable: true,\n      value: ++_Cookie.cookiesCreated\n    });\n    this.creationIndex = _Cookie.cookiesCreated;\n  }\n  [/* @__PURE__ */ Symbol.for(\"nodejs.util.inspect.custom\")]() {\n    const now = Date.now();\n    const hostOnly = this.hostOnly != null ? this.hostOnly.toString() : \"?\";\n    const createAge = this.creation && this.creation !== \"Infinity\" ? `${String(now - this.creation.getTime())}ms` : \"?\";\n    const accessAge = this.lastAccessed && this.lastAccessed !== \"Infinity\" ? `${String(now - this.lastAccessed.getTime())}ms` : \"?\";\n    return `Cookie=\"${this.toString()}; hostOnly=${hostOnly}; aAge=${accessAge}; cAge=${createAge}\"`;\n  }\n  /**\n   * For convenience in using `JSON.stringify(cookie)`. Returns a plain-old Object that can be JSON-serialized.\n   *\n   * @remarks\n   * - Any `Date` properties (such as {@link Cookie.expires}, {@link Cookie.creation}, and {@link Cookie.lastAccessed}) are exported in ISO format (`Date.toISOString()`).\n   *\n   *  - Custom Cookie properties are discarded. In tough-cookie 1.x, since there was no {@link Cookie.toJSON} method explicitly defined, all enumerable properties were captured.\n   *      If you want a property to be serialized, add the property name to {@link Cookie.serializableProperties}.\n   */\n  toJSON() {\n    const obj = {};\n    for (const prop of _Cookie.serializableProperties) {\n      const val = this[prop];\n      if (val === cookieDefaults[prop]) {\n        continue;\n      }\n      switch (prop) {\n        case \"key\":\n        case \"value\":\n        case \"sameSite\":\n          if (typeof val === \"string\") {\n            obj[prop] = val;\n          }\n          break;\n        case \"expires\":\n        case \"creation\":\n        case \"lastAccessed\":\n          if (typeof val === \"number\" || typeof val === \"string\" || val instanceof Date) {\n            obj[prop] = val == \"Infinity\" ? \"Infinity\" : new Date(val).toISOString();\n          } else if (val === null) {\n            obj[prop] = null;\n          }\n          break;\n        case \"maxAge\":\n          if (typeof val === \"number\" || val === \"Infinity\" || val === \"-Infinity\") {\n            obj[prop] = val;\n          }\n          break;\n        case \"domain\":\n        case \"path\":\n          if (typeof val === \"string\" || val === null) {\n            obj[prop] = val;\n          }\n          break;\n        case \"secure\":\n        case \"httpOnly\":\n          if (typeof val === \"boolean\") {\n            obj[prop] = val;\n          }\n          break;\n        case \"extensions\":\n          if (Array.isArray(val)) {\n            obj[prop] = val;\n          }\n          break;\n        case \"hostOnly\":\n        case \"pathIsDefault\":\n          if (typeof val === \"boolean\" || val === null) {\n            obj[prop] = val;\n          }\n          break;\n      }\n    }\n    return obj;\n  }\n  /**\n   * Does a deep clone of this cookie, implemented exactly as `Cookie.fromJSON(cookie.toJSON())`.\n   * @public\n   */\n  clone() {\n    return fromJSON(this.toJSON());\n  }\n  /**\n   * Validates cookie attributes for semantic correctness. Useful for \"lint\" checking any `Set-Cookie` headers you generate.\n   * For now, it returns a boolean, but eventually could return a reason string.\n   *\n   * @remarks\n   * Works for a few things, but is by no means comprehensive.\n   *\n   * @beta\n   */\n  validate() {\n    if (!this.value || !COOKIE_OCTETS.test(this.value)) {\n      return false;\n    }\n    if (this.expires != \"Infinity\" && !(this.expires instanceof Date) && !parseDate(this.expires)) {\n      return false;\n    }\n    if (this.maxAge != null && this.maxAge !== \"Infinity\" && (this.maxAge === \"-Infinity\" || this.maxAge <= 0)) {\n      return false;\n    }\n    if (this.path != null && !PATH_VALUE.test(this.path)) {\n      return false;\n    }\n    const cdomain = this.cdomain();\n    if (cdomain) {\n      if (cdomain.match(/\\.$/)) {\n        return false;\n      }\n      const suffix = getPublicSuffix(cdomain);\n      if (suffix == null) {\n        return false;\n      }\n    }\n    return true;\n  }\n  /**\n   * Sets the 'Expires' attribute on a cookie.\n   *\n   * @remarks\n   * When given a `string` value it will be parsed with {@link parseDate}. If the value can't be parsed as a cookie date\n   * then the 'Expires' attribute will be set to `\"Infinity\"`.\n   *\n   * @param exp - the new value for the 'Expires' attribute of the cookie.\n   */\n  setExpires(exp) {\n    if (exp instanceof Date) {\n      this.expires = exp;\n    } else {\n      this.expires = parseDate(exp) || \"Infinity\";\n    }\n  }\n  /**\n   * Sets the 'Max-Age' attribute (in seconds) on a cookie.\n   *\n   * @remarks\n   * Coerces `-Infinity` to `\"-Infinity\"` and `Infinity` to `\"Infinity\"` so it can be serialized to JSON.\n   *\n   * @param age - the new value for the 'Max-Age' attribute (in seconds).\n   */\n  setMaxAge(age) {\n    if (age === Infinity) {\n      this.maxAge = \"Infinity\";\n    } else if (age === -Infinity) {\n      this.maxAge = \"-Infinity\";\n    } else {\n      this.maxAge = age;\n    }\n  }\n  /**\n   * Encodes to a `Cookie` header value (specifically, the {@link Cookie.key} and {@link Cookie.value} properties joined with \"=\").\n   * @public\n   */\n  cookieString() {\n    const val = this.value || \"\";\n    if (this.key) {\n      return `${this.key}=${val}`;\n    }\n    return val;\n  }\n  /**\n   * Encodes to a `Set-Cookie header` value.\n   * @public\n   */\n  toString() {\n    let str = this.cookieString();\n    if (this.expires != \"Infinity\") {\n      if (this.expires instanceof Date) {\n        str += `; Expires=${formatDate(this.expires)}`;\n      }\n    }\n    if (this.maxAge != null && this.maxAge != Infinity) {\n      str += `; Max-Age=${String(this.maxAge)}`;\n    }\n    if (this.domain && !this.hostOnly) {\n      str += `; Domain=${this.domain}`;\n    }\n    if (this.path) {\n      str += `; Path=${this.path}`;\n    }\n    if (this.secure) {\n      str += \"; Secure\";\n    }\n    if (this.httpOnly) {\n      str += \"; HttpOnly\";\n    }\n    if (this.sameSite && this.sameSite !== \"none\") {\n      if (this.sameSite.toLowerCase() === _Cookie.sameSiteCanonical.lax.toLowerCase()) {\n        str += `; SameSite=${_Cookie.sameSiteCanonical.lax}`;\n      } else if (this.sameSite.toLowerCase() === _Cookie.sameSiteCanonical.strict.toLowerCase()) {\n        str += `; SameSite=${_Cookie.sameSiteCanonical.strict}`;\n      } else {\n        str += `; SameSite=${this.sameSite}`;\n      }\n    }\n    if (this.extensions) {\n      this.extensions.forEach((ext) => {\n        str += `; ${ext}`;\n      });\n    }\n    return str;\n  }\n  /**\n   * Computes the TTL relative to now (milliseconds).\n   *\n   * @remarks\n   * - `Infinity` is returned for cookies without an explicit expiry\n   *\n   * - `0` is returned if the cookie is expired.\n   *\n   * - Otherwise a time-to-live in milliseconds is returned.\n   *\n   * @param now - passing an explicit value is mostly used for testing purposes since this defaults to the `Date.now()`\n   * @public\n   */\n  TTL(now = Date.now()) {\n    if (this.maxAge != null && typeof this.maxAge === \"number\") {\n      return this.maxAge <= 0 ? 0 : this.maxAge * 1e3;\n    }\n    const expires = this.expires;\n    if (expires === \"Infinity\") {\n      return Infinity;\n    }\n    return (expires?.getTime() ?? now) - (now || Date.now());\n  }\n  /**\n   * Computes the absolute unix-epoch milliseconds that this cookie expires.\n   *\n   * The \"Max-Age\" attribute takes precedence over \"Expires\" (as per the RFC). The {@link Cookie.lastAccessed} attribute\n   * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.\n   *\n   * If Expires ({@link Cookie.expires}) is set, that's returned.\n   *\n   * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the \"Max-Age\" value\n   */\n  expiryTime(now) {\n    if (this.maxAge != null) {\n      const relativeTo = now || this.lastAccessed || /* @__PURE__ */ new Date();\n      const maxAge = typeof this.maxAge === \"number\" ? this.maxAge : -Infinity;\n      const age = maxAge <= 0 ? -Infinity : maxAge * 1e3;\n      if (relativeTo === \"Infinity\") {\n        return Infinity;\n      }\n      return relativeTo.getTime() + age;\n    }\n    if (this.expires == \"Infinity\") {\n      return Infinity;\n    }\n    return this.expires ? this.expires.getTime() : void 0;\n  }\n  /**\n   * Similar to {@link Cookie.expiryTime}, computes the absolute unix-epoch milliseconds that this cookie expires and returns it as a Date.\n   *\n   * The \"Max-Age\" attribute takes precedence over \"Expires\" (as per the RFC). The {@link Cookie.lastAccessed} attribute\n   * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.\n   *\n   * If Expires ({@link Cookie.expires}) is set, that's returned.\n   *\n   * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the \"Max-Age\" value\n   */\n  expiryDate(now) {\n    const millisec = this.expiryTime(now);\n    if (millisec == Infinity) {\n      return /* @__PURE__ */ new Date(2147483647e3);\n    } else if (millisec == -Infinity) {\n      return /* @__PURE__ */ new Date(0);\n    } else {\n      return millisec == void 0 ? void 0 : new Date(millisec);\n    }\n  }\n  /**\n   * Indicates if the cookie has been persisted to a store or not.\n   * @public\n   */\n  isPersistent() {\n    return this.maxAge != null || this.expires != \"Infinity\";\n  }\n  /**\n   * Calls {@link canonicalDomain} with the {@link Cookie.domain} property.\n   * @public\n   */\n  canonicalizedDomain() {\n    return canonicalDomain(this.domain);\n  }\n  /**\n   * Alias for {@link Cookie.canonicalizedDomain}\n   * @public\n   */\n  cdomain() {\n    return canonicalDomain(this.domain);\n  }\n  /**\n   * Parses a string into a Cookie object.\n   *\n   * @remarks\n   * Note: when parsing a `Cookie` header it must be split by ';' before each Cookie string can be parsed.\n   *\n   * @example\n   * ```\n   * // parse a `Set-Cookie` header\n   * const setCookieHeader = 'a=bcd; Expires=Tue, 18 Oct 2011 07:05:03 GMT'\n   * const cookie = Cookie.parse(setCookieHeader)\n   * cookie.key === 'a'\n   * cookie.value === 'bcd'\n   * cookie.expires === new Date(Date.parse('Tue, 18 Oct 2011 07:05:03 GMT'))\n   * ```\n   *\n   * @example\n   * ```\n   * // parse a `Cookie` header\n   * const cookieHeader = 'name=value; name2=value2; name3=value3'\n   * const cookies = cookieHeader.split(';').map(Cookie.parse)\n   * cookies[0].name === 'name'\n   * cookies[0].value === 'value'\n   * cookies[1].name === 'name2'\n   * cookies[1].value === 'value2'\n   * cookies[2].name === 'name3'\n   * cookies[2].value === 'value3'\n   * ```\n   *\n   * @param str - The `Set-Cookie` header or a Cookie string to parse.\n   * @param options - Configures `strict` or `loose` mode for cookie parsing\n   */\n  static parse(str, options) {\n    return parse(str, options);\n  }\n  /**\n   * Does the reverse of {@link Cookie.toJSON}.\n   *\n   * @remarks\n   * Any Date properties (such as .expires, .creation, and .lastAccessed) are parsed via Date.parse, not tough-cookie's parseDate, since ISO timestamps are being handled at this layer.\n   *\n   * @example\n   * ```\n   * const json = JSON.stringify({\n   *   key: 'alpha',\n   *   value: 'beta',\n   *   domain: 'example.com',\n   *   path: '/foo',\n   *   expires: '2038-01-19T03:14:07.000Z',\n   * })\n   * const cookie = Cookie.fromJSON(json)\n   * cookie.key === 'alpha'\n   * cookie.value === 'beta'\n   * cookie.domain === 'example.com'\n   * cookie.path === '/foo'\n   * cookie.expires === new Date(Date.parse('2038-01-19T03:14:07.000Z'))\n   * ```\n   *\n   * @param str - An unparsed JSON string or a value that has already been parsed as JSON\n   */\n  static fromJSON(str) {\n    return fromJSON(str);\n  }\n};\n_Cookie.cookiesCreated = 0;\n/**\n * @internal\n */\n_Cookie.sameSiteLevel = {\n  strict: 3,\n  lax: 2,\n  none: 1\n};\n/**\n * @internal\n */\n_Cookie.sameSiteCanonical = {\n  strict: \"Strict\",\n  lax: \"Lax\"\n};\n/**\n * Cookie properties that will be serialized when using {@link Cookie.fromJSON} and {@link Cookie.toJSON}.\n * @public\n */\n_Cookie.serializableProperties = [\n  \"key\",\n  \"value\",\n  \"expires\",\n  \"maxAge\",\n  \"domain\",\n  \"path\",\n  \"secure\",\n  \"httpOnly\",\n  \"extensions\",\n  \"hostOnly\",\n  \"pathIsDefault\",\n  \"creation\",\n  \"lastAccessed\",\n  \"sameSite\"\n];\nvar Cookie = _Cookie;\n\n// lib/cookie/cookieCompare.ts\nvar MAX_TIME = 2147483647e3;\nfunction cookieCompare(a, b) {\n  let cmp;\n  const aPathLen = a.path ? a.path.length : 0;\n  const bPathLen = b.path ? b.path.length : 0;\n  cmp = bPathLen - aPathLen;\n  if (cmp !== 0) {\n    return cmp;\n  }\n  const aTime = a.creation && a.creation instanceof Date ? a.creation.getTime() : MAX_TIME;\n  const bTime = b.creation && b.creation instanceof Date ? b.creation.getTime() : MAX_TIME;\n  cmp = aTime - bTime;\n  if (cmp !== 0) {\n    return cmp;\n  }\n  cmp = (a.creationIndex || 0) - (b.creationIndex || 0);\n  return cmp;\n}\n\n// lib/cookie/defaultPath.ts\nfunction defaultPath(path) {\n  if (!path || path.slice(0, 1) !== \"/\") {\n    return \"/\";\n  }\n  if (path === \"/\") {\n    return path;\n  }\n  const rightSlash = path.lastIndexOf(\"/\");\n  if (rightSlash === 0) {\n    return \"/\";\n  }\n  return path.slice(0, rightSlash);\n}\n\n// lib/cookie/domainMatch.ts\nvar IP_REGEX_LOWERCASE = /(?:^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$)|(?:^(?:(?:[a-f\\d]{1,4}:){7}(?:[a-f\\d]{1,4}|:)|(?:[a-f\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-f\\d]{1,4}|:)|(?:[a-f\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,2}|:)|(?:[a-f\\d]{1,4}:){4}(?:(?::[a-f\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,3}|:)|(?:[a-f\\d]{1,4}:){3}(?:(?::[a-f\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,4}|:)|(?:[a-f\\d]{1,4}:){2}(?:(?::[a-f\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,5}|:)|(?:[a-f\\d]{1,4}:){1}(?:(?::[a-f\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,7}|:)))$)/;\nfunction domainMatch(domain, cookieDomain, canonicalize) {\n  if (domain == null || cookieDomain == null) {\n    return void 0;\n  }\n  let _str;\n  let _domStr;\n  if (canonicalize !== false) {\n    _str = canonicalDomain(domain);\n    _domStr = canonicalDomain(cookieDomain);\n  } else {\n    _str = domain;\n    _domStr = cookieDomain;\n  }\n  if (_str == null || _domStr == null) {\n    return void 0;\n  }\n  if (_str == _domStr) {\n    return true;\n  }\n  const idx = _str.lastIndexOf(_domStr);\n  if (idx <= 0) {\n    return false;\n  }\n  if (_str.length !== _domStr.length + idx) {\n    return false;\n  }\n  if (_str.substring(idx - 1, idx) !== \".\") {\n    return false;\n  }\n  return !IP_REGEX_LOWERCASE.test(_str);\n}\n\n// lib/cookie/secureContext.ts\nfunction isLoopbackV4(address) {\n  const octets = address.split(\".\");\n  return octets.length === 4 && octets[0] !== void 0 && parseInt(octets[0], 10) === 127;\n}\nfunction isLoopbackV6(address) {\n  return address === \"::1\";\n}\nfunction isNormalizedLocalhostTLD(lowerHost) {\n  return lowerHost.endsWith(\".localhost\");\n}\nfunction isLocalHostname(host) {\n  const lowerHost = host.toLowerCase();\n  return lowerHost === \"localhost\" || isNormalizedLocalhostTLD(lowerHost);\n}\nfunction hostNoBrackets(host) {\n  if (host.length >= 2 && host.startsWith(\"[\") && host.endsWith(\"]\")) {\n    return host.substring(1, host.length - 1);\n  }\n  return host;\n}\nfunction isPotentiallyTrustworthy(inputUrl, allowSecureOnLocal = true) {\n  let url;\n  if (typeof inputUrl === \"string\") {\n    try {\n      url = new URL(inputUrl);\n    } catch {\n      return false;\n    }\n  } else {\n    url = inputUrl;\n  }\n  const scheme = url.protocol.replace(\":\", \"\").toLowerCase();\n  const hostname = hostNoBrackets(url.hostname).replace(/\\.+$/, \"\");\n  if (scheme === \"https\" || scheme === \"wss\") {\n    return true;\n  }\n  if (!allowSecureOnLocal) {\n    return false;\n  }\n  if (IP_V4_REGEX_OBJECT.test(hostname)) {\n    return isLoopbackV4(hostname);\n  }\n  if (IP_V6_REGEX_OBJECT.test(hostname)) {\n    return isLoopbackV6(hostname);\n  }\n  return isLocalHostname(hostname);\n}\n\n// lib/cookie/cookieJar.ts\nvar defaultSetCookieOptions = {\n  loose: false,\n  sameSiteContext: void 0,\n  ignoreError: false,\n  http: true\n};\nvar defaultGetCookieOptions = {\n  http: true,\n  expire: true,\n  allPaths: false,\n  sameSiteContext: void 0,\n  sort: void 0\n};\nvar SAME_SITE_CONTEXT_VAL_ERR = 'Invalid sameSiteContext option for getCookies(); expected one of \"strict\", \"lax\", or \"none\"';\nfunction getCookieContext(url) {\n  if (url && typeof url === \"object\" && \"hostname\" in url && typeof url.hostname === \"string\" && \"pathname\" in url && typeof url.pathname === \"string\" && \"protocol\" in url && typeof url.protocol === \"string\") {\n    return {\n      hostname: url.hostname,\n      pathname: url.pathname,\n      protocol: url.protocol\n    };\n  } else if (typeof url === \"string\") {\n    const parsed = new URL(url);\n    let pathname = parsed.pathname;\n    try {\n      pathname = decodeURI(pathname);\n    } catch {\n    }\n    return {\n      hostname: parsed.hostname,\n      pathname,\n      protocol: parsed.protocol\n    };\n  } else {\n    throw new ParameterError(\"`url` argument is not a string or URL.\");\n  }\n}\nfunction checkSameSiteContext(value) {\n  const context = value.toLowerCase();\n  if (context === \"none\" || context === \"lax\" || context === \"strict\") {\n    return context;\n  } else {\n    return void 0;\n  }\n}\nfunction isSecurePrefixConditionMet(cookie) {\n  const startsWithSecurePrefix = typeof cookie.key === \"string\" && cookie.key.startsWith(\"__Secure-\");\n  return !startsWithSecurePrefix || cookie.secure;\n}\nfunction isHostPrefixConditionMet(cookie) {\n  const startsWithHostPrefix = typeof cookie.key === \"string\" && cookie.key.startsWith(\"__Host-\");\n  return !startsWithHostPrefix || Boolean(\n    cookie.secure && cookie.hostOnly && cookie.path != null && cookie.path === \"/\"\n  );\n}\nfunction getNormalizedPrefixSecurity(prefixSecurity) {\n  const normalizedPrefixSecurity = prefixSecurity.toLowerCase();\n  switch (normalizedPrefixSecurity) {\n    case PrefixSecurityEnum.STRICT:\n    case PrefixSecurityEnum.SILENT:\n    case PrefixSecurityEnum.DISABLED:\n      return normalizedPrefixSecurity;\n    default:\n      return PrefixSecurityEnum.SILENT;\n  }\n}\nvar CookieJar = class _CookieJar {\n  /**\n   * Creates a new `CookieJar` instance.\n   *\n   * @remarks\n   * - If a custom store is not passed to the constructor, an in-memory store ({@link MemoryCookieStore} will be created and used.\n   * - If a boolean value is passed as the `options` parameter, this is equivalent to passing `{ rejectPublicSuffixes: <value> }`\n   *\n   * @param store - a custom {@link Store} implementation (defaults to {@link MemoryCookieStore})\n   * @param options - configures how cookies are processed by the cookie jar\n   */\n  constructor(store, options) {\n    if (typeof options === \"boolean\") {\n      options = { rejectPublicSuffixes: options };\n    }\n    this.rejectPublicSuffixes = options?.rejectPublicSuffixes ?? true;\n    this.enableLooseMode = options?.looseMode ?? false;\n    this.allowSpecialUseDomain = options?.allowSpecialUseDomain ?? true;\n    this.allowSecureOnLocal = options?.allowSecureOnLocal ?? true;\n    this.prefixSecurity = getNormalizedPrefixSecurity(\n      options?.prefixSecurity ?? \"silent\"\n    );\n    this.store = store ?? new MemoryCookieStore();\n  }\n  callSync(fn) {\n    if (!this.store.synchronous) {\n      throw new Error(\n        \"CookieJar store is not synchronous; use async API instead.\"\n      );\n    }\n    let syncErr = null;\n    let syncResult = void 0;\n    try {\n      fn.call(this, (error, result) => {\n        syncErr = error;\n        syncResult = result;\n      });\n    } catch (err) {\n      syncErr = err;\n    }\n    if (syncErr) throw syncErr;\n    return syncResult;\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  setCookie(cookie, url, options, callback) {\n    if (typeof options === \"function\") {\n      callback = options;\n      options = void 0;\n    }\n    const promiseCallback = createPromiseCallback(callback);\n    const cb = promiseCallback.callback;\n    let context;\n    try {\n      if (typeof url === \"string\") {\n        validate(\n          isNonEmptyString(url),\n          callback,\n          safeToString(options)\n        );\n      }\n      context = getCookieContext(url);\n      if (typeof url === \"function\") {\n        return promiseCallback.reject(new Error(\"No URL was specified\"));\n      }\n      if (typeof options === \"function\") {\n        options = defaultSetCookieOptions;\n      }\n      validate(typeof cb === \"function\", cb);\n      if (!isNonEmptyString(cookie) && !isObject(cookie) && cookie instanceof String && cookie.length == 0) {\n        return promiseCallback.resolve(void 0);\n      }\n    } catch (err) {\n      return promiseCallback.reject(err);\n    }\n    const host = canonicalDomain(context.hostname) ?? null;\n    const loose = options?.loose || this.enableLooseMode;\n    let sameSiteContext = null;\n    if (options?.sameSiteContext) {\n      sameSiteContext = checkSameSiteContext(options.sameSiteContext);\n      if (!sameSiteContext) {\n        return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));\n      }\n    }\n    if (typeof cookie === \"string\" || cookie instanceof String) {\n      const parsedCookie = Cookie.parse(cookie.toString(), { loose });\n      if (!parsedCookie) {\n        const err = new Error(\"Cookie failed to parse\");\n        return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n      }\n      cookie = parsedCookie;\n    } else if (!(cookie instanceof Cookie)) {\n      const err = new Error(\n        \"First argument to setCookie must be a Cookie object or string\"\n      );\n      return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n    }\n    const now = options?.now || /* @__PURE__ */ new Date();\n    if (this.rejectPublicSuffixes && cookie.domain) {\n      try {\n        const cdomain = cookie.cdomain();\n        const suffix = typeof cdomain === \"string\" ? getPublicSuffix(cdomain, {\n          allowSpecialUseDomain: this.allowSpecialUseDomain,\n          ignoreError: options?.ignoreError\n        }) : null;\n        if (suffix == null && !IP_V6_REGEX_OBJECT.test(cookie.domain)) {\n          const err = new Error(\"Cookie has domain set to a public suffix\");\n          return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n        }\n      } catch (err) {\n        return options?.ignoreError ? promiseCallback.resolve(void 0) : (\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n          promiseCallback.reject(err)\n        );\n      }\n    }\n    if (cookie.domain) {\n      if (!domainMatch(host ?? void 0, cookie.cdomain() ?? void 0, false)) {\n        const err = new Error(\n          `Cookie not in this host's domain. Cookie:${cookie.cdomain() ?? \"null\"} Request:${host ?? \"null\"}`\n        );\n        return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n      }\n      if (cookie.hostOnly == null) {\n        cookie.hostOnly = false;\n      }\n    } else {\n      cookie.hostOnly = true;\n      cookie.domain = host;\n    }\n    if (!cookie.path || cookie.path[0] !== \"/\") {\n      cookie.path = defaultPath(context.pathname);\n      cookie.pathIsDefault = true;\n    }\n    if (options?.http === false && cookie.httpOnly) {\n      const err = new Error(\"Cookie is HttpOnly and this isn't an HTTP API\");\n      return options.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n    }\n    if (cookie.sameSite !== \"none\" && cookie.sameSite !== void 0 && sameSiteContext) {\n      if (sameSiteContext === \"none\") {\n        const err = new Error(\n          \"Cookie is SameSite but this is a cross-origin request\"\n        );\n        return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n      }\n    }\n    const ignoreErrorForPrefixSecurity = this.prefixSecurity === PrefixSecurityEnum.SILENT;\n    const prefixSecurityDisabled = this.prefixSecurity === PrefixSecurityEnum.DISABLED;\n    if (!prefixSecurityDisabled) {\n      let errorFound = false;\n      let errorMsg;\n      if (!isSecurePrefixConditionMet(cookie)) {\n        errorFound = true;\n        errorMsg = \"Cookie has __Secure prefix but Secure attribute is not set\";\n      } else if (!isHostPrefixConditionMet(cookie)) {\n        errorFound = true;\n        errorMsg = \"Cookie has __Host prefix but either Secure or HostOnly attribute is not set or Path is not '/'\";\n      }\n      if (errorFound) {\n        return options?.ignoreError || ignoreErrorForPrefixSecurity ? promiseCallback.resolve(void 0) : promiseCallback.reject(new Error(errorMsg));\n      }\n    }\n    const store = this.store;\n    if (!store.updateCookie) {\n      store.updateCookie = async function(_oldCookie, newCookie, cb2) {\n        return this.putCookie(newCookie).then(\n          () => cb2?.(null),\n          (error) => cb2?.(error)\n        );\n      };\n    }\n    const withCookie = function withCookie2(err, oldCookie) {\n      if (err) {\n        cb(err);\n        return;\n      }\n      const next = function(err2) {\n        if (err2) {\n          cb(err2);\n        } else if (typeof cookie === \"string\") {\n          cb(null, void 0);\n        } else {\n          cb(null, cookie);\n        }\n      };\n      if (oldCookie) {\n        if (options && \"http\" in options && options.http === false && oldCookie.httpOnly) {\n          err = new Error(\"old Cookie is HttpOnly and this isn't an HTTP API\");\n          if (options.ignoreError) cb(null, void 0);\n          else cb(err);\n          return;\n        }\n        if (cookie instanceof Cookie) {\n          cookie.creation = oldCookie.creation;\n          cookie.creationIndex = oldCookie.creationIndex;\n          cookie.lastAccessed = now;\n          store.updateCookie(oldCookie, cookie, next);\n        }\n      } else {\n        if (cookie instanceof Cookie) {\n          cookie.creation = cookie.lastAccessed = now;\n          store.putCookie(cookie, next);\n        }\n      }\n    };\n    store.findCookie(cookie.domain, cookie.path, cookie.key, withCookie);\n    return promiseCallback.promise;\n  }\n  /**\n   * Synchronously attempt to set the {@link Cookie} in the {@link CookieJar}.\n   *\n   * <strong>Note:</strong> Only works if the configured {@link Store} is also synchronous.\n   *\n   * @remarks\n   * - If successfully persisted, the {@link Cookie} will have updated\n   *     {@link Cookie.creation}, {@link Cookie.lastAccessed} and {@link Cookie.hostOnly}\n   *     properties.\n   *\n   * - As per the RFC, the {@link Cookie.hostOnly} flag is set if there was no `Domain={value}`\n   *     attribute on the cookie string. The {@link Cookie.domain} property is set to the\n   *     fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an\n   *     exact hostname match (not a {@link domainMatch} as per usual)\n   *\n   * @param cookie - The cookie object or cookie string to store. A string value will be parsed into a cookie using {@link Cookie.parse}.\n   * @param url - The domain to store the cookie with.\n   * @param options - Configuration settings to use when storing the cookie.\n   * @public\n   */\n  setCookieSync(cookie, url, options) {\n    const setCookieFn = options ? this.setCookie.bind(this, cookie, url, options) : this.setCookie.bind(this, cookie, url);\n    return this.callSync(setCookieFn);\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  getCookies(url, options, callback) {\n    if (typeof options === \"function\") {\n      callback = options;\n      options = defaultGetCookieOptions;\n    } else if (options === void 0) {\n      options = defaultGetCookieOptions;\n    }\n    const promiseCallback = createPromiseCallback(callback);\n    const cb = promiseCallback.callback;\n    let context;\n    try {\n      if (typeof url === \"string\") {\n        validate(isNonEmptyString(url), cb, url);\n      }\n      context = getCookieContext(url);\n      validate(\n        isObject(options),\n        cb,\n        safeToString(options)\n      );\n      validate(typeof cb === \"function\", cb);\n    } catch (parameterError) {\n      return promiseCallback.reject(parameterError);\n    }\n    const host = canonicalDomain(context.hostname);\n    const path = context.pathname || \"/\";\n    const potentiallyTrustworthy = isPotentiallyTrustworthy(\n      url,\n      this.allowSecureOnLocal\n    );\n    let sameSiteLevel = 0;\n    if (options.sameSiteContext) {\n      const sameSiteContext = checkSameSiteContext(options.sameSiteContext);\n      if (sameSiteContext == null) {\n        return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));\n      }\n      sameSiteLevel = Cookie.sameSiteLevel[sameSiteContext];\n      if (!sameSiteLevel) {\n        return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));\n      }\n    }\n    const http = options.http ?? true;\n    const now = Date.now();\n    const expireCheck = options.expire ?? true;\n    const allPaths = options.allPaths ?? false;\n    const store = this.store;\n    function matchingCookie(c) {\n      if (c.hostOnly) {\n        if (c.domain != host) {\n          return false;\n        }\n      } else {\n        if (!domainMatch(host ?? void 0, c.domain ?? void 0, false)) {\n          return false;\n        }\n      }\n      if (!allPaths && typeof c.path === \"string\" && !pathMatch(path, c.path)) {\n        return false;\n      }\n      if (c.secure && !potentiallyTrustworthy) {\n        return false;\n      }\n      if (c.httpOnly && !http) {\n        return false;\n      }\n      if (sameSiteLevel) {\n        let cookieLevel;\n        if (c.sameSite === \"lax\") {\n          cookieLevel = Cookie.sameSiteLevel.lax;\n        } else if (c.sameSite === \"strict\") {\n          cookieLevel = Cookie.sameSiteLevel.strict;\n        } else {\n          cookieLevel = Cookie.sameSiteLevel.none;\n        }\n        if (cookieLevel > sameSiteLevel) {\n          return false;\n        }\n      }\n      const expiryTime = c.expiryTime();\n      if (expireCheck && expiryTime != void 0 && expiryTime <= now) {\n        store.removeCookie(c.domain, c.path, c.key, () => {\n        });\n        return false;\n      }\n      return true;\n    }\n    store.findCookies(\n      host,\n      allPaths ? null : path,\n      this.allowSpecialUseDomain,\n      (err, cookies) => {\n        if (err) {\n          cb(err);\n          return;\n        }\n        if (cookies == null) {\n          cb(null, []);\n          return;\n        }\n        cookies = cookies.filter(matchingCookie);\n        if (\"sort\" in options && options.sort !== false) {\n          cookies = cookies.sort(cookieCompare);\n        }\n        const now2 = /* @__PURE__ */ new Date();\n        for (const cookie of cookies) {\n          cookie.lastAccessed = now2;\n        }\n        cb(null, cookies);\n      }\n    );\n    return promiseCallback.promise;\n  }\n  /**\n   * Synchronously retrieve the list of cookies that can be sent in a Cookie header for the\n   * current URL.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   *\n   * @remarks\n   * - The array of cookies returned will be sorted according to {@link cookieCompare}.\n   *\n   * - The {@link Cookie.lastAccessed} property will be updated on all returned cookies.\n   *\n   * @param url - The domain to store the cookie with.\n   * @param options - Configuration settings to use when retrieving the cookies.\n   */\n  getCookiesSync(url, options) {\n    return this.callSync(this.getCookies.bind(this, url, options)) ?? [];\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  getCookieString(url, options, callback) {\n    if (typeof options === \"function\") {\n      callback = options;\n      options = void 0;\n    }\n    const promiseCallback = createPromiseCallback(callback);\n    const next = function(err, cookies) {\n      if (err) {\n        promiseCallback.callback(err);\n      } else {\n        promiseCallback.callback(\n          null,\n          cookies?.sort(cookieCompare).map((c) => c.cookieString()).join(\"; \")\n        );\n      }\n    };\n    this.getCookies(url, options, next);\n    return promiseCallback.promise;\n  }\n  /**\n   * Synchronous version of `.getCookieString()`. Accepts the same options as `.getCookies()` but returns a string suitable for a\n   * `Cookie` header rather than an Array.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   *\n   * @param url - The domain to store the cookie with.\n   * @param options - Configuration settings to use when retrieving the cookies.\n   */\n  getCookieStringSync(url, options) {\n    return this.callSync(\n      options ? this.getCookieString.bind(this, url, options) : this.getCookieString.bind(this, url)\n    ) ?? \"\";\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  getSetCookieStrings(url, options, callback) {\n    if (typeof options === \"function\") {\n      callback = options;\n      options = void 0;\n    }\n    const promiseCallback = createPromiseCallback(\n      callback\n    );\n    const next = function(err, cookies) {\n      if (err) {\n        promiseCallback.callback(err);\n      } else {\n        promiseCallback.callback(\n          null,\n          cookies?.map((c) => {\n            return c.toString();\n          })\n        );\n      }\n    };\n    this.getCookies(url, options, next);\n    return promiseCallback.promise;\n  }\n  /**\n   * Synchronous version of `.getSetCookieStrings()`. Returns an array of strings suitable for `Set-Cookie` headers.\n   * Accepts the same options as `.getCookies()`.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   *\n   * @param url - The domain to store the cookie with.\n   * @param options - Configuration settings to use when retrieving the cookies.\n   */\n  getSetCookieStringsSync(url, options = {}) {\n    return this.callSync(this.getSetCookieStrings.bind(this, url, options)) ?? [];\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  serialize(callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    let type = this.store.constructor.name;\n    if (isObject(type)) {\n      type = null;\n    }\n    const serialized = {\n      // The version of tough-cookie that serialized this jar. Generally a good\n      // practice since future versions can make data import decisions based on\n      // known past behavior. When/if this matters, use `semver`.\n      version: `tough-cookie@${version}`,\n      // add the store type, to make humans happy:\n      storeType: type,\n      // CookieJar configuration:\n      rejectPublicSuffixes: this.rejectPublicSuffixes,\n      enableLooseMode: this.enableLooseMode,\n      allowSpecialUseDomain: this.allowSpecialUseDomain,\n      prefixSecurity: getNormalizedPrefixSecurity(this.prefixSecurity),\n      // this gets filled from getAllCookies:\n      cookies: []\n    };\n    if (typeof this.store.getAllCookies !== \"function\") {\n      return promiseCallback.reject(\n        new Error(\n          \"store does not support getAllCookies and cannot be serialized\"\n        )\n      );\n    }\n    this.store.getAllCookies((err, cookies) => {\n      if (err) {\n        promiseCallback.callback(err);\n        return;\n      }\n      if (cookies == null) {\n        promiseCallback.callback(null, serialized);\n        return;\n      }\n      serialized.cookies = cookies.map((cookie) => {\n        const serializedCookie = cookie.toJSON();\n        delete serializedCookie.creationIndex;\n        return serializedCookie;\n      });\n      promiseCallback.callback(null, serialized);\n    });\n    return promiseCallback.promise;\n  }\n  /**\n   * Serialize the CookieJar if the underlying store supports `.getAllCookies`.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   */\n  serializeSync() {\n    return this.callSync((callback) => {\n      this.serialize(callback);\n    });\n  }\n  /**\n   * Alias of {@link CookieJar.serializeSync}. Allows the cookie to be serialized\n   * with `JSON.stringify(cookieJar)`.\n   */\n  toJSON() {\n    return this.serializeSync();\n  }\n  /**\n   * Use the class method CookieJar.deserialize instead of calling this directly\n   * @internal\n   */\n  _importCookies(serialized, callback) {\n    let cookies = void 0;\n    if (serialized && typeof serialized === \"object\" && inOperator(\"cookies\", serialized) && Array.isArray(serialized.cookies)) {\n      cookies = serialized.cookies;\n    }\n    if (!cookies) {\n      callback(new Error(\"serialized jar has no cookies array\"), void 0);\n      return;\n    }\n    cookies = cookies.slice();\n    const putNext = (err) => {\n      if (err) {\n        callback(err, void 0);\n        return;\n      }\n      if (Array.isArray(cookies)) {\n        if (!cookies.length) {\n          callback(err, this);\n          return;\n        }\n        let cookie;\n        try {\n          cookie = Cookie.fromJSON(cookies.shift());\n        } catch (e) {\n          callback(e instanceof Error ? e : new Error(), void 0);\n          return;\n        }\n        if (cookie === void 0) {\n          putNext(null);\n          return;\n        }\n        this.store.putCookie(cookie, putNext);\n      }\n    };\n    putNext(null);\n  }\n  /**\n   * @internal\n   */\n  _importCookiesSync(serialized) {\n    this.callSync(this._importCookies.bind(this, serialized));\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  clone(newStore, callback) {\n    if (typeof newStore === \"function\") {\n      callback = newStore;\n      newStore = void 0;\n    }\n    const promiseCallback = createPromiseCallback(callback);\n    const cb = promiseCallback.callback;\n    this.serialize((err, serialized) => {\n      if (err) {\n        return promiseCallback.reject(err);\n      }\n      return _CookieJar.deserialize(serialized ?? \"\", newStore, cb);\n    });\n    return promiseCallback.promise;\n  }\n  /**\n   * @internal\n   */\n  _cloneSync(newStore) {\n    const cloneFn = newStore && typeof newStore !== \"function\" ? this.clone.bind(this, newStore) : this.clone.bind(this);\n    return this.callSync((callback) => {\n      cloneFn(callback);\n    });\n  }\n  /**\n   * Produces a deep clone of this CookieJar. Modifications to the original do\n   * not affect the clone, and vice versa.\n   *\n   * <strong>Note</strong>: Only works if both the configured Store and destination\n   * Store are synchronous.\n   *\n   * @remarks\n   * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.\n   *\n   * - Transferring between store types is supported so long as the source\n   *     implements `.getAllCookies()` and the destination implements `.putCookie()`.\n   *\n   * @param newStore - The target {@link Store} to clone cookies into.\n   */\n  cloneSync(newStore) {\n    if (!newStore) {\n      return this._cloneSync();\n    }\n    if (!newStore.synchronous) {\n      throw new Error(\n        \"CookieJar clone destination store is not synchronous; use async API instead.\"\n      );\n    }\n    return this._cloneSync(newStore);\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  removeAllCookies(callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    const cb = promiseCallback.callback;\n    const store = this.store;\n    if (typeof store.removeAllCookies === \"function\" && store.removeAllCookies !== Store.prototype.removeAllCookies) {\n      store.removeAllCookies(cb);\n      return promiseCallback.promise;\n    }\n    store.getAllCookies((err, cookies) => {\n      if (err) {\n        cb(err);\n        return;\n      }\n      if (!cookies) {\n        cookies = [];\n      }\n      if (cookies.length === 0) {\n        cb(null, void 0);\n        return;\n      }\n      let completedCount = 0;\n      const removeErrors = [];\n      const removeCookieCb = function removeCookieCb2(removeErr) {\n        if (removeErr) {\n          removeErrors.push(removeErr);\n        }\n        completedCount++;\n        if (completedCount === cookies.length) {\n          if (removeErrors[0]) cb(removeErrors[0]);\n          else cb(null, void 0);\n          return;\n        }\n      };\n      cookies.forEach((cookie) => {\n        store.removeCookie(\n          cookie.domain,\n          cookie.path,\n          cookie.key,\n          removeCookieCb\n        );\n      });\n    });\n    return promiseCallback.promise;\n  }\n  /**\n   * Removes all cookies from the CookieJar.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   *\n   * @remarks\n   * - This is a new backwards-compatible feature of tough-cookie version 2.5,\n   *     so not all Stores will implement it efficiently. For Stores that do not\n   *     implement `removeAllCookies`, the fallback is to call `removeCookie` after\n   *     `getAllCookies`.\n   *\n   * - If `getAllCookies` fails or isn't implemented in the Store, an error is returned.\n   *\n   * - If one or more of the `removeCookie` calls fail, only the first error is returned.\n   */\n  removeAllCookiesSync() {\n    this.callSync((callback) => {\n      this.removeAllCookies(callback);\n    });\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  static deserialize(strOrObj, store, callback) {\n    if (typeof store === \"function\") {\n      callback = store;\n      store = void 0;\n    }\n    const promiseCallback = createPromiseCallback(callback);\n    let serialized;\n    if (typeof strOrObj === \"string\") {\n      try {\n        serialized = JSON.parse(strOrObj);\n      } catch (e) {\n        return promiseCallback.reject(e instanceof Error ? e : new Error());\n      }\n    } else {\n      serialized = strOrObj;\n    }\n    const readSerializedProperty = (property) => {\n      return serialized && typeof serialized === \"object\" && inOperator(property, serialized) ? serialized[property] : void 0;\n    };\n    const readSerializedBoolean = (property) => {\n      const value = readSerializedProperty(property);\n      return typeof value === \"boolean\" ? value : void 0;\n    };\n    const readSerializedString = (property) => {\n      const value = readSerializedProperty(property);\n      return typeof value === \"string\" ? value : void 0;\n    };\n    const jar = new _CookieJar(store, {\n      rejectPublicSuffixes: readSerializedBoolean(\"rejectPublicSuffixes\"),\n      looseMode: readSerializedBoolean(\"enableLooseMode\"),\n      allowSpecialUseDomain: readSerializedBoolean(\"allowSpecialUseDomain\"),\n      prefixSecurity: getNormalizedPrefixSecurity(\n        readSerializedString(\"prefixSecurity\") ?? \"silent\"\n      )\n    });\n    jar._importCookies(serialized, (err) => {\n      if (err) {\n        promiseCallback.callback(err);\n        return;\n      }\n      promiseCallback.callback(null, jar);\n    });\n    return promiseCallback.promise;\n  }\n  /**\n   * A new CookieJar is created and the serialized {@link Cookie} values are added to\n   * the underlying store. Each {@link Cookie} is added via `store.putCookie(...)` in\n   * the order in which they appear in the serialization.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   *\n   * @remarks\n   * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.\n   *\n   * - As a convenience, if `strOrObj` is a string, it is passed through `JSON.parse` first.\n   *\n   * @param strOrObj - A JSON string or object representing the deserialized cookies.\n   * @param store - The underlying store to persist the deserialized cookies into.\n   */\n  static deserializeSync(strOrObj, store) {\n    const serialized = typeof strOrObj === \"string\" ? JSON.parse(strOrObj) : strOrObj;\n    const readSerializedProperty = (property) => {\n      return serialized && typeof serialized === \"object\" && inOperator(property, serialized) ? serialized[property] : void 0;\n    };\n    const readSerializedBoolean = (property) => {\n      const value = readSerializedProperty(property);\n      return typeof value === \"boolean\" ? value : void 0;\n    };\n    const readSerializedString = (property) => {\n      const value = readSerializedProperty(property);\n      return typeof value === \"string\" ? value : void 0;\n    };\n    const jar = new _CookieJar(store, {\n      rejectPublicSuffixes: readSerializedBoolean(\"rejectPublicSuffixes\"),\n      looseMode: readSerializedBoolean(\"enableLooseMode\"),\n      allowSpecialUseDomain: readSerializedBoolean(\"allowSpecialUseDomain\"),\n      prefixSecurity: getNormalizedPrefixSecurity(\n        readSerializedString(\"prefixSecurity\") ?? \"silent\"\n      )\n    });\n    if (!jar.store.synchronous) {\n      throw new Error(\n        \"CookieJar store is not synchronous; use async API instead.\"\n      );\n    }\n    jar._importCookiesSync(serialized);\n    return jar;\n  }\n  /**\n   * Alias of {@link CookieJar.deserializeSync}.\n   *\n   * @remarks\n   * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.\n   *\n   * - As a convenience, if `strOrObj` is a string, it is passed through `JSON.parse` first.\n   *\n   * @param jsonString - A JSON string or object representing the deserialized cookies.\n   * @param store - The underlying store to persist the deserialized cookies into.\n   */\n  static fromJSON(jsonString, store) {\n    return _CookieJar.deserializeSync(jsonString, store);\n  }\n};\n\n// lib/cookie/permutePath.ts\nfunction permutePath(path) {\n  if (path === \"/\") {\n    return [\"/\"];\n  }\n  const permutations = [path];\n  while (path.length > 1) {\n    const lindex = path.lastIndexOf(\"/\");\n    if (lindex === 0) {\n      break;\n    }\n    path = path.slice(0, lindex);\n    permutations.push(path);\n  }\n  permutations.push(\"/\");\n  return permutations;\n}\n\n// lib/cookie/index.ts\nfunction parse2(str, options) {\n  return Cookie.parse(str, options);\n}\nfunction fromJSON2(str) {\n  return Cookie.fromJSON(str);\n}\nexport {\n  Cookie,\n  CookieJar,\n  MemoryCookieStore,\n  ParameterError,\n  PrefixSecurityEnum,\n  Store,\n  canonicalDomain,\n  cookieCompare,\n  defaultPath,\n  domainMatch,\n  formatDate,\n  fromJSON2 as fromJSON,\n  getPublicSuffix,\n  parse2 as parse,\n  parseDate,\n  pathMatch,\n  permuteDomain,\n  permutePath,\n  version\n};\n/*!\n * Copyright (c) 2015-2020, Salesforce.com, Inc.\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,\n * this 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 Salesforce.com nor the names of its contributors may\n * 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\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n//# sourceMappingURL=index.js.map","function jsonParse(value) {\n  try {\n    return JSON.parse(value);\n  } catch {\n    return void 0;\n  }\n}\nexport {\n  jsonParse\n};\n//# sourceMappingURL=jsonParse.mjs.map","import { isNodeProcess } from \"is-node-process\";\nimport { invariant } from \"outvariant\";\nimport {\n  Cookie,\n  CookieJar,\n  MemoryCookieStore\n} from \"tough-cookie\";\nimport { jsonParse } from './internal/jsonParse.mjs';\nclass CookieStore {\n  #storageKey = \"__msw-cookie-store__\";\n  #jar;\n  #memoryStore;\n  constructor() {\n    if (!isNodeProcess()) {\n      invariant(\n        typeof localStorage !== \"undefined\",\n        \"Failed to create a CookieStore: `localStorage` is not available in this environment. This is likely an issue with your environment, which has been detected as browser (or browser-like) environment and must implement global browser APIs correctly.\"\n      );\n    }\n    this.#memoryStore = new MemoryCookieStore();\n    this.#memoryStore.idx = this.getCookieStoreIndex();\n    this.#jar = new CookieJar(this.#memoryStore);\n  }\n  getCookies(url) {\n    return this.#jar.getCookiesSync(url);\n  }\n  async setCookie(cookieName, url) {\n    await this.#jar.setCookie(cookieName, url);\n    this.persist();\n  }\n  getCookieStoreIndex() {\n    if (typeof localStorage === \"undefined\" || typeof localStorage.getItem !== \"function\") {\n      return {};\n    }\n    const cookiesString = localStorage.getItem(this.#storageKey);\n    if (cookiesString == null) {\n      return {};\n    }\n    const rawCookies = jsonParse(cookiesString);\n    if (rawCookies == null) {\n      return {};\n    }\n    const cookies = {};\n    for (const rawCookie of rawCookies) {\n      const cookie = Cookie.fromJSON(rawCookie);\n      if (cookie != null && cookie.domain != null && cookie.path != null) {\n        cookies[cookie.domain] ||= {};\n        cookies[cookie.domain][cookie.path] ||= {};\n        cookies[cookie.domain][cookie.path][cookie.key] = cookie;\n      }\n    }\n    return cookies;\n  }\n  persist() {\n    if (typeof localStorage === \"undefined\" || typeof localStorage.setItem !== \"function\") {\n      return;\n    }\n    const data = [];\n    const { idx } = this.#memoryStore;\n    for (const domain in idx) {\n      for (const path in idx[domain]) {\n        for (const key in idx[domain][path]) {\n          data.push(idx[domain][path][key].toJSON());\n        }\n      }\n    }\n    localStorage.setItem(this.#storageKey, JSON.stringify(data));\n  }\n}\nconst cookieStore = new CookieStore();\nexport {\n  cookieStore\n};\n//# sourceMappingURL=cookieStore.mjs.map","import {\n  parse as parseCookie,\n  serialize as serializeCookie\n} from '../../../shims/cookie.mjs';\nimport { cookieStore } from '../cookieStore.mjs';\nfunction parseCookies(input) {\n  const parsedCookies = parseCookie(input);\n  const cookies = {};\n  for (const cookieName in parsedCookies) {\n    if (typeof parsedCookies[cookieName] !== \"undefined\") {\n      cookies[cookieName] = parsedCookies[cookieName];\n    }\n  }\n  return cookies;\n}\nfunction getAllDocumentCookies() {\n  return parseCookies(document.cookie);\n}\nfunction getDocumentCookies(request) {\n  if (typeof document === \"undefined\" || typeof location === \"undefined\") {\n    return {};\n  }\n  switch (request.credentials) {\n    case \"same-origin\": {\n      const requestUrl = new URL(request.url);\n      return location.origin === requestUrl.origin ? getAllDocumentCookies() : {};\n    }\n    case \"include\": {\n      return getAllDocumentCookies();\n    }\n    default: {\n      return {};\n    }\n  }\n}\nfunction getAllRequestCookies(request) {\n  const requestCookieHeader = request.headers.get(\"cookie\");\n  const cookiesFromHeaders = requestCookieHeader ? parseCookies(requestCookieHeader) : {};\n  const cookiesFromDocument = getDocumentCookies(request);\n  for (const name in cookiesFromDocument) {\n    request.headers.append(\n      \"cookie\",\n      serializeCookie(name, cookiesFromDocument[name])\n    );\n  }\n  const cookiesFromStore = cookieStore.getCookies(request.url);\n  const storedCookiesObject = Object.fromEntries(\n    cookiesFromStore.map((cookie) => [cookie.key, cookie.value])\n  );\n  for (const cookie of cookiesFromStore) {\n    request.headers.append(\"cookie\", cookie.toString());\n  }\n  return {\n    ...cookiesFromDocument,\n    ...storedCookiesObject,\n    ...cookiesFromHeaders\n  };\n}\nexport {\n  getAllRequestCookies\n};\n//# sourceMappingURL=getRequestCookies.mjs.map","import {} from '../utils/executeHandlers.mjs';\nimport { devUtils } from '../utils/internal/devUtils.mjs';\nimport { isStringEqual } from '../utils/internal/isStringEqual.mjs';\nimport { getStatusCodeColor } from '../utils/logging/getStatusCodeColor.mjs';\nimport { getTimestamp } from '../utils/logging/getTimestamp.mjs';\nimport { serializeRequest } from '../utils/logging/serializeRequest.mjs';\nimport { serializeResponse } from '../utils/logging/serializeResponse.mjs';\nimport {\n  matchRequestUrl\n} from '../utils/matching/matchRequestUrl.mjs';\nimport { toPublicUrl } from '../utils/request/toPublicUrl.mjs';\nimport { getAllRequestCookies } from '../utils/request/getRequestCookies.mjs';\nimport { cleanUrl } from '../utils/url/cleanUrl.mjs';\nimport {\n  RequestHandler\n} from './RequestHandler.mjs';\nvar HttpMethods = /* @__PURE__ */ ((HttpMethods2) => {\n  HttpMethods2[\"HEAD\"] = \"HEAD\";\n  HttpMethods2[\"GET\"] = \"GET\";\n  HttpMethods2[\"POST\"] = \"POST\";\n  HttpMethods2[\"PUT\"] = \"PUT\";\n  HttpMethods2[\"PATCH\"] = \"PATCH\";\n  HttpMethods2[\"OPTIONS\"] = \"OPTIONS\";\n  HttpMethods2[\"DELETE\"] = \"DELETE\";\n  return HttpMethods2;\n})(HttpMethods || {});\nclass HttpHandler extends RequestHandler {\n  constructor(method, predicate, resolver, options) {\n    const displayPath = typeof predicate === \"function\" ? \"[custom predicate]\" : predicate;\n    super({\n      info: {\n        header: `${method}${displayPath ? ` ${displayPath}` : \"\"}`,\n        path: predicate,\n        method\n      },\n      resolver,\n      options\n    });\n    this.checkRedundantQueryParameters();\n  }\n  checkRedundantQueryParameters() {\n    const { method, path } = this.info;\n    if (!path || path instanceof RegExp || typeof path === \"function\") {\n      return;\n    }\n    const url = cleanUrl(path);\n    if (url === path) {\n      return;\n    }\n    devUtils.warn(\n      `Found a redundant usage of query parameters in the request handler URL for \"${method} ${path}\". Please match against a path instead and access query parameters using \"new URL(request.url).searchParams\" instead. Learn more: https://mswjs.io/docs/http/intercepting-requests#querysearch-parameters`\n    );\n  }\n  async parse(args) {\n    const url = new URL(args.request.url);\n    const cookies = getAllRequestCookies(args.request);\n    if (typeof this.info.path === \"function\") {\n      const customPredicateResult = await this.info.path({\n        request: args.request,\n        cookies\n      });\n      const match2 = typeof customPredicateResult === \"boolean\" ? {\n        matches: customPredicateResult,\n        params: {}\n      } : customPredicateResult;\n      return {\n        match: match2,\n        cookies\n      };\n    }\n    const match = this.info.path ? matchRequestUrl(url, this.info.path, args.resolutionContext?.baseUrl) : { matches: false, params: {} };\n    return {\n      match,\n      cookies\n    };\n  }\n  async predicate(args) {\n    const hasMatchingMethod = this.matchMethod(args.request.method);\n    const hasMatchingUrl = args.parsedResult.match.matches;\n    return hasMatchingMethod && hasMatchingUrl;\n  }\n  matchMethod(actualMethod) {\n    return this.info.method instanceof RegExp ? this.info.method.test(actualMethod) : isStringEqual(this.info.method, actualMethod);\n  }\n  extendResolverArgs(args) {\n    return {\n      params: args.parsedResult.match?.params || {},\n      cookies: args.parsedResult.cookies\n    };\n  }\n  async log(args) {\n    const publicUrl = toPublicUrl(args.request.url);\n    const loggedRequest = await serializeRequest(args.request);\n    const loggedResponse = await serializeResponse(args.response);\n    const statusColor = getStatusCodeColor(loggedResponse.status);\n    console.groupCollapsed(\n      devUtils.formatMessage(\n        `${getTimestamp()} ${args.request.method} ${publicUrl} (%c${loggedResponse.status} ${loggedResponse.statusText}%c)`\n      ),\n      `color:${statusColor}`,\n      \"color:inherit\"\n    );\n    console.log(\"Request\", loggedRequest);\n    console.log(\"Handler:\", this);\n    console.log(\"Response\", loggedResponse);\n    console.groupEnd();\n  }\n}\nexport {\n  HttpHandler,\n  HttpMethods\n};\n//# sourceMappingURL=HttpHandler.mjs.map","import {\n} from './handlers/RequestHandler.mjs';\nimport {\n  HttpMethods,\n  HttpHandler\n} from './handlers/HttpHandler.mjs';\nfunction createHttpHandler(method) {\n  return (predicate, resolver, options = {}) => {\n    return new HttpHandler(method, predicate, resolver, options);\n  };\n}\nconst http = {\n  all: createHttpHandler(/.+/),\n  head: createHttpHandler(HttpMethods.HEAD),\n  get: createHttpHandler(HttpMethods.GET),\n  post: createHttpHandler(HttpMethods.POST),\n  put: createHttpHandler(HttpMethods.PUT),\n  delete: createHttpHandler(HttpMethods.DELETE),\n  patch: createHttpHandler(HttpMethods.PATCH),\n  options: createHttpHandler(HttpMethods.OPTIONS)\n};\nexport {\n  http\n};\n//# sourceMappingURL=http.mjs.map","import { isObject } from './isObject.mjs';\nfunction hasRefCounted(value) {\n  return (\n    /**\n     * @note Guard against non-object values.\n     * E.g. `setTimeout` returns an object in Node.js but a number in the browser.\n     */\n    isObject(value) && typeof Reflect.get(value, \"ref\") === \"function\" && typeof Reflect.get(value, \"unref\") === \"function\"\n  );\n}\nexport {\n  hasRefCounted\n};\n//# sourceMappingURL=hasRefCounted.mjs.map","import { isNodeProcess } from \"is-node-process\";\nimport { hasRefCounted } from './utils/internal/hasRefCounted.mjs';\nconst SET_TIMEOUT_MAX_ALLOWED_INT = 2147483647;\nconst MIN_SERVER_RESPONSE_TIME = 100;\nconst MAX_SERVER_RESPONSE_TIME = 400;\nconst NODE_SERVER_RESPONSE_TIME = 5;\nfunction getRealisticResponseTime() {\n  if (isNodeProcess()) {\n    return NODE_SERVER_RESPONSE_TIME;\n  }\n  return Math.floor(\n    Math.random() * (MAX_SERVER_RESPONSE_TIME - MIN_SERVER_RESPONSE_TIME) + MIN_SERVER_RESPONSE_TIME\n  );\n}\nasync function delay(durationOrMode) {\n  let delayTime;\n  if (typeof durationOrMode === \"string\") {\n    switch (durationOrMode) {\n      case \"infinite\": {\n        delayTime = SET_TIMEOUT_MAX_ALLOWED_INT;\n        break;\n      }\n      case \"real\": {\n        delayTime = getRealisticResponseTime();\n        break;\n      }\n      default: {\n        throw new Error(\n          `Failed to delay a response: unknown delay mode \"${durationOrMode}\". Please make sure you provide one of the supported modes (\"real\", \"infinite\") or a number.`\n        );\n      }\n    }\n  } else if (typeof durationOrMode === \"undefined\") {\n    delayTime = getRealisticResponseTime();\n  } else {\n    if (durationOrMode > SET_TIMEOUT_MAX_ALLOWED_INT) {\n      throw new Error(\n        `Failed to delay a response: provided delay duration (${durationOrMode}) exceeds the maximum allowed duration for \"setTimeout\" (${SET_TIMEOUT_MAX_ALLOWED_INT}). This will cause the response to be returned immediately. Please use a number within the allowed range to delay the response by exact duration, or consider the \"infinite\" delay mode to delay the response indefinitely.`\n      );\n    }\n    delayTime = durationOrMode;\n  }\n  return new Promise((resolve) => {\n    const timeoutId = setTimeout(resolve, delayTime);\n    if (delayTime === SET_TIMEOUT_MAX_ALLOWED_INT && isNodeProcess() && hasRefCounted(timeoutId)) {\n      timeoutId.unref();\n    }\n  });\n}\nexport {\n  MAX_SERVER_RESPONSE_TIME,\n  MIN_SERVER_RESPONSE_TIME,\n  NODE_SERVER_RESPONSE_TIME,\n  SET_TIMEOUT_MAX_ALLOWED_INT,\n  delay\n};\n//# sourceMappingURL=delay.mjs.map","//#region src/index.ts\n/**\n* Gracefully handles a callback that returns a promise.\n*\n* @example\n* await until(() => Promise.resolve(123))\n* // [null, 123]\n*\n* await until(() => Promise.reject(new Error('Oops!')))\n* // [new Error('Oops!'), null]\n*/\nasync function until(callback) {\n\ttry {\n\t\treturn [null, await callback().catch((error) => {\n\t\t\tthrow error;\n\t\t})];\n\t} catch (error) {\n\t\treturn [error, null];\n\t}\n}\n\n//#endregion\nexport { until };\n//# sourceMappingURL=index.js.map","function isCommonAssetRequest(request) {\n  const url = new URL(request.url);\n  if (url.protocol === \"file:\") {\n    return true;\n  }\n  if (/(fonts\\.googleapis\\.com)/.test(url.hostname)) {\n    return true;\n  }\n  if (/node_modules/.test(url.pathname)) {\n    return true;\n  }\n  if (url.pathname.includes(\"@vite\")) {\n    return true;\n  }\n  return /\\.(s?css|less|m?jsx?|m?tsx?|html|ttf|otf|woff|woff2|eot|gif|jpe?g|png|avif|webp|svg|mp4|webm|ogg|mov|mp3|wav|ogg|flac|aac|pdf|txt|csv|json|xml|md|zip|tar|gz|rar|7z)$/i.test(\n    url.pathname\n  );\n}\nexport {\n  isCommonAssetRequest\n};\n//# sourceMappingURL=isCommonAssetRequest.mjs.map","import { cookieStore } from '../cookieStore.mjs';\nimport { getRawSetCookie } from '../HttpResponse/decorators.mjs';\nasync function storeResponseCookies(request, response) {\n  const responseCookies = getRawSetCookie(response);\n  if (responseCookies) {\n    await cookieStore.setCookie(responseCookies, request.url);\n  }\n}\nexport {\n  storeResponseCookies\n};\n//# sourceMappingURL=storeResponseCookies.mjs.map","function passthrough() {\n  return new Response(null, {\n    status: 302,\n    statusText: \"Passthrough\",\n    headers: {\n      \"x-msw-intention\": \"passthrough\"\n    }\n  });\n}\nexport {\n  passthrough\n};\n//# sourceMappingURL=passthrough.mjs.map","import { checkGlobals } from './utils/internal/checkGlobals.mjs';\nimport { SetupApi } from './experimental/setup-api.mjs';\nimport { RequestHandler } from './handlers/RequestHandler.mjs';\nimport { http } from './http.mjs';\nimport { HttpHandler, HttpMethods } from './handlers/HttpHandler.mjs';\nimport { graphql } from './graphql.mjs';\nimport { GraphQLHandler } from './handlers/GraphQLHandler.mjs';\nimport { ws } from './ws.mjs';\nimport {\n  WebSocketHandler\n} from './handlers/WebSocketHandler.mjs';\nimport {\n  sse\n} from './sse.mjs';\nimport { matchRequestUrl } from './utils/matching/matchRequestUrl.mjs';\nimport { handleRequest } from './utils/handleRequest.mjs';\nimport {\n  onUnhandledRequest\n} from './utils/request/onUnhandledRequest.mjs';\nimport { getResponse } from './getResponse.mjs';\nimport { cleanUrl } from './utils/url/cleanUrl.mjs';\nimport {\n  HttpResponse\n} from './HttpResponse.mjs';\nimport { delay } from './delay.mjs';\nimport { bypass } from './bypass.mjs';\nimport { passthrough } from './passthrough.mjs';\nimport { isCommonAssetRequest } from './isCommonAssetRequest.mjs';\ncheckGlobals();\nexport {\n  GraphQLHandler,\n  HttpHandler,\n  HttpMethods,\n  HttpResponse,\n  RequestHandler,\n  SetupApi,\n  WebSocketHandler,\n  bypass,\n  cleanUrl,\n  delay,\n  getResponse,\n  graphql,\n  handleRequest,\n  http,\n  isCommonAssetRequest,\n  matchRequestUrl,\n  onUnhandledRequest,\n  passthrough,\n  sse,\n  ws\n};\n//# sourceMappingURL=index.mjs.map","import { Emitter } from \"rettime\";\nclass NetworkFrame {\n  constructor(protocol, data) {\n    this.protocol = protocol;\n    this.data = data;\n    this.events = new Emitter();\n  }\n  protocol;\n  data;\n  events;\n}\nexport {\n  NetworkFrame\n};\n//# sourceMappingURL=network-frame.mjs.map","import { Emitter, TypedEvent } from \"rettime\";\nimport {\n} from '../frames/network-frame.mjs';\nclass NetworkFrameEvent extends TypedEvent {\n  frame;\n  constructor(type, frame) {\n    super(...[type, {}]);\n    this.frame = frame;\n  }\n}\nclass NetworkSource {\n  emitter;\n  constructor() {\n    this.emitter = new Emitter();\n  }\n  async queue(frame) {\n    await this.emitter.emitAsPromise(\n      // @ts-expect-error Trouble handling a conditional type parameter.\n      new NetworkFrameEvent(\"frame\", frame)\n    );\n  }\n  on(type, listener, options) {\n    this.emitter.on(type, listener, options);\n  }\n  disable() {\n    this.emitter.removeAllListeners();\n  }\n}\nexport {\n  NetworkSource\n};\n//# sourceMappingURL=network-source.mjs.map","const REQUEST_INTENTION_HEADER_NAME = \"x-msw-intention\";\nvar RequestIntention = /* @__PURE__ */ ((RequestIntention2) => {\n  RequestIntention2[\"passthrough\"] = \"passthrough\";\n  return RequestIntention2;\n})(RequestIntention || {});\nfunction shouldBypassRequest(request) {\n  return !!request.headers.get(\"accept\")?.includes(\"msw/passthrough\");\n}\nfunction isPassthroughResponse(response) {\n  return response.status === 302 && response.headers.get(REQUEST_INTENTION_HEADER_NAME) === \"passthrough\" /* passthrough */;\n}\nfunction deleteRequestPassthroughHeader(request) {\n  const acceptHeader = request.headers.get(\"accept\");\n  if (acceptHeader) {\n    const nextAcceptHeader = acceptHeader.replace(/(,\\s+)?msw\\/passthrough/, \"\");\n    if (nextAcceptHeader) {\n      request.headers.set(\"accept\", nextAcceptHeader);\n    } else {\n      request.headers.delete(\"accept\");\n    }\n  }\n}\nexport {\n  REQUEST_INTENTION_HEADER_NAME,\n  RequestIntention,\n  deleteRequestPassthroughHeader,\n  isPassthroughResponse,\n  shouldBypassRequest\n};\n//# sourceMappingURL=request-utils.mjs.map","import { TypedEvent } from \"rettime\";\nimport { until } from \"until-async\";\nimport { createRequestId } from \"@mswjs/interceptors\";\nimport {\n  NetworkFrame\n} from './network-frame.mjs';\nimport { toPublicUrl } from '../../utils/request/toPublicUrl.mjs';\nimport { executeHandlers } from '../../utils/executeHandlers.mjs';\nimport { storeResponseCookies } from '../../utils/request/storeResponseCookies.mjs';\nimport { isPassthroughResponse, shouldBypassRequest } from '../request-utils.mjs';\nimport { devUtils } from '../../utils/internal/devUtils.mjs';\nimport {\n  executeUnhandledFrameHandle\n} from '../on-unhandled-frame.mjs';\nimport {} from '../handlers-controller.mjs';\nimport {} from '../../handlers/RequestHandler.mjs';\nclass RequestEvent extends TypedEvent {\n  requestId;\n  request;\n  constructor(type, data) {\n    super(...[type, {}]);\n    this.requestId = data.requestId;\n    this.request = data.request;\n  }\n}\nclass ResponseEvent extends TypedEvent {\n  requestId;\n  request;\n  response;\n  constructor(type, data) {\n    super(...[type, {}]);\n    this.requestId = data.requestId;\n    this.request = data.request;\n    this.response = data.response;\n  }\n}\nclass UnhandledExceptionEvent extends TypedEvent {\n  error;\n  requestId;\n  request;\n  constructor(type, data) {\n    super(...[type, {}]);\n    this.error = data.error;\n    this.requestId = data.requestId;\n    this.request = data.request;\n  }\n}\nclass HttpNetworkFrame extends NetworkFrame {\n  constructor(options) {\n    const id = options.id || createRequestId();\n    super(\"http\", { id, request: options.request });\n  }\n  getHandlers(controller) {\n    return controller.getHandlersByKind(\"request\");\n  }\n  async getUnhandledMessage() {\n    const { request } = this.data;\n    const url = new URL(request.url);\n    const publicUrl = toPublicUrl(url) + url.search;\n    const requestBody = request.body == null ? null : await request.clone().text();\n    const details = `\n\n  \\u2022 ${request.method} ${publicUrl}\n\n${requestBody ? `  \\u2022 Request body: ${requestBody}\n\n` : \"\"}`;\n    const message = `intercepted a request without a matching request handler:${details}If you still wish to intercept this unhandled request, please create a request handler for it.\nRead more: https://mswjs.io/docs/http/intercepting-requests`;\n    return message;\n  }\n  async resolve(handlers, onUnhandledFrame, resolutionContext) {\n    const { id: requestId, request } = this.data;\n    const requestCloneForLogs = resolutionContext?.quiet ? null : request.clone();\n    this.events.emit(new RequestEvent(\"request:start\", { requestId, request }));\n    if (shouldBypassRequest(request)) {\n      this.events.emit(new RequestEvent(\"request:end\", { requestId, request }));\n      this.passthrough();\n      return null;\n    }\n    const [lookupError, lookupResult] = await until(() => {\n      return executeHandlers({\n        requestId,\n        request,\n        handlers,\n        resolutionContext: {\n          baseUrl: resolutionContext?.baseUrl?.toString(),\n          quiet: resolutionContext?.quiet\n        }\n      });\n    });\n    if (lookupError != null) {\n      if (!this.events.emit(\n        new UnhandledExceptionEvent(\"unhandledException\", {\n          error: lookupError,\n          requestId,\n          request\n        })\n      )) {\n        console.error(lookupError);\n        devUtils.error(\n          'Encountered an unhandled exception during the handler lookup for \"%s %s\". Please see the original error above.',\n          request.method,\n          request.url\n        );\n      }\n      this.errorWith(lookupError);\n      return null;\n    }\n    if (lookupResult == null) {\n      this.events.emit(\n        new RequestEvent(\"request:unhandled\", {\n          requestId,\n          request\n        })\n      );\n      await executeUnhandledFrameHandle(this, onUnhandledFrame).then(\n        () => this.passthrough(),\n        (error) => this.errorWith(error)\n      );\n      this.events.emit(\n        new RequestEvent(\"request:end\", {\n          requestId,\n          request\n        })\n      );\n      return false;\n    }\n    const { response, handler, parsedResult } = lookupResult;\n    this.events.emit(\n      new RequestEvent(\"request:match\", {\n        requestId,\n        request\n      })\n    );\n    if (response == null) {\n      this.events.emit(\n        new RequestEvent(\"request:end\", {\n          requestId,\n          request\n        })\n      );\n      this.passthrough();\n      return null;\n    }\n    if (isPassthroughResponse(response)) {\n      this.events.emit(\n        new RequestEvent(\"request:end\", {\n          requestId,\n          request\n        })\n      );\n      this.passthrough();\n      return null;\n    }\n    const responseCloneForLogs = resolutionContext?.quiet ? null : response.clone();\n    await storeResponseCookies(request, response);\n    this.respondWith(response);\n    this.events.emit(\n      new RequestEvent(\"request:end\", {\n        requestId,\n        request\n      })\n    );\n    if (!resolutionContext?.quiet) {\n      handler.log({\n        request: requestCloneForLogs,\n        response: responseCloneForLogs,\n        parsedResult\n      });\n    }\n    return true;\n  }\n}\nexport {\n  HttpNetworkFrame,\n  RequestEvent,\n  ResponseEvent,\n  UnhandledExceptionEvent\n};\n//# sourceMappingURL=http-frame.mjs.map","import { invariant } from \"outvariant\";\nimport { isCommonAssetRequest } from '../isCommonAssetRequest.mjs';\nimport { devUtils, InternalError } from '../utils/internal/devUtils.mjs';\nimport { HttpNetworkFrame } from './frames/http-frame.mjs';\nimport {} from './frames/network-frame.mjs';\nasync function executeUnhandledFrameHandle(frame, handle) {\n  const printStrategyMessage = async (strategy) => {\n    if (strategy === \"bypass\") {\n      return;\n    }\n    const message = await frame.getUnhandledMessage();\n    switch (strategy) {\n      case \"warn\": {\n        return devUtils.warn(\"Warning: %s\", message);\n      }\n      case \"error\": {\n        return devUtils.error(\"Error: %s\", message);\n      }\n    }\n  };\n  const applyStrategy = async (strategy) => {\n    invariant.as(\n      InternalError,\n      strategy === \"bypass\" || strategy === \"warn\" || strategy === \"error\",\n      /**\n       * @fixme Rename \"onUnhandledRequest\" to \"onUnhandledFrame\" in the error message\n       * with the next major release.\n       */\n      devUtils.formatMessage(\n        'Failed to react to an unhandled network frame: unknown strategy \"%s\". Please provide one of the supported strategies (\"bypass\", \"warn\", \"error\") or a custom callback function as the value of the \"onUnhandledRequest\" option.',\n        strategy\n      )\n    );\n    if (strategy === \"bypass\") {\n      return;\n    }\n    await printStrategyMessage(strategy);\n    if (strategy === \"error\") {\n      return Promise.reject(\n        new InternalError(\n          devUtils.formatMessage(\n            'Cannot bypass a request when using the \"error\" strategy for the \"onUnhandledRequest\" option.'\n          )\n        )\n      );\n    }\n  };\n  if (typeof handle === \"function\") {\n    return handle({\n      frame,\n      defaults: {\n        warn: printStrategyMessage.bind(null, \"warn\"),\n        /**\n         * @note The defaults only print the corresponding messages now.\n         * They do not affect the frame resolution (e.g. do not error the frame).\n         * That is only for backward compatibility reasons. In the future, these should\n         * be an alias to `applyStrategy.bind(null, 'error')` instead.\n         */\n        error: printStrategyMessage.bind(null, \"error\")\n      }\n    });\n  }\n  if (frame instanceof HttpNetworkFrame && isCommonAssetRequest(frame.data.request)) {\n    return;\n  }\n  return applyStrategy(handle);\n}\nexport {\n  executeUnhandledFrameHandle\n};\n//# sourceMappingURL=on-unhandled-frame.mjs.map","import { invariant } from \"outvariant\";\nimport { Emitter } from \"rettime\";\nimport {\n  NetworkSource\n} from './sources/network-source.mjs';\nimport {} from './frames/network-frame.mjs';\nimport {} from './on-unhandled-frame.mjs';\nimport {\n  HandlersController,\n  InMemoryHandlersController\n} from './handlers-controller.mjs';\nimport { toReadonlyArray } from '../utils/internal/toReadonlyArray.mjs';\nimport { Disposable } from '../utils/internal/Disposable.mjs';\nfunction colorlessPromiseAll(values) {\n  const promises = [];\n  for (const value of values) {\n    if (value instanceof Promise) {\n      promises.push(value);\n    }\n  }\n  if (promises.length > 0) {\n    return Promise.all(promises).then(() => {\n    });\n  }\n}\nvar NetworkReadyState = /* @__PURE__ */ ((NetworkReadyState2) => {\n  NetworkReadyState2[NetworkReadyState2[\"DISABLED\"] = 0] = \"DISABLED\";\n  NetworkReadyState2[NetworkReadyState2[\"ENABLED\"] = 1] = \"ENABLED\";\n  return NetworkReadyState2;\n})(NetworkReadyState || {});\nfunction defineNetwork(options) {\n  let readyState = 0 /* DISABLED */;\n  const events = new Emitter();\n  const disposable = new Disposable();\n  const deriveHandlersController = (handlers) => {\n    return handlers instanceof HandlersController ? handlers : new InMemoryHandlersController(handlers || []);\n  };\n  let resolvedOptions = {\n    ...options\n  };\n  let handlersController = deriveHandlersController(resolvedOptions.handlers);\n  return {\n    get readyState() {\n      return readyState;\n    },\n    events,\n    configure(options2) {\n      invariant(\n        readyState === 0 /* DISABLED */,\n        'Failed to call \"configure()\" on the network: cannot configure an already enabled network.'\n      );\n      if (options2.handlers && !Object.is(options2.handlers, resolvedOptions.handlers)) {\n        handlersController = deriveHandlersController(options2.handlers);\n      }\n      resolvedOptions = {\n        ...resolvedOptions,\n        ...options2\n      };\n    },\n    enable() {\n      invariant(\n        readyState === 0 /* DISABLED */,\n        'Failed to call \"enable\" on the network: already enabled'\n      );\n      readyState = 1 /* ENABLED */;\n      const session = { active: true };\n      disposable[\"subscriptions\"].push(() => {\n        session.active = false;\n      });\n      const result = resolvedOptions.sources.map((source) => {\n        NetworkSource.prototype.disable.call(source);\n        source.on(\"frame\", async ({ frame }) => {\n          frame.events.on(\"*\", (event) => {\n            if (!session.active) {\n              return;\n            }\n            events.emit(event);\n          });\n          const handlers = frame.getHandlers(handlersController);\n          await frame.resolve(\n            handlers,\n            resolvedOptions.onUnhandledFrame || \"warn\",\n            resolvedOptions.context\n          );\n        });\n        return source.enable();\n      });\n      return colorlessPromiseAll(result);\n    },\n    disable() {\n      invariant(\n        readyState === 1 /* ENABLED */,\n        'Failed to call \"disable\" on the network: already disabled'\n      );\n      readyState = 0 /* DISABLED */;\n      disposable.dispose();\n      return colorlessPromiseAll(\n        resolvedOptions.sources.map((source) => source.disable())\n      );\n    },\n    use(...handlers) {\n      handlersController.use(handlers);\n    },\n    resetHandlers(...handlers) {\n      handlersController.reset(handlers);\n    },\n    restoreHandlers() {\n      handlersController.restore();\n    },\n    listHandlers() {\n      return toReadonlyArray(handlersController.currentHandlers());\n    }\n  };\n}\nexport {\n  NetworkReadyState,\n  defineNetwork\n};\n//# sourceMappingURL=define-network.mjs.map","import { invariant } from \"outvariant\";\n\n//#region src/utils/emitAsync.ts\n/**\n* Emits an event on the given emitter but executes\n* the listeners sequentially. This accounts for asynchronous\n* listeners (e.g. those having \"sleep\" and handling the request).\n*/\nasync function emitAsync(emitter, eventName, ...data) {\n\tconst listeners = emitter.listeners(eventName);\n\tif (listeners.length === 0) return;\n\tfor (const listener of listeners) await listener.apply(emitter, data);\n}\n\n//#endregion\n//#region src/utils/patchesRegistry.ts\nvar PatchesRegistry = class {\n\t#replacements = /* @__PURE__ */ new Map();\n\tapplyPatch(owner, key, getNextValue) {\n\t\tconst ownerReplacements = this.#replacements.get(owner);\n\t\tinvariant(!ownerReplacements?.has(key), `Failed to replace a global value at \"${String(key)}\": already replaced.`);\n\t\tconst match = getDeepPropertyDescriptor(owner, key);\n\t\tif (typeof match === \"undefined\") {\n\t\t\tconsole.warn(`Failed to replace a global value at \"${String(key)}\": not a global value.`);\n\t\t\treturn () => {};\n\t\t}\n\t\tif (match.descriptor.configurable) Object.defineProperty(owner, key, {\n\t\t\tvalue: getNextValue(owner[key]),\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true\n\t\t});\n\t\telse if (match.descriptor.writable) owner[key] = getNextValue(owner[key]);\n\t\telse throw new Error(`Failed to patch a non-configurable non-writable property \"${key.toString()}\"`);\n\t\tconst restorePatch = () => {\n\t\t\tconst currentReplacements = this.#replacements.get(owner);\n\t\t\tif (!currentReplacements?.has(key)) return;\n\t\t\tif (match.owner === owner)\n /**\n\t\t\t* @note Restoring non-configurable properties works as long as \"writable: true\"\n\t\t\t* and none of the other descriptor properties except for \"value\" have changed.\n\t\t\t*/\n\t\t\tObject.defineProperty(match.owner, key, match.descriptor);\n\t\t\telse\n /**\n\t\t\t* @todo Delete the proxy property set by the registry.\n\t\t\t* If the match's owner isn't the original owner, the property is likely nested in the prototype.\n\t\t\t* The registry does not meddle with those, they are left intact.\n\t\t\t*/\n\t\t\tReflect.deleteProperty(owner, key);\n\t\t\tcurrentReplacements.delete(key);\n\t\t\tif (currentReplacements.size === 0) this.#replacements.delete(owner);\n\t\t};\n\t\tif (ownerReplacements) ownerReplacements.set(key, restorePatch);\n\t\telse this.#replacements.set(owner, new Map([[key, restorePatch]]));\n\t\treturn restorePatch;\n\t}\n\trestoreAllPatches() {\n\t\tconst errors = [];\n\t\tfor (const [, ownerReplacements] of this.#replacements) for (const [, restorePatch] of ownerReplacements) try {\n\t\t\trestorePatch();\n\t\t} catch (error) {\n\t\t\tif (error instanceof Error) errors.push(error);\n\t\t\telse throw error;\n\t\t}\n\t\tif (errors.length > 0) throw new AggregateError(errors, \"FOO!\");\n\t}\n};\nconst patchesRegistry = new PatchesRegistry();\n/**\n* Returns a property descriptor for the given property on the owner.\n* Walks down the prototype chain if the property does not exist on the owner.\n* Handy for getting a global property descriptor where `globalThis` is\n* replaced with a controlled class (e.g. ServiceWorkerGlobalScope).\n*/\nfunction getDeepPropertyDescriptor(owner, key) {\n\tlet currentOwner = owner;\n\tlet descriptor;\n\twhile (currentOwner) {\n\t\tdescriptor = Object.getOwnPropertyDescriptor(currentOwner, key);\n\t\tif (descriptor) return {\n\t\t\towner: currentOwner,\n\t\t\tdescriptor\n\t\t};\n\t\tcurrentOwner = Object.getPrototypeOf(currentOwner);\n\t}\n}\n\n//#endregion\n//#region src/utils/hasConfigurableGlobal.ts\n/**\n* Returns a boolean indicating whether the given global property\n* is defined and is configurable.\n*/\nfunction hasConfigurableGlobal(propertyName) {\n\tconst match = getDeepPropertyDescriptor(globalThis, propertyName);\n\tif (typeof match === \"undefined\") return false;\n\tconst { descriptor } = match;\n\tif (typeof descriptor.get === \"function\" && typeof descriptor.get() === \"undefined\") return false;\n\tif (typeof descriptor.get === \"undefined\" && descriptor.value == null) return false;\n\tif (typeof descriptor.set === \"undefined\" && !descriptor.configurable) {\n\t\tconsole.error(`[MSW] Failed to apply interceptor: the global \\`${propertyName}\\` property is non-configurable. This is likely an issue with your environment. If you are using a framework, please open an issue about this in their repository.`);\n\t\treturn false;\n\t}\n\treturn true;\n}\n\n//#endregion\nexport { patchesRegistry as n, emitAsync as r, hasConfigurableGlobal as t };\n//# sourceMappingURL=hasConfigurableGlobal-C8zq1MCg.mjs.map","import { r as Interceptor, t as createRequestId } from \"../../createRequestId-DYCsFHOi.mjs\";\nimport { t as resolveWebSocketUrl } from \"../../resolveWebSocketUrl-C83-x9iE.mjs\";\nimport { n as patchesRegistry, r as emitAsync, t as hasConfigurableGlobal } from \"../../hasConfigurableGlobal-C8zq1MCg.mjs\";\nimport { DeferredPromise } from \"@open-draft/deferred-promise\";\nimport { invariant } from \"outvariant\";\n\n//#region src/interceptors/WebSocket/utils/bindEvent.ts\nfunction bindEvent(target, event) {\n\tObject.defineProperties(event, {\n\t\ttarget: {\n\t\t\tvalue: target,\n\t\t\tenumerable: true,\n\t\t\twritable: true\n\t\t},\n\t\tcurrentTarget: {\n\t\t\tvalue: target,\n\t\t\tenumerable: true,\n\t\t\twritable: true\n\t\t}\n\t});\n\treturn event;\n}\n\n//#endregion\n//#region src/interceptors/WebSocket/utils/events.ts\nconst kCancelable = Symbol(\"kCancelable\");\nconst kDefaultPrevented = Symbol(\"kDefaultPrevented\");\n/**\n* A `MessageEvent` superset that supports event cancellation\n* in Node.js. It's rather non-intrusive so it can be safely\n* used in the browser as well.\n*\n* @see https://github.com/nodejs/node/issues/51767\n*/\nvar CancelableMessageEvent = class extends MessageEvent {\n\tconstructor(type, init) {\n\t\tsuper(type, init);\n\t\tthis[kCancelable] = !!init.cancelable;\n\t\tthis[kDefaultPrevented] = false;\n\t}\n\tget cancelable() {\n\t\treturn this[kCancelable];\n\t}\n\tset cancelable(nextCancelable) {\n\t\tthis[kCancelable] = nextCancelable;\n\t}\n\tget defaultPrevented() {\n\t\treturn this[kDefaultPrevented];\n\t}\n\tset defaultPrevented(nextDefaultPrevented) {\n\t\tthis[kDefaultPrevented] = nextDefaultPrevented;\n\t}\n\tpreventDefault() {\n\t\tif (this.cancelable && !this[kDefaultPrevented]) this[kDefaultPrevented] = true;\n\t}\n};\nvar CloseEvent = class extends Event {\n\tconstructor(type, init = {}) {\n\t\tsuper(type, init);\n\t\tthis.code = init.code === void 0 ? 0 : init.code;\n\t\tthis.reason = init.reason === void 0 ? \"\" : init.reason;\n\t\tthis.wasClean = init.wasClean === void 0 ? false : init.wasClean;\n\t}\n};\nvar CancelableCloseEvent = class extends CloseEvent {\n\tconstructor(type, init = {}) {\n\t\tsuper(type, init);\n\t\tthis[kCancelable] = !!init.cancelable;\n\t\tthis[kDefaultPrevented] = false;\n\t}\n\tget cancelable() {\n\t\treturn this[kCancelable];\n\t}\n\tset cancelable(nextCancelable) {\n\t\tthis[kCancelable] = nextCancelable;\n\t}\n\tget defaultPrevented() {\n\t\treturn this[kDefaultPrevented];\n\t}\n\tset defaultPrevented(nextDefaultPrevented) {\n\t\tthis[kDefaultPrevented] = nextDefaultPrevented;\n\t}\n\tpreventDefault() {\n\t\tif (this.cancelable && !this[kDefaultPrevented]) this[kDefaultPrevented] = true;\n\t}\n};\n\n//#endregion\n//#region src/interceptors/WebSocket/WebSocketClientConnection.ts\nconst kEmitter$1 = Symbol(\"kEmitter\");\nconst kBoundListener$1 = Symbol(\"kBoundListener\");\nvar WebSocketClientConnectionProtocol = class {};\n/**\n* The WebSocket client instance represents an incoming\n* client connection. The user can control the connection,\n* send and receive events.\n*/\nvar WebSocketClientConnection = class {\n\tconstructor(socket, transport) {\n\t\tthis.socket = socket;\n\t\tthis.transport = transport;\n\t\tthis.id = createRequestId();\n\t\tthis.url = new URL(socket.url);\n\t\tthis[kEmitter$1] = new EventTarget();\n\t\tthis.transport.addEventListener(\"outgoing\", (event) => {\n\t\t\tconst message = bindEvent(this.socket, new CancelableMessageEvent(\"message\", {\n\t\t\t\tdata: event.data,\n\t\t\t\torigin: event.origin,\n\t\t\t\tcancelable: true\n\t\t\t}));\n\t\t\tthis[kEmitter$1].dispatchEvent(message);\n\t\t\tif (message.defaultPrevented) event.preventDefault();\n\t\t});\n\t\t/**\n\t\t* Emit the \"close\" event on the \"client\" connection\n\t\t* whenever the underlying transport is closed.\n\t\t* @note \"client.close()\" does NOT dispatch the \"close\"\n\t\t* event on the WebSocket because it uses non-configurable\n\t\t* close status code. Thus, we listen to the transport\n\t\t* instead of the WebSocket's \"close\" event.\n\t\t*/\n\t\tthis.transport.addEventListener(\"close\", (event) => {\n\t\t\tthis[kEmitter$1].dispatchEvent(bindEvent(this.socket, new CloseEvent(\"close\", event)));\n\t\t});\n\t}\n\t/**\n\t* Listen for the outgoing events from the connected WebSocket client.\n\t*/\n\taddEventListener(type, listener, options) {\n\t\tif (!Reflect.has(listener, kBoundListener$1)) {\n\t\t\tconst boundListener = listener.bind(this.socket);\n\t\t\tObject.defineProperty(listener, kBoundListener$1, {\n\t\t\t\tvalue: boundListener,\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: false\n\t\t\t});\n\t\t}\n\t\tthis[kEmitter$1].addEventListener(type, Reflect.get(listener, kBoundListener$1), options);\n\t}\n\t/**\n\t* Removes the listener for the given event.\n\t*/\n\tremoveEventListener(event, listener, options) {\n\t\tthis[kEmitter$1].removeEventListener(event, Reflect.get(listener, kBoundListener$1), options);\n\t}\n\t/**\n\t* Send data to the connected client.\n\t*/\n\tsend(data) {\n\t\tthis.transport.send(data);\n\t}\n\t/**\n\t* Close the WebSocket connection.\n\t* @param {number} code A status code (see https://www.rfc-editor.org/rfc/rfc6455#section-7.4.1).\n\t* @param {string} reason A custom connection close reason.\n\t*/\n\tclose(code, reason) {\n\t\tthis.transport.close(code, reason);\n\t}\n};\n\n//#endregion\n//#region src/interceptors/WebSocket/WebSocketOverride.ts\nconst WEBSOCKET_CLOSE_CODE_RANGE_ERROR = \"InvalidAccessError: close code out of user configurable range\";\nconst kPassthroughPromise = Symbol(\"kPassthroughPromise\");\nconst kOnSend = Symbol(\"kOnSend\");\nconst kClose = Symbol(\"kClose\");\nvar WebSocketOverride = class extends EventTarget {\n\tstatic {\n\t\tthis.CONNECTING = 0;\n\t}\n\tstatic {\n\t\tthis.OPEN = 1;\n\t}\n\tstatic {\n\t\tthis.CLOSING = 2;\n\t}\n\tstatic {\n\t\tthis.CLOSED = 3;\n\t}\n\tconstructor(url, protocols) {\n\t\tsuper();\n\t\tthis.CONNECTING = 0;\n\t\tthis.OPEN = 1;\n\t\tthis.CLOSING = 2;\n\t\tthis.CLOSED = 3;\n\t\tthis._onopen = null;\n\t\tthis._onmessage = null;\n\t\tthis._onerror = null;\n\t\tthis._onclose = null;\n\t\tthis.url = resolveWebSocketUrl(url);\n\t\tthis.protocol = \"\";\n\t\tthis.extensions = \"\";\n\t\tthis.binaryType = \"blob\";\n\t\tthis.readyState = this.CONNECTING;\n\t\tthis.bufferedAmount = 0;\n\t\tthis[kPassthroughPromise] = new DeferredPromise();\n\t\tqueueMicrotask(async () => {\n\t\t\tif (await this[kPassthroughPromise]) return;\n\t\t\tthis.protocol = typeof protocols === \"string\" ? protocols : Array.isArray(protocols) && protocols.length > 0 ? protocols[0] : \"\";\n\t\t\t/**\n\t\t\t* @note Check that nothing has prevented this connection\n\t\t\t* (e.g. called `client.close()` in the connection listener).\n\t\t\t* If the connection has been prevented, never dispatch the open event,.\n\t\t\t*/\n\t\t\tif (this.readyState === this.CONNECTING) {\n\t\t\t\tthis.readyState = this.OPEN;\n\t\t\t\tthis.dispatchEvent(bindEvent(this, new Event(\"open\")));\n\t\t\t}\n\t\t});\n\t}\n\tset onopen(listener) {\n\t\tthis.removeEventListener(\"open\", this._onopen);\n\t\tthis._onopen = listener;\n\t\tif (listener !== null) this.addEventListener(\"open\", listener);\n\t}\n\tget onopen() {\n\t\treturn this._onopen;\n\t}\n\tset onmessage(listener) {\n\t\tthis.removeEventListener(\"message\", this._onmessage);\n\t\tthis._onmessage = listener;\n\t\tif (listener !== null) this.addEventListener(\"message\", listener);\n\t}\n\tget onmessage() {\n\t\treturn this._onmessage;\n\t}\n\tset onerror(listener) {\n\t\tthis.removeEventListener(\"error\", this._onerror);\n\t\tthis._onerror = listener;\n\t\tif (listener !== null) this.addEventListener(\"error\", listener);\n\t}\n\tget onerror() {\n\t\treturn this._onerror;\n\t}\n\tset onclose(listener) {\n\t\tthis.removeEventListener(\"close\", this._onclose);\n\t\tthis._onclose = listener;\n\t\tif (listener !== null) this.addEventListener(\"close\", listener);\n\t}\n\tget onclose() {\n\t\treturn this._onclose;\n\t}\n\t/**\n\t* @see https://websockets.spec.whatwg.org/#ref-for-dom-websocket-send%E2%91%A0\n\t*/\n\tsend(data) {\n\t\tif (this.readyState === this.CONNECTING) {\n\t\t\tthis.close();\n\t\t\tthrow new DOMException(\"InvalidStateError\");\n\t\t}\n\t\tif (this.readyState === this.CLOSING || this.readyState === this.CLOSED) return;\n\t\tthis.bufferedAmount += getDataSize(data);\n\t\tqueueMicrotask(() => {\n\t\t\tthis.bufferedAmount = 0;\n\t\t\t/**\n\t\t\t* @note Notify the parent about outgoing data.\n\t\t\t* This notifies the transport and the connection\n\t\t\t* listens to the outgoing data to emit the \"message\" event.\n\t\t\t*/\n\t\t\tthis[kOnSend]?.(data);\n\t\t});\n\t}\n\tclose(code = 1e3, reason) {\n\t\tinvariant(code, WEBSOCKET_CLOSE_CODE_RANGE_ERROR);\n\t\tinvariant(code === 1e3 || code >= 3e3 && code <= 4999, WEBSOCKET_CLOSE_CODE_RANGE_ERROR);\n\t\tthis[kClose](code, reason);\n\t}\n\t[kClose](code = 1e3, reason, wasClean = true) {\n\t\t/**\n\t\t* @note Move this check here so that even internal closures,\n\t\t* like those triggered by the `server` connection, are not\n\t\t* performed twice.\n\t\t*/\n\t\tif (this.readyState === this.CLOSING || this.readyState === this.CLOSED) return;\n\t\tthis.readyState = this.CLOSING;\n\t\tqueueMicrotask(() => {\n\t\t\tthis.readyState = this.CLOSED;\n\t\t\tthis.dispatchEvent(bindEvent(this, new CloseEvent(\"close\", {\n\t\t\t\tcode,\n\t\t\t\treason,\n\t\t\t\twasClean\n\t\t\t})));\n\t\t\tthis._onopen = null;\n\t\t\tthis._onmessage = null;\n\t\t\tthis._onerror = null;\n\t\t\tthis._onclose = null;\n\t\t});\n\t}\n\taddEventListener(type, listener, options) {\n\t\treturn super.addEventListener(type, listener, options);\n\t}\n\tremoveEventListener(type, callback, options) {\n\t\treturn super.removeEventListener(type, callback, options);\n\t}\n};\nfunction getDataSize(data) {\n\tif (typeof data === \"string\") return data.length;\n\tif (data instanceof Blob) return data.size;\n\treturn data.byteLength;\n}\n\n//#endregion\n//#region src/interceptors/WebSocket/WebSocketServerConnection.ts\nconst kEmitter = Symbol(\"kEmitter\");\nconst kBoundListener = Symbol(\"kBoundListener\");\nconst kSend = Symbol(\"kSend\");\nvar WebSocketServerConnectionProtocol = class {};\n/**\n* The WebSocket server instance represents the actual production\n* WebSocket server connection. It's idle by default but you can\n* establish it by calling `server.connect()`.\n*/\nvar WebSocketServerConnection = class {\n\tconstructor(client, transport, createConnection) {\n\t\tthis.client = client;\n\t\tthis.transport = transport;\n\t\tthis.createConnection = createConnection;\n\t\tthis[kEmitter] = new EventTarget();\n\t\tthis.mockCloseController = new AbortController();\n\t\tthis.realCloseController = new AbortController();\n\t\tthis.transport.addEventListener(\"outgoing\", (event) => {\n\t\t\tif (typeof this.realWebSocket === \"undefined\") return;\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tif (!event.defaultPrevented)\n /**\n\t\t\t\t* @note Use the internal send mechanism so consumers can tell\n\t\t\t\t* apart direct user calls to `server.send()` and internal calls.\n\t\t\t\t* E.g. MSW has to ignore this internal call to log out messages correctly.\n\t\t\t\t*/\n\t\t\t\tthis[kSend](event.data);\n\t\t\t});\n\t\t});\n\t\tthis.transport.addEventListener(\"incoming\", this.handleIncomingMessage.bind(this));\n\t}\n\t/**\n\t* The `WebSocket` instance connected to the original server.\n\t* Accessing this before calling `server.connect()` will throw.\n\t*/\n\tget socket() {\n\t\tinvariant(this.realWebSocket, \"Cannot access \\\"socket\\\" on the original WebSocket server object: the connection is not open. Did you forget to call `server.connect()`?\");\n\t\treturn this.realWebSocket;\n\t}\n\t/**\n\t* Open connection to the original WebSocket server.\n\t*/\n\tconnect() {\n\t\tinvariant(!this.realWebSocket || this.realWebSocket.readyState !== WebSocket.OPEN, \"Failed to call \\\"connect()\\\" on the original WebSocket instance: the connection already open\");\n\t\tconst realWebSocket = this.createConnection();\n\t\trealWebSocket.binaryType = this.client.binaryType;\n\t\trealWebSocket.addEventListener(\"open\", (event) => {\n\t\t\tthis[kEmitter].dispatchEvent(bindEvent(this.realWebSocket, new Event(\"open\", event)));\n\t\t}, { once: true });\n\t\trealWebSocket.addEventListener(\"message\", (event) => {\n\t\t\tthis.transport.dispatchEvent(bindEvent(this.realWebSocket, new MessageEvent(\"incoming\", {\n\t\t\t\tdata: event.data,\n\t\t\t\torigin: event.origin\n\t\t\t})));\n\t\t});\n\t\tthis.client.addEventListener(\"close\", (event) => {\n\t\t\tthis.handleMockClose(event);\n\t\t}, { signal: this.mockCloseController.signal });\n\t\trealWebSocket.addEventListener(\"close\", (event) => {\n\t\t\tthis.handleRealClose(event);\n\t\t}, { signal: this.realCloseController.signal });\n\t\trealWebSocket.addEventListener(\"error\", () => {\n\t\t\tconst errorEvent = bindEvent(realWebSocket, new Event(\"error\", { cancelable: true }));\n\t\t\tthis[kEmitter].dispatchEvent(errorEvent);\n\t\t\tif (!errorEvent.defaultPrevented) this.client.dispatchEvent(bindEvent(this.client, new Event(\"error\")));\n\t\t});\n\t\tthis.realWebSocket = realWebSocket;\n\t}\n\t/**\n\t* Listen for the incoming events from the original WebSocket server.\n\t*/\n\taddEventListener(event, listener, options) {\n\t\tif (!Reflect.has(listener, kBoundListener)) {\n\t\t\tconst boundListener = listener.bind(this.client);\n\t\t\tObject.defineProperty(listener, kBoundListener, {\n\t\t\t\tvalue: boundListener,\n\t\t\t\tenumerable: false\n\t\t\t});\n\t\t}\n\t\tthis[kEmitter].addEventListener(event, Reflect.get(listener, kBoundListener), options);\n\t}\n\t/**\n\t* Remove the listener for the given event.\n\t*/\n\tremoveEventListener(event, listener, options) {\n\t\tthis[kEmitter].removeEventListener(event, Reflect.get(listener, kBoundListener), options);\n\t}\n\t/**\n\t* Send data to the original WebSocket server.\n\t* @example\n\t* server.send('hello')\n\t* server.send(new Blob(['hello']))\n\t* server.send(new TextEncoder().encode('hello'))\n\t*/\n\tsend(data) {\n\t\tthis[kSend](data);\n\t}\n\t[kSend](data) {\n\t\tconst { realWebSocket } = this;\n\t\tinvariant(realWebSocket, \"Failed to call \\\"server.send()\\\" for \\\"%s\\\": the connection is not open. Did you forget to call \\\"server.connect()\\\"?\", this.client.url);\n\t\tif (realWebSocket.readyState === WebSocket.CLOSING || realWebSocket.readyState === WebSocket.CLOSED) return;\n\t\tif (realWebSocket.readyState === WebSocket.CONNECTING) {\n\t\t\trealWebSocket.addEventListener(\"open\", () => {\n\t\t\t\trealWebSocket.send(data);\n\t\t\t}, { once: true });\n\t\t\treturn;\n\t\t}\n\t\trealWebSocket.send(data);\n\t}\n\t/**\n\t* Close the actual server connection.\n\t*/\n\tclose() {\n\t\tconst { realWebSocket } = this;\n\t\tinvariant(realWebSocket, \"Failed to close server connection for \\\"%s\\\": the connection is not open. Did you forget to call \\\"server.connect()\\\"?\", this.client.url);\n\t\tthis.realCloseController.abort();\n\t\tif (realWebSocket.readyState === WebSocket.CLOSING || realWebSocket.readyState === WebSocket.CLOSED) return;\n\t\trealWebSocket.close();\n\t\tqueueMicrotask(() => {\n\t\t\tthis[kEmitter].dispatchEvent(bindEvent(this.realWebSocket, new CancelableCloseEvent(\"close\", {\n\t\t\t\tcode: 1e3,\n\t\t\t\tcancelable: true\n\t\t\t})));\n\t\t});\n\t}\n\thandleIncomingMessage(event) {\n\t\tconst messageEvent = bindEvent(event.target, new CancelableMessageEvent(\"message\", {\n\t\t\tdata: event.data,\n\t\t\torigin: event.origin,\n\t\t\tcancelable: true\n\t\t}));\n\t\t/**\n\t\t* @note Emit \"message\" event on the server connection\n\t\t* instance to let the interceptor know about these\n\t\t* incoming events from the original server. In that listener,\n\t\t* the interceptor can modify or skip the event forwarding\n\t\t* to the mock WebSocket instance.\n\t\t*/\n\t\tthis[kEmitter].dispatchEvent(messageEvent);\n\t\t/**\n\t\t* @note Forward the incoming server events to the client.\n\t\t* Preventing the default on the message event stops this.\n\t\t*/\n\t\tif (!messageEvent.defaultPrevented) this.client.dispatchEvent(bindEvent(\n\t\t\t/**\n\t\t\t* @note Bind the forwarded original server events\n\t\t\t* to the mock WebSocket instance so it would\n\t\t\t* dispatch them straight away.\n\t\t\t*/\n\t\t\tthis.client,\n\t\t\tnew MessageEvent(\"message\", {\n\t\t\t\tdata: event.data,\n\t\t\t\torigin: event.origin\n\t\t\t})\n\t\t));\n\t}\n\thandleMockClose(_event) {\n\t\tif (this.realWebSocket) this.realWebSocket.close();\n\t}\n\thandleRealClose(event) {\n\t\tthis.mockCloseController.abort();\n\t\tconst closeEvent = bindEvent(this.realWebSocket, new CancelableCloseEvent(\"close\", {\n\t\t\tcode: event.code,\n\t\t\treason: event.reason,\n\t\t\twasClean: event.wasClean,\n\t\t\tcancelable: true\n\t\t}));\n\t\tthis[kEmitter].dispatchEvent(closeEvent);\n\t\tif (!closeEvent.defaultPrevented) this.client[kClose](event.code, event.reason);\n\t}\n};\n\n//#endregion\n//#region src/interceptors/WebSocket/WebSocketClassTransport.ts\n/**\n* Abstraction over the given mock `WebSocket` instance that allows\n* for controlling that instance (e.g. sending and receiving messages).\n*/\nvar WebSocketClassTransport = class extends EventTarget {\n\tconstructor(socket) {\n\t\tsuper();\n\t\tthis.socket = socket;\n\t\tthis.socket.addEventListener(\"close\", (event) => {\n\t\t\tthis.dispatchEvent(bindEvent(this.socket, new CloseEvent(\"close\", event)));\n\t\t});\n\t\t/**\n\t\t* Emit the \"outgoing\" event on the transport\n\t\t* whenever the WebSocket client sends data (\"ws.send()\").\n\t\t*/\n\t\tthis.socket[kOnSend] = (data) => {\n\t\t\tthis.dispatchEvent(bindEvent(this.socket, new CancelableMessageEvent(\"outgoing\", {\n\t\t\t\tdata,\n\t\t\t\torigin: this.socket.url,\n\t\t\t\tcancelable: true\n\t\t\t})));\n\t\t};\n\t}\n\taddEventListener(type, callback, options) {\n\t\treturn super.addEventListener(type, callback, options);\n\t}\n\tdispatchEvent(event) {\n\t\treturn super.dispatchEvent(event);\n\t}\n\tsend(data) {\n\t\tqueueMicrotask(() => {\n\t\t\tif (this.socket.readyState === this.socket.CLOSING || this.socket.readyState === this.socket.CLOSED) return;\n\t\t\tconst dispatchEvent = () => {\n\t\t\t\tthis.socket.dispatchEvent(bindEvent(\n\t\t\t\t\t/**\n\t\t\t\t\t* @note Setting this event's \"target\" to the\n\t\t\t\t\t* WebSocket override instance is important.\n\t\t\t\t\t* This way it can tell apart original incoming events\n\t\t\t\t\t* (must be forwarded to the transport) from the\n\t\t\t\t\t* mocked message events like the one below\n\t\t\t\t\t* (must be dispatched on the client instance).\n\t\t\t\t\t*/\n\t\t\t\t\tthis.socket,\n\t\t\t\t\tnew MessageEvent(\"message\", {\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\torigin: this.socket.url\n\t\t\t\t\t})\n\t\t\t\t));\n\t\t\t};\n\t\t\tif (this.socket.readyState === this.socket.CONNECTING) this.socket.addEventListener(\"open\", () => {\n\t\t\t\tdispatchEvent();\n\t\t\t}, { once: true });\n\t\t\telse dispatchEvent();\n\t\t});\n\t}\n\tclose(code, reason) {\n\t\t/**\n\t\t* @note Call the internal close method directly\n\t\t* to allow closing the connection with the status codes\n\t\t* that are non-configurable by the user (> 1000 <= 1015).\n\t\t*/\n\t\tthis.socket[kClose](code, reason);\n\t}\n};\n\n//#endregion\n//#region src/interceptors/WebSocket/index.ts\n/**\n* Intercept the outgoing WebSocket connections created using\n* the global `WebSocket` class.\n*/\nvar WebSocketInterceptor = class WebSocketInterceptor extends Interceptor {\n\tstatic {\n\t\tthis.symbol = Symbol.for(\"websocket-interceptor\");\n\t}\n\tconstructor() {\n\t\tsuper(WebSocketInterceptor.symbol);\n\t}\n\tcheckEnvironment() {\n\t\treturn hasConfigurableGlobal(\"WebSocket\");\n\t}\n\tsetup() {\n\t\tconst logger = this.logger.extend(\"setup\");\n\t\tconst WebSocketProxy = new Proxy(globalThis.WebSocket, { construct: (target, args, newTarget) => {\n\t\t\tconst [url, protocols] = args;\n\t\t\tconst createConnection = () => {\n\t\t\t\treturn Reflect.construct(target, args, newTarget);\n\t\t\t};\n\t\t\tconst socket = new WebSocketOverride(url, protocols);\n\t\t\tconst transport = new WebSocketClassTransport(socket);\n\t\t\tqueueMicrotask(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst server = new WebSocketServerConnection(socket, transport, createConnection);\n\t\t\t\t\tconst hasConnectionListeners = this.emitter.listenerCount(\"connection\") > 0;\n\t\t\t\t\tawait emitAsync(this.emitter, \"connection\", {\n\t\t\t\t\t\tclient: new WebSocketClientConnection(socket, transport),\n\t\t\t\t\t\tserver,\n\t\t\t\t\t\tinfo: { protocols }\n\t\t\t\t\t});\n\t\t\t\t\tif (hasConnectionListeners) socket[kPassthroughPromise].resolve(false);\n\t\t\t\t\telse {\n\t\t\t\t\t\tsocket[kPassthroughPromise].resolve(true);\n\t\t\t\t\t\tserver.connect();\n\t\t\t\t\t\tserver.addEventListener(\"open\", () => {\n\t\t\t\t\t\t\tsocket.dispatchEvent(bindEvent(socket, new Event(\"open\")));\n\t\t\t\t\t\t\tif (server[\"realWebSocket\"]) socket.protocol = server[\"realWebSocket\"].protocol;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t/**\n\t\t\t\t\t* @note Translate unhandled exceptions during the connection\n\t\t\t\t\t* handling (i.e. interceptor exceptions) as WebSocket connection\n\t\t\t\t\t* closures with error. This prevents from the exceptions occurring\n\t\t\t\t\t* in `queueMicrotask` from being process-wide and uncatchable.\n\t\t\t\t\t*/\n\t\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t\tsocket.dispatchEvent(new Event(\"error\"));\n\t\t\t\t\t\tif (socket.readyState !== WebSocket.CLOSING && socket.readyState !== WebSocket.CLOSED) socket[kClose](1011, error.message, false);\n\t\t\t\t\t\tconsole.error(error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn socket;\n\t\t} });\n\t\tlogger.info(\"patching global WebSocket...\");\n\t\tthis.subscriptions.push(patchesRegistry.applyPatch(globalThis, \"WebSocket\", () => WebSocketProxy));\n\t\tlogger.info(\"global WebSocket patched!\", globalThis.WebSocket.name);\n\t}\n};\n\n//#endregion\nexport { CancelableCloseEvent, CancelableMessageEvent, CloseEvent, WebSocketClientConnection, WebSocketClientConnectionProtocol, WebSocketInterceptor, WebSocketServerConnection, WebSocketServerConnectionProtocol };\n//# sourceMappingURL=index.mjs.map","import { TypedEvent } from \"rettime\";\nimport {} from \"@mswjs/interceptors/WebSocket\";\nimport {\n  kConnect,\n  kAutoConnect\n} from '../../handlers/WebSocketHandler.mjs';\nimport {\n  NetworkFrame\n} from './network-frame.mjs';\nimport {\n  executeUnhandledFrameHandle\n} from '../on-unhandled-frame.mjs';\nimport { devUtils } from '../../utils/internal/devUtils.mjs';\nimport {} from '../handlers-controller.mjs';\nclass WebSocketConnectionEvent extends TypedEvent {\n  url;\n  protocols;\n  constructor(type, data) {\n    super(...[type, {}]);\n    this.url = data.url;\n    this.protocols = data.protocols;\n  }\n}\nclass UnhandledWebSocketExceptionEvent extends TypedEvent {\n  url;\n  protocols;\n  error;\n  constructor(type, data) {\n    super(...[type, {}]);\n    this.url = data.url;\n    this.protocols = data.protocols;\n    this.error = data.error;\n  }\n}\nclass WebSocketNetworkFrame extends NetworkFrame {\n  constructor(options) {\n    super(\"ws\", {\n      connection: options.connection\n    });\n  }\n  getHandlers(controller) {\n    return controller.getHandlersByKind(\"websocket\");\n  }\n  async resolve(handlers, onUnhandledFrame, resolutionContext) {\n    const { connection } = this.data;\n    this.events.emit(\n      new WebSocketConnectionEvent(\"connection\", {\n        url: connection.client.url,\n        protocols: connection.info.protocols\n      })\n    );\n    if (handlers.length === 0) {\n      await executeUnhandledFrameHandle(this, onUnhandledFrame).then(\n        () => this.passthrough(),\n        (error) => this.errorWith(error)\n      );\n      return false;\n    }\n    let hasMatchingHandlers = false;\n    for (const handler of handlers) {\n      const handlerConnection = await handler.run(connection, {\n        baseUrl: resolutionContext?.baseUrl?.toString(),\n        /**\n         * @note Do not emit the \"connection\" event when running the handler.\n         * Use the run only to get the resolved connection object.\n         */\n        [kAutoConnect]: false\n      });\n      if (!handlerConnection) {\n        continue;\n      }\n      hasMatchingHandlers = true;\n      const removeLogger = !resolutionContext?.quiet ? handler.log(connection) : void 0;\n      try {\n        if (!handler[kConnect](handlerConnection)) {\n          removeLogger?.();\n        }\n      } catch (error) {\n        if (!this.events.emit(\n          new UnhandledWebSocketExceptionEvent(\"unhandledException\", {\n            error,\n            url: connection.client.url,\n            protocols: connection.info.protocols\n          })\n        )) {\n          console.error(error);\n          devUtils.error(\n            'Encountered an unhandled exception during the handler lookup for \"%s\". Please see the original error above.',\n            connection.client.url\n          );\n        }\n        throw error;\n      }\n    }\n    if (!hasMatchingHandlers) {\n      await executeUnhandledFrameHandle(this, onUnhandledFrame).then(\n        () => this.passthrough(),\n        (error) => this.errorWith(error)\n      );\n      return false;\n    }\n    return true;\n  }\n  async getUnhandledMessage() {\n    const { connection } = this.data;\n    const details = `\n\n  \\u2022 ${connection.client.url}\n\n`;\n    return `intercepted a WebSocket connection without a matching event handler:${details}If you still wish to intercept this unhandled connection, please create an event handler for it.\nRead more: https://mswjs.io/docs/websocket`;\n  }\n}\nexport {\n  WebSocketNetworkFrame\n};\n//# sourceMappingURL=websocket-frame.mjs.map","import { BatchInterceptor } from \"@mswjs/interceptors\";\nimport { NetworkSource } from './network-source.mjs';\nimport { InternalError } from '../../utils/internal/devUtils.mjs';\nimport { HttpNetworkFrame, ResponseEvent } from '../frames/http-frame.mjs';\nimport { WebSocketNetworkFrame } from '../frames/websocket-frame.mjs';\nimport { deleteRequestPassthroughHeader } from '../request-utils.mjs';\nclass InterceptorSource extends NetworkSource {\n  #interceptor;\n  #frames;\n  constructor(options) {\n    super();\n    this.#interceptor = new BatchInterceptor({\n      name: \"interceptor-source\",\n      interceptors: options.interceptors\n    });\n    this.#frames = /* @__PURE__ */ new Map();\n  }\n  enable() {\n    this.#interceptor.apply();\n    this.#interceptor.on(\"request\", this.#handleRequest.bind(this)).on(\"response\", this.#handleResponse.bind(this)).on(\"connection\", this.#handleWebSocketConnection.bind(this));\n  }\n  disable() {\n    super.disable();\n    this.#interceptor.dispose();\n    this.#frames.clear();\n  }\n  async #handleRequest({\n    requestId,\n    request,\n    controller\n  }) {\n    const httpFrame = new InterceptorHttpNetworkFrame({\n      id: requestId,\n      request,\n      controller\n    });\n    this.#frames.set(requestId, httpFrame);\n    await this.queue(httpFrame);\n  }\n  async #handleResponse({\n    requestId,\n    request,\n    response,\n    isMockedResponse\n  }) {\n    const httpFrame = this.#frames.get(requestId);\n    this.#frames.delete(requestId);\n    if (httpFrame == null) {\n      return;\n    }\n    queueMicrotask(() => {\n      try {\n        httpFrame.events.emit(\n          new ResponseEvent(\n            isMockedResponse ? \"response:mocked\" : \"response:bypass\",\n            {\n              requestId,\n              request,\n              response\n            }\n          )\n        );\n      } finally {\n        httpFrame.events.removeAllListeners();\n      }\n    });\n  }\n  async #handleWebSocketConnection(connection) {\n    await this.queue(\n      new InterceptorWebSocketNetworkFrame({\n        connection\n      })\n    );\n  }\n}\nclass InterceptorHttpNetworkFrame extends HttpNetworkFrame {\n  #controller;\n  constructor(options) {\n    super({\n      id: options.id,\n      request: options.request\n    });\n    this.#controller = options.controller;\n  }\n  passthrough() {\n    deleteRequestPassthroughHeader(this.data.request);\n  }\n  respondWith(response) {\n    if (response) {\n      this.#controller.respondWith(response);\n    }\n  }\n  errorWith(reason) {\n    if (reason instanceof Response) {\n      return this.respondWith(reason);\n    }\n    if (reason instanceof InternalError) {\n      this.#controller.errorWith(reason);\n    }\n    throw reason;\n  }\n}\nclass InterceptorWebSocketNetworkFrame extends WebSocketNetworkFrame {\n  constructor(args) {\n    super({ connection: args.connection });\n    args.connection.client.addEventListener(\n      \"close\",\n      () => {\n        this.events.removeAllListeners();\n      },\n      {\n        once: true\n      }\n    );\n  }\n  errorWith(reason) {\n    if (reason instanceof Error) {\n      const { client } = this.data.connection;\n      const errorEvent = new Event(\"error\");\n      Object.defineProperty(errorEvent, \"cause\", {\n        enumerable: true,\n        configurable: false,\n        value: reason\n      });\n      client.socket.dispatchEvent(errorEvent);\n    }\n  }\n  passthrough() {\n    this.data.connection.server.connect();\n  }\n}\nexport {\n  InterceptorSource\n};\n//# sourceMappingURL=interceptor-source.mjs.map","import { invariant } from \"outvariant\";\nimport {} from '../utils/request/onUnhandledRequest.mjs';\nimport {\n  executeUnhandledFrameHandle\n} from './on-unhandled-frame.mjs';\nimport { HttpNetworkFrame } from './frames/http-frame.mjs';\nimport { WebSocketNetworkFrame } from './frames/websocket-frame.mjs';\nfunction fromLegacyOnUnhandledRequest(getLegacyValue) {\n  return ({ frame, defaults }) => {\n    const legacyOnUnhandledRequestStrategy = getLegacyValue();\n    if (legacyOnUnhandledRequestStrategy == null) {\n      return;\n    }\n    if (typeof legacyOnUnhandledRequestStrategy === \"function\") {\n      const request = frame instanceof HttpNetworkFrame ? frame.data.request : frame instanceof WebSocketNetworkFrame ? new Request(frame.data.connection.client.url, {\n        headers: {\n          connection: \"upgrade\",\n          upgrade: \"websocket\"\n        }\n      }) : null;\n      invariant(\n        request != null,\n        'Failed to coerce a network frame to a legacy `onUnhandledRequest` strategy: unknown frame protocol \"%s\"',\n        frame.protocol\n      );\n      return legacyOnUnhandledRequestStrategy(request, {\n        warning: defaults.warn,\n        error: defaults.error\n      });\n    }\n    return executeUnhandledFrameHandle(frame, legacyOnUnhandledRequestStrategy);\n  };\n}\nexport {\n  fromLegacyOnUnhandledRequest\n};\n//# sourceMappingURL=compat.mjs.map","function toResponseInit(response) {\n  return {\n    status: response.status,\n    statusText: response.statusText,\n    headers: Object.fromEntries(response.headers.entries())\n  };\n}\nexport {\n  toResponseInit\n};\n//# sourceMappingURL=toResponseInit.mjs.map","// node_modules/.pnpm/outvariant@1.4.3/node_modules/outvariant/lib/index.mjs\nvar POSITIONALS_EXP = /(%?)(%([sdijo]))/g;\nfunction serializePositional(positional, flag) {\n  switch (flag) {\n    case \"s\":\n      return positional;\n    case \"d\":\n    case \"i\":\n      return Number(positional);\n    case \"j\":\n      return JSON.stringify(positional);\n    case \"o\": {\n      if (typeof positional === \"string\") {\n        return positional;\n      }\n      const json = JSON.stringify(positional);\n      if (json === \"{}\" || json === \"[]\" || /^\\[object .+?\\]$/.test(json)) {\n        return positional;\n      }\n      return json;\n    }\n  }\n}\nfunction format(message, ...positionals) {\n  if (positionals.length === 0) {\n    return message;\n  }\n  let positionalIndex = 0;\n  let formattedMessage = message.replace(\n    POSITIONALS_EXP,\n    (match, isEscaped, _, flag) => {\n      const positional = positionals[positionalIndex];\n      const value = serializePositional(positional, flag);\n      if (!isEscaped) {\n        positionalIndex++;\n        return value;\n      }\n      return match;\n    }\n  );\n  if (positionalIndex < positionals.length) {\n    formattedMessage += ` ${positionals.slice(positionalIndex).join(\" \")}`;\n  }\n  formattedMessage = formattedMessage.replace(/%{2,2}/g, \"%\");\n  return formattedMessage;\n}\nvar STACK_FRAMES_TO_IGNORE = 2;\nfunction cleanErrorStack(error2) {\n  if (!error2.stack) {\n    return;\n  }\n  const nextStack = error2.stack.split(\"\\n\");\n  nextStack.splice(1, STACK_FRAMES_TO_IGNORE);\n  error2.stack = nextStack.join(\"\\n\");\n}\nvar InvariantError = class extends Error {\n  constructor(message, ...positionals) {\n    super(message);\n    this.message = message;\n    this.name = \"Invariant Violation\";\n    this.message = format(message, ...positionals);\n    cleanErrorStack(this);\n  }\n};\nvar invariant = (predicate, message, ...positionals) => {\n  if (!predicate) {\n    throw new InvariantError(message, ...positionals);\n  }\n};\ninvariant.as = (ErrorConstructor, predicate, message, ...positionals) => {\n  if (!predicate) {\n    const formatMessage = positionals.length === 0 ? message : format(message, ...positionals);\n    let error2;\n    try {\n      error2 = Reflect.construct(ErrorConstructor, [\n        formatMessage\n      ]);\n    } catch (err) {\n      error2 = ErrorConstructor(formatMessage);\n    }\n    throw error2;\n  }\n};\n\n// node_modules/.pnpm/is-node-process@1.2.0/node_modules/is-node-process/lib/index.mjs\nfunction isNodeProcess() {\n  if (typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\") {\n    return true;\n  }\n  if (typeof process !== \"undefined\") {\n    const type = process.type;\n    if (type === \"renderer\" || type === \"worker\") {\n      return false;\n    }\n    return !!(process.versions && process.versions.node);\n  }\n  return false;\n}\n\n// node_modules/.pnpm/@open-draft+logger@0.3.0/node_modules/@open-draft/logger/lib/index.mjs\nvar __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar colors_exports = {};\n__export(colors_exports, {\n  blue: () => blue,\n  gray: () => gray,\n  green: () => green,\n  red: () => red,\n  yellow: () => yellow\n});\nfunction yellow(text) {\n  return `\\x1B[33m${text}\\x1B[0m`;\n}\nfunction blue(text) {\n  return `\\x1B[34m${text}\\x1B[0m`;\n}\nfunction gray(text) {\n  return `\\x1B[90m${text}\\x1B[0m`;\n}\nfunction red(text) {\n  return `\\x1B[31m${text}\\x1B[0m`;\n}\nfunction green(text) {\n  return `\\x1B[32m${text}\\x1B[0m`;\n}\nvar IS_NODE = isNodeProcess();\nvar Logger = class {\n  constructor(name) {\n    this.name = name;\n    this.prefix = `[${this.name}]`;\n    const LOGGER_NAME = getVariable(\"DEBUG\");\n    const LOGGER_LEVEL = getVariable(\"LOG_LEVEL\");\n    const isLoggingEnabled = LOGGER_NAME === \"1\" || LOGGER_NAME === \"true\" || typeof LOGGER_NAME !== \"undefined\" && this.name.startsWith(LOGGER_NAME);\n    if (isLoggingEnabled) {\n      this.debug = isDefinedAndNotEquals(LOGGER_LEVEL, \"debug\") ? noop : this.debug;\n      this.info = isDefinedAndNotEquals(LOGGER_LEVEL, \"info\") ? noop : this.info;\n      this.success = isDefinedAndNotEquals(LOGGER_LEVEL, \"success\") ? noop : this.success;\n      this.warning = isDefinedAndNotEquals(LOGGER_LEVEL, \"warning\") ? noop : this.warning;\n      this.error = isDefinedAndNotEquals(LOGGER_LEVEL, \"error\") ? noop : this.error;\n    } else {\n      this.info = noop;\n      this.success = noop;\n      this.warning = noop;\n      this.error = noop;\n      this.only = noop;\n    }\n  }\n  prefix;\n  extend(domain) {\n    return new Logger(`${this.name}:${domain}`);\n  }\n  /**\n   * Print a debug message.\n   * @example\n   * logger.debug('no duplicates found, creating a document...')\n   */\n  debug(message, ...positionals) {\n    this.logEntry({\n      level: \"debug\",\n      message: gray(message),\n      positionals,\n      prefix: this.prefix,\n      colors: {\n        prefix: \"gray\"\n      }\n    });\n  }\n  /**\n   * Print an info message.\n   * @example\n   * logger.info('start parsing...')\n   */\n  info(message, ...positionals) {\n    this.logEntry({\n      level: \"info\",\n      message,\n      positionals,\n      prefix: this.prefix,\n      colors: {\n        prefix: \"blue\"\n      }\n    });\n    const performance2 = new PerformanceEntry();\n    return (message2, ...positionals2) => {\n      performance2.measure();\n      this.logEntry({\n        level: \"info\",\n        message: `${message2} ${gray(`${performance2.deltaTime}ms`)}`,\n        positionals: positionals2,\n        prefix: this.prefix,\n        colors: {\n          prefix: \"blue\"\n        }\n      });\n    };\n  }\n  /**\n   * Print a success message.\n   * @example\n   * logger.success('successfully created document')\n   */\n  success(message, ...positionals) {\n    this.logEntry({\n      level: \"info\",\n      message,\n      positionals,\n      prefix: `\\u2714 ${this.prefix}`,\n      colors: {\n        timestamp: \"green\",\n        prefix: \"green\"\n      }\n    });\n  }\n  /**\n   * Print a warning.\n   * @example\n   * logger.warning('found legacy document format')\n   */\n  warning(message, ...positionals) {\n    this.logEntry({\n      level: \"warning\",\n      message,\n      positionals,\n      prefix: `\\u26A0 ${this.prefix}`,\n      colors: {\n        timestamp: \"yellow\",\n        prefix: \"yellow\"\n      }\n    });\n  }\n  /**\n   * Print an error message.\n   * @example\n   * logger.error('something went wrong')\n   */\n  error(message, ...positionals) {\n    this.logEntry({\n      level: \"error\",\n      message,\n      positionals,\n      prefix: `\\u2716 ${this.prefix}`,\n      colors: {\n        timestamp: \"red\",\n        prefix: \"red\"\n      }\n    });\n  }\n  /**\n   * Execute the given callback only when the logging is enabled.\n   * This is skipped in its entirety and has no runtime cost otherwise.\n   * This executes regardless of the log level.\n   * @example\n   * logger.only(() => {\n   *   logger.info('additional info')\n   * })\n   */\n  only(callback) {\n    callback();\n  }\n  createEntry(level, message) {\n    return {\n      timestamp: /* @__PURE__ */ new Date(),\n      level,\n      message\n    };\n  }\n  logEntry(args) {\n    const {\n      level,\n      message,\n      prefix,\n      colors: customColors,\n      positionals = []\n    } = args;\n    const entry = this.createEntry(level, message);\n    const timestampColor = customColors?.timestamp || \"gray\";\n    const prefixColor = customColors?.prefix || \"gray\";\n    const colorize = {\n      timestamp: colors_exports[timestampColor],\n      prefix: colors_exports[prefixColor]\n    };\n    const write = this.getWriter(level);\n    write(\n      [colorize.timestamp(this.formatTimestamp(entry.timestamp))].concat(prefix != null ? colorize.prefix(prefix) : []).concat(serializeInput(message)).join(\" \"),\n      ...positionals.map(serializeInput)\n    );\n  }\n  formatTimestamp(timestamp) {\n    return `${timestamp.toLocaleTimeString(\n      \"en-GB\"\n    )}:${timestamp.getMilliseconds()}`;\n  }\n  getWriter(level) {\n    switch (level) {\n      case \"debug\":\n      case \"success\":\n      case \"info\": {\n        return log;\n      }\n      case \"warning\": {\n        return warn;\n      }\n      case \"error\": {\n        return error;\n      }\n    }\n  }\n};\nvar PerformanceEntry = class {\n  startTime;\n  endTime;\n  deltaTime;\n  constructor() {\n    this.startTime = performance.now();\n  }\n  measure() {\n    this.endTime = performance.now();\n    const deltaTime = this.endTime - this.startTime;\n    this.deltaTime = deltaTime.toFixed(2);\n  }\n};\nvar noop = () => void 0;\nfunction log(message, ...positionals) {\n  if (IS_NODE) {\n    process.stdout.write(format(message, ...positionals) + \"\\n\");\n    return;\n  }\n  console.log(message, ...positionals);\n}\nfunction warn(message, ...positionals) {\n  if (IS_NODE) {\n    process.stderr.write(format(message, ...positionals) + \"\\n\");\n    return;\n  }\n  console.warn(message, ...positionals);\n}\nfunction error(message, ...positionals) {\n  if (IS_NODE) {\n    process.stderr.write(format(message, ...positionals) + \"\\n\");\n    return;\n  }\n  console.error(message, ...positionals);\n}\nfunction getVariable(variableName) {\n  if (IS_NODE) {\n    return process.env[variableName];\n  }\n  return globalThis[variableName]?.toString();\n}\nfunction isDefinedAndNotEquals(value, expected) {\n  return value !== void 0 && value !== expected;\n}\nfunction serializeInput(message) {\n  if (typeof message === \"undefined\") {\n    return \"undefined\";\n  }\n  if (message === null) {\n    return \"null\";\n  }\n  if (typeof message === \"string\") {\n    return message;\n  }\n  if (typeof message === \"object\") {\n    return JSON.stringify(message);\n  }\n  return message.toString();\n}\n\n// node_modules/.pnpm/strict-event-emitter@0.5.1/node_modules/strict-event-emitter/lib/index.mjs\nvar MemoryLeakError = class extends Error {\n  constructor(emitter, type, count) {\n    super(\n      `Possible EventEmitter memory leak detected. ${count} ${type.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`\n    );\n    this.emitter = emitter;\n    this.type = type;\n    this.count = count;\n    this.name = \"MaxListenersExceededWarning\";\n  }\n};\nvar _Emitter = class {\n  static listenerCount(emitter, eventName) {\n    return emitter.listenerCount(eventName);\n  }\n  constructor() {\n    this.events = /* @__PURE__ */ new Map();\n    this.maxListeners = _Emitter.defaultMaxListeners;\n    this.hasWarnedAboutPotentialMemoryLeak = false;\n  }\n  _emitInternalEvent(internalEventName, eventName, listener) {\n    this.emit(\n      internalEventName,\n      ...[eventName, listener]\n    );\n  }\n  _getListeners(eventName) {\n    return Array.prototype.concat.apply([], this.events.get(eventName)) || [];\n  }\n  _removeListener(listeners, listener) {\n    const index = listeners.indexOf(listener);\n    if (index > -1) {\n      listeners.splice(index, 1);\n    }\n    return [];\n  }\n  _wrapOnceListener(eventName, listener) {\n    const onceListener = (...data) => {\n      this.removeListener(eventName, onceListener);\n      return listener.apply(this, data);\n    };\n    Object.defineProperty(onceListener, \"name\", { value: listener.name });\n    return onceListener;\n  }\n  setMaxListeners(maxListeners) {\n    this.maxListeners = maxListeners;\n    return this;\n  }\n  /**\n   * Returns the current max listener value for the `Emitter` which is\n   * either set by `emitter.setMaxListeners(n)` or defaults to\n   * `Emitter.defaultMaxListeners`.\n   */\n  getMaxListeners() {\n    return this.maxListeners;\n  }\n  /**\n   * Returns an array listing the events for which the emitter has registered listeners.\n   * The values in the array will be strings or Symbols.\n   */\n  eventNames() {\n    return Array.from(this.events.keys());\n  }\n  /**\n   * Synchronously calls each of the listeners registered for the event named `eventName`,\n   * in the order they were registered, passing the supplied arguments to each.\n   * Returns `true` if the event has listeners, `false` otherwise.\n   *\n   * @example\n   * const emitter = new Emitter<{ hello: [string] }>()\n   * emitter.emit('hello', 'John')\n   */\n  emit(eventName, ...data) {\n    const listeners = this._getListeners(eventName);\n    listeners.forEach((listener) => {\n      listener.apply(this, data);\n    });\n    return listeners.length > 0;\n  }\n  addListener(eventName, listener) {\n    this._emitInternalEvent(\"newListener\", eventName, listener);\n    const nextListeners = this._getListeners(eventName).concat(listener);\n    this.events.set(eventName, nextListeners);\n    if (this.maxListeners > 0 && this.listenerCount(eventName) > this.maxListeners && !this.hasWarnedAboutPotentialMemoryLeak) {\n      this.hasWarnedAboutPotentialMemoryLeak = true;\n      const memoryLeakWarning = new MemoryLeakError(\n        this,\n        eventName,\n        this.listenerCount(eventName)\n      );\n      console.warn(memoryLeakWarning);\n    }\n    return this;\n  }\n  on(eventName, listener) {\n    return this.addListener(eventName, listener);\n  }\n  once(eventName, listener) {\n    return this.addListener(\n      eventName,\n      this._wrapOnceListener(eventName, listener)\n    );\n  }\n  prependListener(eventName, listener) {\n    const listeners = this._getListeners(eventName);\n    if (listeners.length > 0) {\n      const nextListeners = [listener].concat(listeners);\n      this.events.set(eventName, nextListeners);\n    } else {\n      this.events.set(eventName, listeners.concat(listener));\n    }\n    return this;\n  }\n  prependOnceListener(eventName, listener) {\n    return this.prependListener(\n      eventName,\n      this._wrapOnceListener(eventName, listener)\n    );\n  }\n  removeListener(eventName, listener) {\n    const listeners = this._getListeners(eventName);\n    if (listeners.length > 0) {\n      this._removeListener(listeners, listener);\n      this.events.set(eventName, listeners);\n      this._emitInternalEvent(\"removeListener\", eventName, listener);\n    }\n    return this;\n  }\n  /**\n   * Alias for `emitter.removeListener()`.\n   *\n   * @example\n   * emitter.off('hello', listener)\n   */\n  off(eventName, listener) {\n    return this.removeListener(eventName, listener);\n  }\n  removeAllListeners(eventName) {\n    if (eventName) {\n      this.events.delete(eventName);\n    } else {\n      this.events.clear();\n    }\n    return this;\n  }\n  /**\n   * Returns a copy of the array of listeners for the event named `eventName`.\n   */\n  listeners(eventName) {\n    return Array.from(this._getListeners(eventName));\n  }\n  /**\n   * Returns the number of listeners listening to the event named `eventName`.\n   */\n  listenerCount(eventName) {\n    return this._getListeners(eventName).length;\n  }\n  rawListeners(eventName) {\n    return this.listeners(eventName);\n  }\n};\nvar Emitter = _Emitter;\nEmitter.defaultMaxListeners = 10;\n\n// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/createRequestId-DYCsFHOi.mjs\nvar INTERNAL_REQUEST_ID_HEADER_NAME = \"x-interceptors-internal-request-id\";\nfunction getGlobalSymbol(symbol) {\n  return globalThis[symbol] || void 0;\n}\nfunction setGlobalSymbol(symbol, value) {\n  globalThis[symbol] = value;\n}\nfunction deleteGlobalSymbol(symbol) {\n  delete globalThis[symbol];\n}\nvar InterceptorReadyState = /* @__PURE__ */ (function(InterceptorReadyState$1) {\n  InterceptorReadyState$1[\"INACTIVE\"] = \"INACTIVE\";\n  InterceptorReadyState$1[\"APPLYING\"] = \"APPLYING\";\n  InterceptorReadyState$1[\"APPLIED\"] = \"APPLIED\";\n  InterceptorReadyState$1[\"DISPOSING\"] = \"DISPOSING\";\n  InterceptorReadyState$1[\"DISPOSED\"] = \"DISPOSED\";\n  return InterceptorReadyState$1;\n})({});\nvar Interceptor = class {\n  constructor(symbol) {\n    this.symbol = symbol;\n    this.readyState = InterceptorReadyState.INACTIVE;\n    this.emitter = new Emitter();\n    this.subscriptions = [];\n    this.logger = new Logger(symbol.description);\n    this.emitter.setMaxListeners(0);\n    this.logger.info(\"constructing the interceptor...\");\n  }\n  /**\n  * Determine if this interceptor can be applied\n  * in the current environment.\n  */\n  checkEnvironment() {\n    return true;\n  }\n  /**\n  * Apply this interceptor to the current process.\n  * Returns an already running interceptor instance if it's present.\n  */\n  apply() {\n    const logger = this.logger.extend(\"apply\");\n    logger.info(\"applying the interceptor...\");\n    if (this.readyState === InterceptorReadyState.APPLIED) {\n      logger.info(\"intercepted already applied!\");\n      return;\n    }\n    if (!this.checkEnvironment()) {\n      logger.info(\"the interceptor cannot be applied in this environment!\");\n      return;\n    }\n    this.readyState = InterceptorReadyState.APPLYING;\n    const runningInstance = this.getInstance();\n    if (runningInstance) {\n      logger.info(\"found a running instance, reusing...\");\n      this.on = (event, listener) => {\n        logger.info('proxying the \"%s\" listener', event);\n        runningInstance.emitter.addListener(event, listener);\n        this.subscriptions.push(() => {\n          runningInstance.emitter.removeListener(event, listener);\n          logger.info('removed proxied \"%s\" listener!', event);\n        });\n        return this;\n      };\n      this.readyState = InterceptorReadyState.APPLIED;\n      return;\n    }\n    logger.info(\"no running instance found, setting up a new instance...\");\n    this.setup();\n    this.setInstance();\n    this.readyState = InterceptorReadyState.APPLIED;\n  }\n  /**\n  * Setup the module augments and stubs necessary for this interceptor.\n  * This method is not run if there's a running interceptor instance\n  * to prevent instantiating an interceptor multiple times.\n  */\n  setup() {\n  }\n  /**\n  * Listen to the interceptor's public events.\n  */\n  on(event, listener) {\n    const logger = this.logger.extend(\"on\");\n    if (this.readyState === InterceptorReadyState.DISPOSING || this.readyState === InterceptorReadyState.DISPOSED) {\n      logger.info(\"cannot listen to events, already disposed!\");\n      return this;\n    }\n    logger.info('adding \"%s\" event listener:', event, listener);\n    this.emitter.on(event, listener);\n    return this;\n  }\n  once(event, listener) {\n    this.emitter.once(event, listener);\n    return this;\n  }\n  off(event, listener) {\n    this.emitter.off(event, listener);\n    return this;\n  }\n  removeAllListeners(event) {\n    this.emitter.removeAllListeners(event);\n    return this;\n  }\n  /**\n  * Disposes of any side-effects this interceptor has introduced.\n  */\n  dispose() {\n    const logger = this.logger.extend(\"dispose\");\n    if (this.readyState === InterceptorReadyState.DISPOSED) {\n      logger.info(\"cannot dispose, already disposed!\");\n      return;\n    }\n    logger.info(\"disposing the interceptor...\");\n    this.readyState = InterceptorReadyState.DISPOSING;\n    if (!this.getInstance()) {\n      logger.info(\"no interceptors running, skipping dispose...\");\n      return;\n    }\n    this.clearInstance();\n    logger.info(\"global symbol deleted:\", getGlobalSymbol(this.symbol));\n    if (this.subscriptions.length > 0) {\n      logger.info(\"disposing of %d subscriptions...\", this.subscriptions.length);\n      for (const dispose of this.subscriptions) dispose();\n      this.subscriptions = [];\n      logger.info(\"disposed of all subscriptions!\", this.subscriptions.length);\n    }\n    this.emitter.removeAllListeners();\n    logger.info(\"destroyed the listener!\");\n    this.readyState = InterceptorReadyState.DISPOSED;\n  }\n  getInstance() {\n    const instance = getGlobalSymbol(this.symbol);\n    this.logger.info(\"retrieved global instance:\", instance?.constructor?.name);\n    return instance;\n  }\n  setInstance() {\n    setGlobalSymbol(this.symbol, this);\n    this.logger.info(\"set global instance!\", this.symbol.description);\n  }\n  clearInstance() {\n    deleteGlobalSymbol(this.symbol);\n    this.logger.info(\"cleared global instance!\", this.symbol.description);\n  }\n};\nfunction createRequestId() {\n  return Math.random().toString(16).slice(2);\n}\n\n// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/resolveWebSocketUrl-C83-x9iE.mjs\nfunction resolveWebSocketUrl(url) {\n  if (typeof url === \"string\") return resolveWebSocketUrl(new URL(url, typeof location !== \"undefined\" ? location.href : void 0));\n  if (url.protocol === \"http:\") url.protocol = \"ws:\";\n  else if (url.protocol === \"https:\") url.protocol = \"wss:\";\n  if (url.protocol !== \"ws:\" && url.protocol !== \"wss:\")\n    throw new SyntaxError(`Failed to construct 'WebSocket': The URL's scheme must be either 'http', 'https', 'ws', or 'wss'. '${url.protocol}' is not allowed.`);\n  if (url.hash !== \"\") throw new SyntaxError(`Failed to construct 'WebSocket': The URL contains a fragment identifier ('${url.hash}'). Fragment identifiers are not allowed in WebSocket URLs.`);\n  return url.href;\n}\n\n// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/hasConfigurableGlobal-C8zq1MCg.mjs\nasync function emitAsync(emitter, eventName, ...data) {\n  const listeners = emitter.listeners(eventName);\n  if (listeners.length === 0) return;\n  for (const listener of listeners) await listener.apply(emitter, data);\n}\nvar PatchesRegistry = class {\n  #replacements = /* @__PURE__ */ new Map();\n  applyPatch(owner, key, getNextValue) {\n    const ownerReplacements = this.#replacements.get(owner);\n    invariant(!ownerReplacements?.has(key), `Failed to replace a global value at \"${String(key)}\": already replaced.`);\n    const match = getDeepPropertyDescriptor(owner, key);\n    if (typeof match === \"undefined\") {\n      console.warn(`Failed to replace a global value at \"${String(key)}\": not a global value.`);\n      return () => {\n      };\n    }\n    if (match.descriptor.configurable) Object.defineProperty(owner, key, {\n      value: getNextValue(owner[key]),\n      enumerable: true,\n      configurable: true\n    });\n    else if (match.descriptor.writable) owner[key] = getNextValue(owner[key]);\n    else throw new Error(`Failed to patch a non-configurable non-writable property \"${key.toString()}\"`);\n    const restorePatch = () => {\n      const currentReplacements = this.#replacements.get(owner);\n      if (!currentReplacements?.has(key)) return;\n      if (match.owner === owner)\n        Object.defineProperty(match.owner, key, match.descriptor);\n      else\n        Reflect.deleteProperty(owner, key);\n      currentReplacements.delete(key);\n      if (currentReplacements.size === 0) this.#replacements.delete(owner);\n    };\n    if (ownerReplacements) ownerReplacements.set(key, restorePatch);\n    else this.#replacements.set(owner, /* @__PURE__ */ new Map([[key, restorePatch]]));\n    return restorePatch;\n  }\n  restoreAllPatches() {\n    const errors = [];\n    for (const [, ownerReplacements] of this.#replacements) for (const [, restorePatch] of ownerReplacements) try {\n      restorePatch();\n    } catch (error2) {\n      if (error2 instanceof Error) errors.push(error2);\n      else throw error2;\n    }\n    if (errors.length > 0) throw new AggregateError(errors, \"FOO!\");\n  }\n};\nvar patchesRegistry = new PatchesRegistry();\nfunction getDeepPropertyDescriptor(owner, key) {\n  let currentOwner = owner;\n  let descriptor;\n  while (currentOwner) {\n    descriptor = Object.getOwnPropertyDescriptor(currentOwner, key);\n    if (descriptor) return {\n      owner: currentOwner,\n      descriptor\n    };\n    currentOwner = Object.getPrototypeOf(currentOwner);\n  }\n}\nfunction hasConfigurableGlobal(propertyName) {\n  const match = getDeepPropertyDescriptor(globalThis, propertyName);\n  if (typeof match === \"undefined\") return false;\n  const { descriptor } = match;\n  if (typeof descriptor.get === \"function\" && typeof descriptor.get() === \"undefined\") return false;\n  if (typeof descriptor.get === \"undefined\" && descriptor.value == null) return false;\n  if (typeof descriptor.set === \"undefined\" && !descriptor.configurable) {\n    console.error(`[MSW] Failed to apply interceptor: the global \\`${propertyName}\\` property is non-configurable. This is likely an issue with your environment. If you are using a framework, please open an issue about this in their repository.`);\n    return false;\n  }\n  return true;\n}\n\n// node_modules/.pnpm/@open-draft+deferred-promise@2.2.0/node_modules/@open-draft/deferred-promise/build/index.mjs\nfunction createDeferredExecutor() {\n  const executor = (resolve, reject) => {\n    executor.state = \"pending\";\n    executor.resolve = (data) => {\n      if (executor.state !== \"pending\") {\n        return;\n      }\n      executor.result = data;\n      const onFulfilled = (value) => {\n        executor.state = \"fulfilled\";\n        return value;\n      };\n      return resolve(\n        data instanceof Promise ? data : Promise.resolve(data).then(onFulfilled)\n      );\n    };\n    executor.reject = (reason) => {\n      if (executor.state !== \"pending\") {\n        return;\n      }\n      queueMicrotask(() => {\n        executor.state = \"rejected\";\n      });\n      return reject(executor.rejectionReason = reason);\n    };\n  };\n  return executor;\n}\nvar DeferredPromise = class extends Promise {\n  #executor;\n  resolve;\n  reject;\n  constructor(executor = null) {\n    const deferredExecutor = createDeferredExecutor();\n    super((originalResolve, originalReject) => {\n      deferredExecutor(originalResolve, originalReject);\n      executor?.(deferredExecutor.resolve, deferredExecutor.reject);\n    });\n    this.#executor = deferredExecutor;\n    this.resolve = this.#executor.resolve;\n    this.reject = this.#executor.reject;\n  }\n  get state() {\n    return this.#executor.state;\n  }\n  get rejectionReason() {\n    return this.#executor.rejectionReason;\n  }\n  then(onFulfilled, onRejected) {\n    return this.#decorate(super.then(onFulfilled, onRejected));\n  }\n  catch(onRejected) {\n    return this.#decorate(super.catch(onRejected));\n  }\n  finally(onfinally) {\n    return this.#decorate(super.finally(onfinally));\n  }\n  #decorate(promise) {\n    return Object.defineProperties(promise, {\n      resolve: { configurable: true, value: this.resolve },\n      reject: { configurable: true, value: this.reject }\n    });\n  }\n};\n\n// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/interceptors/WebSocket/index.mjs\nfunction bindEvent(target, event) {\n  Object.defineProperties(event, {\n    target: {\n      value: target,\n      enumerable: true,\n      writable: true\n    },\n    currentTarget: {\n      value: target,\n      enumerable: true,\n      writable: true\n    }\n  });\n  return event;\n}\nvar kCancelable = /* @__PURE__ */ Symbol(\"kCancelable\");\nvar kDefaultPrevented = /* @__PURE__ */ Symbol(\"kDefaultPrevented\");\nvar CancelableMessageEvent = class extends MessageEvent {\n  constructor(type, init) {\n    super(type, init);\n    this[kCancelable] = !!init.cancelable;\n    this[kDefaultPrevented] = false;\n  }\n  get cancelable() {\n    return this[kCancelable];\n  }\n  set cancelable(nextCancelable) {\n    this[kCancelable] = nextCancelable;\n  }\n  get defaultPrevented() {\n    return this[kDefaultPrevented];\n  }\n  set defaultPrevented(nextDefaultPrevented) {\n    this[kDefaultPrevented] = nextDefaultPrevented;\n  }\n  preventDefault() {\n    if (this.cancelable && !this[kDefaultPrevented]) this[kDefaultPrevented] = true;\n  }\n};\nvar CloseEvent = class extends Event {\n  constructor(type, init = {}) {\n    super(type, init);\n    this.code = init.code === void 0 ? 0 : init.code;\n    this.reason = init.reason === void 0 ? \"\" : init.reason;\n    this.wasClean = init.wasClean === void 0 ? false : init.wasClean;\n  }\n};\nvar CancelableCloseEvent = class extends CloseEvent {\n  constructor(type, init = {}) {\n    super(type, init);\n    this[kCancelable] = !!init.cancelable;\n    this[kDefaultPrevented] = false;\n  }\n  get cancelable() {\n    return this[kCancelable];\n  }\n  set cancelable(nextCancelable) {\n    this[kCancelable] = nextCancelable;\n  }\n  get defaultPrevented() {\n    return this[kDefaultPrevented];\n  }\n  set defaultPrevented(nextDefaultPrevented) {\n    this[kDefaultPrevented] = nextDefaultPrevented;\n  }\n  preventDefault() {\n    if (this.cancelable && !this[kDefaultPrevented]) this[kDefaultPrevented] = true;\n  }\n};\nvar kEmitter$1 = /* @__PURE__ */ Symbol(\"kEmitter\");\nvar kBoundListener$1 = /* @__PURE__ */ Symbol(\"kBoundListener\");\nvar WebSocketClientConnection = class {\n  constructor(socket, transport) {\n    this.socket = socket;\n    this.transport = transport;\n    this.id = createRequestId();\n    this.url = new URL(socket.url);\n    this[kEmitter$1] = new EventTarget();\n    this.transport.addEventListener(\"outgoing\", (event) => {\n      const message = bindEvent(this.socket, new CancelableMessageEvent(\"message\", {\n        data: event.data,\n        origin: event.origin,\n        cancelable: true\n      }));\n      this[kEmitter$1].dispatchEvent(message);\n      if (message.defaultPrevented) event.preventDefault();\n    });\n    this.transport.addEventListener(\"close\", (event) => {\n      this[kEmitter$1].dispatchEvent(bindEvent(this.socket, new CloseEvent(\"close\", event)));\n    });\n  }\n  /**\n  * Listen for the outgoing events from the connected WebSocket client.\n  */\n  addEventListener(type, listener, options) {\n    if (!Reflect.has(listener, kBoundListener$1)) {\n      const boundListener = listener.bind(this.socket);\n      Object.defineProperty(listener, kBoundListener$1, {\n        value: boundListener,\n        enumerable: false,\n        configurable: false\n      });\n    }\n    this[kEmitter$1].addEventListener(type, Reflect.get(listener, kBoundListener$1), options);\n  }\n  /**\n  * Removes the listener for the given event.\n  */\n  removeEventListener(event, listener, options) {\n    this[kEmitter$1].removeEventListener(event, Reflect.get(listener, kBoundListener$1), options);\n  }\n  /**\n  * Send data to the connected client.\n  */\n  send(data) {\n    this.transport.send(data);\n  }\n  /**\n  * Close the WebSocket connection.\n  * @param {number} code A status code (see https://www.rfc-editor.org/rfc/rfc6455#section-7.4.1).\n  * @param {string} reason A custom connection close reason.\n  */\n  close(code, reason) {\n    this.transport.close(code, reason);\n  }\n};\nvar WEBSOCKET_CLOSE_CODE_RANGE_ERROR = \"InvalidAccessError: close code out of user configurable range\";\nvar kPassthroughPromise = /* @__PURE__ */ Symbol(\"kPassthroughPromise\");\nvar kOnSend = /* @__PURE__ */ Symbol(\"kOnSend\");\nvar kClose = /* @__PURE__ */ Symbol(\"kClose\");\nvar WebSocketOverride = class extends EventTarget {\n  static {\n    this.CONNECTING = 0;\n  }\n  static {\n    this.OPEN = 1;\n  }\n  static {\n    this.CLOSING = 2;\n  }\n  static {\n    this.CLOSED = 3;\n  }\n  constructor(url, protocols) {\n    super();\n    this.CONNECTING = 0;\n    this.OPEN = 1;\n    this.CLOSING = 2;\n    this.CLOSED = 3;\n    this._onopen = null;\n    this._onmessage = null;\n    this._onerror = null;\n    this._onclose = null;\n    this.url = resolveWebSocketUrl(url);\n    this.protocol = \"\";\n    this.extensions = \"\";\n    this.binaryType = \"blob\";\n    this.readyState = this.CONNECTING;\n    this.bufferedAmount = 0;\n    this[kPassthroughPromise] = new DeferredPromise();\n    queueMicrotask(async () => {\n      if (await this[kPassthroughPromise]) return;\n      this.protocol = typeof protocols === \"string\" ? protocols : Array.isArray(protocols) && protocols.length > 0 ? protocols[0] : \"\";\n      if (this.readyState === this.CONNECTING) {\n        this.readyState = this.OPEN;\n        this.dispatchEvent(bindEvent(this, new Event(\"open\")));\n      }\n    });\n  }\n  set onopen(listener) {\n    this.removeEventListener(\"open\", this._onopen);\n    this._onopen = listener;\n    if (listener !== null) this.addEventListener(\"open\", listener);\n  }\n  get onopen() {\n    return this._onopen;\n  }\n  set onmessage(listener) {\n    this.removeEventListener(\"message\", this._onmessage);\n    this._onmessage = listener;\n    if (listener !== null) this.addEventListener(\"message\", listener);\n  }\n  get onmessage() {\n    return this._onmessage;\n  }\n  set onerror(listener) {\n    this.removeEventListener(\"error\", this._onerror);\n    this._onerror = listener;\n    if (listener !== null) this.addEventListener(\"error\", listener);\n  }\n  get onerror() {\n    return this._onerror;\n  }\n  set onclose(listener) {\n    this.removeEventListener(\"close\", this._onclose);\n    this._onclose = listener;\n    if (listener !== null) this.addEventListener(\"close\", listener);\n  }\n  get onclose() {\n    return this._onclose;\n  }\n  /**\n  * @see https://websockets.spec.whatwg.org/#ref-for-dom-websocket-send%E2%91%A0\n  */\n  send(data) {\n    if (this.readyState === this.CONNECTING) {\n      this.close();\n      throw new DOMException(\"InvalidStateError\");\n    }\n    if (this.readyState === this.CLOSING || this.readyState === this.CLOSED) return;\n    this.bufferedAmount += getDataSize(data);\n    queueMicrotask(() => {\n      this.bufferedAmount = 0;\n      this[kOnSend]?.(data);\n    });\n  }\n  close(code = 1e3, reason) {\n    invariant(code, WEBSOCKET_CLOSE_CODE_RANGE_ERROR);\n    invariant(code === 1e3 || code >= 3e3 && code <= 4999, WEBSOCKET_CLOSE_CODE_RANGE_ERROR);\n    this[kClose](code, reason);\n  }\n  [kClose](code = 1e3, reason, wasClean = true) {\n    if (this.readyState === this.CLOSING || this.readyState === this.CLOSED) return;\n    this.readyState = this.CLOSING;\n    queueMicrotask(() => {\n      this.readyState = this.CLOSED;\n      this.dispatchEvent(bindEvent(this, new CloseEvent(\"close\", {\n        code,\n        reason,\n        wasClean\n      })));\n      this._onopen = null;\n      this._onmessage = null;\n      this._onerror = null;\n      this._onclose = null;\n    });\n  }\n  addEventListener(type, listener, options) {\n    return super.addEventListener(type, listener, options);\n  }\n  removeEventListener(type, callback, options) {\n    return super.removeEventListener(type, callback, options);\n  }\n};\nfunction getDataSize(data) {\n  if (typeof data === \"string\") return data.length;\n  if (data instanceof Blob) return data.size;\n  return data.byteLength;\n}\nvar kEmitter = /* @__PURE__ */ Symbol(\"kEmitter\");\nvar kBoundListener = /* @__PURE__ */ Symbol(\"kBoundListener\");\nvar kSend = /* @__PURE__ */ Symbol(\"kSend\");\nvar WebSocketServerConnection = class {\n  constructor(client, transport, createConnection) {\n    this.client = client;\n    this.transport = transport;\n    this.createConnection = createConnection;\n    this[kEmitter] = new EventTarget();\n    this.mockCloseController = new AbortController();\n    this.realCloseController = new AbortController();\n    this.transport.addEventListener(\"outgoing\", (event) => {\n      if (typeof this.realWebSocket === \"undefined\") return;\n      queueMicrotask(() => {\n        if (!event.defaultPrevented)\n          this[kSend](event.data);\n      });\n    });\n    this.transport.addEventListener(\"incoming\", this.handleIncomingMessage.bind(this));\n  }\n  /**\n  * The `WebSocket` instance connected to the original server.\n  * Accessing this before calling `server.connect()` will throw.\n  */\n  get socket() {\n    invariant(this.realWebSocket, 'Cannot access \"socket\" on the original WebSocket server object: the connection is not open. Did you forget to call `server.connect()`?');\n    return this.realWebSocket;\n  }\n  /**\n  * Open connection to the original WebSocket server.\n  */\n  connect() {\n    invariant(!this.realWebSocket || this.realWebSocket.readyState !== WebSocket.OPEN, 'Failed to call \"connect()\" on the original WebSocket instance: the connection already open');\n    const realWebSocket = this.createConnection();\n    realWebSocket.binaryType = this.client.binaryType;\n    realWebSocket.addEventListener(\"open\", (event) => {\n      this[kEmitter].dispatchEvent(bindEvent(this.realWebSocket, new Event(\"open\", event)));\n    }, { once: true });\n    realWebSocket.addEventListener(\"message\", (event) => {\n      this.transport.dispatchEvent(bindEvent(this.realWebSocket, new MessageEvent(\"incoming\", {\n        data: event.data,\n        origin: event.origin\n      })));\n    });\n    this.client.addEventListener(\"close\", (event) => {\n      this.handleMockClose(event);\n    }, { signal: this.mockCloseController.signal });\n    realWebSocket.addEventListener(\"close\", (event) => {\n      this.handleRealClose(event);\n    }, { signal: this.realCloseController.signal });\n    realWebSocket.addEventListener(\"error\", () => {\n      const errorEvent = bindEvent(realWebSocket, new Event(\"error\", { cancelable: true }));\n      this[kEmitter].dispatchEvent(errorEvent);\n      if (!errorEvent.defaultPrevented) this.client.dispatchEvent(bindEvent(this.client, new Event(\"error\")));\n    });\n    this.realWebSocket = realWebSocket;\n  }\n  /**\n  * Listen for the incoming events from the original WebSocket server.\n  */\n  addEventListener(event, listener, options) {\n    if (!Reflect.has(listener, kBoundListener)) {\n      const boundListener = listener.bind(this.client);\n      Object.defineProperty(listener, kBoundListener, {\n        value: boundListener,\n        enumerable: false\n      });\n    }\n    this[kEmitter].addEventListener(event, Reflect.get(listener, kBoundListener), options);\n  }\n  /**\n  * Remove the listener for the given event.\n  */\n  removeEventListener(event, listener, options) {\n    this[kEmitter].removeEventListener(event, Reflect.get(listener, kBoundListener), options);\n  }\n  /**\n  * Send data to the original WebSocket server.\n  * @example\n  * server.send('hello')\n  * server.send(new Blob(['hello']))\n  * server.send(new TextEncoder().encode('hello'))\n  */\n  send(data) {\n    this[kSend](data);\n  }\n  [kSend](data) {\n    const { realWebSocket } = this;\n    invariant(realWebSocket, 'Failed to call \"server.send()\" for \"%s\": the connection is not open. Did you forget to call \"server.connect()\"?', this.client.url);\n    if (realWebSocket.readyState === WebSocket.CLOSING || realWebSocket.readyState === WebSocket.CLOSED) return;\n    if (realWebSocket.readyState === WebSocket.CONNECTING) {\n      realWebSocket.addEventListener(\"open\", () => {\n        realWebSocket.send(data);\n      }, { once: true });\n      return;\n    }\n    realWebSocket.send(data);\n  }\n  /**\n  * Close the actual server connection.\n  */\n  close() {\n    const { realWebSocket } = this;\n    invariant(realWebSocket, 'Failed to close server connection for \"%s\": the connection is not open. Did you forget to call \"server.connect()\"?', this.client.url);\n    this.realCloseController.abort();\n    if (realWebSocket.readyState === WebSocket.CLOSING || realWebSocket.readyState === WebSocket.CLOSED) return;\n    realWebSocket.close();\n    queueMicrotask(() => {\n      this[kEmitter].dispatchEvent(bindEvent(this.realWebSocket, new CancelableCloseEvent(\"close\", {\n        code: 1e3,\n        cancelable: true\n      })));\n    });\n  }\n  handleIncomingMessage(event) {\n    const messageEvent = bindEvent(event.target, new CancelableMessageEvent(\"message\", {\n      data: event.data,\n      origin: event.origin,\n      cancelable: true\n    }));\n    this[kEmitter].dispatchEvent(messageEvent);\n    if (!messageEvent.defaultPrevented) this.client.dispatchEvent(bindEvent(\n      /**\n      * @note Bind the forwarded original server events\n      * to the mock WebSocket instance so it would\n      * dispatch them straight away.\n      */\n      this.client,\n      new MessageEvent(\"message\", {\n        data: event.data,\n        origin: event.origin\n      })\n    ));\n  }\n  handleMockClose(_event) {\n    if (this.realWebSocket) this.realWebSocket.close();\n  }\n  handleRealClose(event) {\n    this.mockCloseController.abort();\n    const closeEvent = bindEvent(this.realWebSocket, new CancelableCloseEvent(\"close\", {\n      code: event.code,\n      reason: event.reason,\n      wasClean: event.wasClean,\n      cancelable: true\n    }));\n    this[kEmitter].dispatchEvent(closeEvent);\n    if (!closeEvent.defaultPrevented) this.client[kClose](event.code, event.reason);\n  }\n};\nvar WebSocketClassTransport = class extends EventTarget {\n  constructor(socket) {\n    super();\n    this.socket = socket;\n    this.socket.addEventListener(\"close\", (event) => {\n      this.dispatchEvent(bindEvent(this.socket, new CloseEvent(\"close\", event)));\n    });\n    this.socket[kOnSend] = (data) => {\n      this.dispatchEvent(bindEvent(this.socket, new CancelableMessageEvent(\"outgoing\", {\n        data,\n        origin: this.socket.url,\n        cancelable: true\n      })));\n    };\n  }\n  addEventListener(type, callback, options) {\n    return super.addEventListener(type, callback, options);\n  }\n  dispatchEvent(event) {\n    return super.dispatchEvent(event);\n  }\n  send(data) {\n    queueMicrotask(() => {\n      if (this.socket.readyState === this.socket.CLOSING || this.socket.readyState === this.socket.CLOSED) return;\n      const dispatchEvent = () => {\n        this.socket.dispatchEvent(bindEvent(\n          /**\n          * @note Setting this event's \"target\" to the\n          * WebSocket override instance is important.\n          * This way it can tell apart original incoming events\n          * (must be forwarded to the transport) from the\n          * mocked message events like the one below\n          * (must be dispatched on the client instance).\n          */\n          this.socket,\n          new MessageEvent(\"message\", {\n            data,\n            origin: this.socket.url\n          })\n        ));\n      };\n      if (this.socket.readyState === this.socket.CONNECTING) this.socket.addEventListener(\"open\", () => {\n        dispatchEvent();\n      }, { once: true });\n      else dispatchEvent();\n    });\n  }\n  close(code, reason) {\n    this.socket[kClose](code, reason);\n  }\n};\nvar WebSocketInterceptor = class WebSocketInterceptor2 extends Interceptor {\n  static {\n    this.symbol = /* @__PURE__ */ Symbol.for(\"websocket-interceptor\");\n  }\n  constructor() {\n    super(WebSocketInterceptor2.symbol);\n  }\n  checkEnvironment() {\n    return hasConfigurableGlobal(\"WebSocket\");\n  }\n  setup() {\n    const logger = this.logger.extend(\"setup\");\n    const WebSocketProxy = new Proxy(globalThis.WebSocket, { construct: (target, args, newTarget) => {\n      const [url, protocols] = args;\n      const createConnection = () => {\n        return Reflect.construct(target, args, newTarget);\n      };\n      const socket = new WebSocketOverride(url, protocols);\n      const transport = new WebSocketClassTransport(socket);\n      queueMicrotask(async () => {\n        try {\n          const server = new WebSocketServerConnection(socket, transport, createConnection);\n          const hasConnectionListeners = this.emitter.listenerCount(\"connection\") > 0;\n          await emitAsync(this.emitter, \"connection\", {\n            client: new WebSocketClientConnection(socket, transport),\n            server,\n            info: { protocols }\n          });\n          if (hasConnectionListeners) socket[kPassthroughPromise].resolve(false);\n          else {\n            socket[kPassthroughPromise].resolve(true);\n            server.connect();\n            server.addEventListener(\"open\", () => {\n              socket.dispatchEvent(bindEvent(socket, new Event(\"open\")));\n              if (server[\"realWebSocket\"]) socket.protocol = server[\"realWebSocket\"].protocol;\n            });\n          }\n        } catch (error2) {\n          if (error2 instanceof Error) {\n            socket.dispatchEvent(new Event(\"error\"));\n            if (socket.readyState !== WebSocket.CLOSING && socket.readyState !== WebSocket.CLOSED) socket[kClose](1011, error2.message, false);\n            console.error(error2);\n          }\n        }\n      });\n      return socket;\n    } });\n    logger.info(\"patching global WebSocket...\");\n    this.subscriptions.push(patchesRegistry.applyPatch(globalThis, \"WebSocket\", () => WebSocketProxy));\n    logger.info(\"global WebSocket patched!\", globalThis.WebSocket.name);\n  }\n};\n\n// src/browser/setup-worker.ts\nimport {\n  defineNetwork,\n  NetworkReadyState\n} from '../core/experimental/define-network.mjs';\nimport { InterceptorSource as InterceptorSource2 } from '../core/experimental/sources/interceptor-source.mjs';\nimport { fromLegacyOnUnhandledRequest } from '../core/experimental/compat.mjs';\nimport { devUtils as devUtils5 } from '../core/utils/internal/devUtils.mjs';\n\n// src/browser/utils/supports.ts\nfunction supportsServiceWorker() {\n  return typeof navigator !== \"undefined\" && \"serviceWorker\" in navigator && typeof location !== \"undefined\" && location.protocol !== \"file:\";\n}\nfunction supportsReadableStreamTransfer() {\n  try {\n    const stream = new ReadableStream({\n      start: (controller) => controller.close()\n    });\n    const message = new MessageChannel();\n    message.port1.postMessage(stream, [stream]);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n// node_modules/.pnpm/@open-draft+deferred-promise@3.0.0/node_modules/@open-draft/deferred-promise/build/index.mjs\nfunction createDeferredExecutor2() {\n  const executor = ((resolve, reject) => {\n    executor.state = \"pending\";\n    executor.resolve = (data) => {\n      if (executor.state !== \"pending\") return;\n      executor.result = data;\n      const onFulfilled = (value) => {\n        executor.state = \"fulfilled\";\n        return value;\n      };\n      return resolve(data instanceof Promise ? data : Promise.resolve(data).then(onFulfilled));\n    };\n    executor.reject = (reason) => {\n      if (executor.state !== \"pending\") return;\n      queueMicrotask(() => {\n        executor.state = \"rejected\";\n      });\n      return reject(executor.rejectionReason = reason);\n    };\n  });\n  return executor;\n}\nvar DeferredPromise2 = class extends Promise {\n  #executor;\n  resolve;\n  reject;\n  constructor(executor = null) {\n    const deferredExecutor = createDeferredExecutor2();\n    super((originalResolve, originalReject) => {\n      deferredExecutor(originalResolve, originalReject);\n      executor?.(deferredExecutor.resolve, deferredExecutor.reject);\n    });\n    this.#executor = deferredExecutor;\n    this.resolve = this.#executor.resolve;\n    this.reject = this.#executor.reject;\n  }\n  get state() {\n    return this.#executor.state;\n  }\n  get rejectionReason() {\n    return this.#executor.rejectionReason;\n  }\n  then(onFulfilled, onRejected) {\n    return this.#decorate(super.then(onFulfilled, onRejected));\n  }\n  catch(onRejected) {\n    return this.#decorate(super.catch(onRejected));\n  }\n  finally(onfinally) {\n    return this.#decorate(super.finally(onfinally));\n  }\n  #decorate(promise) {\n    return Object.defineProperties(promise, {\n      resolve: {\n        configurable: true,\n        value: this.resolve\n      },\n      reject: {\n        configurable: true,\n        value: this.reject\n      }\n    });\n  }\n};\n\n// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/getRawRequest-B1BqgWG6.mjs\nvar InterceptorError = class InterceptorError2 extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"InterceptorError\";\n    Object.setPrototypeOf(this, InterceptorError2.prototype);\n  }\n};\nvar RequestController = class RequestController2 {\n  static {\n    this.PENDING = 0;\n  }\n  static {\n    this.PASSTHROUGH = 1;\n  }\n  static {\n    this.RESPONSE = 2;\n  }\n  static {\n    this.ERROR = 3;\n  }\n  constructor(request, source) {\n    this.request = request;\n    this.source = source;\n    this.readyState = RequestController2.PENDING;\n    this.handled = new DeferredPromise();\n  }\n  get #handled() {\n    return this.handled;\n  }\n  /**\n  * Perform this request as-is.\n  */\n  async passthrough() {\n    invariant.as(InterceptorError, this.readyState === RequestController2.PENDING, 'Failed to passthrough the \"%s %s\" request: the request has already been handled', this.request.method, this.request.url);\n    this.readyState = RequestController2.PASSTHROUGH;\n    await this.source.passthrough();\n    this.#handled.resolve();\n  }\n  /**\n  * Respond to this request with the given `Response` instance.\n  *\n  * @example\n  * controller.respondWith(new Response())\n  * controller.respondWith(Response.json({ id }))\n  * controller.respondWith(Response.error())\n  */\n  respondWith(response) {\n    invariant.as(InterceptorError, this.readyState === RequestController2.PENDING, 'Failed to respond to the \"%s %s\" request with \"%d %s\": the request has already been handled (%d)', this.request.method, this.request.url, response.status, response.statusText || \"OK\", this.readyState);\n    this.readyState = RequestController2.RESPONSE;\n    this.#handled.resolve();\n    this.source.respondWith(response);\n  }\n  /**\n  * Error this request with the given reason.\n  *\n  * @example\n  * controller.errorWith()\n  * controller.errorWith(new Error('Oops!'))\n  * controller.errorWith({ message: 'Oops!'})\n  */\n  errorWith(reason) {\n    invariant.as(InterceptorError, this.readyState === RequestController2.PENDING, 'Failed to error the \"%s %s\" request with \"%s\": the request has already been handled (%d)', this.request.method, this.request.url, reason?.toString(), this.readyState);\n    this.readyState = RequestController2.ERROR;\n    this.source.errorWith(reason);\n    this.#handled.resolve();\n  }\n};\nfunction canParseUrl(url) {\n  try {\n    new URL(url);\n    return true;\n  } catch (_error) {\n    return false;\n  }\n}\nfunction getValueBySymbol(symbolName, source) {\n  const symbol = Object.getOwnPropertySymbols(source).find((symbol$1) => {\n    return symbol$1.description === symbolName;\n  });\n  if (symbol) return Reflect.get(source, symbol);\n}\nvar FetchRequest = class FetchRequest2 extends Request {\n  static #resolveProperty(input, init = {}, key) {\n    return init[key] ?? (input instanceof Request ? input[key] : void 0);\n  }\n  /**\n  * Check if the given request method is configurable.\n  * @see https://fetch.spec.whatwg.org/#methods\n  */\n  static isConfigurableMethod(method) {\n    return method !== \"CONNECT\" && method !== \"TRACE\" && method !== \"TRACK\";\n  }\n  static isMethodWithBody(method) {\n    return method !== \"HEAD\" && method !== \"GET\" && FetchRequest2.isConfigurableMethod(method);\n  }\n  /**\n  * Check if the given request `mode` is configurable.\n  * @see https://fetch.spec.whatwg.org/#concept-request-mode\n  */\n  static isConfigurableMode(mode) {\n    return mode !== \"navigate\" && mode !== \"websocket\" && mode !== \"webtransport\";\n  }\n  constructor(input, init) {\n    const method = FetchRequest2.#resolveProperty(input, init, \"method\") || \"GET\";\n    const safeMethod = FetchRequest2.isConfigurableMethod(method) ? method : \"GET\";\n    const hasExplicitBody = init != null && \"body\" in init;\n    const bodyInit = !FetchRequest2.isMethodWithBody(method) ? { body: void 0 } : hasExplicitBody ? { body: init.body } : {};\n    const mode = FetchRequest2.#resolveProperty(input, init, \"mode\") ?? void 0;\n    const safeMode = FetchRequest2.isConfigurableMode(mode) ? mode : void 0;\n    super(input, {\n      ...init || {},\n      method: safeMethod,\n      mode: safeMode,\n      duplex: init?.duplex ?? (FetchRequest2.isMethodWithBody(method) ? \"half\" : void 0),\n      ...bodyInit\n    });\n    if (method !== safeMethod) this.#setInternalProperty(\"method\", method);\n    if (method === \"CONNECT\") {\n      const url = new URL(input instanceof Request ? input.url : input);\n      let authority;\n      if (url.protocol === \"localhost:\") authority = url.href;\n      else authority = url.pathname.replace(/^\\/+/, \"\");\n      Object.defineProperty(this, \"url\", {\n        get: () => authority,\n        enumerable: true,\n        configurable: true\n      });\n    }\n    if (mode != null && mode !== safeMode) this.#setInternalProperty(\"mode\", mode);\n  }\n  #setInternalProperty(key, value) {\n    const internalState = getValueBySymbol(\"state\", this);\n    if (internalState) Reflect.set(internalState, key, value);\n    else Object.defineProperty(this, key, {\n      value,\n      enumerable: true,\n      configurable: true,\n      writable: false\n    });\n  }\n};\nvar kStatus = /* @__PURE__ */ Symbol(\"kStatus\");\nvar kUrl = /* @__PURE__ */ Symbol(\"kUrl\");\nvar FetchResponse = class FetchResponse2 extends Response {\n  static {\n    this.STATUS_CODES_WITHOUT_BODY = [\n      101,\n      103,\n      204,\n      205,\n      304\n    ];\n  }\n  static {\n    this.STATUS_CODES_WITH_REDIRECT = [\n      301,\n      302,\n      303,\n      307,\n      308\n    ];\n  }\n  static isConfigurableStatusCode(status) {\n    return status >= 200 && status <= 599;\n  }\n  static isRedirectResponse(status) {\n    return FetchResponse2.STATUS_CODES_WITH_REDIRECT.includes(status);\n  }\n  /**\n  * Returns a boolean indicating whether the given response status\n  * code represents a response that can have a body.\n  */\n  static isResponseWithBody(status) {\n    return !FetchResponse2.STATUS_CODES_WITHOUT_BODY.includes(status);\n  }\n  static setStatus(status, response) {\n    const internalState = getValueBySymbol(\"state\", response);\n    if (internalState) internalState.status = status;\n    else Object.defineProperty(response, \"status\", {\n      value: status,\n      enumerable: true,\n      configurable: true,\n      writable: false\n    });\n    Object.defineProperty(response, kStatus, {\n      value: status,\n      enumerable: false\n    });\n  }\n  static setUrl(url, response) {\n    if (!url || url === \"about:\" || !canParseUrl(url)) return;\n    const state = getValueBySymbol(\"state\", response);\n    if (state) state.urlList.push(new URL(url));\n    else Object.defineProperty(response, \"url\", {\n      value: url,\n      enumerable: true,\n      configurable: true,\n      writable: false\n    });\n    Object.defineProperty(response, kUrl, {\n      value: url,\n      enumerable: false\n    });\n  }\n  /**\n  * Parses the given raw HTTP headers into a Fetch API `Headers` instance.\n  */\n  static parseRawHeaders(rawHeaders) {\n    const headers = new Headers();\n    for (let line = 0; line < rawHeaders.length; line += 2) headers.append(rawHeaders[line], rawHeaders[line + 1]);\n    return headers;\n  }\n  /**\n  * Safely clones the given `Response`.\n  * Coerces response clone exceptions into 500 mocked responses.\n  * Handy in the environments that introduce arbitrary response\n  * cloning restrictions, like \"101 Switching Protocols\" cloning\n  * in \"miniflare\".\n  */\n  static clone(response) {\n    try {\n      return response.clone();\n    } catch (error2) {\n      return Response.json(error2 instanceof Error ? {\n        name: error2.name,\n        message: error2.message,\n        stack: error2.stack\n      } : {}, {\n        status: 500,\n        statusText: \"Unclonable Response\"\n      });\n    }\n  }\n  constructor(body, init = {}) {\n    const status = init.status ?? 200;\n    const safeStatus = FetchResponse2.isConfigurableStatusCode(status) ? status : 200;\n    const finalBody = FetchResponse2.isResponseWithBody(status) ? body : null;\n    super(finalBody, {\n      status: safeStatus,\n      statusText: init.statusText,\n      headers: init.headers\n    });\n    if (status !== safeStatus) FetchResponse2.setStatus(status, this);\n    FetchResponse2.setUrl(init.url, this);\n  }\n  clone() {\n    const clonedResponse = super.clone();\n    const customStatus = Reflect.get(this, kStatus);\n    if (customStatus) FetchResponse2.setStatus(customStatus, clonedResponse);\n    const customUrl = Reflect.get(this, kUrl);\n    if (customUrl) FetchResponse2.setUrl(customUrl, clonedResponse);\n    return clonedResponse;\n  }\n};\nvar kRawRequest = /* @__PURE__ */ Symbol(\"kRawRequest\");\nfunction setRawRequest(request, rawRequest) {\n  Reflect.set(request, kRawRequest, rawRequest);\n}\n\n// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/bufferUtils-BiiO6HZv.mjs\nvar encoder = new TextEncoder();\nfunction encodeBuffer(text) {\n  return encoder.encode(text);\n}\nfunction decodeBuffer(buffer, encoding) {\n  return new TextDecoder(encoding).decode(buffer);\n}\nfunction toArrayBuffer(array) {\n  return array.buffer.slice(array.byteOffset, array.byteOffset + array.byteLength);\n}\n\n// src/browser/sources/service-worker-source.ts\nimport { NetworkSource } from '../core/experimental/sources/network-source.mjs';\nimport { RequestHandler } from '../core/handlers/RequestHandler.mjs';\nimport {\n  HttpNetworkFrame,\n  ResponseEvent\n} from '../core/experimental/frames/http-frame.mjs';\nimport { HttpResponse } from '../core/HttpResponse.mjs';\nimport { toResponseInit } from '../core/utils/toResponseInit.mjs';\nimport { devUtils as devUtils3 } from '../core/utils/internal/devUtils.mjs';\n\n// node_modules/.pnpm/until-async@3.0.2/node_modules/until-async/lib/index.js\nasync function until(callback) {\n  try {\n    return [null, await callback().catch((error2) => {\n      throw error2;\n    })];\n  } catch (error2) {\n    return [error2, null];\n  }\n}\n\n// src/browser/utils/get-worker-instance.ts\nimport { devUtils } from '../core/utils/internal/devUtils.mjs';\n\n// src/browser/utils/getAbsoluteWorkerUrl.ts\nfunction getAbsoluteWorkerUrl(workerUrl) {\n  return new URL(workerUrl, location.href).href;\n}\n\n// src/browser/utils/get-worker-by-registration.ts\nfunction getWorkerByRegistration(registration, absoluteWorkerUrl, findWorker) {\n  const allStates = [\n    registration.active,\n    registration.installing,\n    registration.waiting\n  ];\n  const relevantStates = allStates.filter((state) => {\n    return state != null;\n  });\n  const worker = relevantStates.find((worker2) => {\n    return findWorker(worker2.scriptURL, absoluteWorkerUrl);\n  });\n  return worker || null;\n}\n\n// src/browser/utils/get-worker-instance.ts\nvar getWorkerInstance = async (url, options = {}, findWorker) => {\n  const absoluteWorkerUrl = getAbsoluteWorkerUrl(url);\n  const mockRegistrations = await navigator.serviceWorker.getRegistrations().then(\n    (registrations) => registrations.filter(\n      (registration) => getWorkerByRegistration(registration, absoluteWorkerUrl, findWorker)\n    )\n  );\n  if (!navigator.serviceWorker.controller && mockRegistrations.length > 0) {\n    location.reload();\n  }\n  const [existingRegistration] = mockRegistrations;\n  if (existingRegistration) {\n    existingRegistration.update();\n    return [\n      getWorkerByRegistration(\n        existingRegistration,\n        absoluteWorkerUrl,\n        findWorker\n      ),\n      existingRegistration\n    ];\n  }\n  const [registrationError, registrationResult] = await until(async () => {\n    const registration = await navigator.serviceWorker.register(url, options);\n    return [\n      // Compare existing worker registration by its worker URL,\n      // to prevent irrelevant workers to resolve here (such as Codesandbox worker).\n      getWorkerByRegistration(registration, absoluteWorkerUrl, findWorker),\n      registration\n    ];\n  });\n  if (registrationError) {\n    const isWorkerMissing = registrationError.message.includes(\"(404)\");\n    if (isWorkerMissing) {\n      const scopeUrl = new URL(options?.scope || \"/\", location.href);\n      throw new Error(\n        devUtils.formatMessage(`Failed to register a Service Worker for scope ('${scopeUrl.href}') with script ('${absoluteWorkerUrl}'): Service Worker script does not exist at the given path.\n\nDid you forget to run \"npx msw init <PUBLIC_DIR>\"?\n\nLearn more about creating the Service Worker script: https://mswjs.io/docs/cli/init`)\n      );\n    }\n    throw new Error(\n      devUtils.formatMessage(\n        \"Failed to register the Service Worker:\\n\\n%s\",\n        registrationError.message\n      )\n    );\n  }\n  return registrationResult;\n};\n\n// node_modules/.pnpm/rettime@0.11.11/node_modules/rettime/build/lens-list.mjs\nvar LensList = class {\n  #list;\n  #lens;\n  constructor() {\n    this.#list = [];\n    this.#lens = /* @__PURE__ */ new Map();\n  }\n  get [Symbol.iterator]() {\n    return this.#list[Symbol.iterator].bind(this.#list);\n  }\n  entries() {\n    return this.#lens.entries();\n  }\n  /**\n  * Return an order-sensitive list of values by the given key.\n  */\n  get(key) {\n    return this.#lens.get(key) || [];\n  }\n  /**\n  * Return an order-sensitive list of all values.\n  */\n  getAll() {\n    return this.#list.map(([, value]) => value);\n  }\n  /**\n  * Append a new value to the given key.\n  */\n  append(key, value) {\n    this.#list.push([key, value]);\n    this.#openLens(key, (list) => list.push(value));\n  }\n  /**\n  * Prepend a new value to the given key.\n  */\n  prepend(key, value) {\n    this.#list.unshift([key, value]);\n    this.#openLens(key, (list) => list.unshift(value));\n  }\n  /**\n  * Delete the value belonging to the given key.\n  * Returns `true` if the value was present and removed, `false` otherwise.\n  */\n  delete(key, value) {\n    if (this.size === 0) return false;\n    const values = this.#lens.get(key);\n    if (!values) return false;\n    const index = values.indexOf(value);\n    if (index === -1) return false;\n    values.splice(index, 1);\n    this.#list.splice(this.#list.findIndex((item) => item[0] === key && item[1] === value), 1);\n    return true;\n  }\n  /**\n  * Delete all values belogning to the given key.\n  */\n  deleteAll(key) {\n    if (this.size === 0) return;\n    this.#list = this.#list.filter((item) => item[0] !== key);\n    this.#lens.delete(key);\n  }\n  get size() {\n    return this.#list.length;\n  }\n  clear() {\n    if (this.size === 0) return;\n    this.#list.length = 0;\n    this.#lens.clear();\n  }\n  #openLens(key, setter) {\n    setter(this.#lens.get(key) || this.#lens.set(key, []).get(key));\n  }\n};\n\n// node_modules/.pnpm/rettime@0.11.11/node_modules/rettime/build/index.mjs\nvar kDefaultPrevented2 = /* @__PURE__ */ Symbol(\"kDefaultPrevented\");\nvar kPropagationStopped = /* @__PURE__ */ Symbol(\"kPropagationStopped\");\nvar kImmediatePropagationStopped = /* @__PURE__ */ Symbol(\"kImmediatePropagationStopped\");\nvar TypedEvent = class extends MessageEvent {\n  /**\n  * @note Keep a placeholder property with the return type\n  * because the type must be set somewhere in order to be\n  * correctly associated and inferred from the event.\n  */\n  #returnType;\n  [kDefaultPrevented2];\n  [kPropagationStopped];\n  [kImmediatePropagationStopped];\n  constructor(...args) {\n    super(args[0], args[1]);\n    this[kDefaultPrevented2] = false;\n  }\n  get defaultPrevented() {\n    return this[kDefaultPrevented2];\n  }\n  preventDefault() {\n    super.preventDefault();\n    this[kDefaultPrevented2] = true;\n  }\n  stopImmediatePropagation() {\n    super.stopImmediatePropagation();\n    this[kImmediatePropagationStopped] = true;\n  }\n};\nvar Emitter2 = class {\n  #listeners;\n  #listenerOptions;\n  #listenerAbortCleanups;\n  #typelessListeners;\n  #hookListeners;\n  #hookListenerOptions;\n  #hookListenerAbortCleanups;\n  hooks;\n  constructor() {\n    this.#listeners = new LensList();\n    this.#listenerOptions = /* @__PURE__ */ new WeakMap();\n    this.#listenerAbortCleanups = /* @__PURE__ */ new WeakMap();\n    this.#typelessListeners = /* @__PURE__ */ new WeakSet();\n    this.#hookListeners = new LensList();\n    this.#hookListenerOptions = /* @__PURE__ */ new WeakMap();\n    this.#hookListenerAbortCleanups = /* @__PURE__ */ new WeakMap();\n    this.hooks = {\n      on: (hook, callback, options) => {\n        if (options?.signal?.aborted) return;\n        if (options?.once) {\n          const original = callback;\n          const wrapper = ((...args) => {\n            this.#deleteHookListener(hook, wrapper);\n            return original(...args);\n          });\n          callback = wrapper;\n        }\n        this.#hookListeners.append(hook, callback);\n        if (options) this.#hookListenerOptions.set(callback, options);\n        if (options?.signal) {\n          const { signal } = options;\n          const onAbort = () => {\n            this.#deleteHookListener(hook, callback);\n          };\n          signal.addEventListener(\"abort\", onAbort, { once: true });\n          this.#hookListenerAbortCleanups.set(callback, () => {\n            signal.removeEventListener(\"abort\", onAbort);\n          });\n        }\n      },\n      removeListener: (hook, callback) => {\n        this.#deleteHookListener(hook, callback);\n      }\n    };\n  }\n  #deleteHookListener(hook, callback) {\n    this.#hookListeners.delete(hook, callback);\n    const cleanup = this.#hookListenerAbortCleanups.get(callback);\n    if (cleanup) {\n      cleanup();\n      this.#hookListenerAbortCleanups.delete(callback);\n    }\n  }\n  #deleteListener(type, listener) {\n    const removed = this.#listeners.delete(type, listener);\n    const cleanup = this.#listenerAbortCleanups.get(listener);\n    if (cleanup) {\n      cleanup();\n      this.#listenerAbortCleanups.delete(listener);\n    }\n    return removed;\n  }\n  /**\n  * Adds a listener for the given event type.\n  */\n  on(type, listener, options) {\n    this.#addListener(type, listener, options);\n    return this;\n  }\n  /**\n  * Adds a one-time listener for the given event type.\n  */\n  once(type, listener, options) {\n    return this.on(type, listener, {\n      ...options || {},\n      once: true\n    });\n  }\n  /**\n  * Prepends a listener for the given event type.\n  */\n  earlyOn(type, listener, options) {\n    this.#addListener(type, listener, options, \"prepend\");\n    return this;\n  }\n  /**\n  * Prepends a one-time listener for the given event type.\n  */\n  earlyOnce(type, listener, options) {\n    return this.earlyOn(type, listener, {\n      ...options || {},\n      once: true\n    });\n  }\n  /**\n  * Emits the given typed event.\n  *\n  * @returns {boolean} Returns `true` if the event had any listeners, `false` otherwise.\n  */\n  emit(event) {\n    if (this.#listeners.size === 0) return false;\n    const hasListeners = this.listenerCount(event.type) > 0;\n    const proxiedEvent = this.#proxyEvent(event);\n    for (const listener of this.#matchListeners(event.type)) {\n      if (proxiedEvent.event[kPropagationStopped] != null && proxiedEvent.event[kPropagationStopped] !== this) {\n        proxiedEvent.revoke();\n        return false;\n      }\n      if (proxiedEvent.event[kImmediatePropagationStopped]) break;\n      this.#callListener(proxiedEvent.event, listener);\n    }\n    proxiedEvent.revoke();\n    return hasListeners;\n  }\n  /**\n  * Emits the given typed event and returns a promise that resolves\n  * when all the listeners for that event have settled.\n  *\n  * @returns {Promise<Array<Emitter.ListenerReturnType>>} A promise that resolves\n  * with the return values of all listeners.\n  */\n  async emitAsPromise(event) {\n    if (this.#listeners.size === 0) return [];\n    const pendingListeners = [];\n    const proxiedEvent = this.#proxyEvent(event);\n    for (const listener of this.#matchListeners(event.type)) {\n      if (proxiedEvent.event[kPropagationStopped] != null && proxiedEvent.event[kPropagationStopped] !== this) {\n        proxiedEvent.revoke();\n        return [];\n      }\n      if (proxiedEvent.event[kImmediatePropagationStopped]) break;\n      const returnValue = await Promise.resolve(this.#callListener(proxiedEvent.event, listener));\n      if (!this.#isTypelessListener(listener)) pendingListeners.push(returnValue);\n    }\n    proxiedEvent.revoke();\n    return Promise.allSettled(pendingListeners).then((results) => {\n      return results.map((result) => result.status === \"fulfilled\" ? result.value : result.reason);\n    });\n  }\n  /**\n  * Emits the given event and returns a generator that yields\n  * the result of each listener in the order of their registration.\n  * This way, you stop exhausting the listeners once you get the expected value.\n  */\n  *emitAsGenerator(event) {\n    if (this.#listeners.size === 0) return;\n    const proxiedEvent = this.#proxyEvent(event);\n    for (const listener of this.#matchListeners(event.type)) {\n      if (proxiedEvent.event[kPropagationStopped] != null && proxiedEvent.event[kPropagationStopped] !== this) {\n        proxiedEvent.revoke();\n        return;\n      }\n      if (proxiedEvent.event[kImmediatePropagationStopped]) break;\n      const returnValue = this.#callListener(proxiedEvent.event, listener);\n      if (!this.#isTypelessListener(listener)) yield returnValue;\n    }\n    proxiedEvent.revoke();\n  }\n  /**\n  * Removes a listener for the given event type.\n  */\n  removeListener(type, listener) {\n    const options = this.#listenerOptions.get(listener);\n    if (!this.#deleteListener(type, listener)) return;\n    for (const hook of this.#hookListeners.get(\"removeListener\").slice()) hook(type, listener, options);\n  }\n  /**\n  * Removes all listeners for the given event type.\n  * If no event type is provided, removes all existing listeners.\n  */\n  removeAllListeners(type) {\n    if (type == null) {\n      for (const [listenerType, listeners$1] of this.#listeners.entries()) while (listeners$1.length > 0) this.removeListener(listenerType, listeners$1[0]);\n      for (const [hookType, hookListener] of [...this.#hookListeners]) if (!this.#hookListenerOptions.get(hookListener)?.persist) this.#deleteHookListener(hookType, hookListener);\n      return;\n    }\n    const listeners = this.listeners(type);\n    while (listeners.length > 0) this.removeListener(type, listeners[0]);\n  }\n  /**\n  * Returns the list of listeners for the given event type.\n  * If no even type is provided, returns all listeners.\n  */\n  listeners(type) {\n    if (type == null) return this.#listeners.getAll();\n    return this.#listeners.get(type);\n  }\n  /**\n  * Returns the number of listeners for the given event type.\n  * If no even type is provided, returns the total number of listeners.\n  */\n  listenerCount(type) {\n    if (type == null) return this.#listeners.size;\n    return this.listeners(type).length;\n  }\n  #addListener(type, listener, options, insertMode = \"append\") {\n    if (options?.signal?.aborted) return;\n    for (const hook of this.#hookListeners.get(\"newListener\").slice()) hook(type, listener, options);\n    if (type === \"*\") this.#typelessListeners.add(listener);\n    if (insertMode === \"prepend\") this.#listeners.prepend(type, listener);\n    else this.#listeners.append(type, listener);\n    if (options) {\n      this.#listenerOptions.set(listener, options);\n      if (options.signal) {\n        const { signal } = options;\n        const onAbort = () => {\n          this.removeListener(type, listener);\n        };\n        signal.addEventListener(\"abort\", onAbort, { once: true });\n        this.#listenerAbortCleanups.set(listener, () => {\n          signal.removeEventListener(\"abort\", onAbort);\n        });\n      }\n    }\n  }\n  #proxyEvent(event) {\n    const { stopPropagation } = event;\n    event.stopPropagation = () => {\n      event[kPropagationStopped] = this;\n      stopPropagation.call(event);\n    };\n    return {\n      event,\n      revoke() {\n        event.stopPropagation = stopPropagation;\n      }\n    };\n  }\n  #callListener(event, listener) {\n    for (const hook of this.#hookListeners.get(\"beforeEmit\").slice()) if (hook(event) === false) return;\n    const returnValue = listener.call(this, event);\n    const options = this.#listenerOptions.get(listener);\n    if (options?.once) {\n      const type = this.#isTypelessListener(listener) ? \"*\" : event.type;\n      if (this.#deleteListener(type, listener)) for (const hook of this.#hookListeners.get(\"removeListener\").slice()) hook(type, listener, options);\n    }\n    return returnValue;\n  }\n  /**\n  * Return a list of all event listeners relevant for the given event type.\n  * This includes the explicit event listeners and also typeless event listeners.\n  *\n  * @note Snapshot the matching listeners before yielding. Listeners can add or\n  * remove other listeners during emission (e.g. `earlyOn` unshifts `#list`),\n  * which would otherwise shift the live iterator and re-yield prior entries.\n  */\n  *#matchListeners(type) {\n    const snapshot = [];\n    for (const [key, listener] of this.#listeners) if (key === \"*\" || key === type) snapshot.push(listener);\n    yield* snapshot;\n  }\n  #isTypelessListener(listener) {\n    return this.#typelessListeners.has(listener);\n  }\n};\n\n// src/browser/utils/workerChannel.ts\nimport { isObject } from '../core/utils/internal/isObject.mjs';\nvar SUPPORTS_SERVICE_WORKER = supportsServiceWorker();\nvar WorkerEvent = class extends TypedEvent {\n  #workerEvent;\n  constructor(workerEvent) {\n    const type = workerEvent.data.type;\n    const data = workerEvent.data.payload;\n    super(\n      // @ts-expect-error Troublesome `TypedEvent` extension.\n      type,\n      { data }\n    );\n    this.#workerEvent = workerEvent;\n  }\n  get ports() {\n    return this.#workerEvent.ports;\n  }\n  /**\n   * Reply directly to this event using its `MessagePort`.\n   */\n  postMessage(type, ...rest) {\n    this.#workerEvent.ports[0].postMessage(\n      { type, data: rest[0] },\n      { transfer: rest[1] }\n    );\n  }\n};\nvar WorkerChannel = class extends Emitter2 {\n  #getWorker;\n  #controller;\n  constructor(options) {\n    super();\n    invariant(\n      SUPPORTS_SERVICE_WORKER,\n      \"Failed to open a WorkerChannel: Service Worker is not supported in this environment.\"\n    );\n    this.#getWorker = options.getWorker;\n    this.#controller = new AbortController();\n    navigator.serviceWorker.addEventListener(\n      \"message\",\n      async (event) => {\n        const worker = await this.#getWorker();\n        if (event.source != null && event.source !== worker) {\n          return;\n        }\n        if (event.data && isObject(event.data) && \"type\" in event.data) {\n          this.emit(new WorkerEvent(event));\n        }\n      },\n      {\n        signal: this.#controller.signal\n      }\n    );\n  }\n  /**\n   * Send data to the Service Worker controlling this client.\n   * This triggers the `message` event listener on ServiceWorkerGlobalScope.\n   */\n  postMessage(type) {\n    invariant(\n      SUPPORTS_SERVICE_WORKER,\n      \"Failed to post message on a WorkerChannel: the Service Worker API is unavailable in this environment. This is likely an issue with MSW. Please report it on GitHub: https://github.com/mswjs/msw/issues\"\n    );\n    this.#getWorker().then((worker) => {\n      worker.postMessage(type);\n    });\n  }\n  /**\n   * Terminal teardown. Removes the `navigator.serviceWorker` message listener\n   * and all emitter subscriptions. The channel is not usable afterwards.\n   */\n  terminate() {\n    this.#controller.abort();\n    this.removeAllListeners();\n  }\n};\n\n// src/browser/utils/pruneGetRequestBody.ts\nfunction pruneGetRequestBody(request) {\n  if ([\"HEAD\", \"GET\"].includes(request.method)) {\n    return void 0;\n  }\n  return request.body;\n}\n\n// src/browser/utils/deserializeRequest.ts\nfunction deserializeRequest(serializedRequest) {\n  return new Request(serializedRequest.url, {\n    ...serializedRequest,\n    body: pruneGetRequestBody(serializedRequest)\n  });\n}\n\n// src/browser/utils/validate-worker-scope.ts\nimport { devUtils as devUtils2 } from '../core/utils/internal/devUtils.mjs';\nfunction validateWorkerScope(registration) {\n  if (!location.href.startsWith(registration.scope)) {\n    devUtils2.warn(\n      `Cannot intercept requests on this page because it's outside of the worker's scope (\"${registration.scope}\"). If you wish to mock API requests on this page, you must resolve this scope issue.\n\n- (Recommended) Register the worker at the root level (\"/\") of your application.\n- Set the \"Service-Worker-Allowed\" response header to allow out-of-scope workers.`\n    );\n  }\n}\n\n// src/browser/utils/should-invalidate-worker.ts\nfunction shouldInvalidateWorker(prevOptions, nextOptions) {\n  return prevOptions.findWorker !== nextOptions.findWorker || prevOptions.serviceWorker.url !== nextOptions.serviceWorker.url || JSON.stringify(prevOptions.serviceWorker.options) !== JSON.stringify(nextOptions.serviceWorker.options);\n}\n\n// src/browser/sources/service-worker-source.ts\nvar ServiceWorkerSource = class _ServiceWorkerSource extends NetworkSource {\n  static #current;\n  /**\n   * Create a new Service Worker source or reuse an existing one.\n   * These sources act as a singleton and only get recreated if the options change.\n   */\n  static async from(options) {\n    if (_ServiceWorkerSource.#current == null) {\n      _ServiceWorkerSource.#current = new _ServiceWorkerSource(options);\n    } else if (shouldInvalidateWorker(_ServiceWorkerSource.#current.#options, options)) {\n      await _ServiceWorkerSource.#current.terminate();\n      _ServiceWorkerSource.#current = new _ServiceWorkerSource(options);\n    }\n    return _ServiceWorkerSource.#current;\n  }\n  #options;\n  #frames;\n  #channel;\n  #listenerController;\n  #clientPromise;\n  #keepAliveInterval;\n  #stoppedAt;\n  workerPromise;\n  constructor(options) {\n    super();\n    invariant(\n      supportsServiceWorker(),\n      \"Failed to use Service Worker as the network source: the Service Worker API is not supported in this environment\"\n    );\n    this.#options = options;\n    this.#frames = /* @__PURE__ */ new Map();\n    this.workerPromise = new DeferredPromise2();\n    this.#channel = new WorkerChannel({\n      getWorker: () => this.workerPromise.then(([worker]) => worker)\n    });\n  }\n  async enable() {\n    if (this.workerPromise.state === \"fulfilled\" && typeof this.#stoppedAt == \"undefined\") {\n      devUtils3.warn(\n        'Found a redundant \"worker.start()\" call. Note that starting the worker while mocking is already enabled will have no effect. Consider removing this \"worker.start()\" call.'\n      );\n      return this.workerPromise.then(([, registration2]) => registration2);\n    }\n    this.#stoppedAt = void 0;\n    this.#channel.removeAllListeners();\n    this.#frames.clear();\n    this.#listenerController = new AbortController();\n    const [worker, registration] = await this.#startWorker();\n    if (worker.state !== \"activated\") {\n      const controller = new AbortController();\n      const activationPromise = new DeferredPromise2();\n      activationPromise.then(() => controller.abort());\n      worker.addEventListener(\n        \"statechange\",\n        () => {\n          if (worker.state === \"activated\") {\n            activationPromise.resolve();\n          }\n        },\n        {\n          signal: controller.signal\n        }\n      );\n      await activationPromise;\n    }\n    this.#channel.postMessage(\"MOCK_ACTIVATE\");\n    const clientConfirmationPromise = new DeferredPromise2();\n    this.#clientPromise = clientConfirmationPromise;\n    this.#channel.once(\"MOCKING_ENABLED\", (event) => {\n      clientConfirmationPromise.resolve(event.data.client);\n    });\n    await clientConfirmationPromise;\n    if (!this.#options.quiet) {\n      this.#printStartMessage();\n    }\n    return registration;\n  }\n  disable() {\n    if (typeof this.#stoppedAt !== \"undefined\") {\n      devUtils3.warn(\n        `Found a redundant \"worker.stop()\" call. Notice that stopping the worker after it has already been stopped has no effect. Consider removing this \"worker.stop()\" call.`\n      );\n      return;\n    }\n    this.#stoppedAt = Date.now();\n    this.#listenerController?.abort();\n    this.#listenerController = void 0;\n    this.#channel.postMessage(\"CLIENT_CLOSED\");\n    if (!this.#options.quiet) {\n      this.#printStopMessage();\n    }\n  }\n  /**\n   * Terminal teardown. Unregisters the Service Worker, tears down the channel,\n   * and clears timers. Called when the singleton is being replaced with one\n   * that has different options. The instance is not usable afterwards.\n   */\n  async terminate() {\n    if (this.#keepAliveInterval != null) {\n      clearInterval(this.#keepAliveInterval);\n      this.#keepAliveInterval = void 0;\n    }\n    this.#frames.clear();\n    this.#channel.terminate();\n    this.#listenerController?.abort();\n    this.#listenerController = void 0;\n    if (this.workerPromise.state === \"fulfilled\") {\n      const [, registration] = await this.workerPromise;\n      await registration.unregister();\n    }\n    if (_ServiceWorkerSource.#current === this) {\n      _ServiceWorkerSource.#current = void 0;\n    }\n  }\n  async #startWorker() {\n    if (this.#keepAliveInterval) {\n      clearInterval(this.#keepAliveInterval);\n    }\n    const workerUrl = this.#options.serviceWorker.url;\n    const [worker, registration] = await getWorkerInstance(\n      workerUrl,\n      this.#options.serviceWorker.options,\n      this.#options.findWorker || this.#defaultFindWorker\n    );\n    if (worker == null) {\n      const missingWorkerMessage = this.#options?.findWorker ? devUtils3.formatMessage(\n        `Failed to locate the Service Worker registration using a custom \"findWorker\" predicate.\n\nPlease ensure that the custom predicate properly locates the Service Worker registration at \"%s\".\nMore details: https://mswjs.io/docs/api/setup-worker/start#findworker\n     `,\n        workerUrl\n      ) : devUtils3.formatMessage(\n        `Failed to locate the Service Worker registration.\n\nThis most likely means that the worker script URL \"%s\" cannot resolve against the actual public hostname (%s). This may happen if your application runs behind a proxy, or has a dynamic hostname.\n\nPlease consider using a custom \"serviceWorker.url\" option to point to the actual worker script location, or a custom \"findWorker\" option to resolve the Service Worker registration manually. More details: https://mswjs.io/docs/api/setup-worker/start`,\n        workerUrl,\n        location.host\n      );\n      throw new Error(missingWorkerMessage);\n    }\n    if (this.workerPromise.state === \"pending\") {\n      this.workerPromise.resolve([worker, registration]);\n    } else {\n      this.workerPromise = new DeferredPromise2((resolve) => {\n        resolve([worker, registration]);\n      });\n    }\n    this.#channel.on(\"REQUEST\", this.#handleRequest.bind(this));\n    this.#channel.on(\"RESPONSE\", this.#handleResponse.bind(this));\n    window.addEventListener(\n      \"beforeunload\",\n      () => {\n        if (worker.state !== \"redundant\") {\n          this.#channel.postMessage(\"CLIENT_CLOSED\");\n        }\n        clearInterval(this.#keepAliveInterval);\n        window.postMessage({ type: \"msw/worker:stop\" });\n      },\n      {\n        signal: this.#listenerController?.signal\n      }\n    );\n    await this.#checkWorkerIntegrity().catch((error2) => {\n      devUtils3.error(\n        \"Error while checking the worker script integrity. Please report this on GitHub (https://github.com/mswjs/msw/issues) and include the original error below.\"\n      );\n      console.error(error2);\n    });\n    this.#keepAliveInterval = window.setInterval(() => {\n      this.#channel.postMessage(\"KEEPALIVE_REQUEST\");\n    }, 5e3);\n    if (!this.#options.quiet) {\n      validateWorkerScope(registration);\n    }\n    return [worker, registration];\n  }\n  async #handleRequest(event) {\n    if (this.#stoppedAt && event.data.interceptedAt > this.#stoppedAt) {\n      return event.postMessage(\"PASSTHROUGH\");\n    }\n    const request = deserializeRequest(event.data);\n    RequestHandler.cache.set(request, request.clone());\n    const frame = new ServiceWorkerHttpNetworkFrame({\n      event,\n      request\n    });\n    this.#frames.set(event.data.id, frame);\n    await this.queue(frame);\n  }\n  async #handleResponse(event) {\n    const { request, response, isMockedResponse } = event.data;\n    const frame = this.#frames.get(request.id);\n    if (response.type?.includes(\"opaque\")) {\n      this.#frames.delete(request.id);\n      frame?.events.removeAllListeners();\n      return;\n    }\n    this.#frames.delete(request.id);\n    if (frame == null) {\n      return;\n    }\n    const fetchRequest = deserializeRequest(request);\n    const fetchResponse = response.status === 0 ? Response.error() : new FetchResponse(\n      /**\n       * Responses may be streams here, but when we create a response object\n       * with null-body status codes, like 204, 205, 304 Response will\n       * throw when passed a non-null body, so ensure it's null here\n       * for those codes\n       */\n      FetchResponse.isResponseWithBody(response.status) ? response.body : null,\n      {\n        ...response,\n        /**\n         * Set response URL if it's not set already.\n         * @see https://github.com/mswjs/msw/issues/2030\n         * @see https://developer.mozilla.org/en-US/docs/Web/API/Response/url\n         */\n        url: request.url\n      }\n    );\n    try {\n      frame.events.emit(\n        new ResponseEvent(\n          isMockedResponse ? \"response:mocked\" : \"response:bypass\",\n          {\n            requestId: frame.data.id,\n            request: fetchRequest,\n            response: fetchResponse,\n            isMockedResponse\n          }\n        )\n      );\n    } finally {\n      frame.events.removeAllListeners();\n    }\n  }\n  #defaultFindWorker = (workerUrl, mockServiceWorkerUrl) => {\n    return workerUrl === mockServiceWorkerUrl;\n  };\n  async #checkWorkerIntegrity() {\n    const integrityCheckPromise = new DeferredPromise2();\n    this.#channel.postMessage(\"INTEGRITY_CHECK_REQUEST\");\n    this.#channel.once(\"INTEGRITY_CHECK_RESPONSE\", (event) => {\n      const { checksum, packageVersion } = event.data;\n      if (checksum !== \"03cb67ac84128e63d7cd722a6e5b7f1e\") {\n        devUtils3.warn(\n          `The currently registered Service Worker has been generated by a different version of MSW (${packageVersion}) and may not be fully compatible with the installed version.\n\nIt's recommended you update your worker script by running this command:\n\n  \\u2022 npx msw init <PUBLIC_DIR>\n\nYou can also automate this process and make the worker script update automatically upon the library installations. Read more: https://mswjs.io/docs/cli/init.`\n        );\n      }\n      integrityCheckPromise.resolve();\n    });\n    return integrityCheckPromise;\n  }\n  async #printStartMessage() {\n    if (this.workerPromise.state === \"rejected\") {\n      return;\n    }\n    invariant(\n      this.#clientPromise != null,\n      \"[ServiceWorkerSource] Failed to print a start message: client confirmation not received\"\n    );\n    const client = await this.#clientPromise;\n    const [worker, registration] = await this.workerPromise;\n    console.groupCollapsed(\n      `%c${devUtils3.formatMessage(\"Mocking enabled.\")}`,\n      \"color:orangered;font-weight:bold;\"\n    );\n    console.log(\n      \"%cDocumentation: %chttps://mswjs.io/docs\",\n      \"font-weight:bold\",\n      \"font-weight:normal\"\n    );\n    console.log(\"Found an issue? https://github.com/mswjs/msw/issues\");\n    console.log(\"Worker script URL:\", worker.scriptURL);\n    console.log(\"Worker scope:\", registration.scope);\n    if (client) {\n      console.log(\"Client ID: %s (%s)\", client.id, client.frameType);\n    }\n    console.groupEnd();\n  }\n  #printStopMessage() {\n    console.log(\n      `%c${devUtils3.formatMessage(\"Mocking disabled.\")}`,\n      \"color:orangered;font-weight:bold;\"\n    );\n  }\n};\nvar ServiceWorkerHttpNetworkFrame = class extends HttpNetworkFrame {\n  #event;\n  constructor(options) {\n    super({ request: options.request });\n    this.#event = options.event;\n  }\n  passthrough() {\n    this.#event.postMessage(\"PASSTHROUGH\");\n  }\n  respondWith(response) {\n    if (response) {\n      this.#respondWith(response);\n    }\n  }\n  errorWith(reason) {\n    if (reason instanceof Response) {\n      return this.respondWith(reason);\n    }\n    devUtils3.warn(\n      `Uncaught exception in the request handler for \"%s %s\". This exception has been gracefully handled as a 500 response, however, it's strongly recommended to resolve this error, as it indicates a mistake in your code. If you wish to mock an error response, please see this guide: https://mswjs.io/docs/http/mocking-responses/error-responses`,\n      this.data.request.method,\n      this.data.request.url\n    );\n    const error2 = reason instanceof Error ? reason : new Error(reason?.toString() || \"Request failure\");\n    this.respondWith(\n      HttpResponse.json(\n        {\n          name: error2.name,\n          message: error2.message,\n          stack: error2.stack\n        },\n        {\n          status: 500,\n          statusText: \"Request Handler Error\"\n        }\n      )\n    );\n  }\n  async #respondWith(response) {\n    let responseBody;\n    let transfer;\n    const responseInit = toResponseInit(response);\n    if (supportsReadableStreamTransfer()) {\n      responseBody = response.body;\n      transfer = response.body == null ? void 0 : [response.body];\n    } else {\n      responseBody = response.body == null ? null : await response.clone().arrayBuffer();\n    }\n    this.#event.postMessage(\n      \"MOCK_RESPONSE\",\n      {\n        ...responseInit,\n        body: responseBody\n      },\n      transfer\n    );\n  }\n};\n\n// node_modules/.pnpm/@open-draft+until@2.1.0/node_modules/@open-draft/until/lib/index.mjs\nvar until2 = async (promise) => {\n  try {\n    const data = await promise().catch((error2) => {\n      throw error2;\n    });\n    return { error: null, data };\n  } catch (error2) {\n    return { error: error2, data: null };\n  }\n};\n\n// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/handleRequest-CPPgsG7s.mjs\nfunction isObject2(value, loose = false) {\n  return loose ? Object.prototype.toString.call(value).startsWith(\"[object \") : Object.prototype.toString.call(value) === \"[object Object]\";\n}\nfunction isPropertyAccessible(obj, key) {\n  try {\n    obj[key];\n    return true;\n  } catch {\n    return false;\n  }\n}\nfunction createServerErrorResponse(body) {\n  return new Response(JSON.stringify(body instanceof Error ? {\n    name: body.name,\n    message: body.message,\n    stack: body.stack\n  } : body), {\n    status: 500,\n    statusText: \"Unhandled Exception\",\n    headers: { \"Content-Type\": \"application/json\" }\n  });\n}\nfunction isResponseError(response) {\n  return response != null && response instanceof Response && isPropertyAccessible(response, \"type\") && response.type === \"error\";\n}\nfunction isResponseLike(value) {\n  return isObject2(value, true) && isPropertyAccessible(value, \"status\") && isPropertyAccessible(value, \"statusText\") && isPropertyAccessible(value, \"bodyUsed\");\n}\nfunction isNodeLikeError(error2) {\n  if (error2 == null) return false;\n  if (!(error2 instanceof Error)) return false;\n  return \"code\" in error2 && \"errno\" in error2;\n}\nasync function handleRequest(options) {\n  const handleResponse = async (response) => {\n    if (response instanceof Error) {\n      await options.controller.errorWith(response);\n      return true;\n    }\n    if (isResponseError(response)) {\n      await options.controller.respondWith(response);\n      return true;\n    }\n    if (isResponseLike(response)) {\n      await options.controller.respondWith(response);\n      return true;\n    }\n    if (isObject2(response)) {\n      await options.controller.errorWith(response);\n      return true;\n    }\n    return false;\n  };\n  const handleResponseError = async (error2) => {\n    if (error2 instanceof InterceptorError) throw result.error;\n    if (isNodeLikeError(error2)) {\n      await options.controller.errorWith(error2);\n      return true;\n    }\n    if (error2 instanceof Response) return await handleResponse(error2);\n    return false;\n  };\n  const requestAbortPromise = new DeferredPromise();\n  const onAbort = () => {\n    requestAbortPromise.reject(options.request.signal?.reason);\n  };\n  if (options.request.signal) {\n    if (options.request.signal.aborted) {\n      await options.controller.errorWith(options.request.signal.reason);\n      return;\n    }\n    options.request.signal.addEventListener(\"abort\", onAbort, { once: true });\n  }\n  const result = await until2(async () => {\n    const requestListenersPromise = emitAsync(options.emitter, \"request\", {\n      requestId: options.requestId,\n      request: options.request,\n      controller: options.controller\n    });\n    await Promise.race([\n      requestAbortPromise,\n      requestListenersPromise,\n      options.controller.handled\n    ]);\n  });\n  options.request.signal?.removeEventListener(\"abort\", onAbort);\n  if (requestAbortPromise.state === \"rejected\") {\n    await options.controller.errorWith(requestAbortPromise.rejectionReason);\n    return;\n  }\n  if (result.error) {\n    if (await handleResponseError(result.error)) return;\n    if (options.emitter.listenerCount(\"unhandledException\") > 0) {\n      const unhandledExceptionController = new RequestController(options.request, {\n        passthrough() {\n        },\n        async respondWith(response) {\n          await handleResponse(response);\n        },\n        async errorWith(reason) {\n          await options.controller.errorWith(reason);\n        }\n      });\n      await emitAsync(options.emitter, \"unhandledException\", {\n        error: result.error,\n        request: options.request,\n        requestId: options.requestId,\n        controller: unhandledExceptionController\n      });\n      if (unhandledExceptionController.readyState !== RequestController.PENDING) return;\n    }\n    await options.controller.respondWith(createServerErrorResponse(result.error));\n    return;\n  }\n  if (options.controller.readyState === RequestController.PENDING) return await options.controller.passthrough();\n  return options.controller.handled;\n}\n\n// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/fetch-5IMPqr9e.mjs\nfunction createNetworkError(cause) {\n  return Object.assign(/* @__PURE__ */ new TypeError(\"Failed to fetch\"), { cause });\n}\nvar REQUEST_BODY_HEADERS = [\n  \"content-encoding\",\n  \"content-language\",\n  \"content-location\",\n  \"content-type\",\n  \"content-length\"\n];\nvar kRedirectCount = /* @__PURE__ */ Symbol(\"kRedirectCount\");\nasync function followFetchRedirect(request, response) {\n  if (response.status !== 303 && request.body != null) return Promise.reject(createNetworkError());\n  const requestUrl = new URL(request.url);\n  let locationUrl;\n  try {\n    locationUrl = new URL(response.headers.get(\"location\"), request.url);\n  } catch (error2) {\n    return Promise.reject(createNetworkError(error2));\n  }\n  if (!(locationUrl.protocol === \"http:\" || locationUrl.protocol === \"https:\")) return Promise.reject(createNetworkError(\"URL scheme must be a HTTP(S) scheme\"));\n  if (Reflect.get(request, kRedirectCount) > 20) return Promise.reject(createNetworkError(\"redirect count exceeded\"));\n  Object.defineProperty(request, kRedirectCount, { value: (Reflect.get(request, kRedirectCount) || 0) + 1 });\n  if (request.mode === \"cors\" && (locationUrl.username || locationUrl.password) && !sameOrigin(requestUrl, locationUrl)) return Promise.reject(createNetworkError('cross origin not allowed for request mode \"cors\"'));\n  const requestInit = {};\n  if ([301, 302].includes(response.status) && request.method === \"POST\" || response.status === 303 && ![\"HEAD\", \"GET\"].includes(request.method)) {\n    requestInit.method = \"GET\";\n    requestInit.body = null;\n    REQUEST_BODY_HEADERS.forEach((headerName) => {\n      request.headers.delete(headerName);\n    });\n  }\n  if (!sameOrigin(requestUrl, locationUrl)) {\n    request.headers.delete(\"authorization\");\n    request.headers.delete(\"proxy-authorization\");\n    request.headers.delete(\"cookie\");\n    request.headers.delete(\"host\");\n  }\n  requestInit.headers = request.headers;\n  const finalResponse = await fetch(new Request(locationUrl, requestInit));\n  Object.defineProperty(finalResponse, \"redirected\", {\n    value: true,\n    configurable: true\n  });\n  return finalResponse;\n}\nfunction sameOrigin(left, right) {\n  if (left.origin === right.origin && left.origin === \"null\") return true;\n  if (left.protocol === right.protocol && left.hostname === right.hostname && left.port === right.port) return true;\n  return false;\n}\nvar BrotliDecompressionStream = class extends TransformStream {\n  constructor() {\n    console.warn(\"[Interceptors]: Brotli decompression of response streams is not supported in the browser\");\n    super({ transform(chunk, controller) {\n      controller.enqueue(chunk);\n    } });\n  }\n};\nvar PipelineStream = class extends TransformStream {\n  constructor(transformStreams, ...strategies) {\n    super({}, ...strategies);\n    const readable = [super.readable, ...transformStreams].reduce((readable$1, transform) => readable$1.pipeThrough(transform));\n    Object.defineProperty(this, \"readable\", { get() {\n      return readable;\n    } });\n  }\n};\nfunction parseContentEncoding(contentEncoding) {\n  return contentEncoding.toLowerCase().split(\",\").map((coding) => coding.trim());\n}\nfunction createDecompressionStream(contentEncoding) {\n  if (contentEncoding === \"\") return null;\n  const codings = parseContentEncoding(contentEncoding);\n  if (codings.length === 0) return null;\n  return new PipelineStream(codings.reduceRight((transformers, coding) => {\n    if (coding === \"gzip\" || coding === \"x-gzip\") return transformers.concat(new DecompressionStream(\"gzip\"));\n    else if (coding === \"deflate\") return transformers.concat(new DecompressionStream(\"deflate\"));\n    else if (coding === \"br\") return transformers.concat(new BrotliDecompressionStream());\n    else transformers.length = 0;\n    return transformers;\n  }, []));\n}\nfunction decompressResponse(response) {\n  if (response.body === null) return null;\n  const decompressionStream = createDecompressionStream(response.headers.get(\"content-encoding\") || \"\");\n  if (!decompressionStream) return null;\n  response.body.pipeTo(decompressionStream.writable);\n  return decompressionStream.readable;\n}\nvar FetchInterceptor = class FetchInterceptor2 extends Interceptor {\n  static {\n    this.symbol = /* @__PURE__ */ Symbol.for(\"fetch-interceptor\");\n  }\n  constructor() {\n    super(FetchInterceptor2.symbol);\n  }\n  checkEnvironment() {\n    return hasConfigurableGlobal(\"fetch\");\n  }\n  async setup() {\n    const logger = this.logger.extend(\"setup\");\n    const pureFetch = globalThis.fetch;\n    const fetchProxy = async (input, init) => {\n      const requestId = createRequestId();\n      const request = new FetchRequest(typeof input === \"string\" && typeof location !== \"undefined\" && !canParseUrl(input) ? new URL(input, location.href) : input, init);\n      if (input instanceof Request) setRawRequest(request, input);\n      const responsePromise = new DeferredPromise();\n      const controller = new RequestController(request, {\n        passthrough: async () => {\n          this.logger.info(\"request has not been handled, passthrough...\");\n          const requestCloneForResponseEvent = request.clone();\n          const { error: responseError, data: originalResponse } = await until2(() => pureFetch(request));\n          if (responseError) return responsePromise.reject(responseError);\n          this.logger.info(\"original fetch performed\", originalResponse);\n          if (this.emitter.listenerCount(\"response\") > 0) {\n            this.logger.info('emitting the \"response\" event...');\n            const responseClone = FetchResponse.clone(originalResponse);\n            await emitAsync(this.emitter, \"response\", {\n              response: responseClone,\n              isMockedResponse: false,\n              request: requestCloneForResponseEvent,\n              requestId\n            });\n          }\n          responsePromise.resolve(originalResponse);\n        },\n        respondWith: async (rawResponse) => {\n          if (isResponseError(rawResponse)) {\n            this.logger.info(\"request has errored!\", { response: rawResponse });\n            responsePromise.reject(createNetworkError(rawResponse));\n            return;\n          }\n          this.logger.info(\"received mocked response!\", { rawResponse });\n          const response = new FetchResponse(decompressResponse(rawResponse) || rawResponse.body, {\n            url: request.url,\n            status: rawResponse.status,\n            statusText: rawResponse.statusText,\n            headers: rawResponse.headers\n          });\n          if (FetchResponse.isRedirectResponse(response.status)) {\n            if (request.redirect === \"error\") {\n              responsePromise.reject(createNetworkError(\"unexpected redirect\"));\n              return;\n            }\n            if (request.redirect === \"follow\") {\n              followFetchRedirect(request, response).then((response$1) => {\n                responsePromise.resolve(response$1);\n              }, (reason) => {\n                responsePromise.reject(reason);\n              });\n              return;\n            }\n          }\n          if (this.emitter.listenerCount(\"response\") > 0) {\n            this.logger.info('emitting the \"response\" event...');\n            await emitAsync(this.emitter, \"response\", {\n              response: FetchResponse.clone(response),\n              isMockedResponse: true,\n              request,\n              requestId\n            });\n          }\n          responsePromise.resolve(response);\n        },\n        errorWith: (reason) => {\n          this.logger.info(\"request has been aborted!\", { reason });\n          responsePromise.reject(reason);\n        }\n      });\n      this.logger.info(\"[%s] %s\", request.method, request.url);\n      this.logger.info(\"awaiting for the mocked response...\");\n      this.logger.info('emitting the \"request\" event for %s listener(s)...', this.emitter.listenerCount(\"request\"));\n      await handleRequest({\n        request,\n        requestId,\n        emitter: this.emitter,\n        controller\n      });\n      return responsePromise;\n    };\n    logger.info(\"patching global fetch...\");\n    this.subscriptions.push(patchesRegistry.applyPatch(globalThis, \"fetch\", () => fetchProxy));\n    logger.info(\"global fetch patched!\", globalThis.fetch.name);\n  }\n};\n\n// node_modules/.pnpm/@mswjs+interceptors@0.41.9/node_modules/@mswjs/interceptors/lib/browser/XMLHttpRequest-DrZAf3w6.mjs\nfunction concatArrayBuffer(left, right) {\n  const result = new Uint8Array(left.byteLength + right.byteLength);\n  result.set(left, 0);\n  result.set(right, left.byteLength);\n  return result;\n}\nvar EventPolyfill = class {\n  constructor(type, options) {\n    this.NONE = 0;\n    this.CAPTURING_PHASE = 1;\n    this.AT_TARGET = 2;\n    this.BUBBLING_PHASE = 3;\n    this.type = \"\";\n    this.srcElement = null;\n    this.currentTarget = null;\n    this.eventPhase = 0;\n    this.isTrusted = true;\n    this.composed = false;\n    this.cancelable = true;\n    this.defaultPrevented = false;\n    this.bubbles = true;\n    this.lengthComputable = true;\n    this.loaded = 0;\n    this.total = 0;\n    this.cancelBubble = false;\n    this.returnValue = true;\n    this.type = type;\n    this.target = options?.target || null;\n    this.currentTarget = options?.currentTarget || null;\n    this.timeStamp = Date.now();\n  }\n  composedPath() {\n    return [];\n  }\n  initEvent(type, bubbles, cancelable) {\n    this.type = type;\n    this.bubbles = !!bubbles;\n    this.cancelable = !!cancelable;\n  }\n  preventDefault() {\n    this.defaultPrevented = true;\n  }\n  stopPropagation() {\n  }\n  stopImmediatePropagation() {\n  }\n};\nvar ProgressEventPolyfill = class extends EventPolyfill {\n  constructor(type, init) {\n    super(type);\n    this.lengthComputable = init?.lengthComputable || false;\n    this.composed = init?.composed || false;\n    this.loaded = init?.loaded || 0;\n    this.total = init?.total || 0;\n  }\n};\nvar SUPPORTS_PROGRESS_EVENT = typeof ProgressEvent !== \"undefined\";\nfunction createEvent(target, type, init) {\n  const progressEvents = [\n    \"error\",\n    \"progress\",\n    \"loadstart\",\n    \"loadend\",\n    \"load\",\n    \"timeout\",\n    \"abort\"\n  ];\n  const ProgressEventClass = SUPPORTS_PROGRESS_EVENT ? ProgressEvent : ProgressEventPolyfill;\n  return progressEvents.includes(type) ? new ProgressEventClass(type, {\n    lengthComputable: true,\n    loaded: init?.loaded || 0,\n    total: init?.total || 0\n  }) : new EventPolyfill(type, {\n    target,\n    currentTarget: target\n  });\n}\nfunction findPropertySource(target, propertyName) {\n  if (!(propertyName in target)) return null;\n  if (Object.prototype.hasOwnProperty.call(target, propertyName)) return target;\n  const prototype = Reflect.getPrototypeOf(target);\n  return prototype ? findPropertySource(prototype, propertyName) : null;\n}\nfunction createProxy(target, options) {\n  return new Proxy(target, optionsToProxyHandler(options));\n}\nfunction optionsToProxyHandler(options) {\n  const { constructorCall, methodCall, getProperty, setProperty } = options;\n  const handler = {};\n  if (typeof constructorCall !== \"undefined\") handler.construct = function(target, args, newTarget) {\n    const next = Reflect.construct.bind(null, target, args, newTarget);\n    return constructorCall.call(newTarget, args, next);\n  };\n  handler.set = function(target, propertyName, nextValue) {\n    const next = () => {\n      const propertySource = findPropertySource(target, propertyName) || target;\n      const ownDescriptors = Reflect.getOwnPropertyDescriptor(propertySource, propertyName);\n      if (typeof ownDescriptors?.set !== \"undefined\") {\n        ownDescriptors.set.apply(target, [nextValue]);\n        return true;\n      }\n      return Reflect.defineProperty(propertySource, propertyName, {\n        writable: true,\n        enumerable: true,\n        configurable: true,\n        value: nextValue\n      });\n    };\n    if (typeof setProperty !== \"undefined\") return setProperty.call(target, [propertyName, nextValue], next);\n    return next();\n  };\n  handler.get = function(target, propertyName, receiver) {\n    const next = () => target[propertyName];\n    const value = typeof getProperty !== \"undefined\" ? getProperty.call(target, [propertyName, receiver], next) : next();\n    if (typeof value === \"function\") return (...args) => {\n      const next$1 = value.bind(target, ...args);\n      if (typeof methodCall !== \"undefined\") return methodCall.call(target, [propertyName, args], next$1);\n      return next$1();\n    };\n    return value;\n  };\n  return handler;\n}\nfunction isDomParserSupportedType(type) {\n  return [\n    \"application/xhtml+xml\",\n    \"application/xml\",\n    \"image/svg+xml\",\n    \"text/html\",\n    \"text/xml\"\n  ].some((supportedType) => {\n    return type.startsWith(supportedType);\n  });\n}\nfunction parseJson(data) {\n  try {\n    return JSON.parse(data);\n  } catch (_) {\n    return null;\n  }\n}\nfunction createResponse(request, body) {\n  return new FetchResponse(FetchResponse.isResponseWithBody(request.status) ? body : null, {\n    url: request.responseURL,\n    status: request.status,\n    statusText: request.statusText,\n    headers: createHeadersFromXMLHttpRequestHeaders(request.getAllResponseHeaders())\n  });\n}\nfunction createHeadersFromXMLHttpRequestHeaders(headersString) {\n  const headers = new Headers();\n  const lines = headersString.split(/[\\r\\n]+/);\n  for (const line of lines) {\n    if (line.trim() === \"\") continue;\n    const [name, ...parts] = line.split(\": \");\n    const value = parts.join(\": \");\n    headers.append(name, value);\n  }\n  return headers;\n}\nasync function getBodyByteLength(input) {\n  const explicitContentLength = input.headers.get(\"content-length\");\n  if (explicitContentLength != null && explicitContentLength !== \"\") return Number(explicitContentLength);\n  return (await input.arrayBuffer()).byteLength;\n}\nvar kIsRequestHandled = /* @__PURE__ */ Symbol(\"kIsRequestHandled\");\nvar IS_NODE2 = isNodeProcess();\nvar kFetchRequest = /* @__PURE__ */ Symbol(\"kFetchRequest\");\nvar XMLHttpRequestController = class {\n  constructor(initialRequest, logger) {\n    this.initialRequest = initialRequest;\n    this.logger = logger;\n    this.method = \"GET\";\n    this.url = null;\n    this[kIsRequestHandled] = false;\n    this.events = /* @__PURE__ */ new Map();\n    this.uploadEvents = /* @__PURE__ */ new Map();\n    this.requestId = createRequestId();\n    this.requestHeaders = new Headers();\n    this.responseBuffer = new Uint8Array();\n    this.request = createProxy(initialRequest, {\n      setProperty: ([propertyName, nextValue], invoke) => {\n        switch (propertyName) {\n          case \"ontimeout\": {\n            const eventName = propertyName.slice(2);\n            this.request.addEventListener(eventName, nextValue);\n            return invoke();\n          }\n          default:\n            return invoke();\n        }\n      },\n      methodCall: ([methodName, args], invoke) => {\n        switch (methodName) {\n          case \"open\": {\n            const [method, url] = args;\n            if (typeof url === \"undefined\") {\n              this.method = \"GET\";\n              this.url = toAbsoluteUrl(method);\n            } else {\n              this.method = method;\n              this.url = toAbsoluteUrl(url);\n            }\n            this.logger = this.logger.extend(`${this.method} ${this.url.href}`);\n            this.logger.info(\"open\", this.method, this.url.href);\n            return invoke();\n          }\n          case \"addEventListener\": {\n            const [eventName, listener] = args;\n            this.registerEvent(eventName, listener);\n            this.logger.info(\"addEventListener\", eventName, listener);\n            return invoke();\n          }\n          case \"setRequestHeader\": {\n            const [name, value] = args;\n            this.requestHeaders.set(name, value);\n            this.logger.info(\"setRequestHeader\", name, value);\n            return invoke();\n          }\n          case \"send\": {\n            const [body] = args;\n            this.request.addEventListener(\"load\", () => {\n              if (typeof this.onResponse !== \"undefined\") {\n                const fetchResponse = createResponse(\n                  this.request,\n                  /**\n                  * The `response` property is the right way to read\n                  * the ambiguous response body, as the request's \"responseType\" may differ.\n                  * @see https://xhr.spec.whatwg.org/#the-response-attribute\n                  */\n                  this.request.response\n                );\n                this.onResponse.call(this, {\n                  response: fetchResponse,\n                  isMockedResponse: this[kIsRequestHandled],\n                  request: fetchRequest,\n                  requestId: this.requestId\n                });\n              }\n            });\n            const requestBody = typeof body === \"string\" ? encodeBuffer(body) : body;\n            const fetchRequest = this.toFetchApiRequest(requestBody);\n            this[kFetchRequest] = fetchRequest.clone();\n            queueMicrotask(() => {\n              (this.onRequest?.call(this, {\n                request: fetchRequest,\n                requestId: this.requestId\n              }) || Promise.resolve()).finally(() => {\n                if (!this[kIsRequestHandled]) {\n                  this.logger.info(\"request callback settled but request has not been handled (readystate %d), performing as-is...\", this.request.readyState);\n                  if (IS_NODE2) this.request.setRequestHeader(INTERNAL_REQUEST_ID_HEADER_NAME, this.requestId);\n                  return invoke();\n                }\n              });\n            });\n            break;\n          }\n          default:\n            return invoke();\n        }\n      }\n    });\n    define(this.request, \"upload\", createProxy(this.request.upload, {\n      setProperty: ([propertyName, nextValue], invoke) => {\n        switch (propertyName) {\n          case \"onloadstart\":\n          case \"onprogress\":\n          case \"onaboart\":\n          case \"onerror\":\n          case \"onload\":\n          case \"ontimeout\":\n          case \"onloadend\": {\n            const eventName = propertyName.slice(2);\n            this.registerUploadEvent(eventName, nextValue);\n          }\n        }\n        return invoke();\n      },\n      methodCall: ([methodName, args], invoke) => {\n        switch (methodName) {\n          case \"addEventListener\": {\n            const [eventName, listener] = args;\n            this.registerUploadEvent(eventName, listener);\n            this.logger.info(\"upload.addEventListener\", eventName, listener);\n            return invoke();\n          }\n        }\n      }\n    }));\n  }\n  registerEvent(eventName, listener) {\n    const nextEvents = (this.events.get(eventName) || []).concat(listener);\n    this.events.set(eventName, nextEvents);\n    this.logger.info('registered event \"%s\"', eventName, listener);\n  }\n  registerUploadEvent(eventName, listener) {\n    const nextEvents = (this.uploadEvents.get(eventName) || []).concat(listener);\n    this.uploadEvents.set(eventName, nextEvents);\n    this.logger.info('registered upload event \"%s\"', eventName, listener);\n  }\n  /**\n  * Responds to the current request with the given\n  * Fetch API `Response` instance.\n  */\n  async respondWith(response) {\n    this[kIsRequestHandled] = true;\n    if (this[kFetchRequest]) {\n      const totalRequestBodyLength = await getBodyByteLength(this[kFetchRequest]);\n      this.trigger(\"loadstart\", this.request.upload, {\n        loaded: 0,\n        total: totalRequestBodyLength\n      });\n      this.trigger(\"progress\", this.request.upload, {\n        loaded: totalRequestBodyLength,\n        total: totalRequestBodyLength\n      });\n      this.trigger(\"load\", this.request.upload, {\n        loaded: totalRequestBodyLength,\n        total: totalRequestBodyLength\n      });\n      this.trigger(\"loadend\", this.request.upload, {\n        loaded: totalRequestBodyLength,\n        total: totalRequestBodyLength\n      });\n    }\n    this.logger.info(\"responding with a mocked response: %d %s\", response.status, response.statusText);\n    define(this.request, \"status\", response.status);\n    define(this.request, \"statusText\", response.statusText);\n    define(this.request, \"responseURL\", this.url.href);\n    this.request.getResponseHeader = new Proxy(this.request.getResponseHeader, { apply: (_, __, args) => {\n      this.logger.info(\"getResponseHeader\", args[0]);\n      if (this.request.readyState < this.request.HEADERS_RECEIVED) {\n        this.logger.info(\"headers not received yet, returning null\");\n        return null;\n      }\n      const headerValue = response.headers.get(args[0]);\n      this.logger.info('resolved response header \"%s\" to', args[0], headerValue);\n      return headerValue;\n    } });\n    this.request.getAllResponseHeaders = new Proxy(this.request.getAllResponseHeaders, { apply: () => {\n      this.logger.info(\"getAllResponseHeaders\");\n      if (this.request.readyState < this.request.HEADERS_RECEIVED) {\n        this.logger.info(\"headers not received yet, returning empty string\");\n        return \"\";\n      }\n      const allHeaders = Array.from(response.headers.entries()).map(([headerName, headerValue]) => {\n        return `${headerName}: ${headerValue}`;\n      }).join(\"\\r\\n\");\n      this.logger.info(\"resolved all response headers to\", allHeaders);\n      return allHeaders;\n    } });\n    Object.defineProperties(this.request, {\n      response: {\n        enumerable: true,\n        configurable: false,\n        get: () => this.response\n      },\n      responseText: {\n        enumerable: true,\n        configurable: false,\n        get: () => this.responseText\n      },\n      responseXML: {\n        enumerable: true,\n        configurable: false,\n        get: () => this.responseXML\n      }\n    });\n    const totalResponseBodyLength = await getBodyByteLength(response.clone());\n    this.logger.info(\"calculated response body length\", totalResponseBodyLength);\n    this.trigger(\"loadstart\", this.request, {\n      loaded: 0,\n      total: totalResponseBodyLength\n    });\n    this.setReadyState(this.request.HEADERS_RECEIVED);\n    this.setReadyState(this.request.LOADING);\n    const finalizeResponse = () => {\n      this.logger.info(\"finalizing the mocked response...\");\n      this.setReadyState(this.request.DONE);\n      this.trigger(\"load\", this.request, {\n        loaded: this.responseBuffer.byteLength,\n        total: totalResponseBodyLength\n      });\n      this.trigger(\"loadend\", this.request, {\n        loaded: this.responseBuffer.byteLength,\n        total: totalResponseBodyLength\n      });\n    };\n    if (response.body) {\n      this.logger.info(\"mocked response has body, streaming...\");\n      const reader = response.body.getReader();\n      const readNextResponseBodyChunk = async () => {\n        const { value, done } = await reader.read();\n        if (done) {\n          this.logger.info(\"response body stream done!\");\n          finalizeResponse();\n          return;\n        }\n        if (value) {\n          this.logger.info(\"read response body chunk:\", value);\n          this.responseBuffer = concatArrayBuffer(this.responseBuffer, value);\n          this.trigger(\"progress\", this.request, {\n            loaded: this.responseBuffer.byteLength,\n            total: totalResponseBodyLength\n          });\n        }\n        readNextResponseBodyChunk();\n      };\n      readNextResponseBodyChunk();\n    } else finalizeResponse();\n  }\n  responseBufferToText() {\n    return decodeBuffer(this.responseBuffer);\n  }\n  get response() {\n    this.logger.info(\"getResponse (responseType: %s)\", this.request.responseType);\n    if (this.request.readyState !== this.request.DONE) return null;\n    switch (this.request.responseType) {\n      case \"json\": {\n        const responseJson = parseJson(this.responseBufferToText());\n        this.logger.info(\"resolved response JSON\", responseJson);\n        return responseJson;\n      }\n      case \"arraybuffer\": {\n        const arrayBuffer = toArrayBuffer(this.responseBuffer);\n        this.logger.info(\"resolved response ArrayBuffer\", arrayBuffer);\n        return arrayBuffer;\n      }\n      case \"blob\": {\n        const mimeType = this.request.getResponseHeader(\"Content-Type\") || \"text/plain\";\n        const responseBlob = new Blob([this.responseBufferToText()], { type: mimeType });\n        this.logger.info(\"resolved response Blob (mime type: %s)\", responseBlob, mimeType);\n        return responseBlob;\n      }\n      default: {\n        const responseText = this.responseBufferToText();\n        this.logger.info('resolving \"%s\" response type as text', this.request.responseType, responseText);\n        return responseText;\n      }\n    }\n  }\n  get responseText() {\n    invariant(this.request.responseType === \"\" || this.request.responseType === \"text\", \"InvalidStateError: The object is in invalid state.\");\n    if (this.request.readyState !== this.request.LOADING && this.request.readyState !== this.request.DONE) return \"\";\n    const responseText = this.responseBufferToText();\n    this.logger.info('getResponseText: \"%s\"', responseText);\n    return responseText;\n  }\n  get responseXML() {\n    invariant(this.request.responseType === \"\" || this.request.responseType === \"document\", \"InvalidStateError: The object is in invalid state.\");\n    if (this.request.readyState !== this.request.DONE) return null;\n    const contentType = this.request.getResponseHeader(\"Content-Type\") || \"\";\n    if (typeof DOMParser === \"undefined\") {\n      console.warn(\"Cannot retrieve XMLHttpRequest response body as XML: DOMParser is not defined. You are likely using an environment that is not browser or does not polyfill browser globals correctly.\");\n      return null;\n    }\n    if (isDomParserSupportedType(contentType)) return new DOMParser().parseFromString(this.responseBufferToText(), contentType);\n    return null;\n  }\n  errorWith(error2) {\n    this[kIsRequestHandled] = true;\n    this.logger.info(\"responding with an error\");\n    this.setReadyState(this.request.DONE);\n    this.trigger(\"error\", this.request);\n    this.trigger(\"loadend\", this.request);\n  }\n  /**\n  * Transitions this request's `readyState` to the given one.\n  */\n  setReadyState(nextReadyState) {\n    this.logger.info(\"setReadyState: %d -> %d\", this.request.readyState, nextReadyState);\n    if (this.request.readyState === nextReadyState) {\n      this.logger.info(\"ready state identical, skipping transition...\");\n      return;\n    }\n    define(this.request, \"readyState\", nextReadyState);\n    this.logger.info(\"set readyState to: %d\", nextReadyState);\n    if (nextReadyState !== this.request.UNSENT) {\n      this.logger.info('triggering \"readystatechange\" event...');\n      this.trigger(\"readystatechange\", this.request);\n    }\n  }\n  /**\n  * Triggers given event on the `XMLHttpRequest` instance.\n  */\n  trigger(eventName, target, options) {\n    const callback = target[`on${eventName}`];\n    const event = createEvent(target, eventName, options);\n    this.logger.info('trigger \"%s\"', eventName, options || \"\");\n    if (typeof callback === \"function\") {\n      this.logger.info('found a direct \"%s\" callback, calling...', eventName);\n      callback.call(target, event);\n    }\n    const events = target instanceof XMLHttpRequestUpload ? this.uploadEvents : this.events;\n    for (const [registeredEventName, listeners] of events) if (registeredEventName === eventName) {\n      this.logger.info('found %d listener(s) for \"%s\" event, calling...', listeners.length, eventName);\n      listeners.forEach((listener) => listener.call(target, event));\n    }\n  }\n  /**\n  * Converts this `XMLHttpRequest` instance into a Fetch API `Request` instance.\n  */\n  toFetchApiRequest(body) {\n    this.logger.info(\"converting request to a Fetch API Request...\");\n    const resolvedBody = body instanceof Document ? body.documentElement.innerText : body;\n    const fetchRequest = new FetchRequest(this.url.href, {\n      method: this.method,\n      headers: this.requestHeaders,\n      credentials: this.request.withCredentials ? \"include\" : \"same-origin\",\n      body: [\"GET\", \"HEAD\"].includes(this.method.toUpperCase()) ? null : resolvedBody\n    });\n    define(fetchRequest, \"headers\", createProxy(fetchRequest.headers, { methodCall: ([methodName, args], invoke) => {\n      switch (methodName) {\n        case \"append\":\n        case \"set\": {\n          const [headerName, headerValue] = args;\n          this.request.setRequestHeader(headerName, headerValue);\n          break;\n        }\n        case \"delete\": {\n          const [headerName] = args;\n          console.warn(`XMLHttpRequest: Cannot remove a \"${headerName}\" header from the Fetch API representation of the \"${fetchRequest.method} ${fetchRequest.url}\" request. XMLHttpRequest headers cannot be removed.`);\n          break;\n        }\n      }\n      return invoke();\n    } }));\n    setRawRequest(fetchRequest, this.request);\n    this.logger.info(\"converted request to a Fetch API Request!\", fetchRequest);\n    return fetchRequest;\n  }\n};\nfunction toAbsoluteUrl(url) {\n  if (typeof location === \"undefined\") return new URL(url);\n  return new URL(url.toString(), location.href);\n}\nfunction define(target, property, value) {\n  Reflect.defineProperty(target, property, {\n    writable: true,\n    enumerable: true,\n    value\n  });\n}\nfunction createXMLHttpRequestProxy({ emitter, logger }) {\n  return new Proxy(globalThis.XMLHttpRequest, { construct(target, args, newTarget) {\n    logger.info(\"constructed new XMLHttpRequest\");\n    const originalRequest = Reflect.construct(target, args, newTarget);\n    const prototypeDescriptors = Object.getOwnPropertyDescriptors(target.prototype);\n    for (const propertyName in prototypeDescriptors) Reflect.defineProperty(originalRequest, propertyName, prototypeDescriptors[propertyName]);\n    const xhrRequestController = new XMLHttpRequestController(originalRequest, logger);\n    xhrRequestController.onRequest = async function({ request, requestId }) {\n      const controller = new RequestController(request, {\n        passthrough: () => {\n          this.logger.info(\"no mocked response received, performing request as-is...\");\n        },\n        respondWith: async (response) => {\n          if (isResponseError(response)) {\n            this.errorWith(/* @__PURE__ */ new TypeError(\"Network error\"));\n            return;\n          }\n          await this.respondWith(response);\n        },\n        errorWith: (reason) => {\n          this.logger.info(\"request errored!\", { error: reason });\n          if (reason instanceof Error) this.errorWith(reason);\n        }\n      });\n      this.logger.info(\"awaiting mocked response...\");\n      this.logger.info('emitting the \"request\" event for %s listener(s)...', emitter.listenerCount(\"request\"));\n      await handleRequest({\n        request,\n        requestId,\n        controller,\n        emitter\n      });\n    };\n    xhrRequestController.onResponse = async function({ response, isMockedResponse, request, requestId }) {\n      this.logger.info('emitting the \"response\" event for %s listener(s)...', emitter.listenerCount(\"response\"));\n      emitter.emit(\"response\", {\n        response,\n        isMockedResponse,\n        request,\n        requestId\n      });\n    };\n    return xhrRequestController.request;\n  } });\n}\nvar XMLHttpRequestInterceptor = class XMLHttpRequestInterceptor2 extends Interceptor {\n  static {\n    this.symbol = /* @__PURE__ */ Symbol.for(\"xhr-interceptor\");\n  }\n  constructor() {\n    super(XMLHttpRequestInterceptor2.symbol);\n  }\n  checkEnvironment() {\n    return hasConfigurableGlobal(\"XMLHttpRequest\");\n  }\n  setup() {\n    const logger = this.logger.extend(\"setup\");\n    logger.info(\"patching global XMLHttpRequest...\");\n    this.subscriptions.push(patchesRegistry.applyPatch(globalThis, \"XMLHttpRequest\", () => {\n      return createXMLHttpRequestProxy({\n        emitter: this.emitter,\n        logger: this.logger\n      });\n    }));\n    logger.info(\"global XMLHttpRequest patched!\", globalThis.XMLHttpRequest.name);\n  }\n};\n\n// src/browser/sources/fallback-http-source.ts\nimport { InterceptorSource } from '../core/experimental/sources/interceptor-source.mjs';\nimport { devUtils as devUtils4 } from '../core/utils/internal/devUtils.mjs';\nvar FallbackHttpSource = class extends InterceptorSource {\n  constructor(options) {\n    super({\n      interceptors: [new XMLHttpRequestInterceptor(), new FetchInterceptor()]\n    });\n    this.options = options;\n  }\n  options;\n  enable() {\n    super.enable();\n    if (!this.options.quiet) {\n      this.#printStartMessage();\n    }\n  }\n  disable() {\n    super.disable();\n    if (!this.options.quiet) {\n      this.#printStopMessage();\n    }\n  }\n  #printStartMessage() {\n    console.groupCollapsed(\n      `%c${devUtils4.formatMessage(\"Mocking enabled (fallback mode).\")}`,\n      \"color:orangered;font-weight:bold;\"\n    );\n    console.log(\n      \"%cDocumentation: %chttps://mswjs.io/docs\",\n      \"font-weight:bold\",\n      \"font-weight:normal\"\n    );\n    console.log(\"Found an issue? https://github.com/mswjs/msw/issues\");\n    console.groupEnd();\n  }\n  #printStopMessage() {\n    console.log(\n      `%c${devUtils4.formatMessage(\"Mocking disabled.\")}`,\n      \"color:orangered;font-weight:bold;\"\n    );\n  }\n};\n\n// src/browser/setup-worker.ts\nvar DEFAULT_WORKER_URL = \"/mockServiceWorker.js\";\nfunction setupWorker(...handlers) {\n  invariant(\n    !isNodeProcess(),\n    devUtils5.formatMessage(\n      \"Failed to execute `setupWorker` in a non-browser environment\"\n    )\n  );\n  const network = defineNetwork({\n    sources: [],\n    handlers\n  });\n  return {\n    async start(options) {\n      if (options?.waitUntilReady != null) {\n        devUtils5.warn(\n          `The \"waitUntilReady\" option has been deprecated. Please remove it from this \"worker.start()\" call. Follow the recommended Browser integration (https://mswjs.io/docs/integrations/browser) to eliminate any race conditions between the Service Worker registration and any requests made by your application on initial render.`\n        );\n      }\n      if (network.readyState === NetworkReadyState.ENABLED) {\n        devUtils5.warn(\n          'Found a redundant \"worker.start()\" call. Note that starting the worker while mocking is already enabled will have no effect. Consider removing this \"worker.start()\" call.'\n        );\n        return;\n      }\n      const httpSource = supportsServiceWorker() ? await ServiceWorkerSource.from({\n        serviceWorker: {\n          url: options?.serviceWorker?.url?.toString() || DEFAULT_WORKER_URL,\n          options: options?.serviceWorker?.options\n        },\n        findWorker: options?.findWorker,\n        quiet: options?.quiet\n      }) : new FallbackHttpSource({\n        quiet: options?.quiet\n      });\n      network.configure({\n        sources: [\n          httpSource,\n          new InterceptorSource2({\n            interceptors: [new WebSocketInterceptor()]\n          })\n        ],\n        onUnhandledFrame: fromLegacyOnUnhandledRequest(() => {\n          return options?.onUnhandledRequest || \"warn\";\n        }),\n        context: {\n          quiet: options?.quiet\n        }\n      });\n      await network.enable();\n      if (httpSource instanceof ServiceWorkerSource) {\n        const [, registration] = await httpSource.workerPromise;\n        return registration;\n      }\n    },\n    stop() {\n      if (network.readyState === NetworkReadyState.DISABLED) {\n        devUtils5.warn(\n          `Found a redundant \"worker.stop()\" call. Notice that stopping the worker after it has already been stopped has no effect. Consider removing this \"worker.stop()\" call.`\n        );\n        return;\n      }\n      network.disable();\n      window.postMessage({ type: \"msw/worker:stop\" });\n    },\n    events: network.events,\n    use: network.use.bind(network),\n    resetHandlers: network.resetHandlers.bind(network),\n    restoreHandlers: network.restoreHandlers.bind(network),\n    listHandlers: network.listHandlers.bind(network)\n  };\n}\nvar SetupWorkerApi = class {\n  start;\n  stop;\n  use;\n  resetHandlers;\n  restoreHandlers;\n  listHandlers;\n  events;\n  constructor() {\n    const worker = setupWorker();\n    this.start = worker.start.bind(worker);\n    this.stop = worker.stop.bind(worker);\n    this.use = worker.use.bind(worker);\n    this.resetHandlers = worker.resetHandlers.bind(worker);\n    this.restoreHandlers = worker.restoreHandlers.bind(worker);\n    this.listHandlers = worker.listHandlers.bind(worker);\n    this.events = worker.events;\n  }\n};\nexport {\n  SetupWorkerApi,\n  setupWorker\n};\n//# sourceMappingURL=index.mjs.map","import { delay, http, HttpResponse, PathParams } from \"msw\";\n\nconst movies = [\n  {\n    id: \"1\",\n    title: \"Guardians of the Galaxy\",\n    comment: \"\"\n  },\n  {\n    id: \"2\",\n    title: \"Wall-E\",\n    comment: \"\"\n  }\n];\n\nexport const movieHandlers = [\n  http.get(\"/movies\", async () => {\n    await delay(500);\n    return HttpResponse.json({\n      ts: Date.now(),\n      movies: movies.map(({ id, title }) => ({ id, title }))\n    });\n  }),\n\n  http.get(\"/movies/:id\", async ({ params }) => {\n    const { id } = params;\n    const movie = movies.find((movie) => movie.id === id);\n    if (!movie) {\n      return new HttpResponse(`Movie with id ${id} not found`, {\n        status: 404\n      });\n    }\n    await delay(500);\n    return HttpResponse.json({ ts: Date.now(), movie });\n  }),\n\n  http.post<PathParams, { comment: string }>(\n    \"/movies/:id\",\n    async ({ request, params }) => {\n      const { id } = params;\n      const body = await request.json();\n      const { comment } = body;\n      movies.forEach((movie) => {\n        if (movie.id === id) {\n          movie.comment = comment.toUpperCase();\n        }\n      });\n      await delay(500);\n      return HttpResponse.json({\n        message: `Successfully updated movie ${id}`\n      });\n    }\n  )\n];\n","import { delay, http, HttpResponse, passthrough, PathParams } from \"msw\";\nimport { setupWorker } from \"msw/browser\";\nimport { movieHandlers } from \"./mock_service_worker_handlers/\";\n\n// 单例模式\nlet started: Promise<any> | null = null;\n\n// 确保生成 public/mockServiceWorker.js 文件: npx msw init public/\n// 使用方式：await startMockServiceWorker();\nexport async function startMockServiceWorker() {\n  if (started) {\n    return started;\n  }\n\n  console.log(\"MSW starting\");\n\n  if (typeof window === \"undefined\") {\n    console.warn(\"MSW not started because of no window object\");\n    return;\n  }\n\n  const worker = setupWorker(\n    // http.all(\"*\", ({ request }) => {\n    //   console.log(`through service worker: ${request.method} ${request.url}`);\n    //   return passthrough();\n    // }),\n\n    // http.get(\"https://github.com/octocat\", ({ request, params, cookies }) => {\n    //   return HttpResponse.json(\n    //     {\n    //       message: \"Mocked response\"\n    //     },\n    //     {\n    //       status: 202,\n    //       statusText: \"Mocked status\"\n    //     }\n    //   );\n    // }),\n\n    ...movieHandlers,\n\n    http.get(\"*.js\", () => passthrough()),\n    http.get(\"*.svg\", () => passthrough())\n  );\n\n  started = worker.start({\n    // serviceWorker: {\n    //   url: \"/mockServiceWorker.js\"\n    // },\n    onUnhandledRequest: \"bypass\"\n    // onUnhandledRequest: \"warn\"\n  });\n\n  await started;\n\n  console.log(\"MSW started\");\n  // console.log(\"handler counts = \", worker.listHandlers?.());\n  window.navigator.serviceWorker.getRegistrations().then(console.log);\n}\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n  'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n    return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n    if (Array.isArray(arg)) {\n        each(arg, context[fn], context);\n        return true;\n    }\n    return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n    var i;\n\n    if (!obj) {\n        return;\n    }\n\n    if (obj.forEach) {\n        obj.forEach(iterator, context);\n    } else if (obj.length !== undefined) {\n        i = 0;\n        while (i < obj.length) {\n            iterator.call(context, obj[i], i, obj);\n            i++;\n        }\n    } else {\n        for (i in obj) {\n            obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n        }\n    }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n    var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n    return function() {\n        var e = new Error('get-stack-trace');\n        var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n            .replace(/^\\s+at\\s+/gm, '')\n            .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n        var log = window.console && (window.console.warn || window.console.log);\n        if (log) {\n            log.call(window.console, deprecationMessage, stack);\n        }\n        return method.apply(this, arguments);\n    };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n    assign = function assign(target) {\n        if (target === undefined || target === null) {\n            throw new TypeError('Cannot convert undefined or null to object');\n        }\n\n        var output = Object(target);\n        for (var index = 1; index < arguments.length; index++) {\n            var source = arguments[index];\n            if (source !== undefined && source !== null) {\n                for (var nextKey in source) {\n                    if (source.hasOwnProperty(nextKey)) {\n                        output[nextKey] = source[nextKey];\n                    }\n                }\n            }\n        }\n        return output;\n    };\n} else {\n    assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n    var keys = Object.keys(src);\n    var i = 0;\n    while (i < keys.length) {\n        if (!merge || (merge && dest[keys[i]] === undefined)) {\n            dest[keys[i]] = src[keys[i]];\n        }\n        i++;\n    }\n    return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n    return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n    var baseP = base.prototype,\n        childP;\n\n    childP = child.prototype = Object.create(baseP);\n    childP.constructor = child;\n    childP._super = baseP;\n\n    if (properties) {\n        assign(childP, properties);\n    }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n    return function boundFn() {\n        return fn.apply(context, arguments);\n    };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n    if (typeof val == TYPE_FUNCTION) {\n        return val.apply(args ? args[0] || undefined : undefined, args);\n    }\n    return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n    return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.addEventListener(type, handler, false);\n    });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.removeEventListener(type, handler, false);\n    });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n    while (node) {\n        if (node == parent) {\n            return true;\n        }\n        node = node.parentNode;\n    }\n    return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n    return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n    return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n    if (src.indexOf && !findByKey) {\n        return src.indexOf(find);\n    } else {\n        var i = 0;\n        while (i < src.length) {\n            if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n                return i;\n            }\n            i++;\n        }\n        return -1;\n    }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n    return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n    var results = [];\n    var values = [];\n    var i = 0;\n\n    while (i < src.length) {\n        var val = key ? src[i][key] : src[i];\n        if (inArray(values, val) < 0) {\n            results.push(src[i]);\n        }\n        values[i] = val;\n        i++;\n    }\n\n    if (sort) {\n        if (!key) {\n            results = results.sort();\n        } else {\n            results = results.sort(function sortUniqueArray(a, b) {\n                return a[key] > b[key];\n            });\n        }\n    }\n\n    return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n    var prefix, prop;\n    var camelProp = property[0].toUpperCase() + property.slice(1);\n\n    var i = 0;\n    while (i < VENDOR_PREFIXES.length) {\n        prefix = VENDOR_PREFIXES[i];\n        prop = (prefix) ? prefix + camelProp : property;\n\n        if (prop in obj) {\n            return prop;\n        }\n        i++;\n    }\n    return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n    return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n    var doc = element.ownerDocument || element;\n    return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n    var self = this;\n    this.manager = manager;\n    this.callback = callback;\n    this.element = manager.element;\n    this.target = manager.options.inputTarget;\n\n    // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n    // so when disabled the input events are completely bypassed.\n    this.domHandler = function(ev) {\n        if (boolOrFn(manager.options.enable, [manager])) {\n            self.handler(ev);\n        }\n    };\n\n    this.init();\n\n}\n\nInput.prototype = {\n    /**\n     * should handle the inputEvent data and trigger the callback\n     * @virtual\n     */\n    handler: function() { },\n\n    /**\n     * bind the events\n     */\n    init: function() {\n        this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    },\n\n    /**\n     * unbind the events\n     */\n    destroy: function() {\n        this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n    var Type;\n    var inputClass = manager.options.inputClass;\n\n    if (inputClass) {\n        Type = inputClass;\n    } else if (SUPPORT_POINTER_EVENTS) {\n        Type = PointerEventInput;\n    } else if (SUPPORT_ONLY_TOUCH) {\n        Type = TouchInput;\n    } else if (!SUPPORT_TOUCH) {\n        Type = MouseInput;\n    } else {\n        Type = TouchMouseInput;\n    }\n    return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n    var pointersLen = input.pointers.length;\n    var changedPointersLen = input.changedPointers.length;\n    var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n    var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n    input.isFirst = !!isFirst;\n    input.isFinal = !!isFinal;\n\n    if (isFirst) {\n        manager.session = {};\n    }\n\n    // source event is the normalized value of the domEvents\n    // like 'touchstart, mouseup, pointerdown'\n    input.eventType = eventType;\n\n    // compute scale, rotation etc\n    computeInputData(manager, input);\n\n    // emit secret event\n    manager.emit('hammer.input', input);\n\n    manager.recognize(input);\n    manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n    var session = manager.session;\n    var pointers = input.pointers;\n    var pointersLength = pointers.length;\n\n    // store the first input to calculate the distance and direction\n    if (!session.firstInput) {\n        session.firstInput = simpleCloneInputData(input);\n    }\n\n    // to compute scale and rotation we need to store the multiple touches\n    if (pointersLength > 1 && !session.firstMultiple) {\n        session.firstMultiple = simpleCloneInputData(input);\n    } else if (pointersLength === 1) {\n        session.firstMultiple = false;\n    }\n\n    var firstInput = session.firstInput;\n    var firstMultiple = session.firstMultiple;\n    var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n    var center = input.center = getCenter(pointers);\n    input.timeStamp = now();\n    input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n    input.angle = getAngle(offsetCenter, center);\n    input.distance = getDistance(offsetCenter, center);\n\n    computeDeltaXY(session, input);\n    input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n    var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n    input.overallVelocityX = overallVelocity.x;\n    input.overallVelocityY = overallVelocity.y;\n    input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n    input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n    input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n    input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n        session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n    computeIntervalInputData(session, input);\n\n    // find the correct target\n    var target = manager.element;\n    if (hasParent(input.srcEvent.target, target)) {\n        target = input.srcEvent.target;\n    }\n    input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n    var center = input.center;\n    var offset = session.offsetDelta || {};\n    var prevDelta = session.prevDelta || {};\n    var prevInput = session.prevInput || {};\n\n    if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n        prevDelta = session.prevDelta = {\n            x: prevInput.deltaX || 0,\n            y: prevInput.deltaY || 0\n        };\n\n        offset = session.offsetDelta = {\n            x: center.x,\n            y: center.y\n        };\n    }\n\n    input.deltaX = prevDelta.x + (center.x - offset.x);\n    input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n    var last = session.lastInterval || input,\n        deltaTime = input.timeStamp - last.timeStamp,\n        velocity, velocityX, velocityY, direction;\n\n    if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n        var deltaX = input.deltaX - last.deltaX;\n        var deltaY = input.deltaY - last.deltaY;\n\n        var v = getVelocity(deltaTime, deltaX, deltaY);\n        velocityX = v.x;\n        velocityY = v.y;\n        velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n        direction = getDirection(deltaX, deltaY);\n\n        session.lastInterval = input;\n    } else {\n        // use latest velocity info if it doesn't overtake a minimum period\n        velocity = last.velocity;\n        velocityX = last.velocityX;\n        velocityY = last.velocityY;\n        direction = last.direction;\n    }\n\n    input.velocity = velocity;\n    input.velocityX = velocityX;\n    input.velocityY = velocityY;\n    input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n    // make a simple copy of the pointers because we will get a reference if we don't\n    // we only need clientXY for the calculations\n    var pointers = [];\n    var i = 0;\n    while (i < input.pointers.length) {\n        pointers[i] = {\n            clientX: round(input.pointers[i].clientX),\n            clientY: round(input.pointers[i].clientY)\n        };\n        i++;\n    }\n\n    return {\n        timeStamp: now(),\n        pointers: pointers,\n        center: getCenter(pointers),\n        deltaX: input.deltaX,\n        deltaY: input.deltaY\n    };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n    var pointersLength = pointers.length;\n\n    // no need to loop when only one touch\n    if (pointersLength === 1) {\n        return {\n            x: round(pointers[0].clientX),\n            y: round(pointers[0].clientY)\n        };\n    }\n\n    var x = 0, y = 0, i = 0;\n    while (i < pointersLength) {\n        x += pointers[i].clientX;\n        y += pointers[i].clientY;\n        i++;\n    }\n\n    return {\n        x: round(x / pointersLength),\n        y: round(y / pointersLength)\n    };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n    return {\n        x: x / deltaTime || 0,\n        y: y / deltaTime || 0\n    };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n    if (x === y) {\n        return DIRECTION_NONE;\n    }\n\n    if (abs(x) >= abs(y)) {\n        return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n    }\n    return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n\n    return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n    return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n    return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n    return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n    mousedown: INPUT_START,\n    mousemove: INPUT_MOVE,\n    mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n    this.evEl = MOUSE_ELEMENT_EVENTS;\n    this.evWin = MOUSE_WINDOW_EVENTS;\n\n    this.pressed = false; // mousedown state\n\n    Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function MEhandler(ev) {\n        var eventType = MOUSE_INPUT_MAP[ev.type];\n\n        // on start we want to have the left mouse button down\n        if (eventType & INPUT_START && ev.button === 0) {\n            this.pressed = true;\n        }\n\n        if (eventType & INPUT_MOVE && ev.which !== 1) {\n            eventType = INPUT_END;\n        }\n\n        // mouse must be down\n        if (!this.pressed) {\n            return;\n        }\n\n        if (eventType & INPUT_END) {\n            this.pressed = false;\n        }\n\n        this.callback(this.manager, eventType, {\n            pointers: [ev],\n            changedPointers: [ev],\n            pointerType: INPUT_TYPE_MOUSE,\n            srcEvent: ev\n        });\n    }\n});\n\nvar POINTER_INPUT_MAP = {\n    pointerdown: INPUT_START,\n    pointermove: INPUT_MOVE,\n    pointerup: INPUT_END,\n    pointercancel: INPUT_CANCEL,\n    pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n    2: INPUT_TYPE_TOUCH,\n    3: INPUT_TYPE_PEN,\n    4: INPUT_TYPE_MOUSE,\n    5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n    POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n    POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n    this.evEl = POINTER_ELEMENT_EVENTS;\n    this.evWin = POINTER_WINDOW_EVENTS;\n\n    Input.apply(this, arguments);\n\n    this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function PEhandler(ev) {\n        var store = this.store;\n        var removePointer = false;\n\n        var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n        var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n        var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n        var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n        // get index of the event in the store\n        var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n        // start and mouse must be down\n        if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n            if (storeIndex < 0) {\n                store.push(ev);\n                storeIndex = store.length - 1;\n            }\n        } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n            removePointer = true;\n        }\n\n        // it not found, so the pointer hasn't been down (so it's probably a hover)\n        if (storeIndex < 0) {\n            return;\n        }\n\n        // update the event in the store\n        store[storeIndex] = ev;\n\n        this.callback(this.manager, eventType, {\n            pointers: store,\n            changedPointers: [ev],\n            pointerType: pointerType,\n            srcEvent: ev\n        });\n\n        if (removePointer) {\n            // remove from the store\n            store.splice(storeIndex, 1);\n        }\n    }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n    this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n    this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n    this.started = false;\n\n    Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n    handler: function TEhandler(ev) {\n        var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n        // should we handle the touch events?\n        if (type === INPUT_START) {\n            this.started = true;\n        }\n\n        if (!this.started) {\n            return;\n        }\n\n        var touches = normalizeSingleTouches.call(this, ev, type);\n\n        // when done, reset the started state\n        if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n            this.started = false;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n    var all = toArray(ev.touches);\n    var changed = toArray(ev.changedTouches);\n\n    if (type & (INPUT_END | INPUT_CANCEL)) {\n        all = uniqueArray(all.concat(changed), 'identifier', true);\n    }\n\n    return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n    this.evTarget = TOUCH_TARGET_EVENTS;\n    this.targetIds = {};\n\n    Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n    handler: function MTEhandler(ev) {\n        var type = TOUCH_INPUT_MAP[ev.type];\n        var touches = getTouches.call(this, ev, type);\n        if (!touches) {\n            return;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n    var allTouches = toArray(ev.touches);\n    var targetIds = this.targetIds;\n\n    // when there is only one touch, the process can be simplified\n    if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n        targetIds[allTouches[0].identifier] = true;\n        return [allTouches, allTouches];\n    }\n\n    var i,\n        targetTouches,\n        changedTouches = toArray(ev.changedTouches),\n        changedTargetTouches = [],\n        target = this.target;\n\n    // get target touches from touches\n    targetTouches = allTouches.filter(function(touch) {\n        return hasParent(touch.target, target);\n    });\n\n    // collect touches\n    if (type === INPUT_START) {\n        i = 0;\n        while (i < targetTouches.length) {\n            targetIds[targetTouches[i].identifier] = true;\n            i++;\n        }\n    }\n\n    // filter changed touches to only contain touches that exist in the collected target ids\n    i = 0;\n    while (i < changedTouches.length) {\n        if (targetIds[changedTouches[i].identifier]) {\n            changedTargetTouches.push(changedTouches[i]);\n        }\n\n        // cleanup removed touches\n        if (type & (INPUT_END | INPUT_CANCEL)) {\n            delete targetIds[changedTouches[i].identifier];\n        }\n        i++;\n    }\n\n    if (!changedTargetTouches.length) {\n        return;\n    }\n\n    return [\n        // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n        uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n        changedTargetTouches\n    ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n    Input.apply(this, arguments);\n\n    var handler = bindFn(this.handler, this);\n    this.touch = new TouchInput(this.manager, handler);\n    this.mouse = new MouseInput(this.manager, handler);\n\n    this.primaryTouch = null;\n    this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n    /**\n     * handle mouse and touch events\n     * @param {Hammer} manager\n     * @param {String} inputEvent\n     * @param {Object} inputData\n     */\n    handler: function TMEhandler(manager, inputEvent, inputData) {\n        var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n            isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n        if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n            return;\n        }\n\n        // when we're in a touch event, record touches to  de-dupe synthetic mouse event\n        if (isTouch) {\n            recordTouches.call(this, inputEvent, inputData);\n        } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n            return;\n        }\n\n        this.callback(manager, inputEvent, inputData);\n    },\n\n    /**\n     * remove the event listeners\n     */\n    destroy: function destroy() {\n        this.touch.destroy();\n        this.mouse.destroy();\n    }\n});\n\nfunction recordTouches(eventType, eventData) {\n    if (eventType & INPUT_START) {\n        this.primaryTouch = eventData.changedPointers[0].identifier;\n        setLastTouch.call(this, eventData);\n    } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n        setLastTouch.call(this, eventData);\n    }\n}\n\nfunction setLastTouch(eventData) {\n    var touch = eventData.changedPointers[0];\n\n    if (touch.identifier === this.primaryTouch) {\n        var lastTouch = {x: touch.clientX, y: touch.clientY};\n        this.lastTouches.push(lastTouch);\n        var lts = this.lastTouches;\n        var removeLastTouch = function() {\n            var i = lts.indexOf(lastTouch);\n            if (i > -1) {\n                lts.splice(i, 1);\n            }\n        };\n        setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n    }\n}\n\nfunction isSyntheticEvent(eventData) {\n    var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n    for (var i = 0; i < this.lastTouches.length; i++) {\n        var t = this.lastTouches[i];\n        var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n        if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n            return true;\n        }\n    }\n    return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n    this.manager = manager;\n    this.set(value);\n}\n\nTouchAction.prototype = {\n    /**\n     * set the touchAction value on the element or enable the polyfill\n     * @param {String} value\n     */\n    set: function(value) {\n        // find out the touch-action by the event handlers\n        if (value == TOUCH_ACTION_COMPUTE) {\n            value = this.compute();\n        }\n\n        if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n            this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n        }\n        this.actions = value.toLowerCase().trim();\n    },\n\n    /**\n     * just re-set the touchAction value\n     */\n    update: function() {\n        this.set(this.manager.options.touchAction);\n    },\n\n    /**\n     * compute the value for the touchAction property based on the recognizer's settings\n     * @returns {String} value\n     */\n    compute: function() {\n        var actions = [];\n        each(this.manager.recognizers, function(recognizer) {\n            if (boolOrFn(recognizer.options.enable, [recognizer])) {\n                actions = actions.concat(recognizer.getTouchAction());\n            }\n        });\n        return cleanTouchActions(actions.join(' '));\n    },\n\n    /**\n     * this method is called on each input cycle and provides the preventing of the browser behavior\n     * @param {Object} input\n     */\n    preventDefaults: function(input) {\n        var srcEvent = input.srcEvent;\n        var direction = input.offsetDirection;\n\n        // if the touch action did prevented once this session\n        if (this.manager.session.prevented) {\n            srcEvent.preventDefault();\n            return;\n        }\n\n        var actions = this.actions;\n        var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n        var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n        var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n        if (hasNone) {\n            //do not prevent defaults if this is a tap gesture\n\n            var isTapPointer = input.pointers.length === 1;\n            var isTapMovement = input.distance < 2;\n            var isTapTouchTime = input.deltaTime < 250;\n\n            if (isTapPointer && isTapMovement && isTapTouchTime) {\n                return;\n            }\n        }\n\n        if (hasPanX && hasPanY) {\n            // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n            return;\n        }\n\n        if (hasNone ||\n            (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n            (hasPanX && direction & DIRECTION_VERTICAL)) {\n            return this.preventSrc(srcEvent);\n        }\n    },\n\n    /**\n     * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n     * @param {Object} srcEvent\n     */\n    preventSrc: function(srcEvent) {\n        this.manager.session.prevented = true;\n        srcEvent.preventDefault();\n    }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n    // none\n    if (inStr(actions, TOUCH_ACTION_NONE)) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n    var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n    // if both pan-x and pan-y are set (different recognizers\n    // for different directions, e.g. horizontal pan but vertical swipe?)\n    // we need none (as otherwise with pan-x pan-y combined none of these\n    // recognizers will work, since the browser would handle all panning\n    if (hasPanX && hasPanY) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    // pan-x OR pan-y\n    if (hasPanX || hasPanY) {\n        return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n    }\n\n    // manipulation\n    if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n        return TOUCH_ACTION_MANIPULATION;\n    }\n\n    return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n    if (!NATIVE_TOUCH_ACTION) {\n        return false;\n    }\n    var touchMap = {};\n    var cssSupports = window.CSS && window.CSS.supports;\n    ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n        // If css.supports is not supported but there is native touch-action assume it supports\n        // all values. This is the case for IE 10 and 11.\n        touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n    });\n    return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n *               Possible\n *                  |\n *            +-----+---------------+\n *            |                     |\n *      +-----+-----+               |\n *      |           |               |\n *   Failed      Cancelled          |\n *                          +-------+------+\n *                          |              |\n *                      Recognized       Began\n *                                         |\n *                                      Changed\n *                                         |\n *                                  Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n    this.options = assign({}, this.defaults, options || {});\n\n    this.id = uniqueId();\n\n    this.manager = null;\n\n    // default is enable true\n    this.options.enable = ifUndefined(this.options.enable, true);\n\n    this.state = STATE_POSSIBLE;\n\n    this.simultaneous = {};\n    this.requireFail = [];\n}\n\nRecognizer.prototype = {\n    /**\n     * @virtual\n     * @type {Object}\n     */\n    defaults: {},\n\n    /**\n     * set options\n     * @param {Object} options\n     * @return {Recognizer}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // also update the touchAction, in case something changed about the directions/enabled state\n        this.manager && this.manager.touchAction.update();\n        return this;\n    },\n\n    /**\n     * recognize simultaneous with an other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    recognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n            return this;\n        }\n\n        var simultaneous = this.simultaneous;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (!simultaneous[otherRecognizer.id]) {\n            simultaneous[otherRecognizer.id] = otherRecognizer;\n            otherRecognizer.recognizeWith(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRecognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        delete this.simultaneous[otherRecognizer.id];\n        return this;\n    },\n\n    /**\n     * recognizer can only run when an other is failing\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    requireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n            return this;\n        }\n\n        var requireFail = this.requireFail;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (inArray(requireFail, otherRecognizer) === -1) {\n            requireFail.push(otherRecognizer);\n            otherRecognizer.requireFailure(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the requireFailure link. it does not remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRequireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        var index = inArray(this.requireFail, otherRecognizer);\n        if (index > -1) {\n            this.requireFail.splice(index, 1);\n        }\n        return this;\n    },\n\n    /**\n     * has require failures boolean\n     * @returns {boolean}\n     */\n    hasRequireFailures: function() {\n        return this.requireFail.length > 0;\n    },\n\n    /**\n     * if the recognizer can recognize simultaneous with an other recognizer\n     * @param {Recognizer} otherRecognizer\n     * @returns {Boolean}\n     */\n    canRecognizeWith: function(otherRecognizer) {\n        return !!this.simultaneous[otherRecognizer.id];\n    },\n\n    /**\n     * You should use `tryEmit` instead of `emit` directly to check\n     * that all the needed recognizers has failed before emitting.\n     * @param {Object} input\n     */\n    emit: function(input) {\n        var self = this;\n        var state = this.state;\n\n        function emit(event) {\n            self.manager.emit(event, input);\n        }\n\n        // 'panstart' and 'panmove'\n        if (state < STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n\n        emit(self.options.event); // simple 'eventName' events\n\n        if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n            emit(input.additionalEvent);\n        }\n\n        // panend and pancancel\n        if (state >= STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n    },\n\n    /**\n     * Check that all the require failure recognizers has failed,\n     * if true, it emits a gesture event,\n     * otherwise, setup the state to FAILED.\n     * @param {Object} input\n     */\n    tryEmit: function(input) {\n        if (this.canEmit()) {\n            return this.emit(input);\n        }\n        // it's failing anyway\n        this.state = STATE_FAILED;\n    },\n\n    /**\n     * can we emit?\n     * @returns {boolean}\n     */\n    canEmit: function() {\n        var i = 0;\n        while (i < this.requireFail.length) {\n            if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n                return false;\n            }\n            i++;\n        }\n        return true;\n    },\n\n    /**\n     * update the recognizer\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        // make a new copy of the inputData\n        // so we can change the inputData without messing up the other recognizers\n        var inputDataClone = assign({}, inputData);\n\n        // is is enabled and allow recognizing?\n        if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n            this.reset();\n            this.state = STATE_FAILED;\n            return;\n        }\n\n        // reset when we've reached the end\n        if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n            this.state = STATE_POSSIBLE;\n        }\n\n        this.state = this.process(inputDataClone);\n\n        // the recognizer has recognized a gesture\n        // so trigger an event\n        if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n            this.tryEmit(inputDataClone);\n        }\n    },\n\n    /**\n     * return the state of the recognizer\n     * the actual recognizing happens in this method\n     * @virtual\n     * @param {Object} inputData\n     * @returns {Const} STATE\n     */\n    process: function(inputData) { }, // jshint ignore:line\n\n    /**\n     * return the preferred touch-action\n     * @virtual\n     * @returns {Array}\n     */\n    getTouchAction: function() { },\n\n    /**\n     * called when the gesture isn't allowed to recognize\n     * like when another is being recognized or it is disabled\n     * @virtual\n     */\n    reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n    if (state & STATE_CANCELLED) {\n        return 'cancel';\n    } else if (state & STATE_ENDED) {\n        return 'end';\n    } else if (state & STATE_CHANGED) {\n        return 'move';\n    } else if (state & STATE_BEGAN) {\n        return 'start';\n    }\n    return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n    if (direction == DIRECTION_DOWN) {\n        return 'down';\n    } else if (direction == DIRECTION_UP) {\n        return 'up';\n    } else if (direction == DIRECTION_LEFT) {\n        return 'left';\n    } else if (direction == DIRECTION_RIGHT) {\n        return 'right';\n    }\n    return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n    var manager = recognizer.manager;\n    if (manager) {\n        return manager.get(otherRecognizer);\n    }\n    return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n    Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof AttrRecognizer\n     */\n    defaults: {\n        /**\n         * @type {Number}\n         * @default 1\n         */\n        pointers: 1\n    },\n\n    /**\n     * Used to check if it the recognizer receives valid input, like input.distance > 10.\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {Boolean} recognized\n     */\n    attrTest: function(input) {\n        var optionPointers = this.options.pointers;\n        return optionPointers === 0 || input.pointers.length === optionPointers;\n    },\n\n    /**\n     * Process the input and return the state for the recognizer\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {*} State\n     */\n    process: function(input) {\n        var state = this.state;\n        var eventType = input.eventType;\n\n        var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n        var isValid = this.attrTest(input);\n\n        // on cancel input and we've recognized before, return STATE_CANCELLED\n        if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n            return state | STATE_CANCELLED;\n        } else if (isRecognized || isValid) {\n            if (eventType & INPUT_END) {\n                return state | STATE_ENDED;\n            } else if (!(state & STATE_BEGAN)) {\n                return STATE_BEGAN;\n            }\n            return state | STATE_CHANGED;\n        }\n        return STATE_FAILED;\n    }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n\n    this.pX = null;\n    this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PanRecognizer\n     */\n    defaults: {\n        event: 'pan',\n        threshold: 10,\n        pointers: 1,\n        direction: DIRECTION_ALL\n    },\n\n    getTouchAction: function() {\n        var direction = this.options.direction;\n        var actions = [];\n        if (direction & DIRECTION_HORIZONTAL) {\n            actions.push(TOUCH_ACTION_PAN_Y);\n        }\n        if (direction & DIRECTION_VERTICAL) {\n            actions.push(TOUCH_ACTION_PAN_X);\n        }\n        return actions;\n    },\n\n    directionTest: function(input) {\n        var options = this.options;\n        var hasMoved = true;\n        var distance = input.distance;\n        var direction = input.direction;\n        var x = input.deltaX;\n        var y = input.deltaY;\n\n        // lock to axis?\n        if (!(direction & options.direction)) {\n            if (options.direction & DIRECTION_HORIZONTAL) {\n                direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n                hasMoved = x != this.pX;\n                distance = Math.abs(input.deltaX);\n            } else {\n                direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n                hasMoved = y != this.pY;\n                distance = Math.abs(input.deltaY);\n            }\n        }\n        input.direction = direction;\n        return hasMoved && distance > options.threshold && direction & options.direction;\n    },\n\n    attrTest: function(input) {\n        return AttrRecognizer.prototype.attrTest.call(this, input) &&\n            (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n    },\n\n    emit: function(input) {\n\n        this.pX = input.deltaX;\n        this.pY = input.deltaY;\n\n        var direction = directionStr(input.direction);\n\n        if (direction) {\n            input.additionalEvent = this.options.event + direction;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'pinch',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n    },\n\n    emit: function(input) {\n        if (input.scale !== 1) {\n            var inOut = input.scale < 1 ? 'in' : 'out';\n            input.additionalEvent = this.options.event + inOut;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    this._timer = null;\n    this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PressRecognizer\n     */\n    defaults: {\n        event: 'press',\n        pointers: 1,\n        time: 251, // minimal time of the pointer to be pressed\n        threshold: 9 // a minimal movement is ok, but keep it low\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_AUTO];\n    },\n\n    process: function(input) {\n        var options = this.options;\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTime = input.deltaTime > options.time;\n\n        this._input = input;\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n            this.reset();\n        } else if (input.eventType & INPUT_START) {\n            this.reset();\n            this._timer = setTimeoutContext(function() {\n                this.state = STATE_RECOGNIZED;\n                this.tryEmit();\n            }, options.time, this);\n        } else if (input.eventType & INPUT_END) {\n            return STATE_RECOGNIZED;\n        }\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function(input) {\n        if (this.state !== STATE_RECOGNIZED) {\n            return;\n        }\n\n        if (input && (input.eventType & INPUT_END)) {\n            this.manager.emit(this.options.event + 'up', input);\n        } else {\n            this._input.timeStamp = now();\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof RotateRecognizer\n     */\n    defaults: {\n        event: 'rotate',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n    }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof SwipeRecognizer\n     */\n    defaults: {\n        event: 'swipe',\n        threshold: 10,\n        velocity: 0.3,\n        direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n        pointers: 1\n    },\n\n    getTouchAction: function() {\n        return PanRecognizer.prototype.getTouchAction.call(this);\n    },\n\n    attrTest: function(input) {\n        var direction = this.options.direction;\n        var velocity;\n\n        if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n            velocity = input.overallVelocity;\n        } else if (direction & DIRECTION_HORIZONTAL) {\n            velocity = input.overallVelocityX;\n        } else if (direction & DIRECTION_VERTICAL) {\n            velocity = input.overallVelocityY;\n        }\n\n        return this._super.attrTest.call(this, input) &&\n            direction & input.offsetDirection &&\n            input.distance > this.options.threshold &&\n            input.maxPointers == this.options.pointers &&\n            abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n    },\n\n    emit: function(input) {\n        var direction = directionStr(input.offsetDirection);\n        if (direction) {\n            this.manager.emit(this.options.event + direction, input);\n        }\n\n        this.manager.emit(this.options.event, input);\n    }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    // previous time and center,\n    // used for tap counting\n    this.pTime = false;\n    this.pCenter = false;\n\n    this._timer = null;\n    this._input = null;\n    this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'tap',\n        pointers: 1,\n        taps: 1,\n        interval: 300, // max time between the multi-tap taps\n        time: 250, // max time of the pointer to be down (like finger on the screen)\n        threshold: 9, // a minimal movement is ok, but keep it low\n        posThreshold: 10 // a multi-tap can be a bit off the initial position\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_MANIPULATION];\n    },\n\n    process: function(input) {\n        var options = this.options;\n\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTouchTime = input.deltaTime < options.time;\n\n        this.reset();\n\n        if ((input.eventType & INPUT_START) && (this.count === 0)) {\n            return this.failTimeout();\n        }\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (validMovement && validTouchTime && validPointers) {\n            if (input.eventType != INPUT_END) {\n                return this.failTimeout();\n            }\n\n            var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n            var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n            this.pTime = input.timeStamp;\n            this.pCenter = input.center;\n\n            if (!validMultiTap || !validInterval) {\n                this.count = 1;\n            } else {\n                this.count += 1;\n            }\n\n            this._input = input;\n\n            // if tap count matches we have recognized it,\n            // else it has began recognizing...\n            var tapCount = this.count % options.taps;\n            if (tapCount === 0) {\n                // no failing requirements, immediately trigger the tap event\n                // or wait as long as the multitap interval to trigger\n                if (!this.hasRequireFailures()) {\n                    return STATE_RECOGNIZED;\n                } else {\n                    this._timer = setTimeoutContext(function() {\n                        this.state = STATE_RECOGNIZED;\n                        this.tryEmit();\n                    }, options.interval, this);\n                    return STATE_BEGAN;\n                }\n            }\n        }\n        return STATE_FAILED;\n    },\n\n    failTimeout: function() {\n        this._timer = setTimeoutContext(function() {\n            this.state = STATE_FAILED;\n        }, this.options.interval, this);\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function() {\n        if (this.state == STATE_RECOGNIZED) {\n            this._input.tapCount = this.count;\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n    options = options || {};\n    options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n    return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n    /**\n     * set if DOM events are being triggered.\n     * But this is slower and unused by simple implementations, so disabled by default.\n     * @type {Boolean}\n     * @default false\n     */\n    domEvents: false,\n\n    /**\n     * The value for the touchAction property/fallback.\n     * When set to `compute` it will magically set the correct value based on the added recognizers.\n     * @type {String}\n     * @default compute\n     */\n    touchAction: TOUCH_ACTION_COMPUTE,\n\n    /**\n     * @type {Boolean}\n     * @default true\n     */\n    enable: true,\n\n    /**\n     * EXPERIMENTAL FEATURE -- can be removed/changed\n     * Change the parent input target element.\n     * If Null, then it is being set the to main element.\n     * @type {Null|EventTarget}\n     * @default null\n     */\n    inputTarget: null,\n\n    /**\n     * force an input class\n     * @type {Null|Function}\n     * @default null\n     */\n    inputClass: null,\n\n    /**\n     * Default recognizer setup when calling `Hammer()`\n     * When creating a new Manager these will be skipped.\n     * @type {Array}\n     */\n    preset: [\n        // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n        [RotateRecognizer, {enable: false}],\n        [PinchRecognizer, {enable: false}, ['rotate']],\n        [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n        [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n        [TapRecognizer],\n        [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n        [PressRecognizer]\n    ],\n\n    /**\n     * Some CSS properties can be used to improve the working of Hammer.\n     * Add them to this method and they will be set when creating a new Manager.\n     * @namespace\n     */\n    cssProps: {\n        /**\n         * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userSelect: 'none',\n\n        /**\n         * Disable the Windows Phone grippers when pressing an element.\n         * @type {String}\n         * @default 'none'\n         */\n        touchSelect: 'none',\n\n        /**\n         * Disables the default callout shown when you touch and hold a touch target.\n         * On iOS, when you touch and hold a touch target such as a link, Safari displays\n         * a callout containing information about the link. This property allows you to disable that callout.\n         * @type {String}\n         * @default 'none'\n         */\n        touchCallout: 'none',\n\n        /**\n         * Specifies whether zooming is enabled. Used by IE10>\n         * @type {String}\n         * @default 'none'\n         */\n        contentZooming: 'none',\n\n        /**\n         * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userDrag: 'none',\n\n        /**\n         * Overrides the highlight color shown when the user taps a link or a JavaScript\n         * clickable element in iOS. This property obeys the alpha value, if specified.\n         * @type {String}\n         * @default 'rgba(0,0,0,0)'\n         */\n        tapHighlightColor: 'rgba(0,0,0,0)'\n    }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n    this.options = assign({}, Hammer.defaults, options || {});\n\n    this.options.inputTarget = this.options.inputTarget || element;\n\n    this.handlers = {};\n    this.session = {};\n    this.recognizers = [];\n    this.oldCssProps = {};\n\n    this.element = element;\n    this.input = createInputInstance(this);\n    this.touchAction = new TouchAction(this, this.options.touchAction);\n\n    toggleCssProps(this, true);\n\n    each(this.options.recognizers, function(item) {\n        var recognizer = this.add(new (item[0])(item[1]));\n        item[2] && recognizer.recognizeWith(item[2]);\n        item[3] && recognizer.requireFailure(item[3]);\n    }, this);\n}\n\nManager.prototype = {\n    /**\n     * set options\n     * @param {Object} options\n     * @returns {Manager}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // Options that need a little more setup\n        if (options.touchAction) {\n            this.touchAction.update();\n        }\n        if (options.inputTarget) {\n            // Clean up existing event listeners and reinitialize\n            this.input.destroy();\n            this.input.target = options.inputTarget;\n            this.input.init();\n        }\n        return this;\n    },\n\n    /**\n     * stop recognizing for this session.\n     * This session will be discarded, when a new [input]start event is fired.\n     * When forced, the recognizer cycle is stopped immediately.\n     * @param {Boolean} [force]\n     */\n    stop: function(force) {\n        this.session.stopped = force ? FORCED_STOP : STOP;\n    },\n\n    /**\n     * run the recognizers!\n     * called by the inputHandler function on every movement of the pointers (touches)\n     * it walks through all the recognizers and tries to detect the gesture that is being made\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        var session = this.session;\n        if (session.stopped) {\n            return;\n        }\n\n        // run the touch-action polyfill\n        this.touchAction.preventDefaults(inputData);\n\n        var recognizer;\n        var recognizers = this.recognizers;\n\n        // this holds the recognizer that is being recognized.\n        // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n        // if no recognizer is detecting a thing, it is set to `null`\n        var curRecognizer = session.curRecognizer;\n\n        // reset when the last recognizer is recognized\n        // or when we're in a new session\n        if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n            curRecognizer = session.curRecognizer = null;\n        }\n\n        var i = 0;\n        while (i < recognizers.length) {\n            recognizer = recognizers[i];\n\n            // find out if we are allowed try to recognize the input for this one.\n            // 1.   allow if the session is NOT forced stopped (see the .stop() method)\n            // 2.   allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n            //      that is being recognized.\n            // 3.   allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n            //      this can be setup with the `recognizeWith()` method on the recognizer.\n            if (session.stopped !== FORCED_STOP && ( // 1\n                    !curRecognizer || recognizer == curRecognizer || // 2\n                    recognizer.canRecognizeWith(curRecognizer))) { // 3\n                recognizer.recognize(inputData);\n            } else {\n                recognizer.reset();\n            }\n\n            // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n            // current active recognizer. but only if we don't already have an active recognizer\n            if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n                curRecognizer = session.curRecognizer = recognizer;\n            }\n            i++;\n        }\n    },\n\n    /**\n     * get a recognizer by its event name.\n     * @param {Recognizer|String} recognizer\n     * @returns {Recognizer|Null}\n     */\n    get: function(recognizer) {\n        if (recognizer instanceof Recognizer) {\n            return recognizer;\n        }\n\n        var recognizers = this.recognizers;\n        for (var i = 0; i < recognizers.length; i++) {\n            if (recognizers[i].options.event == recognizer) {\n                return recognizers[i];\n            }\n        }\n        return null;\n    },\n\n    /**\n     * add a recognizer to the manager\n     * existing recognizers with the same event name will be removed\n     * @param {Recognizer} recognizer\n     * @returns {Recognizer|Manager}\n     */\n    add: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'add', this)) {\n            return this;\n        }\n\n        // remove existing\n        var existing = this.get(recognizer.options.event);\n        if (existing) {\n            this.remove(existing);\n        }\n\n        this.recognizers.push(recognizer);\n        recognizer.manager = this;\n\n        this.touchAction.update();\n        return recognizer;\n    },\n\n    /**\n     * remove a recognizer by name or instance\n     * @param {Recognizer|String} recognizer\n     * @returns {Manager}\n     */\n    remove: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'remove', this)) {\n            return this;\n        }\n\n        recognizer = this.get(recognizer);\n\n        // let's make sure this recognizer exists\n        if (recognizer) {\n            var recognizers = this.recognizers;\n            var index = inArray(recognizers, recognizer);\n\n            if (index !== -1) {\n                recognizers.splice(index, 1);\n                this.touchAction.update();\n            }\n        }\n\n        return this;\n    },\n\n    /**\n     * bind event\n     * @param {String} events\n     * @param {Function} handler\n     * @returns {EventEmitter} this\n     */\n    on: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n        if (handler === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            handlers[event] = handlers[event] || [];\n            handlers[event].push(handler);\n        });\n        return this;\n    },\n\n    /**\n     * unbind event, leave emit blank to remove all handlers\n     * @param {String} events\n     * @param {Function} [handler]\n     * @returns {EventEmitter} this\n     */\n    off: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            if (!handler) {\n                delete handlers[event];\n            } else {\n                handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n            }\n        });\n        return this;\n    },\n\n    /**\n     * emit event to the listeners\n     * @param {String} event\n     * @param {Object} data\n     */\n    emit: function(event, data) {\n        // we also want to trigger dom events\n        if (this.options.domEvents) {\n            triggerDomEvent(event, data);\n        }\n\n        // no handlers, so skip it all\n        var handlers = this.handlers[event] && this.handlers[event].slice();\n        if (!handlers || !handlers.length) {\n            return;\n        }\n\n        data.type = event;\n        data.preventDefault = function() {\n            data.srcEvent.preventDefault();\n        };\n\n        var i = 0;\n        while (i < handlers.length) {\n            handlers[i](data);\n            i++;\n        }\n    },\n\n    /**\n     * destroy the manager and unbinds all events\n     * it doesn't unbind dom events, that is the user own responsibility\n     */\n    destroy: function() {\n        this.element && toggleCssProps(this, false);\n\n        this.handlers = {};\n        this.session = {};\n        this.input.destroy();\n        this.element = null;\n    }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n    var element = manager.element;\n    if (!element.style) {\n        return;\n    }\n    var prop;\n    each(manager.options.cssProps, function(value, name) {\n        prop = prefixed(element.style, name);\n        if (add) {\n            manager.oldCssProps[prop] = element.style[prop];\n            element.style[prop] = value;\n        } else {\n            element.style[prop] = manager.oldCssProps[prop] || '';\n        }\n    });\n    if (!add) {\n        manager.oldCssProps = {};\n    }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n    var gestureEvent = document.createEvent('Event');\n    gestureEvent.initEvent(event, true, true);\n    gestureEvent.gesture = data;\n    data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n    INPUT_START: INPUT_START,\n    INPUT_MOVE: INPUT_MOVE,\n    INPUT_END: INPUT_END,\n    INPUT_CANCEL: INPUT_CANCEL,\n\n    STATE_POSSIBLE: STATE_POSSIBLE,\n    STATE_BEGAN: STATE_BEGAN,\n    STATE_CHANGED: STATE_CHANGED,\n    STATE_ENDED: STATE_ENDED,\n    STATE_RECOGNIZED: STATE_RECOGNIZED,\n    STATE_CANCELLED: STATE_CANCELLED,\n    STATE_FAILED: STATE_FAILED,\n\n    DIRECTION_NONE: DIRECTION_NONE,\n    DIRECTION_LEFT: DIRECTION_LEFT,\n    DIRECTION_RIGHT: DIRECTION_RIGHT,\n    DIRECTION_UP: DIRECTION_UP,\n    DIRECTION_DOWN: DIRECTION_DOWN,\n    DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n    DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n    DIRECTION_ALL: DIRECTION_ALL,\n\n    Manager: Manager,\n    Input: Input,\n    TouchAction: TouchAction,\n\n    TouchInput: TouchInput,\n    MouseInput: MouseInput,\n    PointerEventInput: PointerEventInput,\n    TouchMouseInput: TouchMouseInput,\n    SingleTouchInput: SingleTouchInput,\n\n    Recognizer: Recognizer,\n    AttrRecognizer: AttrRecognizer,\n    Tap: TapRecognizer,\n    Pan: PanRecognizer,\n    Swipe: SwipeRecognizer,\n    Pinch: PinchRecognizer,\n    Rotate: RotateRecognizer,\n    Press: PressRecognizer,\n\n    on: addEventListeners,\n    off: removeEventListeners,\n    each: each,\n    merge: merge,\n    extend: extend,\n    assign: assign,\n    inherit: inherit,\n    bindFn: bindFn,\n    prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n//  style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n    define(function() {\n        return Hammer;\n    });\n} else if (typeof module != 'undefined' && module.exports) {\n    module.exports = Hammer;\n} else {\n    window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","import { sortFns, mutationSortFns, createContext, splitProps, createMemo, createComponent, mergeProps, createSignal, useContext, createUniqueId, createEffect, onCleanup, Show, on, delegateEvents, Dynamic, createRenderEffect, setAttribute, memo, Portal, untrack, isServer, onMount, createComputed, getOwner, template, use, insert, className, getSidedProp, convertRemToPixels, setStyleProperty, getQueryStatusColor, getMutationStatusColor, getQueryStatusLabel, spread, getQueryStatusColorByLabel, displayValue, For, batch, clearDelegatedEvents, serialize, Index, updateNestedDataByPath, $TRACK, createRoot, DEV, addEventListener, stringify, Switch, Match, deleteNestedDataByPath, useTransition } from './ZCXR2IAF.js';\n\n// ../../node_modules/.pnpm/@solid-primitives+utils@6.4.0_solid-js@1.9.12/node_modules/@solid-primitives/utils/dist/index.js\nvar isClient = !isServer;\nvar isDev = isClient && !!DEV;\nvar noop = (() => void 0);\nvar isNonNullable = (i2) => i2 != null;\nvar filterNonNullable = (arr) => arr.filter(isNonNullable);\nfunction chain(callbacks) {\n  return (...args) => {\n    for (const callback of callbacks)\n      callback && callback(...args);\n  };\n}\nvar access = (v) => typeof v === \"function\" && !v.length ? v() : v;\nvar asArray = (value) => Array.isArray(value) ? value : value ? [value] : [];\nfunction accessWith(valueOrFn, ...args) {\n  return typeof valueOrFn === \"function\" ? valueOrFn(...args) : valueOrFn;\n}\nvar tryOnCleanup = isDev ? (fn) => getOwner() ? onCleanup(fn) : fn : onCleanup;\nfunction handleDiffArray(current, prev, handleAdded, handleRemoved) {\n  const currLength = current.length;\n  const prevLength = prev.length;\n  let i2 = 0;\n  if (!prevLength) {\n    for (; i2 < currLength; i2++)\n      handleAdded(current[i2]);\n    return;\n  }\n  if (!currLength) {\n    for (; i2 < prevLength; i2++)\n      handleRemoved(prev[i2]);\n    return;\n  }\n  for (; i2 < prevLength; i2++) {\n    if (prev[i2] !== current[i2])\n      break;\n  }\n  let prevEl;\n  let currEl;\n  prev = prev.slice(i2);\n  current = current.slice(i2);\n  for (prevEl of prev) {\n    if (!current.includes(prevEl))\n      handleRemoved(prevEl);\n  }\n  for (currEl of current) {\n    if (!prev.includes(currEl))\n      handleAdded(currEl);\n  }\n}\n\n// ../../node_modules/.pnpm/@solid-primitives+storage@1.3.11_solid-js@1.9.12/node_modules/@solid-primitives/storage/dist/index.js\nfunction createStorage(props) {\n  const [error, setError] = createSignal();\n  const handleError = props?.throw ? (err, fallback) => {\n    setError(err instanceof Error ? err : new Error(fallback));\n    throw err;\n  } : (err, fallback) => {\n    setError(err instanceof Error ? err : new Error(fallback));\n  };\n  const apis = props?.api ? Array.isArray(props.api) ? props.api : [props.api] : [globalThis.localStorage].filter(Boolean);\n  const prefix = props?.prefix ? `${props.prefix}.` : \"\";\n  const signals = /* @__PURE__ */ new Map();\n  const store = new Proxy(\n    {},\n    {\n      get(_, key) {\n        let node = signals.get(key);\n        if (!node) {\n          node = createSignal(void 0, { equals: false });\n          signals.set(key, node);\n        }\n        node[0]();\n        const value = apis.reduce(\n          (result, api) => {\n            if (result !== null || !api) {\n              return result;\n            }\n            try {\n              return api.getItem(`${prefix}${key}`);\n            } catch (err) {\n              handleError(err, `Error reading ${prefix}${key} from ${api[\"name\"]}`);\n              return null;\n            }\n          },\n          null\n        );\n        if (value !== null && props?.deserializer) {\n          return props.deserializer(value, key, props.options);\n        }\n        return value;\n      }\n    }\n  );\n  const setter = (key, value, options) => {\n    const filteredValue = props?.serializer ? props.serializer(value, key, options ?? props.options) : value;\n    const apiKey = `${prefix}${key}`;\n    apis.forEach((api) => {\n      try {\n        api.getItem(apiKey) !== filteredValue && api.setItem(apiKey, filteredValue);\n      } catch (err) {\n        handleError(err, `Error setting ${prefix}${key} to ${filteredValue} in ${api.name}`);\n      }\n    });\n    const node = signals.get(key);\n    node && node[1]();\n  };\n  const remove = (key) => apis.forEach((api) => {\n    try {\n      api.removeItem(`${prefix}${key}`);\n    } catch (err) {\n      handleError(err, `Error removing ${prefix}${key} from ${api.name}`);\n    }\n  });\n  const clear = () => apis.forEach((api) => {\n    try {\n      api.clear();\n    } catch (err) {\n      handleError(err, `Error clearing ${api.name}`);\n    }\n  });\n  const toJSON = () => {\n    const result = {};\n    const addValue = (key, value) => {\n      if (!result.hasOwnProperty(key)) {\n        const filteredValue = value && props?.deserializer ? props.deserializer(value, key, props.options) : value;\n        if (filteredValue) {\n          result[key] = filteredValue;\n        }\n      }\n    };\n    apis.forEach((api) => {\n      if (typeof api.getAll === \"function\") {\n        let values;\n        try {\n          values = api.getAll();\n        } catch (err) {\n          handleError(err, `Error getting all values from in ${api.name}`);\n        }\n        for (const key of values) {\n          addValue(key, values[key]);\n        }\n      } else {\n        let index = 0, key;\n        try {\n          while (key = api.key(index++)) {\n            if (!result.hasOwnProperty(key)) {\n              addValue(key, api.getItem(key));\n            }\n          }\n        } catch (err) {\n          handleError(err, `Error getting all values from ${api.name}`);\n        }\n      }\n    });\n    return result;\n  };\n  props?.sync !== false && onMount(() => {\n    const listener = (ev) => {\n      let changed = false;\n      apis.forEach((api) => {\n        try {\n          if (api !== ev.storageArea && ev.key && ev.newValue !== api.getItem(ev.key)) {\n            ev.newValue ? api.setItem(ev.key, ev.newValue) : api.removeItem(ev.key);\n            changed = true;\n          }\n        } catch (err) {\n          handleError(\n            err,\n            `Error synching api ${api.name} from storage event (${ev.key}=${ev.newValue})`\n          );\n        }\n      });\n      changed && ev.key && signals.get(ev.key)?.[1]();\n    };\n    if (\"addEventListener\" in globalThis) {\n      globalThis.addEventListener(\"storage\", listener);\n      onCleanup(() => globalThis.removeEventListener(\"storage\", listener));\n    } else {\n      apis.forEach((api) => api.addEventListener?.(\"storage\", listener));\n      onCleanup(() => apis.forEach((api) => api.removeEventListener?.(\"storage\", listener)));\n    }\n  });\n  return [\n    store,\n    setter,\n    {\n      clear,\n      error,\n      remove,\n      toJSON\n    }\n  ];\n}\nvar createLocalStorage = createStorage;\nvar addClearMethod = (storage) => {\n  if (typeof storage.clear === \"function\") {\n    return storage;\n  }\n  storage.clear = () => {\n    let key;\n    while (key = storage.key(0)) {\n      storage.removeItem(key);\n    }\n  };\n  return storage;\n};\nvar serializeCookieOptions = (options) => {\n  if (!options) {\n    return \"\";\n  }\n  let memo2 = \"\";\n  for (const key in options) {\n    if (!options.hasOwnProperty(key)) {\n      continue;\n    }\n    const value = options[key];\n    memo2 += value instanceof Date ? `; ${key}=${value.toUTCString()}` : typeof value === \"boolean\" ? `; ${key}` : `; ${key}=${value}`;\n  }\n  return memo2;\n};\nvar cookieStorage = addClearMethod({\n  _cookies: [globalThis.document, \"cookie\"],\n  getItem: (key) => cookieStorage._cookies[0][cookieStorage._cookies[1]].match(\"(^|;)\\\\s*\" + key + \"\\\\s*=\\\\s*([^;]+)\")?.pop() ?? null,\n  setItem: (key, value, options) => {\n    const oldValue = cookieStorage.getItem(key);\n    cookieStorage._cookies[0][cookieStorage._cookies[1]] = `${key}=${value}${serializeCookieOptions(\n      options\n    )}`;\n    const storageEvent = Object.assign(new Event(\"storage\"), {\n      key,\n      oldValue,\n      newValue: value,\n      url: globalThis.document.URL,\n      storageArea: cookieStorage\n    });\n    window.dispatchEvent(storageEvent);\n  },\n  removeItem: (key) => {\n    cookieStorage._cookies[0][cookieStorage._cookies[1]] = `${key}=deleted${serializeCookieOptions({\n      expires: /* @__PURE__ */ new Date(0)\n    })}`;\n  },\n  key: (index) => {\n    let key = null;\n    let count = 0;\n    cookieStorage._cookies[0][cookieStorage._cookies[1]].replace(\n      /(?:^|;)\\s*(.+?)\\s*=\\s*[^;]+/g,\n      (_, found) => {\n        if (!key && found && count++ === index) {\n          key = found;\n        }\n        return \"\";\n      }\n    );\n    return key;\n  },\n  get length() {\n    let length = 0;\n    cookieStorage._cookies[0][cookieStorage._cookies[1]].replace(\n      /(?:^|;)\\s*.+?\\s*=\\s*[^;]+/g,\n      (found) => {\n        length += found ? 1 : 0;\n        return \"\";\n      }\n    );\n    return length;\n  }\n});\n\n// src/constants.ts\nvar firstBreakpoint = 1024;\nvar secondBreakpoint = 796;\nvar thirdBreakpoint = 700;\nvar BUTTON_POSITION = \"bottom-right\";\nvar POSITION = \"bottom\";\nvar THEME_PREFERENCE = \"system\";\nvar INITIAL_IS_OPEN = false;\nvar DEFAULT_HEIGHT = 500;\nvar PIP_DEFAULT_HEIGHT = 500;\nvar DEFAULT_WIDTH = 500;\nvar DEFAULT_SORT_FN_NAME = Object.keys(sortFns)[0];\nvar DEFAULT_SORT_ORDER = 1;\nvar DEFAULT_MUTATION_SORT_FN_NAME = Object.keys(mutationSortFns)[0];\n\n// src/contexts/QueryDevtoolsContext.ts\nvar QueryDevtoolsContext = createContext({\n  client: void 0,\n  onlineManager: void 0,\n  queryFlavor: \"\",\n  version: \"\",\n  shadowDOMTarget: void 0\n});\nfunction useQueryDevtoolsContext() {\n  return useContext(QueryDevtoolsContext);\n}\n\n// src/contexts/PiPContext.tsx\nvar PipOpenError = class extends Error {\n};\nvar PiPContext = createContext(void 0);\nvar PiPProvider = (props) => {\n  const [pipWindow, setPipWindow] = createSignal(null);\n  const closePipWindow = () => {\n    const w = pipWindow();\n    if (w != null) {\n      w.close();\n      props.setLocalStore(\"pip_open\", \"false\");\n      setPipWindow(null);\n    }\n  };\n  const requestPipWindow = (width, height) => {\n    if (pipWindow() != null) {\n      return;\n    }\n    const pip = window.open(\"\", \"TSQD-Devtools-Panel\", `width=${width},height=${height},popup`);\n    if (!pip) {\n      throw new PipOpenError(\"Failed to open popup. Please allow popups for this site to view the devtools in picture-in-picture mode.\");\n    }\n    pip.document.head.innerHTML = \"\";\n    pip.document.body.innerHTML = \"\";\n    clearDelegatedEvents(pip.document);\n    pip.document.title = \"TanStack Query Devtools\";\n    pip.document.body.style.margin = \"0\";\n    pip.addEventListener(\"pagehide\", () => {\n      props.setLocalStore(\"pip_open\", \"false\");\n      setPipWindow(null);\n    });\n    [...(useQueryDevtoolsContext().shadowDOMTarget || document).styleSheets].forEach((styleSheet) => {\n      try {\n        const cssRules = [...styleSheet.cssRules].map((rule) => rule.cssText).join(\"\");\n        const style = document.createElement(\"style\");\n        const style_node = styleSheet.ownerNode;\n        let style_id = \"\";\n        if (style_node && \"id\" in style_node) {\n          style_id = style_node.id;\n        }\n        if (style_id) {\n          style.setAttribute(\"id\", style_id);\n        }\n        style.textContent = cssRules;\n        pip.document.head.appendChild(style);\n      } catch (e2) {\n        const link = document.createElement(\"link\");\n        if (styleSheet.href == null) {\n          return;\n        }\n        link.rel = \"stylesheet\";\n        link.type = styleSheet.type;\n        link.media = styleSheet.media.toString();\n        link.href = styleSheet.href;\n        pip.document.head.appendChild(link);\n      }\n    });\n    delegateEvents([\"focusin\", \"focusout\", \"pointermove\", \"keydown\", \"pointerdown\", \"pointerup\", \"click\", \"mousedown\", \"input\"], pip.document);\n    props.setLocalStore(\"pip_open\", \"true\");\n    setPipWindow(pip);\n  };\n  createEffect(() => {\n    const pip_open = props.localStore.pip_open ?? \"false\";\n    if (pip_open === \"true\" && !props.disabled) {\n      try {\n        requestPipWindow(Number(window.innerWidth), Number(props.localStore.height || PIP_DEFAULT_HEIGHT));\n      } catch (error) {\n        if (error instanceof PipOpenError) {\n          props.setLocalStore(\"pip_open\", \"false\");\n          props.setLocalStore(\"open\", \"false\");\n          return;\n        }\n        throw error;\n      }\n    }\n  });\n  createEffect(() => {\n    const gooberStyles = (useQueryDevtoolsContext().shadowDOMTarget || document).querySelector(\"#_goober\");\n    const w = pipWindow();\n    if (gooberStyles && w) {\n      const observer = new MutationObserver(() => {\n        const pip_style = (useQueryDevtoolsContext().shadowDOMTarget || w.document).querySelector(\"#_goober\");\n        if (pip_style) {\n          pip_style.textContent = gooberStyles.textContent;\n        }\n      });\n      observer.observe(gooberStyles, {\n        childList: true,\n        // observe direct children\n        subtree: true,\n        // and lower descendants too\n        characterDataOldValue: true\n        // pass old data to callback\n      });\n      onCleanup(() => {\n        observer.disconnect();\n      });\n    }\n  });\n  const value = createMemo(() => ({\n    pipWindow: pipWindow(),\n    requestPipWindow,\n    closePipWindow,\n    disabled: props.disabled ?? false\n  }));\n  return createComponent(PiPContext.Provider, {\n    value,\n    get children() {\n      return props.children;\n    }\n  });\n};\nvar usePiPWindow = () => {\n  const context = createMemo(() => {\n    const ctx = useContext(PiPContext);\n    if (!ctx) {\n      throw new Error(\"usePiPWindow must be used within a PiPProvider\");\n    }\n    return ctx();\n  });\n  return context;\n};\n\n// src/contexts/ThemeContext.ts\nvar ThemeContext = createContext(\n  () => \"dark\"\n);\nfunction useTheme() {\n  return useContext(ThemeContext);\n}\n\n// ../../node_modules/.pnpm/@tanstack+match-sorter-utils@8.19.4/node_modules/@tanstack/match-sorter-utils/build/lib/index.mjs\nvar characterMap = {\n  \\u00C0: \"A\",\n  \\u00C1: \"A\",\n  \\u00C2: \"A\",\n  \\u00C3: \"A\",\n  \\u00C4: \"A\",\n  \\u00C5: \"A\",\n  \\u1EA4: \"A\",\n  \\u1EAE: \"A\",\n  \\u1EB2: \"A\",\n  \\u1EB4: \"A\",\n  \\u1EB6: \"A\",\n  \\u00C6: \"AE\",\n  \\u1EA6: \"A\",\n  \\u1EB0: \"A\",\n  \\u0202: \"A\",\n  \\u00C7: \"C\",\n  \\u1E08: \"C\",\n  \\u00C8: \"E\",\n  \\u00C9: \"E\",\n  \\u00CA: \"E\",\n  \\u00CB: \"E\",\n  \\u1EBE: \"E\",\n  \\u1E16: \"E\",\n  \\u1EC0: \"E\",\n  \\u1E14: \"E\",\n  \\u1E1C: \"E\",\n  \\u0206: \"E\",\n  \\u00CC: \"I\",\n  \\u00CD: \"I\",\n  \\u00CE: \"I\",\n  \\u00CF: \"I\",\n  \\u1E2E: \"I\",\n  \\u020A: \"I\",\n  \\u00D0: \"D\",\n  \\u00D1: \"N\",\n  \\u00D2: \"O\",\n  \\u00D3: \"O\",\n  \\u00D4: \"O\",\n  \\u00D5: \"O\",\n  \\u00D6: \"O\",\n  \\u00D8: \"O\",\n  \\u1ED0: \"O\",\n  \\u1E4C: \"O\",\n  \\u1E52: \"O\",\n  \\u020E: \"O\",\n  \\u00D9: \"U\",\n  \\u00DA: \"U\",\n  \\u00DB: \"U\",\n  \\u00DC: \"U\",\n  \\u00DD: \"Y\",\n  \\u00E0: \"a\",\n  \\u00E1: \"a\",\n  \\u00E2: \"a\",\n  \\u00E3: \"a\",\n  \\u00E4: \"a\",\n  \\u00E5: \"a\",\n  \\u1EA5: \"a\",\n  \\u1EAF: \"a\",\n  \\u1EB3: \"a\",\n  \\u1EB5: \"a\",\n  \\u1EB7: \"a\",\n  \\u00E6: \"ae\",\n  \\u1EA7: \"a\",\n  \\u1EB1: \"a\",\n  \\u0203: \"a\",\n  \\u00E7: \"c\",\n  \\u1E09: \"c\",\n  \\u00E8: \"e\",\n  \\u00E9: \"e\",\n  \\u00EA: \"e\",\n  \\u00EB: \"e\",\n  \\u1EBF: \"e\",\n  \\u1E17: \"e\",\n  \\u1EC1: \"e\",\n  \\u1E15: \"e\",\n  \\u1E1D: \"e\",\n  \\u0207: \"e\",\n  \\u00EC: \"i\",\n  \\u00ED: \"i\",\n  \\u00EE: \"i\",\n  \\u00EF: \"i\",\n  \\u1E2F: \"i\",\n  \\u020B: \"i\",\n  \\u00F0: \"d\",\n  \\u00F1: \"n\",\n  \\u00F2: \"o\",\n  \\u00F3: \"o\",\n  \\u00F4: \"o\",\n  \\u00F5: \"o\",\n  \\u00F6: \"o\",\n  \\u00F8: \"o\",\n  \\u1ED1: \"o\",\n  \\u1E4D: \"o\",\n  \\u1E53: \"o\",\n  \\u020F: \"o\",\n  \\u00F9: \"u\",\n  \\u00FA: \"u\",\n  \\u00FB: \"u\",\n  \\u00FC: \"u\",\n  \\u00FD: \"y\",\n  \\u00FF: \"y\",\n  \\u0100: \"A\",\n  \\u0101: \"a\",\n  \\u0102: \"A\",\n  \\u0103: \"a\",\n  \\u0104: \"A\",\n  \\u0105: \"a\",\n  \\u0106: \"C\",\n  \\u0107: \"c\",\n  \\u0108: \"C\",\n  \\u0109: \"c\",\n  \\u010A: \"C\",\n  \\u010B: \"c\",\n  \\u010C: \"C\",\n  \\u010D: \"c\",\n  C\\u0306: \"C\",\n  c\\u0306: \"c\",\n  \\u010E: \"D\",\n  \\u010F: \"d\",\n  \\u0110: \"D\",\n  \\u0111: \"d\",\n  \\u0112: \"E\",\n  \\u0113: \"e\",\n  \\u0114: \"E\",\n  \\u0115: \"e\",\n  \\u0116: \"E\",\n  \\u0117: \"e\",\n  \\u0118: \"E\",\n  \\u0119: \"e\",\n  \\u011A: \"E\",\n  \\u011B: \"e\",\n  \\u011C: \"G\",\n  \\u01F4: \"G\",\n  \\u011D: \"g\",\n  \\u01F5: \"g\",\n  \\u011E: \"G\",\n  \\u011F: \"g\",\n  \\u0120: \"G\",\n  \\u0121: \"g\",\n  \\u0122: \"G\",\n  \\u0123: \"g\",\n  \\u0124: \"H\",\n  \\u0125: \"h\",\n  \\u0126: \"H\",\n  \\u0127: \"h\",\n  \\u1E2A: \"H\",\n  \\u1E2B: \"h\",\n  \\u0128: \"I\",\n  \\u0129: \"i\",\n  \\u012A: \"I\",\n  \\u012B: \"i\",\n  \\u012C: \"I\",\n  \\u012D: \"i\",\n  \\u012E: \"I\",\n  \\u012F: \"i\",\n  \\u0130: \"I\",\n  \\u0131: \"i\",\n  \\u0132: \"IJ\",\n  \\u0133: \"ij\",\n  \\u0134: \"J\",\n  \\u0135: \"j\",\n  \\u0136: \"K\",\n  \\u0137: \"k\",\n  \\u1E30: \"K\",\n  \\u1E31: \"k\",\n  K\\u0306: \"K\",\n  k\\u0306: \"k\",\n  \\u0139: \"L\",\n  \\u013A: \"l\",\n  \\u013B: \"L\",\n  \\u013C: \"l\",\n  \\u013D: \"L\",\n  \\u013E: \"l\",\n  \\u013F: \"L\",\n  \\u0140: \"l\",\n  \\u0141: \"l\",\n  \\u0142: \"l\",\n  \\u1E3E: \"M\",\n  \\u1E3F: \"m\",\n  M\\u0306: \"M\",\n  m\\u0306: \"m\",\n  \\u0143: \"N\",\n  \\u0144: \"n\",\n  \\u0145: \"N\",\n  \\u0146: \"n\",\n  \\u0147: \"N\",\n  \\u0148: \"n\",\n  \\u0149: \"n\",\n  N\\u0306: \"N\",\n  n\\u0306: \"n\",\n  \\u014C: \"O\",\n  \\u014D: \"o\",\n  \\u014E: \"O\",\n  \\u014F: \"o\",\n  \\u0150: \"O\",\n  \\u0151: \"o\",\n  \\u0152: \"OE\",\n  \\u0153: \"oe\",\n  P\\u0306: \"P\",\n  p\\u0306: \"p\",\n  \\u0154: \"R\",\n  \\u0155: \"r\",\n  \\u0156: \"R\",\n  \\u0157: \"r\",\n  \\u0158: \"R\",\n  \\u0159: \"r\",\n  R\\u0306: \"R\",\n  r\\u0306: \"r\",\n  \\u0212: \"R\",\n  \\u0213: \"r\",\n  \\u015A: \"S\",\n  \\u015B: \"s\",\n  \\u015C: \"S\",\n  \\u015D: \"s\",\n  \\u015E: \"S\",\n  \\u0218: \"S\",\n  \\u0219: \"s\",\n  \\u015F: \"s\",\n  \\u0160: \"S\",\n  \\u0161: \"s\",\n  \\u0162: \"T\",\n  \\u0163: \"t\",\n  \\u021B: \"t\",\n  \\u021A: \"T\",\n  \\u0164: \"T\",\n  \\u0165: \"t\",\n  \\u0166: \"T\",\n  \\u0167: \"t\",\n  T\\u0306: \"T\",\n  t\\u0306: \"t\",\n  \\u0168: \"U\",\n  \\u0169: \"u\",\n  \\u016A: \"U\",\n  \\u016B: \"u\",\n  \\u016C: \"U\",\n  \\u016D: \"u\",\n  \\u016E: \"U\",\n  \\u016F: \"u\",\n  \\u0170: \"U\",\n  \\u0171: \"u\",\n  \\u0172: \"U\",\n  \\u0173: \"u\",\n  \\u0216: \"U\",\n  \\u0217: \"u\",\n  V\\u0306: \"V\",\n  v\\u0306: \"v\",\n  \\u0174: \"W\",\n  \\u0175: \"w\",\n  \\u1E82: \"W\",\n  \\u1E83: \"w\",\n  X\\u0306: \"X\",\n  x\\u0306: \"x\",\n  \\u0176: \"Y\",\n  \\u0177: \"y\",\n  \\u0178: \"Y\",\n  Y\\u0306: \"Y\",\n  y\\u0306: \"y\",\n  \\u0179: \"Z\",\n  \\u017A: \"z\",\n  \\u017B: \"Z\",\n  \\u017C: \"z\",\n  \\u017D: \"Z\",\n  \\u017E: \"z\",\n  \\u017F: \"s\",\n  \\u0192: \"f\",\n  \\u01A0: \"O\",\n  \\u01A1: \"o\",\n  \\u01AF: \"U\",\n  \\u01B0: \"u\",\n  \\u01CD: \"A\",\n  \\u01CE: \"a\",\n  \\u01CF: \"I\",\n  \\u01D0: \"i\",\n  \\u01D1: \"O\",\n  \\u01D2: \"o\",\n  \\u01D3: \"U\",\n  \\u01D4: \"u\",\n  \\u01D5: \"U\",\n  \\u01D6: \"u\",\n  \\u01D7: \"U\",\n  \\u01D8: \"u\",\n  \\u01D9: \"U\",\n  \\u01DA: \"u\",\n  \\u01DB: \"U\",\n  \\u01DC: \"u\",\n  \\u1EE8: \"U\",\n  \\u1EE9: \"u\",\n  \\u1E78: \"U\",\n  \\u1E79: \"u\",\n  \\u01FA: \"A\",\n  \\u01FB: \"a\",\n  \\u01FC: \"AE\",\n  \\u01FD: \"ae\",\n  \\u01FE: \"O\",\n  \\u01FF: \"o\",\n  \\u00DE: \"TH\",\n  \\u00FE: \"th\",\n  \\u1E54: \"P\",\n  \\u1E55: \"p\",\n  \\u1E64: \"S\",\n  \\u1E65: \"s\",\n  X\\u0301: \"X\",\n  x\\u0301: \"x\",\n  \\u0403: \"\\u0413\",\n  \\u0453: \"\\u0433\",\n  \\u040C: \"\\u041A\",\n  \\u045C: \"\\u043A\",\n  A\\u030B: \"A\",\n  a\\u030B: \"a\",\n  E\\u030B: \"E\",\n  e\\u030B: \"e\",\n  I\\u030B: \"I\",\n  i\\u030B: \"i\",\n  \\u01F8: \"N\",\n  \\u01F9: \"n\",\n  \\u1ED2: \"O\",\n  \\u1ED3: \"o\",\n  \\u1E50: \"O\",\n  \\u1E51: \"o\",\n  \\u1EEA: \"U\",\n  \\u1EEB: \"u\",\n  \\u1E80: \"W\",\n  \\u1E81: \"w\",\n  \\u1EF2: \"Y\",\n  \\u1EF3: \"y\",\n  \\u0200: \"A\",\n  \\u0201: \"a\",\n  \\u0204: \"E\",\n  \\u0205: \"e\",\n  \\u0208: \"I\",\n  \\u0209: \"i\",\n  \\u020C: \"O\",\n  \\u020D: \"o\",\n  \\u0210: \"R\",\n  \\u0211: \"r\",\n  \\u0214: \"U\",\n  \\u0215: \"u\",\n  B\\u030C: \"B\",\n  b\\u030C: \"b\",\n  \\u010C\\u0323: \"C\",\n  \\u010D\\u0323: \"c\",\n  \\u00CA\\u030C: \"E\",\n  \\u00EA\\u030C: \"e\",\n  F\\u030C: \"F\",\n  f\\u030C: \"f\",\n  \\u01E6: \"G\",\n  \\u01E7: \"g\",\n  \\u021E: \"H\",\n  \\u021F: \"h\",\n  J\\u030C: \"J\",\n  \\u01F0: \"j\",\n  \\u01E8: \"K\",\n  \\u01E9: \"k\",\n  M\\u030C: \"M\",\n  m\\u030C: \"m\",\n  P\\u030C: \"P\",\n  p\\u030C: \"p\",\n  Q\\u030C: \"Q\",\n  q\\u030C: \"q\",\n  \\u0158\\u0329: \"R\",\n  \\u0159\\u0329: \"r\",\n  \\u1E66: \"S\",\n  \\u1E67: \"s\",\n  V\\u030C: \"V\",\n  v\\u030C: \"v\",\n  W\\u030C: \"W\",\n  w\\u030C: \"w\",\n  X\\u030C: \"X\",\n  x\\u030C: \"x\",\n  Y\\u030C: \"Y\",\n  y\\u030C: \"y\",\n  A\\u0327: \"A\",\n  a\\u0327: \"a\",\n  B\\u0327: \"B\",\n  b\\u0327: \"b\",\n  \\u1E10: \"D\",\n  \\u1E11: \"d\",\n  \\u0228: \"E\",\n  \\u0229: \"e\",\n  \\u0190\\u0327: \"E\",\n  \\u025B\\u0327: \"e\",\n  \\u1E28: \"H\",\n  \\u1E29: \"h\",\n  I\\u0327: \"I\",\n  i\\u0327: \"i\",\n  \\u0197\\u0327: \"I\",\n  \\u0268\\u0327: \"i\",\n  M\\u0327: \"M\",\n  m\\u0327: \"m\",\n  O\\u0327: \"O\",\n  o\\u0327: \"o\",\n  Q\\u0327: \"Q\",\n  q\\u0327: \"q\",\n  U\\u0327: \"U\",\n  u\\u0327: \"u\",\n  X\\u0327: \"X\",\n  x\\u0327: \"x\",\n  Z\\u0327: \"Z\",\n  z\\u0327: \"z\"\n};\nvar chars = Object.keys(characterMap).join(\"|\");\nvar allAccents = new RegExp(chars, \"g\");\nfunction removeAccents(str) {\n  return str.replace(allAccents, (match) => {\n    return characterMap[match];\n  });\n}\nvar rankings = {\n  CASE_SENSITIVE_EQUAL: 7,\n  EQUAL: 6,\n  STARTS_WITH: 5,\n  WORD_STARTS_WITH: 4,\n  CONTAINS: 3,\n  ACRONYM: 2,\n  MATCHES: 1,\n  NO_MATCH: 0\n};\nfunction rankItem(item, value, options) {\n  var _options$threshold;\n  options = options || {};\n  options.threshold = (_options$threshold = options.threshold) != null ? _options$threshold : rankings.MATCHES;\n  if (!options.accessors) {\n    const rank = getMatchRanking(item, value, options);\n    return {\n      // ends up being duplicate of 'item' in matches but consistent\n      rankedValue: item,\n      rank,\n      accessorIndex: -1,\n      accessorThreshold: options.threshold,\n      passed: rank >= options.threshold\n    };\n  }\n  const valuesToRank = getAllValuesToRank(item, options.accessors);\n  const rankingInfo = {\n    rankedValue: item,\n    rank: rankings.NO_MATCH,\n    accessorIndex: -1,\n    accessorThreshold: options.threshold,\n    passed: false\n  };\n  for (let i2 = 0; i2 < valuesToRank.length; i2++) {\n    const rankValue = valuesToRank[i2];\n    let newRank = getMatchRanking(rankValue.itemValue, value, options);\n    const {\n      minRanking,\n      maxRanking,\n      threshold = options.threshold\n    } = rankValue.attributes;\n    if (newRank < minRanking && newRank >= rankings.MATCHES) {\n      newRank = minRanking;\n    } else if (newRank > maxRanking) {\n      newRank = maxRanking;\n    }\n    newRank = Math.min(newRank, maxRanking);\n    if (newRank >= threshold && newRank > rankingInfo.rank) {\n      rankingInfo.rank = newRank;\n      rankingInfo.passed = true;\n      rankingInfo.accessorIndex = i2;\n      rankingInfo.accessorThreshold = threshold;\n      rankingInfo.rankedValue = rankValue.itemValue;\n    }\n  }\n  return rankingInfo;\n}\nfunction getMatchRanking(testString, stringToRank, options) {\n  testString = prepareValueForComparison(testString, options);\n  stringToRank = prepareValueForComparison(stringToRank, options);\n  if (stringToRank.length > testString.length) {\n    return rankings.NO_MATCH;\n  }\n  if (testString === stringToRank) {\n    return rankings.CASE_SENSITIVE_EQUAL;\n  }\n  testString = testString.toLowerCase();\n  stringToRank = stringToRank.toLowerCase();\n  if (testString === stringToRank) {\n    return rankings.EQUAL;\n  }\n  if (testString.startsWith(stringToRank)) {\n    return rankings.STARTS_WITH;\n  }\n  if (testString.includes(` ${stringToRank}`)) {\n    return rankings.WORD_STARTS_WITH;\n  }\n  if (testString.includes(stringToRank)) {\n    return rankings.CONTAINS;\n  } else if (stringToRank.length === 1) {\n    return rankings.NO_MATCH;\n  }\n  if (getAcronym(testString).includes(stringToRank)) {\n    return rankings.ACRONYM;\n  }\n  return getClosenessRanking(testString, stringToRank);\n}\nfunction getAcronym(string) {\n  let acronym = \"\";\n  const wordsInString = string.split(\" \");\n  wordsInString.forEach((wordInString) => {\n    const splitByHyphenWords = wordInString.split(\"-\");\n    splitByHyphenWords.forEach((splitByHyphenWord) => {\n      acronym += splitByHyphenWord.substr(0, 1);\n    });\n  });\n  return acronym;\n}\nfunction getClosenessRanking(testString, stringToRank) {\n  let matchingInOrderCharCount = 0;\n  let charNumber = 0;\n  function findMatchingCharacter(matchChar, string, index) {\n    for (let j = index, J = string.length; j < J; j++) {\n      const stringChar = string[j];\n      if (stringChar === matchChar) {\n        matchingInOrderCharCount += 1;\n        return j + 1;\n      }\n    }\n    return -1;\n  }\n  function getRanking(spread3) {\n    const spreadPercentage = 1 / spread3;\n    const inOrderPercentage = matchingInOrderCharCount / stringToRank.length;\n    const ranking = rankings.MATCHES + inOrderPercentage * spreadPercentage;\n    return ranking;\n  }\n  const firstIndex = findMatchingCharacter(stringToRank[0], testString, 0);\n  if (firstIndex < 0) {\n    return rankings.NO_MATCH;\n  }\n  charNumber = firstIndex;\n  for (let i2 = 1, I = stringToRank.length; i2 < I; i2++) {\n    const matchChar = stringToRank[i2];\n    charNumber = findMatchingCharacter(matchChar, testString, charNumber);\n    const found = charNumber > -1;\n    if (!found) {\n      return rankings.NO_MATCH;\n    }\n  }\n  const spread2 = charNumber - firstIndex;\n  return getRanking(spread2);\n}\nfunction prepareValueForComparison(value, _ref) {\n  let {\n    keepDiacritics\n  } = _ref;\n  value = `${value}`;\n  if (!keepDiacritics) {\n    value = removeAccents(value);\n  }\n  return value;\n}\nfunction getItemValues(item, accessor) {\n  let accessorFn = accessor;\n  if (typeof accessor === \"object\") {\n    accessorFn = accessor.accessor;\n  }\n  const value = accessorFn(item);\n  if (value == null) {\n    return [];\n  }\n  if (Array.isArray(value)) {\n    return value;\n  }\n  return [String(value)];\n}\nfunction getAllValuesToRank(item, accessors) {\n  const allValues = [];\n  for (let j = 0, J = accessors.length; j < J; j++) {\n    const accessor = accessors[j];\n    const attributes = getAccessorAttributes(accessor);\n    const itemValues = getItemValues(item, accessor);\n    for (let i2 = 0, I = itemValues.length; i2 < I; i2++) {\n      allValues.push({\n        itemValue: itemValues[i2],\n        attributes\n      });\n    }\n  }\n  return allValues;\n}\nvar defaultKeyAttributes = {\n  maxRanking: Infinity,\n  minRanking: -Infinity\n};\nfunction getAccessorAttributes(accessor) {\n  if (typeof accessor === \"function\") {\n    return defaultKeyAttributes;\n  }\n  return {\n    ...defaultKeyAttributes,\n    ...accessor\n  };\n}\n\n// ../../node_modules/.pnpm/goober@2.1.18_csstype@3.2.3/node_modules/goober/dist/goober.modern.js\nvar e = { data: \"\" };\nvar t = (t2) => {\n  if (\"object\" == typeof window) {\n    let e2 = (t2 ? t2.querySelector(\"#_goober\") : window._goober) || Object.assign(document.createElement(\"style\"), { innerHTML: \" \", id: \"_goober\" });\n    return e2.nonce = window.__nonce__, e2.parentNode || (t2 || document.head).appendChild(e2), e2.firstChild;\n  }\n  return t2 || e;\n};\nvar l = /(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g;\nvar a = /\\/\\*[^]*?\\*\\/|  +/g;\nvar n = /\\n+/g;\nvar o = (e2, t2) => {\n  let r2 = \"\", l2 = \"\", a2 = \"\";\n  for (let n2 in e2) {\n    let c2 = e2[n2];\n    \"@\" == n2[0] ? \"i\" == n2[1] ? r2 = n2 + \" \" + c2 + \";\" : l2 += \"f\" == n2[1] ? o(c2, n2) : n2 + \"{\" + o(c2, \"k\" == n2[1] ? \"\" : t2) + \"}\" : \"object\" == typeof c2 ? l2 += o(c2, t2 ? t2.replace(/([^,])+/g, (e3) => n2.replace(/([^,]*:\\S+\\([^)]*\\))|([^,])+/g, (t3) => /&/.test(t3) ? t3.replace(/&/g, e3) : e3 ? e3 + \" \" + t3 : t3)) : n2) : null != c2 && (n2 = /^--/.test(n2) ? n2 : n2.replace(/[A-Z]/g, \"-$&\").toLowerCase(), a2 += o.p ? o.p(n2, c2) : n2 + \":\" + c2 + \";\");\n  }\n  return r2 + (t2 && a2 ? t2 + \"{\" + a2 + \"}\" : a2) + l2;\n};\nvar c = {};\nvar s = (e2) => {\n  if (\"object\" == typeof e2) {\n    let t2 = \"\";\n    for (let r2 in e2) t2 += r2 + s(e2[r2]);\n    return t2;\n  }\n  return e2;\n};\nvar i = (e2, t2, r2, i2, p2) => {\n  let u2 = s(e2), d = c[u2] || (c[u2] = ((e3) => {\n    let t3 = 0, r3 = 11;\n    for (; t3 < e3.length; ) r3 = 101 * r3 + e3.charCodeAt(t3++) >>> 0;\n    return \"go\" + r3;\n  })(u2));\n  if (!c[d]) {\n    let t3 = u2 !== e2 ? e2 : ((e3) => {\n      let t4, r3, o2 = [{}];\n      for (; t4 = l.exec(e3.replace(a, \"\")); ) t4[4] ? o2.shift() : t4[3] ? (r3 = t4[3].replace(n, \" \").trim(), o2.unshift(o2[0][r3] = o2[0][r3] || {})) : o2[0][t4[1]] = t4[2].replace(n, \" \").trim();\n      return o2[0];\n    })(e2);\n    c[d] = o(p2 ? { [\"@keyframes \" + d]: t3 } : t3, r2 ? \"\" : \".\" + d);\n  }\n  let f = r2 && c.g ? c.g : null;\n  return r2 && (c.g = c[d]), ((e3, t3, r3, l2) => {\n    l2 ? t3.data = t3.data.replace(l2, e3) : -1 === t3.data.indexOf(e3) && (t3.data = r3 ? e3 + t3.data : t3.data + e3);\n  })(c[d], t2, i2, f), d;\n};\nvar p = (e2, t2, r2) => e2.reduce((e3, l2, a2) => {\n  let n2 = t2[a2];\n  if (n2 && n2.call) {\n    let e4 = n2(r2), t3 = e4 && e4.props && e4.props.className || /^go/.test(e4) && e4;\n    n2 = t3 ? \".\" + t3 : e4 && \"object\" == typeof e4 ? e4.props ? \"\" : o(e4, \"\") : false === e4 ? \"\" : e4;\n  }\n  return e3 + l2 + (null == n2 ? \"\" : n2);\n}, \"\");\nfunction u(e2) {\n  let r2 = this || {}, l2 = e2.call ? e2(r2.p) : e2;\n  return i(l2.unshift ? l2.raw ? p(l2, [].slice.call(arguments, 1), r2.p) : l2.reduce((e3, t2) => Object.assign(e3, t2 && t2.call ? t2(r2.p) : t2), {}) : l2, t(r2.target), r2.g, r2.o, r2.k);\n}\nu.bind({ g: 1 });\nu.bind({ k: 1 });\n\n// ../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs\nfunction r(e2) {\n  var t2, f, n2 = \"\";\n  if (\"string\" == typeof e2 || \"number\" == typeof e2) n2 += e2;\n  else if (\"object\" == typeof e2) if (Array.isArray(e2)) {\n    var o2 = e2.length;\n    for (t2 = 0; t2 < o2; t2++) e2[t2] && (f = r(e2[t2])) && (n2 && (n2 += \" \"), n2 += f);\n  } else for (f in e2) e2[f] && (n2 && (n2 += \" \"), n2 += f);\n  return n2;\n}\nfunction clsx() {\n  for (var e2, t2, f = 0, n2 = \"\", o2 = arguments.length; f < o2; f++) (e2 = arguments[f]) && (t2 = r(e2)) && (n2 && (n2 += \" \"), n2 += t2);\n  return n2;\n}\nfunction createListTransition(source, options) {\n  const initSource = untrack(source);\n  if (isServer) {\n    const copy = initSource.slice();\n    return () => copy;\n  }\n  const { onChange } = options;\n  let prevSet = new Set(options.appear ? void 0 : initSource);\n  const exiting = /* @__PURE__ */ new WeakSet();\n  const [toRemove, setToRemove] = createSignal([], { equals: false });\n  const [isTransitionPending] = useTransition();\n  const finishRemoved = (els) => {\n    setToRemove((p2) => (p2.push.apply(p2, els), p2));\n    for (const el of els)\n      exiting.delete(el);\n  };\n  const handleRemoved = (els, el, i2) => els.splice(i2, 0, el) ;\n  return createMemo((prev) => {\n    const elsToRemove = toRemove();\n    const sourceList = source();\n    sourceList[$TRACK];\n    if (untrack(isTransitionPending)) {\n      isTransitionPending();\n      return prev;\n    }\n    if (elsToRemove.length) {\n      const next = prev.filter((e2) => !elsToRemove.includes(e2));\n      elsToRemove.length = 0;\n      onChange({ list: next, added: [], removed: [], unchanged: next, finishRemoved });\n      return next;\n    }\n    return untrack(() => {\n      const nextSet = new Set(sourceList);\n      const next = sourceList.slice();\n      const added = [];\n      const removed = [];\n      const unchanged = [];\n      for (const el of sourceList) {\n        (prevSet.has(el) ? unchanged : added).push(el);\n      }\n      let nothingChanged = !added.length;\n      for (let i2 = 0; i2 < prev.length; i2++) {\n        const el = prev[i2];\n        if (!nextSet.has(el)) {\n          if (!exiting.has(el)) {\n            removed.push(el);\n            exiting.add(el);\n          }\n          handleRemoved(next, el, i2);\n        }\n        if (nothingChanged && el !== next[i2])\n          nothingChanged = false;\n      }\n      if (!removed.length && nothingChanged)\n        return prev;\n      onChange({ list: next, added, removed, unchanged, finishRemoved });\n      prevSet = nextSet;\n      return next;\n    });\n  }, options.appear ? [] : initSource.slice());\n}\n\n// ../../node_modules/.pnpm/@solid-primitives+refs@1.1.3_solid-js@1.9.12/node_modules/@solid-primitives/refs/dist/index.js\nfunction mergeRefs(...refs) {\n  return chain(refs);\n}\nvar defaultElementPredicate = isServer ? (item) => item != null && typeof item === \"object\" && \"t\" in item : (item) => item instanceof Element;\nfunction getResolvedElements(value, predicate) {\n  if (predicate(value))\n    return value;\n  if (typeof value === \"function\" && !value.length)\n    return getResolvedElements(value(), predicate);\n  if (Array.isArray(value)) {\n    const results = [];\n    for (const item of value) {\n      const result = getResolvedElements(item, predicate);\n      if (result)\n        Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n    }\n    return results.length ? results : null;\n  }\n  return null;\n}\nfunction resolveElements(fn, predicate = defaultElementPredicate, serverPredicate = defaultElementPredicate) {\n  const children2 = createMemo(fn);\n  const memo2 = createMemo(() => getResolvedElements(children2(), isServer ? serverPredicate : predicate));\n  memo2.toArray = () => {\n    const value = memo2();\n    return Array.isArray(value) ? value : value ? [value] : [];\n  };\n  return memo2;\n}\n\n// ../../node_modules/.pnpm/solid-transition-group@0.2.3_solid-js@1.9.12/node_modules/solid-transition-group/dist/index.js\nfunction createClassnames(props) {\n  return createMemo(() => {\n    const name = props.name || \"s\";\n    return {\n      enterActive: (props.enterActiveClass || name + \"-enter-active\").split(\" \"),\n      enter: (props.enterClass || name + \"-enter\").split(\" \"),\n      enterTo: (props.enterToClass || name + \"-enter-to\").split(\" \"),\n      exitActive: (props.exitActiveClass || name + \"-exit-active\").split(\" \"),\n      exit: (props.exitClass || name + \"-exit\").split(\" \"),\n      exitTo: (props.exitToClass || name + \"-exit-to\").split(\" \"),\n      move: (props.moveClass || name + \"-move\").split(\" \")\n    };\n  });\n}\nfunction nextFrame(fn) {\n  requestAnimationFrame(() => requestAnimationFrame(fn));\n}\nfunction enterTransition(classes, events, el, done) {\n  const { onBeforeEnter, onEnter, onAfterEnter } = events;\n  onBeforeEnter?.(el);\n  el.classList.add(...classes.enter);\n  el.classList.add(...classes.enterActive);\n  queueMicrotask(() => {\n    if (!el.parentNode)\n      return done?.();\n    onEnter?.(el, () => endTransition());\n  });\n  nextFrame(() => {\n    el.classList.remove(...classes.enter);\n    el.classList.add(...classes.enterTo);\n    if (!onEnter || onEnter.length < 2) {\n      el.addEventListener(\"transitionend\", endTransition);\n      el.addEventListener(\"animationend\", endTransition);\n    }\n  });\n  function endTransition(e2) {\n    if (!e2 || e2.target === el) {\n      el.removeEventListener(\"transitionend\", endTransition);\n      el.removeEventListener(\"animationend\", endTransition);\n      el.classList.remove(...classes.enterActive);\n      el.classList.remove(...classes.enterTo);\n      onAfterEnter?.(el);\n    }\n  }\n}\nfunction exitTransition(classes, events, el, done) {\n  const { onBeforeExit, onExit, onAfterExit } = events;\n  if (!el.parentNode)\n    return done?.();\n  onBeforeExit?.(el);\n  el.classList.add(...classes.exit);\n  el.classList.add(...classes.exitActive);\n  onExit?.(el, () => endTransition());\n  nextFrame(() => {\n    el.classList.remove(...classes.exit);\n    el.classList.add(...classes.exitTo);\n    if (!onExit || onExit.length < 2) {\n      el.addEventListener(\"transitionend\", endTransition);\n      el.addEventListener(\"animationend\", endTransition);\n    }\n  });\n  function endTransition(e2) {\n    if (!e2 || e2.target === el) {\n      done?.();\n      el.removeEventListener(\"transitionend\", endTransition);\n      el.removeEventListener(\"animationend\", endTransition);\n      el.classList.remove(...classes.exitActive);\n      el.classList.remove(...classes.exitTo);\n      onAfterExit?.(el);\n    }\n  }\n}\nvar TransitionGroup = (props) => {\n  const classnames = createClassnames(props);\n  return createListTransition(resolveElements(() => props.children).toArray, {\n    appear: props.appear,\n    onChange({ added, removed, finishRemoved, list }) {\n      const classes = classnames();\n      for (const el of added) {\n        enterTransition(classes, props, el);\n      }\n      const toMove = [];\n      for (const el of list) {\n        if (el.isConnected && (el instanceof HTMLElement || el instanceof SVGElement)) {\n          toMove.push({ el, rect: el.getBoundingClientRect() });\n        }\n      }\n      queueMicrotask(() => {\n        const moved = [];\n        for (const { el, rect } of toMove) {\n          if (el.isConnected) {\n            const newRect = el.getBoundingClientRect(), dX = rect.left - newRect.left, dY = rect.top - newRect.top;\n            if (dX || dY) {\n              el.style.transform = `translate(${dX}px, ${dY}px)`;\n              el.style.transitionDuration = \"0s\";\n              moved.push(el);\n            }\n          }\n        }\n        document.body.offsetHeight;\n        for (const el of moved) {\n          let endTransition2 = function(e2) {\n            if (e2.target === el || /transform$/.test(e2.propertyName)) {\n              el.removeEventListener(\"transitionend\", endTransition2);\n              el.classList.remove(...classes.move);\n            }\n          };\n          el.classList.add(...classes.move);\n          el.style.transform = el.style.transitionDuration = \"\";\n          el.addEventListener(\"transitionend\", endTransition2);\n        }\n      });\n      for (const el of removed) {\n        exitTransition(classes, props, el, () => finishRemoved([el]));\n      }\n    }\n  });\n};\n\n// ../../node_modules/.pnpm/@solid-primitives+keyed@1.5.3_solid-js@1.9.12/node_modules/@solid-primitives/keyed/dist/index.js\nvar FALLBACK = /* @__PURE__ */ Symbol(\"fallback\");\nfunction dispose(list) {\n  for (const o2 of list)\n    o2.dispose();\n}\nfunction keyArray(items, keyFn, mapFn, options = {}) {\n  if (isServer) {\n    const itemsRef = items();\n    let s2 = [];\n    if (itemsRef && itemsRef.length) {\n      for (let i2 = 0, len = itemsRef.length; i2 < len; i2++)\n        s2.push(mapFn(() => itemsRef[i2], () => i2));\n    } else if (options.fallback)\n      s2 = [options.fallback()];\n    return () => s2;\n  }\n  const prev = /* @__PURE__ */ new Map();\n  onCleanup(() => dispose(prev.values()));\n  return () => {\n    const list = items() || [];\n    list[$TRACK];\n    return untrack(() => {\n      if (!list.length) {\n        dispose(prev.values());\n        prev.clear();\n        if (!options.fallback)\n          return [];\n        const fb2 = createRoot((dispose2) => {\n          prev.set(FALLBACK, { dispose: dispose2 });\n          return options.fallback();\n        });\n        return [fb2];\n      }\n      const result = new Array(list.length);\n      const fb = prev.get(FALLBACK);\n      if (!prev.size || fb) {\n        fb?.dispose();\n        prev.delete(FALLBACK);\n        for (let i2 = 0; i2 < list.length; i2++) {\n          const item = list[i2];\n          const key = keyFn(item, i2);\n          addNewItem(result, item, i2, key);\n        }\n        return result;\n      }\n      const prevKeys = new Set(prev.keys());\n      for (let i2 = 0; i2 < list.length; i2++) {\n        const item = list[i2];\n        const key = keyFn(item, i2);\n        prevKeys.delete(key);\n        const lookup = prev.get(key);\n        if (lookup) {\n          result[i2] = lookup.mapped;\n          lookup.setIndex?.(i2);\n          lookup.setItem(() => item);\n        } else\n          addNewItem(result, item, i2, key);\n      }\n      for (const key of prevKeys) {\n        prev.get(key)?.dispose();\n        prev.delete(key);\n      }\n      return result;\n    });\n  };\n  function addNewItem(list, item, i2, key) {\n    createRoot((dispose2) => {\n      const [getItem, setItem] = createSignal(item);\n      const save = { setItem, dispose: dispose2 };\n      if (mapFn.length > 1) {\n        const [index, setIndex] = createSignal(i2);\n        save.setIndex = setIndex;\n        save.mapped = mapFn(getItem, index);\n      } else\n        save.mapped = mapFn(getItem);\n      prev.set(key, save);\n      list[i2] = save.mapped;\n    });\n  }\n}\nfunction Key(props) {\n  const { by } = props;\n  return createMemo(keyArray(() => props.each, typeof by === \"function\" ? by : (v) => v[by], props.children, \"fallback\" in props ? { fallback: () => props.fallback } : void 0));\n}\n\n// ../../node_modules/.pnpm/@solid-primitives+event-listener@2.4.5_solid-js@1.9.12/node_modules/@solid-primitives/event-listener/dist/eventListener.js\nfunction makeEventListener(target, type, handler, options) {\n  target.addEventListener(type, handler, options);\n  return tryOnCleanup(target.removeEventListener.bind(target, type, handler, options));\n}\nfunction createEventListener(targets, type, handler, options) {\n  if (isServer)\n    return;\n  const attachListeners = () => {\n    asArray(access(targets)).forEach((el) => {\n      if (el)\n        asArray(access(type)).forEach((type2) => makeEventListener(el, type2, handler, options));\n    });\n  };\n  if (typeof targets === \"function\")\n    createEffect(attachListeners);\n  else\n    createRenderEffect(attachListeners);\n}\n\n// ../../node_modules/.pnpm/@solid-primitives+resize-observer@2.1.5_solid-js@1.9.12/node_modules/@solid-primitives/resize-observer/dist/index.js\nfunction makeResizeObserver(callback, options) {\n  if (isServer) {\n    return { observe: noop, unobserve: noop };\n  }\n  const observer = new ResizeObserver(callback);\n  onCleanup(observer.disconnect.bind(observer));\n  return {\n    observe: (ref) => observer.observe(ref, options),\n    unobserve: observer.unobserve.bind(observer)\n  };\n}\nfunction createResizeObserver(targets, onResize, options) {\n  if (isServer)\n    return;\n  const previousMap = /* @__PURE__ */ new WeakMap(), { observe, unobserve } = makeResizeObserver((entries) => {\n    for (const entry of entries) {\n      const { contentRect, target } = entry, width = Math.round(contentRect.width), height = Math.round(contentRect.height), previous = previousMap.get(target);\n      if (!previous || previous.width !== width || previous.height !== height) {\n        onResize(contentRect, target, entry);\n        previousMap.set(target, { width, height });\n      }\n    }\n  }, options);\n  createEffect((prev) => {\n    const refs = filterNonNullable(asArray(access(targets)));\n    handleDiffArray(refs, prev, observe, unobserve);\n    return refs;\n  }, []);\n}\n\n// ../../node_modules/.pnpm/@solid-primitives+props@3.2.3_solid-js@1.9.12/node_modules/@solid-primitives/props/dist/combineProps.js\nvar extractCSSregex = /((?:--)?(?:\\w+-?)+)\\s*:\\s*([^;]*)/g;\nfunction stringStyleToObject(style) {\n  const object = {};\n  let match;\n  while (match = extractCSSregex.exec(style)) {\n    object[match[1]] = match[2];\n  }\n  return object;\n}\nfunction combineStyle(a2, b2) {\n  if (typeof a2 === \"string\") {\n    if (typeof b2 === \"string\")\n      return `${a2};${b2}`;\n    a2 = stringStyleToObject(a2);\n  } else if (typeof b2 === \"string\") {\n    b2 = stringStyleToObject(b2);\n  }\n  return { ...a2, ...b2 };\n}\n\n// ../../node_modules/.pnpm/@kobalte+utils@0.9.1_solid-js@1.9.12/node_modules/@kobalte/utils/dist/index.js\nfunction addItemToArray(array, item, index = -1) {\n  if (!(index in array)) {\n    return [...array, item];\n  }\n  return [...array.slice(0, index), item, ...array.slice(index)];\n}\nfunction removeItemFromArray(array, item) {\n  const updatedArray = [...array];\n  const index = updatedArray.indexOf(item);\n  if (index !== -1) {\n    updatedArray.splice(index, 1);\n  }\n  return updatedArray;\n}\nfunction isNumber(value) {\n  return typeof value === \"number\";\n}\nfunction isString(value) {\n  return Object.prototype.toString.call(value) === \"[object String]\";\n}\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\nfunction createGenerateId(baseId) {\n  return (suffix) => `${baseId()}-${suffix}`;\n}\nfunction contains(parent, child) {\n  if (!parent) {\n    return false;\n  }\n  return parent === child || parent.contains(child);\n}\nfunction getActiveElement(node, activeDescendant = false) {\n  const { activeElement } = getDocument(node);\n  if (!activeElement?.nodeName) {\n    return null;\n  }\n  if (isFrame(activeElement) && activeElement.contentDocument) {\n    return getActiveElement(\n      activeElement.contentDocument.body,\n      activeDescendant\n    );\n  }\n  if (activeDescendant) {\n    const id = activeElement.getAttribute(\"aria-activedescendant\");\n    if (id) {\n      const element = getDocument(activeElement).getElementById(id);\n      if (element) {\n        return element;\n      }\n    }\n  }\n  return activeElement;\n}\nfunction getWindow(node) {\n  return getDocument(node).defaultView || window;\n}\nfunction getDocument(node) {\n  return node ? node.ownerDocument || node : document;\n}\nfunction isFrame(element) {\n  return element.tagName === \"IFRAME\";\n}\nvar EventKey = /* @__PURE__ */ ((EventKey2) => {\n  EventKey2[\"Escape\"] = \"Escape\";\n  EventKey2[\"Enter\"] = \"Enter\";\n  EventKey2[\"Tab\"] = \"Tab\";\n  EventKey2[\"Space\"] = \" \";\n  EventKey2[\"ArrowDown\"] = \"ArrowDown\";\n  EventKey2[\"ArrowLeft\"] = \"ArrowLeft\";\n  EventKey2[\"ArrowRight\"] = \"ArrowRight\";\n  EventKey2[\"ArrowUp\"] = \"ArrowUp\";\n  EventKey2[\"End\"] = \"End\";\n  EventKey2[\"Home\"] = \"Home\";\n  EventKey2[\"PageDown\"] = \"PageDown\";\n  EventKey2[\"PageUp\"] = \"PageUp\";\n  return EventKey2;\n})(EventKey || {});\nfunction testPlatform(re) {\n  return typeof window !== \"undefined\" && window.navigator != null ? re.test(\n    // @ts-ignore\n    window.navigator.userAgentData?.platform || window.navigator.platform\n  ) : false;\n}\nfunction isMac() {\n  return testPlatform(/^Mac/i);\n}\nfunction isIPhone() {\n  return testPlatform(/^iPhone/i);\n}\nfunction isIPad() {\n  return testPlatform(/^iPad/i) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n  isMac() && navigator.maxTouchPoints > 1;\n}\nfunction isIOS() {\n  return isIPhone() || isIPad();\n}\nfunction isAppleDevice() {\n  return isMac() || isIOS();\n}\nfunction callHandler(event, handler) {\n  if (handler) {\n    if (isFunction(handler)) {\n      handler(event);\n    } else {\n      handler[0](handler[1], event);\n    }\n  }\n  return event?.defaultPrevented;\n}\nfunction composeEventHandlers(handlers) {\n  return (event) => {\n    for (const handler of handlers) {\n      callHandler(event, handler);\n    }\n  };\n}\nfunction isCtrlKey(e2) {\n  if (isMac()) {\n    return e2.metaKey && !e2.ctrlKey;\n  }\n  return e2.ctrlKey && !e2.metaKey;\n}\nfunction focusWithoutScrolling(element) {\n  if (!element) {\n    return;\n  }\n  if (supportsPreventScroll()) {\n    element.focus({ preventScroll: true });\n  } else {\n    const scrollableElements = getScrollableElements(element);\n    element.focus();\n    restoreScrollPosition(scrollableElements);\n  }\n}\nvar supportsPreventScrollCached = null;\nfunction supportsPreventScroll() {\n  if (supportsPreventScrollCached == null) {\n    supportsPreventScrollCached = false;\n    try {\n      const focusElem = document.createElement(\"div\");\n      focusElem.focus({\n        get preventScroll() {\n          supportsPreventScrollCached = true;\n          return true;\n        }\n      });\n    } catch (e2) {\n    }\n  }\n  return supportsPreventScrollCached;\n}\nfunction getScrollableElements(element) {\n  let parent = element.parentNode;\n  const scrollableElements = [];\n  const rootScrollingElement = document.scrollingElement || document.documentElement;\n  while (parent instanceof HTMLElement && parent !== rootScrollingElement) {\n    if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) {\n      scrollableElements.push({\n        element: parent,\n        scrollTop: parent.scrollTop,\n        scrollLeft: parent.scrollLeft\n      });\n    }\n    parent = parent.parentNode;\n  }\n  if (rootScrollingElement instanceof HTMLElement) {\n    scrollableElements.push({\n      element: rootScrollingElement,\n      scrollTop: rootScrollingElement.scrollTop,\n      scrollLeft: rootScrollingElement.scrollLeft\n    });\n  }\n  return scrollableElements;\n}\nfunction restoreScrollPosition(scrollableElements) {\n  for (const { element, scrollTop, scrollLeft } of scrollableElements) {\n    element.scrollTop = scrollTop;\n    element.scrollLeft = scrollLeft;\n  }\n}\nvar focusableElements = [\n  \"input:not([type='hidden']):not([disabled])\",\n  \"select:not([disabled])\",\n  \"textarea:not([disabled])\",\n  \"button:not([disabled])\",\n  \"a[href]\",\n  \"area[href]\",\n  \"[tabindex]\",\n  \"iframe\",\n  \"object\",\n  \"embed\",\n  \"audio[controls]\",\n  \"video[controls]\",\n  \"[contenteditable]:not([contenteditable='false'])\"\n];\nvar tabbableElements = [\n  ...focusableElements,\n  '[tabindex]:not([tabindex=\"-1\"]):not([disabled])'\n];\nvar FOCUSABLE_ELEMENT_SELECTOR = `${focusableElements.join(\n  \":not([hidden]),\"\n)},[tabindex]:not([disabled]):not([hidden])`;\nvar TABBABLE_ELEMENT_SELECTOR = tabbableElements.join(\n  ':not([hidden]):not([tabindex=\"-1\"]),'\n);\nfunction getAllTabbableIn(container, includeContainer) {\n  const elements = Array.from(\n    container.querySelectorAll(FOCUSABLE_ELEMENT_SELECTOR)\n  );\n  const tabbableElements2 = elements.filter(isTabbable);\n  if (includeContainer && isTabbable(container)) {\n    tabbableElements2.unshift(container);\n  }\n  tabbableElements2.forEach((element, i2) => {\n    if (isFrame(element) && element.contentDocument) {\n      const frameBody = element.contentDocument.body;\n      const allFrameTabbable = getAllTabbableIn(frameBody, false);\n      tabbableElements2.splice(i2, 1, ...allFrameTabbable);\n    }\n  });\n  return tabbableElements2;\n}\nfunction isTabbable(element) {\n  return isFocusable(element) && !hasNegativeTabIndex(element);\n}\nfunction isFocusable(element) {\n  return element.matches(FOCUSABLE_ELEMENT_SELECTOR) && isElementVisible(element);\n}\nfunction hasNegativeTabIndex(element) {\n  const tabIndex = Number.parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n  return tabIndex < 0;\n}\nfunction isElementVisible(element, childElement) {\n  return element.nodeName !== \"#comment\" && isStyleVisible(element) && isAttributeVisible(element, childElement) && (!element.parentElement || isElementVisible(element.parentElement, element));\n}\nfunction isStyleVisible(element) {\n  if (!(element instanceof HTMLElement) && !(element instanceof SVGElement)) {\n    return false;\n  }\n  const { display, visibility } = element.style;\n  let isVisible = display !== \"none\" && visibility !== \"hidden\" && visibility !== \"collapse\";\n  if (isVisible) {\n    if (!element.ownerDocument.defaultView) {\n      return isVisible;\n    }\n    const { getComputedStyle: getComputedStyle3 } = element.ownerDocument.defaultView;\n    const { display: computedDisplay, visibility: computedVisibility } = getComputedStyle3(element);\n    isVisible = computedDisplay !== \"none\" && computedVisibility !== \"hidden\" && computedVisibility !== \"collapse\";\n  }\n  return isVisible;\n}\nfunction isAttributeVisible(element, childElement) {\n  return !element.hasAttribute(\"hidden\") && (element.nodeName === \"DETAILS\" && childElement && childElement.nodeName !== \"SUMMARY\" ? element.hasAttribute(\"open\") : true);\n}\nfunction getFocusableTreeWalker(root, opts, scope) {\n  const selector = opts?.tabbable ? TABBABLE_ELEMENT_SELECTOR : FOCUSABLE_ELEMENT_SELECTOR;\n  const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {\n    acceptNode(node) {\n      if (opts?.from?.contains(node)) {\n        return NodeFilter.FILTER_REJECT;\n      }\n      if (node.matches(selector) && isElementVisible(node) && (true) && (!opts?.accept || opts.accept(node))) {\n        return NodeFilter.FILTER_ACCEPT;\n      }\n      return NodeFilter.FILTER_SKIP;\n    }\n  });\n  if (opts?.from) {\n    walker.currentNode = opts.from;\n  }\n  return walker;\n}\nfunction getScrollParent(node) {\n  let parentNode = node;\n  while (parentNode && !isScrollable(parentNode)) {\n    parentNode = parentNode.parentElement;\n  }\n  return parentNode || document.scrollingElement || document.documentElement;\n}\nfunction isScrollable(node) {\n  const style = window.getComputedStyle(node);\n  return /(auto|scroll)/.test(\n    style.overflow + style.overflowX + style.overflowY\n  );\n}\nfunction noop3() {\n  return;\n}\nfunction isPointInPolygon(point, polygon) {\n  const [x, y] = point;\n  let inside = false;\n  const length = polygon.length;\n  for (let l2 = length, i2 = 0, j = l2 - 1; i2 < l2; j = i2++) {\n    const [xi, yi] = polygon[i2];\n    const [xj, yj] = polygon[j];\n    const [, vy] = polygon[j === 0 ? l2 - 1 : j - 1] || [0, 0];\n    const where = (yi - yj) * (x - xi) - (xi - xj) * (y - yi);\n    if (yj < yi) {\n      if (y >= yj && y < yi) {\n        if (where === 0)\n          return true;\n        if (where > 0) {\n          if (y === yj) {\n            if (y > vy) {\n              inside = !inside;\n            }\n          } else {\n            inside = !inside;\n          }\n        }\n      }\n    } else if (yi < yj) {\n      if (y > yi && y <= yj) {\n        if (where === 0)\n          return true;\n        if (where < 0) {\n          if (y === yj) {\n            if (y < vy) {\n              inside = !inside;\n            }\n          } else {\n            inside = !inside;\n          }\n        }\n      }\n    } else if (y === yi && (x >= xj && x <= xi || x >= xi && x <= xj)) {\n      return true;\n    }\n  }\n  return inside;\n}\nfunction mergeDefaultProps(defaultProps, props) {\n  return mergeProps(defaultProps, props);\n}\nvar transitionsByElement = /* @__PURE__ */ new Map();\nvar transitionCallbacks = /* @__PURE__ */ new Set();\nfunction setupGlobalEvents() {\n  if (typeof window === \"undefined\") {\n    return;\n  }\n  const onTransitionStart = (e2) => {\n    if (!e2.target) {\n      return;\n    }\n    let transitions = transitionsByElement.get(e2.target);\n    if (!transitions) {\n      transitions = /* @__PURE__ */ new Set();\n      transitionsByElement.set(e2.target, transitions);\n      e2.target.addEventListener(\n        \"transitioncancel\",\n        onTransitionEnd\n      );\n    }\n    transitions.add(e2.propertyName);\n  };\n  const onTransitionEnd = (e2) => {\n    if (!e2.target) {\n      return;\n    }\n    const properties = transitionsByElement.get(e2.target);\n    if (!properties) {\n      return;\n    }\n    properties.delete(e2.propertyName);\n    if (properties.size === 0) {\n      e2.target.removeEventListener(\n        \"transitioncancel\",\n        onTransitionEnd\n      );\n      transitionsByElement.delete(e2.target);\n    }\n    if (transitionsByElement.size === 0) {\n      for (const cb of transitionCallbacks) {\n        cb();\n      }\n      transitionCallbacks.clear();\n    }\n  };\n  document.body.addEventListener(\"transitionrun\", onTransitionStart);\n  document.body.addEventListener(\"transitionend\", onTransitionEnd);\n}\nif (typeof document !== \"undefined\") {\n  if (document.readyState !== \"loading\") {\n    setupGlobalEvents();\n  } else {\n    document.addEventListener(\"DOMContentLoaded\", setupGlobalEvents);\n  }\n}\nfunction scrollIntoView(scrollView, element) {\n  const offsetX = relativeOffset(scrollView, element, \"left\");\n  const offsetY = relativeOffset(scrollView, element, \"top\");\n  const width = element.offsetWidth;\n  const height = element.offsetHeight;\n  let x = scrollView.scrollLeft;\n  let y = scrollView.scrollTop;\n  const maxX = x + scrollView.offsetWidth;\n  const maxY = y + scrollView.offsetHeight;\n  if (offsetX <= x) {\n    x = offsetX;\n  } else if (offsetX + width > maxX) {\n    x += offsetX + width - maxX;\n  }\n  if (offsetY <= y) {\n    y = offsetY;\n  } else if (offsetY + height > maxY) {\n    y += offsetY + height - maxY;\n  }\n  scrollView.scrollLeft = x;\n  scrollView.scrollTop = y;\n}\nfunction relativeOffset(ancestor, child, axis) {\n  const prop = axis === \"left\" ? \"offsetLeft\" : \"offsetTop\";\n  let sum = 0;\n  while (child.offsetParent) {\n    sum += child[prop];\n    if (child.offsetParent === ancestor) {\n      break;\n    }\n    if (child.offsetParent.contains(ancestor)) {\n      sum -= ancestor[prop];\n      break;\n    }\n    child = child.offsetParent;\n  }\n  return sum;\n}\nfunction scrollIntoViewport(targetElement, opts) {\n  if (document.contains(targetElement)) {\n    const root = document.scrollingElement || document.documentElement;\n    const isScrollPrevented = window.getComputedStyle(root).overflow === \"hidden\";\n    if (!isScrollPrevented) {\n      const { left: originalLeft, top: originalTop } = targetElement.getBoundingClientRect();\n      targetElement?.scrollIntoView?.({ block: \"nearest\" });\n      const { left: newLeft, top: newTop } = targetElement.getBoundingClientRect();\n      if (Math.abs(originalLeft - newLeft) > 1 || Math.abs(originalTop - newTop) > 1) {\n        targetElement.scrollIntoView?.({ block: \"nearest\" });\n      }\n    } else {\n      let scrollParent = getScrollParent(targetElement);\n      while (targetElement && scrollParent && targetElement !== root && scrollParent !== root) {\n        scrollIntoView(\n          scrollParent,\n          targetElement\n        );\n        targetElement = scrollParent;\n        scrollParent = getScrollParent(targetElement);\n      }\n    }\n  }\n}\nvar visuallyHiddenStyles = {\n  border: \"0\",\n  clip: \"rect(0 0 0 0)\",\n  \"clip-path\": \"inset(50%)\",\n  height: \"1px\",\n  margin: \"0 -1px -1px 0\",\n  overflow: \"hidden\",\n  padding: \"0\",\n  position: \"absolute\",\n  width: \"1px\",\n  \"white-space\": \"nowrap\"\n};\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/ET5T45DO.js\nfunction createTagName(ref, fallback) {\n  const [tagName, setTagName] = createSignal(stringOrUndefined(fallback?.()));\n  createEffect(() => {\n    setTagName(ref()?.tagName.toLowerCase() || stringOrUndefined(fallback?.()));\n  });\n  return tagName;\n}\nfunction stringOrUndefined(value) {\n  return isString(value) ? value : void 0;\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/6Y7B2NEO.js\nfunction Polymorphic(props) {\n  const [local, others] = splitProps(props, [\"as\"]);\n  if (!local.as) {\n    throw new Error(\"[kobalte]: Polymorphic is missing the required `as` prop.\");\n  }\n  return (\n    // @ts-ignore: Props are valid but not worth calculating\n    createComponent(Dynamic, mergeProps(others, {\n      get component() {\n        return local.as;\n      }\n    }))\n  );\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/5ZKAE4VZ.js\nvar __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/7OVKXYPU.js\nvar button_exports = {};\n__export(button_exports, {\n  Button: () => Button,\n  Root: () => ButtonRoot\n});\nvar BUTTON_INPUT_TYPES = [\n  \"button\",\n  \"color\",\n  \"file\",\n  \"image\",\n  \"reset\",\n  \"submit\"\n];\nfunction isButton(element) {\n  const tagName = element.tagName.toLowerCase();\n  if (tagName === \"button\") {\n    return true;\n  }\n  if (tagName === \"input\" && element.type) {\n    return BUTTON_INPUT_TYPES.indexOf(element.type) !== -1;\n  }\n  return false;\n}\nfunction ButtonRoot(props) {\n  let ref;\n  const mergedProps = mergeDefaultProps({\n    type: \"button\"\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"ref\", \"type\", \"disabled\"]);\n  const tagName = createTagName(() => ref, () => \"button\");\n  const isNativeButton = createMemo(() => {\n    const elementTagName = tagName();\n    if (elementTagName == null) {\n      return false;\n    }\n    return isButton({\n      tagName: elementTagName,\n      type: local.type\n    });\n  });\n  const isNativeInput = createMemo(() => {\n    return tagName() === \"input\";\n  });\n  const isNativeLink = createMemo(() => {\n    return tagName() === \"a\" && ref?.getAttribute(\"href\") != null;\n  });\n  return createComponent(Polymorphic, mergeProps({\n    as: \"button\",\n    ref(r$) {\n      const _ref$ = mergeRefs((el) => ref = el, local.ref);\n      typeof _ref$ === \"function\" && _ref$(r$);\n    },\n    get type() {\n      return isNativeButton() || isNativeInput() ? local.type : void 0;\n    },\n    get role() {\n      return !isNativeButton() && !isNativeLink() ? \"button\" : void 0;\n    },\n    get tabIndex() {\n      return !isNativeButton() && !isNativeLink() && !local.disabled ? 0 : void 0;\n    },\n    get disabled() {\n      return isNativeButton() || isNativeInput() ? local.disabled : void 0;\n    },\n    get [\"aria-disabled\"]() {\n      return !isNativeButton() && !isNativeInput() && local.disabled ? true : void 0;\n    },\n    get [\"data-disabled\"]() {\n      return local.disabled ? \"\" : void 0;\n    }\n  }, others));\n}\nvar Button = ButtonRoot;\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/BLN63FDC.js\nfunction createControllableSignal(props) {\n  const [_value, _setValue] = createSignal(props.defaultValue?.());\n  const isControlled = createMemo(() => props.value?.() !== void 0);\n  const value = createMemo(() => isControlled() ? props.value?.() : _value());\n  const setValue = (next) => {\n    untrack(() => {\n      const nextValue = accessWith(next, value());\n      if (!Object.is(nextValue, value())) {\n        if (!isControlled()) {\n          _setValue(nextValue);\n        }\n        props.onChange?.(nextValue);\n      }\n      return nextValue;\n    });\n  };\n  return [value, setValue];\n}\nfunction createControllableBooleanSignal(props) {\n  const [_value, setValue] = createControllableSignal(props);\n  const value = () => _value() ?? false;\n  return [value, setValue];\n}\nfunction createControllableArraySignal(props) {\n  const [_value, setValue] = createControllableSignal(props);\n  const value = () => _value() ?? [];\n  return [value, setValue];\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/YGDQXQ2B.js\nfunction createToggleState(props = {}) {\n  const [isSelected, _setIsSelected] = createControllableBooleanSignal({\n    value: () => access(props.isSelected),\n    defaultValue: () => !!access(props.defaultIsSelected),\n    onChange: (value) => props.onSelectedChange?.(value)\n  });\n  const setIsSelected = (value) => {\n    if (!access(props.isReadOnly) && !access(props.isDisabled)) {\n      _setIsSelected(value);\n    }\n  };\n  const toggle = () => {\n    if (!access(props.isReadOnly) && !access(props.isDisabled)) {\n      _setIsSelected(!isSelected());\n    }\n  };\n  return {\n    isSelected,\n    setIsSelected,\n    toggle\n  };\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/JMA2RWU6.js\nfunction buildNodes(params) {\n  let index = params.startIndex ?? 0;\n  const level = params.startLevel ?? 0;\n  const nodes = [];\n  const getKey = (data) => {\n    if (data == null) {\n      return \"\";\n    }\n    const _getKey = params.getKey ?? \"key\";\n    const dataKey = isString(_getKey) ? data[_getKey] : _getKey(data);\n    return dataKey != null ? String(dataKey) : \"\";\n  };\n  const getTextValue = (data) => {\n    if (data == null) {\n      return \"\";\n    }\n    const _getTextValue = params.getTextValue ?? \"textValue\";\n    const dataTextValue = isString(_getTextValue) ? data[_getTextValue] : _getTextValue(data);\n    return dataTextValue != null ? String(dataTextValue) : \"\";\n  };\n  const getDisabled = (data) => {\n    if (data == null) {\n      return false;\n    }\n    const _getDisabled = params.getDisabled ?? \"disabled\";\n    return (isString(_getDisabled) ? data[_getDisabled] : _getDisabled(data)) ?? false;\n  };\n  const getSectionChildren = (data) => {\n    if (data == null) {\n      return void 0;\n    }\n    if (isString(params.getSectionChildren)) {\n      return data[params.getSectionChildren];\n    }\n    return params.getSectionChildren?.(data);\n  };\n  for (const data of params.dataSource) {\n    if (isString(data) || isNumber(data)) {\n      nodes.push({\n        type: \"item\",\n        rawValue: data,\n        key: String(data),\n        textValue: String(data),\n        disabled: getDisabled(data),\n        level,\n        index\n      });\n      index++;\n      continue;\n    }\n    if (getSectionChildren(data) != null) {\n      nodes.push({\n        type: \"section\",\n        rawValue: data,\n        key: \"\",\n        // not applicable here\n        textValue: \"\",\n        // not applicable here\n        disabled: false,\n        // not applicable here\n        level,\n        index\n      });\n      index++;\n      const sectionChildren = getSectionChildren(data) ?? [];\n      if (sectionChildren.length > 0) {\n        const childNodes = buildNodes({\n          dataSource: sectionChildren,\n          getKey: params.getKey,\n          getTextValue: params.getTextValue,\n          getDisabled: params.getDisabled,\n          getSectionChildren: params.getSectionChildren,\n          startIndex: index,\n          startLevel: level + 1\n        });\n        nodes.push(...childNodes);\n        index += childNodes.length;\n      }\n    } else {\n      nodes.push({\n        type: \"item\",\n        rawValue: data,\n        key: getKey(data),\n        textValue: getTextValue(data),\n        disabled: getDisabled(data),\n        level,\n        index\n      });\n      index++;\n    }\n  }\n  return nodes;\n}\nfunction createCollection(props, deps = []) {\n  return createMemo(() => {\n    const nodes = buildNodes({\n      dataSource: access(props.dataSource),\n      getKey: access(props.getKey),\n      getTextValue: access(props.getTextValue),\n      getDisabled: access(props.getDisabled),\n      getSectionChildren: access(props.getSectionChildren)\n    });\n    for (let i2 = 0; i2 < deps.length; i2++)\n      deps[i2]();\n    return props.factory(nodes);\n  });\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/XHJPQEZP.js\nvar RTL_SCRIPTS = /* @__PURE__ */ new Set([\n  \"Avst\",\n  \"Arab\",\n  \"Armi\",\n  \"Syrc\",\n  \"Samr\",\n  \"Mand\",\n  \"Thaa\",\n  \"Mend\",\n  \"Nkoo\",\n  \"Adlm\",\n  \"Rohg\",\n  \"Hebr\"\n]);\nvar RTL_LANGS = /* @__PURE__ */ new Set([\n  \"ae\",\n  \"ar\",\n  \"arc\",\n  \"bcc\",\n  \"bqi\",\n  \"ckb\",\n  \"dv\",\n  \"fa\",\n  \"glk\",\n  \"he\",\n  \"ku\",\n  \"mzn\",\n  \"nqo\",\n  \"pnb\",\n  \"ps\",\n  \"sd\",\n  \"ug\",\n  \"ur\",\n  \"yi\"\n]);\nfunction isRTL(locale) {\n  if (Intl.Locale) {\n    const script = new Intl.Locale(locale).maximize().script ?? \"\";\n    return RTL_SCRIPTS.has(script);\n  }\n  const lang = locale.split(\"-\")[0];\n  return RTL_LANGS.has(lang);\n}\nfunction getReadingDirection(locale) {\n  return isRTL(locale) ? \"rtl\" : \"ltr\";\n}\nfunction getDefaultLocale() {\n  let locale = typeof navigator !== \"undefined\" && // @ts-ignore\n  (navigator.language || navigator.userLanguage) || \"en-US\";\n  return {\n    locale,\n    direction: getReadingDirection(locale)\n  };\n}\nvar currentLocale = getDefaultLocale();\nvar listeners = /* @__PURE__ */ new Set();\nfunction updateLocale() {\n  currentLocale = getDefaultLocale();\n  for (const listener of listeners) {\n    listener(currentLocale);\n  }\n}\nfunction createDefaultLocale() {\n  const defaultSSRLocale = {\n    locale: \"en-US\",\n    direction: \"ltr\"\n  };\n  const [defaultClientLocale, setDefaultClientLocale] = createSignal(currentLocale);\n  const defaultLocale = createMemo(\n    () => isServer ? defaultSSRLocale : defaultClientLocale()\n  );\n  onMount(() => {\n    if (listeners.size === 0) {\n      window.addEventListener(\"languagechange\", updateLocale);\n    }\n    listeners.add(setDefaultClientLocale);\n    onCleanup(() => {\n      listeners.delete(setDefaultClientLocale);\n      if (listeners.size === 0) {\n        window.removeEventListener(\"languagechange\", updateLocale);\n      }\n    });\n  });\n  return {\n    locale: () => defaultLocale().locale,\n    direction: () => defaultLocale().direction\n  };\n}\nvar I18nContext = createContext();\nfunction useLocale() {\n  const defaultLocale = createDefaultLocale();\n  const context = useContext(I18nContext);\n  return context || defaultLocale;\n}\nvar cache = /* @__PURE__ */ new Map();\nfunction createCollator(options) {\n  const { locale } = useLocale();\n  const cacheKey = createMemo(() => {\n    return locale() + (options ? Object.entries(options).sort((a2, b2) => a2[0] < b2[0] ? -1 : 1).join() : \"\");\n  });\n  return createMemo(() => {\n    const key = cacheKey();\n    let collator;\n    if (cache.has(key)) {\n      collator = cache.get(key);\n    }\n    if (!collator) {\n      collator = new Intl.Collator(locale(), options);\n      cache.set(key, collator);\n    }\n    return collator;\n  });\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/H6DSIDEC.js\nvar Selection = class _Selection extends Set {\n  anchorKey;\n  currentKey;\n  constructor(keys, anchorKey, currentKey) {\n    super(keys);\n    if (keys instanceof _Selection) {\n      this.anchorKey = anchorKey || keys.anchorKey;\n      this.currentKey = currentKey || keys.currentKey;\n    } else {\n      this.anchorKey = anchorKey;\n      this.currentKey = currentKey;\n    }\n  }\n};\nfunction createControllableSelectionSignal(props) {\n  const [_value, setValue] = createControllableSignal(props);\n  const value = () => _value() ?? new Selection();\n  return [value, setValue];\n}\nfunction isNonContiguousSelectionModifier(e2) {\n  return isAppleDevice() ? e2.altKey : e2.ctrlKey;\n}\nfunction isCtrlKeyPressed(e2) {\n  if (isMac()) {\n    return e2.metaKey;\n  }\n  return e2.ctrlKey;\n}\nfunction convertSelection(selection) {\n  return new Selection(selection);\n}\nfunction isSameSelection(setA, setB) {\n  if (setA.size !== setB.size) {\n    return false;\n  }\n  for (const item of setA) {\n    if (!setB.has(item)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction createMultipleSelectionState(props) {\n  const mergedProps = mergeDefaultProps(\n    {\n      selectionMode: \"none\",\n      selectionBehavior: \"toggle\"\n    },\n    props\n  );\n  const [isFocused, setFocused] = createSignal(false);\n  const [focusedKey, setFocusedKey] = createSignal();\n  const selectedKeysProp = createMemo(() => {\n    const selection = access(mergedProps.selectedKeys);\n    if (selection != null) {\n      return convertSelection(selection);\n    }\n    return selection;\n  });\n  const defaultSelectedKeys = createMemo(() => {\n    const defaultSelection = access(mergedProps.defaultSelectedKeys);\n    if (defaultSelection != null) {\n      return convertSelection(defaultSelection);\n    }\n    return new Selection();\n  });\n  const [selectedKeys, _setSelectedKeys] = createControllableSelectionSignal({\n    value: selectedKeysProp,\n    defaultValue: defaultSelectedKeys,\n    onChange: (value) => mergedProps.onSelectionChange?.(value)\n  });\n  const [selectionBehavior, setSelectionBehavior] = createSignal(access(mergedProps.selectionBehavior));\n  const selectionMode = () => access(mergedProps.selectionMode);\n  const disallowEmptySelection = () => access(mergedProps.disallowEmptySelection) ?? false;\n  const setSelectedKeys = (keys) => {\n    if (access(mergedProps.allowDuplicateSelectionEvents) || !isSameSelection(keys, selectedKeys())) {\n      _setSelectedKeys(keys);\n    }\n  };\n  createEffect(() => {\n    const selection = selectedKeys();\n    if (access(mergedProps.selectionBehavior) === \"replace\" && selectionBehavior() === \"toggle\" && typeof selection === \"object\" && selection.size === 0) {\n      setSelectionBehavior(\"replace\");\n    }\n  });\n  createEffect(() => {\n    setSelectionBehavior(access(mergedProps.selectionBehavior) ?? \"toggle\");\n  });\n  return {\n    selectionMode,\n    disallowEmptySelection,\n    selectionBehavior,\n    setSelectionBehavior,\n    isFocused,\n    setFocused,\n    focusedKey,\n    setFocusedKey,\n    selectedKeys,\n    setSelectedKeys\n  };\n}\nfunction createTypeSelect(props) {\n  const [search, setSearch] = createSignal(\"\");\n  const [timeoutId, setTimeoutId] = createSignal(-1);\n  const onKeyDown = (e2) => {\n    if (access(props.isDisabled)) {\n      return;\n    }\n    const delegate = access(props.keyboardDelegate);\n    const manager = access(props.selectionManager);\n    if (!delegate.getKeyForSearch) {\n      return;\n    }\n    const character = getStringForKey(e2.key);\n    if (!character || e2.ctrlKey || e2.metaKey) {\n      return;\n    }\n    if (character === \" \" && search().trim().length > 0) {\n      e2.preventDefault();\n      e2.stopPropagation();\n    }\n    let newSearch = setSearch((prev) => prev + character);\n    let key = delegate.getKeyForSearch(newSearch, manager.focusedKey()) ?? delegate.getKeyForSearch(newSearch);\n    if (key == null && isAllSameLetter(newSearch)) {\n      newSearch = newSearch[0];\n      key = delegate.getKeyForSearch(newSearch, manager.focusedKey()) ?? delegate.getKeyForSearch(newSearch);\n    }\n    if (key != null) {\n      manager.setFocusedKey(key);\n      props.onTypeSelect?.(key);\n    }\n    clearTimeout(timeoutId());\n    setTimeoutId(window.setTimeout(() => setSearch(\"\"), 500));\n  };\n  return {\n    typeSelectHandlers: {\n      onKeyDown\n    }\n  };\n}\nfunction getStringForKey(key) {\n  if (key.length === 1 || !/^[A-Z]/i.test(key)) {\n    return key;\n  }\n  return \"\";\n}\nfunction isAllSameLetter(search) {\n  return search.split(\"\").every((letter) => letter === search[0]);\n}\nfunction createSelectableCollection(props, ref, scrollRef) {\n  const defaultProps = {\n    selectOnFocus: () => access(props.selectionManager).selectionBehavior() === \"replace\"\n  };\n  const mergedProps = mergeProps(defaultProps, props);\n  const finalScrollRef = () => ref();\n  const { direction } = useLocale();\n  let scrollPos = { top: 0, left: 0 };\n  createEventListener(\n    () => !access(mergedProps.isVirtualized) ? finalScrollRef() : void 0,\n    \"scroll\",\n    () => {\n      const scrollEl = finalScrollRef();\n      if (!scrollEl) {\n        return;\n      }\n      scrollPos = {\n        top: scrollEl.scrollTop,\n        left: scrollEl.scrollLeft\n      };\n    }\n  );\n  const { typeSelectHandlers } = createTypeSelect({\n    isDisabled: () => access(mergedProps.disallowTypeAhead),\n    keyboardDelegate: () => access(mergedProps.keyboardDelegate),\n    selectionManager: () => access(mergedProps.selectionManager)\n  });\n  const orientation = () => access(mergedProps.orientation) ?? \"vertical\";\n  const onKeyDown = (e2) => {\n    callHandler(e2, typeSelectHandlers.onKeyDown);\n    if (e2.altKey && e2.key === \"Tab\") {\n      e2.preventDefault();\n    }\n    const refEl = ref();\n    if (!refEl?.contains(e2.target)) {\n      return;\n    }\n    const manager = access(mergedProps.selectionManager);\n    const selectOnFocus = access(mergedProps.selectOnFocus);\n    const navigateToKey = (key) => {\n      if (key != null) {\n        manager.setFocusedKey(key);\n        if (e2.shiftKey && manager.selectionMode() === \"multiple\") {\n          manager.extendSelection(key);\n        } else if (selectOnFocus && !isNonContiguousSelectionModifier(e2)) {\n          manager.replaceSelection(key);\n        }\n      }\n    };\n    const delegate = access(mergedProps.keyboardDelegate);\n    const shouldFocusWrap = access(mergedProps.shouldFocusWrap);\n    const focusedKey = manager.focusedKey();\n    switch (e2.key) {\n      case (orientation() === \"vertical\" ? \"ArrowDown\" : \"ArrowRight\"): {\n        if (delegate.getKeyBelow) {\n          e2.preventDefault();\n          let nextKey;\n          if (focusedKey != null) {\n            nextKey = delegate.getKeyBelow(focusedKey);\n          } else {\n            nextKey = delegate.getFirstKey?.();\n          }\n          if (nextKey == null && shouldFocusWrap) {\n            nextKey = delegate.getFirstKey?.(focusedKey);\n          }\n          navigateToKey(nextKey);\n        }\n        break;\n      }\n      case (orientation() === \"vertical\" ? \"ArrowUp\" : \"ArrowLeft\"): {\n        if (delegate.getKeyAbove) {\n          e2.preventDefault();\n          let nextKey;\n          if (focusedKey != null) {\n            nextKey = delegate.getKeyAbove(focusedKey);\n          } else {\n            nextKey = delegate.getLastKey?.();\n          }\n          if (nextKey == null && shouldFocusWrap) {\n            nextKey = delegate.getLastKey?.(focusedKey);\n          }\n          navigateToKey(nextKey);\n        }\n        break;\n      }\n      case (orientation() === \"vertical\" ? \"ArrowLeft\" : \"ArrowUp\"): {\n        if (delegate.getKeyLeftOf) {\n          e2.preventDefault();\n          const isRTL3 = direction() === \"rtl\";\n          let nextKey;\n          if (focusedKey != null) {\n            nextKey = delegate.getKeyLeftOf(focusedKey);\n          } else {\n            nextKey = isRTL3 ? delegate.getFirstKey?.() : delegate.getLastKey?.();\n          }\n          navigateToKey(nextKey);\n        }\n        break;\n      }\n      case (orientation() === \"vertical\" ? \"ArrowRight\" : \"ArrowDown\"): {\n        if (delegate.getKeyRightOf) {\n          e2.preventDefault();\n          const isRTL3 = direction() === \"rtl\";\n          let nextKey;\n          if (focusedKey != null) {\n            nextKey = delegate.getKeyRightOf(focusedKey);\n          } else {\n            nextKey = isRTL3 ? delegate.getLastKey?.() : delegate.getFirstKey?.();\n          }\n          navigateToKey(nextKey);\n        }\n        break;\n      }\n      case \"Home\":\n        if (delegate.getFirstKey) {\n          e2.preventDefault();\n          const firstKey = delegate.getFirstKey(\n            focusedKey,\n            isCtrlKeyPressed(e2)\n          );\n          if (firstKey != null) {\n            manager.setFocusedKey(firstKey);\n            if (isCtrlKeyPressed(e2) && e2.shiftKey && manager.selectionMode() === \"multiple\") {\n              manager.extendSelection(firstKey);\n            } else if (selectOnFocus) {\n              manager.replaceSelection(firstKey);\n            }\n          }\n        }\n        break;\n      case \"End\":\n        if (delegate.getLastKey) {\n          e2.preventDefault();\n          const lastKey = delegate.getLastKey(focusedKey, isCtrlKeyPressed(e2));\n          if (lastKey != null) {\n            manager.setFocusedKey(lastKey);\n            if (isCtrlKeyPressed(e2) && e2.shiftKey && manager.selectionMode() === \"multiple\") {\n              manager.extendSelection(lastKey);\n            } else if (selectOnFocus) {\n              manager.replaceSelection(lastKey);\n            }\n          }\n        }\n        break;\n      case \"PageDown\":\n        if (delegate.getKeyPageBelow && focusedKey != null) {\n          e2.preventDefault();\n          const nextKey = delegate.getKeyPageBelow(focusedKey);\n          navigateToKey(nextKey);\n        }\n        break;\n      case \"PageUp\":\n        if (delegate.getKeyPageAbove && focusedKey != null) {\n          e2.preventDefault();\n          const nextKey = delegate.getKeyPageAbove(focusedKey);\n          navigateToKey(nextKey);\n        }\n        break;\n      case \"a\":\n        if (isCtrlKeyPressed(e2) && manager.selectionMode() === \"multiple\" && access(mergedProps.disallowSelectAll) !== true) {\n          e2.preventDefault();\n          manager.selectAll();\n        }\n        break;\n      case \"Escape\":\n        if (!e2.defaultPrevented) {\n          e2.preventDefault();\n          if (!access(mergedProps.disallowEmptySelection)) {\n            manager.clearSelection();\n          }\n        }\n        break;\n      case \"Tab\": {\n        if (!access(mergedProps.allowsTabNavigation)) {\n          if (e2.shiftKey) {\n            refEl.focus();\n          } else {\n            const walker = getFocusableTreeWalker(refEl, { tabbable: true });\n            let next;\n            let last;\n            do {\n              last = walker.lastChild();\n              if (last) {\n                next = last;\n              }\n            } while (last);\n            if (next && !next.contains(document.activeElement)) {\n              focusWithoutScrolling(next);\n            }\n          }\n          break;\n        }\n      }\n    }\n  };\n  const onFocusIn = (e2) => {\n    const manager = access(mergedProps.selectionManager);\n    const delegate = access(mergedProps.keyboardDelegate);\n    const selectOnFocus = access(mergedProps.selectOnFocus);\n    if (manager.isFocused()) {\n      if (!e2.currentTarget.contains(e2.target)) {\n        manager.setFocused(false);\n      }\n      return;\n    }\n    if (!e2.currentTarget.contains(e2.target)) {\n      return;\n    }\n    manager.setFocused(true);\n    if (manager.focusedKey() == null) {\n      const navigateToFirstKey = (key) => {\n        if (key == null) {\n          return;\n        }\n        manager.setFocusedKey(key);\n        if (selectOnFocus) {\n          manager.replaceSelection(key);\n        }\n      };\n      const relatedTarget = e2.relatedTarget;\n      if (relatedTarget && e2.currentTarget.compareDocumentPosition(relatedTarget) & Node.DOCUMENT_POSITION_FOLLOWING) {\n        navigateToFirstKey(\n          manager.lastSelectedKey() ?? delegate.getLastKey?.()\n        );\n      } else {\n        navigateToFirstKey(\n          manager.firstSelectedKey() ?? delegate.getFirstKey?.()\n        );\n      }\n    } else if (!access(mergedProps.isVirtualized)) {\n      const scrollEl = finalScrollRef();\n      if (scrollEl) {\n        scrollEl.scrollTop = scrollPos.top;\n        scrollEl.scrollLeft = scrollPos.left;\n        const element = scrollEl.querySelector(\n          `[data-key=\"${manager.focusedKey()}\"]`\n        );\n        if (element) {\n          focusWithoutScrolling(element);\n          scrollIntoView(scrollEl, element);\n        }\n      }\n    }\n  };\n  const onFocusOut = (e2) => {\n    const manager = access(mergedProps.selectionManager);\n    if (!e2.currentTarget.contains(e2.relatedTarget)) {\n      manager.setFocused(false);\n    }\n  };\n  const onMouseDown = (e2) => {\n    if (finalScrollRef() === e2.target) {\n      e2.preventDefault();\n    }\n  };\n  const tryAutoFocus = () => {\n    const autoFocus = access(mergedProps.autoFocus);\n    if (!autoFocus) {\n      return;\n    }\n    const manager = access(mergedProps.selectionManager);\n    const delegate = access(mergedProps.keyboardDelegate);\n    let focusedKey;\n    if (autoFocus === \"first\") {\n      focusedKey = delegate.getFirstKey?.();\n    }\n    if (autoFocus === \"last\") {\n      focusedKey = delegate.getLastKey?.();\n    }\n    const selectedKeys = manager.selectedKeys();\n    if (selectedKeys.size) {\n      focusedKey = selectedKeys.values().next().value;\n    }\n    manager.setFocused(true);\n    manager.setFocusedKey(focusedKey);\n    const refEl = ref();\n    if (refEl && focusedKey == null && !access(mergedProps.shouldUseVirtualFocus)) {\n      focusWithoutScrolling(refEl);\n    }\n  };\n  onMount(() => {\n    if (mergedProps.deferAutoFocus) {\n      setTimeout(tryAutoFocus, 0);\n    } else {\n      tryAutoFocus();\n    }\n  });\n  createEffect(\n    on(\n      [\n        finalScrollRef,\n        () => access(mergedProps.isVirtualized),\n        () => access(mergedProps.selectionManager).focusedKey()\n      ],\n      (newValue) => {\n        const [scrollEl, isVirtualized, focusedKey] = newValue;\n        if (isVirtualized) {\n          focusedKey && mergedProps.scrollToKey?.(focusedKey);\n        } else {\n          if (focusedKey && scrollEl) {\n            const element = scrollEl.querySelector(\n              `[data-key=\"${focusedKey}\"]`\n            );\n            if (element) {\n              scrollIntoView(scrollEl, element);\n            }\n          }\n        }\n      }\n    )\n  );\n  const tabIndex = createMemo(() => {\n    if (access(mergedProps.shouldUseVirtualFocus)) {\n      return void 0;\n    }\n    return access(mergedProps.selectionManager).focusedKey() == null ? 0 : -1;\n  });\n  return {\n    tabIndex,\n    onKeyDown,\n    onMouseDown,\n    onFocusIn,\n    onFocusOut\n  };\n}\nfunction createSelectableItem(props, ref) {\n  const manager = () => access(props.selectionManager);\n  const key = () => access(props.key);\n  const shouldUseVirtualFocus = () => access(props.shouldUseVirtualFocus);\n  const onSelect = (e2) => {\n    if (manager().selectionMode() === \"none\") {\n      return;\n    }\n    if (manager().selectionMode() === \"single\") {\n      if (manager().isSelected(key()) && !manager().disallowEmptySelection()) {\n        manager().toggleSelection(key());\n      } else {\n        manager().replaceSelection(key());\n      }\n    } else if (e2?.shiftKey) {\n      manager().extendSelection(key());\n    } else if (manager().selectionBehavior() === \"toggle\" || isCtrlKeyPressed(e2) || \"pointerType\" in e2 && e2.pointerType === \"touch\") {\n      manager().toggleSelection(key());\n    } else {\n      manager().replaceSelection(key());\n    }\n  };\n  const isSelected = () => manager().isSelected(key());\n  const isDisabled = () => access(props.disabled) || manager().isDisabled(key());\n  const allowsSelection = () => !isDisabled() && manager().canSelectItem(key());\n  let pointerDownType = null;\n  const onPointerDown = (e2) => {\n    if (!allowsSelection()) {\n      return;\n    }\n    pointerDownType = e2.pointerType;\n    if (e2.pointerType === \"mouse\" && e2.button === 0 && !access(props.shouldSelectOnPressUp)) {\n      onSelect(e2);\n    }\n  };\n  const onPointerUp = (e2) => {\n    if (!allowsSelection()) {\n      return;\n    }\n    if (e2.pointerType === \"mouse\" && e2.button === 0 && access(props.shouldSelectOnPressUp) && access(props.allowsDifferentPressOrigin)) {\n      onSelect(e2);\n    }\n  };\n  const onClick = (e2) => {\n    if (!allowsSelection()) {\n      return;\n    }\n    if (access(props.shouldSelectOnPressUp) && !access(props.allowsDifferentPressOrigin) || pointerDownType !== \"mouse\") {\n      onSelect(e2);\n    }\n  };\n  const onKeyDown = (e2) => {\n    if (!allowsSelection() || ![\"Enter\", \" \"].includes(e2.key)) {\n      return;\n    }\n    if (isNonContiguousSelectionModifier(e2)) {\n      manager().toggleSelection(key());\n    } else {\n      onSelect(e2);\n    }\n  };\n  const onMouseDown = (e2) => {\n    if (isDisabled()) {\n      e2.preventDefault();\n    }\n  };\n  const onFocus = (e2) => {\n    const refEl = ref();\n    if (shouldUseVirtualFocus() || isDisabled() || !refEl) {\n      return;\n    }\n    if (e2.target === refEl) {\n      manager().setFocusedKey(key());\n    }\n  };\n  const tabIndex = createMemo(() => {\n    if (shouldUseVirtualFocus() || isDisabled()) {\n      return void 0;\n    }\n    return key() === manager().focusedKey() ? 0 : -1;\n  });\n  const dataKey = createMemo(() => {\n    return access(props.virtualized) ? void 0 : key();\n  });\n  createEffect(\n    on(\n      [\n        ref,\n        key,\n        shouldUseVirtualFocus,\n        () => manager().focusedKey(),\n        () => manager().isFocused()\n      ],\n      ([refEl, key2, shouldUseVirtualFocus2, focusedKey, isFocused]) => {\n        if (refEl && key2 === focusedKey && isFocused && !shouldUseVirtualFocus2 && document.activeElement !== refEl) {\n          if (props.focus) {\n            props.focus();\n          } else {\n            focusWithoutScrolling(refEl);\n          }\n        }\n      }\n    )\n  );\n  return {\n    isSelected,\n    isDisabled,\n    allowsSelection,\n    tabIndex,\n    dataKey,\n    onPointerDown,\n    onPointerUp,\n    onClick,\n    onKeyDown,\n    onMouseDown,\n    onFocus\n  };\n}\nvar SelectionManager = class {\n  collection;\n  state;\n  constructor(collection, state) {\n    this.collection = collection;\n    this.state = state;\n  }\n  /** The type of selection that is allowed in the collection. */\n  selectionMode() {\n    return this.state.selectionMode();\n  }\n  /** Whether the collection allows empty selection. */\n  disallowEmptySelection() {\n    return this.state.disallowEmptySelection();\n  }\n  /** The selection behavior for the collection. */\n  selectionBehavior() {\n    return this.state.selectionBehavior();\n  }\n  /** Sets the selection behavior for the collection. */\n  setSelectionBehavior(selectionBehavior) {\n    this.state.setSelectionBehavior(selectionBehavior);\n  }\n  /** Whether the collection is currently focused. */\n  isFocused() {\n    return this.state.isFocused();\n  }\n  /** Sets whether the collection is focused. */\n  setFocused(isFocused) {\n    this.state.setFocused(isFocused);\n  }\n  /** The current focused key in the collection. */\n  focusedKey() {\n    return this.state.focusedKey();\n  }\n  /** Sets the focused key. */\n  setFocusedKey(key) {\n    if (key == null || this.collection().getItem(key)) {\n      this.state.setFocusedKey(key);\n    }\n  }\n  /** The currently selected keys in the collection. */\n  selectedKeys() {\n    return this.state.selectedKeys();\n  }\n  /** Returns whether a key is selected. */\n  isSelected(key) {\n    if (this.state.selectionMode() === \"none\") {\n      return false;\n    }\n    const retrievedKey = this.getKey(key);\n    if (retrievedKey == null) {\n      return false;\n    }\n    return this.state.selectedKeys().has(retrievedKey);\n  }\n  /** Whether the selection is empty. */\n  isEmpty() {\n    return this.state.selectedKeys().size === 0;\n  }\n  /** Whether all items in the collection are selected. */\n  isSelectAll() {\n    if (this.isEmpty()) {\n      return false;\n    }\n    const selectedKeys = this.state.selectedKeys();\n    return this.getAllSelectableKeys().every((k) => selectedKeys.has(k));\n  }\n  firstSelectedKey() {\n    let first;\n    for (const key of this.state.selectedKeys()) {\n      const item = this.collection().getItem(key);\n      const isItemBeforeFirst = item?.index != null && first?.index != null && item.index < first.index;\n      if (!first || isItemBeforeFirst) {\n        first = item;\n      }\n    }\n    return first?.key;\n  }\n  lastSelectedKey() {\n    let last;\n    for (const key of this.state.selectedKeys()) {\n      const item = this.collection().getItem(key);\n      const isItemAfterLast = item?.index != null && last?.index != null && item.index > last.index;\n      if (!last || isItemAfterLast) {\n        last = item;\n      }\n    }\n    return last?.key;\n  }\n  /** Extends the selection to the given key. */\n  extendSelection(toKey) {\n    if (this.selectionMode() === \"none\") {\n      return;\n    }\n    if (this.selectionMode() === \"single\") {\n      this.replaceSelection(toKey);\n      return;\n    }\n    const retrievedToKey = this.getKey(toKey);\n    if (retrievedToKey == null) {\n      return;\n    }\n    const selectedKeys = this.state.selectedKeys();\n    const anchorKey = selectedKeys.anchorKey || retrievedToKey;\n    const selection = new Selection(selectedKeys, anchorKey, retrievedToKey);\n    for (const key of this.getKeyRange(\n      anchorKey,\n      selectedKeys.currentKey || retrievedToKey\n    )) {\n      selection.delete(key);\n    }\n    for (const key of this.getKeyRange(retrievedToKey, anchorKey)) {\n      if (this.canSelectItem(key)) {\n        selection.add(key);\n      }\n    }\n    this.state.setSelectedKeys(selection);\n  }\n  getKeyRange(from, to) {\n    const fromItem = this.collection().getItem(from);\n    const toItem = this.collection().getItem(to);\n    if (fromItem && toItem) {\n      if (fromItem.index != null && toItem.index != null && fromItem.index <= toItem.index) {\n        return this.getKeyRangeInternal(from, to);\n      }\n      return this.getKeyRangeInternal(to, from);\n    }\n    return [];\n  }\n  getKeyRangeInternal(from, to) {\n    const keys = [];\n    let key = from;\n    while (key != null) {\n      const item = this.collection().getItem(key);\n      if (item && item.type === \"item\") {\n        keys.push(key);\n      }\n      if (key === to) {\n        return keys;\n      }\n      key = this.collection().getKeyAfter(key);\n    }\n    return [];\n  }\n  getKey(key) {\n    const item = this.collection().getItem(key);\n    if (!item) {\n      return key;\n    }\n    if (!item || item.type !== \"item\") {\n      return null;\n    }\n    return item.key;\n  }\n  /** Toggles whether the given key is selected. */\n  toggleSelection(key) {\n    if (this.selectionMode() === \"none\") {\n      return;\n    }\n    if (this.selectionMode() === \"single\" && !this.isSelected(key)) {\n      this.replaceSelection(key);\n      return;\n    }\n    const retrievedKey = this.getKey(key);\n    if (retrievedKey == null) {\n      return;\n    }\n    const keys = new Selection(this.state.selectedKeys());\n    if (keys.has(retrievedKey)) {\n      keys.delete(retrievedKey);\n    } else if (this.canSelectItem(retrievedKey)) {\n      keys.add(retrievedKey);\n      keys.anchorKey = retrievedKey;\n      keys.currentKey = retrievedKey;\n    }\n    if (this.disallowEmptySelection() && keys.size === 0) {\n      return;\n    }\n    this.state.setSelectedKeys(keys);\n  }\n  /** Replaces the selection with only the given key. */\n  replaceSelection(key) {\n    if (this.selectionMode() === \"none\") {\n      return;\n    }\n    const retrievedKey = this.getKey(key);\n    if (retrievedKey == null) {\n      return;\n    }\n    const selection = this.canSelectItem(retrievedKey) ? new Selection([retrievedKey], retrievedKey, retrievedKey) : new Selection();\n    this.state.setSelectedKeys(selection);\n  }\n  /** Replaces the selection with the given keys. */\n  setSelectedKeys(keys) {\n    if (this.selectionMode() === \"none\") {\n      return;\n    }\n    const selection = new Selection();\n    for (const key of keys) {\n      const retrievedKey = this.getKey(key);\n      if (retrievedKey != null) {\n        selection.add(retrievedKey);\n        if (this.selectionMode() === \"single\") {\n          break;\n        }\n      }\n    }\n    this.state.setSelectedKeys(selection);\n  }\n  /** Selects all items in the collection. */\n  selectAll() {\n    if (this.selectionMode() === \"multiple\") {\n      this.state.setSelectedKeys(new Set(this.getAllSelectableKeys()));\n    }\n  }\n  /**\n   * Removes all keys from the selection.\n   */\n  clearSelection() {\n    const selectedKeys = this.state.selectedKeys();\n    if (!this.disallowEmptySelection() && selectedKeys.size > 0) {\n      this.state.setSelectedKeys(new Selection());\n    }\n  }\n  /**\n   * Toggles between select all and an empty selection.\n   */\n  toggleSelectAll() {\n    if (this.isSelectAll()) {\n      this.clearSelection();\n    } else {\n      this.selectAll();\n    }\n  }\n  select(key, e2) {\n    if (this.selectionMode() === \"none\") {\n      return;\n    }\n    if (this.selectionMode() === \"single\") {\n      if (this.isSelected(key) && !this.disallowEmptySelection()) {\n        this.toggleSelection(key);\n      } else {\n        this.replaceSelection(key);\n      }\n    } else if (this.selectionBehavior() === \"toggle\" || e2 && e2.pointerType === \"touch\") {\n      this.toggleSelection(key);\n    } else {\n      this.replaceSelection(key);\n    }\n  }\n  /** Returns whether the current selection is equal to the given selection. */\n  isSelectionEqual(selection) {\n    if (selection === this.state.selectedKeys()) {\n      return true;\n    }\n    const selectedKeys = this.selectedKeys();\n    if (selection.size !== selectedKeys.size) {\n      return false;\n    }\n    for (const key of selection) {\n      if (!selectedKeys.has(key)) {\n        return false;\n      }\n    }\n    for (const key of selectedKeys) {\n      if (!selection.has(key)) {\n        return false;\n      }\n    }\n    return true;\n  }\n  canSelectItem(key) {\n    if (this.state.selectionMode() === \"none\") {\n      return false;\n    }\n    const item = this.collection().getItem(key);\n    return item != null && !item.disabled;\n  }\n  isDisabled(key) {\n    const item = this.collection().getItem(key);\n    return !item || item.disabled;\n  }\n  getAllSelectableKeys() {\n    const keys = [];\n    const addKeys = (key) => {\n      while (key != null) {\n        if (this.canSelectItem(key)) {\n          const item = this.collection().getItem(key);\n          if (!item) {\n            continue;\n          }\n          if (item.type === \"item\") {\n            keys.push(key);\n          }\n        }\n        key = this.collection().getKeyAfter(key);\n      }\n    };\n    addKeys(this.collection().getFirstKey());\n    return keys;\n  }\n};\nvar ListCollection = class {\n  keyMap = /* @__PURE__ */ new Map();\n  iterable;\n  firstKey;\n  lastKey;\n  constructor(nodes) {\n    this.iterable = nodes;\n    for (const node of nodes) {\n      this.keyMap.set(node.key, node);\n    }\n    if (this.keyMap.size === 0) {\n      return;\n    }\n    let last;\n    let index = 0;\n    for (const [key, node] of this.keyMap) {\n      if (last) {\n        last.nextKey = key;\n        node.prevKey = last.key;\n      } else {\n        this.firstKey = key;\n        node.prevKey = void 0;\n      }\n      if (node.type === \"item\") {\n        node.index = index++;\n      }\n      last = node;\n      last.nextKey = void 0;\n    }\n    this.lastKey = last.key;\n  }\n  *[Symbol.iterator]() {\n    yield* this.iterable;\n  }\n  getSize() {\n    return this.keyMap.size;\n  }\n  getKeys() {\n    return this.keyMap.keys();\n  }\n  getKeyBefore(key) {\n    return this.keyMap.get(key)?.prevKey;\n  }\n  getKeyAfter(key) {\n    return this.keyMap.get(key)?.nextKey;\n  }\n  getFirstKey() {\n    return this.firstKey;\n  }\n  getLastKey() {\n    return this.lastKey;\n  }\n  getItem(key) {\n    return this.keyMap.get(key);\n  }\n  at(idx) {\n    const keys = [...this.getKeys()];\n    return this.getItem(keys[idx]);\n  }\n};\nfunction createListState(props) {\n  const selectionState = createMultipleSelectionState(props);\n  const factory = (nodes) => {\n    return props.filter ? new ListCollection(props.filter(nodes)) : new ListCollection(nodes);\n  };\n  const collection = createCollection(\n    {\n      dataSource: () => access(props.dataSource),\n      getKey: () => access(props.getKey),\n      getTextValue: () => access(props.getTextValue),\n      getDisabled: () => access(props.getDisabled),\n      getSectionChildren: () => access(props.getSectionChildren),\n      factory\n    },\n    [() => props.filter]\n  );\n  const selectionManager = new SelectionManager(collection, selectionState);\n  createComputed(() => {\n    const focusedKey = selectionState.focusedKey();\n    if (focusedKey != null && !collection().getItem(focusedKey)) {\n      selectionState.setFocusedKey(void 0);\n    }\n  });\n  return {\n    collection,\n    selectionManager: () => selectionManager\n  };\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/7CVNMTYF.js\nvar DomCollectionContext = createContext();\nfunction useOptionalDomCollectionContext() {\n  return useContext(DomCollectionContext);\n}\nfunction useDomCollectionContext() {\n  const context = useOptionalDomCollectionContext();\n  if (context === void 0) {\n    throw new Error(\n      \"[kobalte]: `useDomCollectionContext` must be used within a `DomCollectionProvider` component\"\n    );\n  }\n  return context;\n}\nfunction isElementPreceding(a2, b2) {\n  return Boolean(\n    b2.compareDocumentPosition(a2) & Node.DOCUMENT_POSITION_PRECEDING\n  );\n}\nfunction findDOMIndex(items, item) {\n  const itemEl = item.ref();\n  if (!itemEl) {\n    return -1;\n  }\n  let length = items.length;\n  if (!length) {\n    return -1;\n  }\n  while (length--) {\n    const currentItemEl = items[length]?.ref();\n    if (!currentItemEl) {\n      continue;\n    }\n    if (isElementPreceding(currentItemEl, itemEl)) {\n      return length + 1;\n    }\n  }\n  return 0;\n}\nfunction sortBasedOnDOMPosition(items) {\n  const pairs = items.map((item, index) => [index, item]);\n  let isOrderDifferent = false;\n  pairs.sort(([indexA, a2], [indexB, b2]) => {\n    const elementA = a2.ref();\n    const elementB = b2.ref();\n    if (elementA === elementB) {\n      return 0;\n    }\n    if (!elementA || !elementB) {\n      return 0;\n    }\n    if (isElementPreceding(elementA, elementB)) {\n      if (indexA > indexB) {\n        isOrderDifferent = true;\n      }\n      return -1;\n    }\n    if (indexA < indexB) {\n      isOrderDifferent = true;\n    }\n    return 1;\n  });\n  if (isOrderDifferent) {\n    return pairs.map(([_, item]) => item);\n  }\n  return items;\n}\nfunction setItemsBasedOnDOMPosition(items, setItems) {\n  const sortedItems = sortBasedOnDOMPosition(items);\n  if (items !== sortedItems) {\n    setItems(sortedItems);\n  }\n}\nfunction getCommonParent(items) {\n  const firstItem = items[0];\n  const lastItemEl = items[items.length - 1]?.ref();\n  let parentEl = firstItem?.ref()?.parentElement;\n  while (parentEl) {\n    if (lastItemEl && parentEl.contains(lastItemEl)) {\n      return parentEl;\n    }\n    parentEl = parentEl.parentElement;\n  }\n  return getDocument(parentEl).body;\n}\nfunction createTimeoutObserver(items, setItems) {\n  createEffect(() => {\n    const timeout = setTimeout(() => {\n      setItemsBasedOnDOMPosition(items(), setItems);\n    });\n    onCleanup(() => clearTimeout(timeout));\n  });\n}\nfunction createSortBasedOnDOMPosition(items, setItems) {\n  if (typeof IntersectionObserver !== \"function\") {\n    createTimeoutObserver(items, setItems);\n    return;\n  }\n  let previousItems = [];\n  createEffect(() => {\n    const callback = () => {\n      const hasPreviousItems = !!previousItems.length;\n      previousItems = items();\n      if (!hasPreviousItems) {\n        return;\n      }\n      setItemsBasedOnDOMPosition(items(), setItems);\n    };\n    const root = getCommonParent(items());\n    const observer = new IntersectionObserver(callback, { root });\n    for (const item of items()) {\n      const itemEl = item.ref();\n      if (itemEl) {\n        observer.observe(itemEl);\n      }\n    }\n    onCleanup(() => observer.disconnect());\n  });\n}\nfunction createDomCollection(props = {}) {\n  const [items, setItems] = createControllableArraySignal({\n    value: () => access(props.items),\n    onChange: (value) => props.onItemsChange?.(value)\n  });\n  createSortBasedOnDOMPosition(items, setItems);\n  const registerItem = (item) => {\n    setItems((prevItems) => {\n      const index = findDOMIndex(prevItems, item);\n      return addItemToArray(prevItems, item, index);\n    });\n    return () => {\n      setItems((prevItems) => {\n        const nextItems = prevItems.filter(\n          (prevItem) => prevItem.ref() !== item.ref()\n        );\n        if (prevItems.length === nextItems.length) {\n          return prevItems;\n        }\n        return nextItems;\n      });\n    };\n  };\n  const DomCollectionProvider = (props2) => {\n    return createComponent(DomCollectionContext.Provider, {\n      value: { registerItem },\n      get children() {\n        return props2.children;\n      }\n    });\n  };\n  return { DomCollectionProvider };\n}\nfunction createDomCollectionItem(props) {\n  const context = useDomCollectionContext();\n  const mergedProps = mergeDefaultProps({ shouldRegisterItem: true }, props);\n  createEffect(() => {\n    if (!mergedProps.shouldRegisterItem) {\n      return;\n    }\n    const unregister = context.registerItem(mergedProps.getItem());\n    onCleanup(unregister);\n  });\n}\n\n// ../../node_modules/.pnpm/@floating-ui+utils@0.2.11/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs\nvar sides = [\"top\", \"right\", \"bottom\", \"left\"];\nvar min = Math.min;\nvar max = Math.max;\nvar round = Math.round;\nvar floor = Math.floor;\nvar createCoords = (v) => ({\n  x: v,\n  y: v\n});\nvar oppositeSideMap = {\n  left: \"right\",\n  right: \"left\",\n  bottom: \"top\",\n  top: \"bottom\"\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === \"function\" ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split(\"-\")[0];\n}\nfunction getAlignment(placement) {\n  return placement.split(\"-\")[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === \"x\" ? \"y\" : \"x\";\n}\nfunction getAxisLength(axis) {\n  return axis === \"y\" ? \"height\" : \"width\";\n}\nfunction getSideAxis(placement) {\n  const firstChar = placement[0];\n  return firstChar === \"t\" || firstChar === \"b\" ? \"y\" : \"x\";\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === \"x\" ? alignment === (rtl ? \"end\" : \"start\") ? \"right\" : \"left\" : alignment === \"start\" ? \"bottom\" : \"top\";\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.includes(\"start\") ? placement.replace(\"start\", \"end\") : placement.replace(\"end\", \"start\");\n}\nvar lrPlacement = [\"left\", \"right\"];\nvar rlPlacement = [\"right\", \"left\"];\nvar tbPlacement = [\"top\", \"bottom\"];\nvar btPlacement = [\"bottom\", \"top\"];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case \"top\":\n    case \"bottom\":\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case \"left\":\n    case \"right\":\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === \"start\", rtl);\n  if (alignment) {\n    list = list.map((side) => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  const side = getSide(placement);\n  return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== \"number\" ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\n// ../../node_modules/.pnpm/@floating-ui+core@1.7.5/node_modules/@floating-ui/core/dist/floating-ui.core.mjs\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === \"y\";\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case \"top\":\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case \"bottom\":\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case \"right\":\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case \"left\":\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case \"start\":\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case \"end\":\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform: platform2,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = \"clippingAncestors\",\n    rootBoundary = \"viewport\",\n    elementContext = \"floating\",\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === \"floating\" ? \"reference\" : \"floating\";\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform2.getClippingRect({\n    element: ((_await$platform$isEle = await (platform2.isElement == null ? void 0 : platform2.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform2.getDocumentElement == null ? void 0 : platform2.getDocumentElement(elements.floating)),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === \"floating\" ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(elements.floating));\n  const offsetScale = await (platform2.isElement == null ? void 0 : platform2.isElement(offsetParent)) ? await (platform2.getScale == null ? void 0 : platform2.getScale(offsetParent)) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform2.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform2.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\nvar MAX_RESET_COUNT = 50;\nvar computePosition = async (reference, floating, config) => {\n  const {\n    placement = \"bottom\",\n    strategy = \"absolute\",\n    middleware = [],\n    platform: platform2\n  } = config;\n  const platformWithDetectOverflow = platform2.detectOverflow ? platform2 : {\n    ...platform2,\n    detectOverflow\n  };\n  const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(floating));\n  let rects = await platform2.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let resetCount = 0;\n  const middlewareData = {};\n  for (let i2 = 0; i2 < middleware.length; i2++) {\n    const currentMiddleware = middleware[i2];\n    if (!currentMiddleware) {\n      continue;\n    }\n    const {\n      name,\n      fn\n    } = currentMiddleware;\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform: platformWithDetectOverflow,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData[name] = {\n      ...middlewareData[name],\n      ...data\n    };\n    if (reset && resetCount < MAX_RESET_COUNT) {\n      resetCount++;\n      if (typeof reset === \"object\") {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform2.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i2 = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\nvar arrow = (options) => ({\n  name: \"arrow\",\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform: platform2,\n      elements,\n      middlewareData\n    } = state;\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform2.getDimensions(element);\n    const isYAxis = axis === \"y\";\n    const minProp = isYAxis ? \"top\" : \"left\";\n    const maxProp = isYAxis ? \"bottom\" : \"right\";\n    const clientProp = isYAxis ? \"clientHeight\" : \"clientWidth\";\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n    if (!clientSize || !await (platform2.isElement == null ? void 0 : platform2.isElement(arrowOffsetParent))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n    const min$1 = minPadding;\n    const max2 = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset3 = clamp(min$1, center, max2);\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset3 && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max2 : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset3,\n        centerOffset: center - offset3 - alignmentOffset,\n        ...shouldAddOffset && {\n          alignmentOffset\n        }\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\nvar flip = function(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: \"flip\",\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform: platform2,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = \"bestFit\",\n        fallbackAxisSideDirection = \"none\",\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== \"none\";\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements2 = [initialPlacement, ...fallbackPlacements];\n      const overflow = await platform2.detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides2 = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides2[0]], overflow[sides2[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n      if (!overflows.every((side2) => side2 <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements2[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === \"alignment\" ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter((d) => d.overflows[0] <= 0).sort((a2, b2) => a2.overflows[1] - b2.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case \"bestFit\": {\n              var _overflowsData$filter2;\n              const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => {\n                if (hasFallbackAxisSideDirection) {\n                  const currentSideAxis = getSideAxis(d.placement);\n                  return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal\n                  // reading directions favoring greater width.\n                  currentSideAxis === \"y\";\n                }\n                return true;\n              }).map((d) => [d.placement, d.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a2, b2) => a2[1] - b2[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n              if (placement2) {\n                resetPlacement = placement2;\n              }\n              break;\n            }\n            case \"initialPlacement\":\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some((side) => overflow[side] >= 0);\n}\nvar hide = function(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: \"hide\",\n    options,\n    async fn(state) {\n      const {\n        rects,\n        platform: platform2\n      } = state;\n      const {\n        strategy = \"referenceHidden\",\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case \"referenceHidden\": {\n          const overflow = await platform2.detectOverflow(state, {\n            ...detectOverflowOptions,\n            elementContext: \"reference\"\n          });\n          const offsets = getSideOffsets(overflow, rects.reference);\n          return {\n            data: {\n              referenceHiddenOffsets: offsets,\n              referenceHidden: isAnySideFullyClipped(offsets)\n            }\n          };\n        }\n        case \"escaped\": {\n          const overflow = await platform2.detectOverflow(state, {\n            ...detectOverflowOptions,\n            altBoundary: true\n          });\n          const offsets = getSideOffsets(overflow, rects.floating);\n          return {\n            data: {\n              escapedOffsets: offsets,\n              escaped: isAnySideFullyClipped(offsets)\n            }\n          };\n        }\n        default: {\n          return {};\n        }\n      }\n    }\n  };\n};\nvar originSides = /* @__PURE__ */ new Set([\"left\", \"top\"]);\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform: platform2,\n    elements\n  } = state;\n  const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === \"y\";\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === \"number\" ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === \"number\") {\n    crossAxis = alignment === \"end\" ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\nvar offset = function(options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: \"offset\",\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\nvar shift = function(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: \"shift\",\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        platform: platform2\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: (_ref) => {\n            let {\n              x: x2,\n              y: y2\n            } = _ref;\n            return {\n              x: x2,\n              y: y2\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await platform2.detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === \"y\" ? \"top\" : \"left\";\n        const maxSide = mainAxis === \"y\" ? \"bottom\" : \"right\";\n        const min2 = mainAxisCoord + overflow[minSide];\n        const max2 = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min2, mainAxisCoord, max2);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === \"y\" ? \"top\" : \"left\";\n        const maxSide = crossAxis === \"y\" ? \"bottom\" : \"right\";\n        const min2 = crossAxisCoord + overflow[minSide];\n        const max2 = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min2, crossAxisCoord, max2);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\nvar size = function(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: \"size\",\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform: platform2,\n        elements\n      } = state;\n      const {\n        apply = () => {\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await platform2.detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === \"y\";\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === \"top\" || side === \"bottom\") {\n        heightSide = side;\n        widthSide = alignment === (await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating)) ? \"start\" : \"end\") ? \"left\" : \"right\";\n      } else {\n        widthSide = side;\n        heightSide = alignment === \"end\" ? \"top\" : \"bottom\";\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform2.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// ../../node_modules/.pnpm/@floating-ui+utils@0.2.11/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs\nfunction hasWindow() {\n  return typeof window !== \"undefined\";\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || \"\").toLowerCase();\n  }\n  return \"#document\";\n}\nfunction getWindow2(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow2(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow2(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow2(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === \"undefined\") {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow2(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle2(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== \"inline\" && display !== \"contents\";\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(\":popover-open\")) {\n      return true;\n    }\n  } catch (_e) {\n  }\n  try {\n    return element.matches(\":modal\");\n  } catch (_e) {\n    return false;\n  }\n}\nvar willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nvar containRe = /paint|layout|strict|content/;\nvar isNotNone = (value) => !!value && value !== \"none\";\nvar isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n  const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss;\n  return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || \"\") || containRe.test(css.contain || \"\");\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== \"undefined\" && CSS.supports && CSS.supports(\"-webkit-backdrop-filter\", \"none\");\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle2(element) {\n  return getWindow2(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === \"html\") {\n    return node;\n  }\n  const result = (\n    // Step into the shadow DOM of the parent of a slotted node.\n    node.assignedSlot || // DOM Element detected.\n    node.parentNode || // ShadowRoot detected.\n    isShadowRoot(node) && node.host || // Fallback.\n    getDocumentElement(node)\n  );\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow2(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\n// ../../node_modules/.pnpm/@floating-ui+dom@1.7.6/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs\nfunction getCssDimensions(element) {\n  const css = getComputedStyle2(element);\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\nvar noOffsets = /* @__PURE__ */ createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow2(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow2(element)) {\n    return false;\n  }\n  return isFixed;\n}\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow2(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow2(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle2(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow2(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === \"fixed\";\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== \"body\" || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle2(body).direction === \"rtl\") {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nvar SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow2(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === \"fixed\") {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === \"CSS1Compat\" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === \"fixed\");\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === \"viewport\") {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === \"document\") {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle2(parentNode).position === \"fixed\" || hasFixedPositionAncestor(parentNode, stopNode);\n}\nfunction getClippingElementAncestors(element, cache2) {\n  const cachedResult = cache2.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== \"body\");\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle2(element).position === \"fixed\";\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle2(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === \"fixed\") {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === \"static\" && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === \"absolute\" || currentContainingBlockComputedStyle.position === \"fixed\") || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      result = result.filter((ancestor) => ancestor !== currentNode);\n    } else {\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache2.set(element, result);\n  return result;\n}\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === \"clippingAncestors\" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i2 = 1; i2 < clippingAncestors.length; i2++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i2], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: top\n  };\n}\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === \"fixed\";\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== \"body\" || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\nfunction isStaticPositioned(element) {\n  return getComputedStyle2(element).position === \"static\";\n}\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle2(element).position === \"fixed\") {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow2(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\nvar getElementRects = async function(data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\nfunction isRTL2(element) {\n  return getComputedStyle2(element).direction === \"rtl\";\n}\nvar platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL: isRTL2\n};\nfunction rectsAreEqual(a2, b2) {\n  return a2.x === b2.x && a2.y === b2.y && a2.width === b2.width && a2.height === b2.height;\n}\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1e3);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === \"function\",\n    layoutShift = typeof IntersectionObserver === \"function\",\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : [];\n  ancestors.forEach((ancestor) => {\n    ancestorScroll && ancestor.addEventListener(\"scroll\", update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener(\"resize\", update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver((_ref) => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    if (floating) {\n      resizeObserver.observe(floating);\n    }\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach((ancestor) => {\n      ancestorScroll && ancestor.removeEventListener(\"scroll\", update);\n      ancestorResize && ancestor.removeEventListener(\"resize\", update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\nvar offset2 = offset;\nvar shift2 = shift;\nvar flip2 = flip;\nvar size2 = size;\nvar hide2 = hide;\nvar arrow2 = arrow;\nvar computePosition2 = (reference, floating, options) => {\n  const cache2 = /* @__PURE__ */ new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache2\n  };\n  return computePosition(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/LMWVDFW6.js\nvar PopperContext = createContext();\nfunction usePopperContext() {\n  const context = useContext(PopperContext);\n  if (context === void 0) {\n    throw new Error(\"[kobalte]: `usePopperContext` must be used within a `Popper` component\");\n  }\n  return context;\n}\nvar _tmpl$ = /* @__PURE__ */ template(`<svg display=\"block\" viewBox=\"0 0 30 30\" style=\"transform:scale(1.02)\"><g><path fill=\"none\" d=\"M23,27.8c1.1,1.2,3.4,2.2,5,2.2h2H0h2c1.7,0,3.9-1,5-2.2l6.6-7.2c0.7-0.8,2-0.8,2.7,0L23,27.8L23,27.8z\"></path><path stroke=\"none\" d=\"M23,27.8c1.1,1.2,3.4,2.2,5,2.2h2H0h2c1.7,0,3.9-1,5-2.2l6.6-7.2c0.7-0.8,2-0.8,2.7,0L23,27.8L23,27.8z\">`);\nvar DEFAULT_SIZE = 30;\nvar HALF_DEFAULT_SIZE = DEFAULT_SIZE / 2;\nvar ROTATION_DEG = {\n  top: 180,\n  right: -90,\n  bottom: 0,\n  left: 90\n};\nfunction PopperArrow(props) {\n  const context = usePopperContext();\n  const mergedProps = mergeDefaultProps({\n    size: DEFAULT_SIZE\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"ref\", \"style\", \"size\"]);\n  const dir = () => context.currentPlacement().split(\"-\")[0];\n  const contentStyle = createComputedStyle(context.contentRef);\n  const fill = () => contentStyle()?.getPropertyValue(\"background-color\") || \"none\";\n  const stroke = () => contentStyle()?.getPropertyValue(`border-${dir()}-color`) || \"none\";\n  const borderWidth = () => contentStyle()?.getPropertyValue(`border-${dir()}-width`) || \"0px\";\n  const strokeWidth = () => {\n    return Number.parseInt(borderWidth()) * 2 * (DEFAULT_SIZE / local.size);\n  };\n  const rotate = () => {\n    return `rotate(${ROTATION_DEG[dir()]} ${HALF_DEFAULT_SIZE} ${HALF_DEFAULT_SIZE}) translate(0 2)`;\n  };\n  return createComponent(Polymorphic, mergeProps({\n    as: \"div\",\n    ref(r$) {\n      const _ref$ = mergeRefs(context.setArrowRef, local.ref);\n      typeof _ref$ === \"function\" && _ref$(r$);\n    },\n    \"aria-hidden\": \"true\",\n    get style() {\n      return combineStyle({\n        // server side rendering\n        position: \"absolute\",\n        \"font-size\": `${local.size}px`,\n        width: \"1em\",\n        height: \"1em\",\n        \"pointer-events\": \"none\",\n        fill: fill(),\n        stroke: stroke(),\n        \"stroke-width\": strokeWidth()\n      }, local.style);\n    }\n  }, others, {\n    get children() {\n      const _el$ = _tmpl$(), _el$2 = _el$.firstChild;\n      createRenderEffect(() => setAttribute(_el$2, \"transform\", rotate()));\n      return _el$;\n    }\n  }));\n}\nfunction createComputedStyle(element) {\n  const [style, setStyle] = createSignal();\n  createEffect(() => {\n    const el = element();\n    el && setStyle(getWindow(el).getComputedStyle(el));\n  });\n  return style;\n}\nfunction PopperPositioner(props) {\n  const context = usePopperContext();\n  const [local, others] = splitProps(props, [\"ref\", \"style\"]);\n  return createComponent(Polymorphic, mergeProps({\n    as: \"div\",\n    ref(r$) {\n      const _ref$ = mergeRefs(context.setPositionerRef, local.ref);\n      typeof _ref$ === \"function\" && _ref$(r$);\n    },\n    \"data-popper-positioner\": \"\",\n    get style() {\n      return combineStyle({\n        position: \"absolute\",\n        top: 0,\n        left: 0,\n        \"min-width\": \"max-content\"\n      }, local.style);\n    }\n  }, others));\n}\nfunction createDOMRect(anchorRect) {\n  const { x = 0, y = 0, width = 0, height = 0 } = anchorRect ?? {};\n  if (typeof DOMRect === \"function\") {\n    return new DOMRect(x, y, width, height);\n  }\n  const rect = {\n    x,\n    y,\n    width,\n    height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x\n  };\n  return { ...rect, toJSON: () => rect };\n}\nfunction getAnchorElement(anchor, getAnchorRect) {\n  const contextElement = anchor;\n  return {\n    contextElement,\n    getBoundingClientRect: () => {\n      const anchorRect = getAnchorRect(anchor);\n      if (anchorRect) {\n        return createDOMRect(anchorRect);\n      }\n      if (anchor) {\n        return anchor.getBoundingClientRect();\n      }\n      return createDOMRect();\n    }\n  };\n}\nfunction isValidPlacement(flip22) {\n  return /^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(flip22);\n}\nvar REVERSE_BASE_PLACEMENT = {\n  top: \"bottom\",\n  right: \"left\",\n  bottom: \"top\",\n  left: \"right\"\n};\nfunction getTransformOrigin(placement, readingDirection) {\n  const [basePlacement, alignment] = placement.split(\"-\");\n  const reversePlacement = REVERSE_BASE_PLACEMENT[basePlacement];\n  if (!alignment) {\n    return `${reversePlacement} center`;\n  }\n  if (basePlacement === \"left\" || basePlacement === \"right\") {\n    return `${reversePlacement} ${alignment === \"start\" ? \"top\" : \"bottom\"}`;\n  }\n  if (alignment === \"start\") {\n    return `${reversePlacement} ${readingDirection === \"rtl\" ? \"right\" : \"left\"}`;\n  }\n  return `${reversePlacement} ${readingDirection === \"rtl\" ? \"left\" : \"right\"}`;\n}\nfunction PopperRoot(props) {\n  const mergedProps = mergeDefaultProps({\n    getAnchorRect: (anchor) => anchor?.getBoundingClientRect(),\n    placement: \"bottom\",\n    gutter: 0,\n    shift: 0,\n    flip: true,\n    slide: true,\n    overlap: false,\n    sameWidth: false,\n    fitViewport: false,\n    hideWhenDetached: false,\n    detachedPadding: 0,\n    arrowPadding: 4,\n    overflowPadding: 8\n  }, props);\n  const [positionerRef, setPositionerRef] = createSignal();\n  const [arrowRef, setArrowRef] = createSignal();\n  const [currentPlacement, setCurrentPlacement] = createSignal(mergedProps.placement);\n  const anchorRef = () => getAnchorElement(mergedProps.anchorRef?.(), mergedProps.getAnchorRect);\n  const {\n    direction\n  } = useLocale();\n  async function updatePosition() {\n    const referenceEl = anchorRef();\n    const floatingEl = positionerRef();\n    const arrowEl = arrowRef();\n    if (!referenceEl || !floatingEl) {\n      return;\n    }\n    const arrowOffset = (arrowEl?.clientHeight || 0) / 2;\n    const finalGutter = typeof mergedProps.gutter === \"number\" ? mergedProps.gutter + arrowOffset : mergedProps.gutter ?? arrowOffset;\n    floatingEl.style.setProperty(\"--kb-popper-content-overflow-padding\", `${mergedProps.overflowPadding}px`);\n    referenceEl.getBoundingClientRect();\n    const middleware = [\n      // https://floating-ui.com/docs/offset\n      offset2(({\n        placement\n      }) => {\n        const hasAlignment = !!placement.split(\"-\")[1];\n        return {\n          mainAxis: finalGutter,\n          crossAxis: !hasAlignment ? mergedProps.shift : void 0,\n          alignmentAxis: mergedProps.shift\n        };\n      })\n    ];\n    if (mergedProps.flip !== false) {\n      const fallbackPlacements = typeof mergedProps.flip === \"string\" ? mergedProps.flip.split(\" \") : void 0;\n      if (fallbackPlacements !== void 0 && !fallbackPlacements.every(isValidPlacement)) {\n        throw new Error(\"`flip` expects a spaced-delimited list of placements\");\n      }\n      middleware.push(flip2({\n        padding: mergedProps.overflowPadding,\n        fallbackPlacements\n      }));\n    }\n    if (mergedProps.slide || mergedProps.overlap) {\n      middleware.push(shift2({\n        mainAxis: mergedProps.slide,\n        crossAxis: mergedProps.overlap,\n        padding: mergedProps.overflowPadding\n      }));\n    }\n    middleware.push(size2({\n      padding: mergedProps.overflowPadding,\n      apply({\n        availableWidth,\n        availableHeight,\n        rects\n      }) {\n        const referenceWidth = Math.round(rects.reference.width);\n        availableWidth = Math.floor(availableWidth);\n        availableHeight = Math.floor(availableHeight);\n        floatingEl.style.setProperty(\"--kb-popper-anchor-width\", `${referenceWidth}px`);\n        floatingEl.style.setProperty(\"--kb-popper-content-available-width\", `${availableWidth}px`);\n        floatingEl.style.setProperty(\"--kb-popper-content-available-height\", `${availableHeight}px`);\n        if (mergedProps.sameWidth) {\n          floatingEl.style.width = `${referenceWidth}px`;\n        }\n        if (mergedProps.fitViewport) {\n          floatingEl.style.maxWidth = `${availableWidth}px`;\n          floatingEl.style.maxHeight = `${availableHeight}px`;\n        }\n      }\n    }));\n    if (mergedProps.hideWhenDetached) {\n      middleware.push(hide2({\n        padding: mergedProps.detachedPadding\n      }));\n    }\n    if (arrowEl) {\n      middleware.push(arrow2({\n        element: arrowEl,\n        padding: mergedProps.arrowPadding\n      }));\n    }\n    const pos = await computePosition2(referenceEl, floatingEl, {\n      placement: mergedProps.placement,\n      strategy: \"absolute\",\n      middleware,\n      platform: {\n        ...platform,\n        isRTL: () => direction() === \"rtl\"\n      }\n    });\n    setCurrentPlacement(pos.placement);\n    mergedProps.onCurrentPlacementChange?.(pos.placement);\n    if (!floatingEl) {\n      return;\n    }\n    floatingEl.style.setProperty(\"--kb-popper-content-transform-origin\", getTransformOrigin(pos.placement, direction()));\n    const x = Math.round(pos.x);\n    const y = Math.round(pos.y);\n    let visibility;\n    if (mergedProps.hideWhenDetached) {\n      visibility = pos.middlewareData.hide?.referenceHidden ? \"hidden\" : \"visible\";\n    }\n    Object.assign(floatingEl.style, {\n      top: \"0\",\n      left: \"0\",\n      transform: `translate3d(${x}px, ${y}px, 0)`,\n      visibility\n    });\n    if (arrowEl && pos.middlewareData.arrow) {\n      const {\n        x: arrowX,\n        y: arrowY\n      } = pos.middlewareData.arrow;\n      const dir = pos.placement.split(\"-\")[0];\n      Object.assign(arrowEl.style, {\n        left: arrowX != null ? `${arrowX}px` : \"\",\n        top: arrowY != null ? `${arrowY}px` : \"\",\n        [dir]: \"100%\"\n      });\n    }\n  }\n  createEffect(() => {\n    const referenceEl = anchorRef();\n    const floatingEl = positionerRef();\n    if (!referenceEl || !floatingEl) {\n      return;\n    }\n    const cleanupAutoUpdate = autoUpdate(referenceEl, floatingEl, updatePosition, {\n      // JSDOM doesn't support ResizeObserver\n      elementResize: typeof ResizeObserver === \"function\"\n    });\n    onCleanup(cleanupAutoUpdate);\n  });\n  createEffect(() => {\n    const positioner = positionerRef();\n    const content = mergedProps.contentRef?.();\n    if (!positioner || !content) {\n      return;\n    }\n    queueMicrotask(() => {\n      positioner.style.zIndex = getComputedStyle(content).zIndex;\n    });\n  });\n  const context = {\n    currentPlacement,\n    contentRef: () => mergedProps.contentRef?.(),\n    setPositionerRef,\n    setArrowRef\n  };\n  return createComponent(PopperContext.Provider, {\n    value: context,\n    get children() {\n      return mergedProps.children;\n    }\n  });\n}\nvar Popper = Object.assign(PopperRoot, {\n  Arrow: PopperArrow,\n  Context: PopperContext,\n  usePopperContext,\n  Positioner: PopperPositioner\n});\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/ZKYDDHM6.js\nvar DATA_TOP_LAYER_ATTR = \"data-kb-top-layer\";\nvar originalBodyPointerEvents;\nvar hasDisabledBodyPointerEvents = false;\nvar layers = [];\nfunction indexOf(node) {\n  return layers.findIndex((layer) => layer.node === node);\n}\nfunction find(node) {\n  return layers[indexOf(node)];\n}\nfunction isTopMostLayer(node) {\n  return layers[layers.length - 1].node === node;\n}\nfunction getPointerBlockingLayers() {\n  return layers.filter((layer) => layer.isPointerBlocking);\n}\nfunction getTopMostPointerBlockingLayer() {\n  return [...getPointerBlockingLayers()].slice(-1)[0];\n}\nfunction hasPointerBlockingLayer() {\n  return getPointerBlockingLayers().length > 0;\n}\nfunction isBelowPointerBlockingLayer(node) {\n  const highestBlockingIndex = indexOf(getTopMostPointerBlockingLayer()?.node);\n  return indexOf(node) < highestBlockingIndex;\n}\nfunction addLayer(layer) {\n  layers.push(layer);\n}\nfunction removeLayer(node) {\n  const index = indexOf(node);\n  if (index < 0) {\n    return;\n  }\n  layers.splice(index, 1);\n}\nfunction assignPointerEventToLayers() {\n  for (const {\n    node\n  } of layers) {\n    node.style.pointerEvents = isBelowPointerBlockingLayer(node) ? \"none\" : \"auto\";\n  }\n}\nfunction disableBodyPointerEvents(node) {\n  if (hasPointerBlockingLayer() && !hasDisabledBodyPointerEvents) {\n    const ownerDocument = getDocument(node);\n    originalBodyPointerEvents = document.body.style.pointerEvents;\n    ownerDocument.body.style.pointerEvents = \"none\";\n    hasDisabledBodyPointerEvents = true;\n  }\n}\nfunction restoreBodyPointerEvents(node) {\n  if (hasPointerBlockingLayer()) {\n    return;\n  }\n  const ownerDocument = getDocument(node);\n  ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n  if (ownerDocument.body.style.length === 0) {\n    ownerDocument.body.removeAttribute(\"style\");\n  }\n  hasDisabledBodyPointerEvents = false;\n}\nvar layerStack = {\n  layers,\n  isTopMostLayer,\n  hasPointerBlockingLayer,\n  isBelowPointerBlockingLayer,\n  addLayer,\n  removeLayer,\n  indexOf,\n  find,\n  assignPointerEventToLayers,\n  disableBodyPointerEvents,\n  restoreBodyPointerEvents\n};\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/KKN23NY7.js\nvar POINTER_DOWN_OUTSIDE_EVENT = \"interactOutside.pointerDownOutside\";\nvar FOCUS_OUTSIDE_EVENT = \"interactOutside.focusOutside\";\nfunction createInteractOutside(props, ref) {\n  let pointerDownTimeoutId;\n  let clickHandler = noop3;\n  const ownerDocument = () => getDocument(ref());\n  const onPointerDownOutside = (e2) => props.onPointerDownOutside?.(e2);\n  const onFocusOutside = (e2) => props.onFocusOutside?.(e2);\n  const onInteractOutside = (e2) => props.onInteractOutside?.(e2);\n  const isEventOutside = (e2) => {\n    const target = e2.target;\n    if (!(target instanceof Element)) {\n      return false;\n    }\n    if (target.closest(`[${DATA_TOP_LAYER_ATTR}]`)) {\n      return false;\n    }\n    if (!contains(ownerDocument(), target)) {\n      return false;\n    }\n    if (contains(ref(), target)) {\n      return false;\n    }\n    return !props.shouldExcludeElement?.(target);\n  };\n  const onPointerDown = (e2) => {\n    function handler() {\n      const container = ref();\n      const target = e2.target;\n      if (!container || !target || !isEventOutside(e2)) {\n        return;\n      }\n      const handler2 = composeEventHandlers([\n        onPointerDownOutside,\n        onInteractOutside\n      ]);\n      target.addEventListener(POINTER_DOWN_OUTSIDE_EVENT, handler2, {\n        once: true\n      });\n      const pointerDownOutsideEvent = new CustomEvent(\n        POINTER_DOWN_OUTSIDE_EVENT,\n        {\n          bubbles: false,\n          cancelable: true,\n          detail: {\n            originalEvent: e2,\n            isContextMenu: e2.button === 2 || isCtrlKey(e2) && e2.button === 0\n          }\n        }\n      );\n      target.dispatchEvent(pointerDownOutsideEvent);\n    }\n    if (e2.pointerType === \"touch\") {\n      ownerDocument().removeEventListener(\"click\", handler);\n      clickHandler = handler;\n      ownerDocument().addEventListener(\"click\", handler, { once: true });\n    } else {\n      handler();\n    }\n  };\n  const onFocusIn = (e2) => {\n    const container = ref();\n    const target = e2.target;\n    if (!container || !target || !isEventOutside(e2)) {\n      return;\n    }\n    const handler = composeEventHandlers([\n      onFocusOutside,\n      onInteractOutside\n    ]);\n    target.addEventListener(FOCUS_OUTSIDE_EVENT, handler, { once: true });\n    const focusOutsideEvent = new CustomEvent(FOCUS_OUTSIDE_EVENT, {\n      bubbles: false,\n      cancelable: true,\n      detail: {\n        originalEvent: e2,\n        isContextMenu: false\n      }\n    });\n    target.dispatchEvent(focusOutsideEvent);\n  };\n  createEffect(() => {\n    if (isServer) {\n      return;\n    }\n    if (access(props.isDisabled)) {\n      return;\n    }\n    pointerDownTimeoutId = window.setTimeout(() => {\n      ownerDocument().addEventListener(\"pointerdown\", onPointerDown, true);\n    }, 0);\n    ownerDocument().addEventListener(\"focusin\", onFocusIn, true);\n    onCleanup(() => {\n      window.clearTimeout(pointerDownTimeoutId);\n      ownerDocument().removeEventListener(\"click\", clickHandler);\n      ownerDocument().removeEventListener(\"pointerdown\", onPointerDown, true);\n      ownerDocument().removeEventListener(\"focusin\", onFocusIn, true);\n    });\n  });\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/QEMPLYZX.js\nfunction createEscapeKeyDown(props) {\n  const handleKeyDown = (event) => {\n    if (event.key === EventKey.Escape) {\n      props.onEscapeKeyDown?.(event);\n    }\n  };\n  createEffect(() => {\n    if (isServer) {\n      return;\n    }\n    if (access(props.isDisabled)) {\n      return;\n    }\n    const document2 = props.ownerDocument?.() ?? getDocument();\n    document2.addEventListener(\"keydown\", handleKeyDown);\n    onCleanup(() => {\n      document2.removeEventListener(\"keydown\", handleKeyDown);\n    });\n  });\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/BASJUNIE.js\nvar DismissableLayerContext = createContext();\nfunction useOptionalDismissableLayerContext() {\n  return useContext(DismissableLayerContext);\n}\nfunction DismissableLayer(props) {\n  let ref;\n  const parentContext = useOptionalDismissableLayerContext();\n  const [local, others] = splitProps(props, [\"ref\", \"disableOutsidePointerEvents\", \"excludedElements\", \"onEscapeKeyDown\", \"onPointerDownOutside\", \"onFocusOutside\", \"onInteractOutside\", \"onDismiss\", \"bypassTopMostLayerCheck\"]);\n  const nestedLayers = /* @__PURE__ */ new Set([]);\n  const registerNestedLayer = (element) => {\n    nestedLayers.add(element);\n    const parentUnregister = parentContext?.registerNestedLayer(element);\n    return () => {\n      nestedLayers.delete(element);\n      parentUnregister?.();\n    };\n  };\n  const shouldExcludeElement = (element) => {\n    if (!ref) {\n      return false;\n    }\n    return local.excludedElements?.some((node) => contains(node(), element)) || [...nestedLayers].some((layer) => contains(layer, element));\n  };\n  const onPointerDownOutside = (e2) => {\n    if (!ref || layerStack.isBelowPointerBlockingLayer(ref)) {\n      return;\n    }\n    if (!local.bypassTopMostLayerCheck && !layerStack.isTopMostLayer(ref)) {\n      return;\n    }\n    local.onPointerDownOutside?.(e2);\n    local.onInteractOutside?.(e2);\n    if (!e2.defaultPrevented) {\n      local.onDismiss?.();\n    }\n  };\n  const onFocusOutside = (e2) => {\n    local.onFocusOutside?.(e2);\n    local.onInteractOutside?.(e2);\n    if (!e2.defaultPrevented) {\n      local.onDismiss?.();\n    }\n  };\n  createInteractOutside({\n    shouldExcludeElement,\n    onPointerDownOutside,\n    onFocusOutside\n  }, () => ref);\n  createEscapeKeyDown({\n    ownerDocument: () => getDocument(ref),\n    onEscapeKeyDown: (e2) => {\n      if (!ref || !layerStack.isTopMostLayer(ref)) {\n        return;\n      }\n      local.onEscapeKeyDown?.(e2);\n      if (!e2.defaultPrevented && local.onDismiss) {\n        e2.preventDefault();\n        local.onDismiss();\n      }\n    }\n  });\n  onMount(() => {\n    if (!ref) {\n      return;\n    }\n    layerStack.addLayer({\n      node: ref,\n      isPointerBlocking: local.disableOutsidePointerEvents,\n      dismiss: local.onDismiss\n    });\n    const unregisterFromParentLayer = parentContext?.registerNestedLayer(ref);\n    layerStack.assignPointerEventToLayers();\n    layerStack.disableBodyPointerEvents(ref);\n    onCleanup(() => {\n      if (!ref) {\n        return;\n      }\n      layerStack.removeLayer(ref);\n      unregisterFromParentLayer?.();\n      layerStack.assignPointerEventToLayers();\n      layerStack.restoreBodyPointerEvents(ref);\n    });\n  });\n  createEffect(on([() => ref, () => local.disableOutsidePointerEvents], ([ref2, disableOutsidePointerEvents]) => {\n    if (!ref2) {\n      return;\n    }\n    const layer = layerStack.find(ref2);\n    if (layer && layer.isPointerBlocking !== disableOutsidePointerEvents) {\n      layer.isPointerBlocking = disableOutsidePointerEvents;\n      layerStack.assignPointerEventToLayers();\n    }\n    if (disableOutsidePointerEvents) {\n      layerStack.disableBodyPointerEvents(ref2);\n    }\n    onCleanup(() => {\n      layerStack.restoreBodyPointerEvents(ref2);\n    });\n  }, {\n    defer: true\n  }));\n  const context = {\n    registerNestedLayer\n  };\n  return createComponent(DismissableLayerContext.Provider, {\n    value: context,\n    get children() {\n      return createComponent(Polymorphic, mergeProps({\n        as: \"div\",\n        ref(r$) {\n          const _ref$ = mergeRefs((el) => ref = el, local.ref);\n          typeof _ref$ === \"function\" && _ref$(r$);\n        }\n      }, others));\n    }\n  });\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/7LCANGHD.js\nfunction createDisclosureState(props = {}) {\n  const [isOpen, setIsOpen] = createControllableBooleanSignal({\n    value: () => access(props.open),\n    defaultValue: () => !!access(props.defaultOpen),\n    onChange: (value) => props.onOpenChange?.(value)\n  });\n  const open = () => {\n    setIsOpen(true);\n  };\n  const close = () => {\n    setIsOpen(false);\n  };\n  const toggle = () => {\n    isOpen() ? close() : open();\n  };\n  return {\n    isOpen,\n    setIsOpen,\n    open,\n    close,\n    toggle\n  };\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/E4R2EMM4.js\nfunction createRegisterId(setter) {\n  return (id) => {\n    setter(id);\n    return () => setter(void 0);\n  };\n}\n\n// ../../node_modules/.pnpm/@corvu+utils@0.4.2_solid-js@1.9.12/node_modules/@corvu/utils/dist/chunk/ZV6G25TT.js\nvar access2 = (v) => typeof v === \"function\" ? v() : v;\n\n// ../../node_modules/.pnpm/solid-presence@0.1.8_solid-js@1.9.12/node_modules/solid-presence/dist/index.js\nvar createPresence = (props) => {\n  const refStyles = createMemo(() => {\n    const element = access2(props.element);\n    if (!element) return;\n    return getComputedStyle(element);\n  });\n  const getAnimationName = () => {\n    return refStyles()?.animationName ?? \"none\";\n  };\n  const [presentState, setPresentState] = createSignal(access2(props.show) ? \"present\" : \"hidden\");\n  let animationName = \"none\";\n  createEffect((prevShow) => {\n    const show = access2(props.show);\n    untrack(() => {\n      if (prevShow === show) return show;\n      const prevAnimationName = animationName;\n      const currentAnimationName = getAnimationName();\n      if (show) {\n        setPresentState(\"present\");\n      } else if (currentAnimationName === \"none\" || refStyles()?.display === \"none\") {\n        setPresentState(\"hidden\");\n      } else {\n        const isAnimating = prevAnimationName !== currentAnimationName;\n        if (prevShow === true && isAnimating) {\n          setPresentState(\"hiding\");\n        } else {\n          setPresentState(\"hidden\");\n        }\n      }\n    });\n    return show;\n  });\n  createEffect(() => {\n    const element = access2(props.element);\n    if (!element) return;\n    const handleAnimationStart = (event) => {\n      if (event.target === element) {\n        animationName = getAnimationName();\n      }\n    };\n    const handleAnimationEnd = (event) => {\n      const currentAnimationName = getAnimationName();\n      const isCurrentAnimation = currentAnimationName.includes(\n        event.animationName\n      );\n      if (event.target === element && isCurrentAnimation && presentState() === \"hiding\") {\n        setPresentState(\"hidden\");\n      }\n    };\n    element.addEventListener(\"animationstart\", handleAnimationStart);\n    element.addEventListener(\"animationcancel\", handleAnimationEnd);\n    element.addEventListener(\"animationend\", handleAnimationEnd);\n    onCleanup(() => {\n      element.removeEventListener(\"animationstart\", handleAnimationStart);\n      element.removeEventListener(\"animationcancel\", handleAnimationEnd);\n      element.removeEventListener(\"animationend\", handleAnimationEnd);\n    });\n  });\n  return {\n    present: () => presentState() === \"present\" || presentState() === \"hiding\",\n    state: presentState,\n    setState: setPresentState\n  };\n};\nvar presence_default = createPresence;\nvar src_default = presence_default;\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/YKGT7A57.js\nvar FORM_CONTROL_PROP_NAMES = [\"id\", \"name\", \"validationState\", \"required\", \"disabled\", \"readOnly\"];\nfunction createFormControl(props) {\n  const defaultId = `form-control-${createUniqueId()}`;\n  const mergedProps = mergeDefaultProps({\n    id: defaultId\n  }, props);\n  const [labelId, setLabelId] = createSignal();\n  const [fieldId, setFieldId] = createSignal();\n  const [descriptionId, setDescriptionId] = createSignal();\n  const [errorMessageId, setErrorMessageId] = createSignal();\n  const getAriaLabelledBy = (fieldId2, fieldAriaLabel, fieldAriaLabelledBy) => {\n    const hasAriaLabelledBy = fieldAriaLabelledBy != null || labelId() != null;\n    return [\n      fieldAriaLabelledBy,\n      labelId(),\n      // If there is both an aria-label and aria-labelledby, add the field itself has an aria-labelledby\n      hasAriaLabelledBy && fieldAriaLabel != null ? fieldId2 : void 0\n    ].filter(Boolean).join(\" \") || void 0;\n  };\n  const getAriaDescribedBy = (fieldAriaDescribedBy) => {\n    return [\n      descriptionId(),\n      // Use aria-describedby for error message because aria-errormessage is unsupported using VoiceOver or NVDA.\n      // See https://github.com/adobe/react-spectrum/issues/1346#issuecomment-740136268\n      errorMessageId(),\n      fieldAriaDescribedBy\n    ].filter(Boolean).join(\" \") || void 0;\n  };\n  const dataset = createMemo(() => ({\n    \"data-valid\": access(mergedProps.validationState) === \"valid\" ? \"\" : void 0,\n    \"data-invalid\": access(mergedProps.validationState) === \"invalid\" ? \"\" : void 0,\n    \"data-required\": access(mergedProps.required) ? \"\" : void 0,\n    \"data-disabled\": access(mergedProps.disabled) ? \"\" : void 0,\n    \"data-readonly\": access(mergedProps.readOnly) ? \"\" : void 0\n  }));\n  const formControlContext = {\n    name: () => access(mergedProps.name) ?? access(mergedProps.id),\n    dataset,\n    validationState: () => access(mergedProps.validationState),\n    isRequired: () => access(mergedProps.required),\n    isDisabled: () => access(mergedProps.disabled),\n    isReadOnly: () => access(mergedProps.readOnly),\n    labelId,\n    fieldId,\n    descriptionId,\n    errorMessageId,\n    getAriaLabelledBy,\n    getAriaDescribedBy,\n    generateId: createGenerateId(() => access(mergedProps.id)),\n    registerLabel: createRegisterId(setLabelId),\n    registerField: createRegisterId(setFieldId),\n    registerDescription: createRegisterId(setDescriptionId),\n    registerErrorMessage: createRegisterId(setErrorMessageId)\n  };\n  return {\n    formControlContext\n  };\n}\nvar FormControlContext = createContext();\nfunction useFormControlContext() {\n  const context = useContext(FormControlContext);\n  if (context === void 0) {\n    throw new Error(\"[kobalte]: `useFormControlContext` must be used within a `FormControlContext.Provider` component\");\n  }\n  return context;\n}\nfunction FormControlDescription(props) {\n  const context = useFormControlContext();\n  const mergedProps = mergeDefaultProps({\n    id: context.generateId(\"description\")\n  }, props);\n  createEffect(() => onCleanup(context.registerDescription(mergedProps.id)));\n  return createComponent(Polymorphic, mergeProps({\n    as: \"div\"\n  }, () => context.dataset(), mergedProps));\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/7ZHN3PYD.js\nfunction FormControlLabel(props) {\n  let ref;\n  const context = useFormControlContext();\n  const mergedProps = mergeDefaultProps({\n    id: context.generateId(\"label\")\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"ref\"]);\n  const tagName = createTagName(() => ref, () => \"label\");\n  createEffect(() => onCleanup(context.registerLabel(others.id)));\n  return createComponent(Polymorphic, mergeProps({\n    as: \"label\",\n    ref(r$) {\n      const _ref$ = mergeRefs((el) => ref = el, local.ref);\n      typeof _ref$ === \"function\" && _ref$(r$);\n    },\n    get [\"for\"]() {\n      return memo(() => tagName() === \"label\")() ? context.fieldId() : void 0;\n    }\n  }, () => context.dataset(), others));\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/ANN3A2QM.js\nfunction createFormResetListener(element, handler) {\n  createEffect(\n    on(element, (element2) => {\n      if (element2 == null) {\n        return;\n      }\n      const form = getClosestForm(element2);\n      if (form == null) {\n        return;\n      }\n      form.addEventListener(\"reset\", handler, { passive: true });\n      onCleanup(() => {\n        form.removeEventListener(\"reset\", handler);\n      });\n    })\n  );\n}\nfunction getClosestForm(element) {\n  return isFormElement(element) ? element.form : element.closest(\"form\");\n}\nfunction isFormElement(element) {\n  return element.matches(\"textarea, input, select, button\");\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/ICNSTULC.js\nfunction FormControlErrorMessage(props) {\n  const context = useFormControlContext();\n  const mergedProps = mergeDefaultProps({\n    id: context.generateId(\"error-message\")\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"forceMount\"]);\n  const isInvalid = () => context.validationState() === \"invalid\";\n  createEffect(() => {\n    if (!isInvalid()) {\n      return;\n    }\n    onCleanup(context.registerErrorMessage(others.id));\n  });\n  return createComponent(Show, {\n    get when() {\n      return local.forceMount || isInvalid();\n    },\n    get children() {\n      return createComponent(Polymorphic, mergeProps({\n        as: \"div\"\n      }, () => context.dataset(), others));\n    }\n  });\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/ISKHZMHS.js\nvar AUTOFOCUS_ON_MOUNT_EVENT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT_EVENT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = {\n  bubbles: false,\n  cancelable: true\n};\nvar focusScopeStack = {\n  /** A stack of focus scopes, with the active one at the top */\n  stack: [],\n  active() {\n    return this.stack[0];\n  },\n  add(scope) {\n    if (scope !== this.active()) {\n      this.active()?.pause();\n    }\n    this.stack = removeItemFromArray(this.stack, scope);\n    this.stack.unshift(scope);\n  },\n  remove(scope) {\n    this.stack = removeItemFromArray(this.stack, scope);\n    this.active()?.resume();\n  }\n};\nfunction createFocusScope(props, ref) {\n  const [isPaused, setIsPaused] = createSignal(false);\n  const focusScope = {\n    pause() {\n      setIsPaused(true);\n    },\n    resume() {\n      setIsPaused(false);\n    }\n  };\n  let lastFocusedElement = null;\n  const onMountAutoFocus = (e2) => props.onMountAutoFocus?.(e2);\n  const onUnmountAutoFocus = (e2) => props.onUnmountAutoFocus?.(e2);\n  const ownerDocument = () => getDocument(ref());\n  const createSentinel = () => {\n    const element = ownerDocument().createElement(\"span\");\n    element.setAttribute(\"data-focus-trap\", \"\");\n    element.tabIndex = 0;\n    Object.assign(element.style, visuallyHiddenStyles);\n    return element;\n  };\n  const tabbables = () => {\n    const container = ref();\n    if (!container) {\n      return [];\n    }\n    return getAllTabbableIn(container, true).filter((el) => !el.hasAttribute(\"data-focus-trap\"));\n  };\n  const firstTabbable = () => {\n    const items = tabbables();\n    return items.length > 0 ? items[0] : null;\n  };\n  const lastTabbable = () => {\n    const items = tabbables();\n    return items.length > 0 ? items[items.length - 1] : null;\n  };\n  const shouldPreventUnmountAutoFocus = () => {\n    const container = ref();\n    if (!container) {\n      return false;\n    }\n    const activeElement = getActiveElement(container);\n    if (!activeElement) {\n      return false;\n    }\n    if (contains(container, activeElement)) {\n      return false;\n    }\n    return isFocusable(activeElement);\n  };\n  createEffect(() => {\n    if (isServer) {\n      return;\n    }\n    const container = ref();\n    if (!container) {\n      return;\n    }\n    focusScopeStack.add(focusScope);\n    const previouslyFocusedElement = getActiveElement(container);\n    const hasFocusedCandidate = contains(container, previouslyFocusedElement);\n    if (!hasFocusedCandidate) {\n      const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT_EVENT, EVENT_OPTIONS);\n      container.addEventListener(AUTOFOCUS_ON_MOUNT_EVENT, onMountAutoFocus);\n      container.dispatchEvent(mountEvent);\n      if (!mountEvent.defaultPrevented) {\n        setTimeout(() => {\n          focusWithoutScrolling(firstTabbable());\n          if (getActiveElement(container) === previouslyFocusedElement) {\n            focusWithoutScrolling(container);\n          }\n        }, 0);\n      }\n    }\n    onCleanup(() => {\n      container.removeEventListener(AUTOFOCUS_ON_MOUNT_EVENT, onMountAutoFocus);\n      setTimeout(() => {\n        const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT_EVENT, EVENT_OPTIONS);\n        if (shouldPreventUnmountAutoFocus()) {\n          unmountEvent.preventDefault();\n        }\n        container.addEventListener(AUTOFOCUS_ON_UNMOUNT_EVENT, onUnmountAutoFocus);\n        container.dispatchEvent(unmountEvent);\n        if (!unmountEvent.defaultPrevented) {\n          focusWithoutScrolling(previouslyFocusedElement ?? ownerDocument().body);\n        }\n        container.removeEventListener(AUTOFOCUS_ON_UNMOUNT_EVENT, onUnmountAutoFocus);\n        focusScopeStack.remove(focusScope);\n      }, 0);\n    });\n  });\n  createEffect(() => {\n    if (isServer) {\n      return;\n    }\n    const container = ref();\n    if (!container || !access(props.trapFocus) || isPaused()) {\n      return;\n    }\n    const onFocusIn = (event) => {\n      const target = event.target;\n      if (target?.closest(`[${DATA_TOP_LAYER_ATTR}]`)) {\n        return;\n      }\n      if (contains(container, target)) {\n        lastFocusedElement = target;\n      } else {\n        focusWithoutScrolling(lastFocusedElement);\n      }\n    };\n    const onFocusOut = (event) => {\n      const relatedTarget = event.relatedTarget;\n      const target = relatedTarget ?? getActiveElement(container);\n      if (target?.closest(`[${DATA_TOP_LAYER_ATTR}]`)) {\n        return;\n      }\n      if (!contains(container, target)) {\n        focusWithoutScrolling(lastFocusedElement);\n      }\n    };\n    ownerDocument().addEventListener(\"focusin\", onFocusIn);\n    ownerDocument().addEventListener(\"focusout\", onFocusOut);\n    onCleanup(() => {\n      ownerDocument().removeEventListener(\"focusin\", onFocusIn);\n      ownerDocument().removeEventListener(\"focusout\", onFocusOut);\n    });\n  });\n  createEffect(() => {\n    if (isServer) {\n      return;\n    }\n    const container = ref();\n    if (!container || !access(props.trapFocus) || isPaused()) {\n      return;\n    }\n    const startSentinel = createSentinel();\n    container.insertAdjacentElement(\"afterbegin\", startSentinel);\n    const endSentinel = createSentinel();\n    container.insertAdjacentElement(\"beforeend\", endSentinel);\n    function onFocus(event) {\n      const first = firstTabbable();\n      const last = lastTabbable();\n      if (event.relatedTarget === first) {\n        focusWithoutScrolling(last);\n      } else {\n        focusWithoutScrolling(first);\n      }\n    }\n    startSentinel.addEventListener(\"focusin\", onFocus);\n    endSentinel.addEventListener(\"focusin\", onFocus);\n    const observer = new MutationObserver((mutations) => {\n      for (const mutation of mutations) {\n        if (mutation.previousSibling === endSentinel) {\n          endSentinel.remove();\n          container.insertAdjacentElement(\"beforeend\", endSentinel);\n        }\n        if (mutation.nextSibling === startSentinel) {\n          startSentinel.remove();\n          container.insertAdjacentElement(\"afterbegin\", startSentinel);\n        }\n      }\n    });\n    observer.observe(container, {\n      childList: true,\n      subtree: false\n    });\n    onCleanup(() => {\n      startSentinel.removeEventListener(\"focusin\", onFocus);\n      endSentinel.removeEventListener(\"focusin\", onFocus);\n      startSentinel.remove();\n      endSentinel.remove();\n      observer.disconnect();\n    });\n  });\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/YA7DCYMB.js\nvar DATA_LIVE_ANNOUNCER_ATTR = \"data-live-announcer\";\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/455ZADO2.js\nfunction createHideOutside(props) {\n  createEffect(() => {\n    if (access(props.isDisabled)) {\n      return;\n    }\n    onCleanup(ariaHideOutside(access(props.targets), access(props.root)));\n  });\n}\nvar refCountMap = /* @__PURE__ */ new WeakMap();\nvar observerStack = [];\nfunction ariaHideOutside(targets, root = document.body) {\n  const visibleNodes = new Set(targets);\n  const hiddenNodes = /* @__PURE__ */ new Set();\n  const walk = (root2) => {\n    for (const element of root2.querySelectorAll(\n      `[${DATA_LIVE_ANNOUNCER_ATTR}], [${DATA_TOP_LAYER_ATTR}]`\n    )) {\n      visibleNodes.add(element);\n    }\n    const acceptNode = (node) => {\n      if (visibleNodes.has(node) || node.parentElement && hiddenNodes.has(node.parentElement) && node.parentElement.getAttribute(\"role\") !== \"row\") {\n        return NodeFilter.FILTER_REJECT;\n      }\n      for (const target of visibleNodes) {\n        if (node.contains(target)) {\n          return NodeFilter.FILTER_SKIP;\n        }\n      }\n      return NodeFilter.FILTER_ACCEPT;\n    };\n    const walker = document.createTreeWalker(root2, NodeFilter.SHOW_ELEMENT, {\n      acceptNode\n    });\n    const acceptRoot = acceptNode(root2);\n    if (acceptRoot === NodeFilter.FILTER_ACCEPT) {\n      hide3(root2);\n    }\n    if (acceptRoot !== NodeFilter.FILTER_REJECT) {\n      let node = walker.nextNode();\n      while (node != null) {\n        hide3(node);\n        node = walker.nextNode();\n      }\n    }\n  };\n  const hide3 = (node) => {\n    const refCount = refCountMap.get(node) ?? 0;\n    if (node.getAttribute(\"aria-hidden\") === \"true\" && refCount === 0) {\n      return;\n    }\n    if (refCount === 0) {\n      node.setAttribute(\"aria-hidden\", \"true\");\n    }\n    hiddenNodes.add(node);\n    refCountMap.set(node, refCount + 1);\n  };\n  if (observerStack.length) {\n    observerStack[observerStack.length - 1].disconnect();\n  }\n  walk(root);\n  const observer = new MutationObserver((changes) => {\n    for (const change of changes) {\n      if (change.type !== \"childList\" || change.addedNodes.length === 0) {\n        continue;\n      }\n      if (![...visibleNodes, ...hiddenNodes].some(\n        (node) => node.contains(change.target)\n      )) {\n        for (const node of change.removedNodes) {\n          if (node instanceof Element) {\n            visibleNodes.delete(node);\n            hiddenNodes.delete(node);\n          }\n        }\n        for (const node of change.addedNodes) {\n          if ((node instanceof HTMLElement || node instanceof SVGElement) && (node.dataset.liveAnnouncer === \"true\" || node.dataset.reactAriaTopLayer === \"true\")) {\n            visibleNodes.add(node);\n          } else if (node instanceof Element) {\n            walk(node);\n          }\n        }\n      }\n    }\n  });\n  observer.observe(root, { childList: true, subtree: true });\n  const observerWrapper = {\n    observe() {\n      observer.observe(root, { childList: true, subtree: true });\n    },\n    disconnect() {\n      observer.disconnect();\n    }\n  };\n  observerStack.push(observerWrapper);\n  return () => {\n    observer.disconnect();\n    for (const node of hiddenNodes) {\n      const count = refCountMap.get(node);\n      if (count == null) {\n        return;\n      }\n      if (count === 1) {\n        node.removeAttribute(\"aria-hidden\");\n        refCountMap.delete(node);\n      } else {\n        refCountMap.set(node, count - 1);\n      }\n    }\n    if (observerWrapper === observerStack[observerStack.length - 1]) {\n      observerStack.pop();\n      if (observerStack.length) {\n        observerStack[observerStack.length - 1].observe();\n      }\n    } else {\n      observerStack.splice(observerStack.indexOf(observerWrapper), 1);\n    }\n  };\n}\n\n// ../../node_modules/.pnpm/@corvu+utils@0.4.2_solid-js@1.9.12/node_modules/@corvu/utils/dist/chunk/SEUPK2SH.js\nvar contains2 = (wrapper, target) => {\n  if (wrapper.contains(target)) return true;\n  let currentElement = target;\n  while (currentElement) {\n    if (currentElement === wrapper) return true;\n    currentElement = currentElement._$host ?? currentElement.parentElement;\n  }\n  return false;\n};\n\n// ../../node_modules/.pnpm/@corvu+utils@0.4.2_solid-js@1.9.12/node_modules/@corvu/utils/dist/create/style.js\nvar activeStyles = /* @__PURE__ */ new Map();\nvar createStyle = (props) => {\n  createEffect(() => {\n    const style = access2(props.style) ?? {};\n    const properties = access2(props.properties) ?? [];\n    const originalStyles = {};\n    for (const key in style) {\n      originalStyles[key] = props.element.style[key];\n    }\n    const activeStyle = activeStyles.get(props.key);\n    if (activeStyle) {\n      activeStyle.activeCount++;\n    } else {\n      activeStyles.set(props.key, {\n        activeCount: 1,\n        originalStyles,\n        properties: properties.map((property) => property.key)\n      });\n    }\n    Object.assign(props.element.style, props.style);\n    for (const property of properties) {\n      props.element.style.setProperty(property.key, property.value);\n    }\n    onCleanup(() => {\n      const activeStyle2 = activeStyles.get(props.key);\n      if (!activeStyle2) return;\n      if (activeStyle2.activeCount !== 1) {\n        activeStyle2.activeCount--;\n        return;\n      }\n      activeStyles.delete(props.key);\n      for (const [key, value] of Object.entries(activeStyle2.originalStyles)) {\n        props.element.style[key] = value;\n      }\n      for (const property of activeStyle2.properties) {\n        props.element.style.removeProperty(property);\n      }\n      if (props.element.style.length === 0) {\n        props.element.removeAttribute(\"style\");\n      }\n      props.cleanup?.();\n    });\n  });\n};\nvar style_default = createStyle;\n\n// ../../node_modules/.pnpm/@corvu+utils@0.4.2_solid-js@1.9.12/node_modules/@corvu/utils/dist/scroll/index.js\nvar getScrollDimensions = (element, axis) => {\n  switch (axis) {\n    case \"x\":\n      return [element.clientWidth, element.scrollLeft, element.scrollWidth];\n    case \"y\":\n      return [element.clientHeight, element.scrollTop, element.scrollHeight];\n  }\n};\nvar isScrollContainer = (element, axis) => {\n  const styles = getComputedStyle(element);\n  const overflow = axis === \"x\" ? styles.overflowX : styles.overflowY;\n  return overflow === \"auto\" || overflow === \"scroll\" || // The HTML element is a scroll container if it has overflow visible\n  element.tagName === \"HTML\" && overflow === \"visible\";\n};\nvar getScrollAtLocation = (location, axis, stopAt) => {\n  const directionFactor = axis === \"x\" && window.getComputedStyle(location).direction === \"rtl\" ? -1 : 1;\n  let currentElement = location;\n  let availableScroll = 0;\n  let availableScrollTop = 0;\n  let wrapperReached = false;\n  do {\n    const [clientSize, scrollOffset, scrollSize] = getScrollDimensions(\n      currentElement,\n      axis\n    );\n    const scrolled = scrollSize - clientSize - directionFactor * scrollOffset;\n    if ((scrollOffset !== 0 || scrolled !== 0) && isScrollContainer(currentElement, axis)) {\n      availableScroll += scrolled;\n      availableScrollTop += scrollOffset;\n    }\n    if (currentElement === (stopAt ?? document.documentElement)) {\n      wrapperReached = true;\n    } else {\n      currentElement = currentElement._$host ?? currentElement.parentElement;\n    }\n  } while (currentElement && !wrapperReached);\n  return [availableScroll, availableScrollTop];\n};\n\n// ../../node_modules/.pnpm/solid-prevent-scroll@0.1.10_solid-js@1.9.12/node_modules/solid-prevent-scroll/dist/index.js\nvar [preventScrollStack, setPreventScrollStack] = createSignal([]);\nvar isActive = (id) => preventScrollStack().indexOf(id) === preventScrollStack().length - 1;\nvar createPreventScroll = (props) => {\n  const defaultedProps = mergeProps(\n    {\n      element: null,\n      enabled: true,\n      hideScrollbar: true,\n      preventScrollbarShift: true,\n      preventScrollbarShiftMode: \"padding\",\n      restoreScrollPosition: true,\n      allowPinchZoom: false\n    },\n    props\n  );\n  const preventScrollId = createUniqueId();\n  let currentTouchStart = [0, 0];\n  let currentTouchStartAxis = null;\n  let currentTouchStartDelta = null;\n  createEffect(() => {\n    if (!access2(defaultedProps.enabled)) return;\n    setPreventScrollStack((stack) => [...stack, preventScrollId]);\n    onCleanup(() => {\n      setPreventScrollStack(\n        (stack) => stack.filter((id) => id !== preventScrollId)\n      );\n    });\n  });\n  createEffect(() => {\n    if (!access2(defaultedProps.enabled) || !access2(defaultedProps.hideScrollbar))\n      return;\n    const { body } = document;\n    const scrollbarWidth = window.innerWidth - body.offsetWidth;\n    if (access2(defaultedProps.preventScrollbarShift)) {\n      const style = { overflow: \"hidden\" };\n      const properties = [];\n      if (scrollbarWidth > 0) {\n        if (access2(defaultedProps.preventScrollbarShiftMode) === \"padding\") {\n          style.paddingRight = `calc(${window.getComputedStyle(body).paddingRight} + ${scrollbarWidth}px)`;\n        } else {\n          style.marginRight = `calc(${window.getComputedStyle(body).marginRight} + ${scrollbarWidth}px)`;\n        }\n        properties.push({\n          key: \"--scrollbar-width\",\n          value: `${scrollbarWidth}px`\n        });\n      }\n      const offsetTop = window.scrollY;\n      const offsetLeft = window.scrollX;\n      style_default({\n        key: \"prevent-scroll\",\n        element: body,\n        style,\n        properties,\n        cleanup: () => {\n          if (access2(defaultedProps.restoreScrollPosition) && scrollbarWidth > 0) {\n            window.scrollTo(offsetLeft, offsetTop);\n          }\n        }\n      });\n    } else {\n      style_default({\n        key: \"prevent-scroll\",\n        element: body,\n        style: {\n          overflow: \"hidden\"\n        }\n      });\n    }\n  });\n  createEffect(() => {\n    if (!isActive(preventScrollId) || !access2(defaultedProps.enabled)) return;\n    document.addEventListener(\"wheel\", maybePreventWheel, {\n      passive: false\n    });\n    document.addEventListener(\"touchstart\", logTouchStart, {\n      passive: false\n    });\n    document.addEventListener(\"touchmove\", maybePreventTouch, {\n      passive: false\n    });\n    onCleanup(() => {\n      document.removeEventListener(\"wheel\", maybePreventWheel);\n      document.removeEventListener(\"touchstart\", logTouchStart);\n      document.removeEventListener(\"touchmove\", maybePreventTouch);\n    });\n  });\n  const logTouchStart = (event) => {\n    currentTouchStart = getTouchXY(event);\n    currentTouchStartAxis = null;\n    currentTouchStartDelta = null;\n  };\n  const maybePreventWheel = (event) => {\n    const target = event.target;\n    const wrapper = access2(defaultedProps.element);\n    const delta = getDeltaXY(event);\n    const axis = Math.abs(delta[0]) > Math.abs(delta[1]) ? \"x\" : \"y\";\n    const axisDelta = axis === \"x\" ? delta[0] : delta[1];\n    const resultsInScroll = wouldScroll(target, axis, axisDelta, wrapper);\n    let shouldCancel;\n    if (wrapper && contains2(wrapper, target)) {\n      shouldCancel = !resultsInScroll;\n    } else {\n      shouldCancel = true;\n    }\n    if (shouldCancel && event.cancelable) {\n      event.preventDefault();\n    }\n  };\n  const maybePreventTouch = (event) => {\n    const wrapper = access2(defaultedProps.element);\n    const target = event.target;\n    let shouldCancel;\n    if (event.touches.length === 2) {\n      shouldCancel = !access2(defaultedProps.allowPinchZoom);\n    } else {\n      if (currentTouchStartAxis == null || currentTouchStartDelta === null) {\n        const delta = getTouchXY(event).map(\n          (touch, i2) => currentTouchStart[i2] - touch\n        );\n        const axis = Math.abs(delta[0]) > Math.abs(delta[1]) ? \"x\" : \"y\";\n        currentTouchStartAxis = axis;\n        currentTouchStartDelta = axis === \"x\" ? delta[0] : delta[1];\n      }\n      if (target.type === \"range\") {\n        shouldCancel = false;\n      } else {\n        const wouldResultInScroll = wouldScroll(\n          target,\n          currentTouchStartAxis,\n          currentTouchStartDelta,\n          wrapper\n        );\n        if (wrapper && contains2(wrapper, target)) {\n          shouldCancel = !wouldResultInScroll;\n        } else {\n          shouldCancel = true;\n        }\n      }\n    }\n    if (shouldCancel && event.cancelable) {\n      event.preventDefault();\n    }\n  };\n};\nvar getDeltaXY = (event) => [\n  event.deltaX,\n  event.deltaY\n];\nvar getTouchXY = (event) => event.changedTouches[0] ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\nvar wouldScroll = (target, axis, delta, wrapper) => {\n  const targetInWrapper = wrapper !== null && contains2(wrapper, target);\n  const [availableScroll, availableScrollTop] = getScrollAtLocation(\n    target,\n    axis,\n    targetInWrapper ? wrapper : void 0\n  );\n  if (delta > 0 && Math.abs(availableScroll) <= 1) {\n    return false;\n  }\n  if (delta < 0 && Math.abs(availableScrollTop) < 1) {\n    return false;\n  }\n  return true;\n};\nvar preventScroll_default = createPreventScroll;\nvar src_default2 = preventScroll_default;\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/JRXYFAAV.js\nvar radio_group_exports = {};\n__export(radio_group_exports, {\n  Description: () => FormControlDescription,\n  ErrorMessage: () => FormControlErrorMessage,\n  Item: () => RadioGroupItem,\n  ItemControl: () => RadioGroupItemControl,\n  ItemDescription: () => RadioGroupItemDescription,\n  ItemIndicator: () => RadioGroupItemIndicator,\n  ItemInput: () => RadioGroupItemInput,\n  ItemLabel: () => RadioGroupItemLabel,\n  Label: () => RadioGroupLabel,\n  RadioGroup: () => RadioGroup,\n  Root: () => RadioGroupRoot,\n  useRadioGroupContext: () => useRadioGroupContext\n});\nvar RadioGroupContext = createContext();\nfunction useRadioGroupContext() {\n  const context = useContext(RadioGroupContext);\n  if (context === void 0) {\n    throw new Error(\"[kobalte]: `useRadioGroupContext` must be used within a `RadioGroup` component\");\n  }\n  return context;\n}\nvar RadioGroupItemContext = createContext();\nfunction useRadioGroupItemContext() {\n  const context = useContext(RadioGroupItemContext);\n  if (context === void 0) {\n    throw new Error(\"[kobalte]: `useRadioGroupItemContext` must be used within a `RadioGroup.Item` component\");\n  }\n  return context;\n}\nfunction RadioGroupItem(props) {\n  const formControlContext = useFormControlContext();\n  const radioGroupContext = useRadioGroupContext();\n  const defaultId = `${formControlContext.generateId(\"item\")}-${createUniqueId()}`;\n  const mergedProps = mergeDefaultProps({\n    id: defaultId\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"value\", \"disabled\", \"onPointerDown\"]);\n  const [inputId, setInputId] = createSignal();\n  const [labelId, setLabelId] = createSignal();\n  const [descriptionId, setDescriptionId] = createSignal();\n  const [inputRef, setInputRef] = createSignal();\n  const [isFocused, setIsFocused] = createSignal(false);\n  const isDefault = createMemo(() => {\n    return radioGroupContext.isDefaultValue(local.value);\n  });\n  const isSelected = createMemo(() => {\n    return radioGroupContext.isSelectedValue(local.value);\n  });\n  const isDisabled = createMemo(() => {\n    return local.disabled || formControlContext.isDisabled() || false;\n  });\n  const onPointerDown = (e2) => {\n    callHandler(e2, local.onPointerDown);\n    if (isFocused()) {\n      e2.preventDefault();\n    }\n  };\n  const dataset = createMemo(() => ({\n    ...formControlContext.dataset(),\n    \"data-disabled\": isDisabled() ? \"\" : void 0,\n    \"data-checked\": isSelected() ? \"\" : void 0\n  }));\n  const context = {\n    value: () => local.value,\n    dataset,\n    isDefault,\n    isSelected,\n    isDisabled,\n    inputId,\n    labelId,\n    descriptionId,\n    inputRef,\n    select: () => radioGroupContext.setSelectedValue(local.value),\n    generateId: createGenerateId(() => others.id),\n    registerInput: createRegisterId(setInputId),\n    registerLabel: createRegisterId(setLabelId),\n    registerDescription: createRegisterId(setDescriptionId),\n    setIsFocused,\n    setInputRef\n  };\n  return createComponent(RadioGroupItemContext.Provider, {\n    value: context,\n    get children() {\n      return createComponent(Polymorphic, mergeProps({\n        as: \"div\",\n        role: \"group\",\n        onPointerDown\n      }, dataset, others));\n    }\n  });\n}\nfunction RadioGroupItemControl(props) {\n  const context = useRadioGroupItemContext();\n  const mergedProps = mergeDefaultProps({\n    id: context.generateId(\"control\")\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"onClick\", \"onKeyDown\"]);\n  const onClick = (e2) => {\n    callHandler(e2, local.onClick);\n    context.select();\n    context.inputRef()?.focus();\n  };\n  const onKeyDown = (e2) => {\n    callHandler(e2, local.onKeyDown);\n    if (e2.key === EventKey.Space) {\n      context.select();\n      context.inputRef()?.focus();\n    }\n  };\n  return createComponent(Polymorphic, mergeProps({\n    as: \"div\",\n    onClick,\n    onKeyDown\n  }, () => context.dataset(), others));\n}\nfunction RadioGroupItemDescription(props) {\n  const context = useRadioGroupItemContext();\n  const mergedProps = mergeDefaultProps({\n    id: context.generateId(\"description\")\n  }, props);\n  createEffect(() => onCleanup(context.registerDescription(mergedProps.id)));\n  return createComponent(Polymorphic, mergeProps({\n    as: \"div\"\n  }, () => context.dataset(), mergedProps));\n}\nfunction RadioGroupItemIndicator(props) {\n  const context = useRadioGroupItemContext();\n  const mergedProps = mergeDefaultProps({\n    id: context.generateId(\"indicator\")\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"ref\", \"forceMount\"]);\n  const [ref, setRef] = createSignal();\n  const {\n    present\n  } = src_default({\n    show: () => local.forceMount || context.isSelected(),\n    element: () => ref() ?? null\n  });\n  return createComponent(Show, {\n    get when() {\n      return present();\n    },\n    get children() {\n      return createComponent(Polymorphic, mergeProps({\n        as: \"div\",\n        ref(r$) {\n          const _ref$ = mergeRefs(setRef, local.ref);\n          typeof _ref$ === \"function\" && _ref$(r$);\n        }\n      }, () => context.dataset(), others));\n    }\n  });\n}\nfunction RadioGroupItemInput(props) {\n  const formControlContext = useFormControlContext();\n  const radioGroupContext = useRadioGroupContext();\n  const radioContext = useRadioGroupItemContext();\n  const mergedProps = mergeDefaultProps({\n    id: radioContext.generateId(\"input\")\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"ref\", \"style\", \"aria-labelledby\", \"aria-describedby\", \"onChange\", \"onFocus\", \"onBlur\"]);\n  const ariaLabelledBy = () => {\n    return [\n      local[\"aria-labelledby\"],\n      radioContext.labelId(),\n      // If there is both an aria-label and aria-labelledby, add the input itself has an aria-labelledby\n      local[\"aria-labelledby\"] != null && others[\"aria-label\"] != null ? others.id : void 0\n    ].filter(Boolean).join(\" \") || void 0;\n  };\n  const ariaDescribedBy = () => {\n    return [local[\"aria-describedby\"], radioContext.descriptionId(), radioGroupContext.ariaDescribedBy()].filter(Boolean).join(\" \") || void 0;\n  };\n  const [isInternalChangeEvent, setIsInternalChangeEvent] = createSignal(false);\n  const onChange = (e2) => {\n    callHandler(e2, local.onChange);\n    e2.stopPropagation();\n    if (!isInternalChangeEvent()) {\n      radioGroupContext.setSelectedValue(radioContext.value());\n      const target = e2.target;\n      target.checked = radioContext.isSelected();\n    }\n    setIsInternalChangeEvent(false);\n  };\n  const onFocus = (e2) => {\n    callHandler(e2, local.onFocus);\n    radioContext.setIsFocused(true);\n  };\n  const onBlur = (e2) => {\n    callHandler(e2, local.onBlur);\n    radioContext.setIsFocused(false);\n  };\n  createEffect(on([() => radioContext.isSelected(), () => radioContext.value()], (c2) => {\n    if (!c2[0] && c2[1] === radioContext.value())\n      return;\n    setIsInternalChangeEvent(true);\n    const ref = radioContext.inputRef();\n    ref?.dispatchEvent(new Event(\"input\", {\n      bubbles: true,\n      cancelable: true\n    }));\n    ref?.dispatchEvent(new Event(\"change\", {\n      bubbles: true,\n      cancelable: true\n    }));\n  }, {\n    defer: true\n  }));\n  createEffect(() => onCleanup(radioContext.registerInput(others.id)));\n  return createComponent(Polymorphic, mergeProps({\n    as: \"input\",\n    ref(r$) {\n      const _ref$ = mergeRefs(radioContext.setInputRef, local.ref);\n      typeof _ref$ === \"function\" && _ref$(r$);\n    },\n    type: \"radio\",\n    get name() {\n      return formControlContext.name();\n    },\n    get value() {\n      return radioContext.value();\n    },\n    get checked() {\n      return radioContext.isSelected();\n    },\n    get required() {\n      return formControlContext.isRequired();\n    },\n    get disabled() {\n      return radioContext.isDisabled();\n    },\n    get readonly() {\n      return formControlContext.isReadOnly();\n    },\n    get style() {\n      return combineStyle({\n        ...visuallyHiddenStyles\n      }, local.style);\n    },\n    get [\"aria-labelledby\"]() {\n      return ariaLabelledBy();\n    },\n    get [\"aria-describedby\"]() {\n      return ariaDescribedBy();\n    },\n    onChange,\n    onFocus,\n    onBlur\n  }, () => radioContext.dataset(), others));\n}\nfunction RadioGroupItemLabel(props) {\n  const context = useRadioGroupItemContext();\n  const mergedProps = mergeDefaultProps({\n    id: context.generateId(\"label\")\n  }, props);\n  createEffect(() => onCleanup(context.registerLabel(mergedProps.id)));\n  return createComponent(Polymorphic, mergeProps({\n    as: \"label\",\n    get [\"for\"]() {\n      return context.inputId();\n    }\n  }, () => context.dataset(), mergedProps));\n}\nfunction RadioGroupLabel(props) {\n  return createComponent(FormControlLabel, mergeProps({\n    as: \"span\"\n  }, props));\n}\nfunction RadioGroupRoot(props) {\n  let ref;\n  const defaultId = `radiogroup-${createUniqueId()}`;\n  const mergedProps = mergeDefaultProps({\n    id: defaultId,\n    orientation: \"vertical\"\n  }, props);\n  const [local, formControlProps, others] = splitProps(mergedProps, [\"ref\", \"value\", \"defaultValue\", \"onChange\", \"orientation\", \"aria-labelledby\", \"aria-describedby\"], FORM_CONTROL_PROP_NAMES);\n  const [selected, setSelected] = createControllableSignal({\n    value: () => local.value,\n    defaultValue: () => local.defaultValue,\n    onChange: (value) => local.onChange?.(value)\n  });\n  const {\n    formControlContext\n  } = createFormControl(formControlProps);\n  createFormResetListener(() => ref, () => setSelected(local.defaultValue ?? \"\"));\n  const ariaLabelledBy = () => {\n    return formControlContext.getAriaLabelledBy(access(formControlProps.id), others[\"aria-label\"], local[\"aria-labelledby\"]);\n  };\n  const ariaDescribedBy = () => {\n    return formControlContext.getAriaDescribedBy(local[\"aria-describedby\"]);\n  };\n  const isDefaultValue = (value) => {\n    return value === props.defaultValue;\n  };\n  const isSelectedValue = (value) => {\n    return value === selected();\n  };\n  const setSelectedValue = (value) => {\n    if (formControlContext.isReadOnly() || formControlContext.isDisabled()) {\n      return;\n    }\n    setSelected(value);\n    if (ref)\n      for (const el of ref.querySelectorAll(\"[type='radio']\")) {\n        const radio = el;\n        radio.checked = isSelectedValue(radio.value);\n      }\n  };\n  const context = {\n    ariaDescribedBy,\n    isDefaultValue,\n    isSelectedValue,\n    setSelectedValue\n  };\n  return createComponent(FormControlContext.Provider, {\n    value: formControlContext,\n    get children() {\n      return createComponent(RadioGroupContext.Provider, {\n        value: context,\n        get children() {\n          return createComponent(Polymorphic, mergeProps({\n            as: \"div\",\n            ref(r$) {\n              const _ref$ = mergeRefs((el) => ref = el, local.ref);\n              typeof _ref$ === \"function\" && _ref$(r$);\n            },\n            role: \"radiogroup\",\n            get id() {\n              return access(formControlProps.id);\n            },\n            get [\"aria-invalid\"]() {\n              return formControlContext.validationState() === \"invalid\" || void 0;\n            },\n            get [\"aria-required\"]() {\n              return formControlContext.isRequired() || void 0;\n            },\n            get [\"aria-disabled\"]() {\n              return formControlContext.isDisabled() || void 0;\n            },\n            get [\"aria-readonly\"]() {\n              return formControlContext.isReadOnly() || void 0;\n            },\n            get [\"aria-orientation\"]() {\n              return local.orientation;\n            },\n            get [\"aria-labelledby\"]() {\n              return ariaLabelledBy();\n            },\n            get [\"aria-describedby\"]() {\n              return ariaDescribedBy();\n            }\n          }, () => formControlContext.dataset(), others));\n        }\n      });\n    }\n  });\n}\nvar RadioGroup = Object.assign(RadioGroupRoot, {\n  Description: FormControlDescription,\n  ErrorMessage: FormControlErrorMessage,\n  Item: RadioGroupItem,\n  ItemControl: RadioGroupItemControl,\n  ItemDescription: RadioGroupItemDescription,\n  ItemIndicator: RadioGroupItemIndicator,\n  ItemInput: RadioGroupItemInput,\n  ItemLabel: RadioGroupItemLabel,\n  Label: RadioGroupLabel\n});\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/GLKC2QFF.js\nvar ListKeyboardDelegate = class {\n  collection;\n  ref;\n  collator;\n  constructor(collection, ref, collator) {\n    this.collection = collection;\n    this.ref = ref;\n    this.collator = collator;\n  }\n  getKeyBelow(key) {\n    let keyAfter = this.collection().getKeyAfter(key);\n    while (keyAfter != null) {\n      const item = this.collection().getItem(keyAfter);\n      if (item && item.type === \"item\" && !item.disabled) {\n        return keyAfter;\n      }\n      keyAfter = this.collection().getKeyAfter(keyAfter);\n    }\n  }\n  getKeyAbove(key) {\n    let keyBefore = this.collection().getKeyBefore(key);\n    while (keyBefore != null) {\n      const item = this.collection().getItem(keyBefore);\n      if (item && item.type === \"item\" && !item.disabled) {\n        return keyBefore;\n      }\n      keyBefore = this.collection().getKeyBefore(keyBefore);\n    }\n  }\n  getFirstKey() {\n    let key = this.collection().getFirstKey();\n    while (key != null) {\n      const item = this.collection().getItem(key);\n      if (item && item.type === \"item\" && !item.disabled) {\n        return key;\n      }\n      key = this.collection().getKeyAfter(key);\n    }\n  }\n  getLastKey() {\n    let key = this.collection().getLastKey();\n    while (key != null) {\n      const item = this.collection().getItem(key);\n      if (item && item.type === \"item\" && !item.disabled) {\n        return key;\n      }\n      key = this.collection().getKeyBefore(key);\n    }\n  }\n  getItem(key) {\n    return this.ref?.()?.querySelector(`[data-key=\"${key}\"]`) ?? null;\n  }\n  // TODO: not working correctly\n  getKeyPageAbove(key) {\n    const menu = this.ref?.();\n    let item = this.getItem(key);\n    if (!menu || !item) {\n      return;\n    }\n    const pageY = Math.max(\n      0,\n      item.offsetTop + item.offsetHeight - menu.offsetHeight\n    );\n    let keyAbove = key;\n    while (keyAbove && item && item.offsetTop > pageY) {\n      keyAbove = this.getKeyAbove(keyAbove);\n      item = keyAbove != null ? this.getItem(keyAbove) : null;\n    }\n    return keyAbove;\n  }\n  // TODO: not working correctly\n  getKeyPageBelow(key) {\n    const menu = this.ref?.();\n    let item = this.getItem(key);\n    if (!menu || !item) {\n      return;\n    }\n    const pageY = Math.min(\n      menu.scrollHeight,\n      item.offsetTop - item.offsetHeight + menu.offsetHeight\n    );\n    let keyBelow = key;\n    while (keyBelow && item && item.offsetTop < pageY) {\n      keyBelow = this.getKeyBelow(keyBelow);\n      item = keyBelow != null ? this.getItem(keyBelow) : null;\n    }\n    return keyBelow;\n  }\n  getKeyForSearch(search, fromKey) {\n    const collator = this.collator?.();\n    if (!collator) {\n      return;\n    }\n    let key = fromKey != null ? this.getKeyBelow(fromKey) : this.getFirstKey();\n    while (key != null) {\n      const item = this.collection().getItem(key);\n      if (item) {\n        const substring = item.textValue.slice(0, search.length);\n        if (item.textValue && collator.compare(substring, search) === 0) {\n          return key;\n        }\n      }\n      key = this.getKeyBelow(key);\n    }\n  }\n};\nfunction createSelectableList(props, ref, scrollRef) {\n  const collator = createCollator({ usage: \"search\", sensitivity: \"base\" });\n  const delegate = createMemo(() => {\n    const keyboardDelegate = access(props.keyboardDelegate);\n    if (keyboardDelegate) {\n      return keyboardDelegate;\n    }\n    return new ListKeyboardDelegate(props.collection, ref, collator);\n  });\n  return createSelectableCollection(\n    {\n      selectionManager: () => access(props.selectionManager),\n      keyboardDelegate: delegate,\n      autoFocus: () => access(props.autoFocus),\n      deferAutoFocus: () => access(props.deferAutoFocus),\n      shouldFocusWrap: () => access(props.shouldFocusWrap),\n      disallowEmptySelection: () => access(props.disallowEmptySelection),\n      selectOnFocus: () => access(props.selectOnFocus),\n      disallowTypeAhead: () => access(props.disallowTypeAhead),\n      shouldUseVirtualFocus: () => access(props.shouldUseVirtualFocus),\n      allowsTabNavigation: () => access(props.allowsTabNavigation),\n      isVirtualized: () => access(props.isVirtualized),\n      scrollToKey: (key) => access(props.scrollToKey)?.(key),\n      orientation: () => access(props.orientation)\n    },\n    ref);\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/46NU5BYI.js\nvar MenubarContext = createContext();\nfunction useOptionalMenubarContext() {\n  return useContext(MenubarContext);\n}\nvar NavigationMenuContext = createContext();\nfunction useOptionalNavigationMenuContext() {\n  return useContext(NavigationMenuContext);\n}\nvar MenuContext = createContext();\nfunction useOptionalMenuContext() {\n  return useContext(MenuContext);\n}\nfunction useMenuContext() {\n  const context = useOptionalMenuContext();\n  if (context === void 0) {\n    throw new Error(\"[kobalte]: `useMenuContext` must be used within a `Menu` component\");\n  }\n  return context;\n}\nvar MenuItemContext = createContext();\nfunction useMenuItemContext() {\n  const context = useContext(MenuItemContext);\n  if (context === void 0) {\n    throw new Error(\"[kobalte]: `useMenuItemContext` must be used within a `Menu.Item` component\");\n  }\n  return context;\n}\nvar MenuRootContext = createContext();\nfunction useMenuRootContext() {\n  const context = useContext(MenuRootContext);\n  if (context === void 0) {\n    throw new Error(\"[kobalte]: `useMenuRootContext` must be used within a `MenuRoot` component\");\n  }\n  return context;\n}\nfunction MenuItemBase(props) {\n  let ref;\n  const rootContext = useMenuRootContext();\n  const menuContext = useMenuContext();\n  const mergedProps = mergeDefaultProps({\n    id: rootContext.generateId(`item-${createUniqueId()}`)\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"ref\", \"textValue\", \"disabled\", \"closeOnSelect\", \"checked\", \"indeterminate\", \"onSelect\", \"onPointerMove\", \"onPointerLeave\", \"onPointerDown\", \"onPointerUp\", \"onClick\", \"onKeyDown\", \"onMouseDown\", \"onFocus\"]);\n  const [labelId, setLabelId] = createSignal();\n  const [descriptionId, setDescriptionId] = createSignal();\n  const [labelRef, setLabelRef] = createSignal();\n  const selectionManager = () => menuContext.listState().selectionManager();\n  const key = () => others.id;\n  const isHighlighted = () => selectionManager().focusedKey() === key();\n  const onSelect = () => {\n    local.onSelect?.();\n    if (local.closeOnSelect) {\n      setTimeout(() => {\n        menuContext.close(true);\n      });\n    }\n  };\n  createDomCollectionItem({\n    getItem: () => ({\n      ref: () => ref,\n      type: \"item\",\n      key: key(),\n      textValue: local.textValue ?? labelRef()?.textContent ?? ref?.textContent ?? \"\",\n      disabled: local.disabled ?? false\n    })\n  });\n  const selectableItem = createSelectableItem({\n    key,\n    selectionManager,\n    shouldSelectOnPressUp: true,\n    allowsDifferentPressOrigin: true,\n    disabled: () => local.disabled\n  }, () => ref);\n  const onPointerMove = (e2) => {\n    callHandler(e2, local.onPointerMove);\n    if (e2.pointerType !== \"mouse\") {\n      return;\n    }\n    if (local.disabled) {\n      menuContext.onItemLeave(e2);\n    } else {\n      menuContext.onItemEnter(e2);\n      if (!e2.defaultPrevented) {\n        focusWithoutScrolling(e2.currentTarget);\n        menuContext.listState().selectionManager().setFocused(true);\n        menuContext.listState().selectionManager().setFocusedKey(key());\n      }\n    }\n  };\n  const onPointerLeave = (e2) => {\n    callHandler(e2, local.onPointerLeave);\n    if (e2.pointerType !== \"mouse\") {\n      return;\n    }\n    menuContext.onItemLeave(e2);\n  };\n  const onPointerUp = (e2) => {\n    callHandler(e2, local.onPointerUp);\n    if (!local.disabled && e2.button === 0) {\n      onSelect();\n    }\n  };\n  const onKeyDown = (e2) => {\n    callHandler(e2, local.onKeyDown);\n    if (e2.repeat) {\n      return;\n    }\n    if (local.disabled) {\n      return;\n    }\n    switch (e2.key) {\n      case \"Enter\":\n      case \" \":\n        onSelect();\n        break;\n    }\n  };\n  const ariaChecked = createMemo(() => {\n    if (local.indeterminate) {\n      return \"mixed\";\n    }\n    if (local.checked == null) {\n      return void 0;\n    }\n    return local.checked;\n  });\n  const dataset = createMemo(() => ({\n    \"data-indeterminate\": local.indeterminate ? \"\" : void 0,\n    \"data-checked\": local.checked && !local.indeterminate ? \"\" : void 0,\n    \"data-disabled\": local.disabled ? \"\" : void 0,\n    \"data-highlighted\": isHighlighted() ? \"\" : void 0\n  }));\n  const context = {\n    isChecked: () => local.checked,\n    dataset,\n    setLabelRef,\n    generateId: createGenerateId(() => others.id),\n    registerLabel: createRegisterId(setLabelId),\n    registerDescription: createRegisterId(setDescriptionId)\n  };\n  return createComponent(MenuItemContext.Provider, {\n    value: context,\n    get children() {\n      return createComponent(Polymorphic, mergeProps({\n        as: \"div\",\n        ref(r$) {\n          const _ref$ = mergeRefs((el) => ref = el, local.ref);\n          typeof _ref$ === \"function\" && _ref$(r$);\n        },\n        get tabIndex() {\n          return selectableItem.tabIndex();\n        },\n        get [\"aria-checked\"]() {\n          return ariaChecked();\n        },\n        get [\"aria-disabled\"]() {\n          return local.disabled;\n        },\n        get [\"aria-labelledby\"]() {\n          return labelId();\n        },\n        get [\"aria-describedby\"]() {\n          return descriptionId();\n        },\n        get [\"data-key\"]() {\n          return selectableItem.dataKey();\n        },\n        get onPointerDown() {\n          return composeEventHandlers([local.onPointerDown, selectableItem.onPointerDown]);\n        },\n        get onPointerUp() {\n          return composeEventHandlers([onPointerUp, selectableItem.onPointerUp]);\n        },\n        get onClick() {\n          return composeEventHandlers([local.onClick, selectableItem.onClick]);\n        },\n        get onKeyDown() {\n          return composeEventHandlers([onKeyDown, selectableItem.onKeyDown]);\n        },\n        get onMouseDown() {\n          return composeEventHandlers([local.onMouseDown, selectableItem.onMouseDown]);\n        },\n        get onFocus() {\n          return composeEventHandlers([local.onFocus, selectableItem.onFocus]);\n        },\n        onPointerMove,\n        onPointerLeave\n      }, dataset, others));\n    }\n  });\n}\nfunction MenuCheckboxItem(props) {\n  const mergedProps = mergeDefaultProps({\n    closeOnSelect: false\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"checked\", \"defaultChecked\", \"onChange\", \"onSelect\"]);\n  const state = createToggleState({\n    isSelected: () => local.checked,\n    defaultIsSelected: () => local.defaultChecked,\n    onSelectedChange: (checked) => local.onChange?.(checked),\n    isDisabled: () => others.disabled\n  });\n  const onSelect = () => {\n    local.onSelect?.();\n    state.toggle();\n  };\n  return createComponent(MenuItemBase, mergeProps({\n    role: \"menuitemcheckbox\",\n    get checked() {\n      return state.isSelected();\n    },\n    onSelect\n  }, others));\n}\nvar MENUBAR_KEYS = {\n  next: (dir, orientation) => dir === \"ltr\" ? orientation === \"horizontal\" ? \"ArrowRight\" : \"ArrowDown\" : orientation === \"horizontal\" ? \"ArrowLeft\" : \"ArrowUp\",\n  previous: (dir, orientation) => MENUBAR_KEYS.next(dir === \"ltr\" ? \"rtl\" : \"ltr\", orientation)\n};\nvar MENU_KEYS = {\n  first: (orientation) => orientation === \"horizontal\" ? \"ArrowDown\" : \"ArrowRight\",\n  last: (orientation) => orientation === \"horizontal\" ? \"ArrowUp\" : \"ArrowLeft\"\n};\nfunction MenuTrigger(props) {\n  const rootContext = useMenuRootContext();\n  const context = useMenuContext();\n  const optionalMenubarContext = useOptionalMenubarContext();\n  const {\n    direction\n  } = useLocale();\n  const mergedProps = mergeDefaultProps({\n    id: rootContext.generateId(\"trigger\")\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"ref\", \"id\", \"disabled\", \"onPointerDown\", \"onClick\", \"onKeyDown\", \"onMouseOver\", \"onFocus\"]);\n  let key = () => rootContext.value();\n  if (optionalMenubarContext !== void 0) {\n    key = () => rootContext.value() ?? local.id;\n    if (optionalMenubarContext.lastValue() === void 0)\n      optionalMenubarContext.setLastValue(key);\n  }\n  const tagName = createTagName(() => context.triggerRef(), () => \"button\");\n  const isNativeLink = createMemo(() => {\n    return tagName() === \"a\" && context.triggerRef()?.getAttribute(\"href\") != null;\n  });\n  createEffect(on(() => optionalMenubarContext?.value(), (value) => {\n    if (!isNativeLink())\n      return;\n    if (value === key())\n      context.triggerRef()?.focus();\n  }));\n  const handleClick = () => {\n    if (optionalMenubarContext !== void 0) {\n      if (!context.isOpen()) {\n        if (!optionalMenubarContext.autoFocusMenu()) {\n          optionalMenubarContext.setAutoFocusMenu(true);\n        }\n        context.open(false);\n      } else {\n        if (optionalMenubarContext.value() === key())\n          optionalMenubarContext.closeMenu();\n      }\n    } else\n      context.toggle(true);\n  };\n  const onPointerDown = (e2) => {\n    callHandler(e2, local.onPointerDown);\n    e2.currentTarget.dataset.pointerType = e2.pointerType;\n    if (!local.disabled && e2.pointerType !== \"touch\" && e2.button === 0) {\n      handleClick();\n    }\n  };\n  const onClick = (e2) => {\n    callHandler(e2, local.onClick);\n    if (!local.disabled) {\n      if (e2.currentTarget.dataset.pointerType === \"touch\")\n        handleClick();\n    }\n  };\n  const onKeyDown = (e2) => {\n    callHandler(e2, local.onKeyDown);\n    if (local.disabled) {\n      return;\n    }\n    if (isNativeLink()) {\n      switch (e2.key) {\n        case \"Enter\":\n        case \" \":\n          return;\n      }\n    }\n    switch (e2.key) {\n      case \"Enter\":\n      case \" \":\n      case MENU_KEYS.first(rootContext.orientation()):\n        e2.stopPropagation();\n        e2.preventDefault();\n        scrollIntoViewport(e2.currentTarget);\n        context.open(\"first\");\n        optionalMenubarContext?.setAutoFocusMenu(true);\n        optionalMenubarContext?.setValue(key);\n        break;\n      case MENU_KEYS.last(rootContext.orientation()):\n        e2.stopPropagation();\n        e2.preventDefault();\n        context.open(\"last\");\n        break;\n      case MENUBAR_KEYS.next(direction(), rootContext.orientation()):\n        if (optionalMenubarContext === void 0)\n          break;\n        e2.stopPropagation();\n        e2.preventDefault();\n        optionalMenubarContext.nextMenu();\n        break;\n      case MENUBAR_KEYS.previous(direction(), rootContext.orientation()):\n        if (optionalMenubarContext === void 0)\n          break;\n        e2.stopPropagation();\n        e2.preventDefault();\n        optionalMenubarContext.previousMenu();\n        break;\n    }\n  };\n  const onMouseOver = (e2) => {\n    callHandler(e2, local.onMouseOver);\n    if (context.triggerRef()?.dataset.pointerType === \"touch\")\n      return;\n    if (!local.disabled && optionalMenubarContext !== void 0 && optionalMenubarContext.value() !== void 0) {\n      optionalMenubarContext.setValue(key);\n    }\n  };\n  const onFocus = (e2) => {\n    callHandler(e2, local.onFocus);\n    if (optionalMenubarContext !== void 0 && e2.currentTarget.dataset.pointerType !== \"touch\")\n      optionalMenubarContext.setValue(key);\n  };\n  createEffect(() => onCleanup(context.registerTriggerId(local.id)));\n  return createComponent(ButtonRoot, mergeProps({\n    ref(r$) {\n      const _ref$ = mergeRefs(context.setTriggerRef, local.ref);\n      typeof _ref$ === \"function\" && _ref$(r$);\n    },\n    get [\"data-kb-menu-value-trigger\"]() {\n      return rootContext.value();\n    },\n    get id() {\n      return local.id;\n    },\n    get disabled() {\n      return local.disabled;\n    },\n    \"aria-haspopup\": \"true\",\n    get [\"aria-expanded\"]() {\n      return context.isOpen();\n    },\n    get [\"aria-controls\"]() {\n      return memo(() => !!context.isOpen())() ? context.contentId() : void 0;\n    },\n    get [\"data-highlighted\"]() {\n      return key() !== void 0 && optionalMenubarContext?.value() === key() ? true : void 0;\n    },\n    get tabIndex() {\n      return optionalMenubarContext !== void 0 ? optionalMenubarContext.value() === key() || optionalMenubarContext.lastValue() === key() ? 0 : -1 : void 0;\n    },\n    onPointerDown,\n    onMouseOver,\n    onClick,\n    onKeyDown,\n    onFocus,\n    role: optionalMenubarContext !== void 0 ? \"menuitem\" : void 0\n  }, () => context.dataset(), others));\n}\nfunction MenuContentBase(props) {\n  let ref;\n  const rootContext = useMenuRootContext();\n  const context = useMenuContext();\n  const optionalMenubarContext = useOptionalMenubarContext();\n  const optionalNavigationMenuContext = useOptionalNavigationMenuContext();\n  const {\n    direction\n  } = useLocale();\n  const mergedProps = mergeDefaultProps({\n    id: rootContext.generateId(`content-${createUniqueId()}`)\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"ref\", \"id\", \"style\", \"onOpenAutoFocus\", \"onCloseAutoFocus\", \"onEscapeKeyDown\", \"onFocusOutside\", \"onPointerEnter\", \"onPointerMove\", \"onKeyDown\", \"onMouseDown\", \"onFocusIn\", \"onFocusOut\"]);\n  let lastPointerX = 0;\n  const isRootModalContent = () => {\n    return context.parentMenuContext() == null && optionalMenubarContext === void 0 && rootContext.isModal();\n  };\n  const selectableList = createSelectableList({\n    selectionManager: context.listState().selectionManager,\n    collection: context.listState().collection,\n    autoFocus: context.autoFocus,\n    deferAutoFocus: true,\n    // ensure all menu items are mounted and collection is not empty before trying to autofocus.\n    shouldFocusWrap: true,\n    disallowTypeAhead: () => !context.listState().selectionManager().isFocused(),\n    orientation: () => rootContext.orientation() === \"horizontal\" ? \"vertical\" : \"horizontal\"\n  }, () => ref);\n  createFocusScope({\n    trapFocus: () => isRootModalContent() && context.isOpen(),\n    onMountAutoFocus: (event) => {\n      if (optionalMenubarContext === void 0)\n        local.onOpenAutoFocus?.(event);\n    },\n    onUnmountAutoFocus: local.onCloseAutoFocus\n  }, () => ref);\n  const onKeyDown = (e2) => {\n    if (!contains(e2.currentTarget, e2.target)) {\n      return;\n    }\n    if (e2.key === \"Tab\" && context.isOpen()) {\n      e2.preventDefault();\n    }\n    if (optionalMenubarContext !== void 0) {\n      if (e2.currentTarget.getAttribute(\"aria-haspopup\") !== \"true\")\n        switch (e2.key) {\n          case MENUBAR_KEYS.next(direction(), rootContext.orientation()):\n            e2.stopPropagation();\n            e2.preventDefault();\n            context.close(true);\n            optionalMenubarContext.setAutoFocusMenu(true);\n            optionalMenubarContext.nextMenu();\n            break;\n          case MENUBAR_KEYS.previous(direction(), rootContext.orientation()):\n            if (e2.currentTarget.hasAttribute(\"data-closed\"))\n              break;\n            e2.stopPropagation();\n            e2.preventDefault();\n            context.close(true);\n            optionalMenubarContext.setAutoFocusMenu(true);\n            optionalMenubarContext.previousMenu();\n            break;\n        }\n    }\n  };\n  const onEscapeKeyDown = (e2) => {\n    local.onEscapeKeyDown?.(e2);\n    optionalMenubarContext?.setAutoFocusMenu(false);\n    context.close(true);\n  };\n  const onFocusOutside = (e2) => {\n    local.onFocusOutside?.(e2);\n    if (rootContext.isModal()) {\n      e2.preventDefault();\n    }\n  };\n  const onPointerEnter = (e2) => {\n    callHandler(e2, local.onPointerEnter);\n    if (!context.isOpen()) {\n      return;\n    }\n    context.parentMenuContext()?.listState().selectionManager().setFocused(false);\n    context.parentMenuContext()?.listState().selectionManager().setFocusedKey(void 0);\n  };\n  const onPointerMove = (e2) => {\n    callHandler(e2, local.onPointerMove);\n    if (e2.pointerType !== \"mouse\") {\n      return;\n    }\n    const target = e2.target;\n    const pointerXHasChanged = lastPointerX !== e2.clientX;\n    if (contains(e2.currentTarget, target) && pointerXHasChanged) {\n      context.setPointerDir(e2.clientX > lastPointerX ? \"right\" : \"left\");\n      lastPointerX = e2.clientX;\n    }\n  };\n  createEffect(() => onCleanup(context.registerContentId(local.id)));\n  onCleanup(() => context.setContentRef(void 0));\n  const commonAttributes = {\n    ref: mergeRefs((el) => {\n      context.setContentRef(el);\n      ref = el;\n    }, local.ref),\n    role: \"menu\",\n    get id() {\n      return local.id;\n    },\n    get tabIndex() {\n      return selectableList.tabIndex();\n    },\n    get \"aria-labelledby\"() {\n      return context.triggerId();\n    },\n    onKeyDown: composeEventHandlers([local.onKeyDown, selectableList.onKeyDown, onKeyDown]),\n    onMouseDown: composeEventHandlers([local.onMouseDown, selectableList.onMouseDown]),\n    onFocusIn: composeEventHandlers([local.onFocusIn, selectableList.onFocusIn]),\n    onFocusOut: composeEventHandlers([local.onFocusOut, selectableList.onFocusOut]),\n    onPointerEnter,\n    onPointerMove,\n    get \"data-orientation\"() {\n      return rootContext.orientation();\n    }\n  };\n  return createComponent(Show, {\n    get when() {\n      return context.contentPresent();\n    },\n    get children() {\n      return createComponent(Show, {\n        get when() {\n          return optionalNavigationMenuContext === void 0 || context.parentMenuContext() != null;\n        },\n        get fallback() {\n          return createComponent(Polymorphic, mergeProps({\n            as: \"div\"\n          }, () => context.dataset(), commonAttributes, others));\n        },\n        get children() {\n          return createComponent(Popper.Positioner, {\n            get children() {\n              return createComponent(DismissableLayer, mergeProps({\n                get disableOutsidePointerEvents() {\n                  return memo(() => !!isRootModalContent())() && context.isOpen();\n                },\n                get excludedElements() {\n                  return [context.triggerRef];\n                },\n                bypassTopMostLayerCheck: true,\n                get style() {\n                  return combineStyle({\n                    \"--kb-menu-content-transform-origin\": \"var(--kb-popper-content-transform-origin)\",\n                    position: \"relative\"\n                  }, local.style);\n                },\n                onEscapeKeyDown,\n                onFocusOutside,\n                get onDismiss() {\n                  return context.close;\n                }\n              }, () => context.dataset(), commonAttributes, others));\n            }\n          });\n        }\n      });\n    }\n  });\n}\nfunction MenuContent(props) {\n  let ref;\n  const rootContext = useMenuRootContext();\n  const context = useMenuContext();\n  const [local, others] = splitProps(props, [\"ref\"]);\n  src_default2({\n    element: () => ref ?? null,\n    enabled: () => context.contentPresent() && rootContext.preventScroll()\n  });\n  return createComponent(MenuContentBase, mergeProps({\n    ref(r$) {\n      const _ref$ = mergeRefs((el) => {\n        ref = el;\n      }, local.ref);\n      typeof _ref$ === \"function\" && _ref$(r$);\n    }\n  }, others));\n}\nvar MenuGroupContext = createContext();\nfunction useMenuGroupContext() {\n  const context = useContext(MenuGroupContext);\n  if (context === void 0) {\n    throw new Error(\"[kobalte]: `useMenuGroupContext` must be used within a `Menu.Group` component\");\n  }\n  return context;\n}\nfunction MenuGroup(props) {\n  const rootContext = useMenuRootContext();\n  const mergedProps = mergeDefaultProps({\n    id: rootContext.generateId(`group-${createUniqueId()}`)\n  }, props);\n  const [labelId, setLabelId] = createSignal();\n  const context = {\n    generateId: createGenerateId(() => mergedProps.id),\n    registerLabelId: createRegisterId(setLabelId)\n  };\n  return createComponent(MenuGroupContext.Provider, {\n    value: context,\n    get children() {\n      return createComponent(Polymorphic, mergeProps({\n        as: \"div\",\n        role: \"group\",\n        get [\"aria-labelledby\"]() {\n          return labelId();\n        }\n      }, mergedProps));\n    }\n  });\n}\nfunction MenuGroupLabel(props) {\n  const context = useMenuGroupContext();\n  const mergedProps = mergeDefaultProps({\n    id: context.generateId(\"label\")\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"id\"]);\n  createEffect(() => onCleanup(context.registerLabelId(local.id)));\n  return createComponent(Polymorphic, mergeProps({\n    as: \"span\",\n    get id() {\n      return local.id;\n    },\n    \"aria-hidden\": \"true\"\n  }, others));\n}\nfunction MenuIcon(props) {\n  const context = useMenuContext();\n  const mergedProps = mergeDefaultProps({\n    children: \"\\u25BC\"\n  }, props);\n  return createComponent(Polymorphic, mergeProps({\n    as: \"span\",\n    \"aria-hidden\": \"true\"\n  }, () => context.dataset(), mergedProps));\n}\nfunction MenuItem(props) {\n  return createComponent(MenuItemBase, mergeProps({\n    role: \"menuitem\",\n    closeOnSelect: true\n  }, props));\n}\nfunction MenuItemDescription(props) {\n  const context = useMenuItemContext();\n  const mergedProps = mergeDefaultProps({\n    id: context.generateId(\"description\")\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"id\"]);\n  createEffect(() => onCleanup(context.registerDescription(local.id)));\n  return createComponent(Polymorphic, mergeProps({\n    as: \"div\",\n    get id() {\n      return local.id;\n    }\n  }, () => context.dataset(), others));\n}\nfunction MenuItemIndicator(props) {\n  const context = useMenuItemContext();\n  const mergedProps = mergeDefaultProps({\n    id: context.generateId(\"indicator\")\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"forceMount\"]);\n  return createComponent(Show, {\n    get when() {\n      return local.forceMount || context.isChecked();\n    },\n    get children() {\n      return createComponent(Polymorphic, mergeProps({\n        as: \"div\"\n      }, () => context.dataset(), others));\n    }\n  });\n}\nfunction MenuItemLabel(props) {\n  const context = useMenuItemContext();\n  const mergedProps = mergeDefaultProps({\n    id: context.generateId(\"label\")\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"ref\", \"id\"]);\n  createEffect(() => onCleanup(context.registerLabel(local.id)));\n  return createComponent(Polymorphic, mergeProps({\n    as: \"div\",\n    ref(r$) {\n      const _ref$ = mergeRefs(context.setLabelRef, local.ref);\n      typeof _ref$ === \"function\" && _ref$(r$);\n    },\n    get id() {\n      return local.id;\n    }\n  }, () => context.dataset(), others));\n}\nfunction MenuPortal(props) {\n  const context = useMenuContext();\n  return createComponent(Show, {\n    get when() {\n      return context.contentPresent();\n    },\n    get children() {\n      return createComponent(Portal, props);\n    }\n  });\n}\nvar MenuRadioGroupContext = createContext();\nfunction useMenuRadioGroupContext() {\n  const context = useContext(MenuRadioGroupContext);\n  if (context === void 0) {\n    throw new Error(\"[kobalte]: `useMenuRadioGroupContext` must be used within a `Menu.RadioGroup` component\");\n  }\n  return context;\n}\nfunction MenuRadioGroup(props) {\n  const rootContext = useMenuRootContext();\n  const defaultId = rootContext.generateId(`radiogroup-${createUniqueId()}`);\n  const mergedProps = mergeDefaultProps({\n    id: defaultId\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"value\", \"defaultValue\", \"onChange\", \"disabled\"]);\n  const [selected, setSelected] = createControllableSignal({\n    value: () => local.value,\n    defaultValue: () => local.defaultValue,\n    onChange: (value) => local.onChange?.(value)\n  });\n  const context = {\n    isDisabled: () => local.disabled,\n    isSelectedValue: (value) => value === selected(),\n    setSelectedValue: (value) => setSelected(value)\n  };\n  return createComponent(MenuRadioGroupContext.Provider, {\n    value: context,\n    get children() {\n      return createComponent(MenuGroup, others);\n    }\n  });\n}\nfunction MenuRadioItem(props) {\n  const context = useMenuRadioGroupContext();\n  const mergedProps = mergeDefaultProps({\n    closeOnSelect: false\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"value\", \"onSelect\"]);\n  const onSelect = () => {\n    local.onSelect?.();\n    context.setSelectedValue(local.value);\n  };\n  return createComponent(MenuItemBase, mergeProps({\n    role: \"menuitemradio\",\n    get checked() {\n      return context.isSelectedValue(local.value);\n    },\n    onSelect\n  }, others));\n}\nfunction getPointerGraceArea(placement, event, contentEl) {\n  const basePlacement = placement.split(\"-\")[0];\n  const contentRect = contentEl.getBoundingClientRect();\n  const polygon = [];\n  const pointerX = event.clientX;\n  const pointerY = event.clientY;\n  switch (basePlacement) {\n    case \"top\":\n      polygon.push([pointerX, pointerY + 5]);\n      polygon.push([contentRect.left, contentRect.bottom]);\n      polygon.push([contentRect.left, contentRect.top]);\n      polygon.push([contentRect.right, contentRect.top]);\n      polygon.push([contentRect.right, contentRect.bottom]);\n      break;\n    case \"right\":\n      polygon.push([pointerX - 5, pointerY]);\n      polygon.push([contentRect.left, contentRect.top]);\n      polygon.push([contentRect.right, contentRect.top]);\n      polygon.push([contentRect.right, contentRect.bottom]);\n      polygon.push([contentRect.left, contentRect.bottom]);\n      break;\n    case \"bottom\":\n      polygon.push([pointerX, pointerY - 5]);\n      polygon.push([contentRect.right, contentRect.top]);\n      polygon.push([contentRect.right, contentRect.bottom]);\n      polygon.push([contentRect.left, contentRect.bottom]);\n      polygon.push([contentRect.left, contentRect.top]);\n      break;\n    case \"left\":\n      polygon.push([pointerX + 5, pointerY]);\n      polygon.push([contentRect.right, contentRect.bottom]);\n      polygon.push([contentRect.left, contentRect.bottom]);\n      polygon.push([contentRect.left, contentRect.top]);\n      polygon.push([contentRect.right, contentRect.top]);\n      break;\n  }\n  return polygon;\n}\nfunction isPointerInGraceArea(event, area) {\n  if (!area) {\n    return false;\n  }\n  return isPointInPolygon([event.clientX, event.clientY], area);\n}\nfunction Menu(props) {\n  const rootContext = useMenuRootContext();\n  const parentDomCollectionContext = useOptionalDomCollectionContext();\n  const parentMenuContext = useOptionalMenuContext();\n  const optionalMenubarContext = useOptionalMenubarContext();\n  const optionalNavigationMenuContext = useOptionalNavigationMenuContext();\n  const mergedProps = mergeDefaultProps({\n    placement: rootContext.orientation() === \"horizontal\" ? \"bottom-start\" : \"right-start\"\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"open\", \"defaultOpen\", \"onOpenChange\"]);\n  let pointerGraceTimeoutId = 0;\n  let pointerGraceIntent = null;\n  let pointerDir = \"right\";\n  const [triggerId, setTriggerId] = createSignal();\n  const [contentId, setContentId] = createSignal();\n  const [triggerRef, setTriggerRef] = createSignal();\n  const [contentRef, setContentRef] = createSignal();\n  const [focusStrategy, setFocusStrategy] = createSignal(true);\n  const [currentPlacement, setCurrentPlacement] = createSignal(others.placement);\n  const [nestedMenus, setNestedMenus] = createSignal([]);\n  const [items, setItems] = createSignal([]);\n  const {\n    DomCollectionProvider\n  } = createDomCollection({\n    items,\n    onItemsChange: setItems\n  });\n  const disclosureState = createDisclosureState({\n    open: () => local.open,\n    defaultOpen: () => local.defaultOpen,\n    onOpenChange: (isOpen) => local.onOpenChange?.(isOpen)\n  });\n  const {\n    present: contentPresent\n  } = src_default({\n    show: () => rootContext.forceMount() || disclosureState.isOpen(),\n    element: () => contentRef() ?? null\n  });\n  const listState = createListState({\n    selectionMode: \"none\",\n    dataSource: items\n  });\n  const open = (focusStrategy2) => {\n    setFocusStrategy(focusStrategy2);\n    disclosureState.open();\n  };\n  const close = (recursively = false) => {\n    disclosureState.close();\n    if (recursively && parentMenuContext) {\n      parentMenuContext.close(true);\n    }\n  };\n  const toggle = (focusStrategy2) => {\n    setFocusStrategy(focusStrategy2);\n    disclosureState.toggle();\n  };\n  const _focusContent = () => {\n    const content = contentRef();\n    if (content) {\n      focusWithoutScrolling(content);\n      listState.selectionManager().setFocused(true);\n      listState.selectionManager().setFocusedKey(void 0);\n    }\n  };\n  const focusContent = () => {\n    if (optionalNavigationMenuContext != null)\n      setTimeout(() => _focusContent());\n    else\n      _focusContent();\n  };\n  const registerNestedMenu = (element) => {\n    setNestedMenus((prev) => [...prev, element]);\n    const parentUnregister = parentMenuContext?.registerNestedMenu(element);\n    return () => {\n      setNestedMenus((prev) => removeItemFromArray(prev, element));\n      parentUnregister?.();\n    };\n  };\n  const isPointerMovingToSubmenu = (e2) => {\n    const isMovingTowards = pointerDir === pointerGraceIntent?.side;\n    return isMovingTowards && isPointerInGraceArea(e2, pointerGraceIntent?.area);\n  };\n  const onItemEnter = (e2) => {\n    if (isPointerMovingToSubmenu(e2)) {\n      e2.preventDefault();\n    }\n  };\n  const onItemLeave = (e2) => {\n    if (isPointerMovingToSubmenu(e2)) {\n      return;\n    }\n    focusContent();\n  };\n  const onTriggerLeave = (e2) => {\n    if (isPointerMovingToSubmenu(e2)) {\n      e2.preventDefault();\n    }\n  };\n  createHideOutside({\n    isDisabled: () => {\n      return !(parentMenuContext == null && disclosureState.isOpen() && rootContext.isModal());\n    },\n    targets: () => [contentRef(), ...nestedMenus()].filter(Boolean)\n  });\n  createEffect(() => {\n    const contentEl = contentRef();\n    if (!contentEl || !parentMenuContext) {\n      return;\n    }\n    const parentUnregister = parentMenuContext.registerNestedMenu(contentEl);\n    onCleanup(() => {\n      parentUnregister();\n    });\n  });\n  createEffect(() => {\n    if (parentMenuContext !== void 0)\n      return;\n    optionalMenubarContext?.registerMenu(rootContext.value(), [contentRef(), ...nestedMenus()]);\n  });\n  createEffect(() => {\n    if (parentMenuContext !== void 0 || optionalMenubarContext === void 0)\n      return;\n    if (optionalMenubarContext.value() === rootContext.value()) {\n      triggerRef()?.focus();\n      if (optionalMenubarContext.autoFocusMenu())\n        open(true);\n    } else\n      close();\n  });\n  createEffect(() => {\n    if (parentMenuContext !== void 0 || optionalMenubarContext === void 0)\n      return;\n    if (disclosureState.isOpen())\n      optionalMenubarContext.setValue(rootContext.value());\n  });\n  onCleanup(() => {\n    if (parentMenuContext !== void 0)\n      return;\n    optionalMenubarContext?.unregisterMenu(rootContext.value());\n  });\n  const dataset = createMemo(() => ({\n    \"data-expanded\": disclosureState.isOpen() ? \"\" : void 0,\n    \"data-closed\": !disclosureState.isOpen() ? \"\" : void 0\n  }));\n  const context = {\n    dataset,\n    isOpen: disclosureState.isOpen,\n    contentPresent,\n    nestedMenus,\n    currentPlacement,\n    pointerGraceTimeoutId: () => pointerGraceTimeoutId,\n    autoFocus: focusStrategy,\n    listState: () => listState,\n    parentMenuContext: () => parentMenuContext,\n    triggerRef,\n    contentRef,\n    triggerId,\n    contentId,\n    setTriggerRef,\n    setContentRef,\n    open,\n    close,\n    toggle,\n    focusContent,\n    onItemEnter,\n    onItemLeave,\n    onTriggerLeave,\n    setPointerDir: (dir) => pointerDir = dir,\n    setPointerGraceTimeoutId: (id) => pointerGraceTimeoutId = id,\n    setPointerGraceIntent: (intent) => pointerGraceIntent = intent,\n    registerNestedMenu,\n    registerItemToParentDomCollection: parentDomCollectionContext?.registerItem,\n    registerTriggerId: createRegisterId(setTriggerId),\n    registerContentId: createRegisterId(setContentId)\n  };\n  return createComponent(DomCollectionProvider, {\n    get children() {\n      return createComponent(MenuContext.Provider, {\n        value: context,\n        get children() {\n          return createComponent(Show, {\n            when: optionalNavigationMenuContext === void 0,\n            get fallback() {\n              return others.children;\n            },\n            get children() {\n              return createComponent(Popper, mergeProps({\n                anchorRef: triggerRef,\n                contentRef,\n                onCurrentPlacementChange: setCurrentPlacement\n              }, others));\n            }\n          });\n        }\n      });\n    }\n  });\n}\nfunction MenuSub(props) {\n  const {\n    direction\n  } = useLocale();\n  return createComponent(Menu, mergeProps({\n    get placement() {\n      return direction() === \"rtl\" ? \"left-start\" : \"right-start\";\n    },\n    flip: true\n  }, props));\n}\nvar SUB_CLOSE_KEYS = {\n  close: (dir, orientation) => {\n    if (dir === \"ltr\") {\n      return [orientation === \"horizontal\" ? \"ArrowLeft\" : \"ArrowUp\"];\n    }\n    return [orientation === \"horizontal\" ? \"ArrowRight\" : \"ArrowDown\"];\n  }\n};\nfunction MenuSubContent(props) {\n  const context = useMenuContext();\n  const rootContext = useMenuRootContext();\n  const [local, others] = splitProps(props, [\"onFocusOutside\", \"onKeyDown\"]);\n  const {\n    direction\n  } = useLocale();\n  const onOpenAutoFocus = (e2) => {\n    e2.preventDefault();\n  };\n  const onCloseAutoFocus = (e2) => {\n    e2.preventDefault();\n  };\n  const onFocusOutside = (e2) => {\n    local.onFocusOutside?.(e2);\n    const target = e2.target;\n    if (!contains(context.triggerRef(), target)) {\n      context.close();\n    }\n  };\n  const onKeyDown = (e2) => {\n    callHandler(e2, local.onKeyDown);\n    const isKeyDownInside = contains(e2.currentTarget, e2.target);\n    const isCloseKey = SUB_CLOSE_KEYS.close(direction(), rootContext.orientation()).includes(e2.key);\n    const isSubMenu = context.parentMenuContext() != null;\n    if (isKeyDownInside && isCloseKey && isSubMenu) {\n      context.close();\n      focusWithoutScrolling(context.triggerRef());\n    }\n  };\n  return createComponent(MenuContentBase, mergeProps({\n    onOpenAutoFocus,\n    onCloseAutoFocus,\n    onFocusOutside,\n    onKeyDown\n  }, others));\n}\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar SUB_OPEN_KEYS = {\n  open: (dir, orientation) => {\n    if (dir === \"ltr\") {\n      return [...SELECTION_KEYS, orientation === \"horizontal\" ? \"ArrowRight\" : \"ArrowDown\"];\n    }\n    return [...SELECTION_KEYS, orientation === \"horizontal\" ? \"ArrowLeft\" : \"ArrowUp\"];\n  }\n};\nfunction MenuSubTrigger(props) {\n  let ref;\n  const rootContext = useMenuRootContext();\n  const context = useMenuContext();\n  const mergedProps = mergeDefaultProps({\n    id: rootContext.generateId(`sub-trigger-${createUniqueId()}`)\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"ref\", \"id\", \"textValue\", \"disabled\", \"onPointerMove\", \"onPointerLeave\", \"onPointerDown\", \"onPointerUp\", \"onClick\", \"onKeyDown\", \"onMouseDown\", \"onFocus\"]);\n  let openTimeoutId = null;\n  const clearOpenTimeout = () => {\n    if (isServer) {\n      return;\n    }\n    if (openTimeoutId) {\n      window.clearTimeout(openTimeoutId);\n    }\n    openTimeoutId = null;\n  };\n  const {\n    direction\n  } = useLocale();\n  const key = () => local.id;\n  const parentSelectionManager = () => {\n    const parentMenuContext = context.parentMenuContext();\n    if (parentMenuContext == null) {\n      throw new Error(\"[kobalte]: `Menu.SubTrigger` must be used within a `Menu.Sub` component\");\n    }\n    return parentMenuContext.listState().selectionManager();\n  };\n  const collection = () => context.listState().collection();\n  const isHighlighted = () => parentSelectionManager().focusedKey() === key();\n  const selectableItem = createSelectableItem({\n    key,\n    selectionManager: parentSelectionManager,\n    shouldSelectOnPressUp: true,\n    allowsDifferentPressOrigin: true,\n    disabled: () => local.disabled\n  }, () => ref);\n  const onClick = (e2) => {\n    callHandler(e2, local.onClick);\n    if (!context.isOpen() && !local.disabled) {\n      context.open(true);\n    }\n  };\n  const onPointerMove = (e2) => {\n    callHandler(e2, local.onPointerMove);\n    if (e2.pointerType !== \"mouse\") {\n      return;\n    }\n    const parentMenuContext = context.parentMenuContext();\n    parentMenuContext?.onItemEnter(e2);\n    if (e2.defaultPrevented) {\n      return;\n    }\n    if (local.disabled) {\n      parentMenuContext?.onItemLeave(e2);\n      return;\n    }\n    if (!context.isOpen() && !openTimeoutId) {\n      context.parentMenuContext()?.setPointerGraceIntent(null);\n      openTimeoutId = window.setTimeout(() => {\n        context.open(false);\n        clearOpenTimeout();\n      }, 100);\n    }\n    parentMenuContext?.onItemEnter(e2);\n    if (!e2.defaultPrevented) {\n      if (context.listState().selectionManager().isFocused()) {\n        context.listState().selectionManager().setFocused(false);\n        context.listState().selectionManager().setFocusedKey(void 0);\n      }\n      focusWithoutScrolling(e2.currentTarget);\n      parentMenuContext?.listState().selectionManager().setFocused(true);\n      parentMenuContext?.listState().selectionManager().setFocusedKey(key());\n    }\n  };\n  const onPointerLeave = (e2) => {\n    callHandler(e2, local.onPointerLeave);\n    if (e2.pointerType !== \"mouse\") {\n      return;\n    }\n    clearOpenTimeout();\n    const parentMenuContext = context.parentMenuContext();\n    const contentEl = context.contentRef();\n    if (contentEl) {\n      parentMenuContext?.setPointerGraceIntent({\n        area: getPointerGraceArea(context.currentPlacement(), e2, contentEl),\n        // Safe because sub menu always open \"left\" or \"right\".\n        side: context.currentPlacement().split(\"-\")[0]\n      });\n      window.clearTimeout(parentMenuContext?.pointerGraceTimeoutId());\n      const pointerGraceTimeoutId = window.setTimeout(() => {\n        parentMenuContext?.setPointerGraceIntent(null);\n      }, 300);\n      parentMenuContext?.setPointerGraceTimeoutId(pointerGraceTimeoutId);\n    } else {\n      parentMenuContext?.onTriggerLeave(e2);\n      if (e2.defaultPrevented) {\n        return;\n      }\n      parentMenuContext?.setPointerGraceIntent(null);\n    }\n    parentMenuContext?.onItemLeave(e2);\n  };\n  const onKeyDown = (e2) => {\n    callHandler(e2, local.onKeyDown);\n    if (e2.repeat) {\n      return;\n    }\n    if (local.disabled) {\n      return;\n    }\n    if (SUB_OPEN_KEYS.open(direction(), rootContext.orientation()).includes(e2.key)) {\n      e2.stopPropagation();\n      e2.preventDefault();\n      parentSelectionManager().setFocused(false);\n      parentSelectionManager().setFocusedKey(void 0);\n      if (!context.isOpen()) {\n        context.open(\"first\");\n      }\n      context.focusContent();\n      context.listState().selectionManager().setFocused(true);\n      context.listState().selectionManager().setFocusedKey(collection().getFirstKey());\n    }\n  };\n  createEffect(() => {\n    if (context.registerItemToParentDomCollection == null) {\n      throw new Error(\"[kobalte]: `Menu.SubTrigger` must be used within a `Menu.Sub` component\");\n    }\n    const unregister = context.registerItemToParentDomCollection({\n      ref: () => ref,\n      type: \"item\",\n      key: key(),\n      textValue: local.textValue ?? ref?.textContent ?? \"\",\n      disabled: local.disabled ?? false\n    });\n    onCleanup(unregister);\n  });\n  createEffect(on(() => context.parentMenuContext()?.pointerGraceTimeoutId(), (pointerGraceTimer) => {\n    onCleanup(() => {\n      window.clearTimeout(pointerGraceTimer);\n      context.parentMenuContext()?.setPointerGraceIntent(null);\n    });\n  }));\n  createEffect(() => onCleanup(context.registerTriggerId(local.id)));\n  onCleanup(() => {\n    clearOpenTimeout();\n  });\n  return createComponent(Polymorphic, mergeProps({\n    as: \"div\",\n    ref(r$) {\n      const _ref$ = mergeRefs((el) => {\n        context.setTriggerRef(el);\n        ref = el;\n      }, local.ref);\n      typeof _ref$ === \"function\" && _ref$(r$);\n    },\n    get id() {\n      return local.id;\n    },\n    role: \"menuitem\",\n    get tabIndex() {\n      return selectableItem.tabIndex();\n    },\n    \"aria-haspopup\": \"true\",\n    get [\"aria-expanded\"]() {\n      return context.isOpen();\n    },\n    get [\"aria-controls\"]() {\n      return memo(() => !!context.isOpen())() ? context.contentId() : void 0;\n    },\n    get [\"aria-disabled\"]() {\n      return local.disabled;\n    },\n    get [\"data-key\"]() {\n      return selectableItem.dataKey();\n    },\n    get [\"data-highlighted\"]() {\n      return isHighlighted() ? \"\" : void 0;\n    },\n    get [\"data-disabled\"]() {\n      return local.disabled ? \"\" : void 0;\n    },\n    get onPointerDown() {\n      return composeEventHandlers([local.onPointerDown, selectableItem.onPointerDown]);\n    },\n    get onPointerUp() {\n      return composeEventHandlers([local.onPointerUp, selectableItem.onPointerUp]);\n    },\n    get onClick() {\n      return composeEventHandlers([onClick, selectableItem.onClick]);\n    },\n    get onKeyDown() {\n      return composeEventHandlers([onKeyDown, selectableItem.onKeyDown]);\n    },\n    get onMouseDown() {\n      return composeEventHandlers([local.onMouseDown, selectableItem.onMouseDown]);\n    },\n    get onFocus() {\n      return composeEventHandlers([local.onFocus, selectableItem.onFocus]);\n    },\n    onPointerMove,\n    onPointerLeave\n  }, () => context.dataset(), others));\n}\nfunction MenuRoot(props) {\n  const optionalMenubarContext = useOptionalMenubarContext();\n  const defaultId = `menu-${createUniqueId()}`;\n  const mergedProps = mergeDefaultProps({\n    id: defaultId,\n    modal: true\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"id\", \"modal\", \"preventScroll\", \"forceMount\", \"open\", \"defaultOpen\", \"onOpenChange\", \"value\", \"orientation\"]);\n  const disclosureState = createDisclosureState({\n    open: () => local.open,\n    defaultOpen: () => local.defaultOpen,\n    onOpenChange: (isOpen) => local.onOpenChange?.(isOpen)\n  });\n  const context = {\n    isModal: () => local.modal ?? true,\n    preventScroll: () => local.preventScroll ?? context.isModal(),\n    forceMount: () => local.forceMount ?? false,\n    generateId: createGenerateId(() => local.id),\n    value: () => local.value,\n    orientation: () => local.orientation ?? optionalMenubarContext?.orientation() ?? \"horizontal\"\n  };\n  return createComponent(MenuRootContext.Provider, {\n    value: context,\n    get children() {\n      return createComponent(Menu, mergeProps({\n        get open() {\n          return disclosureState.isOpen();\n        },\n        get onOpenChange() {\n          return disclosureState.setIsOpen;\n        }\n      }, others));\n    }\n  });\n}\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/STGRFJHZ.js\nvar separator_exports = {};\n__export(separator_exports, {\n  Root: () => SeparatorRoot,\n  Separator: () => Separator\n});\nfunction SeparatorRoot(props) {\n  let ref;\n  const mergedProps = mergeDefaultProps({\n    orientation: \"horizontal\"\n  }, props);\n  const [local, others] = splitProps(mergedProps, [\"ref\", \"orientation\"]);\n  const tagName = createTagName(() => ref, () => \"hr\");\n  return createComponent(Polymorphic, mergeProps({\n    as: \"hr\",\n    ref(r$) {\n      const _ref$ = mergeRefs((el) => ref = el, local.ref);\n      typeof _ref$ === \"function\" && _ref$(r$);\n    },\n    get role() {\n      return tagName() !== \"hr\" ? \"separator\" : void 0;\n    },\n    get [\"aria-orientation\"]() {\n      return local.orientation === \"vertical\" ? \"vertical\" : void 0;\n    },\n    get [\"data-orientation\"]() {\n      return local.orientation;\n    }\n  }, others));\n}\nvar Separator = SeparatorRoot;\n\n// ../../node_modules/.pnpm/@kobalte+core@0.13.11_solid-js@1.9.12/node_modules/@kobalte/core/dist/chunk/YJ7Q7MW3.js\nvar dropdown_menu_exports = {};\n__export(dropdown_menu_exports, {\n  Arrow: () => PopperArrow,\n  CheckboxItem: () => MenuCheckboxItem,\n  Content: () => DropdownMenuContent,\n  DropdownMenu: () => DropdownMenu,\n  Group: () => MenuGroup,\n  GroupLabel: () => MenuGroupLabel,\n  Icon: () => MenuIcon,\n  Item: () => MenuItem,\n  ItemDescription: () => MenuItemDescription,\n  ItemIndicator: () => MenuItemIndicator,\n  ItemLabel: () => MenuItemLabel,\n  Portal: () => MenuPortal,\n  RadioGroup: () => MenuRadioGroup,\n  RadioItem: () => MenuRadioItem,\n  Root: () => DropdownMenuRoot,\n  Separator: () => SeparatorRoot,\n  Sub: () => MenuSub,\n  SubContent: () => MenuSubContent,\n  SubTrigger: () => MenuSubTrigger,\n  Trigger: () => MenuTrigger\n});\nfunction DropdownMenuContent(props) {\n  const rootContext = useMenuRootContext();\n  const context = useMenuContext();\n  const [local, others] = splitProps(props, [\"onCloseAutoFocus\", \"onInteractOutside\"]);\n  let hasInteractedOutside = false;\n  const onCloseAutoFocus = (e2) => {\n    local.onCloseAutoFocus?.(e2);\n    if (!hasInteractedOutside) {\n      focusWithoutScrolling(context.triggerRef());\n    }\n    hasInteractedOutside = false;\n    e2.preventDefault();\n  };\n  const onInteractOutside = (e2) => {\n    local.onInteractOutside?.(e2);\n    if (!rootContext.isModal() || e2.detail.isContextMenu) {\n      hasInteractedOutside = true;\n    }\n  };\n  return createComponent(MenuContent, mergeProps({\n    onCloseAutoFocus,\n    onInteractOutside\n  }, others));\n}\nfunction DropdownMenuRoot(props) {\n  const defaultId = `dropdownmenu-${createUniqueId()}`;\n  const mergedProps = mergeDefaultProps({\n    id: defaultId\n  }, props);\n  return createComponent(MenuRoot, mergedProps);\n}\nvar DropdownMenu = Object.assign(DropdownMenuRoot, {\n  Arrow: PopperArrow,\n  CheckboxItem: MenuCheckboxItem,\n  Content: DropdownMenuContent,\n  Group: MenuGroup,\n  GroupLabel: MenuGroupLabel,\n  Icon: MenuIcon,\n  Item: MenuItem,\n  ItemDescription: MenuItemDescription,\n  ItemIndicator: MenuItemIndicator,\n  ItemLabel: MenuItemLabel,\n  Portal: MenuPortal,\n  RadioGroup: MenuRadioGroup,\n  RadioItem: MenuRadioItem,\n  Separator: SeparatorRoot,\n  Sub: MenuSub,\n  SubContent: MenuSubContent,\n  SubTrigger: MenuSubTrigger,\n  Trigger: MenuTrigger\n});\n\n// src/theme.ts\nvar tokens = {\n  colors: {\n    inherit: \"inherit\",\n    current: \"currentColor\",\n    transparent: \"transparent\",\n    black: \"#000000\",\n    white: \"#ffffff\",\n    neutral: {\n      50: \"#f9fafb\",\n      100: \"#f2f4f7\",\n      200: \"#eaecf0\",\n      300: \"#d0d5dd\",\n      400: \"#98a2b3\",\n      500: \"#667085\",\n      600: \"#475467\",\n      700: \"#344054\",\n      800: \"#1d2939\",\n      900: \"#101828\"\n    },\n    darkGray: {\n      50: \"#525c7a\",\n      100: \"#49536e\",\n      200: \"#414962\",\n      300: \"#394056\",\n      400: \"#313749\",\n      500: \"#292e3d\",\n      600: \"#212530\",\n      700: \"#191c24\",\n      800: \"#111318\",\n      900: \"#0b0d10\"\n    },\n    gray: {\n      50: \"#f9fafb\",\n      100: \"#f2f4f7\",\n      200: \"#eaecf0\",\n      300: \"#d0d5dd\",\n      400: \"#98a2b3\",\n      500: \"#667085\",\n      600: \"#475467\",\n      700: \"#344054\",\n      800: \"#1d2939\",\n      900: \"#101828\"\n    },\n    blue: {\n      25: \"#F5FAFF\",\n      50: \"#EFF8FF\",\n      100: \"#D1E9FF\",\n      200: \"#B2DDFF\",\n      300: \"#84CAFF\",\n      400: \"#53B1FD\",\n      500: \"#2E90FA\",\n      600: \"#1570EF\",\n      700: \"#175CD3\",\n      800: \"#1849A9\",\n      900: \"#194185\"\n    },\n    green: {\n      25: \"#F6FEF9\",\n      50: \"#ECFDF3\",\n      100: \"#D1FADF\",\n      200: \"#A6F4C5\",\n      300: \"#6CE9A6\",\n      400: \"#32D583\",\n      500: \"#12B76A\",\n      600: \"#039855\",\n      700: \"#027A48\",\n      800: \"#05603A\",\n      900: \"#054F31\"\n    },\n    red: {\n      50: \"#fef2f2\",\n      100: \"#fee2e2\",\n      200: \"#fecaca\",\n      300: \"#fca5a5\",\n      400: \"#f87171\",\n      500: \"#ef4444\",\n      600: \"#dc2626\",\n      700: \"#b91c1c\",\n      800: \"#991b1b\",\n      900: \"#7f1d1d\",\n      950: \"#450a0a\"\n    },\n    yellow: {\n      25: \"#FFFCF5\",\n      50: \"#FFFAEB\",\n      100: \"#FEF0C7\",\n      200: \"#FEDF89\",\n      300: \"#FEC84B\",\n      400: \"#FDB022\",\n      500: \"#F79009\",\n      600: \"#DC6803\",\n      700: \"#B54708\",\n      800: \"#93370D\",\n      900: \"#7A2E0E\"\n    },\n    purple: {\n      25: \"#FAFAFF\",\n      50: \"#F4F3FF\",\n      100: \"#EBE9FE\",\n      200: \"#D9D6FE\",\n      300: \"#BDB4FE\",\n      400: \"#9B8AFB\",\n      500: \"#7A5AF8\",\n      600: \"#6938EF\",\n      700: \"#5925DC\",\n      800: \"#4A1FB8\",\n      900: \"#3E1C96\"\n    },\n    teal: {\n      25: \"#F6FEFC\",\n      50: \"#F0FDF9\",\n      100: \"#CCFBEF\",\n      200: \"#99F6E0\",\n      300: \"#5FE9D0\",\n      400: \"#2ED3B7\",\n      500: \"#15B79E\",\n      600: \"#0E9384\",\n      700: \"#107569\",\n      800: \"#125D56\",\n      900: \"#134E48\"\n    },\n    pink: {\n      25: \"#fdf2f8\",\n      50: \"#fce7f3\",\n      100: \"#fbcfe8\",\n      200: \"#f9a8d4\",\n      300: \"#f472b6\",\n      400: \"#ec4899\",\n      500: \"#db2777\",\n      600: \"#be185d\",\n      700: \"#9d174d\",\n      800: \"#831843\",\n      900: \"#500724\"\n    },\n    cyan: {\n      25: \"#ecfeff\",\n      50: \"#cffafe\",\n      100: \"#a5f3fc\",\n      200: \"#67e8f9\",\n      300: \"#22d3ee\",\n      400: \"#06b6d4\",\n      500: \"#0891b2\",\n      600: \"#0e7490\",\n      700: \"#155e75\",\n      800: \"#164e63\",\n      900: \"#083344\"\n    }\n  },\n  alpha: {\n    100: \"ff\",\n    90: \"e5\",\n    80: \"cc\",\n    70: \"b3\",\n    60: \"99\",\n    50: \"80\",\n    40: \"66\",\n    30: \"4d\",\n    20: \"33\",\n    10: \"1a\",\n    0: \"00\"\n  },\n  font: {\n    size: {\n      \"2xs\": \"calc(var(--tsqd-font-size) * 0.625)\",\n      xs: \"calc(var(--tsqd-font-size) * 0.75)\",\n      sm: \"calc(var(--tsqd-font-size) * 0.875)\",\n      md: \"var(--tsqd-font-size)\",\n      lg: \"calc(var(--tsqd-font-size) * 1.125)\",\n      xl: \"calc(var(--tsqd-font-size) * 1.25)\",\n      \"2xl\": \"calc(var(--tsqd-font-size) * 1.5)\",\n      \"3xl\": \"calc(var(--tsqd-font-size) * 1.875)\",\n      \"4xl\": \"calc(var(--tsqd-font-size) * 2.25)\",\n      \"5xl\": \"calc(var(--tsqd-font-size) * 3)\",\n      \"6xl\": \"calc(var(--tsqd-font-size) * 3.75)\",\n      \"7xl\": \"calc(var(--tsqd-font-size) * 4.5)\",\n      \"8xl\": \"calc(var(--tsqd-font-size) * 6)\",\n      \"9xl\": \"calc(var(--tsqd-font-size) * 8)\"\n    },\n    lineHeight: {\n      xs: \"calc(var(--tsqd-font-size) * 1)\",\n      sm: \"calc(var(--tsqd-font-size) * 1.25)\",\n      md: \"calc(var(--tsqd-font-size) * 1.5)\",\n      lg: \"calc(var(--tsqd-font-size) * 1.75)\",\n      xl: \"calc(var(--tsqd-font-size) * 2)\",\n      \"2xl\": \"calc(var(--tsqd-font-size) * 2.25)\",\n      \"3xl\": \"calc(var(--tsqd-font-size) * 2.5)\",\n      \"4xl\": \"calc(var(--tsqd-font-size) * 2.75)\",\n      \"5xl\": \"calc(var(--tsqd-font-size) * 3)\",\n      \"6xl\": \"calc(var(--tsqd-font-size) * 3.25)\",\n      \"7xl\": \"calc(var(--tsqd-font-size) * 3.5)\",\n      \"8xl\": \"calc(var(--tsqd-font-size) * 3.75)\",\n      \"9xl\": \"calc(var(--tsqd-font-size) * 4)\"\n    },\n    weight: {\n      thin: \"100\",\n      extralight: \"200\",\n      light: \"300\",\n      normal: \"400\",\n      medium: \"500\",\n      semibold: \"600\",\n      bold: \"700\",\n      extrabold: \"800\",\n      black: \"900\"\n    }\n  },\n  breakpoints: {\n    xs: \"320px\",\n    sm: \"640px\",\n    md: \"768px\",\n    lg: \"1024px\",\n    xl: \"1280px\",\n    \"2xl\": \"1536px\"\n  },\n  border: {\n    radius: {\n      none: \"0px\",\n      xs: \"calc(var(--tsqd-font-size) * 0.125)\",\n      sm: \"calc(var(--tsqd-font-size) * 0.25)\",\n      md: \"calc(var(--tsqd-font-size) * 0.375)\",\n      lg: \"calc(var(--tsqd-font-size) * 0.5)\",\n      xl: \"calc(var(--tsqd-font-size) * 0.75)\",\n      \"2xl\": \"calc(var(--tsqd-font-size) * 1)\",\n      \"3xl\": \"calc(var(--tsqd-font-size) * 1.5)\",\n      full: \"9999px\"\n    }\n  },\n  size: {\n    0: \"0px\",\n    0.25: \"calc(var(--tsqd-font-size) * 0.0625)\",\n    0.5: \"calc(var(--tsqd-font-size) * 0.125)\",\n    1: \"calc(var(--tsqd-font-size) * 0.25)\",\n    1.5: \"calc(var(--tsqd-font-size) * 0.375)\",\n    2: \"calc(var(--tsqd-font-size) * 0.5)\",\n    2.5: \"calc(var(--tsqd-font-size) * 0.625)\",\n    3: \"calc(var(--tsqd-font-size) * 0.75)\",\n    3.5: \"calc(var(--tsqd-font-size) * 0.875)\",\n    4: \"calc(var(--tsqd-font-size) * 1)\",\n    4.5: \"calc(var(--tsqd-font-size) * 1.125)\",\n    5: \"calc(var(--tsqd-font-size) * 1.25)\",\n    5.5: \"calc(var(--tsqd-font-size) * 1.375)\",\n    6: \"calc(var(--tsqd-font-size) * 1.5)\",\n    6.5: \"calc(var(--tsqd-font-size) * 1.625)\",\n    7: \"calc(var(--tsqd-font-size) * 1.75)\",\n    8: \"calc(var(--tsqd-font-size) * 2)\",\n    9: \"calc(var(--tsqd-font-size) * 2.25)\",\n    10: \"calc(var(--tsqd-font-size) * 2.5)\",\n    11: \"calc(var(--tsqd-font-size) * 2.75)\",\n    12: \"calc(var(--tsqd-font-size) * 3)\",\n    14: \"calc(var(--tsqd-font-size) * 3.5)\",\n    16: \"calc(var(--tsqd-font-size) * 4)\",\n    20: \"calc(var(--tsqd-font-size) * 5)\",\n    24: \"calc(var(--tsqd-font-size) * 6)\",\n    28: \"calc(var(--tsqd-font-size) * 7)\",\n    32: \"calc(var(--tsqd-font-size) * 8)\",\n    36: \"calc(var(--tsqd-font-size) * 9)\",\n    40: \"calc(var(--tsqd-font-size) * 10)\",\n    44: \"calc(var(--tsqd-font-size) * 11)\",\n    48: \"calc(var(--tsqd-font-size) * 12)\",\n    52: \"calc(var(--tsqd-font-size) * 13)\",\n    56: \"calc(var(--tsqd-font-size) * 14)\",\n    60: \"calc(var(--tsqd-font-size) * 15)\",\n    64: \"calc(var(--tsqd-font-size) * 16)\",\n    72: \"calc(var(--tsqd-font-size) * 18)\",\n    80: \"calc(var(--tsqd-font-size) * 20)\",\n    96: \"calc(var(--tsqd-font-size) * 24)\"\n  },\n  shadow: {\n    xs: (_ = \"rgb(0 0 0 / 0.1)\") => `0 1px 2px 0 rgb(0 0 0 / 0.05)`,\n    sm: (color = \"rgb(0 0 0 / 0.1)\") => `0 1px 3px 0 ${color}, 0 1px 2px -1px ${color}`,\n    md: (color = \"rgb(0 0 0 / 0.1)\") => `0 4px 6px -1px ${color}, 0 2px 4px -2px ${color}`,\n    lg: (color = \"rgb(0 0 0 / 0.1)\") => `0 10px 15px -3px ${color}, 0 4px 6px -4px ${color}`,\n    xl: (color = \"rgb(0 0 0 / 0.1)\") => `0 20px 25px -5px ${color}, 0 8px 10px -6px ${color}`,\n    \"2xl\": (color = \"rgb(0 0 0 / 0.25)\") => `0 25px 50px -12px ${color}`,\n    inner: (color = \"rgb(0 0 0 / 0.05)\") => `inset 0 2px 4px 0 ${color}`,\n    none: () => `none`\n  },\n  zIndices: {\n    hide: -1,\n    auto: \"auto\",\n    base: 0,\n    docked: 10,\n    dropdown: 1e3,\n    sticky: 1100,\n    banner: 1200,\n    overlay: 1300,\n    modal: 1400,\n    popover: 1500,\n    skipLink: 1600,\n    toast: 1700,\n    tooltip: 1800\n  }\n};\n\n// src/icons/index.tsx\nvar _tmpl$2 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox=\"0 0 14 14\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M13 13L9.00007 9M10.3333 5.66667C10.3333 8.244 8.244 10.3333 5.66667 10.3333C3.08934 10.3333 1 8.244 1 5.66667C1 3.08934 3.08934 1 5.66667 1C8.244 1 10.3333 3.08934 10.3333 5.66667Z\"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$22 = /* @__PURE__ */ template(`<svg width=24 height=24 viewBox=\"0 0 24 24\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M9 3H15M3 6H21M19 6L18.2987 16.5193C18.1935 18.0975 18.1409 18.8867 17.8 19.485C17.4999 20.0118 17.0472 20.4353 16.5017 20.6997C15.882 21 15.0911 21 13.5093 21H10.4907C8.90891 21 8.11803 21 7.49834 20.6997C6.95276 20.4353 6.50009 20.0118 6.19998 19.485C5.85911 18.8867 5.8065 18.0975 5.70129 16.5193L5 6M10 10.5V15.5M14 10.5V15.5\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$3 = /* @__PURE__ */ template(`<svg width=10 height=6 viewBox=\"0 0 10 6\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M1 1L5 5L9 1\"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$4 = /* @__PURE__ */ template(`<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M8 13.3333V2.66667M8 2.66667L4 6.66667M8 2.66667L12 6.66667\"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$5 = /* @__PURE__ */ template(`<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M8 2.66667V13.3333M8 13.3333L4 9.33333M8 13.3333L12 9.33333\"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$6 = /* @__PURE__ */ template(`<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none xmlns=http://www.w3.org/2000/svg style=transform:rotate(90deg)><path d=\"M8 2.66667V13.3333M8 13.3333L4 9.33333M8 13.3333L12 9.33333\"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$7 = /* @__PURE__ */ template(`<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none xmlns=http://www.w3.org/2000/svg style=transform:rotate(-90deg)><path d=\"M8 2.66667V13.3333M8 13.3333L4 9.33333M8 13.3333L12 9.33333\"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$8 = /* @__PURE__ */ template(`<svg viewBox=\"0 0 24 24\"height=12 width=12 fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M12 2v2m0 16v2M4 12H2m4.314-5.686L4.9 4.9m12.786 1.414L19.1 4.9M6.314 17.69 4.9 19.104m12.786-1.414 1.414 1.414M22 12h-2m-3 0a5 5 0 1 1-10 0 5 5 0 0 1 10 0Z\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$9 = /* @__PURE__ */ template(`<svg viewBox=\"0 0 24 24\"height=12 width=12 fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M22 15.844a10.424 10.424 0 0 1-4.306.925c-5.779 0-10.463-4.684-10.463-10.462 0-1.536.33-2.994.925-4.307A10.464 10.464 0 0 0 2 11.538C2 17.316 6.684 22 12.462 22c4.243 0 7.896-2.526 9.538-6.156Z\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$0 = /* @__PURE__ */ template(`<svg viewBox=\"0 0 24 24\"height=12 width=12 fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M8 21h8m-4-4v4m-5.2-4h10.4c1.68 0 2.52 0 3.162-.327a3 3 0 0 0 1.311-1.311C22 14.72 22 13.88 22 12.2V7.8c0-1.68 0-2.52-.327-3.162a3 3 0 0 0-1.311-1.311C19.72 3 18.88 3 17.2 3H6.8c-1.68 0-2.52 0-3.162.327a3 3 0 0 0-1.311 1.311C2 5.28 2 6.12 2 7.8v4.4c0 1.68 0 2.52.327 3.162a3 3 0 0 0 1.311 1.311C4.28 17 5.12 17 6.8 17Z\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$1 = /* @__PURE__ */ template(`<svg stroke=currentColor fill=currentColor stroke-width=0 viewBox=\"0 0 24 24\"height=1em width=1em xmlns=http://www.w3.org/2000/svg><path fill=none d=\"M0 0h24v24H0z\"></path><path d=\"M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3a4.237 4.237 0 00-6 0zm-4-4l2 2a7.074 7.074 0 0110 0l2-2C15.14 9.14 8.87 9.14 5 13z\">`);\nvar _tmpl$10 = /* @__PURE__ */ template(`<svg stroke-width=0 viewBox=\"0 0 24 24\"height=1em width=1em xmlns=http://www.w3.org/2000/svg><path fill=none d=\"M24 .01c0-.01 0-.01 0 0L0 0v24h24V.01zM0 0h24v24H0V0zm0 0h24v24H0V0z\"></path><path d=\"M22.99 9C19.15 5.16 13.8 3.76 8.84 4.78l2.52 2.52c3.47-.17 6.99 1.05 9.63 3.7l2-2zm-4 4a9.793 9.793 0 00-4.49-2.56l3.53 3.53.96-.97zM2 3.05L5.07 6.1C3.6 6.82 2.22 7.78 1 9l1.99 2c1.24-1.24 2.67-2.16 4.2-2.77l2.24 2.24A9.684 9.684 0 005 13v.01L6.99 15a7.042 7.042 0 014.92-2.06L18.98 20l1.27-1.26L3.29 1.79 2 3.05zM9 17l3 3 3-3a4.237 4.237 0 00-6 0z\">`);\nvar _tmpl$11 = /* @__PURE__ */ template(`<svg width=24 height=24 viewBox=\"0 0 24 24\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M9.3951 19.3711L9.97955 20.6856C10.1533 21.0768 10.4368 21.4093 10.7958 21.6426C11.1547 21.8759 11.5737 22.0001 12.0018 22C12.4299 22.0001 12.8488 21.8759 13.2078 21.6426C13.5667 21.4093 13.8503 21.0768 14.024 20.6856L14.6084 19.3711C14.8165 18.9047 15.1664 18.5159 15.6084 18.26C16.0532 18.0034 16.5678 17.8941 17.0784 17.9478L18.5084 18.1C18.9341 18.145 19.3637 18.0656 19.7451 17.8713C20.1265 17.6771 20.4434 17.3763 20.6573 17.0056C20.8715 16.635 20.9735 16.2103 20.9511 15.7829C20.9286 15.3555 20.7825 14.9438 20.5307 14.5978L19.684 13.4344C19.3825 13.0171 19.2214 12.5148 19.224 12C19.2239 11.4866 19.3865 10.9864 19.6884 10.5711L20.5351 9.40778C20.787 9.06175 20.933 8.65007 20.9555 8.22267C20.978 7.79528 20.8759 7.37054 20.6618 7C20.4479 6.62923 20.131 6.32849 19.7496 6.13423C19.3681 5.93997 18.9386 5.86053 18.5129 5.90556L17.0829 6.05778C16.5722 6.11141 16.0577 6.00212 15.6129 5.74556C15.17 5.48825 14.82 5.09736 14.6129 4.62889L14.024 3.31444C13.8503 2.92317 13.5667 2.59072 13.2078 2.3574C12.8488 2.12408 12.4299 1.99993 12.0018 2C11.5737 1.99993 11.1547 2.12408 10.7958 2.3574C10.4368 2.59072 10.1533 2.92317 9.97955 3.31444L9.3951 4.62889C9.18803 5.09736 8.83798 5.48825 8.3951 5.74556C7.95032 6.00212 7.43577 6.11141 6.9251 6.05778L5.49066 5.90556C5.06499 5.86053 4.6354 5.93997 4.25397 6.13423C3.87255 6.32849 3.55567 6.62923 3.34177 7C3.12759 7.37054 3.02555 7.79528 3.04804 8.22267C3.07052 8.65007 3.21656 9.06175 3.46844 9.40778L4.3151 10.5711C4.61704 10.9864 4.77964 11.4866 4.77955 12C4.77964 12.5134 4.61704 13.0137 4.3151 13.4289L3.46844 14.5922C3.21656 14.9382 3.07052 15.3499 3.04804 15.7773C3.02555 16.2047 3.12759 16.6295 3.34177 17C3.55589 17.3706 3.8728 17.6712 4.25417 17.8654C4.63554 18.0596 5.06502 18.1392 5.49066 18.0944L6.92066 17.9422C7.43133 17.8886 7.94587 17.9979 8.39066 18.2544C8.83519 18.511 9.18687 18.902 9.3951 19.3711Z\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round></path><path d=\"M12 15C13.6568 15 15 13.6569 15 12C15 10.3431 13.6568 9 12 9C10.3431 9 8.99998 10.3431 8.99998 12C8.99998 13.6569 10.3431 15 12 15Z\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$12 = /* @__PURE__ */ template(`<svg width=24 height=24 viewBox=\"0 0 24 24\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M16 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V7.8C21 6.11984 21 5.27976 20.673 4.63803C20.3854 4.07354 19.9265 3.6146 19.362 3.32698C18.7202 3 17.8802 3 16.2 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V8M11.5 12.5L17 7M17 7H12M17 7V12M6.2 21H8.8C9.9201 21 10.4802 21 10.908 20.782C11.2843 20.5903 11.5903 20.2843 11.782 19.908C12 19.4802 12 18.9201 12 17.8V15.2C12 14.0799 12 13.5198 11.782 13.092C11.5903 12.7157 11.2843 12.4097 10.908 12.218C10.4802 12 9.92011 12 8.8 12H6.2C5.0799 12 4.51984 12 4.09202 12.218C3.71569 12.4097 3.40973 12.7157 3.21799 13.092C3 13.5198 3 14.0799 3 15.2V17.8C3 18.9201 3 19.4802 3.21799 19.908C3.40973 20.2843 3.71569 20.5903 4.09202 20.782C4.51984 21 5.07989 21 6.2 21Z\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$13 = /* @__PURE__ */ template(`<svg width=24 height=24 viewBox=\"0 0 24 24\"fill=none xmlns=http://www.w3.org/2000/svg><path class=copier d=\"M8 8V5.2C8 4.0799 8 3.51984 8.21799 3.09202C8.40973 2.71569 8.71569 2.40973 9.09202 2.21799C9.51984 2 10.0799 2 11.2 2H18.8C19.9201 2 20.4802 2 20.908 2.21799C21.2843 2.40973 21.5903 2.71569 21.782 3.09202C22 3.51984 22 4.0799 22 5.2V12.8C22 13.9201 22 14.4802 21.782 14.908C21.5903 15.2843 21.2843 15.5903 20.908 15.782C20.4802 16 19.9201 16 18.8 16H16M5.2 22H12.8C13.9201 22 14.4802 22 14.908 21.782C15.2843 21.5903 15.5903 21.2843 15.782 20.908C16 20.4802 16 19.9201 16 18.8V11.2C16 10.0799 16 9.51984 15.782 9.09202C15.5903 8.71569 15.2843 8.40973 14.908 8.21799C14.4802 8 13.9201 8 12.8 8H5.2C4.0799 8 3.51984 8 3.09202 8.21799C2.71569 8.40973 2.40973 8.71569 2.21799 9.09202C2 9.51984 2 10.0799 2 11.2V18.8C2 19.9201 2 20.4802 2.21799 20.908C2.40973 21.2843 2.71569 21.5903 3.09202 21.782C3.51984 22 4.07989 22 5.2 22Z\"stroke-width=2 stroke-linecap=round stroke-linejoin=round stroke=currentColor>`);\nvar _tmpl$14 = /* @__PURE__ */ template(`<svg width=24 height=24 viewBox=\"0 0 24 24\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M2.5 21.4998L8.04927 19.3655C8.40421 19.229 8.58168 19.1607 8.74772 19.0716C8.8952 18.9924 9.0358 18.901 9.16804 18.7984C9.31692 18.6829 9.45137 18.5484 9.72028 18.2795L21 6.99982C22.1046 5.89525 22.1046 4.10438 21 2.99981C19.8955 1.89525 18.1046 1.89524 17 2.99981L5.72028 14.2795C5.45138 14.5484 5.31692 14.6829 5.20139 14.8318C5.09877 14.964 5.0074 15.1046 4.92823 15.2521C4.83911 15.4181 4.77085 15.5956 4.63433 15.9506L2.5 21.4998ZM2.5 21.4998L4.55812 16.1488C4.7054 15.7659 4.77903 15.5744 4.90534 15.4867C5.01572 15.4101 5.1523 15.3811 5.2843 15.4063C5.43533 15.4351 5.58038 15.5802 5.87048 15.8703L8.12957 18.1294C8.41967 18.4195 8.56472 18.5645 8.59356 18.7155C8.61877 18.8475 8.58979 18.9841 8.51314 19.0945C8.42545 19.2208 8.23399 19.2944 7.85107 19.4417L2.5 21.4998Z\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$15 = /* @__PURE__ */ template(`<svg width=24 height=24 viewBox=\"0 0 24 24\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M7.5 12L10.5 15L16.5 9M7.8 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V7.8C21 6.11984 21 5.27976 20.673 4.63803C20.3854 4.07354 19.9265 3.6146 19.362 3.32698C18.7202 3 17.8802 3 16.2 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V16.2C3 17.8802 3 18.7202 3.32698 19.362C3.6146 19.9265 4.07354 20.3854 4.63803 20.673C5.27976 21 6.11984 21 7.8 21Z\"stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$16 = /* @__PURE__ */ template(`<svg width=24 height=24 viewBox=\"0 0 24 24\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M9 9L15 15M15 9L9 15M7.8 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V7.8C21 6.11984 21 5.27976 20.673 4.63803C20.3854 4.07354 19.9265 3.6146 19.362 3.32698C18.7202 3 17.8802 3 16.2 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V16.2C3 17.8802 3 18.7202 3.32698 19.362C3.6146 19.9265 4.07354 20.3854 4.63803 20.673C5.27976 21 6.11984 21 7.8 21Z\"stroke=#F04438 stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$17 = /* @__PURE__ */ template(`<svg width=24 height=24 viewBox=\"0 0 24 24\"fill=none stroke=currentColor stroke-width=2 xmlns=http://www.w3.org/2000/svg><rect class=list width=20 height=20 y=2 x=2 rx=2></rect><line class=list-item y1=7 y2=7 x1=6 x2=18></line><line class=list-item y2=12 y1=12 x1=6 x2=18></line><line class=list-item y1=17 y2=17 x1=6 x2=18>`);\nvar _tmpl$18 = /* @__PURE__ */ template(`<svg viewBox=\"0 0 24 24\"height=20 width=20 fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M3 7.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C5.28 3 6.12 3 7.8 3h8.4c1.68 0 2.52 0 3.162.327a3 3 0 0 1 1.311 1.311C21 5.28 21 6.12 21 7.8v8.4c0 1.68 0 2.52-.327 3.162a3 3 0 0 1-1.311 1.311C18.72 21 17.88 21 16.2 21H7.8c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.311C3 18.72 3 17.88 3 16.2V7.8Z\"stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$19 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox=\"0 0 24 24\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M7.5 12L10.5 15L16.5 9M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$20 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox=\"0 0 24 24\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M12 2V6M12 18V22M6 12H2M22 12H18M19.0784 19.0784L16.25 16.25M19.0784 4.99994L16.25 7.82837M4.92157 19.0784L7.75 16.25M4.92157 4.99994L7.75 7.82837\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round></path><animateTransform attributeName=transform attributeType=XML type=rotate from=0 to=360 dur=2s repeatCount=indefinite>`);\nvar _tmpl$21 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox=\"0 0 24 24\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M15 9L9 15M9 9L15 15M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$222 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox=\"0 0 24 24\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M9.5 15V9M14.5 15V9M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$23 = /* @__PURE__ */ template(`<svg version=1.0 viewBox=\"0 0 633 633\"><linearGradient x1=-666.45 x2=-666.45 y1=163.28 y2=163.99 gradientTransform=\"matrix(633 0 0 633 422177 -103358)\"gradientUnits=userSpaceOnUse><stop stop-color=#6BDAFF offset=0></stop><stop stop-color=#F9FFB5 offset=.32></stop><stop stop-color=#FFA770 offset=.71></stop><stop stop-color=#FF7373 offset=1></stop></linearGradient><circle cx=316.5 cy=316.5 r=316.5></circle><defs><filter x=-137.5 y=412 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values=\"1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0\"></feColorMatrix></filter></defs><mask x=-137.5 y=412 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=89.5 cy=610.5 rx=214.5 ry=186 fill=#015064 stroke=#00CFE2 stroke-width=25></ellipse></g><defs><filter x=316.5 y=412 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values=\"1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0\"></feColorMatrix></filter></defs><mask x=316.5 y=412 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=543.5 cy=610.5 rx=214.5 ry=186 fill=#015064 stroke=#00CFE2 stroke-width=25></ellipse></g><defs><filter x=-137.5 y=450 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values=\"1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0\"></feColorMatrix></filter></defs><mask x=-137.5 y=450 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=89.5 cy=648.5 rx=214.5 ry=186 fill=#015064 stroke=#00A8B8 stroke-width=25></ellipse></g><defs><filter x=316.5 y=450 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values=\"1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0\"></feColorMatrix></filter></defs><mask x=316.5 y=450 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=543.5 cy=648.5 rx=214.5 ry=186 fill=#015064 stroke=#00A8B8 stroke-width=25></ellipse></g><defs><filter x=-137.5 y=486 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values=\"1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0\"></feColorMatrix></filter></defs><mask x=-137.5 y=486 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=89.5 cy=684.5 rx=214.5 ry=186 fill=#015064 stroke=#007782 stroke-width=25></ellipse></g><defs><filter x=316.5 y=486 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values=\"1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0\"></feColorMatrix></filter></defs><mask x=316.5 y=486 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=543.5 cy=684.5 rx=214.5 ry=186 fill=#015064 stroke=#007782 stroke-width=25></ellipse></g><defs><filter x=272.2 y=308 width=176.9 height=129.3 filterUnits=userSpaceOnUse><feColorMatrix values=\"1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0\"></feColorMatrix></filter></defs><mask x=272.2 y=308 width=176.9 height=129.3 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><line x1=436 x2=431 y1=403.2 y2=431.8 fill=none stroke=#000 stroke-linecap=round stroke-linejoin=bevel stroke-width=11></line><line x1=291 x2=280 y1=341.5 y2=403.5 fill=none stroke=#000 stroke-linecap=round stroke-linejoin=bevel stroke-width=11></line><line x1=332.9 x2=328.6 y1=384.1 y2=411.2 fill=none stroke=#000 stroke-linecap=round stroke-linejoin=bevel stroke-width=11></line><linearGradient x1=-670.75 x2=-671.59 y1=164.4 y2=164.49 gradientTransform=\"matrix(-184.16 -32.472 -11.461 64.997 -121359 -32126)\"gradientUnits=userSpaceOnUse><stop stop-color=#EE2700 offset=0></stop><stop stop-color=#FF008E offset=1></stop></linearGradient><path d=\"m344.1 363 97.7 17.2c5.8 2.1 8.2 6.1 7.1 12.1s-4.7 9.2-11 9.9l-106-18.7-57.5-59.2c-3.2-4.8-2.9-9.1 0.8-12.8s8.3-4.4 13.7-2.1l55.2 53.6z\"clip-rule=evenodd fill-rule=evenodd></path><line x1=428.2 x2=429.1 y1=384.5 y2=378 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=395.2 x2=396.1 y1=379.5 y2=373 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=362.2 x2=363.1 y1=373.5 y2=367.4 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=324.2 x2=328.4 y1=351.3 y2=347.4 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=303.2 x2=307.4 y1=331.3 y2=327.4 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line></g><defs><filter x=73.2 y=113.8 width=280.6 height=317.4 filterUnits=userSpaceOnUse><feColorMatrix values=\"1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0\"></feColorMatrix></filter></defs><mask x=73.2 y=113.8 width=280.6 height=317.4 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><linearGradient x1=-672.16 x2=-672.16 y1=165.03 y2=166.03 gradientTransform=\"matrix(-100.18 48.861 97.976 200.88 -83342 -93.059)\"gradientUnits=userSpaceOnUse><stop stop-color=#A17500 offset=0></stop><stop stop-color=#5D2100 offset=1></stop></linearGradient><path d=\"m192.3 203c8.1 37.3 14 73.6 17.8 109.1 3.8 35.4 2.8 75.1-3 119.2l61.2-16.7c-15.6-59-25.2-97.9-28.6-116.6s-10.8-51.9-22.1-99.6l-25.3 4.6\"clip-rule=evenodd fill-rule=evenodd></path><g stroke=#2F8A00><linearGradient x1=-660.23 x2=-660.23 y1=166.72 y2=167.72 gradientTransform=\"matrix(92.683 4.8573 -2.0259 38.657 61680 -3088.6)\"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d=\"m195 183.9s-12.6-22.1-36.5-29.9c-15.9-5.2-34.4-1.5-55.5 11.1 15.9 14.3 29.5 22.6 40.7 24.9 16.8 3.6 51.3-6.1 51.3-6.1z\"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-661.36 x2=-661.36 y1=164.18 y2=165.18 gradientTransform=\"matrix(110 5.7648 -6.3599 121.35 73933 -15933)\"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d=\"m194.9 184.5s-47.5-8.5-83.2 15.7c-23.8 16.2-34.3 49.3-31.6 99.4 30.3-27.8 52.1-48.5 65.2-61.9 19.8-20.2 49.6-53.2 49.6-53.2z\"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-656.79 x2=-656.79 y1=165.15 y2=166.15 gradientTransform=\"matrix(62.954 3.2993 -3.5023 66.828 42156 -8754.1)\"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d=\"m195 183.9c-0.8-21.9 6-38 20.6-48.2s29.8-15.4 45.5-15.3c-6.1 21.4-14.5 35.8-25.2 43.4s-24.4 14.2-40.9 20.1z\"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-663.07 x2=-663.07 y1=165.44 y2=166.44 gradientTransform=\"matrix(152.47 7.9907 -3.0936 59.029 101884 -4318.7)\"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d=\"m194.9 184.5c31.9-30 64.1-39.7 96.7-29s50.8 30.4 54.6 59.1c-35.2-5.5-60.4-9.6-75.8-12.1-15.3-2.6-40.5-8.6-75.5-18z\"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-662.57 x2=-662.57 y1=164.44 y2=165.44 gradientTransform=\"matrix(136.46 7.1517 -5.2163 99.533 91536 -11442)\"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d=\"m194.9 184.5c35.8-7.6 65.6-0.2 89.2 22s37.7 49 42.3 80.3c-39.8-9.7-68.3-23.8-85.5-42.4s-32.5-38.5-46-59.9z\"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-656.43 x2=-656.43 y1=163.86 y2=164.86 gradientTransform=\"matrix(60.866 3.1899 -8.7773 167.48 41560 -25168)\"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d=\"m194.9 184.5c-33.6 13.8-53.6 35.7-60.1 65.6s-3.6 63.1 8.7 99.6c27.4-40.3 43.2-69.6 47.4-88s5.6-44.1 4-77.2z\"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><path d=\"m196.5 182.3c-14.8 21.6-25.1 41.4-30.8 59.4s-9.5 33-11.1 45.1\"fill=none stroke-linecap=round stroke-width=8></path><path d=\"m194.9 185.7c-24.4 1.7-43.8 9-58.1 21.8s-24.7 25.4-31.3 37.8\"fill=none stroke-linecap=round stroke-width=8></path><path d=\"m204.5 176.4c29.7-6.7 52-8.4 67-5.1s26.9 8.6 35.8 15.9\"fill=none stroke-linecap=round stroke-width=8></path><path d=\"m196.5 181.4c20.3 9.9 38.2 20.5 53.9 31.9s27.4 22.1 35.1 32\"fill=none stroke-linecap=round stroke-width=8></path></g></g><defs><filter x=50.5 y=399 width=532 height=633 filterUnits=userSpaceOnUse><feColorMatrix values=\"1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0\"></feColorMatrix></filter></defs><mask x=50.5 y=399 width=532 height=633 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><linearGradient x1=-666.06 x2=-666.23 y1=163.36 y2=163.75 gradientTransform=\"matrix(532 0 0 633 354760 -102959)\"gradientUnits=userSpaceOnUse><stop stop-color=#FFF400 offset=0></stop><stop stop-color=#3C8700 offset=1></stop></linearGradient><ellipse cx=316.5 cy=715.5 rx=266 ry=316.5></ellipse></g><defs><filter x=391 y=-24 width=288 height=283 filterUnits=userSpaceOnUse><feColorMatrix values=\"1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0\"></feColorMatrix></filter></defs><mask x=391 y=-24 width=288 height=283 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><linearGradient x1=-664.56 x2=-664.56 y1=163.79 y2=164.79 gradientTransform=\"matrix(227 0 0 227 151421 -37204)\"gradientUnits=userSpaceOnUse><stop stop-color=#FFDF00 offset=0></stop><stop stop-color=#FF9D00 offset=1></stop></linearGradient><circle cx=565.5 cy=89.5 r=113.5></circle><linearGradient x1=-644.5 x2=-645.77 y1=342 y2=342 gradientTransform=\"matrix(30 0 0 1 19770 -253)\"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=427 x2=397 y1=89 y2=89 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-641.56 x2=-642.83 y1=196.02 y2=196.07 gradientTransform=\"matrix(26.5 0 0 5.5 17439 -1025.5)\"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=430.5 x2=404 y1=55.5 y2=50 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-643.73 x2=-645 y1=185.83 y2=185.9 gradientTransform=\"matrix(29 0 0 8 19107 -1361)\"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=431 x2=402 y1=122 y2=130 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-638.94 x2=-640.22 y1=177.09 y2=177.39 gradientTransform=\"matrix(24 0 0 13 15783 -2145)\"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=442 x2=418 y1=153 y2=166 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-633.42 x2=-634.7 y1=172.41 y2=173.31 gradientTransform=\"matrix(20 0 0 19 13137 -3096)\"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=464 x2=444 y1=180 y2=199 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-619.05 x2=-619.52 y1=170.82 y2=171.82 gradientTransform=\"matrix(13.83 0 0 22.85 9050 -3703.4)\"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=491.4 x2=477.5 y1=203 y2=225.9 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-578.5 x2=-578.63 y1=170.31 y2=171.31 gradientTransform=\"matrix(7.5 0 0 24.5 4860 -3953)\"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=524.5 x2=517 y1=219.5 y2=244 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=666.5 x2=666.5 y1=170.31 y2=171.31 gradientTransform=\"matrix(.5 0 0 24.5 231.5 -3944)\"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=564.5 x2=565 y1=228.5 y2=253 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12>`);\nfunction Search() {\n  return _tmpl$2();\n}\nfunction Trash() {\n  return _tmpl$22();\n}\nfunction ChevronDown() {\n  return _tmpl$3();\n}\nfunction ArrowUp() {\n  return _tmpl$4();\n}\nfunction ArrowDown() {\n  return _tmpl$5();\n}\nfunction ArrowLeft() {\n  return _tmpl$6();\n}\nfunction ArrowRight() {\n  return _tmpl$7();\n}\nfunction Sun() {\n  return _tmpl$8();\n}\nfunction Moon() {\n  return _tmpl$9();\n}\nfunction Monitor() {\n  return _tmpl$0();\n}\nfunction Wifi() {\n  return _tmpl$1();\n}\nfunction Offline() {\n  return _tmpl$10();\n}\nfunction Settings() {\n  return _tmpl$11();\n}\nfunction PiPIcon() {\n  return _tmpl$12();\n}\nfunction Copier() {\n  return _tmpl$13();\n}\nfunction Pencil() {\n  return _tmpl$14();\n}\nfunction CopiedCopier(props) {\n  return (() => {\n    var _el$15 = _tmpl$15(), _el$16 = _el$15.firstChild;\n    createRenderEffect(() => setAttribute(_el$16, \"stroke\", props.theme === \"dark\" ? \"#12B76A\" : \"#027A48\"));\n    return _el$15;\n  })();\n}\nfunction ErrorCopier() {\n  return _tmpl$16();\n}\nfunction List() {\n  return _tmpl$17();\n}\nfunction Check(props) {\n  return [createComponent(Show, {\n    get when() {\n      return props.checked;\n    },\n    get children() {\n      var _el$19 = _tmpl$15(), _el$20 = _el$19.firstChild;\n      createRenderEffect(() => setAttribute(_el$20, \"stroke\", props.theme === \"dark\" ? \"#9B8AFB\" : \"#6938EF\"));\n      return _el$19;\n    }\n  }), createComponent(Show, {\n    get when() {\n      return !props.checked;\n    },\n    get children() {\n      var _el$21 = _tmpl$18(), _el$22 = _el$21.firstChild;\n      createRenderEffect(() => setAttribute(_el$22, \"stroke\", props.theme === \"dark\" ? \"#9B8AFB\" : \"#6938EF\"));\n      return _el$21;\n    }\n  })];\n}\nfunction CheckCircle() {\n  return _tmpl$19();\n}\nfunction LoadingCircle() {\n  return _tmpl$20();\n}\nfunction XCircle() {\n  return _tmpl$21();\n}\nfunction PauseCircle() {\n  return _tmpl$222();\n}\nfunction TanstackLogo() {\n  const id = createUniqueId();\n  return (() => {\n    var _el$27 = _tmpl$23(), _el$28 = _el$27.firstChild, _el$29 = _el$28.nextSibling, _el$30 = _el$29.nextSibling, _el$31 = _el$30.firstChild, _el$32 = _el$30.nextSibling, _el$33 = _el$32.firstChild, _el$34 = _el$32.nextSibling, _el$35 = _el$34.nextSibling, _el$36 = _el$35.firstChild, _el$37 = _el$35.nextSibling, _el$38 = _el$37.firstChild, _el$39 = _el$37.nextSibling, _el$40 = _el$39.nextSibling, _el$41 = _el$40.firstChild, _el$42 = _el$40.nextSibling, _el$43 = _el$42.firstChild, _el$44 = _el$42.nextSibling, _el$45 = _el$44.nextSibling, _el$46 = _el$45.firstChild, _el$47 = _el$45.nextSibling, _el$48 = _el$47.firstChild, _el$49 = _el$47.nextSibling, _el$50 = _el$49.nextSibling, _el$51 = _el$50.firstChild, _el$52 = _el$50.nextSibling, _el$53 = _el$52.firstChild, _el$54 = _el$52.nextSibling, _el$55 = _el$54.nextSibling, _el$56 = _el$55.firstChild, _el$57 = _el$55.nextSibling, _el$58 = _el$57.firstChild, _el$59 = _el$57.nextSibling, _el$60 = _el$59.nextSibling, _el$61 = _el$60.firstChild, _el$62 = _el$60.nextSibling, _el$63 = _el$62.firstChild, _el$64 = _el$62.nextSibling, _el$65 = _el$64.firstChild, _el$66 = _el$65.nextSibling, _el$67 = _el$66.nextSibling, _el$68 = _el$67.nextSibling, _el$69 = _el$68.nextSibling, _el$70 = _el$64.nextSibling, _el$71 = _el$70.firstChild, _el$72 = _el$70.nextSibling, _el$73 = _el$72.firstChild, _el$74 = _el$72.nextSibling, _el$75 = _el$74.firstChild, _el$76 = _el$75.nextSibling, _el$77 = _el$76.nextSibling, _el$78 = _el$77.firstChild, _el$79 = _el$78.nextSibling, _el$80 = _el$79.nextSibling, _el$81 = _el$80.nextSibling, _el$82 = _el$81.nextSibling, _el$83 = _el$82.nextSibling, _el$84 = _el$83.nextSibling, _el$85 = _el$84.nextSibling, _el$86 = _el$85.nextSibling, _el$87 = _el$86.nextSibling, _el$88 = _el$87.nextSibling, _el$89 = _el$88.nextSibling, _el$90 = _el$74.nextSibling, _el$91 = _el$90.firstChild, _el$92 = _el$90.nextSibling, _el$93 = _el$92.firstChild, _el$94 = _el$92.nextSibling, _el$95 = _el$94.firstChild, _el$96 = _el$95.nextSibling, _el$97 = _el$94.nextSibling, _el$98 = _el$97.firstChild, _el$99 = _el$97.nextSibling, _el$100 = _el$99.firstChild, _el$101 = _el$99.nextSibling, _el$102 = _el$101.firstChild, _el$103 = _el$102.nextSibling, _el$104 = _el$103.nextSibling, _el$105 = _el$104.nextSibling, _el$106 = _el$105.nextSibling, _el$107 = _el$106.nextSibling, _el$108 = _el$107.nextSibling, _el$109 = _el$108.nextSibling, _el$110 = _el$109.nextSibling, _el$111 = _el$110.nextSibling, _el$112 = _el$111.nextSibling, _el$113 = _el$112.nextSibling, _el$114 = _el$113.nextSibling, _el$115 = _el$114.nextSibling, _el$116 = _el$115.nextSibling, _el$117 = _el$116.nextSibling, _el$118 = _el$117.nextSibling, _el$119 = _el$118.nextSibling;\n    setAttribute(_el$28, \"id\", `a-${id}`);\n    setAttribute(_el$29, \"fill\", `url(#a-${id})`);\n    setAttribute(_el$31, \"id\", `am-${id}`);\n    setAttribute(_el$32, \"id\", `b-${id}`);\n    setAttribute(_el$33, \"filter\", `url(#am-${id})`);\n    setAttribute(_el$34, \"mask\", `url(#b-${id})`);\n    setAttribute(_el$36, \"id\", `ah-${id}`);\n    setAttribute(_el$37, \"id\", `k-${id}`);\n    setAttribute(_el$38, \"filter\", `url(#ah-${id})`);\n    setAttribute(_el$39, \"mask\", `url(#k-${id})`);\n    setAttribute(_el$41, \"id\", `ae-${id}`);\n    setAttribute(_el$42, \"id\", `j-${id}`);\n    setAttribute(_el$43, \"filter\", `url(#ae-${id})`);\n    setAttribute(_el$44, \"mask\", `url(#j-${id})`);\n    setAttribute(_el$46, \"id\", `ai-${id}`);\n    setAttribute(_el$47, \"id\", `i-${id}`);\n    setAttribute(_el$48, \"filter\", `url(#ai-${id})`);\n    setAttribute(_el$49, \"mask\", `url(#i-${id})`);\n    setAttribute(_el$51, \"id\", `aj-${id}`);\n    setAttribute(_el$52, \"id\", `h-${id}`);\n    setAttribute(_el$53, \"filter\", `url(#aj-${id})`);\n    setAttribute(_el$54, \"mask\", `url(#h-${id})`);\n    setAttribute(_el$56, \"id\", `ag-${id}`);\n    setAttribute(_el$57, \"id\", `g-${id}`);\n    setAttribute(_el$58, \"filter\", `url(#ag-${id})`);\n    setAttribute(_el$59, \"mask\", `url(#g-${id})`);\n    setAttribute(_el$61, \"id\", `af-${id}`);\n    setAttribute(_el$62, \"id\", `f-${id}`);\n    setAttribute(_el$63, \"filter\", `url(#af-${id})`);\n    setAttribute(_el$64, \"mask\", `url(#f-${id})`);\n    setAttribute(_el$68, \"id\", `m-${id}`);\n    setAttribute(_el$69, \"fill\", `url(#m-${id})`);\n    setAttribute(_el$71, \"id\", `ak-${id}`);\n    setAttribute(_el$72, \"id\", `e-${id}`);\n    setAttribute(_el$73, \"filter\", `url(#ak-${id})`);\n    setAttribute(_el$74, \"mask\", `url(#e-${id})`);\n    setAttribute(_el$75, \"id\", `n-${id}`);\n    setAttribute(_el$76, \"fill\", `url(#n-${id})`);\n    setAttribute(_el$78, \"id\", `r-${id}`);\n    setAttribute(_el$79, \"fill\", `url(#r-${id})`);\n    setAttribute(_el$80, \"id\", `s-${id}`);\n    setAttribute(_el$81, \"fill\", `url(#s-${id})`);\n    setAttribute(_el$82, \"id\", `q-${id}`);\n    setAttribute(_el$83, \"fill\", `url(#q-${id})`);\n    setAttribute(_el$84, \"id\", `p-${id}`);\n    setAttribute(_el$85, \"fill\", `url(#p-${id})`);\n    setAttribute(_el$86, \"id\", `o-${id}`);\n    setAttribute(_el$87, \"fill\", `url(#o-${id})`);\n    setAttribute(_el$88, \"id\", `l-${id}`);\n    setAttribute(_el$89, \"fill\", `url(#l-${id})`);\n    setAttribute(_el$91, \"id\", `al-${id}`);\n    setAttribute(_el$92, \"id\", `d-${id}`);\n    setAttribute(_el$93, \"filter\", `url(#al-${id})`);\n    setAttribute(_el$94, \"mask\", `url(#d-${id})`);\n    setAttribute(_el$95, \"id\", `u-${id}`);\n    setAttribute(_el$96, \"fill\", `url(#u-${id})`);\n    setAttribute(_el$98, \"id\", `ad-${id}`);\n    setAttribute(_el$99, \"id\", `c-${id}`);\n    setAttribute(_el$100, \"filter\", `url(#ad-${id})`);\n    setAttribute(_el$101, \"mask\", `url(#c-${id})`);\n    setAttribute(_el$102, \"id\", `t-${id}`);\n    setAttribute(_el$103, \"fill\", `url(#t-${id})`);\n    setAttribute(_el$104, \"id\", `v-${id}`);\n    setAttribute(_el$105, \"stroke\", `url(#v-${id})`);\n    setAttribute(_el$106, \"id\", `aa-${id}`);\n    setAttribute(_el$107, \"stroke\", `url(#aa-${id})`);\n    setAttribute(_el$108, \"id\", `w-${id}`);\n    setAttribute(_el$109, \"stroke\", `url(#w-${id})`);\n    setAttribute(_el$110, \"id\", `ac-${id}`);\n    setAttribute(_el$111, \"stroke\", `url(#ac-${id})`);\n    setAttribute(_el$112, \"id\", `ab-${id}`);\n    setAttribute(_el$113, \"stroke\", `url(#ab-${id})`);\n    setAttribute(_el$114, \"id\", `y-${id}`);\n    setAttribute(_el$115, \"stroke\", `url(#y-${id})`);\n    setAttribute(_el$116, \"id\", `x-${id}`);\n    setAttribute(_el$117, \"stroke\", `url(#x-${id})`);\n    setAttribute(_el$118, \"id\", `z-${id}`);\n    setAttribute(_el$119, \"stroke\", `url(#z-${id})`);\n    return _el$27;\n  })();\n}\n\n// src/Explorer.tsx\nvar _tmpl$24 = /* @__PURE__ */ template(`<span><svg width=16 height=16 viewBox=\"0 0 16 16\"fill=none xmlns=http://www.w3.org/2000/svg><path d=\"M6 12L10 8L6 4\"stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);\nvar _tmpl$25 = /* @__PURE__ */ template(`<button title=\"Copy object to clipboard\">`);\nvar _tmpl$32 = /* @__PURE__ */ template(`<button title=\"Remove all items\"aria-label=\"Remove all items\">`);\nvar _tmpl$42 = /* @__PURE__ */ template(`<button title=\"Delete item\"aria-label=\"Delete item\">`);\nvar _tmpl$52 = /* @__PURE__ */ template(`<button title=\"Toggle value\"aria-label=\"Toggle value\">`);\nvar _tmpl$62 = /* @__PURE__ */ template(`<button title=\"Bulk Edit Data\"aria-label=\"Bulk Edit Data\">`);\nvar _tmpl$72 = /* @__PURE__ */ template(`<div>`);\nvar _tmpl$82 = /* @__PURE__ */ template(`<div><button> <span></span> <span> `);\nvar _tmpl$92 = /* @__PURE__ */ template(`<input>`);\nvar _tmpl$02 = /* @__PURE__ */ template(`<span>`);\nvar _tmpl$110 = /* @__PURE__ */ template(`<div><label>:`);\nvar _tmpl$102 = /* @__PURE__ */ template(`<div><div><button> [<!>...<!>]`);\nfunction chunkArray(array, size3) {\n  let i2 = 0;\n  const result = [];\n  while (i2 < array.length) {\n    result.push(array.slice(i2, i2 + size3));\n    i2 = i2 + size3;\n  }\n  return result;\n}\nvar Expander = (props) => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles(css) : lightStyles(css);\n  });\n  return (() => {\n    var _el$ = _tmpl$24();\n    createRenderEffect(() => className(_el$, clsx(styles().expander, css`\n          transform: rotate(${props.expanded ? 90 : 0}deg);\n        `, props.expanded && css`\n            & svg {\n              top: -1px;\n            }\n          `)));\n    return _el$;\n  })();\n};\nvar CopyButton = (props) => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles(css) : lightStyles(css);\n  });\n  const [copyState, setCopyState] = createSignal(\"NoCopy\");\n  return (() => {\n    var _el$2 = _tmpl$25();\n    addEventListener(_el$2, \"click\", copyState() === \"NoCopy\" ? () => {\n      navigator.clipboard.writeText(stringify(props.value)).then(() => {\n        setCopyState(\"SuccessCopy\");\n        setTimeout(() => {\n          setCopyState(\"NoCopy\");\n        }, 1500);\n      }, (err) => {\n        setCopyState(\"ErrorCopy\");\n        setTimeout(() => {\n          setCopyState(\"NoCopy\");\n        }, 1500);\n      });\n    } : void 0, true);\n    insert(_el$2, createComponent(Switch, {\n      get children() {\n        return [createComponent(Match, {\n          get when() {\n            return copyState() === \"NoCopy\";\n          },\n          get children() {\n            return createComponent(Copier, {});\n          }\n        }), createComponent(Match, {\n          get when() {\n            return copyState() === \"SuccessCopy\";\n          },\n          get children() {\n            return createComponent(CopiedCopier, {\n              get theme() {\n                return theme();\n              }\n            });\n          }\n        }), createComponent(Match, {\n          get when() {\n            return copyState() === \"ErrorCopy\";\n          },\n          get children() {\n            return createComponent(ErrorCopier, {});\n          }\n        })];\n      }\n    }));\n    createRenderEffect((_p$) => {\n      var _v$ = styles().actionButton, _v$2 = `${copyState() === \"NoCopy\" ? \"Copy object to clipboard\" : copyState() === \"SuccessCopy\" ? \"Object copied to clipboard\" : \"Error copying object to clipboard\"}`;\n      _v$ !== _p$.e && className(_el$2, _p$.e = _v$);\n      _v$2 !== _p$.t && setAttribute(_el$2, \"aria-label\", _p$.t = _v$2);\n      return _p$;\n    }, {\n      e: void 0,\n      t: void 0\n    });\n    return _el$2;\n  })();\n};\nvar ClearArrayButton = (props) => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles(css) : lightStyles(css);\n  });\n  const queryClient = useQueryDevtoolsContext().client;\n  return (() => {\n    var _el$3 = _tmpl$32();\n    _el$3.$$click = () => {\n      const oldData = props.activeQuery.state.data;\n      const newData = updateNestedDataByPath(oldData, props.dataPath, []);\n      queryClient.setQueryData(props.activeQuery.queryKey, newData);\n    };\n    insert(_el$3, createComponent(List, {}));\n    createRenderEffect(() => className(_el$3, styles().actionButton));\n    return _el$3;\n  })();\n};\nvar DeleteItemButton = (props) => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles(css) : lightStyles(css);\n  });\n  const queryClient = useQueryDevtoolsContext().client;\n  return (() => {\n    var _el$4 = _tmpl$42();\n    _el$4.$$click = () => {\n      const oldData = props.activeQuery.state.data;\n      const newData = deleteNestedDataByPath(oldData, props.dataPath);\n      queryClient.setQueryData(props.activeQuery.queryKey, newData);\n    };\n    insert(_el$4, createComponent(Trash, {}));\n    createRenderEffect(() => className(_el$4, clsx(styles().actionButton)));\n    return _el$4;\n  })();\n};\nvar ToggleValueButton = (props) => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles(css) : lightStyles(css);\n  });\n  const queryClient = useQueryDevtoolsContext().client;\n  return (() => {\n    var _el$5 = _tmpl$52();\n    _el$5.$$click = () => {\n      const oldData = props.activeQuery.state.data;\n      const newData = updateNestedDataByPath(oldData, props.dataPath, !props.value);\n      queryClient.setQueryData(props.activeQuery.queryKey, newData);\n    };\n    insert(_el$5, createComponent(Check, {\n      get theme() {\n        return theme();\n      },\n      get checked() {\n        return props.value;\n      }\n    }));\n    createRenderEffect(() => className(_el$5, clsx(styles().actionButton, css`\n          width: ${tokens.size[3.5]};\n          height: ${tokens.size[3.5]};\n        `)));\n    return _el$5;\n  })();\n};\nfunction isIterable(x) {\n  return Symbol.iterator in x;\n}\nfunction Explorer(props) {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles(css) : lightStyles(css);\n  });\n  const queryClient = useQueryDevtoolsContext().client;\n  const [expanded, setExpanded] = createSignal((props.defaultExpanded || []).includes(props.label));\n  const toggleExpanded = () => setExpanded((old) => !old);\n  const [expandedPages, setExpandedPages] = createSignal([]);\n  const subEntries = createMemo(() => {\n    if (Array.isArray(props.value)) {\n      return props.value.map((d, i2) => ({\n        label: i2.toString(),\n        value: d\n      }));\n    } else if (props.value !== null && typeof props.value === \"object\" && isIterable(props.value) && typeof props.value[Symbol.iterator] === \"function\") {\n      if (props.value instanceof Map) {\n        return Array.from(props.value, ([key, val]) => ({\n          label: key,\n          value: val\n        }));\n      }\n      return Array.from(props.value, (val, i2) => ({\n        label: i2.toString(),\n        value: val\n      }));\n    } else if (typeof props.value === \"object\" && props.value !== null) {\n      return Object.entries(props.value).map(([key, val]) => ({\n        label: key,\n        value: val\n      }));\n    }\n    return [];\n  });\n  const type = createMemo(() => {\n    if (Array.isArray(props.value)) {\n      return \"array\";\n    } else if (props.value !== null && typeof props.value === \"object\" && isIterable(props.value) && typeof props.value[Symbol.iterator] === \"function\") {\n      return \"Iterable\";\n    } else if (typeof props.value === \"object\" && props.value !== null) {\n      return \"object\";\n    }\n    return typeof props.value;\n  });\n  const subEntryPages = createMemo(() => chunkArray(subEntries(), 100));\n  const currentDataPath = props.dataPath ?? [];\n  const inputId = createUniqueId();\n  return (() => {\n    var _el$6 = _tmpl$72();\n    insert(_el$6, createComponent(Show, {\n      get when() {\n        return subEntryPages().length;\n      },\n      get children() {\n        return [(() => {\n          var _el$7 = _tmpl$82(), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$0 = _el$9.nextSibling, _el$1 = _el$0.nextSibling, _el$10 = _el$1.nextSibling, _el$11 = _el$10.firstChild;\n          _el$8.$$click = () => toggleExpanded();\n          insert(_el$8, createComponent(Expander, {\n            get expanded() {\n              return expanded();\n            }\n          }), _el$9);\n          insert(_el$0, () => props.label);\n          insert(_el$10, () => String(type()).toLowerCase() === \"iterable\" ? \"(Iterable) \" : \"\", _el$11);\n          insert(_el$10, () => subEntries().length, _el$11);\n          insert(_el$10, () => subEntries().length > 1 ? `items` : `item`, null);\n          insert(_el$7, createComponent(Show, {\n            get when() {\n              return props.editable;\n            },\n            get children() {\n              var _el$12 = _tmpl$72();\n              insert(_el$12, createComponent(CopyButton, {\n                get value() {\n                  return props.value;\n                }\n              }), null);\n              insert(_el$12, createComponent(Show, {\n                get when() {\n                  return memo(() => !!props.itemsDeletable)() && props.activeQuery !== void 0;\n                },\n                get children() {\n                  return createComponent(DeleteItemButton, {\n                    get activeQuery() {\n                      return props.activeQuery;\n                    },\n                    dataPath: currentDataPath\n                  });\n                }\n              }), null);\n              insert(_el$12, createComponent(Show, {\n                get when() {\n                  return memo(() => type() === \"array\")() && props.activeQuery !== void 0;\n                },\n                get children() {\n                  return createComponent(ClearArrayButton, {\n                    get activeQuery() {\n                      return props.activeQuery;\n                    },\n                    dataPath: currentDataPath\n                  });\n                }\n              }), null);\n              insert(_el$12, createComponent(Show, {\n                get when() {\n                  return memo(() => !!!!props.onEdit)() && !serialize(props.value).meta;\n                },\n                get children() {\n                  var _el$13 = _tmpl$62();\n                  _el$13.$$click = () => {\n                    props.onEdit?.();\n                  };\n                  insert(_el$13, createComponent(Pencil, {}));\n                  createRenderEffect(() => className(_el$13, styles().actionButton));\n                  return _el$13;\n                }\n              }), null);\n              createRenderEffect(() => className(_el$12, styles().actions));\n              return _el$12;\n            }\n          }), null);\n          createRenderEffect((_p$) => {\n            var _v$3 = styles().expanderButtonContainer, _v$4 = styles().expanderButton, _v$5 = expanded() ? \"true\" : \"false\", _v$6 = styles().info;\n            _v$3 !== _p$.e && className(_el$7, _p$.e = _v$3);\n            _v$4 !== _p$.t && className(_el$8, _p$.t = _v$4);\n            _v$5 !== _p$.a && setAttribute(_el$8, \"aria-expanded\", _p$.a = _v$5);\n            _v$6 !== _p$.o && className(_el$10, _p$.o = _v$6);\n            return _p$;\n          }, {\n            e: void 0,\n            t: void 0,\n            a: void 0,\n            o: void 0\n          });\n          return _el$7;\n        })(), createComponent(Show, {\n          get when() {\n            return expanded();\n          },\n          get children() {\n            return [createComponent(Show, {\n              get when() {\n                return subEntryPages().length === 1;\n              },\n              get children() {\n                var _el$14 = _tmpl$72();\n                insert(_el$14, createComponent(Key, {\n                  get each() {\n                    return subEntries();\n                  },\n                  by: (item) => item.label,\n                  children: (entry) => {\n                    return createComponent(Explorer, {\n                      get defaultExpanded() {\n                        return props.defaultExpanded;\n                      },\n                      get label() {\n                        return entry().label;\n                      },\n                      get value() {\n                        return entry().value;\n                      },\n                      get editable() {\n                        return props.editable;\n                      },\n                      get dataPath() {\n                        return [...currentDataPath, entry().label];\n                      },\n                      get activeQuery() {\n                        return props.activeQuery;\n                      },\n                      get itemsDeletable() {\n                        return type() === \"array\" || type() === \"Iterable\" || type() === \"object\";\n                      }\n                    });\n                  }\n                }));\n                createRenderEffect(() => className(_el$14, styles().subEntry));\n                return _el$14;\n              }\n            }), createComponent(Show, {\n              get when() {\n                return subEntryPages().length > 1;\n              },\n              get children() {\n                var _el$15 = _tmpl$72();\n                insert(_el$15, createComponent(Index, {\n                  get each() {\n                    return subEntryPages();\n                  },\n                  children: (entries, index) => (() => {\n                    var _el$21 = _tmpl$102(), _el$22 = _el$21.firstChild, _el$23 = _el$22.firstChild, _el$24 = _el$23.firstChild, _el$28 = _el$24.nextSibling, _el$26 = _el$28.nextSibling, _el$29 = _el$26.nextSibling; _el$29.nextSibling;\n                    _el$23.$$click = () => setExpandedPages((old) => old.includes(index) ? old.filter((d) => d !== index) : [...old, index]);\n                    insert(_el$23, createComponent(Expander, {\n                      get expanded() {\n                        return expandedPages().includes(index);\n                      }\n                    }), _el$24);\n                    insert(_el$23, index * 100, _el$28);\n                    insert(_el$23, index * 100 + 100 - 1, _el$29);\n                    insert(_el$22, createComponent(Show, {\n                      get when() {\n                        return expandedPages().includes(index);\n                      },\n                      get children() {\n                        var _el$30 = _tmpl$72();\n                        insert(_el$30, createComponent(Key, {\n                          get each() {\n                            return entries();\n                          },\n                          by: (entry) => entry.label,\n                          children: (entry) => createComponent(Explorer, {\n                            get defaultExpanded() {\n                              return props.defaultExpanded;\n                            },\n                            get label() {\n                              return entry().label;\n                            },\n                            get value() {\n                              return entry().value;\n                            },\n                            get editable() {\n                              return props.editable;\n                            },\n                            get dataPath() {\n                              return [...currentDataPath, entry().label];\n                            },\n                            get activeQuery() {\n                              return props.activeQuery;\n                            }\n                          })\n                        }));\n                        createRenderEffect(() => className(_el$30, styles().subEntry));\n                        return _el$30;\n                      }\n                    }), null);\n                    createRenderEffect((_p$) => {\n                      var _v$1 = styles().entry, _v$10 = styles().expanderButton;\n                      _v$1 !== _p$.e && className(_el$22, _p$.e = _v$1);\n                      _v$10 !== _p$.t && className(_el$23, _p$.t = _v$10);\n                      return _p$;\n                    }, {\n                      e: void 0,\n                      t: void 0\n                    });\n                    return _el$21;\n                  })()\n                }));\n                createRenderEffect(() => className(_el$15, styles().subEntry));\n                return _el$15;\n              }\n            })];\n          }\n        })];\n      }\n    }), null);\n    insert(_el$6, createComponent(Show, {\n      get when() {\n        return subEntryPages().length === 0;\n      },\n      get children() {\n        var _el$16 = _tmpl$110(), _el$17 = _el$16.firstChild, _el$18 = _el$17.firstChild;\n        setAttribute(_el$17, \"for\", inputId);\n        insert(_el$17, () => props.label, _el$18);\n        insert(_el$16, createComponent(Show, {\n          get when() {\n            return memo(() => !!(props.editable && props.activeQuery !== void 0))() && (type() === \"string\" || type() === \"number\" || type() === \"boolean\");\n          },\n          get fallback() {\n            return (() => {\n              var _el$31 = _tmpl$02();\n              insert(_el$31, () => displayValue(props.value));\n              createRenderEffect(() => className(_el$31, styles().value));\n              return _el$31;\n            })();\n          },\n          get children() {\n            return [createComponent(Show, {\n              get when() {\n                return memo(() => !!(props.editable && props.activeQuery !== void 0))() && (type() === \"string\" || type() === \"number\");\n              },\n              get children() {\n                var _el$19 = _tmpl$92();\n                _el$19.addEventListener(\"change\", (changeEvent) => {\n                  const oldData = props.activeQuery.state.data;\n                  const newData = updateNestedDataByPath(oldData, currentDataPath, type() === \"number\" ? changeEvent.target.valueAsNumber : changeEvent.target.value);\n                  queryClient.setQueryData(props.activeQuery.queryKey, newData);\n                });\n                setAttribute(_el$19, \"id\", inputId);\n                createRenderEffect((_p$) => {\n                  var _v$7 = type() === \"number\" ? \"number\" : \"text\", _v$8 = clsx(styles().value, styles().editableInput);\n                  _v$7 !== _p$.e && setAttribute(_el$19, \"type\", _p$.e = _v$7);\n                  _v$8 !== _p$.t && className(_el$19, _p$.t = _v$8);\n                  return _p$;\n                }, {\n                  e: void 0,\n                  t: void 0\n                });\n                createRenderEffect(() => _el$19.value = props.value);\n                return _el$19;\n              }\n            }), createComponent(Show, {\n              get when() {\n                return type() === \"boolean\";\n              },\n              get children() {\n                var _el$20 = _tmpl$02();\n                insert(_el$20, createComponent(ToggleValueButton, {\n                  get activeQuery() {\n                    return props.activeQuery;\n                  },\n                  dataPath: currentDataPath,\n                  get value() {\n                    return props.value;\n                  }\n                }), null);\n                insert(_el$20, () => displayValue(props.value), null);\n                createRenderEffect(() => className(_el$20, clsx(styles().value, styles().actions, styles().editableInput)));\n                return _el$20;\n              }\n            })];\n          }\n        }), null);\n        insert(_el$16, createComponent(Show, {\n          get when() {\n            return memo(() => !!(props.editable && props.itemsDeletable))() && props.activeQuery !== void 0;\n          },\n          get children() {\n            return createComponent(DeleteItemButton, {\n              get activeQuery() {\n                return props.activeQuery;\n              },\n              dataPath: currentDataPath\n            });\n          }\n        }), null);\n        createRenderEffect((_p$) => {\n          var _v$9 = styles().row, _v$0 = styles().label;\n          _v$9 !== _p$.e && className(_el$16, _p$.e = _v$9);\n          _v$0 !== _p$.t && className(_el$17, _p$.t = _v$0);\n          return _p$;\n        }, {\n          e: void 0,\n          t: void 0\n        });\n        return _el$16;\n      }\n    }), null);\n    createRenderEffect(() => className(_el$6, styles().entry));\n    return _el$6;\n  })();\n}\nvar stylesFactory = (theme, css) => {\n  const {\n    colors,\n    font,\n    size: size3,\n    border\n  } = tokens;\n  const t2 = (light, dark) => theme === \"light\" ? light : dark;\n  return {\n    entry: css`\n      & * {\n        font-size: ${font.size.xs};\n        font-family:\n          ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n          'Liberation Mono', 'Courier New', monospace;\n      }\n      position: relative;\n      outline: none;\n      word-break: break-word;\n    `,\n    subEntry: css`\n      margin: 0 0 0 0.5em;\n      padding-left: 0.75em;\n      border-left: 2px solid ${t2(colors.gray[300], colors.darkGray[400])};\n      /* outline: 1px solid ${colors.teal[400]}; */\n    `,\n    expander: css`\n      & path {\n        stroke: ${colors.gray[400]};\n      }\n      & svg {\n        width: ${size3[3]};\n        height: ${size3[3]};\n      }\n      display: inline-flex;\n      align-items: center;\n      transition: all 0.1s ease;\n      /* outline: 1px solid ${colors.blue[400]}; */\n    `,\n    expanderButtonContainer: css`\n      display: flex;\n      align-items: center;\n      line-height: ${size3[4]};\n      min-height: ${size3[4]};\n      gap: ${size3[2]};\n    `,\n    expanderButton: css`\n      cursor: pointer;\n      color: inherit;\n      font: inherit;\n      outline: inherit;\n      height: ${size3[5]};\n      background: transparent;\n      border: none;\n      padding: 0;\n      display: inline-flex;\n      align-items: center;\n      gap: ${size3[1]};\n      position: relative;\n      /* outline: 1px solid ${colors.green[400]}; */\n\n      &:focus-visible {\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${colors.blue[800]};\n      }\n\n      & svg {\n        position: relative;\n        left: 1px;\n      }\n    `,\n    info: css`\n      color: ${t2(colors.gray[500], colors.gray[500])};\n      font-size: ${font.size.xs};\n      margin-left: ${size3[1]};\n      /* outline: 1px solid ${colors.yellow[400]}; */\n    `,\n    label: css`\n      color: ${t2(colors.gray[700], colors.gray[300])};\n      white-space: nowrap;\n    `,\n    value: css`\n      color: ${t2(colors.purple[600], colors.purple[400])};\n      flex-grow: 1;\n    `,\n    actions: css`\n      display: inline-flex;\n      gap: ${size3[2]};\n      align-items: center;\n    `,\n    row: css`\n      display: inline-flex;\n      gap: ${size3[2]};\n      width: 100%;\n      margin: ${size3[0.25]} 0px;\n      line-height: ${size3[4.5]};\n      align-items: center;\n    `,\n    editableInput: css`\n      border: none;\n      padding: ${size3[0.5]} ${size3[1]} ${size3[0.5]} ${size3[1.5]};\n      flex-grow: 1;\n      border-radius: ${border.radius.xs};\n      background-color: ${t2(colors.gray[200], colors.darkGray[500])};\n\n      &:hover {\n        background-color: ${t2(colors.gray[300], colors.darkGray[600])};\n      }\n    `,\n    actionButton: css`\n      background-color: transparent;\n      color: ${t2(colors.gray[500], colors.gray[500])};\n      border: none;\n      display: inline-flex;\n      padding: 0px;\n      align-items: center;\n      justify-content: center;\n      cursor: pointer;\n      width: ${size3[3]};\n      height: ${size3[3]};\n      position: relative;\n      z-index: 1;\n\n      &:hover svg {\n        color: ${t2(colors.gray[600], colors.gray[400])};\n      }\n\n      &:focus-visible {\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${colors.blue[800]};\n        outline-offset: 2px;\n      }\n    `\n  };\n};\nvar lightStyles = (css) => stylesFactory(\"light\", css);\nvar darkStyles = (css) => stylesFactory(\"dark\", css);\ndelegateEvents([\"click\"]);\n\n// src/Devtools.tsx\nvar _tmpl$26 = /* @__PURE__ */ template(`<div><div aria-hidden=true></div><button type=button aria-label=\"Open Tanstack query devtools\"class=tsqd-open-btn>`);\nvar _tmpl$27 = /* @__PURE__ */ template(`<div>`);\nvar _tmpl$33 = /* @__PURE__ */ template(`<div style=--tsqd-font-size:16px;max-height:100vh;height:100vh;width:100vw>`);\nvar _tmpl$43 = /* @__PURE__ */ template(`<div style=--tsqd-font-size:16px>`);\nvar _tmpl$53 = /* @__PURE__ */ template(`<aside aria-label=\"Tanstack query devtools\"><div role=separator aria-label=\"Resize devtools panel\"tabindex=0></div><button aria-label=\"Close tanstack query devtools\">`);\nvar _tmpl$63 = /* @__PURE__ */ template(`<select name=tsqd-queries-filter-sort aria-label=\"Sort queries by\">`);\nvar _tmpl$73 = /* @__PURE__ */ template(`<select name=tsqd-mutations-filter-sort aria-label=\"Sort mutations by\">`);\nvar _tmpl$83 = /* @__PURE__ */ template(`<span>Asc`);\nvar _tmpl$93 = /* @__PURE__ */ template(`<span>Desc`);\nvar _tmpl$03 = /* @__PURE__ */ template(`<button aria-label=\"Open in picture-in-picture mode\"title=\"Open in picture-in-picture mode\">`);\nvar _tmpl$111 = /* @__PURE__ */ template(`<div>Settings`);\nvar _tmpl$103 = /* @__PURE__ */ template(`<span>Position`);\nvar _tmpl$112 = /* @__PURE__ */ template(`<span>Top`);\nvar _tmpl$122 = /* @__PURE__ */ template(`<span>Bottom`);\nvar _tmpl$132 = /* @__PURE__ */ template(`<span>Left`);\nvar _tmpl$142 = /* @__PURE__ */ template(`<span>Right`);\nvar _tmpl$152 = /* @__PURE__ */ template(`<span>Theme`);\nvar _tmpl$162 = /* @__PURE__ */ template(`<span>Light`);\nvar _tmpl$172 = /* @__PURE__ */ template(`<span>Dark`);\nvar _tmpl$182 = /* @__PURE__ */ template(`<span>System`);\nvar _tmpl$192 = /* @__PURE__ */ template(`<span>Disabled Queries`);\nvar _tmpl$202 = /* @__PURE__ */ template(`<span>Show`);\nvar _tmpl$212 = /* @__PURE__ */ template(`<span>Hide`);\nvar _tmpl$223 = /* @__PURE__ */ template(`<div><div class=tsqd-queries-container>`);\nvar _tmpl$232 = /* @__PURE__ */ template(`<div><div class=tsqd-mutations-container>`);\nvar _tmpl$242 = /* @__PURE__ */ template(`<div><div><div><button aria-label=\"Close Tanstack query devtools\"><span>TANSTACK</span><span> v</span></button></div></div><div><div><div><input aria-label=\"Filter queries by query key\"type=text placeholder=Filter name=tsqd-query-filter-input></div><div></div><button class=tsqd-query-filter-sort-order-btn></button></div><div><button aria-label=\"Clear query cache\"></button><button>`);\nvar _tmpl$252 = /* @__PURE__ */ template(`<option>Sort by `);\nvar _tmpl$262 = /* @__PURE__ */ template(`<div class=tsqd-query-disabled-indicator aria-hidden=true>disabled`);\nvar _tmpl$272 = /* @__PURE__ */ template(`<div class=tsqd-query-static-indicator aria-hidden=true>static`);\nvar _tmpl$28 = /* @__PURE__ */ template(`<button><div></div><code class=tsqd-query-hash>`);\nvar _tmpl$29 = /* @__PURE__ */ template(`<div role=tooltip id=tsqd-status-tooltip>`);\nvar _tmpl$30 = /* @__PURE__ */ template(`<span>`);\nvar _tmpl$31 = /* @__PURE__ */ template(`<button><span aria-hidden=true></span><span>`);\nvar _tmpl$322 = /* @__PURE__ */ template(`<button><span aria-hidden=true></span> Error`);\nvar _tmpl$332 = /* @__PURE__ */ template(`<div><span aria-hidden=true></span>Trigger Error<select aria-label=\"Select error type to trigger\"><option value disabled selected>`);\nvar _tmpl$34 = /* @__PURE__ */ template(`<div class=\"tsqd-query-details-explorer-container tsqd-query-details-data-explorer\">`);\nvar _tmpl$35 = /* @__PURE__ */ template(`<form><textarea name=data aria-label=\"Edit query data as JSON\"></textarea><div><span></span><div><button type=button>Cancel</button><button>Save`);\nvar _tmpl$36 = /* @__PURE__ */ template(`<div><div role=heading aria-level=2>Query Details</div><div><div class=tsqd-query-details-summary><pre><code></code></pre><span role=status aria-live=polite></span></div><div class=tsqd-query-details-observers-count><span>Observers:</span><span></span></div><div class=tsqd-query-details-last-updated><span>Last Updated:</span><span></span></div></div><div role=heading aria-level=2>Actions</div><div><button><span aria-hidden=true></span>Refetch</button><button><span aria-hidden=true></span>Invalidate</button><button><span aria-hidden=true></span>Reset</button><button><span aria-hidden=true></span>Remove</button><button><span aria-hidden=true></span> Loading</button></div><div role=heading aria-level=2>Data </div><div role=heading aria-level=2>Query Explorer</div><div class=\"tsqd-query-details-explorer-container tsqd-query-details-query-explorer\">`);\nvar _tmpl$37 = /* @__PURE__ */ template(`<option>`);\nvar _tmpl$38 = /* @__PURE__ */ template(`<div><div role=heading aria-level=2>Mutation Details</div><div><div class=tsqd-query-details-summary><pre><code></code></pre><span role=status aria-live=polite></span></div><div class=tsqd-query-details-last-updated><span>Submitted At:</span><span></span></div></div><div role=heading aria-level=2>Variables Details</div><div class=\"tsqd-query-details-explorer-container tsqd-query-details-query-explorer\"></div><div role=heading aria-level=2>Context Details</div><div class=\"tsqd-query-details-explorer-container tsqd-query-details-query-explorer\"></div><div role=heading aria-level=2>Data Explorer</div><div class=\"tsqd-query-details-explorer-container tsqd-query-details-query-explorer\"></div><div role=heading aria-level=2>Mutations Explorer</div><div class=\"tsqd-query-details-explorer-container tsqd-query-details-query-explorer\">`);\nvar [selectedQueryHash, setSelectedQueryHash] = createSignal(null);\nvar [selectedMutationId, setSelectedMutationId] = createSignal(null);\nvar [panelWidth, setPanelWidth] = createSignal(0);\nvar [offline, setOffline] = createSignal(false);\nvar Devtools = (props) => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  const onlineManager = createMemo(() => useQueryDevtoolsContext().onlineManager);\n  onMount(() => {\n    const unsubscribe = onlineManager().subscribe((online) => {\n      setOffline(!online);\n    });\n    onCleanup(() => {\n      unsubscribe();\n    });\n  });\n  const pip = usePiPWindow();\n  const buttonPosition = createMemo(() => {\n    return useQueryDevtoolsContext().buttonPosition || BUTTON_POSITION;\n  });\n  const isOpen = createMemo(() => {\n    return props.localStore.open === \"true\" ? true : props.localStore.open === \"false\" ? false : useQueryDevtoolsContext().initialIsOpen || INITIAL_IS_OPEN;\n  });\n  const position = createMemo(() => {\n    return props.localStore.position || useQueryDevtoolsContext().position || POSITION;\n  });\n  let transitionsContainerRef;\n  createEffect(() => {\n    const root = transitionsContainerRef.parentElement;\n    const height = props.localStore.height || DEFAULT_HEIGHT;\n    const width = props.localStore.width || DEFAULT_WIDTH;\n    const panelPosition = position();\n    root.style.setProperty(\"--tsqd-panel-height\", `${panelPosition === \"top\" ? \"-\" : \"\"}${height}px`);\n    root.style.setProperty(\"--tsqd-panel-width\", `${panelPosition === \"left\" ? \"-\" : \"\"}${width}px`);\n  });\n  onMount(() => {\n    const onFocus = () => {\n      const root = transitionsContainerRef.parentElement;\n      const fontSize = getComputedStyle(root).fontSize;\n      root.style.setProperty(\"--tsqd-font-size\", fontSize);\n    };\n    onFocus();\n    window.addEventListener(\"focus\", onFocus);\n    onCleanup(() => {\n      window.removeEventListener(\"focus\", onFocus);\n    });\n  });\n  const pip_open = createMemo(() => props.localStore.pip_open ?? \"false\");\n  return [createComponent(Show, {\n    get when() {\n      return memo(() => !!pip().pipWindow)() && pip_open() == \"true\";\n    },\n    get children() {\n      return createComponent(Portal, {\n        get mount() {\n          return pip().pipWindow?.document.body;\n        },\n        get children() {\n          return createComponent(PiPPanel, {\n            get children() {\n              return createComponent(ContentView, props);\n            }\n          });\n        }\n      });\n    }\n  }), (() => {\n    var _el$ = _tmpl$27();\n    var _ref$ = transitionsContainerRef;\n    typeof _ref$ === \"function\" ? use(_ref$, _el$) : transitionsContainerRef = _el$;\n    insert(_el$, createComponent(TransitionGroup, {\n      name: \"tsqd-panel-transition\",\n      get children() {\n        return createComponent(Show, {\n          get when() {\n            return memo(() => !!(isOpen() && !pip().pipWindow))() && pip_open() == \"false\";\n          },\n          get children() {\n            return createComponent(DraggablePanel, {\n              get localStore() {\n                return props.localStore;\n              },\n              get setLocalStore() {\n                return props.setLocalStore;\n              }\n            });\n          }\n        });\n      }\n    }), null);\n    insert(_el$, createComponent(TransitionGroup, {\n      name: \"tsqd-button-transition\",\n      get children() {\n        return createComponent(Show, {\n          get when() {\n            return !isOpen();\n          },\n          get children() {\n            var _el$2 = _tmpl$26(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;\n            insert(_el$3, createComponent(TanstackLogo, {}));\n            _el$4.$$click = () => props.setLocalStore(\"open\", \"true\");\n            insert(_el$4, createComponent(TanstackLogo, {}));\n            createRenderEffect(() => className(_el$2, clsx(styles().devtoolsBtn, styles()[`devtoolsBtn-position-${buttonPosition()}`], \"tsqd-open-btn-container\")));\n            return _el$2;\n          }\n        });\n      }\n    }), null);\n    createRenderEffect(() => className(_el$, clsx(css`\n            & .tsqd-panel-transition-exit-active,\n            & .tsqd-panel-transition-enter-active {\n              transition:\n                opacity 0.3s,\n                transform 0.3s;\n            }\n\n            & .tsqd-panel-transition-exit-to,\n            & .tsqd-panel-transition-enter {\n              ${position() === \"top\" || position() === \"bottom\" ? `transform: translateY(var(--tsqd-panel-height));` : `transform: translateX(var(--tsqd-panel-width));`}\n            }\n\n            & .tsqd-button-transition-exit-active,\n            & .tsqd-button-transition-enter-active {\n              transition:\n                opacity 0.3s,\n                transform 0.3s;\n              opacity: 1;\n            }\n\n            & .tsqd-button-transition-exit-to,\n            & .tsqd-button-transition-enter {\n              transform: ${buttonPosition() === \"relative\" ? `none;` : buttonPosition() === \"top-left\" ? `translateX(-72px);` : buttonPosition() === \"top-right\" ? `translateX(72px);` : `translateY(72px);`};\n              opacity: 0;\n            }\n          `, \"tsqd-transitions-container\")));\n    return _el$;\n  })()];\n};\nvar PiPPanel = (props) => {\n  const pip = usePiPWindow();\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  const getPanelDynamicStyles = () => {\n    const {\n      colors\n    } = tokens;\n    const t2 = (light, dark) => theme() === \"dark\" ? dark : light;\n    if (panelWidth() < secondBreakpoint) {\n      return css`\n        flex-direction: column;\n        background-color: ${t2(colors.gray[300], colors.gray[600])};\n      `;\n    }\n    return css`\n      flex-direction: row;\n      background-color: ${t2(colors.gray[200], colors.darkGray[900])};\n    `;\n  };\n  createEffect(() => {\n    const win = pip().pipWindow;\n    const resizeCB = () => {\n      if (!win) return;\n      setPanelWidth(win.innerWidth);\n    };\n    if (win) {\n      win.addEventListener(\"resize\", resizeCB);\n      resizeCB();\n    }\n    onCleanup(() => {\n      if (win) {\n        win.removeEventListener(\"resize\", resizeCB);\n      }\n    });\n  });\n  return (() => {\n    var _el$5 = _tmpl$33();\n    insert(_el$5, () => props.children);\n    createRenderEffect(() => className(_el$5, clsx(styles().panel, getPanelDynamicStyles(), {\n      [css`\n            min-width: min-content;\n          `]: panelWidth() < thirdBreakpoint\n    }, \"tsqd-main-panel\")));\n    return _el$5;\n  })();\n};\nvar ParentPanel = (props) => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  let panelRef;\n  onMount(() => {\n    createResizeObserver(panelRef, ({\n      width\n    }, el) => {\n      if (el === panelRef) {\n        setPanelWidth(width);\n      }\n    });\n  });\n  const getPanelDynamicStyles = () => {\n    const {\n      colors\n    } = tokens;\n    const t2 = (light, dark) => theme() === \"dark\" ? dark : light;\n    if (panelWidth() < secondBreakpoint) {\n      return css`\n        flex-direction: column;\n        background-color: ${t2(colors.gray[300], colors.gray[600])};\n      `;\n    }\n    return css`\n      flex-direction: row;\n      background-color: ${t2(colors.gray[200], colors.darkGray[900])};\n    `;\n  };\n  return (() => {\n    var _el$6 = _tmpl$43();\n    var _ref$2 = panelRef;\n    typeof _ref$2 === \"function\" ? use(_ref$2, _el$6) : panelRef = _el$6;\n    insert(_el$6, () => props.children);\n    createRenderEffect(() => className(_el$6, clsx(styles().parentPanel, getPanelDynamicStyles(), {\n      [css`\n            min-width: min-content;\n          `]: panelWidth() < thirdBreakpoint\n    }, \"tsqd-main-panel\")));\n    return _el$6;\n  })();\n};\nvar DraggablePanel = (props) => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  let closeBtnRef;\n  onMount(() => {\n    closeBtnRef.focus();\n  });\n  const [isResizing, setIsResizing] = createSignal(false);\n  const position = createMemo(() => props.localStore.position || useQueryDevtoolsContext().position || POSITION);\n  const handleDragStart = (event) => {\n    const panelElement = event.currentTarget.parentElement;\n    if (!panelElement) return;\n    setIsResizing(true);\n    const {\n      height,\n      width\n    } = panelElement.getBoundingClientRect();\n    const startX = event.clientX;\n    const startY = event.clientY;\n    let newSize = 0;\n    const minHeight = convertRemToPixels(3.5);\n    const minWidth = convertRemToPixels(12);\n    const runDrag = (moveEvent) => {\n      moveEvent.preventDefault();\n      if (position() === \"left\" || position() === \"right\") {\n        const valToAdd = position() === \"right\" ? startX - moveEvent.clientX : moveEvent.clientX - startX;\n        newSize = Math.round(width + valToAdd);\n        if (newSize < minWidth) {\n          newSize = minWidth;\n        }\n        props.setLocalStore(\"width\", String(Math.round(newSize)));\n        const newWidth = panelElement.getBoundingClientRect().width;\n        if (Number(props.localStore.width) < newWidth) {\n          props.setLocalStore(\"width\", String(newWidth));\n        }\n      } else {\n        const valToAdd = position() === \"bottom\" ? startY - moveEvent.clientY : moveEvent.clientY - startY;\n        newSize = Math.round(height + valToAdd);\n        if (newSize < minHeight) {\n          newSize = minHeight;\n          setSelectedQueryHash(null);\n        }\n        props.setLocalStore(\"height\", String(Math.round(newSize)));\n      }\n    };\n    const unsubscribe = () => {\n      if (isResizing()) {\n        setIsResizing(false);\n      }\n      document.removeEventListener(\"mousemove\", runDrag, false);\n      document.removeEventListener(\"mouseup\", unsubscribe, false);\n    };\n    document.addEventListener(\"mousemove\", runDrag, false);\n    document.addEventListener(\"mouseup\", unsubscribe, false);\n  };\n  let panelRef;\n  onMount(() => {\n    createResizeObserver(panelRef, ({\n      width\n    }, el) => {\n      if (el === panelRef) {\n        setPanelWidth(width);\n      }\n    });\n  });\n  createEffect(() => {\n    const rootContainer = panelRef.parentElement?.parentElement?.parentElement;\n    if (!rootContainer) return;\n    const currentPosition = props.localStore.position || POSITION;\n    const styleProp = getSidedProp(\"padding\", currentPosition);\n    const isVertical = props.localStore.position === \"left\" || props.localStore.position === \"right\";\n    const previousPaddings = (({\n      padding,\n      paddingTop,\n      paddingBottom,\n      paddingLeft,\n      paddingRight\n    }) => ({\n      padding,\n      paddingTop,\n      paddingBottom,\n      paddingLeft,\n      paddingRight\n    }))(rootContainer.style);\n    rootContainer.style[styleProp] = `${isVertical ? props.localStore.width : props.localStore.height}px`;\n    onCleanup(() => {\n      Object.entries(previousPaddings).forEach(([property, previousValue]) => {\n        rootContainer.style[property] = previousValue;\n      });\n    });\n  });\n  const getPanelDynamicStyles = () => {\n    const {\n      colors\n    } = tokens;\n    const t2 = (light, dark) => theme() === \"dark\" ? dark : light;\n    if (panelWidth() < secondBreakpoint) {\n      return css`\n        flex-direction: column;\n        background-color: ${t2(colors.gray[300], colors.gray[600])};\n      `;\n    }\n    return css`\n      flex-direction: row;\n      background-color: ${t2(colors.gray[200], colors.darkGray[900])};\n    `;\n  };\n  return (() => {\n    var _el$7 = _tmpl$53(), _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling;\n    var _ref$3 = panelRef;\n    typeof _ref$3 === \"function\" ? use(_ref$3, _el$7) : panelRef = _el$7;\n    _el$8.$$keydown = (e2) => {\n      const step = 10;\n      const minHeight = convertRemToPixels(3.5);\n      const minWidth = convertRemToPixels(12);\n      if (position() === \"top\" || position() === \"bottom\") {\n        if (e2.key === \"ArrowUp\" || e2.key === \"ArrowDown\") {\n          e2.preventDefault();\n          const currentHeight = Number(props.localStore.height || DEFAULT_HEIGHT);\n          const delta = position() === \"bottom\" ? e2.key === \"ArrowUp\" ? step : -step : e2.key === \"ArrowDown\" ? step : -step;\n          const newHeight = Math.max(minHeight, currentHeight + delta);\n          props.setLocalStore(\"height\", String(newHeight));\n        }\n      } else {\n        if (e2.key === \"ArrowLeft\" || e2.key === \"ArrowRight\") {\n          e2.preventDefault();\n          const currentWidth = Number(props.localStore.width || DEFAULT_WIDTH);\n          const delta = position() === \"right\" ? e2.key === \"ArrowLeft\" ? step : -step : e2.key === \"ArrowRight\" ? step : -step;\n          const newWidth = Math.max(minWidth, currentWidth + delta);\n          props.setLocalStore(\"width\", String(newWidth));\n        }\n      }\n    };\n    _el$8.$$mousedown = handleDragStart;\n    _el$9.$$click = () => props.setLocalStore(\"open\", \"false\");\n    var _ref$4 = closeBtnRef;\n    typeof _ref$4 === \"function\" ? use(_ref$4, _el$9) : closeBtnRef = _el$9;\n    insert(_el$9, createComponent(ChevronDown, {}));\n    insert(_el$7, createComponent(ContentView, props), null);\n    createRenderEffect((_p$) => {\n      var _v$ = clsx(styles().panel, styles()[`panel-position-${position()}`], getPanelDynamicStyles(), {\n        [css`\n            min-width: min-content;\n          `]: panelWidth() < thirdBreakpoint && (position() === \"right\" || position() === \"left\")\n      }, \"tsqd-main-panel\"), _v$2 = position() === \"bottom\" || position() === \"top\" ? `${props.localStore.height || DEFAULT_HEIGHT}px` : \"auto\", _v$3 = position() === \"right\" || position() === \"left\" ? `${props.localStore.width || DEFAULT_WIDTH}px` : \"auto\", _v$4 = position() === \"top\" || position() === \"bottom\" ? \"horizontal\" : \"vertical\", _v$5 = position() === \"top\" || position() === \"bottom\" ? convertRemToPixels(3.5) : convertRemToPixels(12), _v$6 = position() === \"top\" || position() === \"bottom\" ? Number(props.localStore.height || DEFAULT_HEIGHT) : Number(props.localStore.width || DEFAULT_WIDTH), _v$7 = clsx(styles().dragHandle, styles()[`dragHandle-position-${position()}`], \"tsqd-drag-handle\"), _v$8 = clsx(styles().closeBtn, styles()[`closeBtn-position-${position()}`], \"tsqd-minimize-btn\");\n      _v$ !== _p$.e && className(_el$7, _p$.e = _v$);\n      _v$2 !== _p$.t && setStyleProperty(_el$7, \"height\", _p$.t = _v$2);\n      _v$3 !== _p$.a && setStyleProperty(_el$7, \"width\", _p$.a = _v$3);\n      _v$4 !== _p$.o && setAttribute(_el$8, \"aria-orientation\", _p$.o = _v$4);\n      _v$5 !== _p$.i && setAttribute(_el$8, \"aria-valuemin\", _p$.i = _v$5);\n      _v$6 !== _p$.n && setAttribute(_el$8, \"aria-valuenow\", _p$.n = _v$6);\n      _v$7 !== _p$.s && className(_el$8, _p$.s = _v$7);\n      _v$8 !== _p$.h && className(_el$9, _p$.h = _v$8);\n      return _p$;\n    }, {\n      e: void 0,\n      t: void 0,\n      a: void 0,\n      o: void 0,\n      i: void 0,\n      n: void 0,\n      s: void 0,\n      h: void 0\n    });\n    return _el$7;\n  })();\n};\nvar ContentView = (props) => {\n  setupQueryCacheSubscription();\n  setupMutationCacheSubscription();\n  let containerRef;\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  const pip = usePiPWindow();\n  const [selectedView, setSelectedView] = createSignal(\"queries\");\n  const sort = createMemo(() => props.localStore.sort || DEFAULT_SORT_FN_NAME);\n  const sortOrder = createMemo(() => Number(props.localStore.sortOrder) || DEFAULT_SORT_ORDER);\n  const mutationSort = createMemo(() => props.localStore.mutationSort || DEFAULT_MUTATION_SORT_FN_NAME);\n  const mutationSortOrder = createMemo(() => Number(props.localStore.mutationSortOrder) || DEFAULT_SORT_ORDER);\n  const sortFn = createMemo(() => sortFns[sort()]);\n  const mutationSortFn = createMemo(() => mutationSortFns[mutationSort()]);\n  const onlineManager = createMemo(() => useQueryDevtoolsContext().onlineManager);\n  const query_cache = createMemo(() => {\n    return useQueryDevtoolsContext().client.getQueryCache();\n  });\n  const mutation_cache = createMemo(() => {\n    return useQueryDevtoolsContext().client.getMutationCache();\n  });\n  const queryCount = createSubscribeToQueryCacheBatcher((queryCache) => {\n    return queryCache().getAll().length;\n  }, false);\n  const queries = createMemo(on(() => [queryCount(), props.localStore.filter, sort(), sortOrder(), props.localStore.hideDisabledQueries], () => {\n    const curr = query_cache().getAll();\n    let filtered = props.localStore.filter ? curr.filter((item) => rankItem(item.queryHash, props.localStore.filter || \"\").passed) : [...curr];\n    if (props.localStore.hideDisabledQueries === \"true\") {\n      filtered = filtered.filter((item) => !item.isDisabled());\n    }\n    const sorted = sortFn() ? filtered.sort((a2, b2) => sortFn()(a2, b2) * sortOrder()) : filtered;\n    return sorted;\n  }));\n  const mutationCount = createSubscribeToMutationCacheBatcher((mutationCache) => {\n    return mutationCache().getAll().length;\n  }, false);\n  const mutations = createMemo(on(() => [mutationCount(), props.localStore.mutationFilter, mutationSort(), mutationSortOrder()], () => {\n    const curr = mutation_cache().getAll();\n    const filtered = props.localStore.mutationFilter ? curr.filter((item) => {\n      const value = `${item.options.mutationKey ? JSON.stringify(item.options.mutationKey) + \" - \" : \"\"}${new Date(item.state.submittedAt).toLocaleString()}`;\n      return rankItem(value, props.localStore.mutationFilter || \"\").passed;\n    }) : [...curr];\n    const sorted = mutationSortFn() ? filtered.sort((a2, b2) => mutationSortFn()(a2, b2) * mutationSortOrder()) : filtered;\n    return sorted;\n  }));\n  const setDevtoolsPosition = (pos) => {\n    props.setLocalStore(\"position\", pos);\n  };\n  const setComputedVariables = (el) => {\n    const computedStyle = getComputedStyle(containerRef);\n    const variable = computedStyle.getPropertyValue(\"--tsqd-font-size\");\n    el.style.setProperty(\"--tsqd-font-size\", variable);\n  };\n  return [(() => {\n    var _el$0 = _tmpl$242(), _el$1 = _el$0.firstChild, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$11.firstChild, _el$13 = _el$12.nextSibling, _el$14 = _el$13.firstChild, _el$15 = _el$1.nextSibling, _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild, _el$18 = _el$17.firstChild, _el$19 = _el$17.nextSibling, _el$22 = _el$19.nextSibling, _el$25 = _el$16.nextSibling, _el$26 = _el$25.firstChild, _el$27 = _el$26.nextSibling;\n    var _ref$5 = containerRef;\n    typeof _ref$5 === \"function\" ? use(_ref$5, _el$0) : containerRef = _el$0;\n    _el$11.$$click = () => {\n      if (!pip().pipWindow && !props.showPanelViewOnly) {\n        props.setLocalStore(\"open\", \"false\");\n        return;\n      }\n      if (props.onClose) {\n        props.onClose();\n      }\n    };\n    insert(_el$13, () => useQueryDevtoolsContext().queryFlavor, _el$14);\n    insert(_el$13, () => useQueryDevtoolsContext().version, null);\n    insert(_el$10, createComponent(radio_group_exports.Root, {\n      get [\"class\"]() {\n        return clsx(styles().viewToggle);\n      },\n      get value() {\n        return selectedView();\n      },\n      \"aria-label\": \"Toggle between queries and mutations view\",\n      onChange: (value) => {\n        setSelectedView(value);\n        setSelectedQueryHash(null);\n        setSelectedMutationId(null);\n      },\n      get children() {\n        return [createComponent(radio_group_exports.Item, {\n          value: \"queries\",\n          \"class\": \"tsqd-radio-toggle\",\n          get children() {\n            return [createComponent(radio_group_exports.ItemInput, {}), createComponent(radio_group_exports.ItemControl, {\n              get children() {\n                return createComponent(radio_group_exports.ItemIndicator, {});\n              }\n            }), createComponent(radio_group_exports.ItemLabel, {\n              title: \"Toggle Queries View\",\n              children: \"Queries\"\n            })];\n          }\n        }), createComponent(radio_group_exports.Item, {\n          value: \"mutations\",\n          \"class\": \"tsqd-radio-toggle\",\n          get children() {\n            return [createComponent(radio_group_exports.ItemInput, {}), createComponent(radio_group_exports.ItemControl, {\n              get children() {\n                return createComponent(radio_group_exports.ItemIndicator, {});\n              }\n            }), createComponent(radio_group_exports.ItemLabel, {\n              title: \"Toggle Mutations View\",\n              children: \"Mutations\"\n            })];\n          }\n        })];\n      }\n    }), null);\n    insert(_el$1, createComponent(Show, {\n      get when() {\n        return selectedView() === \"queries\";\n      },\n      get children() {\n        return createComponent(QueryStatusCount, {});\n      }\n    }), null);\n    insert(_el$1, createComponent(Show, {\n      get when() {\n        return selectedView() === \"mutations\";\n      },\n      get children() {\n        return createComponent(MutationStatusCount, {});\n      }\n    }), null);\n    insert(_el$17, createComponent(Search, {}), _el$18);\n    _el$18.$$input = (e2) => {\n      if (selectedView() === \"queries\") {\n        props.setLocalStore(\"filter\", e2.currentTarget.value);\n      } else {\n        props.setLocalStore(\"mutationFilter\", e2.currentTarget.value);\n      }\n    };\n    insert(_el$19, createComponent(Show, {\n      get when() {\n        return selectedView() === \"queries\";\n      },\n      get children() {\n        var _el$20 = _tmpl$63();\n        _el$20.addEventListener(\"change\", (e2) => {\n          props.setLocalStore(\"sort\", e2.currentTarget.value);\n        });\n        insert(_el$20, () => Object.keys(sortFns).map((key) => (() => {\n          var _el$46 = _tmpl$252(); _el$46.firstChild;\n          _el$46.value = key;\n          insert(_el$46, key, null);\n          return _el$46;\n        })()));\n        createRenderEffect(() => _el$20.value = sort());\n        return _el$20;\n      }\n    }), null);\n    insert(_el$19, createComponent(Show, {\n      get when() {\n        return selectedView() === \"mutations\";\n      },\n      get children() {\n        var _el$21 = _tmpl$73();\n        _el$21.addEventListener(\"change\", (e2) => {\n          props.setLocalStore(\"mutationSort\", e2.currentTarget.value);\n        });\n        insert(_el$21, () => Object.keys(mutationSortFns).map((key) => (() => {\n          var _el$48 = _tmpl$252(); _el$48.firstChild;\n          _el$48.value = key;\n          insert(_el$48, key, null);\n          return _el$48;\n        })()));\n        createRenderEffect(() => _el$21.value = mutationSort());\n        return _el$21;\n      }\n    }), null);\n    insert(_el$19, createComponent(ChevronDown, {}), null);\n    _el$22.$$click = () => {\n      if (selectedView() === \"queries\") {\n        props.setLocalStore(\"sortOrder\", String(sortOrder() * -1));\n      } else {\n        props.setLocalStore(\"mutationSortOrder\", String(mutationSortOrder() * -1));\n      }\n    };\n    insert(_el$22, createComponent(Show, {\n      get when() {\n        return (selectedView() === \"queries\" ? sortOrder() : mutationSortOrder()) === 1;\n      },\n      get children() {\n        return [_tmpl$83(), createComponent(ArrowUp, {})];\n      }\n    }), null);\n    insert(_el$22, createComponent(Show, {\n      get when() {\n        return (selectedView() === \"queries\" ? sortOrder() : mutationSortOrder()) === -1;\n      },\n      get children() {\n        return [_tmpl$93(), createComponent(ArrowDown, {})];\n      }\n    }), null);\n    _el$26.$$click = () => {\n      if (selectedView() === \"queries\") {\n        sendDevToolsEvent({\n          type: \"CLEAR_QUERY_CACHE\"\n        });\n        query_cache().clear();\n      } else {\n        sendDevToolsEvent({\n          type: \"CLEAR_MUTATION_CACHE\"\n        });\n        mutation_cache().clear();\n      }\n    };\n    insert(_el$26, createComponent(Trash, {}));\n    _el$27.$$click = () => {\n      onlineManager().setOnline(!onlineManager().isOnline());\n    };\n    insert(_el$27, (() => {\n      var _c$ = memo(() => !!offline());\n      return () => _c$() ? createComponent(Offline, {}) : createComponent(Wifi, {});\n    })());\n    insert(_el$25, createComponent(Show, {\n      get when() {\n        return memo(() => !!!pip().pipWindow)() && !pip().disabled;\n      },\n      get children() {\n        var _el$28 = _tmpl$03();\n        _el$28.$$click = () => {\n          pip().requestPipWindow(Number(window.innerWidth), Number(props.localStore.height ?? 500));\n        };\n        insert(_el$28, createComponent(PiPIcon, {}));\n        createRenderEffect(() => className(_el$28, clsx(styles().actionsBtn, \"tsqd-actions-btn\", \"tsqd-action-open-pip\")));\n        return _el$28;\n      }\n    }), null);\n    insert(_el$25, createComponent(dropdown_menu_exports.Root, {\n      gutter: 4,\n      get children() {\n        return [createComponent(dropdown_menu_exports.Trigger, {\n          get [\"class\"]() {\n            return clsx(styles().actionsBtn, \"tsqd-actions-btn\", \"tsqd-action-settings\");\n          },\n          \"aria-label\": \"Open settings menu\",\n          title: \"Open settings menu\",\n          get children() {\n            return createComponent(Settings, {});\n          }\n        }), createComponent(dropdown_menu_exports.Portal, {\n          ref: (el) => setComputedVariables(el),\n          get mount() {\n            return memo(() => !!pip().pipWindow)() ? pip().pipWindow.document.body : document.body;\n          },\n          get children() {\n            return createComponent(dropdown_menu_exports.Content, {\n              get [\"class\"]() {\n                return clsx(styles().settingsMenu, \"tsqd-settings-menu\");\n              },\n              get children() {\n                return [(() => {\n                  var _el$29 = _tmpl$111();\n                  createRenderEffect(() => className(_el$29, clsx(styles().settingsMenuHeader, \"tsqd-settings-menu-header\")));\n                  return _el$29;\n                })(), createComponent(Show, {\n                  get when() {\n                    return !props.showPanelViewOnly;\n                  },\n                  get children() {\n                    return createComponent(dropdown_menu_exports.Sub, {\n                      overlap: true,\n                      gutter: 8,\n                      shift: -4,\n                      get children() {\n                        return [createComponent(dropdown_menu_exports.SubTrigger, {\n                          get [\"class\"]() {\n                            return clsx(styles().settingsSubTrigger, \"tsqd-settings-menu-sub-trigger\", \"tsqd-settings-menu-sub-trigger-position\");\n                          },\n                          get children() {\n                            return [_tmpl$103(), createComponent(ChevronDown, {})];\n                          }\n                        }), createComponent(dropdown_menu_exports.Portal, {\n                          ref: (el) => setComputedVariables(el),\n                          get mount() {\n                            return memo(() => !!pip().pipWindow)() ? pip().pipWindow.document.body : document.body;\n                          },\n                          get children() {\n                            return createComponent(dropdown_menu_exports.SubContent, {\n                              get [\"class\"]() {\n                                return clsx(styles().settingsMenu, \"tsqd-settings-submenu\");\n                              },\n                              get children() {\n                                return createComponent(dropdown_menu_exports.RadioGroup, {\n                                  \"aria-label\": \"Position settings\",\n                                  get value() {\n                                    return props.localStore.position;\n                                  },\n                                  onChange: (value) => setDevtoolsPosition(value),\n                                  get children() {\n                                    return [createComponent(dropdown_menu_exports.RadioItem, {\n                                      value: \"top\",\n                                      get [\"class\"]() {\n                                        return clsx(styles().settingsSubButton, \"tsqd-settings-menu-position-btn\", \"tsqd-settings-menu-position-btn-top\");\n                                      },\n                                      get children() {\n                                        return [_tmpl$112(), createComponent(ArrowUp, {})];\n                                      }\n                                    }), createComponent(dropdown_menu_exports.RadioItem, {\n                                      value: \"bottom\",\n                                      get [\"class\"]() {\n                                        return clsx(styles().settingsSubButton, \"tsqd-settings-menu-position-btn\", \"tsqd-settings-menu-position-btn-bottom\");\n                                      },\n                                      get children() {\n                                        return [_tmpl$122(), createComponent(ArrowDown, {})];\n                                      }\n                                    }), createComponent(dropdown_menu_exports.RadioItem, {\n                                      value: \"left\",\n                                      get [\"class\"]() {\n                                        return clsx(styles().settingsSubButton, \"tsqd-settings-menu-position-btn\", \"tsqd-settings-menu-position-btn-left\");\n                                      },\n                                      get children() {\n                                        return [_tmpl$132(), createComponent(ArrowLeft, {})];\n                                      }\n                                    }), createComponent(dropdown_menu_exports.RadioItem, {\n                                      value: \"right\",\n                                      get [\"class\"]() {\n                                        return clsx(styles().settingsSubButton, \"tsqd-settings-menu-position-btn\", \"tsqd-settings-menu-position-btn-right\");\n                                      },\n                                      get children() {\n                                        return [_tmpl$142(), createComponent(ArrowRight, {})];\n                                      }\n                                    })];\n                                  }\n                                });\n                              }\n                            });\n                          }\n                        })];\n                      }\n                    });\n                  }\n                }), createComponent(dropdown_menu_exports.Sub, {\n                  overlap: true,\n                  gutter: 8,\n                  shift: -4,\n                  get children() {\n                    return [createComponent(dropdown_menu_exports.SubTrigger, {\n                      get [\"class\"]() {\n                        return clsx(styles().settingsSubTrigger, \"tsqd-settings-menu-sub-trigger\", \"tsqd-settings-menu-sub-trigger-theme\");\n                      },\n                      get children() {\n                        return [_tmpl$152(), createComponent(ChevronDown, {})];\n                      }\n                    }), createComponent(dropdown_menu_exports.Portal, {\n                      ref: (el) => setComputedVariables(el),\n                      get mount() {\n                        return memo(() => !!pip().pipWindow)() ? pip().pipWindow.document.body : document.body;\n                      },\n                      get children() {\n                        return createComponent(dropdown_menu_exports.SubContent, {\n                          get [\"class\"]() {\n                            return clsx(styles().settingsMenu, \"tsqd-settings-submenu\");\n                          },\n                          get children() {\n                            return createComponent(dropdown_menu_exports.RadioGroup, {\n                              get value() {\n                                return props.localStore.theme_preference;\n                              },\n                              onChange: (value) => {\n                                props.setLocalStore(\"theme_preference\", value);\n                              },\n                              \"aria-label\": \"Theme preference\",\n                              get children() {\n                                return [createComponent(dropdown_menu_exports.RadioItem, {\n                                  value: \"light\",\n                                  get [\"class\"]() {\n                                    return clsx(styles().settingsSubButton, \"tsqd-settings-menu-position-btn\", \"tsqd-settings-menu-position-btn-top\");\n                                  },\n                                  get children() {\n                                    return [_tmpl$162(), createComponent(Sun, {})];\n                                  }\n                                }), createComponent(dropdown_menu_exports.RadioItem, {\n                                  value: \"dark\",\n                                  get [\"class\"]() {\n                                    return clsx(styles().settingsSubButton, \"tsqd-settings-menu-position-btn\", \"tsqd-settings-menu-position-btn-bottom\");\n                                  },\n                                  get children() {\n                                    return [_tmpl$172(), createComponent(Moon, {})];\n                                  }\n                                }), createComponent(dropdown_menu_exports.RadioItem, {\n                                  value: \"system\",\n                                  get [\"class\"]() {\n                                    return clsx(styles().settingsSubButton, \"tsqd-settings-menu-position-btn\", \"tsqd-settings-menu-position-btn-left\");\n                                  },\n                                  get children() {\n                                    return [_tmpl$182(), createComponent(Monitor, {})];\n                                  }\n                                })];\n                              }\n                            });\n                          }\n                        });\n                      }\n                    })];\n                  }\n                }), createComponent(dropdown_menu_exports.Sub, {\n                  overlap: true,\n                  gutter: 8,\n                  shift: -4,\n                  get children() {\n                    return [createComponent(dropdown_menu_exports.SubTrigger, {\n                      get [\"class\"]() {\n                        return clsx(styles().settingsSubTrigger, \"tsqd-settings-menu-sub-trigger\", \"tsqd-settings-menu-sub-trigger-disabled-queries\");\n                      },\n                      get children() {\n                        return [_tmpl$192(), createComponent(ChevronDown, {})];\n                      }\n                    }), createComponent(dropdown_menu_exports.Portal, {\n                      ref: (el) => setComputedVariables(el),\n                      get mount() {\n                        return memo(() => !!pip().pipWindow)() ? pip().pipWindow.document.body : document.body;\n                      },\n                      get children() {\n                        return createComponent(dropdown_menu_exports.SubContent, {\n                          get [\"class\"]() {\n                            return clsx(styles().settingsMenu, \"tsqd-settings-submenu\");\n                          },\n                          get children() {\n                            return createComponent(dropdown_menu_exports.RadioGroup, {\n                              get value() {\n                                return props.localStore.hideDisabledQueries;\n                              },\n                              \"aria-label\": \"Hide disabled queries setting\",\n                              onChange: (value) => props.setLocalStore(\"hideDisabledQueries\", value),\n                              get children() {\n                                return [createComponent(dropdown_menu_exports.RadioItem, {\n                                  value: \"false\",\n                                  get [\"class\"]() {\n                                    return clsx(styles().settingsSubButton, \"tsqd-settings-menu-position-btn\", \"tsqd-settings-menu-position-btn-show\");\n                                  },\n                                  get children() {\n                                    return [_tmpl$202(), createComponent(Show, {\n                                      get when() {\n                                        return props.localStore.hideDisabledQueries !== \"true\";\n                                      },\n                                      get children() {\n                                        return createComponent(CheckCircle, {});\n                                      }\n                                    })];\n                                  }\n                                }), createComponent(dropdown_menu_exports.RadioItem, {\n                                  value: \"true\",\n                                  get [\"class\"]() {\n                                    return clsx(styles().settingsSubButton, \"tsqd-settings-menu-position-btn\", \"tsqd-settings-menu-position-btn-hide\");\n                                  },\n                                  get children() {\n                                    return [_tmpl$212(), createComponent(Show, {\n                                      get when() {\n                                        return props.localStore.hideDisabledQueries === \"true\";\n                                      },\n                                      get children() {\n                                        return createComponent(CheckCircle, {});\n                                      }\n                                    })];\n                                  }\n                                })];\n                              }\n                            });\n                          }\n                        });\n                      }\n                    })];\n                  }\n                })];\n              }\n            });\n          }\n        })];\n      }\n    }), null);\n    insert(_el$0, createComponent(Show, {\n      get when() {\n        return selectedView() === \"queries\";\n      },\n      get children() {\n        var _el$42 = _tmpl$223(), _el$43 = _el$42.firstChild;\n        insert(_el$43, createComponent(Key, {\n          by: (q) => q.queryHash,\n          get each() {\n            return queries();\n          },\n          children: (query) => createComponent(QueryRow, {\n            get query() {\n              return query();\n            }\n          })\n        }));\n        createRenderEffect(() => className(_el$42, clsx(styles().overflowQueryContainer, \"tsqd-queries-overflow-container\")));\n        return _el$42;\n      }\n    }), null);\n    insert(_el$0, createComponent(Show, {\n      get when() {\n        return selectedView() === \"mutations\";\n      },\n      get children() {\n        var _el$44 = _tmpl$232(), _el$45 = _el$44.firstChild;\n        insert(_el$45, createComponent(Key, {\n          by: (m) => m.mutationId,\n          get each() {\n            return mutations();\n          },\n          children: (mutation) => createComponent(MutationRow, {\n            get mutation() {\n              return mutation();\n            }\n          })\n        }));\n        createRenderEffect(() => className(_el$44, clsx(styles().overflowQueryContainer, \"tsqd-mutations-overflow-container\")));\n        return _el$44;\n      }\n    }), null);\n    createRenderEffect((_p$) => {\n      var _v$9 = clsx(styles().queriesContainer, panelWidth() < secondBreakpoint && (selectedQueryHash() || selectedMutationId()) && css`\n              height: 50%;\n              max-height: 50%;\n            `, panelWidth() < secondBreakpoint && !(selectedQueryHash() || selectedMutationId()) && css`\n              height: 100%;\n              max-height: 100%;\n            `, \"tsqd-queries-container\"), _v$0 = clsx(styles().row, \"tsqd-header\"), _v$1 = styles().logoAndToggleContainer, _v$10 = clsx(styles().logo, \"tsqd-text-logo-container\"), _v$11 = clsx(styles().tanstackLogo, \"tsqd-text-logo-tanstack\"), _v$12 = clsx(styles().queryFlavorLogo, \"tsqd-text-logo-query-flavor\"), _v$13 = clsx(styles().row, \"tsqd-filters-actions-container\"), _v$14 = clsx(styles().filtersContainer, \"tsqd-filters-container\"), _v$15 = clsx(styles().filterInput, \"tsqd-query-filter-textfield-container\"), _v$16 = clsx(\"tsqd-query-filter-textfield\"), _v$17 = clsx(styles().filterSelect, \"tsqd-query-filter-sort-container\"), _v$18 = `Sort order ${(selectedView() === \"queries\" ? sortOrder() : mutationSortOrder()) === -1 ? \"descending\" : \"ascending\"}`, _v$19 = (selectedView() === \"queries\" ? sortOrder() : mutationSortOrder()) === -1, _v$20 = clsx(styles().actionsContainer, \"tsqd-actions-container\"), _v$21 = clsx(styles().actionsBtn, \"tsqd-actions-btn\", \"tsqd-action-clear-cache\"), _v$22 = `Clear ${selectedView()} cache`, _v$23 = clsx(styles().actionsBtn, offline() && styles().actionsBtnOffline, \"tsqd-actions-btn\", \"tsqd-action-mock-offline-behavior\"), _v$24 = `${offline() ? \"Unset offline mocking behavior\" : \"Mock offline behavior\"}`, _v$25 = offline(), _v$26 = `${offline() ? \"Unset offline mocking behavior\" : \"Mock offline behavior\"}`;\n      _v$9 !== _p$.e && className(_el$0, _p$.e = _v$9);\n      _v$0 !== _p$.t && className(_el$1, _p$.t = _v$0);\n      _v$1 !== _p$.a && className(_el$10, _p$.a = _v$1);\n      _v$10 !== _p$.o && className(_el$11, _p$.o = _v$10);\n      _v$11 !== _p$.i && className(_el$12, _p$.i = _v$11);\n      _v$12 !== _p$.n && className(_el$13, _p$.n = _v$12);\n      _v$13 !== _p$.s && className(_el$15, _p$.s = _v$13);\n      _v$14 !== _p$.h && className(_el$16, _p$.h = _v$14);\n      _v$15 !== _p$.r && className(_el$17, _p$.r = _v$15);\n      _v$16 !== _p$.d && className(_el$18, _p$.d = _v$16);\n      _v$17 !== _p$.l && className(_el$19, _p$.l = _v$17);\n      _v$18 !== _p$.u && setAttribute(_el$22, \"aria-label\", _p$.u = _v$18);\n      _v$19 !== _p$.c && setAttribute(_el$22, \"aria-pressed\", _p$.c = _v$19);\n      _v$20 !== _p$.w && className(_el$25, _p$.w = _v$20);\n      _v$21 !== _p$.m && className(_el$26, _p$.m = _v$21);\n      _v$22 !== _p$.f && setAttribute(_el$26, \"title\", _p$.f = _v$22);\n      _v$23 !== _p$.y && className(_el$27, _p$.y = _v$23);\n      _v$24 !== _p$.g && setAttribute(_el$27, \"aria-label\", _p$.g = _v$24);\n      _v$25 !== _p$.p && setAttribute(_el$27, \"aria-pressed\", _p$.p = _v$25);\n      _v$26 !== _p$.b && setAttribute(_el$27, \"title\", _p$.b = _v$26);\n      return _p$;\n    }, {\n      e: void 0,\n      t: void 0,\n      a: void 0,\n      o: void 0,\n      i: void 0,\n      n: void 0,\n      s: void 0,\n      h: void 0,\n      r: void 0,\n      d: void 0,\n      l: void 0,\n      u: void 0,\n      c: void 0,\n      w: void 0,\n      m: void 0,\n      f: void 0,\n      y: void 0,\n      g: void 0,\n      p: void 0,\n      b: void 0\n    });\n    createRenderEffect(() => _el$18.value = selectedView() === \"queries\" ? props.localStore.filter || \"\" : props.localStore.mutationFilter || \"\");\n    return _el$0;\n  })(), createComponent(Show, {\n    get when() {\n      return memo(() => selectedView() === \"queries\")() && selectedQueryHash();\n    },\n    get children() {\n      return createComponent(QueryDetails, {});\n    }\n  }), createComponent(Show, {\n    get when() {\n      return memo(() => selectedView() === \"mutations\")() && selectedMutationId();\n    },\n    get children() {\n      return createComponent(MutationDetails, {});\n    }\n  })];\n};\nvar QueryRow = (props) => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  const {\n    colors,\n    alpha\n  } = tokens;\n  const t2 = (light, dark) => theme() === \"dark\" ? dark : light;\n  const queryState = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().get(props.query.queryHash)?.state, true, (e2) => e2.query.queryHash === props.query.queryHash);\n  const isDisabled = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().get(props.query.queryHash)?.isDisabled() ?? false, true, (e2) => e2.query.queryHash === props.query.queryHash);\n  const isStatic = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().get(props.query.queryHash)?.isStatic() ?? false, true, (e2) => e2.query.queryHash === props.query.queryHash);\n  const isStale = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().get(props.query.queryHash)?.isStale() ?? false, true, (e2) => e2.query.queryHash === props.query.queryHash);\n  const observers = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().get(props.query.queryHash)?.getObserversCount() ?? 0, true, (e2) => e2.query.queryHash === props.query.queryHash);\n  const color = createMemo(() => getQueryStatusColor({\n    queryState: queryState(),\n    observerCount: observers(),\n    isStale: isStale()\n  }));\n  const getObserverCountColorStyles = () => {\n    if (color() === \"gray\") {\n      return css`\n        background-color: ${t2(colors[color()][200], colors[color()][700])};\n        color: ${t2(colors[color()][700], colors[color()][300])};\n      `;\n    }\n    return css`\n      background-color: ${t2(colors[color()][200] + alpha[80], colors[color()][900])};\n      color: ${t2(colors[color()][800], colors[color()][300])};\n    `;\n  };\n  return createComponent(Show, {\n    get when() {\n      return queryState();\n    },\n    get children() {\n      var _el$50 = _tmpl$28(), _el$51 = _el$50.firstChild, _el$52 = _el$51.nextSibling;\n      _el$50.$$click = () => setSelectedQueryHash(props.query.queryHash === selectedQueryHash() ? null : props.query.queryHash);\n      insert(_el$51, observers);\n      insert(_el$52, () => props.query.queryHash);\n      insert(_el$50, createComponent(Show, {\n        get when() {\n          return isDisabled();\n        },\n        get children() {\n          return _tmpl$262();\n        }\n      }), null);\n      insert(_el$50, createComponent(Show, {\n        get when() {\n          return isStatic();\n        },\n        get children() {\n          return _tmpl$272();\n        }\n      }), null);\n      createRenderEffect((_p$) => {\n        var _v$27 = clsx(styles().queryRow, selectedQueryHash() === props.query.queryHash && styles().selectedQueryRow, \"tsqd-query-row\"), _v$28 = `Query key ${props.query.queryHash}${isDisabled() ? \", disabled\" : \"\"}${isStatic() ? \", static\" : \"\"}`, _v$29 = clsx(getObserverCountColorStyles(), \"tsqd-query-observer-count\");\n        _v$27 !== _p$.e && className(_el$50, _p$.e = _v$27);\n        _v$28 !== _p$.t && setAttribute(_el$50, \"aria-label\", _p$.t = _v$28);\n        _v$29 !== _p$.a && className(_el$51, _p$.a = _v$29);\n        return _p$;\n      }, {\n        e: void 0,\n        t: void 0,\n        a: void 0\n      });\n      return _el$50;\n    }\n  });\n};\nvar MutationRow = (props) => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  const {\n    colors,\n    alpha\n  } = tokens;\n  const t2 = (light, dark) => theme() === \"dark\" ? dark : light;\n  const mutationState = createSubscribeToMutationCacheBatcher((mutationCache) => {\n    const mutations = mutationCache().getAll();\n    const mutation = mutations.find((m) => m.mutationId === props.mutation.mutationId);\n    return mutation?.state;\n  });\n  const isPaused = createSubscribeToMutationCacheBatcher((mutationCache) => {\n    const mutations = mutationCache().getAll();\n    const mutation = mutations.find((m) => m.mutationId === props.mutation.mutationId);\n    if (!mutation) return false;\n    return mutation.state.isPaused;\n  });\n  const status = createSubscribeToMutationCacheBatcher((mutationCache) => {\n    const mutations = mutationCache().getAll();\n    const mutation = mutations.find((m) => m.mutationId === props.mutation.mutationId);\n    if (!mutation) return \"idle\";\n    return mutation.state.status;\n  });\n  const color = createMemo(() => getMutationStatusColor({\n    isPaused: isPaused(),\n    status: status()\n  }));\n  const getObserverCountColorStyles = () => {\n    if (color() === \"gray\") {\n      return css`\n        background-color: ${t2(colors[color()][200], colors[color()][700])};\n        color: ${t2(colors[color()][700], colors[color()][300])};\n      `;\n    }\n    return css`\n      background-color: ${t2(colors[color()][200] + alpha[80], colors[color()][900])};\n      color: ${t2(colors[color()][800], colors[color()][300])};\n    `;\n  };\n  return createComponent(Show, {\n    get when() {\n      return mutationState();\n    },\n    get children() {\n      var _el$55 = _tmpl$28(), _el$56 = _el$55.firstChild, _el$57 = _el$56.nextSibling;\n      _el$55.$$click = () => {\n        setSelectedMutationId(props.mutation.mutationId === selectedMutationId() ? null : props.mutation.mutationId);\n      };\n      insert(_el$56, createComponent(Show, {\n        get when() {\n          return color() === \"purple\";\n        },\n        get children() {\n          return createComponent(PauseCircle, {});\n        }\n      }), null);\n      insert(_el$56, createComponent(Show, {\n        get when() {\n          return color() === \"green\";\n        },\n        get children() {\n          return createComponent(CheckCircle, {});\n        }\n      }), null);\n      insert(_el$56, createComponent(Show, {\n        get when() {\n          return color() === \"red\";\n        },\n        get children() {\n          return createComponent(XCircle, {});\n        }\n      }), null);\n      insert(_el$56, createComponent(Show, {\n        get when() {\n          return color() === \"yellow\";\n        },\n        get children() {\n          return createComponent(LoadingCircle, {});\n        }\n      }), null);\n      insert(_el$57, createComponent(Show, {\n        get when() {\n          return props.mutation.options.mutationKey;\n        },\n        get children() {\n          return [memo(() => JSON.stringify(props.mutation.options.mutationKey)), \" -\", \" \"];\n        }\n      }), null);\n      insert(_el$57, () => new Date(props.mutation.state.submittedAt).toLocaleString(), null);\n      createRenderEffect((_p$) => {\n        var _v$30 = clsx(styles().queryRow, selectedMutationId() === props.mutation.mutationId && styles().selectedQueryRow, \"tsqd-query-row\"), _v$31 = `Mutation submitted at ${new Date(props.mutation.state.submittedAt).toLocaleString()}`, _v$32 = clsx(getObserverCountColorStyles(), \"tsqd-query-observer-count\");\n        _v$30 !== _p$.e && className(_el$55, _p$.e = _v$30);\n        _v$31 !== _p$.t && setAttribute(_el$55, \"aria-label\", _p$.t = _v$31);\n        _v$32 !== _p$.a && className(_el$56, _p$.a = _v$32);\n        return _p$;\n      }, {\n        e: void 0,\n        t: void 0,\n        a: void 0\n      });\n      return _el$55;\n    }\n  });\n};\nvar QueryStatusCount = () => {\n  const stale = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().getAll().filter((q) => getQueryStatusLabel(q) === \"stale\").length);\n  const fresh = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().getAll().filter((q) => getQueryStatusLabel(q) === \"fresh\").length);\n  const fetching = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().getAll().filter((q) => getQueryStatusLabel(q) === \"fetching\").length);\n  const paused = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().getAll().filter((q) => getQueryStatusLabel(q) === \"paused\").length);\n  const inactive = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().getAll().filter((q) => getQueryStatusLabel(q) === \"inactive\").length);\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  return (() => {\n    var _el$58 = _tmpl$27();\n    insert(_el$58, createComponent(QueryStatus, {\n      label: \"Fresh\",\n      color: \"green\",\n      get count() {\n        return fresh();\n      }\n    }), null);\n    insert(_el$58, createComponent(QueryStatus, {\n      label: \"Fetching\",\n      color: \"blue\",\n      get count() {\n        return fetching();\n      }\n    }), null);\n    insert(_el$58, createComponent(QueryStatus, {\n      label: \"Paused\",\n      color: \"purple\",\n      get count() {\n        return paused();\n      }\n    }), null);\n    insert(_el$58, createComponent(QueryStatus, {\n      label: \"Stale\",\n      color: \"yellow\",\n      get count() {\n        return stale();\n      }\n    }), null);\n    insert(_el$58, createComponent(QueryStatus, {\n      label: \"Inactive\",\n      color: \"gray\",\n      get count() {\n        return inactive();\n      }\n    }), null);\n    createRenderEffect(() => className(_el$58, clsx(styles().queryStatusContainer, \"tsqd-query-status-container\")));\n    return _el$58;\n  })();\n};\nvar MutationStatusCount = () => {\n  const success = createSubscribeToMutationCacheBatcher((mutationCache) => mutationCache().getAll().filter((m) => getMutationStatusColor({\n    isPaused: m.state.isPaused,\n    status: m.state.status\n  }) === \"green\").length);\n  const pending = createSubscribeToMutationCacheBatcher((mutationCache) => mutationCache().getAll().filter((m) => getMutationStatusColor({\n    isPaused: m.state.isPaused,\n    status: m.state.status\n  }) === \"yellow\").length);\n  const paused = createSubscribeToMutationCacheBatcher((mutationCache) => mutationCache().getAll().filter((m) => getMutationStatusColor({\n    isPaused: m.state.isPaused,\n    status: m.state.status\n  }) === \"purple\").length);\n  const error = createSubscribeToMutationCacheBatcher((mutationCache) => mutationCache().getAll().filter((m) => getMutationStatusColor({\n    isPaused: m.state.isPaused,\n    status: m.state.status\n  }) === \"red\").length);\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  return (() => {\n    var _el$59 = _tmpl$27();\n    insert(_el$59, createComponent(QueryStatus, {\n      label: \"Paused\",\n      color: \"purple\",\n      get count() {\n        return paused();\n      }\n    }), null);\n    insert(_el$59, createComponent(QueryStatus, {\n      label: \"Pending\",\n      color: \"yellow\",\n      get count() {\n        return pending();\n      }\n    }), null);\n    insert(_el$59, createComponent(QueryStatus, {\n      label: \"Success\",\n      color: \"green\",\n      get count() {\n        return success();\n      }\n    }), null);\n    insert(_el$59, createComponent(QueryStatus, {\n      label: \"Error\",\n      color: \"red\",\n      get count() {\n        return error();\n      }\n    }), null);\n    createRenderEffect(() => className(_el$59, clsx(styles().queryStatusContainer, \"tsqd-query-status-container\")));\n    return _el$59;\n  })();\n};\nvar QueryStatus = (props) => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  const {\n    colors,\n    alpha\n  } = tokens;\n  const t2 = (light, dark) => theme() === \"dark\" ? dark : light;\n  let tagRef;\n  const [mouseOver, setMouseOver] = createSignal(false);\n  const [focused, setFocused] = createSignal(false);\n  const showLabel = createMemo(() => {\n    if (selectedQueryHash()) {\n      if (panelWidth() < firstBreakpoint && panelWidth() > secondBreakpoint) {\n        return false;\n      }\n    }\n    if (panelWidth() < secondBreakpoint) {\n      return false;\n    }\n    return true;\n  });\n  return (() => {\n    var _el$60 = _tmpl$31(), _el$62 = _el$60.firstChild, _el$64 = _el$62.nextSibling;\n    var _ref$6 = tagRef;\n    typeof _ref$6 === \"function\" ? use(_ref$6, _el$60) : tagRef = _el$60;\n    _el$60.addEventListener(\"mouseleave\", () => {\n      setMouseOver(false);\n      setFocused(false);\n    });\n    _el$60.addEventListener(\"mouseenter\", () => setMouseOver(true));\n    _el$60.addEventListener(\"blur\", () => setFocused(false));\n    _el$60.addEventListener(\"focus\", () => setFocused(true));\n    spread(_el$60, mergeProps({\n      get disabled() {\n        return showLabel();\n      },\n      get [\"aria-label\"]() {\n        return `${props.label}: ${props.count}`;\n      },\n      get [\"class\"]() {\n        return clsx(styles().queryStatusTag, !showLabel() && css`\n            cursor: pointer;\n            &:hover {\n              background: ${t2(colors.gray[200], colors.darkGray[400])}${alpha[80]};\n            }\n          `, \"tsqd-query-status-tag\", `tsqd-query-status-tag-${props.label.toLowerCase()}`);\n      }\n    }, () => mouseOver() || focused() ? {\n      \"aria-describedby\": \"tsqd-status-tooltip\"\n    } : {}), false, true);\n    insert(_el$60, createComponent(Show, {\n      get when() {\n        return memo(() => !!!showLabel())() && (mouseOver() || focused());\n      },\n      get children() {\n        var _el$61 = _tmpl$29();\n        insert(_el$61, () => props.label);\n        createRenderEffect(() => className(_el$61, clsx(styles().statusTooltip, \"tsqd-query-status-tooltip\")));\n        return _el$61;\n      }\n    }), _el$62);\n    insert(_el$60, createComponent(Show, {\n      get when() {\n        return showLabel();\n      },\n      get children() {\n        var _el$63 = _tmpl$30();\n        insert(_el$63, () => props.label);\n        createRenderEffect(() => className(_el$63, clsx(styles().queryStatusTagLabel, \"tsqd-query-status-tag-label\")));\n        return _el$63;\n      }\n    }), _el$64);\n    insert(_el$64, () => props.count);\n    createRenderEffect((_p$) => {\n      var _v$33 = clsx(css`\n            width: ${tokens.size[1.5]};\n            height: ${tokens.size[1.5]};\n            border-radius: ${tokens.border.radius.full};\n            background-color: ${tokens.colors[props.color][500]};\n          `, \"tsqd-query-status-tag-dot\"), _v$34 = clsx(styles().queryStatusCount, props.count > 0 && props.color !== \"gray\" && css`\n              background-color: ${t2(colors[props.color][100], colors[props.color][900])};\n              color: ${t2(colors[props.color][700], colors[props.color][300])};\n            `, \"tsqd-query-status-tag-count\");\n      _v$33 !== _p$.e && className(_el$62, _p$.e = _v$33);\n      _v$34 !== _p$.t && className(_el$64, _p$.t = _v$34);\n      return _p$;\n    }, {\n      e: void 0,\n      t: void 0\n    });\n    return _el$60;\n  })();\n};\nvar QueryDetails = () => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  const {\n    colors\n  } = tokens;\n  const t2 = (light, dark) => theme() === \"dark\" ? dark : light;\n  const queryClient = useQueryDevtoolsContext().client;\n  const [restoringLoading, setRestoringLoading] = createSignal(false);\n  const [dataMode, setDataMode] = createSignal(\"view\");\n  const [dataEditError, setDataEditError] = createSignal(false);\n  const errorTypes = createMemo(() => {\n    return useQueryDevtoolsContext().errorTypes || [];\n  });\n  const activeQuery = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().getAll().find((query) => query.queryHash === selectedQueryHash()), false);\n  const activeQueryFresh = createSubscribeToQueryCacheBatcher((queryCache) => {\n    return queryCache().getAll().find((query) => query.queryHash === selectedQueryHash());\n  }, false);\n  const activeQueryState = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().getAll().find((query) => query.queryHash === selectedQueryHash())?.state, false);\n  const activeQueryStateData = createSubscribeToQueryCacheBatcher((queryCache) => {\n    return queryCache().getAll().find((query) => query.queryHash === selectedQueryHash())?.state.data;\n  }, false);\n  const statusLabel = createSubscribeToQueryCacheBatcher((queryCache) => {\n    const query = queryCache().getAll().find((q) => q.queryHash === selectedQueryHash());\n    if (!query) return \"inactive\";\n    return getQueryStatusLabel(query);\n  });\n  const queryStatus = createSubscribeToQueryCacheBatcher((queryCache) => {\n    const query = queryCache().getAll().find((q) => q.queryHash === selectedQueryHash());\n    if (!query) return \"pending\";\n    return query.state.status;\n  });\n  const observerCount = createSubscribeToQueryCacheBatcher((queryCache) => queryCache().getAll().find((query) => query.queryHash === selectedQueryHash())?.getObserversCount() ?? 0);\n  const color = createMemo(() => getQueryStatusColorByLabel(statusLabel()));\n  const handleRefetch = () => {\n    sendDevToolsEvent({\n      type: \"REFETCH\",\n      queryHash: activeQuery()?.queryHash\n    });\n    const promise = activeQuery()?.fetch();\n    promise?.catch(() => {\n    });\n  };\n  const triggerError = (errorType) => {\n    const activeQueryVal = activeQuery();\n    if (!activeQueryVal) return;\n    sendDevToolsEvent({\n      type: \"TRIGGER_ERROR\",\n      queryHash: activeQueryVal.queryHash,\n      metadata: {\n        error: errorType?.name\n      }\n    });\n    const error = errorType?.initializer(activeQueryVal) ?? new Error(\"Unknown error from devtools\");\n    const __previousQueryOptions = activeQueryVal.options;\n    activeQueryVal.setState({\n      data: void 0,\n      status: \"error\",\n      error,\n      fetchMeta: {\n        ...activeQueryVal.state.fetchMeta,\n        __previousQueryOptions\n      }\n    });\n  };\n  const restoreQueryAfterLoadingOrError = () => {\n    const activeQueryVal = activeQuery();\n    if (!activeQueryVal) return;\n    sendDevToolsEvent({\n      type: \"RESTORE_LOADING\",\n      queryHash: activeQueryVal.queryHash\n    });\n    const previousState = activeQueryVal.state;\n    const previousOptions = activeQueryVal.state.fetchMeta ? activeQueryVal.state.fetchMeta.__previousQueryOptions : null;\n    activeQueryVal.cancel({\n      silent: true\n    });\n    activeQueryVal.setState({\n      ...previousState,\n      fetchStatus: \"idle\",\n      fetchMeta: null\n    });\n    if (previousOptions) {\n      activeQueryVal.fetch(previousOptions);\n    }\n  };\n  createEffect(() => {\n    if (statusLabel() !== \"fetching\") {\n      setRestoringLoading(false);\n    }\n  });\n  const getQueryStatusColors = () => {\n    if (color() === \"gray\") {\n      return css`\n        background-color: ${t2(colors[color()][200], colors[color()][700])};\n        color: ${t2(colors[color()][700], colors[color()][300])};\n        border-color: ${t2(colors[color()][400], colors[color()][600])};\n      `;\n    }\n    return css`\n      background-color: ${t2(colors[color()][100], colors[color()][900])};\n      color: ${t2(colors[color()][700], colors[color()][300])};\n      border-color: ${t2(colors[color()][400], colors[color()][600])};\n    `;\n  };\n  return createComponent(Show, {\n    get when() {\n      return memo(() => !!activeQuery())() && activeQueryState();\n    },\n    get children() {\n      var _el$65 = _tmpl$36(), _el$66 = _el$65.firstChild, _el$67 = _el$66.nextSibling, _el$68 = _el$67.firstChild, _el$69 = _el$68.firstChild, _el$70 = _el$69.firstChild, _el$71 = _el$69.nextSibling, _el$72 = _el$68.nextSibling, _el$73 = _el$72.firstChild, _el$74 = _el$73.nextSibling, _el$75 = _el$72.nextSibling, _el$76 = _el$75.firstChild, _el$77 = _el$76.nextSibling, _el$78 = _el$67.nextSibling, _el$79 = _el$78.nextSibling, _el$80 = _el$79.firstChild, _el$81 = _el$80.firstChild, _el$82 = _el$80.nextSibling, _el$83 = _el$82.firstChild, _el$84 = _el$82.nextSibling, _el$85 = _el$84.firstChild, _el$86 = _el$84.nextSibling, _el$87 = _el$86.firstChild, _el$88 = _el$86.nextSibling, _el$89 = _el$88.firstChild, _el$90 = _el$89.nextSibling, _el$99 = _el$79.nextSibling; _el$99.firstChild; var _el$109 = _el$99.nextSibling, _el$110 = _el$109.nextSibling;\n      insert(_el$70, () => displayValue(activeQuery().queryKey, true));\n      insert(_el$71, statusLabel);\n      insert(_el$74, observerCount);\n      insert(_el$77, () => new Date(activeQueryState().dataUpdatedAt).toLocaleTimeString());\n      _el$80.$$click = handleRefetch;\n      _el$82.$$click = () => {\n        sendDevToolsEvent({\n          type: \"INVALIDATE\",\n          queryHash: activeQuery()?.queryHash\n        });\n        queryClient.invalidateQueries({\n          queryKey: activeQuery()?.queryKey,\n          exact: true\n        });\n      };\n      _el$84.$$click = () => {\n        sendDevToolsEvent({\n          type: \"RESET\",\n          queryHash: activeQuery()?.queryHash\n        });\n        queryClient.resetQueries({\n          queryKey: activeQuery()?.queryKey,\n          exact: true\n        });\n      };\n      _el$86.$$click = () => {\n        sendDevToolsEvent({\n          type: \"REMOVE\",\n          queryHash: activeQuery()?.queryHash\n        });\n        queryClient.removeQueries({\n          queryKey: activeQuery()?.queryKey,\n          exact: true\n        });\n        setSelectedQueryHash(null);\n      };\n      _el$88.$$click = () => {\n        if (activeQuery()?.state.data === void 0) {\n          setRestoringLoading(true);\n          restoreQueryAfterLoadingOrError();\n        } else {\n          const activeQueryVal = activeQuery();\n          if (!activeQueryVal) return;\n          sendDevToolsEvent({\n            type: \"TRIGGER_LOADING\",\n            queryHash: activeQueryVal.queryHash\n          });\n          const __previousQueryOptions = activeQueryVal.options;\n          activeQueryVal.fetch({\n            ...__previousQueryOptions,\n            queryFn: () => {\n              return new Promise(() => {\n              });\n            },\n            gcTime: -1\n          });\n          activeQueryVal.setState({\n            data: void 0,\n            status: \"pending\",\n            fetchMeta: {\n              ...activeQueryVal.state.fetchMeta,\n              __previousQueryOptions\n            }\n          });\n        }\n      };\n      insert(_el$88, () => queryStatus() === \"pending\" ? \"Restore\" : \"Trigger\", _el$90);\n      insert(_el$79, createComponent(Show, {\n        get when() {\n          return errorTypes().length === 0 || queryStatus() === \"error\";\n        },\n        get children() {\n          var _el$91 = _tmpl$322(), _el$92 = _el$91.firstChild, _el$93 = _el$92.nextSibling;\n          _el$91.$$click = () => {\n            if (!activeQuery().state.error) {\n              triggerError();\n            } else {\n              sendDevToolsEvent({\n                type: \"RESTORE_ERROR\",\n                queryHash: activeQuery()?.queryHash\n              });\n              queryClient.resetQueries({\n                queryKey: activeQuery()?.queryKey\n              });\n            }\n          };\n          insert(_el$91, () => queryStatus() === \"error\" ? \"Restore\" : \"Trigger\", _el$93);\n          createRenderEffect((_p$) => {\n            var _v$35 = clsx(css`\n                  color: ${t2(colors.red[500], colors.red[400])};\n                `, \"tsqd-query-details-actions-btn\", \"tsqd-query-details-action-error\"), _v$36 = queryStatus() === \"pending\", _v$37 = css`\n                  background-color: ${t2(colors.red[500], colors.red[400])};\n                `;\n            _v$35 !== _p$.e && className(_el$91, _p$.e = _v$35);\n            _v$36 !== _p$.t && (_el$91.disabled = _p$.t = _v$36);\n            _v$37 !== _p$.a && className(_el$92, _p$.a = _v$37);\n            return _p$;\n          }, {\n            e: void 0,\n            t: void 0,\n            a: void 0\n          });\n          return _el$91;\n        }\n      }), null);\n      insert(_el$79, createComponent(Show, {\n        get when() {\n          return !(errorTypes().length === 0 || queryStatus() === \"error\");\n        },\n        get children() {\n          var _el$94 = _tmpl$332(), _el$95 = _el$94.firstChild, _el$96 = _el$95.nextSibling, _el$97 = _el$96.nextSibling; _el$97.firstChild;\n          _el$97.addEventListener(\"change\", (e2) => {\n            const errorType = errorTypes().find((et) => et.name === e2.currentTarget.value);\n            triggerError(errorType);\n          });\n          insert(_el$97, createComponent(For, {\n            get each() {\n              return errorTypes();\n            },\n            children: (errorType) => (() => {\n              var _el$111 = _tmpl$37();\n              insert(_el$111, () => errorType.name);\n              createRenderEffect(() => _el$111.value = errorType.name);\n              return _el$111;\n            })()\n          }), null);\n          insert(_el$94, createComponent(ChevronDown, {}), null);\n          createRenderEffect((_p$) => {\n            var _v$38 = clsx(styles().actionsSelect, \"tsqd-query-details-actions-btn\", \"tsqd-query-details-action-error-multiple\"), _v$39 = css`\n                  background-color: ${tokens.colors.red[400]};\n                `, _v$40 = queryStatus() === \"pending\";\n            _v$38 !== _p$.e && className(_el$94, _p$.e = _v$38);\n            _v$39 !== _p$.t && className(_el$95, _p$.t = _v$39);\n            _v$40 !== _p$.a && (_el$97.disabled = _p$.a = _v$40);\n            return _p$;\n          }, {\n            e: void 0,\n            t: void 0,\n            a: void 0\n          });\n          return _el$94;\n        }\n      }), null);\n      insert(_el$99, () => dataMode() === \"view\" ? \"Explorer\" : \"Editor\", null);\n      insert(_el$65, createComponent(Show, {\n        get when() {\n          return dataMode() === \"view\";\n        },\n        get children() {\n          var _el$101 = _tmpl$34();\n          insert(_el$101, createComponent(Explorer, {\n            label: \"Data\",\n            defaultExpanded: [\"Data\"],\n            get value() {\n              return activeQueryStateData();\n            },\n            editable: true,\n            onEdit: () => setDataMode(\"edit\"),\n            get activeQuery() {\n              return activeQuery();\n            }\n          }));\n          createRenderEffect((_$p) => setStyleProperty(_el$101, \"padding\", tokens.size[2]));\n          return _el$101;\n        }\n      }), _el$109);\n      insert(_el$65, createComponent(Show, {\n        get when() {\n          return dataMode() === \"edit\";\n        },\n        get children() {\n          var _el$102 = _tmpl$35(), _el$103 = _el$102.firstChild, _el$104 = _el$103.nextSibling, _el$105 = _el$104.firstChild, _el$106 = _el$105.nextSibling, _el$107 = _el$106.firstChild, _el$108 = _el$107.nextSibling;\n          _el$102.addEventListener(\"submit\", (e2) => {\n            e2.preventDefault();\n            const formData = new FormData(e2.currentTarget);\n            const data = formData.get(\"data\");\n            try {\n              const parsedData = JSON.parse(data);\n              activeQuery().setState({\n                ...activeQuery().state,\n                data: parsedData\n              });\n              setDataMode(\"view\");\n            } catch (error) {\n              setDataEditError(true);\n            }\n          });\n          _el$103.addEventListener(\"focus\", () => setDataEditError(false));\n          insert(_el$105, () => dataEditError() ? \"Invalid Value\" : \"\");\n          _el$107.$$click = () => setDataMode(\"view\");\n          createRenderEffect((_p$) => {\n            var _v$41 = clsx(styles().devtoolsEditForm, \"tsqd-query-details-data-editor\"), _v$42 = styles().devtoolsEditTextarea, _v$43 = dataEditError(), _v$44 = styles().devtoolsEditFormActions, _v$45 = styles().devtoolsEditFormError, _v$46 = styles().devtoolsEditFormActionContainer, _v$47 = clsx(styles().devtoolsEditFormAction, css`\n                      color: ${t2(colors.gray[600], colors.gray[300])};\n                    `), _v$48 = clsx(styles().devtoolsEditFormAction, css`\n                      color: ${t2(colors.blue[600], colors.blue[400])};\n                    `);\n            _v$41 !== _p$.e && className(_el$102, _p$.e = _v$41);\n            _v$42 !== _p$.t && className(_el$103, _p$.t = _v$42);\n            _v$43 !== _p$.a && setAttribute(_el$103, \"data-error\", _p$.a = _v$43);\n            _v$44 !== _p$.o && className(_el$104, _p$.o = _v$44);\n            _v$45 !== _p$.i && className(_el$105, _p$.i = _v$45);\n            _v$46 !== _p$.n && className(_el$106, _p$.n = _v$46);\n            _v$47 !== _p$.s && className(_el$107, _p$.s = _v$47);\n            _v$48 !== _p$.h && className(_el$108, _p$.h = _v$48);\n            return _p$;\n          }, {\n            e: void 0,\n            t: void 0,\n            a: void 0,\n            o: void 0,\n            i: void 0,\n            n: void 0,\n            s: void 0,\n            h: void 0\n          });\n          createRenderEffect(() => _el$103.value = JSON.stringify(activeQueryStateData(), null, 2));\n          return _el$102;\n        }\n      }), _el$109);\n      insert(_el$110, createComponent(Explorer, {\n        label: \"Query\",\n        defaultExpanded: [\"Query\", \"queryKey\"],\n        get value() {\n          return activeQueryFresh();\n        }\n      }));\n      createRenderEffect((_p$) => {\n        var _v$49 = clsx(styles().detailsContainer, \"tsqd-query-details-container\"), _v$50 = clsx(styles().detailsHeader, \"tsqd-query-details-header\"), _v$51 = clsx(styles().detailsBody, \"tsqd-query-details-summary-container\"), _v$52 = clsx(styles().queryDetailsStatus, getQueryStatusColors()), _v$53 = clsx(styles().detailsHeader, \"tsqd-query-details-header\"), _v$54 = clsx(styles().actionsBody, \"tsqd-query-details-actions-container\"), _v$55 = clsx(css`\n                color: ${t2(colors.blue[600], colors.blue[400])};\n              `, \"tsqd-query-details-actions-btn\", \"tsqd-query-details-action-refetch\"), _v$56 = statusLabel() === \"fetching\", _v$57 = css`\n                background-color: ${t2(colors.blue[600], colors.blue[400])};\n              `, _v$58 = clsx(css`\n                color: ${t2(colors.yellow[600], colors.yellow[400])};\n              `, \"tsqd-query-details-actions-btn\", \"tsqd-query-details-action-invalidate\"), _v$59 = queryStatus() === \"pending\", _v$60 = css`\n                background-color: ${t2(colors.yellow[600], colors.yellow[400])};\n              `, _v$61 = clsx(css`\n                color: ${t2(colors.gray[600], colors.gray[300])};\n              `, \"tsqd-query-details-actions-btn\", \"tsqd-query-details-action-reset\"), _v$62 = queryStatus() === \"pending\", _v$63 = css`\n                background-color: ${t2(colors.gray[600], colors.gray[400])};\n              `, _v$64 = clsx(css`\n                color: ${t2(colors.pink[500], colors.pink[400])};\n              `, \"tsqd-query-details-actions-btn\", \"tsqd-query-details-action-remove\"), _v$65 = statusLabel() === \"fetching\", _v$66 = css`\n                background-color: ${t2(colors.pink[500], colors.pink[400])};\n              `, _v$67 = clsx(css`\n                color: ${t2(colors.cyan[500], colors.cyan[400])};\n              `, \"tsqd-query-details-actions-btn\", \"tsqd-query-details-action-loading\"), _v$68 = restoringLoading(), _v$69 = css`\n                background-color: ${t2(colors.cyan[500], colors.cyan[400])};\n              `, _v$70 = clsx(styles().detailsHeader, \"tsqd-query-details-header\"), _v$71 = clsx(styles().detailsHeader, \"tsqd-query-details-header\"), _v$72 = tokens.size[2];\n        _v$49 !== _p$.e && className(_el$65, _p$.e = _v$49);\n        _v$50 !== _p$.t && className(_el$66, _p$.t = _v$50);\n        _v$51 !== _p$.a && className(_el$67, _p$.a = _v$51);\n        _v$52 !== _p$.o && className(_el$71, _p$.o = _v$52);\n        _v$53 !== _p$.i && className(_el$78, _p$.i = _v$53);\n        _v$54 !== _p$.n && className(_el$79, _p$.n = _v$54);\n        _v$55 !== _p$.s && className(_el$80, _p$.s = _v$55);\n        _v$56 !== _p$.h && (_el$80.disabled = _p$.h = _v$56);\n        _v$57 !== _p$.r && className(_el$81, _p$.r = _v$57);\n        _v$58 !== _p$.d && className(_el$82, _p$.d = _v$58);\n        _v$59 !== _p$.l && (_el$82.disabled = _p$.l = _v$59);\n        _v$60 !== _p$.u && className(_el$83, _p$.u = _v$60);\n        _v$61 !== _p$.c && className(_el$84, _p$.c = _v$61);\n        _v$62 !== _p$.w && (_el$84.disabled = _p$.w = _v$62);\n        _v$63 !== _p$.m && className(_el$85, _p$.m = _v$63);\n        _v$64 !== _p$.f && className(_el$86, _p$.f = _v$64);\n        _v$65 !== _p$.y && (_el$86.disabled = _p$.y = _v$65);\n        _v$66 !== _p$.g && className(_el$87, _p$.g = _v$66);\n        _v$67 !== _p$.p && className(_el$88, _p$.p = _v$67);\n        _v$68 !== _p$.b && (_el$88.disabled = _p$.b = _v$68);\n        _v$69 !== _p$.T && className(_el$89, _p$.T = _v$69);\n        _v$70 !== _p$.A && className(_el$99, _p$.A = _v$70);\n        _v$71 !== _p$.O && className(_el$109, _p$.O = _v$71);\n        _v$72 !== _p$.I && setStyleProperty(_el$110, \"padding\", _p$.I = _v$72);\n        return _p$;\n      }, {\n        e: void 0,\n        t: void 0,\n        a: void 0,\n        o: void 0,\n        i: void 0,\n        n: void 0,\n        s: void 0,\n        h: void 0,\n        r: void 0,\n        d: void 0,\n        l: void 0,\n        u: void 0,\n        c: void 0,\n        w: void 0,\n        m: void 0,\n        f: void 0,\n        y: void 0,\n        g: void 0,\n        p: void 0,\n        b: void 0,\n        T: void 0,\n        A: void 0,\n        O: void 0,\n        I: void 0\n      });\n      return _el$65;\n    }\n  });\n};\nvar MutationDetails = () => {\n  const theme = useTheme();\n  const css = useQueryDevtoolsContext().shadowDOMTarget ? u.bind({\n    target: useQueryDevtoolsContext().shadowDOMTarget\n  }) : u;\n  const styles = createMemo(() => {\n    return theme() === \"dark\" ? darkStyles2(css) : lightStyles2(css);\n  });\n  const {\n    colors\n  } = tokens;\n  const t2 = (light, dark) => theme() === \"dark\" ? dark : light;\n  const isPaused = createSubscribeToMutationCacheBatcher((mutationCache) => {\n    const mutations = mutationCache().getAll();\n    const mutation = mutations.find((m) => m.mutationId === selectedMutationId());\n    if (!mutation) return false;\n    return mutation.state.isPaused;\n  });\n  const status = createSubscribeToMutationCacheBatcher((mutationCache) => {\n    const mutations = mutationCache().getAll();\n    const mutation = mutations.find((m) => m.mutationId === selectedMutationId());\n    if (!mutation) return \"idle\";\n    return mutation.state.status;\n  });\n  const color = createMemo(() => getMutationStatusColor({\n    isPaused: isPaused(),\n    status: status()\n  }));\n  const activeMutation = createSubscribeToMutationCacheBatcher((mutationCache) => mutationCache().getAll().find((mutation) => mutation.mutationId === selectedMutationId()), false);\n  const getQueryStatusColors = () => {\n    if (color() === \"gray\") {\n      return css`\n        background-color: ${t2(colors[color()][200], colors[color()][700])};\n        color: ${t2(colors[color()][700], colors[color()][300])};\n        border-color: ${t2(colors[color()][400], colors[color()][600])};\n      `;\n    }\n    return css`\n      background-color: ${t2(colors[color()][100], colors[color()][900])};\n      color: ${t2(colors[color()][700], colors[color()][300])};\n      border-color: ${t2(colors[color()][400], colors[color()][600])};\n    `;\n  };\n  return createComponent(Show, {\n    get when() {\n      return activeMutation();\n    },\n    get children() {\n      var _el$112 = _tmpl$38(), _el$113 = _el$112.firstChild, _el$114 = _el$113.nextSibling, _el$115 = _el$114.firstChild, _el$116 = _el$115.firstChild, _el$117 = _el$116.firstChild, _el$118 = _el$116.nextSibling, _el$119 = _el$115.nextSibling, _el$120 = _el$119.firstChild, _el$121 = _el$120.nextSibling, _el$122 = _el$114.nextSibling, _el$123 = _el$122.nextSibling, _el$124 = _el$123.nextSibling, _el$125 = _el$124.nextSibling, _el$126 = _el$125.nextSibling, _el$127 = _el$126.nextSibling, _el$128 = _el$127.nextSibling, _el$129 = _el$128.nextSibling;\n      insert(_el$117, createComponent(Show, {\n        get when() {\n          return activeMutation().options.mutationKey;\n        },\n        fallback: \"No mutationKey found\",\n        get children() {\n          return displayValue(activeMutation().options.mutationKey, true);\n        }\n      }));\n      insert(_el$118, createComponent(Show, {\n        get when() {\n          return color() === \"purple\";\n        },\n        children: \"pending\"\n      }), null);\n      insert(_el$118, createComponent(Show, {\n        get when() {\n          return color() !== \"purple\";\n        },\n        get children() {\n          return status();\n        }\n      }), null);\n      insert(_el$121, () => new Date(activeMutation().state.submittedAt).toLocaleTimeString());\n      insert(_el$123, createComponent(Explorer, {\n        label: \"Variables\",\n        defaultExpanded: [\"Variables\"],\n        get value() {\n          return activeMutation().state.variables;\n        }\n      }));\n      insert(_el$125, createComponent(Explorer, {\n        label: \"Context\",\n        defaultExpanded: [\"Context\"],\n        get value() {\n          return activeMutation().state.context;\n        }\n      }));\n      insert(_el$127, createComponent(Explorer, {\n        label: \"Data\",\n        defaultExpanded: [\"Data\"],\n        get value() {\n          return activeMutation().state.data;\n        }\n      }));\n      insert(_el$129, createComponent(Explorer, {\n        label: \"Mutation\",\n        defaultExpanded: [\"Mutation\"],\n        get value() {\n          return activeMutation();\n        }\n      }));\n      createRenderEffect((_p$) => {\n        var _v$73 = clsx(styles().detailsContainer, \"tsqd-query-details-container\"), _v$74 = clsx(styles().detailsHeader, \"tsqd-query-details-header\"), _v$75 = clsx(styles().detailsBody, \"tsqd-query-details-summary-container\"), _v$76 = clsx(styles().queryDetailsStatus, getQueryStatusColors()), _v$77 = clsx(styles().detailsHeader, \"tsqd-query-details-header\"), _v$78 = tokens.size[2], _v$79 = clsx(styles().detailsHeader, \"tsqd-query-details-header\"), _v$80 = tokens.size[2], _v$81 = clsx(styles().detailsHeader, \"tsqd-query-details-header\"), _v$82 = tokens.size[2], _v$83 = clsx(styles().detailsHeader, \"tsqd-query-details-header\"), _v$84 = tokens.size[2];\n        _v$73 !== _p$.e && className(_el$112, _p$.e = _v$73);\n        _v$74 !== _p$.t && className(_el$113, _p$.t = _v$74);\n        _v$75 !== _p$.a && className(_el$114, _p$.a = _v$75);\n        _v$76 !== _p$.o && className(_el$118, _p$.o = _v$76);\n        _v$77 !== _p$.i && className(_el$122, _p$.i = _v$77);\n        _v$78 !== _p$.n && setStyleProperty(_el$123, \"padding\", _p$.n = _v$78);\n        _v$79 !== _p$.s && className(_el$124, _p$.s = _v$79);\n        _v$80 !== _p$.h && setStyleProperty(_el$125, \"padding\", _p$.h = _v$80);\n        _v$81 !== _p$.r && className(_el$126, _p$.r = _v$81);\n        _v$82 !== _p$.d && setStyleProperty(_el$127, \"padding\", _p$.d = _v$82);\n        _v$83 !== _p$.l && className(_el$128, _p$.l = _v$83);\n        _v$84 !== _p$.u && setStyleProperty(_el$129, \"padding\", _p$.u = _v$84);\n        return _p$;\n      }, {\n        e: void 0,\n        t: void 0,\n        a: void 0,\n        o: void 0,\n        i: void 0,\n        n: void 0,\n        s: void 0,\n        h: void 0,\n        r: void 0,\n        d: void 0,\n        l: void 0,\n        u: void 0\n      });\n      return _el$112;\n    }\n  });\n};\nvar queryCacheMap = /* @__PURE__ */ new Map();\nvar setupQueryCacheSubscription = () => {\n  const queryCache = createMemo(() => {\n    const client = useQueryDevtoolsContext().client;\n    return client.getQueryCache();\n  });\n  const unsubscribe = queryCache().subscribe((q) => {\n    batch(() => {\n      for (const [callback, value] of queryCacheMap.entries()) {\n        if (!value.shouldUpdate(q)) continue;\n        value.setter(callback(queryCache));\n      }\n    });\n  });\n  onCleanup(() => {\n    queryCacheMap.clear();\n    unsubscribe();\n  });\n  return unsubscribe;\n};\nvar createSubscribeToQueryCacheBatcher = (callback, equalityCheck = true, shouldUpdate = () => true) => {\n  const queryCache = createMemo(() => {\n    const client = useQueryDevtoolsContext().client;\n    return client.getQueryCache();\n  });\n  const [value, setValue] = createSignal(callback(queryCache), !equalityCheck ? {\n    equals: false\n  } : void 0);\n  createEffect(() => {\n    setValue(callback(queryCache));\n  });\n  queryCacheMap.set(callback, {\n    setter: setValue,\n    shouldUpdate\n  });\n  onCleanup(() => {\n    queryCacheMap.delete(callback);\n  });\n  return value;\n};\nvar mutationCacheMap = /* @__PURE__ */ new Map();\nvar setupMutationCacheSubscription = () => {\n  const mutationCache = createMemo(() => {\n    const client = useQueryDevtoolsContext().client;\n    return client.getMutationCache();\n  });\n  const unsubscribe = mutationCache().subscribe(() => {\n    for (const [callback, setter] of mutationCacheMap.entries()) {\n      queueMicrotask(() => {\n        setter(callback(mutationCache));\n      });\n    }\n  });\n  onCleanup(() => {\n    mutationCacheMap.clear();\n    unsubscribe();\n  });\n  return unsubscribe;\n};\nvar createSubscribeToMutationCacheBatcher = (callback, equalityCheck = true) => {\n  const mutationCache = createMemo(() => {\n    const client = useQueryDevtoolsContext().client;\n    return client.getMutationCache();\n  });\n  const [value, setValue] = createSignal(callback(mutationCache), !equalityCheck ? {\n    equals: false\n  } : void 0);\n  createEffect(() => {\n    setValue(callback(mutationCache));\n  });\n  mutationCacheMap.set(callback, setValue);\n  onCleanup(() => {\n    mutationCacheMap.delete(callback);\n  });\n  return value;\n};\nvar DEV_TOOLS_EVENT = \"@tanstack/query-devtools-event\";\nvar sendDevToolsEvent = ({\n  type,\n  queryHash,\n  metadata\n}) => {\n  const event = new CustomEvent(DEV_TOOLS_EVENT, {\n    detail: {\n      type,\n      queryHash,\n      metadata\n    },\n    bubbles: true,\n    cancelable: true\n  });\n  window.dispatchEvent(event);\n};\nvar stylesFactory2 = (theme, css) => {\n  const {\n    colors,\n    font,\n    size: size3,\n    alpha,\n    shadow,\n    border\n  } = tokens;\n  const t2 = (light, dark) => theme === \"light\" ? light : dark;\n  return {\n    devtoolsBtn: css`\n      z-index: 100000;\n      position: fixed;\n      padding: 4px;\n      text-align: left;\n\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      border-radius: 9999px;\n      box-shadow: ${shadow.md()};\n      overflow: hidden;\n\n      & div {\n        position: absolute;\n        top: -8px;\n        left: -8px;\n        right: -8px;\n        bottom: -8px;\n        border-radius: 9999px;\n        -webkit-transform: translateZ(0);\n        transform: translateZ(0);\n\n        & svg {\n          position: absolute;\n          width: 100%;\n          height: 100%;\n        }\n        filter: blur(6px) saturate(1.2) contrast(1.1);\n      }\n\n      &:focus-within {\n        outline-offset: 2px;\n        outline: 3px solid ${colors.green[600]};\n      }\n\n      & button {\n        position: relative;\n        z-index: 1;\n        padding: 0;\n        border-radius: 9999px;\n        background-color: transparent;\n        border: none;\n        height: 40px;\n        display: flex;\n        width: 40px;\n        overflow: hidden;\n        cursor: pointer;\n        outline: none;\n        & svg {\n          position: absolute;\n          width: 100%;\n          height: 100%;\n        }\n      }\n    `,\n    panel: css`\n      position: fixed;\n      z-index: 9999;\n      display: flex;\n      gap: ${tokens.size[0.5]};\n      & * {\n        box-sizing: border-box;\n        text-transform: none;\n      }\n\n      & *::-webkit-scrollbar {\n        width: 7px;\n      }\n\n      & *::-webkit-scrollbar-track {\n        background: transparent;\n      }\n\n      & *::-webkit-scrollbar-thumb {\n        background: ${t2(colors.gray[300], colors.darkGray[200])};\n      }\n\n      & *::-webkit-scrollbar-thumb:hover {\n        background: ${t2(colors.gray[400], colors.darkGray[300])};\n      }\n    `,\n    parentPanel: css`\n      z-index: 9999;\n      display: flex;\n      height: 100%;\n      gap: ${tokens.size[0.5]};\n      & * {\n        box-sizing: border-box;\n        text-transform: none;\n      }\n\n      & *::-webkit-scrollbar {\n        width: 7px;\n      }\n\n      & *::-webkit-scrollbar-track {\n        background: transparent;\n      }\n\n      & *::-webkit-scrollbar-thumb {\n        background: ${t2(colors.gray[300], colors.darkGray[200])};\n      }\n\n      & *::-webkit-scrollbar-thumb:hover {\n        background: ${t2(colors.gray[400], colors.darkGray[300])};\n      }\n    `,\n    \"devtoolsBtn-position-bottom-right\": css`\n      bottom: 12px;\n      right: 12px;\n    `,\n    \"devtoolsBtn-position-bottom-left\": css`\n      bottom: 12px;\n      left: 12px;\n    `,\n    \"devtoolsBtn-position-top-left\": css`\n      top: 12px;\n      left: 12px;\n    `,\n    \"devtoolsBtn-position-top-right\": css`\n      top: 12px;\n      right: 12px;\n    `,\n    \"devtoolsBtn-position-relative\": css`\n      position: relative;\n    `,\n    \"panel-position-top\": css`\n      top: 0;\n      right: 0;\n      left: 0;\n      max-height: 90%;\n      min-height: ${size3[14]};\n      border-bottom: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n    `,\n    \"panel-position-bottom\": css`\n      bottom: 0;\n      right: 0;\n      left: 0;\n      max-height: 90%;\n      min-height: ${size3[14]};\n      border-top: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n    `,\n    \"panel-position-right\": css`\n      bottom: 0;\n      right: 0;\n      top: 0;\n      border-left: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      max-width: 90%;\n    `,\n    \"panel-position-left\": css`\n      bottom: 0;\n      left: 0;\n      top: 0;\n      border-right: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      max-width: 90%;\n    `,\n    closeBtn: css`\n      position: absolute;\n      cursor: pointer;\n      z-index: 5;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      outline: none;\n      background-color: ${t2(colors.gray[50], colors.darkGray[700])};\n      &:hover {\n        background-color: ${t2(colors.gray[200], colors.darkGray[500])};\n      }\n      &:focus-visible {\n        outline: 2px solid ${colors.blue[600]};\n      }\n      & svg {\n        color: ${t2(colors.gray[600], colors.gray[400])};\n        width: ${size3[2]};\n        height: ${size3[2]};\n      }\n    `,\n    \"closeBtn-position-top\": css`\n      bottom: 0;\n      right: ${size3[2]};\n      transform: translate(0, 100%);\n      border-right: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-left: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-top: none;\n      border-bottom: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-radius: 0px 0px ${border.radius.sm} ${border.radius.sm};\n      padding: ${size3[0.5]} ${size3[1.5]} ${size3[1]} ${size3[1.5]};\n\n      &::after {\n        content: ' ';\n        position: absolute;\n        bottom: 100%;\n        left: -${size3[2.5]};\n        height: ${size3[1.5]};\n        width: calc(100% + ${size3[5]});\n      }\n\n      & svg {\n        transform: rotate(180deg);\n      }\n    `,\n    \"closeBtn-position-bottom\": css`\n      top: 0;\n      right: ${size3[2]};\n      transform: translate(0, -100%);\n      border-right: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-left: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-top: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-bottom: none;\n      border-radius: ${border.radius.sm} ${border.radius.sm} 0px 0px;\n      padding: ${size3[1]} ${size3[1.5]} ${size3[0.5]} ${size3[1.5]};\n\n      &::after {\n        content: ' ';\n        position: absolute;\n        top: 100%;\n        left: -${size3[2.5]};\n        height: ${size3[1.5]};\n        width: calc(100% + ${size3[5]});\n      }\n    `,\n    \"closeBtn-position-right\": css`\n      bottom: ${size3[2]};\n      left: 0;\n      transform: translate(-100%, 0);\n      border-right: none;\n      border-left: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-top: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-bottom: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-radius: ${border.radius.sm} 0px 0px ${border.radius.sm};\n      padding: ${size3[1.5]} ${size3[0.5]} ${size3[1.5]} ${size3[1]};\n\n      &::after {\n        content: ' ';\n        position: absolute;\n        left: 100%;\n        height: calc(100% + ${size3[5]});\n        width: ${size3[1.5]};\n      }\n\n      & svg {\n        transform: rotate(-90deg);\n      }\n    `,\n    \"closeBtn-position-left\": css`\n      bottom: ${size3[2]};\n      right: 0;\n      transform: translate(100%, 0);\n      border-left: none;\n      border-right: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-top: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-bottom: ${t2(colors.gray[400], colors.darkGray[300])} 1px solid;\n      border-radius: 0px ${border.radius.sm} ${border.radius.sm} 0px;\n      padding: ${size3[1.5]} ${size3[1]} ${size3[1.5]} ${size3[0.5]};\n\n      &::after {\n        content: ' ';\n        position: absolute;\n        right: 100%;\n        height: calc(100% + ${size3[5]});\n        width: ${size3[1.5]};\n      }\n\n      & svg {\n        transform: rotate(90deg);\n      }\n    `,\n    queriesContainer: css`\n      flex: 1 1 700px;\n      background-color: ${t2(colors.gray[50], colors.darkGray[700])};\n      display: flex;\n      flex-direction: column;\n      & * {\n        font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;\n      }\n    `,\n    dragHandle: css`\n      position: absolute;\n      transition: background-color 0.125s ease;\n      &:hover {\n        background-color: ${colors.purple[400]}${t2(\"\", alpha[90])};\n      }\n      &:focus {\n        outline: none;\n        background-color: ${colors.purple[400]}${t2(\"\", alpha[90])};\n      }\n      &:focus-visible {\n        outline: 2px solid ${colors.blue[800]};\n        outline-offset: -2px;\n        background-color: ${colors.purple[400]}${t2(\"\", alpha[90])};\n      }\n      z-index: 4;\n    `,\n    \"dragHandle-position-top\": css`\n      bottom: 0;\n      width: 100%;\n      height: 3px;\n      cursor: ns-resize;\n    `,\n    \"dragHandle-position-bottom\": css`\n      top: 0;\n      width: 100%;\n      height: 3px;\n      cursor: ns-resize;\n    `,\n    \"dragHandle-position-right\": css`\n      left: 0;\n      width: 3px;\n      height: 100%;\n      cursor: ew-resize;\n    `,\n    \"dragHandle-position-left\": css`\n      right: 0;\n      width: 3px;\n      height: 100%;\n      cursor: ew-resize;\n    `,\n    row: css`\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      padding: ${tokens.size[2]} ${tokens.size[2.5]};\n      gap: ${tokens.size[2.5]};\n      border-bottom: ${t2(colors.gray[300], colors.darkGray[500])} 1px solid;\n      align-items: center;\n      & > button {\n        padding: 0;\n        background: transparent;\n        border: none;\n        display: flex;\n        gap: ${size3[0.5]};\n        flex-direction: column;\n      }\n    `,\n    logoAndToggleContainer: css`\n      display: flex;\n      gap: ${tokens.size[3]};\n      align-items: center;\n    `,\n    logo: css`\n      cursor: pointer;\n      display: flex;\n      flex-direction: column;\n      background-color: transparent;\n      border: none;\n      gap: ${tokens.size[0.5]};\n      padding: 0px;\n      &:hover {\n        opacity: 0.7;\n      }\n      &:focus-visible {\n        outline-offset: 4px;\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${colors.blue[800]};\n      }\n    `,\n    tanstackLogo: css`\n      font-size: ${font.size.md};\n      font-weight: ${font.weight.bold};\n      line-height: ${font.lineHeight.xs};\n      white-space: nowrap;\n      color: ${t2(colors.gray[600], colors.gray[300])};\n    `,\n    queryFlavorLogo: css`\n      font-weight: ${font.weight.semibold};\n      font-size: ${font.size.xs};\n      background: linear-gradient(\n        to right,\n        ${t2(\"#ea4037, #ff9b11\", \"#dd524b, #e9a03b\")}\n      );\n      background-clip: text;\n      -webkit-background-clip: text;\n      line-height: 1;\n      -webkit-text-fill-color: transparent;\n      white-space: nowrap;\n    `,\n    queryStatusContainer: css`\n      display: flex;\n      gap: ${tokens.size[2]};\n      height: min-content;\n    `,\n    queryStatusTag: css`\n      display: flex;\n      gap: ${tokens.size[1.5]};\n      box-sizing: border-box;\n      height: ${tokens.size[6.5]};\n      background: ${t2(colors.gray[50], colors.darkGray[500])};\n      color: ${t2(colors.gray[700], colors.gray[300])};\n      border-radius: ${tokens.border.radius.sm};\n      font-size: ${font.size.sm};\n      padding: ${tokens.size[1]};\n      padding-left: ${tokens.size[1.5]};\n      align-items: center;\n      font-weight: ${font.weight.medium};\n      border: ${t2(\"1px solid \" + colors.gray[300], \"1px solid transparent\")};\n      user-select: none;\n      position: relative;\n      &:focus-visible {\n        outline-offset: 2px;\n        outline: 2px solid ${colors.blue[800]};\n      }\n    `,\n    queryStatusTagLabel: css`\n      font-size: ${font.size.xs};\n    `,\n    queryStatusCount: css`\n      font-size: ${font.size.xs};\n      padding: 0 5px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      color: ${t2(colors.gray[500], colors.gray[400])};\n      background-color: ${t2(colors.gray[200], colors.darkGray[300])};\n      border-radius: 2px;\n      font-variant-numeric: tabular-nums;\n      height: ${tokens.size[4.5]};\n    `,\n    statusTooltip: css`\n      position: absolute;\n      z-index: 1;\n      background-color: ${t2(colors.gray[50], colors.darkGray[500])};\n      top: 100%;\n      left: 50%;\n      transform: translate(-50%, calc(${tokens.size[2]}));\n      padding: ${tokens.size[0.5]} ${tokens.size[2]};\n      border-radius: ${tokens.border.radius.sm};\n      font-size: ${font.size.xs};\n      border: 1px solid ${t2(colors.gray[400], colors.gray[600])};\n      color: ${t2(colors[\"gray\"][600], colors[\"gray\"][300])};\n\n      &::before {\n        top: 0px;\n        content: ' ';\n        display: block;\n        left: 50%;\n        transform: translate(-50%, -100%);\n        position: absolute;\n        border-color: transparent transparent\n          ${t2(colors.gray[400], colors.gray[600])} transparent;\n        border-style: solid;\n        border-width: 7px;\n        /* transform: rotate(180deg); */\n      }\n\n      &::after {\n        top: 0px;\n        content: ' ';\n        display: block;\n        left: 50%;\n        transform: translate(-50%, calc(-100% + 2px));\n        position: absolute;\n        border-color: transparent transparent\n          ${t2(colors.gray[100], colors.darkGray[500])} transparent;\n        border-style: solid;\n        border-width: 7px;\n      }\n    `,\n    filtersContainer: css`\n      display: flex;\n      gap: ${tokens.size[2]};\n      & > button {\n        cursor: pointer;\n        padding: ${tokens.size[0.5]} ${tokens.size[1.5]} ${tokens.size[0.5]}\n          ${tokens.size[2]};\n        border-radius: ${tokens.border.radius.sm};\n        background-color: ${t2(colors.gray[100], colors.darkGray[400])};\n        border: 1px solid ${t2(colors.gray[300], colors.darkGray[200])};\n        color: ${t2(colors.gray[700], colors.gray[300])};\n        font-size: ${font.size.xs};\n        display: flex;\n        align-items: center;\n        line-height: ${font.lineHeight.sm};\n        gap: ${tokens.size[1.5]};\n        max-width: 160px;\n        &:focus-visible {\n          outline-offset: 2px;\n          border-radius: ${border.radius.xs};\n          outline: 2px solid ${colors.blue[800]};\n        }\n        & svg {\n          width: ${tokens.size[3]};\n          height: ${tokens.size[3]};\n          color: ${t2(colors.gray[500], colors.gray[400])};\n        }\n      }\n    `,\n    filterInput: css`\n      padding: ${size3[0.5]} ${size3[2]};\n      border-radius: ${tokens.border.radius.sm};\n      background-color: ${t2(colors.gray[100], colors.darkGray[400])};\n      display: flex;\n      box-sizing: content-box;\n      align-items: center;\n      gap: ${tokens.size[1.5]};\n      max-width: 160px;\n      min-width: 100px;\n      border: 1px solid ${t2(colors.gray[300], colors.darkGray[200])};\n      height: min-content;\n      color: ${t2(colors.gray[600], colors.gray[400])};\n      & > svg {\n        width: ${size3[3]};\n        height: ${size3[3]};\n      }\n      & input {\n        font-size: ${font.size.xs};\n        width: 100%;\n        background-color: ${t2(colors.gray[100], colors.darkGray[400])};\n        border: none;\n        padding: 0;\n        line-height: ${font.lineHeight.sm};\n        color: ${t2(colors.gray[700], colors.gray[300])};\n        &::placeholder {\n          color: ${t2(colors.gray[700], colors.gray[300])};\n        }\n        &:focus {\n          outline: none;\n        }\n      }\n\n      &:focus-within {\n        outline-offset: 2px;\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${colors.blue[800]};\n      }\n    `,\n    filterSelect: css`\n      padding: ${tokens.size[0.5]} ${tokens.size[2]};\n      border-radius: ${tokens.border.radius.sm};\n      background-color: ${t2(colors.gray[100], colors.darkGray[400])};\n      display: flex;\n      align-items: center;\n      gap: ${tokens.size[1.5]};\n      box-sizing: content-box;\n      max-width: 160px;\n      border: 1px solid ${t2(colors.gray[300], colors.darkGray[200])};\n      height: min-content;\n      & > svg {\n        color: ${t2(colors.gray[600], colors.gray[400])};\n        width: ${tokens.size[2]};\n        height: ${tokens.size[2]};\n      }\n      & > select {\n        appearance: none;\n        color: ${t2(colors.gray[700], colors.gray[300])};\n        min-width: 100px;\n        line-height: ${font.lineHeight.sm};\n        font-size: ${font.size.xs};\n        background-color: ${t2(colors.gray[100], colors.darkGray[400])};\n        border: none;\n        &:focus {\n          outline: none;\n        }\n      }\n      &:focus-within {\n        outline-offset: 2px;\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${colors.blue[800]};\n      }\n    `,\n    actionsContainer: css`\n      display: flex;\n      gap: ${tokens.size[2]};\n    `,\n    actionsBtn: css`\n      border-radius: ${tokens.border.radius.sm};\n      background-color: ${t2(colors.gray[100], colors.darkGray[400])};\n      border: 1px solid ${t2(colors.gray[300], colors.darkGray[200])};\n      width: ${tokens.size[6.5]};\n      height: ${tokens.size[6.5]};\n      justify-content: center;\n      display: flex;\n      align-items: center;\n      gap: ${tokens.size[1.5]};\n      max-width: 160px;\n      cursor: pointer;\n      padding: 0;\n      &:hover {\n        background-color: ${t2(colors.gray[200], colors.darkGray[500])};\n      }\n      & svg {\n        color: ${t2(colors.gray[700], colors.gray[300])};\n        width: ${tokens.size[3]};\n        height: ${tokens.size[3]};\n      }\n      &:focus-visible {\n        outline-offset: 2px;\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${colors.blue[800]};\n      }\n    `,\n    actionsBtnOffline: css`\n      & svg {\n        stroke: ${t2(colors.yellow[700], colors.yellow[500])};\n        fill: ${t2(colors.yellow[700], colors.yellow[500])};\n      }\n    `,\n    overflowQueryContainer: css`\n      flex: 1;\n      overflow-y: auto;\n      & > div {\n        display: flex;\n        flex-direction: column;\n      }\n    `,\n    queryRow: css`\n      display: flex;\n      align-items: center;\n      padding: 0;\n      border: none;\n      cursor: pointer;\n      color: ${t2(colors.gray[700], colors.gray[300])};\n      background-color: ${t2(colors.gray[50], colors.darkGray[700])};\n      line-height: 1;\n      &:focus {\n        outline: none;\n      }\n      &:focus-visible {\n        outline-offset: -2px;\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${colors.blue[800]};\n      }\n      &:hover .tsqd-query-hash {\n        background-color: ${t2(colors.gray[200], colors.darkGray[600])};\n      }\n\n      & .tsqd-query-observer-count {\n        padding: 0 ${tokens.size[1]};\n        user-select: none;\n        min-width: ${tokens.size[6.5]};\n        align-self: stretch;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        font-size: ${font.size.xs};\n        font-weight: ${font.weight.medium};\n        border-bottom-width: 1px;\n        border-bottom-style: solid;\n        border-bottom: 1px solid ${t2(colors.gray[300], colors.darkGray[700])};\n      }\n      & .tsqd-query-hash {\n        user-select: text;\n        font-size: ${font.size.xs};\n        display: flex;\n        align-items: center;\n        min-height: ${tokens.size[6]};\n        flex: 1;\n        padding: ${tokens.size[1]} ${tokens.size[2]};\n        font-family:\n          ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n          'Liberation Mono', 'Courier New', monospace;\n        border-bottom: 1px solid ${t2(colors.gray[300], colors.darkGray[400])};\n        text-align: left;\n        text-overflow: clip;\n        word-break: break-word;\n      }\n\n      & .tsqd-query-disabled-indicator {\n        align-self: stretch;\n        display: flex;\n        align-items: center;\n        padding: 0 ${tokens.size[2]};\n        color: ${t2(colors.gray[800], colors.gray[300])};\n        background-color: ${t2(colors.gray[300], colors.darkGray[600])};\n        border-bottom: 1px solid ${t2(colors.gray[300], colors.darkGray[400])};\n        font-size: ${font.size.xs};\n      }\n\n      & .tsqd-query-static-indicator {\n        align-self: stretch;\n        display: flex;\n        align-items: center;\n        padding: 0 ${tokens.size[2]};\n        color: ${t2(colors.teal[800], colors.teal[300])};\n        background-color: ${t2(colors.teal[100], colors.teal[900])};\n        border-bottom: 1px solid ${t2(colors.teal[300], colors.teal[700])};\n        font-size: ${font.size.xs};\n      }\n    `,\n    selectedQueryRow: css`\n      background-color: ${t2(colors.gray[200], colors.darkGray[500])};\n    `,\n    detailsContainer: css`\n      flex: 1 1 700px;\n      background-color: ${t2(colors.gray[50], colors.darkGray[700])};\n      color: ${t2(colors.gray[700], colors.gray[300])};\n      font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;\n      display: flex;\n      flex-direction: column;\n      overflow-y: auto;\n      display: flex;\n      text-align: left;\n    `,\n    detailsHeader: css`\n      font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;\n      position: sticky;\n      top: 0;\n      z-index: 2;\n      background-color: ${t2(colors.gray[200], colors.darkGray[600])};\n      padding: ${tokens.size[1.5]} ${tokens.size[2]};\n      font-weight: ${font.weight.medium};\n      font-size: ${font.size.xs};\n      line-height: ${font.lineHeight.xs};\n      text-align: left;\n    `,\n    detailsBody: css`\n      margin: ${tokens.size[1.5]} 0px ${tokens.size[2]} 0px;\n      & > div {\n        display: flex;\n        align-items: stretch;\n        padding: 0 ${tokens.size[2]};\n        line-height: ${font.lineHeight.sm};\n        justify-content: space-between;\n        & > span {\n          font-size: ${font.size.xs};\n        }\n        & > span:nth-child(2) {\n          font-variant-numeric: tabular-nums;\n        }\n      }\n\n      & > div:first-child {\n        margin-bottom: ${tokens.size[1.5]};\n      }\n\n      & code {\n        font-family:\n          ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n          'Liberation Mono', 'Courier New', monospace;\n        margin: 0;\n        font-size: ${font.size.xs};\n        line-height: ${font.lineHeight.xs};\n        max-width: 100%;\n        white-space: pre-wrap;\n        overflow-wrap: anywhere;\n        word-break: break-word;\n      }\n\n      & pre {\n        margin: 0;\n        display: flex;\n        align-items: center;\n      }\n    `,\n    queryDetailsStatus: css`\n      border: 1px solid ${colors.darkGray[200]};\n      border-radius: ${tokens.border.radius.sm};\n      font-weight: ${font.weight.medium};\n      padding: ${tokens.size[1]} ${tokens.size[2.5]};\n    `,\n    actionsBody: css`\n      flex-wrap: wrap;\n      margin: ${tokens.size[2]} 0px ${tokens.size[2]} 0px;\n      display: flex;\n      gap: ${tokens.size[2]};\n      padding: 0px ${tokens.size[2]};\n      & > button {\n        font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;\n        font-size: ${font.size.xs};\n        padding: ${tokens.size[1]} ${tokens.size[2]};\n        display: flex;\n        border-radius: ${tokens.border.radius.sm};\n        background-color: ${t2(colors.gray[100], colors.darkGray[600])};\n        border: 1px solid ${t2(colors.gray[300], colors.darkGray[400])};\n        align-items: center;\n        gap: ${tokens.size[2]};\n        font-weight: ${font.weight.medium};\n        line-height: ${font.lineHeight.xs};\n        cursor: pointer;\n        &:focus-visible {\n          outline-offset: 2px;\n          border-radius: ${border.radius.xs};\n          outline: 2px solid ${colors.blue[800]};\n        }\n        &:hover {\n          background-color: ${t2(colors.gray[200], colors.darkGray[500])};\n        }\n\n        &:disabled {\n          opacity: 0.6;\n          cursor: not-allowed;\n        }\n\n        & > span {\n          width: ${size3[1.5]};\n          height: ${size3[1.5]};\n          border-radius: ${tokens.border.radius.full};\n        }\n      }\n    `,\n    actionsSelect: css`\n      font-size: ${font.size.xs};\n      padding: ${tokens.size[0.5]} ${tokens.size[2]};\n      display: flex;\n      border-radius: ${tokens.border.radius.sm};\n      overflow: hidden;\n      background-color: ${t2(colors.gray[100], colors.darkGray[600])};\n      border: 1px solid ${t2(colors.gray[300], colors.darkGray[400])};\n      align-items: center;\n      gap: ${tokens.size[2]};\n      font-weight: ${font.weight.medium};\n      line-height: ${font.lineHeight.sm};\n      color: ${t2(colors.red[500], colors.red[400])};\n      cursor: pointer;\n      position: relative;\n      &:hover {\n        background-color: ${t2(colors.gray[200], colors.darkGray[500])};\n      }\n      & > span {\n        width: ${size3[1.5]};\n        height: ${size3[1.5]};\n        border-radius: ${tokens.border.radius.full};\n      }\n      &:focus-within {\n        outline-offset: 2px;\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${colors.blue[800]};\n      }\n      & select {\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 100%;\n        appearance: none;\n        background-color: transparent;\n        border: none;\n        color: transparent;\n        outline: none;\n      }\n\n      & svg path {\n        stroke: ${tokens.colors.red[400]};\n      }\n      & svg {\n        width: ${tokens.size[2]};\n        height: ${tokens.size[2]};\n      }\n    `,\n    settingsMenu: css`\n      display: flex;\n      & * {\n        font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;\n      }\n      flex-direction: column;\n      gap: ${size3[0.5]};\n      border-radius: ${tokens.border.radius.sm};\n      border: 1px solid ${t2(colors.gray[300], colors.gray[700])};\n      background-color: ${t2(colors.gray[50], colors.darkGray[600])};\n      font-size: ${font.size.xs};\n      color: ${t2(colors.gray[700], colors.gray[300])};\n      z-index: 99999;\n      min-width: 120px;\n      padding: ${size3[0.5]};\n    `,\n    settingsSubTrigger: css`\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      border-radius: ${tokens.border.radius.xs};\n      padding: ${tokens.size[1]} ${tokens.size[1]};\n      cursor: pointer;\n      background-color: transparent;\n      border: none;\n      color: ${t2(colors.gray[700], colors.gray[300])};\n      & svg {\n        color: ${t2(colors.gray[600], colors.gray[400])};\n        transform: rotate(-90deg);\n        width: ${tokens.size[2]};\n        height: ${tokens.size[2]};\n      }\n      &:hover {\n        background-color: ${t2(colors.gray[200], colors.darkGray[500])};\n      }\n      &:focus-visible {\n        outline-offset: 2px;\n        outline: 2px solid ${colors.blue[800]};\n      }\n      &.data-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n      }\n    `,\n    settingsMenuHeader: css`\n      padding: ${tokens.size[1]} ${tokens.size[1]};\n      font-weight: ${font.weight.medium};\n      border-bottom: 1px solid ${t2(colors.gray[300], colors.darkGray[400])};\n      color: ${t2(colors.gray[500], colors.gray[400])};\n      font-size: ${font.size[\"xs\"]};\n    `,\n    settingsSubButton: css`\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      color: ${t2(colors.gray[700], colors.gray[300])};\n      font-size: ${font.size[\"xs\"]};\n      border-radius: ${tokens.border.radius.xs};\n      padding: ${tokens.size[1]} ${tokens.size[1]};\n      cursor: pointer;\n      background-color: transparent;\n      border: none;\n      & svg {\n        color: ${t2(colors.gray[600], colors.gray[400])};\n      }\n      &:hover {\n        background-color: ${t2(colors.gray[200], colors.darkGray[500])};\n      }\n      &:focus-visible {\n        outline-offset: 2px;\n        outline: 2px solid ${colors.blue[800]};\n      }\n      &[data-checked] {\n        background-color: ${t2(colors.purple[100], colors.purple[900])};\n        color: ${t2(colors.purple[700], colors.purple[300])};\n        & svg {\n          color: ${t2(colors.purple[700], colors.purple[300])};\n        }\n        &:hover {\n          background-color: ${t2(colors.purple[100], colors.purple[900])};\n        }\n      }\n    `,\n    viewToggle: css`\n      border-radius: ${tokens.border.radius.sm};\n      background-color: ${t2(colors.gray[200], colors.darkGray[600])};\n      border: 1px solid ${t2(colors.gray[300], colors.darkGray[200])};\n      display: flex;\n      padding: 0;\n      font-size: ${font.size.xs};\n      color: ${t2(colors.gray[700], colors.gray[300])};\n      overflow: hidden;\n\n      &:has(:focus-visible) {\n        outline: 2px solid ${colors.blue[800]};\n      }\n\n      & .tsqd-radio-toggle {\n        opacity: 0.5;\n        display: flex;\n        & label {\n          display: flex;\n          align-items: center;\n          cursor: pointer;\n          line-height: ${font.lineHeight.md};\n        }\n\n        & label:hover {\n          background-color: ${t2(colors.gray[100], colors.darkGray[500])};\n        }\n      }\n\n      & > [data-checked] {\n        opacity: 1;\n        background-color: ${t2(colors.gray[100], colors.darkGray[400])};\n        & label:hover {\n          background-color: ${t2(colors.gray[100], colors.darkGray[400])};\n        }\n      }\n\n      & .tsqd-radio-toggle:first-child {\n        & label {\n          padding: 0 ${tokens.size[1.5]} 0 ${tokens.size[2]};\n        }\n        border-right: 1px solid ${t2(colors.gray[300], colors.darkGray[200])};\n      }\n\n      & .tsqd-radio-toggle:nth-child(2) {\n        & label {\n          padding: 0 ${tokens.size[2]} 0 ${tokens.size[1.5]};\n        }\n      }\n    `,\n    devtoolsEditForm: css`\n      padding: ${size3[2]};\n      & > [data-error='true'] {\n        outline: 2px solid ${t2(colors.red[200], colors.red[800])};\n        outline-offset: 2px;\n        border-radius: ${border.radius.xs};\n      }\n    `,\n    devtoolsEditTextarea: css`\n      width: 100%;\n      max-height: 500px;\n      font-family: 'Fira Code', monospace;\n      font-size: ${font.size.xs};\n      border-radius: ${border.radius.sm};\n      field-sizing: content;\n      padding: ${size3[2]};\n      background-color: ${t2(colors.gray[100], colors.darkGray[800])};\n      color: ${t2(colors.gray[900], colors.gray[100])};\n      border: 1px solid ${t2(colors.gray[200], colors.gray[700])};\n      resize: none;\n      &:focus {\n        outline-offset: 2px;\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${t2(colors.blue[200], colors.blue[800])};\n      }\n    `,\n    devtoolsEditFormActions: css`\n      display: flex;\n      justify-content: space-between;\n      gap: ${size3[2]};\n      align-items: center;\n      padding-top: ${size3[1]};\n      font-size: ${font.size.xs};\n    `,\n    devtoolsEditFormError: css`\n      color: ${t2(colors.red[700], colors.red[500])};\n    `,\n    devtoolsEditFormActionContainer: css`\n      display: flex;\n      gap: ${size3[2]};\n    `,\n    devtoolsEditFormAction: css`\n      font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;\n      font-size: ${font.size.xs};\n      padding: ${size3[1]} ${tokens.size[2]};\n      display: flex;\n      border-radius: ${border.radius.sm};\n      background-color: ${t2(colors.gray[100], colors.darkGray[600])};\n      border: 1px solid ${t2(colors.gray[300], colors.darkGray[400])};\n      align-items: center;\n      gap: ${size3[2]};\n      font-weight: ${font.weight.medium};\n      line-height: ${font.lineHeight.xs};\n      cursor: pointer;\n      &:focus-visible {\n        outline-offset: 2px;\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${colors.blue[800]};\n      }\n      &:hover {\n        background-color: ${t2(colors.gray[200], colors.darkGray[500])};\n      }\n\n      &:disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n      }\n    `\n  };\n};\nvar lightStyles2 = (css) => stylesFactory2(\"light\", css);\nvar darkStyles2 = (css) => stylesFactory2(\"dark\", css);\ndelegateEvents([\"click\", \"mousedown\", \"keydown\", \"input\"]);\n/*! Bundled license information:\n\n@tanstack/match-sorter-utils/build/lib/index.mjs:\n  (**\n     * match-sorter-utils\n     *\n     * Copyright (c) TanStack\n     *\n     * This source code is licensed under the MIT license found in the\n     * LICENSE.md file in the root directory of this source tree.\n     *\n     * @license MIT\n     *)\n  (**\n   * @name match-sorter\n   * @license MIT license.\n   * @copyright (c) 2099 Kent C. Dodds\n   * @author Kent C. Dodds <me@kentcdodds.com> (https://kentcdodds.com)\n   *)\n*/\n\nexport { ContentView, Devtools, ParentPanel, PiPProvider, QueryDevtoolsContext, THEME_PREFERENCE, ThemeContext, createLocalStorage };\n","import { createLocalStorage, THEME_PREFERENCE, QueryDevtoolsContext, PiPProvider, ThemeContext, Devtools } from '../chunk/RQBHRHJL.js';\nimport { getPreferredColorScheme, createMemo, createComponent } from '../chunk/ZCXR2IAF.js';\n\n// src/DevtoolsComponent.tsx\nvar DevtoolsComponent = (props) => {\n  const [localStore, setLocalStore] = createLocalStorage({\n    prefix: \"TanstackQueryDevtools\"\n  });\n  const colorScheme = getPreferredColorScheme();\n  const theme = createMemo(() => {\n    const preference = props.theme || localStore.theme_preference || THEME_PREFERENCE;\n    if (preference !== \"system\") return preference;\n    return colorScheme();\n  });\n  return createComponent(QueryDevtoolsContext.Provider, {\n    value: props,\n    get children() {\n      return createComponent(PiPProvider, {\n        localStore,\n        setLocalStore,\n        get children() {\n          return createComponent(ThemeContext.Provider, {\n            value: theme,\n            get children() {\n              return createComponent(Devtools, {\n                localStore,\n                setLocalStore\n              });\n            }\n          });\n        }\n      });\n    }\n  });\n};\nvar DevtoolsComponent_default = DevtoolsComponent;\n\nexport { DevtoolsComponent_default as default };\n"],"names":["Wc","Gc","e","t","_","cn","mo","Vc","Kc","Qc","Jc","Hc","Jr","Er","ln","Ng","be","Yc","tt","We","Nt","Hr","Mg","i","at","Gg","r0","i0","Do","Jg","s0","ty","o0","ny","fy","Yr","d0","s","Ly","My","bo","wo","Fo","y0","b0","Eo","vo","w0","F0","E0","ue","ti","Oe","hn","ct","Oo","O0","ni","Ge","ri","Ee","De","So","ii","At","R0","x0","k0","vr","L5","M5","u","I0","Co","It","W0","X","To","Ro","we","tr","K0","N","Q0","Xt","lb","fb","xo","Fe","J0","H0","yb","X0","nl","xb","rl","sl","Kb","Yt","No","Ut","M","Zt","a6","Pt","$","Io","ll","Le","a","c6","hl","en","it","Zi","fl","h6","_r","bl","Fl","Ke","El","r","Sr","vl","zo","_l","Ol","Cl","Bo","Tl","Rl","Xe","ai","#i","#s","#o","#g","#c","#l","#h","#f","#u","#d","#y","#p","#m","#E","#D","#v","#_","#S","#x","#F","#B","#a","#M","#z","#O","#C","#A","c","l","f","h","m","D","y","F","S","E","R","A","k","w","#K","#j","T","#U","#N","#T","#R","#I","#Z","#$","#L","#q","#P","#k","#Q","#J","#H","#X","#V","ci","kl","Ie","nr","$o","Sw","Nl","Aw","lt","li","$e","_e","Il","Gi","$t","zl","pn","Lo","Bl","wt","ge","Wt","Ft","rr","Mo","jo","$l","P","V","ne","Uo","Ll","Qi","Ji","Jw","Ar","ht","jl","Zo","st","mn","Dn","nt","Ul","Zl","W","qo","ir","n","Or","$n","Hi","Wo","Go","Vo","Cr","Ko","Tr","tn","hi","Vl","Rr","ql","sr","Wl","Gt","Gl","fi","Qo","Jo","ee","Jl","Xi","Ql","Hl","Qe","Ce","Xl","Yl","di","Yi","Ho","Yo","eu","tu","nu","ru","ih","iu","su","ou","o","uu","Re","sh","oh","uh","au","ah","ch","lh","pu","Ah","yF","Lt","NF","Mh","jh","bu","Uh","ar","is","ss","os","z","Sf","Af","Of","Su","Mn","Ye","Zf","fs","lr","qf","wi","Wf","Gu","XF","l1","Vu","rE","Ku","oe","xr","uE","f1","aE","Qu","p1","Fi","jn","he","Un","ft","Tt","m1","se","Ju","D1","g1","Hu","Zn","y1","rn","b1","w1","F1","E1","v1","_1","S1","A1","O1","C1","T1","R1","Mt","Xu","ze","Yu","kr","x1","k1","N1","I1","P1","z1","B1","$1","L1","M1","j1","ps","U1","ea","Z1","q1","W1","G1","V1","K1","Q1","J1","ta","H1","g","C","na","ra","X1","Nr","ia","ms","Y1","e2","qn","p","v","d","Ds","Ei","sa","t2","oa","n2","gs","ua","r2","i2","s2","o2","vi","Ir","u2","a2","c2","l2","J","h2","f2","d2","aa","p2","_i","Si","m2","D2","ys","Et","sn","g2","y2","hr","b2","w2","Wn","le","fr","ca","dt","la","F2","E2","v2","Fn","bs","ws","_2","S2","A2","O2","ha","Fs","je","fa","C2","T2","R2","x2","k2","N2","I2","Es","Gn","da","P2","pa","z2","vs","Pr","En","B2","$2","L2","zr","_s","M2","ma","dr","Ss","Da","Vn","As","j2","on","fe","vn","un","Ai","U2","Z2","q2","Br","W2","ga","q","ya","G2","EE","kE","X2","ba","Y2","ed","td","nd","rd","pt","id","Sd","Bd","$d","Ld","Md","jd","Ud","xi","js","b","rt","xa","Cn","Ze","ka","Gr","ki","Ni","Ii","Qd","Us","x","Je","xe","Zs","Jd","Na","Tn","Hd","xt","Ia","Xd","Kn","ke","O","Yd","ep","tp","np","rp","ip","sp","op","up","et","ap","Pa","Kt","qe","Pi","kt","za","Ba","$a","cp","lp","zi","Bi","Qn","hp","Jn","fp","dp","pp","mp","Dp","gp","yp","bp","wp","Fp","Ep","vp","_p","Sp","Ap","Op","Cp","qs","Tp","Rp","xp","kp","Np","Ip","Pp","zp","La","Bp","$p","Ma","Lp","ja","Mp","jp","Up","Zp","qp","Wp","Gp","te","Ua","Za","qa","Vp","Kp","Qp","Jp","Hp","Hn","Xp","Yp","e3","t3","n3","r3","i3","s3","o3","j","$i","B","u3","a3","c3","l3","h3","f3","d3","p3","m3","D3","g3","y3","b3","w3","F3","E3","v3","_3","S3","Wa","A3","O3","C3","T3","R3","x3","Ga","k3","N3","I3","Ws","P3","Rn","Va","Ka","z3","B3","Gs","$3","L3","Vs","Vr","M3","j3","Ks","Qa","U3","Z3","q3","Qs","W3","G3","Js","V3","K3","Qt","Q3","Hs","J3","H3","Xs","Ys","X3","Y3","St","em","tm","eo","nm","rm","im","sm","om","um","am","cm","lm","hm","fm","dm","pm","mm","Dm","gm","ym","bm","wm","Fm","Em","vm","_m","Sm","Am","Om","Cm","Tm","to","pr","no","mr","ro","Ja","xn","Ha","Rm","xm","km","Nm","Im","Pm","mt","zm","Bm","$m","Lm","Mm","jm","Um","Zm","qm","kn","I","H","Nn","In","Pn","Wm","Gm","Xa","Ya","Vm","Km","Qm","Jm","Hm","Xm","ec","Ym","tc","eD","nc","tD","nD","rD","iD","sD","rc","oD","ic","uD","aD","sc","oc","uc","ac","cD","lD","cc","lc","hc","fc","dc","pc","mc","hD","Li","Dc","io","fD","dD","L","pD","mD","DD","gD","yD","bD","wD","gc","FD","ae","ED","vD","_D","SD","AD","OD","CD","TD","RD","xD","kD","ND","so","jt","U","C4","T4","co","d4","lo","b4","r4","Mi","a4","ho","h4","D4","y4","F4","_4","yc","ID","PD","zD","HD","BD","oo","Jt","$D","LD","MD","jD","KD","QD","UD","ZD","qD","WD","GD","VD","JD","an","bc","uo","wc","XD","YD","ao","e4","t4","n4","i4","c4","Fc","Ec","s4","o4","u4","Kr","l4","f4","p4","m4","g4","w4","E4","v4","S4","A4","O4","vc","R4","x4","Dr","k4","N4","_c","I4","Sc","fo","Ac","Oc","Cc","Tc","Rc","xc","kc","Nc","Ic","Pc","zc","Bc","$c","Lc","Mc","He","Y4","gr","yr","eg","tg","vt","ng","rg","de","ig","sg","og","br","ug","ag","_t","wr","Fr","po","cg","Pe","lg","hg","fg","dg","pg","mg","Dg","gg","yg","bg","jc","Xn","Ht","factory","module","undefined","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","state","length","tail","tmp","md51_array","rhex","hex","clamp","val","from","begin","end","num","target","targetArray","sourceArray","toUtf8","str","utf8Str2ArrayBuffer","returnUInt8Array","buff","arr","arrayBuffer2Utf8Str","concatenateArrayBuffers","first","second","result","hexToBinaryString","bytes","SparkMD5","contents","raw","ret","content","hash","querySelectorAllToStringArray","query","oScript","domToString","el","stringToDom","type","domToBlob","options","MIME","BUFFER_ENCODING","toBlob","selectFileInBrowser","accepts","multiple","files","input","resolve","reject","readFileInBrowser","file","FileReaderResponseTypeInBrowser","progressCb","reader","getFileMimeFromFileInBrowser","arrayBuffer","getFileMimeFromArrayBuffer","readFileMD5Hash","spark","chunkSize","start","fileReader","getFileMD5Hash","FileUpload","FetchWithAxios","response","blob","fd","increaseTimeArray","formatTimeArray","createXMLHttpRequest","xhr","versions","ajax","url","method","data","multipartFormDataString","boundary","headers","withCredentials","responseType","timeout","percentage","methodUpperCase","isMultipartFormData","isTextPlain","isSendJSON","setHeaders","headerType","toKebab","dataString","formDataToSearch","recordToSearch","appendURL","getFormSubmitData","formElement","segments","element","elementType","fileElement","fileBinaryString","commonElement","getPrefixedStyleNames","styleName","names","domPrefixes","name","getStyle","prop","pseudo","vnode","getVNode","toCamel","setStyle","value","updateVNode","key","scheduleVNodeAsap","atomReadStyles","justInlineStyle","styles","readStyleFromStyles","prefixedProps","prefixedPropsCount","prefixedProp","atomReadStyle","style","atomWriteStyle","atomRemoveStyle","injectStyle","styleSheetInnerText","dom","shadowRoot","position","CSSRule","selector","RuleList","propertyName","getStyleSheets","styleSheets","styleNodes","node","sheetCssText","getRules","ruleLists","rules","parsedRule","properties","splitProperty","attribute","atomReadAttributes","atomReadAttribute","obj","attrs","attr","atomWriteAttribute","atomRemoveAttribute","cssAttrsToCanvasAttrs","ctx","extendStatics","__extends","__","__awaiter","thisArg","_arguments","generator","adopt","fulfilled","step","rejected","__generator","body","verb","__values","__read","error","__spreadArray","pack","__await","__asyncGenerator","awaitReturn","resume","settle","fulfill","__asyncValues","isFunction","createErrorClass","createImpl","_super","instance","ctorFunc","UnsubscriptionError","errors","err","arrRemove","item","index","Subscription","initialTeardown","e_1","_a","e_2","_b","_parentage","_parentage_1","_parentage_1_1","parent_1","e_1_1","initialFinalizer","_finalizers","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","teardown","parent","empty","EMPTY_SUBSCRIPTION","isSubscription","config","timeoutProvider","handler","args","delegate","handle","reportUnhandledError","noop","errorContext","cb","Subscriber","destination","_this","EMPTY_OBSERVER","next","complete","SafeSubscriber","_bind","bind","fn","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","defaultErrorHandler","observable","identity","pipeFromArray","fns","prev","Observable","subscribe","operator","subscriber","isSubscriber","source","sink","promiseCtor","getPromiseCtor","Symbol_observable","operations","isObserver","hasLift","operate","init","liftedSource","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","ObjectUnsubscribedError","Subject","subject","AnonymousSubject","observer","observers","hasError","isStopped","thrownError","BehaviorSubject","_value","subscription","dateTimestampProvider","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","_buffer","_infiniteTimeWindow","copy","adjustedBufferSize","now","last","Action","scheduler","work","delay","intervalProvider","AsyncAction","_id","_scheduler","_delay","errored","errorValue","actions","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","action","asyncScheduler","async","EMPTY","isScheduler","popResultSelector","popScheduler","popNumber","defaultValue","isArrayLike","isPromise","isInteropObservable","isAsyncIterable","createInvalidObservableTypeError","getSymbolIterator","iterator","isIterable","Symbol_iterator","readableStreamLikeToAsyncGenerator","readableStream","done","isReadableStreamLike","innerFrom","fromInteropObservable","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","fromReadableStreamLike","obs","array","promise","iterable","iterable_1","iterable_1_1","asyncIterable","process","asyncIterable_1","asyncIterable_1_1","executeSchedule","parentSubscription","repeat","scheduleSubscription","observeOn","subscribeOn","scheduleObservable","schedulePromise","scheduleArray","scheduleIterable","scheduleAsyncIterable","scheduleReadableStreamLike","scheduled","of","EmptyError","firstValueFrom","hasConfig","isValidDate","map","project","isArray","callOrApply","mapOneOrManyArgs","getPrototypeOf","objectProto","getKeys","argsArgArrayOrObject","first_1","isPOJO","keys","createObject","values","combineLatest","resultSelector","observables","combineLatestInit","valueTransform","maybeSchedule","active","remainingFirstValues","_loop_1","hasFirstValue","execute","mergeInternals","concurrent","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","buffer","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeMap","mergeAll","concatAll","concat","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","eventName","isEventTarget","methodName","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","add","remove","subTarget","fromEventPattern","addHandler","removeHandler","retValue","timer","dueTime","intervalOrScheduler","intervalDuration","due","merge","sources","argsOrArgArray","filter","predicate","race","raceInit","subscriptions","distinctUntilChanged","comparator","keySelector","defaultCompare","previousKey","currentKey","exhaustMap","innerSub","outerValue","share","connector","resetOnError","resetOnComplete","_d","resetOnRefCountZero","wrapperSource","connection","resetConnection","refCount","hasCompleted","hasErrored","cancelReset","reset","resetAndUnsubscribe","conn","dest","handleReset","onSubscriber","shareReplay","configOrBufferSize","windowTime","bufferSize","startWith","switchMap","innerSubscriber","innerIndex","outerIndex","switchAll","takeUntil","notifier","tap","tapObserver","isUnsub","throttle","durationSelector","leading","trailing","hasValue","sendValue","throttled","endThrottling","send","cleanupThrottling","startThrottle","throttleTime","duration","duration$","windowToggle","openings","closingSelector","windows","handleError","openValue","window","closingSubscription","closeWindow","closingNotifier","windowsCopy","windowsCopy_1","windowsCopy_1_1","window_1","getEventCurrentTarget","createEventListener","useCapture","eventHandler","createParentEventListener","removeAllEventListeners","createEventListener$","createFromEventPattern$","stopPropagation","preventDefault","MouseEvents","KeyboardEvents","TouchEvents","PointerEvents","DragEvents","Events","createEvent","event","dispatchEvent","dispatchEventFromEvent","dispatchClickFromEvent","simulateEventFromTouch","touchEvent","touch","computeImageDisplayRect","mode","sourceWidth","sourceHeight","containerWidth","containerHeight","sourceAspectRatio","showWidth","showHeight","getImageData","image","canvas","imageDataToBitmap","imageData","biWidth","biHeight","biSizeImage","bfSize","BITMAPFILEHEADER","BITMAPINFOHEADER","iPadding","aImgData","strPixelData","biWidth4","fromCharCode","iOffsetY","strPixelRow","iOffsetX","encodeData","imageDataToDataURL","width","height","imageDataToBlob","exportImageType","toImageType","blobToImageData","getImageMainColor","arrR","arrG","arrB","len","_getArryWeightValue","G","existArr","duplicationArr","duplicationCount","max","maxIndex","flipSideToSide","newImgData","startIndex","flipUpsideDown","leftRotate","rightRotate","toGrey","avgColor","toGrey2","toBlackAndWhite","newColor","toOpposite","toRed","toGreen","toBlue","toRedAndGreen","toRedAndBlue","toBlueAndGreen","toRedAndGrey","greyColor","toGreenAndGrey","toBlueAndGrey","sharpen","convolutionMatrix","marginSharpen","jpgToPng","pngToJpg","colorStacks","rectClip","newWidth","newHeight","top","left","retainOriginalSize","imageType","finalLeft","finalTop","finalWidth","finalHeight","startIndex2","radiusClip","borderRadius","jpgToPNG","finalRadius","changeSize","imgUrl","maxWidthHeight","img","changeBrightness","changeNum","changeDiaphaneity","fixedDiaphaneity","addWatermark","watermarkImageData","watermarkData","watermarkWidth","watermarkHeight","watermarkStartIndex","aboveColor","belowColor","finalColor","mosaic","mosaicWidth","mosaicHeight","mosaicSize","boxXIndex","boxYIndex","mosaicBoxColorX","mosaicBoxColorY","mosaicBoxColorIndex","getImageDataByAIData","originalImageData","AIImageData","AIData","backgroundColor","changeIntoColor","kernel","aboveA","belowA","aboveDiaphaneity","belowDiaphaneity","newColorR","newColorG","newColorB","newColorA","byteArrayOutputStream","_bytes","ab","off","base64EncodeOutputStream","_buflen","_length","_base64","encode","writeEncoded","padlen","gifImage","size","foreground","background","_data","bitOutputStream","out","_out","_bitLength","_bitBuffer","getLZWRaster","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","byteOut","bitOut","dataIndex","_map","_size","pixel","radixStringToNumber","raster","offset","outputGifBase64","getPixel","gif","base64","QRMode","QRErrorCorrectLevel","QRMaskPattern","QRMath","QRUtil","digit","typeNumber","maskPattern","errorCorrectLength","QRPolynomial","qrCode","moduleCount","lostPoint","row","col","sameCount","dark","count","darkCount","ratio","shift","QRRSBlock","totalCount","dataCount","errorCorrectLevel","rsBlock","list","QRBitBuffer","bufIndex","bit","QR8bitByte","QRCode","newData","rsBlocks","totalDataCount","test","minLostPoint","pattern","target_mc","instance_name","depth","qr_mc","cs","pos","bits","mod","inc","bitIndex","byteIndex","dataList","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","rsPoly","modPoly","modIndex","totalCodeCount","MathC","MathF","MathR","outputQRCodeBase64","text","txt","utf16to8","ecc","padding","qrcode","min","drawQRCodeToCanvas","Vector2","scalar","minVal","maxVal","denominator","_v2","theta","dx","dy","alpha","center","angle","Vector3","ax","ay","az","bx","by","bz","_v3","planeNormal","normal","dz","sx","sy","sz","Vector4","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","namedEntities","createNamedToNumberedLookup","itemsString","radix","lookup","items","entity","base10","format","randomString","holder","randomstring","chars","getTextAnchor","textAlign","mapping","getDominantBaseline","textBaseline","STYLES","CustomCanvasGradient$1","gradientNode","color","stop","matches","CustomCanvasPattern$1","CustomCanvasContext$1","CustomCanvasContext","styleState","elementName","resetFill","currentElement","currentStyleGroup","CustomCanvasPattern","CustomCanvasGradient","opacity","globalAlpha","fixNamedEntities","serialized","regexp","group","transform","degrees","path","command","cp1x","cp1y","cp2x","cp2y","cpx","cpy","vector","radius","unit_vec_p1_p0","unit_vec_p1_p2","cos","unit_vec_p1_origin","len_p1_origin","unit_vec_origin_start_tangent","unit_vec_origin_end_tangent","getAngle","startAngle","endAngle","rect","rootGroup","childNodes","grad","r1","fontPart","font","textElement","counterClockwise","endX","endY","startX","startY","sweepFlag","largeArcFlag","diff","clipPath","newGroup","dw","dh","sw","svg","defs","svgImage","translateDirective","originTransform","transformDirective","repetition","dashArray","YZCanvasContext$1","enableCustomContext","lineWidth","lineCap","lineJoin","lineDashOffset","miterLimit","maxWidth","newPath","radian","centerX","centerY","radiusX","radiusY","rotation","colorStops","gradient","settings","serializedSVG","svgElement","L$2","lineAngle","minX","minY","maxX","maxY","sin","x1r","x2r","y1r","y2r","line","dx1","dx2","xInt","yInt","Arc$4","cx","cy","rx","ry","xAxisRotate","phi","x_m","y_m","x1_d","y1_d","radius_check_value","r_sq","sq","cx_d","cy_d","x_m_d","y_m_d","vectorAngle","ux","uy","vx","vy","theta_1","delta_theta","QuadraticBezier$3","c1x","c1y","xArr","yArr","CubicBezier$2","CubicBezier","t1","dot","dots","dots2","Tvalues","Cvalues","sum","xbase","ybase","t13","t12","mx","my","nx","TAU","unit_vector_angle","sign","get_arc_center","sin_phi","cos_phi","x1p","y1p","rx_sq","ry_sq","x1p_sq","y1p_sq","radicant","cxp","cyp","v1x","v1y","v2x","v2y","theta1","approximate_unit_arc","a2c","lambda","curve","a2c2","large_arc_flag","sweep_flag","recursive","_120","rad","res","rotate","Y","rx2","ry2","df","f2old","x2old","y2old","c1","s1","hx","hy","newres","q2c","l2c","SVGParsedPathArgsLength","createSVGElement","tagName","createSvgPath","isSVGElementPath","downloadFromSVGElement","svgContainer","clickA","downloadFromSVGString","svgString","getSVGRawStringFromElement","isSVGPath","SVGPathDataToD","parseSVGPath","substring","argsString","extractAllNumbers","absolutizeSVGPath","seg","relativeSVGPath","normalizeSVGPath","quadX","quadY","bezierX","bezierY","prevCommand","curves","catmullRom2bezier","crp","iLen","zvhToLSVGPath","startPoint","lastPoint","longhandSVGPath","conversion","cmd","convert","PathD$1","PathD","originMatrix","paths","isResetStart","points","lines","Arc","toX","toY","QuadraticBezier","startPathX","startPathY","normalizedLines","xmin","ymin","xmax","ymax","Matrix","c2x","c2y","acc","linesCount","onlystart","point","pointX","pointY","pathLength","best","bestLength","bestDistance","precision","scanLength","scan","scanDistance","distance","beforeLength","before","beforeDistance","afterLength","after","afterDistance","pts","totalLength","ns","nsLength","needAdded","alen","results","maxDotNumber","right","Sequence","Easing","power","numSteps","easingFunction","randomProportion","normalProportion","reverseEasing","easing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","BezierEasing","mY1","mY2","sampleValues","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","easeNameToCubicBezier","easeName","reverseEaseNameToCubicBezier","CSSToJSEasing","reverseCSSToJSEasing","Interpolation","p0","v0","pw","bn","Group","tweenId","tween","time","preserve","tweenIds","autoStart","mainGroup","Tween","_object","_group","property","_valuesStart","_valuesEnd","_valuesStartRepeat","startValue","startValueIsArray","propType","isInterpolationList","endValues","numChainedTweens","amount","times","yoyo","interpolationFunction","tweens","callback","elapsed","endTime","startIsArray","endIsArray","endValue","nextId","getAll","removeAll","update","TWEEN","Clock","newTime","Timeline","reverse","ShellSort","clones","fromValues","toValues","tweenConfig","clock","frameDuration","requestAnimationFrameLoop","deleteArrayItem","isContinue","reverseTweens","maxFrames","temp","EventBus","randomUUID","sourceDashArray","rawState","cX","cY","mouse","YZCanvasContext","newConstructor","shape","nameOrObj","toDegree","polar","toRadian","distSQ","force","gravity","parseNumber","friction","spring","springLength","trail","progress","pathd","prevOnUpdate","tl","coords","Point3D","Shape","vpX","vpY","cZ","degX","rotatePoint","degY","degZ","scale","Point3D$1","WebGLCoordinateSystem","WebGPUCoordinateSystem","DEFAULT_MATRIX2_VALUE","DEFAULT_MATRIX_VALUE","DEFAULT_MATRIX3_VALUE","DEFAULT_MATRIX4_VALUE","Matrix2","n11","n12","n21","n22","a11","a12","a21","a22","b11","b12","b21","b22","Matrix3","n13","n23","n31","n32","n33","xAxis","yAxis","zAxis","a13","a23","a31","a32","a33","b13","b23","b31","b32","b33","t11","det","detInv","matrix4","tx","_m3","matrix","Matrix4","n14","n24","n34","n41","n42","n43","n44","regMatchAll","me","scalarX","scalarY","skewX","skewY","fractionalDigits","scalarZ","degreeY","degreeX","degreeZ","scaleX","scaleY","scaleZ","eye","_z","_x","_y","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","axis","yx","zx","zy","bottom","near","far","coordinateSystem","zInv","degree","perspective","qx","qy","qz","qw","wz","ptA","ptB","ptC","ptD","width2","height2","Matrix$2","a00","a01","a02","a10","a20","b01","BC","K","deg","targetDeg","targetX","targetY","targetZ","targetSx","targetSy","degx","degy","degz","parseTransformToMatrix","all","matchString","getDOMMatrix","transformPath2D","pathString","path2d","bitmapMapper","bitmap","canUseBitmap","getBitmapFromCanvas","drawBitmapInCanvas","animate","easingFn","startTime","milliseconds","destTime","deltaX","deltaY","newX","newY","rAF","isElement","createObjectURL","revokeObjectURL","onDocumentReady","isCalled","check","remove1","remove2","loadScript","script","blobOrUrl","fileName","loadLink","link","waitForStyleSheetsLoaded","links","loadedCount","stylesheet","caches","TTLCache","loadImage","finalUrl","cached","rawImageInfo","selectFile","readType","selectFileImage","getSelectedText","setWindowTitle","title","vibrate","clipboard","textArea","scrollTo","isRootEl","isActiveEl","getRemSize","rem2px","rem","getEmSize","nearestElement","elm","parents","scrollParent","containsChild","child","siblings","nextElementSibling","previousElementSibling","closest","isInput","isSelect","isTextArea","isInputCheckbox","isInputRadio","isInputText","isInputNumber","changeSelected","selectedValue","changeRadioChecked","checkedValue","option","changeCheckboxChecked","checked","insert","html","createFragment","newEl","scriptConvert","getInnerText","copyText","slots","toggleElDisplay","showEl","hideEl","toggleClass","className","act","classNames","singleClassName","exists","isUpdate","addClass","removeClass","hasClass","tmpl","newNode","createElement","createElementNS","createTextNode","iframePostMessage","message","targetOrigin","iframe","runInSandbox","code","proxyWindow","receiver","compileTemplate","template","DOMVideo","video","mediaStream","stream","mediaSource","setAutoPlay","DOMParse","sourceString","stringLength","current","charAt","regTest","entity2text","entities","commentre","parseCSS","css","lineno","column","updatePosition","Position","whitespace","errorsList","msg","rulesList","open","match","close","comments","atrule","rule","re","comment","trim","declaration","declarations","decls","decl","keyframe","vals","atkeyframes","vendor","frame","frames","atsupports","supports","athost","atmedia","media","atcustommedia","atpage","sel","atdocument","doc","atfontface","atimport","_compileAtrule","atcharset","atnamespace","addParent","isNode","childParent","resize","entries","resize$","prevX","prevY","prevWidth","prevHeight","useWindowResize$","Hammer","hammerLoading","loadHammer","hammer$1","createGesture","Gesture","isSupportTouch","isSupportPointer","isSupportEvent","nodeName","isSupported","createDefaultMousePoint","createMousePoint","startMousePoint","currentMousePoint","isDown","mouseMove$","mouseDown$","mouseUp$","mouseOver$","mouseOut$","mouseEnter$","mouseLeave$","mouseClick$","mouseDoubleClick$","mouseWheel$","mouseContextMenu$","touchMove$","touchStart$","touchEnd$","touchCancel$","pointerMove$","pointerDown$","pointerUp$","pointerCancel$","pan$","gesture","panMove$","panStart$","panEnd$","panCancel$","panLeft$","panRight$","panUp$","panDown$","pinch$","pinchIn$","pinchOut$","press$","rotate$","swipe$","swipeLeft$","swipeRight$","swipeUp$","swipeDown$","tap$","tapOutSide$","transitionStart$","transitionEnd$","transitionCancel$","animationStart$","animationEnd$","animationCancel$","drag$","dragStart$","dragEnd$","drop$","dragEnter$","dragLeave$","dragOver$","keyDown$","keyUp$","keyPress$","elChange$","formSubmit$","scroll$","documentVisible$","storageEvent$","createOnlineStatus$","beforeUnload$","mouseMovePoint$","mpg","getMousePositionInElement","mouseDownMovePoint$","touchDownMovePoint$","pointerDownMovePoint$","compatableDownMovePoint$","mouseAndPointerDownMovePoint$","pull$","createDraggable","dragStartSubscription","dragSubscription","dragEndSubscription","createDrop","dragEnterSubscription","dragOverSubscription","dragLeaveSubscription","dropSubscription","getWindow","getDocumentElement","getViewport","clientWidth","clientHeight","scrollLeft","scrollTop","getPage","scrollWidth","scrollHeight","getElementPositionInViewport","getRelativeBoundingClientRect","getElementPositionInPage","getElementPositionInPage2","elem","actualLeft","actualTop","getVerticalScrollTopPercentInPage","isInViewport","viewport","getMousePositionInViewport","ev","getMousePositionInPage","fixedOffsetX","fixedOffsetY","currentTargetRect","targetRect","getScrollWheelDelta","delta","getMouseButton","CommonKeyCode","getKeyCode","matchHotKeyScheme","ctrlKey","shiftKey","altKey","hotKeyDown$","hotKeyUp$","hotKeyFile$","hotKeyOptions","hotKeyFile","createElementEventBus","eb","removes","ump","mousePoint","mouseDown","mouseUp","mouseMove","mouseOver","mouseOut","mouseEnter","mouseLeave","mouseClick","mouseDoubleClick","mouseWheel","mouseContextMenu","touchStart","touchEnd","touchCancel","touchMove","pointerDown","pointerUp","pointerCancel","pointerMove","pan","panStart","panMove","panEnd","panCancel","panLeft","panRight","panUp","panDown","pinch","pinchin","pinchout","press","swipe","swipeLeft","swipeRight","swipeUp","swipeDown","tapOutSide","transitionstart","transitionend","animationstart","animationend","_rect","pressDownMove","controller","pressDownMoveWithPointer","move","pressDownMoveWithMouse","pressDownMoveWithTouch","dataset","atomRemoveDataset","mutation$","records","waitElementAddedInDOM","mutationsList","mutation","intersection$","entry","visible$","threshold","createSessionStorage","getInDom","fromLocal","setInDom","timestampValue","createTimestampValue","clearSessionStorage","createBroadcastChannel","signal","createSignal","location$","urlChange$","location","hashChange$","hashEvent","popStateChange$","nameInState","popStateEvent","createFeRoute","alreadyPushState","getHistoryInSession","setHistoryInSession","history","getHistoryIndexInSession","setHistoryIndexInSession","initIndex","currentIndex","findIndexInHistory","route","setCurrent","pushHistory","pushState","origin","gotoHistory","isPushedState","popstate$","matchMedia$","mediaQueryList","isInjected","inject","safeArea$","coords$","watchId","SVGParse","tagname","parsedCSS","groupTransform","groupStyle","applyStyle","SVGAttributeRange","viewBoxs","pair","letter","tag","props","children","hFromEl","mountVNode","unmountVNode","patchVNode","oldVNode","newVNode","oldKey","newKey","oldProps","newProps","oldValue","newValue","sk","oldChildren","newChildren","commonMinLength","renderVNode","globalVNodeCache","cache","mergeObjectDeep","scheduleVNodeImmediately","alternate","scheduleIdle","createMiniReact","componentInstances","currentComponentInstance","pendingRenders","isRendering","useState","initialValue","idx","setState","resolvedValue","scheduleRender","useRef","ref","unused","useEffect","effect","deps","flushEffects","prevEffect","cleanup","useEffectEvent","useCallback","dep","flushRenders","renders","render","component","container","unmount","createMiniVue","activeEffect","watchEffect","Dep","targetKeyDepMap","getDep","keyDepMap","reactiveArray","deepReactive","reactiveVue2","originProto","arrayProto","isObjectLike","reactive","reactiveVue3","deepProxy","mvvm","reactiveState","compile","elementNode","attrName","attrValue","finalNode","getNestedValue","setNestedValue","appendUniqueArray","textContent","reg","miniVue","REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","maybeKey","propName","reactJsxRuntime_production","REACT_PORTAL_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_ACTIVITY_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","ReactNoopUpdateQueue","assign","emptyObject","Component","context","updater","partialState","ComponentDummy","PureComponent","pureComponentPrototype","isArrayImpl","ReactSharedInternals","hasOwnProperty","ReactElement","refProp","cloneAndReplaceKey","oldElement","isValidElement","object","escape","escaperLookup","userProvidedKeyEscapeRegex","getElementKey","resolveThenable","thenable","fulfilledValue","mapIntoArray","escapedPrefix","nameSoFar","invokeCallback","nextNamePrefix","mapChildren","func","lazyInitializer","payload","ctor","moduleObject","reportGlobalError","Children","forEachFunc","forEachContext","react_production","childArray","childrenLength","compare","scope","prevTransition","currentTransition","returnValue","onStartTransitionFinish","usable","initialState","permalink","Context","create","passthrough","reducer","initialArg","getSnapshot","getServerSnapshot","defineDeprecationWarning","info","warnNoop","publicInstance","callerName","warningKey","didWarnStateUpdateForUnmountedComponent","testStringCoercion","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_SUSPENSE_LIST_TYPE","innerType","getTaskName","getOwner","dispatcher","UnknownOwner","hasValidKey","getter","defineKeyPropWarningGetter","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","owner","debugStack","debugTask","validateChildKeys","childKey","didWarnAboutMaps","ioInfo","_ioInfo","_ioInfo2","resolveDispatcher","releaseAsyncTransition","enqueueTask","task","enqueueTaskImpl","requireString","didWarnAboutMessageChannel","channel","aggregateErrors","popActScope","prevActQueue","prevActScopeDepth","actScopeDepth","recursivelyFlushAsyncActWork","queue","flushActQueue","isFlushing","continuation","deprecatedAPIs","fnName","createTask","callStackForError","didWarnAboutOldJSXRuntime","unknownOwnerDebugStack","unknownOwnerDebugTask","didWarnNoAwaitAct","queueSeveralMicrotasks","exports","didAwaitActCall","error$0","_thrownError","returnValue$jscomp$0","getCurrentStack","refObject","ownName","lazyType","formatterFn","reactModule","require$$0","require$$1","jsxDEVImpl","isStaticChildren","didWarnAboutKeySpread","React","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","addUniqueItem","removeItem","formatErrorMessage","errorCode","warning","invariant","MotionGlobalConfig","isNumericalString","isObject","isZeroValueString","memo","any","pipe","transformers","range","SubscriptionManager","numSubscriptions","secondsToMilliseconds","seconds","millisecondsToSeconds","velocityPerSecond","velocity","warned","warnOnce","condition","wrap","rangeSize","a1","subdivisionPrecision","subdivisionMaxIterations","lowerBound","upperBound","cubicBezier","mirrorEasing","backOut","backIn","backInOut","anticipate","circIn","circOut","circInOut","easeIn","easeOut","easeInOut","isEasingArray","ease","getEasingForSegment","isBezierDefinition","easingLookup","isValidEasing","easingDefinitionToFunction","definition","LayoutGroupContext","createContext","LazyContext","MotionConfigContext","MotionContext","stepsOrder","createRenderStep","runNextFrame","thisFrame","nextFrame","isProcessing","flushNextFrame","toKeepAlive","latestFrameData","triggerCallback","keepAlive","immediate","frameData","prevFrame","maxElapsed","createRenderBatcher","scheduleNextBatch","allowKeepAlive","useDefaultElapsed","flagRunNextFrame","steps","setup","read","resolveKeyframes","preUpdate","preRender","postRender","processBatch","useManualTiming","timestamp","wake","cancelFrame","frameSteps","clearTime","checkStringStartsWith","token","isCSSVariableName","startsAsVariableToken","isCSSVariableToken","singleCssVariableRegex","containsCSSVariable","number","sanitize","floatRegex","isNullish","singleColorRegex","isColorString","testProp","splitColor","aName","bName","cName","clampRgbUnit","rgbUnit","rgba","red","green","blue","alpha$1","parseHex","createUnitType","unit","percent","px","vh","vw","progressPercentage","hsla","hue","saturation","lightness","parsed","colorRegex","NUMBER_TOKEN","COLOR_TOKEN","VAR_TOKEN","VAR_FUNCTION_TOKEN","SPLIT_TOKEN","complexRegex","analyseComplexValue","originalValue","indexes","types","split","parsedValue","parseComplexValue","buildTransformer","numSections","output","createTransformer","convertNumbersToZero","convertToZero","splitBefore","getAnimatableNone","complex","hueToRgb","hslaToRgba","mixImmediate","mixNumber","mixLinearColor","fromExpo","expo","colorTypes","getColorType","asRGBA","model","mixColor","fromRGBA","toRGBA","blended","invisibleValues","mixVisibility","mixNumber$1","getMixer","mixComplex","mixArray","mixObject","numValues","blendValue","matchOrder","orderedOrigin","pointers","originIndex","originValue","originStats","targetStats","mix","frameloopDriver","passTimestamp","generateLinearEasing","resolution","numPoints","maxGeneratorDuration","calcGeneratorDuration","timeStep","createGeneratorEasing","createGenerator","springDefaults","calcAngularFreq","undampedFreq","dampingRatio","rootIterations","approximateRoot","envelope","derivative","initialGuess","safeMin","findSpring","bounce","mass","exponentialDecay","stiffness","durationKeys","physicsKeys","isSpringType","getSpringOptions","springOptions","visualDuration","root","damping","derived","optionsOrVisualDuration","restSpeed","restDelta","isResolvedFromDuration","initialVelocity","initialDelta","undampedAngularFreq","isGranularScale","resolveSpring","resolveVelocity","angularFreq","sinCoeff","cosCoeff","dampedAngularFreq","freqForT","sinhCoeff","coshCoeff","currentVelocity","calculatedDuration","generatorOptions","velocitySampleDuration","getGeneratorVelocity","resolveValue","prevT","inertia","keyframes","timeConstant","bounceDamping","bounceStiffness","modifyTarget","isOutOfBounds","nearestBoundary","amplitude","ideal","calcDelta","calcLatest","applyFriction","latest","timeReachedBoundary","spring$1","checkCatchBoundary","hasUpdatedFrame","createMixers","customMixer","mixers","mixerFactory","numMixers","mixer","interpolate","isClamp","inputLength","isZeroDeltaRange","interpolator","progressInRange","fillOffset","remaining","offsetProgress","defaultOffset","convertOffsetToTimes","defaultEasing","keyframeValues","easingFunctions","absoluteTimes","mapTimeToKeyframe","isNotNull","getFinalKeyframe","repeatType","finalKeyframe","speed","resolvedKeyframes","transitionTypeMap","replaceTransitionType","transition","WithPromise","onResolve","onReject","percentToProgress","JSAnimation","motionValue","repeatDelay","keyframes$1","generatorFactory","animationTime","sample","totalDuration","mixKeyframes","mirroredGenerator","resolvedDuration","onUpdate","timeWithoutDelay","isInDelayPhase","frameGenerator","currentIteration","iterationProgress","isAnimationFinished","newSpeed","hasChanged","driver","sampleTime","timeline","fillWildcards","radToDeg","rebaseAngle","matrix2dParsers","rotateZ","matrix3dParsers","defaultTransformValue","parseValueFromTransform","matrix3dMatch","parsers","matrix2dMatch","valueParser","convertTransformToNumber","readTransformValue","transformPropOrder","transformProps","isNumOrPxType","transformKeys","nonTranslationalTransformKeys","removeNonTranslationalTransform","visualElement","removedTransforms","positionalValues","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","_bbox","toResolve","isScheduled","anyNeedsMeasurement","isForced","measureAllKeyframes","resolversToMeasure","resolver","elementsToMeasure","transformsToRestore","restore","readAllKeyframes","flushKeyframeResolvers","KeyframeResolver","unresolvedKeyframes","isAsync","currentValue","valueAsRead","isForcedComplete","isCSSVar","supportsFlags","memoSupports","supportsFlag","memoized","supportsScrollTimeline","supportsViewTimeline","supportsLinearEasing","cubicBezierAsString","supportedWaapiEasing","mapEasingToNativeEasing","segmentEasing","startWaapiAnimation","valueName","pseudoElement","keyframeOptions","isGenerator","applyGeneratorOptions","NativeAnimation","allowFlatten","wasFinished","newStartTime","rangeStart","rangeEnd","observe","unsupportedEasingFunctions","isUnsupportedEase","replaceStringEasing","sampleDelta","NativeAnimationExtended","sampleAnimation","isAnimatable","hasKeyframesChanged","canAnimate","originKeyframe","targetKeyframe","isOriginAnimatable","isTargetAnimatable","makeAnimationInstant","acceleratedValues","browserColorFunctions","hasBrowserOnlyColors","colorProperties","supportsWaapi","supportsBrowserAnimation","transformTemplate","MAX_RESOLVE_DELAY","AsyncMotionValueAnimation","autoplay","optionsWithDefaults","KeyframeResolver$1","forced","sync","isHandoff","canAnimateValue","resolvedOptions","useWaapi","animation","_onReject","GroupAnimation","animations","cancel","getMax","controls","GroupAnimationWithThen","calcChildStagger","delayChildren","staggerChildren","staggerDirection","numChildren","maxStaggerDuration","MAX_VELOCITY_DELTA","isFloat","collectMotionValues","MotionValue","currentTime","dependent","prevFrameValue","unsubscribe","eventManagers","passiveEffect","stopPassiveEffect","endAnimation","startAnimation","resolveTransition","parentTransition","rest","getValueTransition","valueTransition","underDampedSpring","criticallyDampedSpring","keyframesTransition","getDefaultTransition","valueKey","orchestrationKeys","isTransitionDefined","animateMotionValue","shouldSkip","splitCSSVariableRegex","parseCSSVariable","token1","token2","fallback","maxDepth","getVariableValue","resolved","trimmed","getValueState","resolveVariantFromProps","custom","resolveVariant","positionalKeys","isKeyframesTarget","setMotionValue","resolveFinalValueInKeyframes","setTarget","transitionEnd","isMotionValue","isWillChangeMotionValue","addValueToWillChange","willChange","newWillChange","camelToDash","optimizedAppearDataAttribute","getOptimisedAppearId","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","animateTarget","targetAndTransition","transitionOverride","defaultTransition","reduceMotion","skipAnimations","animationTypeState","valueTarget","appearId","shouldReduceMotion","applyTransitionEnd","animateVariant","variant","getAnimation","getChildAnimations","forwardDelay","animateChildren","when","animateVisualElement","resolvedDefinition","auto","testValueType","dimensionValueTypes","findDimensionValueType","isNone","maxDefaults","applyDefaultFilter","functionRegex","functions","mask","int","numberValueTypes","defaultValueTypes","getDefaultValueType","customTypes","defaultValueType","invalidTemplates","makeNoneKeyframesAnimatable","noneKeyframeIndexes","animatableTemplate","noneIndex","DOMKeyframesResolver","originType","targetType","originHasVar","targetHasVar","measureKeyframe","finalKeyframeIndex","unsetTransformName","unsetTransformValue","resolveElements","elementOrSelector","selectorCache","elements","getValueAsType","isHTMLElement","microtask","cancelMicrotask","isDragging","isDragActive","setDragLock","setupGesture","gestureAbortController","eventOptions","isValidHover","hover","onHoverStart","isPressed","deferredHoverEnd","hoverEndCallback","removePointerLeave","onPointerLeave","endHover","onPointerUp","onPointerDown","leaveEvent","onPointerEnter","enterEvent","onHoverEnd","isNodeOrChild","isPrimaryPointer","keyboardAccessibleElements","isElementKeyboardAccessible","textInputElements","isElementTextInput","isPressing","filterEvents","firePointerEvent","enableKeyboardPress","focusEvent","handleKeydown","handleKeyup","handleBlur","isValidPressEvent","claimedPointerDownEvents","targetOrSelector","onPressStart","targets","cancelEvents","startPress","startEvent","onPressEnd","endEventOptions","onPointerEnd","endEvent","success","onPointerCancel","upEvent","cancelEvent","isSVGElement","resizeHandlers","getSize","borderBoxAxis","svgAxis","htmlAxis","borderBoxSize","getWidth","getHeight","notifyTarget","notifyAll","createResizeObserver","resizeElement","elementHandlers","windowCallbacks","windowResizeHandler","createWindowResizeHandler","resizeWindow","observeTimeline","prevProgress","onFrame","isSVGSVGElement","useImmediate","argOffset","inputValue","inputRange","outputRange","attachFollow","activeAnimation","latestValue","latestSetter","stopAnimation","asNumber","targetValue","scheduleAnimation","set","parseValue","skipNextAnimation","removeSourceOnChange","removeValueOnDestroy","valueTypes","findValueType","createAxisDelta","createDelta","createAxis","createBox","visualElementStore","isAnimationControls","isVariantLabel","variantPriorityOrder","variantProps","isControllingVariants","isVariantNode","updateMotionValuesFromProps","nextValue","prevValue","existingValue","prefersReducedMotion","hasReducedMotionListener","isBrowser","initPrefersReducedMotion","motionMediaQuery","setReducedMotionPreferences","propEventHandlers","featureDefinitions","setFeatureDefinitions","definitions","getFeatureDefinitions","VisualElement","_props","_prevProps","_visualElement","presenceContext","reducedMotionConfig","blockInitialAnimation","visualState","latestValues","renderState","initialMotionValues","feature","valueIsTransform","removeOnChange","removeSyncCheck","other","featureDefinition","isEnabled","FeatureConstructor","listenerName","listener","closestVariantNode","initial","valueFromInitial","DOMVisualElement","vars","Feature","convertBoundingBoxToBox","convertBoxToBoundingBox","transformBoxPoints","transformPoint","topLeft","bottomRight","isIdentityScale","hasScale","hasTransform","has2DTranslate","is2DTranslate","scalePoint","originPoint","distanceFromOrigin","scaled","applyPointDelta","translate","boxScale","applyAxisDelta","applyBoxDelta","box","TREE_SCALE_SNAP_MIN","TREE_SCALE_SNAP_MAX","applyTreeDeltas","treeScale","treePath","isSharedTransition","treeLength","translateAxis","transformBox","transformAxis","axisTranslate","axisScale","axisOrigin","resolveAxisTranslate","sourceBox","resolveBox","measureViewportBox","measurePageBox","rootProjectionNode","transformPagePoint","viewportBox","scroll","translateAlias","numTransforms","buildTransform","transformString","transformIsDefault","valueIsDefault","valueAsType","transformName","pathRotation","buildHTMLStyles","transformOrigin","hasTransformOrigin","originX","originY","originZ","renderHTML","styleProp","projection","elementStyle","pixelsToPercent","pixels","correctBorderRadius","correctBoxShadow","projectionDelta","original","shadow","xScale","yScale","averageScale","scaleCorrectors","isForcedMotionValue","layout","layoutId","scrapeMotionValuesFromProps","prevProps","prevStyle","newValues","getComputedStyle","HTMLVisualElement","computedStyle","isObjectKey","ObjectVisualElement","dashKeys","camelKeys","buildSVGPath","spacing","useDashCase","cssMotionPathProperties","buildSVGAttrs","attrX","attrY","attrScale","pathSpacing","pathOffset","isSVGTag","camelCaseAttributes","renderSVG","_styleProp","scrapeMotionValuesFromProps$1","targetKey","SVGVisualElement","defaultType","numVariantProps","getVariantContext","shallowCompare","prevLength","reversePriorityOrder","numAnimationTypes","createAnimateFunction","createAnimationState","createState","isInitialRender","wasReset","buildResolvedTypeValues","setAnimateFunction","makeAnimator","animateChanges","changedActiveType","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","activeDelta","isInherited","variantDidChange","checkVariantsDidChange","shouldAnimateType","handledRemovedValues","definitionList","resolvedValues","prevResolvedValues","allKeys","markToAnimate","valueHasChanged","willAnimateViaParent","parentVariant","fallbackAnimation","initialTransition","fallbackTarget","shouldAnimate","setActive","isActive","createTypeState","copyAxisInto","originAxis","copyBoxInto","originBox","copyAxisDeltaInto","originDelta","SCALE_PRECISION","SCALE_MIN","SCALE_MAX","TRANSLATE_PRECISION","TRANSLATE_MIN","TRANSLATE_MAX","calcLength","isNear","maxDistance","calcAxisDelta","calcBoxDelta","calcRelativeAxis","relative","anchor","anchorPoint","calcRelativeBox","calcRelativeAxisPosition","calcRelativePosition","removePointDelta","removeAxisDelta","sourceAxis","removeAxisTransforms","transforms","scaleKey","originKey","xKeys","yKeys","removeBoxTransforms","isAxisDeltaZero","isDeltaZero","axisEquals","boxEquals","axisEqualsRounded","boxEqualsRounded","aspectRatio","axisDeltaEquals","eachAxis","buildProjectionTransform","latestTransform","xTranslate","yTranslate","zTranslate","transformPerspective","rotateX","rotateY","elementScaleX","elementScaleY","borderLabels","numBorders","isPx","mixValues","follow","lead","shouldCrossfadeOpacity","isOnlyMember","easeCrossfadeIn","easeCrossfadeOut","borderLabel","followRadius","getRadius","leadRadius","radiusName","compress","animateSingleValue","motionValue$1","addDomEvent","compareByDepth","FlatTree","checkElapsed","resolveMotionValue","NodeStack","member","inst","prevLead","preserveFollowOpacity","prevDep","nextDep","globalProjectionState","transformAxes","animationTarget","resetDistortingTransform","sharedAnimationValues","cancelTreeOptimisedTransformAnimations","projectionNode","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","subscriptionManager","cancelDelay","innerWidth","resizeUnblockUpdate","newInnerWidth","finishAnimation","hasLayoutChanged","hasRelativeLayoutChanged","newLayout","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","hasTargetChanged","hasOnlyRelativeTargetChanged","animationOptions","stack","resetSkewAndRotation","shouldNotifyListeners","wasBlockedByResize","forceLayoutMeasure","clearMeasurements","clearIsLayoutDirty","ensureDraggedNodesSnapshotted","resetTransformStyle","updateLayout","notifyLayoutUpdate","clearSnapshot","removeLeadSnapshots","prevLayout","phase","needsMeasurement","isRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","removeTransform","pageBox","layoutBox","roundBox","checkNodeWasScrollRoot","boxWithoutScroll","transformOnly","withTransforms","boxWithoutTransform","forceRecalculation","isShared","relativeParent","parentLayout","canSkip","prevTreeScaleX","prevTreeScaleY","pathFn","snapshot","snapshotLatestValues","mixedValues","targetDelta","relativeLayout","snapshotSource","layoutSource","isSharedLayoutAnimation","hasOpacityCrossfade","prevRelativeTarget","mixAxisDeltaLinear","mixBox","targetWithTransforms","shouldAnimatePositionOnly","xLength","yLength","needsReset","hasDistortingTransform","resetValues","targetStyle","valuesToRender","correct","applyTo","isCSSVariable","corrected","measuredLayout","animationType","axisSnapshot","snapAxis","layoutDelta","visualDelta","parentSnapshot","relativeSnapshot","onExitComplete","mixAxis","userAgentContains","string","roundPoint","roundAxis","DocumentProjectionNode","notify","HTMLProjectionNode","documentNode","getCurrentTreeVariants","useCreateMotionContext","useContext","useMemo","variantLabelsAsDependency","createHtmlRenderState","copyRawValuesOnly","useInitialMotionValues","useStyle","useHTMLProps","htmlProps","createSvgRenderState","useSVGProps","_isStatic","visualProps","rawStyles","validMotionProps","isValidMotionProp","shouldForward","loadExternalIsValidProp","isValidProp","emotionPkg","filterProps","isDom","forwardMotionProps","filteredProps","lowercaseSVGElements","isSVGComponent","useRender","isStatic","isSVG","elementProps","Fragment","renderedChildren","PresenceContext","useConstant","makeState","createRenderState","makeLatestValues","scrapeMotionValues","motionValues","isControllingVariants$1","isVariantNode$1","isInitialAnimationBlocked","variantToSet","makeUseVisualState","make","useHTMLVisualState","scrapeHTMLMotionValuesFromProps","useSVGVisualState","scrapeSVGMotionValuesFromProps","featureProps","isInitialized","initFeatureDefinitions","initialFeatureDefinitions","getInitializedFeatureDefinitions","loadFeatures","features","motionComponentSymbol","useMotionRef","externalRef","externalRefContainer","useInsertionEffect","refCleanup","SwitchLayoutGroupContext","isRefObject","useIsomorphicLayoutEffect","useLayoutEffect","useVisualElement","createVisualElement","ProjectionNodeConstructor","lazyContext","motionConfig","visualElementRef","hasMountedOnce","initialLayoutGroupConfig","isMounted","optimisedAppearId","wantsHandoff","initialPromotionConfig","drag","dragConstraints","layoutScroll","layoutRoot","layoutAnchor","layoutCrossfade","getClosestProjectingNode","createMotionComponent","preloadedFeatures","useVisualState","MotionDOMComponent","MeasureLayout","configAndProps","useLayoutId","useStrictMode","layoutProjection","getProjectionFunctionality","jsxs","jsx","ForwardRefMotionComponent","forwardRef","layoutGroupId","isStrict","strictMessage","combined","createDomVisualElement","AnimationFeature","prevAnimate","ExitAnimationFeature","isPresent","prevIsPresent","exitAnimation","register","extractEventInfo","addPointerInfo","addPointerEvent","getContextWindow","distance2D","xDelta","yDelta","overflowStyles","PanSession","handlers","contextWindow","dragSnapToOrigin","distanceThreshold","getPanInfo","isPanStarted","isDistancePastThreshold","onStart","onMove","onEnd","onSessionEnd","resumeAnimation","panInfo","initialInfo","onSessionStart","isWindow","subtractPoint","lastDevicePoint","startDevicePoint","getVelocity","timeDelta","timestampedPoint","applyConstraints","elastic","calcRelativeAxisConstraints","calcRelativeConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","calcViewportConstraints","constraintsBox","calcOrigin","sourceLength","targetLength","rebaseAxisConstraints","constraints","relativeConstraints","defaultElastic","resolveDragElastic","dragElastic","resolveAxisElastic","minLabel","maxLabel","resolvePointElastic","label","elementDragControls","VisualElementDragControls","originEvent","snapToCursor","dragPropagation","onDragStart","measuredAxis","animationState","dragDirectionLock","onDirectionLock","onDrag","getCurrentDirection","snap","finalEvent","finalPanInfo","onDragEnd","_point","shouldDrag","axisValue","prevConstraints","onMeasureDragConstraints","constraintsElement","measuredConstraints","userConstraints","dragMomentum","dragTransition","onDragTransitionEnd","momentumAnimations","dragKey","externalMotionValue","boxProgress","stopPointerListener","dragListener","isClickingTextInputChild","stopResizeObservers","measureDragConstraints","startResizeObservers","stopMeasureLayoutListener","stopResizeListener","stopLayoutUpdateListener","skipFirstCall","isFirst","onResize","stopElement","stopContainer","direction","currentDirection","lockThreshold","DragGesture","dragControls","prevDragControls","asyncHandler","PanGesture","pointerDownEvent","onPanSessionStart","onPanStart","onPan","onPanEnd","usePresence","useId","safeToRemove","hasTakenAnySnapshot","MeasureLayoutWithContext","layoutGroup","switchLayoutGroup","layoutDependency","promoteContext","handleHoverEvent","lifecycle","HoverGesture","_element","FocusGesture","isFocusVisible","handlePressEvent","PressGesture","globalTapTarget","propagate","observerCallbacks","fireObserverCallback","fireAllObserverCallbacks","initIntersectionObserver","lookupRoot","rootObservers","observeIntersection","rootInteresectionObserver","thresholdNames","InViewFeature","rootMargin","once","onIntersectionUpdate","isIntersecting","onViewportEnter","onViewportLeave","hasViewportOptionChanged","prevViewport","featureBundle","createMotionComponentWithFeatures","MotionDiv","MotionCircle","MotionPath","MotionSvg","makeMap","EMPTY_OBJ","NOOP","extend","hasOwn","isMap","toTypeString","isSet","isString","isSymbol","objectToString","toRawType","isPlainObject","isIntegerKey","capitalize","def","writable","_globalThis","getGlobalThis","warn","activeSub","pausedQueueEffects","ReactiveEffect","batch","cleanupEffect","prepareDeps","prevShouldTrack","shouldTrack","cleanupDeps","removeSub","isDirty","batchDepth","batchedSub","batchedComputed","sub","isComputed","startBatch","endBatch","head","removeDep","refreshComputed","computed","globalVersion","prevSub","soft","nextSub","trackStack","pauseTracking","resetTracking","Link","debugInfo","addSub","currentTail","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ARRAY_ITERATE_KEY","track","depsMap","trigger","oldTarget","run","targetIsArray","isArrayIndex","newLength","key2","reactiveReadArray","toRaw","isShallow","toReactive","shallowReadArray","arrayInstrumentations","apply","searchProxy","separator","noTracking","reduce","comparer","self","wrapValue","iter","wrappedRetFn","needsWrap","methodFn","result2","wrappedFn","isProxy","isNonTrackableKeys","builtInSymbols","BaseReactiveHandler","_isReadonly","_isShallow","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","isRef","readonly","MutableReactiveHandler","isOldValueReadonly","isReadonly","hadKey","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReadonlyHandlers","toShallow","getProto","createIterableMethod","rawTarget","targetIsMap","isPair","isKeyOnly","innerIterator","toReadonly","createReadonlyMethod","createInstrumentations","shallow","instrumentations","rawKey","has","observed","get","checkIdentityKeys","hadItems","createInstrumentationGetter","mutableCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","createReactiveObject","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","existingProxy","proxy","isReactive","markRaw","createRef","shallowRef","rawValue","RefImpl","useDirectValue","unref","ref2","shallowUnwrapHandlers","proxyRefs","objectWithRefs","ComputedRefImpl","setter","isSSR","getterOrOptions","debugOptions","cRef","INITIAL_WATCHER_VALUE","cleanupMap","activeWatcher","onWatcherCleanup","cleanupFn","failSilently","cleanups","watch","deep","augmentJob","call","warnInvalidSource","reactiveGetter","source2","traverse","boundCleanup","forceTrigger","isMultiSource","currentEffect","baseGetter","watchHandle","_cb","job","immediateFirstRun","currentWatcher","cleanup2","seen","pushWarningContext","popWarningContext","isWarning","warn$1","appWarnHandler","trace","getComponentTrace","callWithErrorHandling","formatComponentName","warnArgs","formatTrace","currentVNode","normalizedStack","parentInstance","logs","formatTraceEntry","recurseCount","postfix","formatProps","formatProp","ErrorTypeStrings$1","callWithAsyncErrorHandling","throwInDev","contextVNode","errorHandler","throwUnhandledErrorInProduction","cur","exposedInstance","errorInfo","errorCapturedHooks","logError","throwInProd","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","RECURSION_LIMIT","nextTick","findInsertionIndex","middle","middleJob","middleJobId","getId","queueJob","jobId","lastJob","queueFlush","flushJobs","queuePostFlushCb","flushPostFlushCbs","deduped","checkRecursiveUpdates","getComponentName","hmrDirtyComponents","tryWrap","createRecord","rerender","reload","initialDef","normalizeClassComponent","isClassComponent","newRender","record","newComp","updateComponentDef","instances","oldComp","dirtyInstances","arg","currentRenderingInstance","getPublicInstance","isStatefulComponent","getComponentPublicInstance","publicPropertiesMap","resolveMergedOptions","instanceWatch","isReservedPrefix","hasSetupBinding","PublicInstanceProxyHandlers","setupState","accessCache","appContext","normalizedProps","publicGetter","cssModule","globalProperties","propsOptions","descriptor","normalizePropsOrEmits","normalized","base","mixins","extendsOptions","globalMixins","optionMergeStrategies","mergeOptions","strats","asMixin","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","normalizeInject","merged","currentApp","treatDefaultAsFactory","currentInstance","provides","queuePostRenderEffect","queueEffectWithSuspense","ssrContextKey","useSSRContext","doWatch","flush","baseWatchOptions","runsImmediately","ssrCleanup","isInSSRComponentSetup","watchStopHandle","isPre","isFirstRun","watch$1","publicThis","createPathGetter","setCurrentInstance","suspense","getCurrentInstance","internalSetCurrentInstance","registerGlobalSetter","setters","classifyRE","classify","includeInferred","inferFromRegistry","registry","computed$1","initCustomFormatter","vueStyle","numberStyle","stringStyle","keywordStyle","formatter","genRefFlag","formatValue","formatInstance","blocks","createInstanceBlock","extractKeys","injected","asRaw","Comp","extracted","isKeyOfType","opts","initDev","useReactState","setValue","valueRef","signalRef","safeSetValue","execNoThrow","useVueState","createAppStoreContext","store","AppStoreKey","provideAppStore","stateRef","injectValue","useAppContext","useAppStore","useAppState","useSetAppState","isReduxStore","useDispatch","useControllableState","controlled","isNonNullable","inner","version","currentVersion","objectIs","useDebugValue","useSyncExternalStore$2","_useState","forceUpdate","checkIfSnapshotChanged","latestGetSnapshot","useSyncExternalStore$1","shim","useSyncExternalStoreShim_production","didWarnOld18Alpha","didWarnUncachedGetSnapshot","cachedValue","useSyncExternalStoreShim_development","shimModule","useSyncExternalStore","withSelector_production","isEqual","instRef","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","withSelector_development","withSelectorModule","AppStoreContext","AppStoreProvider","equalityFn","onStoreChange","useSyncExternalStoreWithSelector","setInner","beforeChangeRef","onChangeRef","NOTHING","DRAFTABLE","DRAFT_STATE","plugin","thing","die","CONSTRUCTOR","PROTOTYPE","CONFIGURABLE","ENUMERABLE","WRITABLE","VALUE","isDraft","isDraftable","objectCtorString","cachedCtorStrings","isObjectish","proto","Ctor","ctorString","each","strict","getArchtype","propOrOldValue","isBoolean","getFinalValue","shallowCopy","isPlain","descriptors","desc","freeze","isFrozen","dontMutateMethodOverride","_key","dontMutateFrozenCollections","PluginMapSet","PluginPatches","PluginArrayMethods","plugins","getPlugin","pluginKey","isPluginLoaded","currentScope","getCurrentScope","createScope","parent_","immer_","usePatchesInScope","patchListener","revokeScope","leaveScope","revokeDraft","enterScope","immer2","draft","processResult","baseDraft","finalize","patchPlugin_","maybeFreeze","rootScope","handleValue","isSameScope","callbacks_","generatePatchesAndFinalize","markStateFinalized","EMPTY_LOCATIONS_RESULT","updateDraftInParent","draftValue","finalizedValue","originalKey","parentCopy","parentType","draftLocations","locations","registerChildFinalizationCallback","basePath","handleCrossReference","scope_","prepareCopy","targetCopy","handledSet","updatedValue","createProxyProxy","baseIsArray","traps","objectTraps","arrayTraps","revoke","arrayPlugin","isArrayWithStringProp","readPropFromProto","peek","childDraft","createProxy","getDescriptorFromProto","current2","currentState","markChanged","Immer2","recipe","defaultBase","base2","patches","inversePatches","patch","applyPatchesImpl","rootScope2","currentImpl","childValue","immer","produce","useImmer","updateValue","useImmerReducer","initializerArg","initializer","cachedReducer","useReducer","useDimensions","dimensions","setDimensions","useSelection","selected","setSelected","toggleArrayItem","ScrollProgressContext","useScrollProgress","useMotionValueEvent","canUseNativeTimeline","createAxisInfo","createScrollInfo","updateAxisInfo","axisName","prevTime","updateScrollInfo","calcInset","inset","svgBoundingBox","parentBoundingBox","namedEdges","resolveEdge","edge","resolveOffset","containerLength","targetInset","offsetDefinition","targetPoint","containerPoint","ScrollOffset","getTargetSize","resolveOffsets","lengthLabel","targetSize","containerSize","numOffsets","measure","createOnScrollHandler","onScroll","scrollListeners","resizeListeners","onScrollHandlers","scrollSize","dimensionCheckProcesses","getEventTarget","scrollInfo","trackContentSize","containerHandlers","containerHandler","measureAll","checkScrollDimensions","dimensionCheckProcess","currentHandlers","scrollListener","presets","stringToProgress","parseStringOffset","parts","normaliseOffset","matchesPreset","preset","normalised","offsetToViewTimelineRange","timelineCache","scrollTimelineFallback","getTimeline","containerCache","targetCache","axisKey","attachToAnimation","useNative","valueAnimation","isElementTracking","isOnScrollWithInfo","attachToFunction","createScrollMotionValues","isRefPending","makeAccelerateConfig","canAccelerateScroll","useScroll","scrollAnimation","needsStart","_progress","tryStart","containerPending","targetPending","useMotionValue","setLatest","useCombineMotionValues","combineValues","scheduleUpdate","useComputed","compute","useTransform","inputRangeOrTransformer","outputRangeOrMap","useMapTransform","transformer","useListTransform","inputAccelerate","outputMap","useFollowValue","getFromSource","useSpring","isDOMKeyframes","resolveSubjects","calculateRepeatDuration","calcNextTime","labels","eraseKeyframes","sequence","addKeyframes","normalizeTimes","repeatDelayUnits","totalUnits","compareByTime","defaultSegmentEasing","MAX_REPEAT","createAnimationsFromSequence","sequenceTransition","generators","defaultDuration","animationDefinitions","sequences","elementCache","timeLabels","segment","maxDuration","resolveValueSequence","valueKeyframes","valueSequence","elementIndex","numSubjects","valueKeyframesAsList","keyframesAsList","remainingTransition","calculatedDelay","numKeyframes","absoluteDelta","isNumberKeyframesArray","springTransition","springEasing","remainder","originalKeyframes","originalTimes","originalEase","isFlipping","flippedKeyframes","flippedEases","repeatIndex","isFlipped","iterKeyframes","iterEase","iterStartOffset","keyframeIndex","targetTime","subjectSequence","getSubjectSequence","getValueSequence","subjects","subjectIndex","thisSubject","valueSequences","valueOffset","valueEasing","_type","remainingDefaultTransition","isNumber","createDOMVisualElement","createObjectVisualElement","isSingleValue","animateSubject","animateSequence","processedSequence","mv","isSequence","createScopedAnimate","scopedAnimate","subjectOrSequence","optionsOrKeyframes","animationOnComplete","inherited","sequenceOptions","leftInset","rightInset","transparent","opaque","useScrollXOverflowMaskImage","scrollXProgress","maskImage","useFollowPointer","transformX","transformY","handlePointerMove","clientX","clientY","prevTransformX","prevTransformY","polygonArea","polygon","area","polygonLength","perimeter","paramCounts","SPECIAL_SPACES","isSpace","isCommand","isArc","isDigit","isDigitStart","State","skipSpaces","scanFlag","scanParam","zeroFirst","hasCeiling","hasDecimal","hasDot","finalizeSegment","cmdLC","params","scanSegment","cmdCode","is_arc","comma_found","need_params","path_parse","svgPath","combine","Matrix$1","isRelative","CMD_SPLIT_RE","PARAMS_SPLIT_RE","transform_parse","epsilon","torad","Ellipse","JK","ellipse","pathParse","transformParse","require$$2","require$$3","require$$4","SvgPath","pstate","src","sgm","prevCmd","cmdSkipped","contourStartDeltaX","contourStartDeltaY","keepLazyStack","replacements","needReplace","lastX","lastY","countourStartX","countourStartY","newSegments","nameUC","nameLC","new_segments","nextX","nextY","prevControlX","prevControlY","prevSegment","curControlX","curControlY","svgpath","parse$4","parseValues","numbers","Bezier","getCubicArcLength","cubicPoint","cubicDerivative","getQuadraticArcLength","quadraticPoint","quadraticDerivative","Bezier$1","t2length","mdl","tangent","xs","total_length","increasedTLength","decreasedTLength","increasedTError","decreasedTError","tValues","cValues","binomialCoefficients","binomials","getDerivative","_vs","correctedT","Arc$1","LargeArcFlag","SweepFlag","partialLengths","curveLength","Arc$2","fractionLength","lengthOffset","LinearPosition","fraction","newDeltaX","newDeltaY","svgPathProperties","partial_lengths","svgProperties","parse","prev_point","ringStart","fractionPart","getPartAtLength","pointAlong","pct","samePoint","interpolatePoints","interpolators","interpolatePoint","toPathString","isFiniteNumber","INVALID_INPUT","Path","ring","pathStringToRing","maxSegmentLength","exactRing","approximateRing","ringPath","addPoints","desiredLength","cursor","insertAt","bisect","normalizeRing","skipBisect","converted","validRing","bestOffset","sumOfSquares","spliced","fromShape","toShape","fromRing","toRing","interpolateRing","earcutModule","earcut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","invSize","eliminateHoles","earcutLinked","clockwise","signedArea","insertNode","equals","removeNode","filterPoints","again","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minZ","zOrder","maxZ","intersects","locallyInside","isValidDiagonal","splitPolygon","getLeftmost","compareX","eliminateHole","hole","bridge","findHoleBridge","bridgeReverse","tanMin","tan","sectorContainsSector","sortLinked","numMerges","pSize","qSize","inSize","leftmost","py","intersectsPolygon","middleInside","o1","onSegment","inside","Node","trianglesArea","holeIndex","ascending","bisector","ascendingComparator","mid","useFlubber","pathIndexProgress","Subscribable","FocusManager","#focused","#cleanup","#setup","onFocus","focused","isFocused","focusManager","defaultTimeoutProvider","timeoutId","intervalId","TimeoutManager","#provider","#providerCalled","provider","timeoutManager","systemSetTimeoutZero","isServer","isValidTimeout","timeUntilStale","updatedAt","staleTime","resolveStaleTime","resolveQueryBoolean","hashKey","queryKey","replaceEqualDeep","isPlainArray","aSize","bItems","bSize","equalItems","aItem","bItem","shallowEqualObjects","hasObjectPrototype","prot","replaceData","prevData","shouldThrowError","throwOnError","environmentManager","isServerFn","isServerValue","pendingThenable","_resolve","_reject","reason","defaultScheduler","createNotifyManager","transactions","notifyFn","batchNotifyFn","scheduleFn","schedule","originalQueue","notifyManager","OnlineManager","#online","onOnline","onlineListener","offlineListener","online","onlineManager","canFetch","networkMode","fetchState","QueryObserver","client","#client","#selectError","#currentThenable","#currentQuery","#currentQueryInitialState","#currentResult","#currentResultState","#currentResultOptions","#selectFn","#selectResult","#lastQueryWithDefinedData","#staleTimeoutId","#refetchIntervalId","#currentRefetchInterval","#trackedProps","shouldFetchOnMount","#executeFetch","#updateTimers","shouldFetchOn","#clearStaleTimeout","#clearRefetchInterval","prevOptions","prevQuery","#updateQuery","mounted","shouldFetchOptionally","#updateStaleTimeout","nextRefetchInterval","#computeRefetchInterval","#updateRefetchInterval","shouldAssignObserverCurrentProperties","onPropTracked","defaultedOptions","fetchOptions","nextInterval","prevResult","prevResultState","prevResultOptions","queryInitialState","newState","isPlaceholderData","fetchOnMount","fetchOptionally","errorUpdatedAt","status","skipSelect","placeholderData","selectError","isFetching","isPending","isError","isLoading","hasData","nextResult","isStale","hasResultData","isErrorWithoutData","finalizeThenableIfPossible","recreateThenable","pending","prevThenable","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","#notify","notifyOptions","shouldLoadOnMount","field","optimisticResult","getDefaultState","MutationObserver","#currentMutation","#mutateOptions","#updateResult","variables","onMutateResult","QueryClientContext","React.createContext","useQueryClient","queryClient","React.useContext","QueryClientProvider","React.useEffect","IsRestoringContext","useIsRestoring","createValue","isReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","ensureSuspenseTimers","originalStaleTime","willFetch","isRestoring","shouldSuspend","fetchOptimistic","useBaseQuery","Observer","subscribed","isNewCacheEntry","React.useState","shouldSubscribe","React.useSyncExternalStore","React.useCallback","useQuery","useMutation","mutate","mutateOptions","sharedConfig","getContextId","setHydrateContext","IS_DEV","equalFn","$PROXY","SUPPORTS_PROXY","$TRACK","signalOptions","runEffects","runQueue","STALE","PENDING","UNOWNED","NO_INIT","Owner","Transition","ExternalSourceConfig","Listener","Updates","Effects","ExecCount","createRoot","detachedOwner","unowned","updateFn","untrack","cleanNode","runUpdates","value2","writeSignal","readSignal","createComputed","createComputation","updateComputation","createRenderEffect","createEffect","runUserEffects","createMemo","createResource","pSource","pFetcher","pOptions","fetcher","initP","dynamic","contexts","setError","loadEnd","error2","completeLoad","SuspenseContext","load","refetching","fetcherError","castError","runWithOwner","isArray3","prevInput","defer","onMount","onCleanup","prevListener","startTransition","transPending","setTransPending","useTransition","createProvider","children2","memo2","resolveChildren","updates","lookUpstream","sSlot","isComp","TransitionRunning","markDownstream","runComputation","pure","runTop","ancestors","wait","completeUpdates","userLength","ignore","FALLBACK","dispose","mapArray","mapFn","mapped","disposers","newItems","newLen","newIndices","newIndicesNext","tempdisposers","tempIndexes","newEnd","disposer","mapper","indexArray","signals","createComponent","trueFn","propTraps","resolveSource","resolveSources","mergeProps","sourcesMap","defined","sourceKeys","sources2","definedKeys","splitProps","blocked","objects","keyIndex","lazy","comp","counter","createUniqueId","narrowedError","For","Index","Show","keyed","conditionValue","Switch","chs","switchFunc","mps","prevFunc","Match","booleans","Properties","ChildProperties","Aliases","PropAliases","getPropAlias","DelegatedEvents","SVGElements","SVGNamespace","reconcileArrays","parentNode","bLength","aEnd","bEnd","aStart","bStart","$$EVENTS","dispose2","isImportNode","isMathML","delegateEvents","eventNames","document2","clearDelegatedEvents","setAttribute","isHydrating","setAttributeNS","namespace","setBoolAttribute","addEventListener","handlerFn","classList","classKeys","prevKeys","toggleClassKey","classValue","nodeStyle","setStyleProperty","spread","skipChildren","insertExpression","use","accessor","marker","skipRef","assignProp","getNextElement","template2","getHydrationKey","toPropertyName","nameLen","isCE","isProp","isChildProp","propAlias","forceProp","oriTarget","oriCurrentTarget","retarget","handleNode","walkUpTree","unwrapArray","hydrating","cleaned","multi","cleanChildren","currentArray","normalizeIncomingArray","nodes","appendNodes","unwrap","replacement","inserted","isParent","SVG_NAMESPACE","Portal","useShadow","mount","clean","setClean","renderRoot","createDynamic","component2","isSvg","Dynamic","others","DoubleIndexedKV","Registry","generateIdentifier","identifier","ClassRegistry","valuesOfObj","find","valuesNotNever","forEach","includes","findArr","CustomTransformerRegistry","getType","isUndefined","isNull","isEmptyObject","isRegExp","isDate","isNaNValue","isPrimitive","isBigint","isInfinite","isTypedArray","isURL","escapeKey","stringifyPath","parsePath","legacyPaths","char","escaped","lastSegment","simpleTransformation","isApplicable","annotation","untransform","simpleRules","superJson","baseError","regex","flags","compositeTransformation","symbolRule","constructorToName","typedArrayRule","isInstanceOfRegisteredClass","potentialClass","classRule","clazz","allowedProps","customRule","compositeRules","transformValue","applicableCompositeRule","applicableSimpleRule","simpleRulesByAnnotation","untransformValue","json","transformation","getNthKey","validatePath","getDeep","keyOfRow","setDeep","lastKey","keyToRow","enableLegacyPaths","tree","walker2","subtree","nodeValue","applyValueAnnotations","plain","annotations","applyReferentialEqualityAnnotations","identicalPaths","path2","identicalObjectPath","identicalPath","isDeep","addIdentity","identities","existingSet","generateReferentialEqualityAnnotations","identitites","dedupe","rootEqualityPaths","representativePath","walker","objectsInThisPath","seenObjects","primitive","transformed2","transformationResult","transformed","transformedValue","innerAnnotations","recursiveResult","getType2","isArray2","isPlainObject2","prototype","assignProp2","carry","newVal","originalObject","includeNonenumerable","symbols","SuperJSON","equalityAnnotations","meta","serialize","stringify","getQueryStatusLabel","getSidedProp","side","getQueryStatusColor","queryState","observerCount","getMutationStatusColor","isPaused","getQueryStatusColorByLabel","displayValue","beautify","getStatusRank","queryHashSort","dateSort","statusAndDateSort","sortFns","getMutationStatusRank","mutationDateSort","mutationStatusSort","mutationSortFns","convertRemToPixels","getPreferredColorScheme","colorScheme","setColorScheme","updateNestedDataByPath","oldData","updatePath","setAsArray","deleteNestedDataByPath","deletePath","setupStyleSheet","nonce","styleTag","textNode","TanstackQueryDevtools","#onlineManager","#queryFlavor","#version","#isMounted","#styleNonce","#shadowDOMTarget","#buttonPosition","#position","#initialIsOpen","#errorTypes","#hideDisabledQueries","#Component","#theme","#dispose","queryFlavor","buttonPosition","initialIsOpen","errorTypes","styleNonce","shadowDOMTarget","hideDisabledQueries","theme","isOpen","_self$","btnPosition","Devtools","ZXV6FBN7","ReactQueryDevtools","React.useRef","devtools","ReactQueryDevtools2","Devtools.ReactQueryDevtools","createTanStackQueryReact","Provider","L$1","QuadraticBezier$1","fromLength","toLength","margin","withinErrorMarginNumber","getStart","isReached","firstLine","maxPoints","maxCount","needAddedCount","lerps","enablePath2D","prevScaleX","prevScaleY","centerXSelf","centerYSelf","tos","forceSelf","parentRectCenter","selfRectCenter","invertedMatrix","targetWidth","targetHeight","targetCenterX","targetCenterY","pos0","pos1","vel0","vel1","vxTotal","absV","overlap","pos0F","pos1F","vel0F","vel1F","ShapeCombo","svgWidth","svgHeight","pathDatas","ds","allCount","shapeCombo","justChild","larger","largeLen","smallLen","extractNumber","followMouseShape","targetToAfterDropShape","animateShapes","shapes","alphas","numParticles","getShapesInterpolator","hlen","pathd1","pathd2","pathd1Points","pathd2Points","flr","getShapeCombosInterpolator","shapeCombos","maxShapeCombo","combos","combo","shapess","polymorphTween","shapeOrCombo","DrawContext","PARENT_EL","frameShapes","flushArray","closestPoint","brushSize","brushColor","hasSetMoveTo","brushDensity","brushColorNumber","Color","xpos","ypos","LineShape","lineLength","startColor","endColor","CurveShape","PointsShape","ctrlPoint1X","ctrlPoint1Y","ctrlPointX","ctrlPointY","isInside","sideDistance","sideCount","TreeShapeCombo","line1","line2","line3","BallShape","ball","ArrowShape","RectShape","p1x","p1y","p2x","p2y","HeartShape","HeartVariantShape","StarShape","FoxShape","RabbitShape","CrossShape","EllipseShape","ShipShapeCombo","SegmentShapeCombo","mainRect","controlPoint","rightPoint","SliderShapeCombo","stepFunc","stepMap","rectWidth","rectHeight","rectBorderRadius","ballRadius","foregroundColor","backgroundRect","occupyRect","dX","RingShape","extendDegree","fromX","fromY","dY","RingIndicatorShapeCombo","lineDegree","TextShape","fontSize","fontWeight","texts","lineHeight","tspan","metrics","span","gap","returnText","nowWidth","ConfettiShapeCombo","shapeCreator","particleCount","startVelocity","decay","drift","ticks","colors","flat","addShapeAttributes","fillColor","radAngle","radSpread","fetti","zh","period","hour","minute","Ls","MapCache","useLocale$1","useLocale","presetLower","Ball","rh.useFollowPointer","motion.div","Cube","halfX","halfY","halfZ","StyleSheet","button","arrow","RefreshBtn","onClick","btnStyle","motion.svg","motion.path","ProgressCircle","strokeWidth","bgColor","circle","motion.circle","ProgressTick","ProgressCross","crossPathAProgress","crossPathBProgress","Scroll","scrollYProgress","rh.ScrollProgressContext","TrackElementWithinViewport","ScrollYIndicator","Indicator","rh.useScrollProgress","ScrollXContainer","rh.useScrollXOverflowMaskImage","PathMorphing","samplePaths","fills","sampleColors","pathIndex","setPathIndex","fill","star","heart","hand","plane","lightning","createWebSocket","protocols","getVertxRegisterBaseUrl","baseUrl","randomStringNumber","WebSocketClient","copies","wasClean","getRetryDelay","jsons","originData","ex","request","listeners","address","receivedMessage","treeify","setRem","designWidth","docEl","dpr","recalc","WebRTCClient","localVideoEl","remoteVideoEl","localStream","videoTracks","audioTracks","servers","localPeerConnection","remotePeerConnection","description","peerConnection","iceCandidate","newIceCandidate","otherPeer","functionName","peerName","div","WebGLRenderer","webglConfig","initWxJsReadyFns","initWxJsConfigRecord","addWxJsReadyFnBeforeConfig","injectWxJsConfig","configFromServer","debug","currentURL","trimHash","ALL_WX_JS_APIS","ALL_WX_OPEN_TAGS","checkWxJsApi","apiName","wxJsUpdateAppMessageShareData","shareConfig","wxJsUpdateTimelineShareData","wxJsChooseImage","apiConfig","wxJsPreviewImage","wxJsUploadImage","wxJsDownloadImage","wxJsGetLocalImgData","wxJsStartRecord","wxJsStopRecord","wxJsOnVoiceRecordEnd","wxJsPlayVoice","wxJsPauseVoice","wxJsStopVoice","wxJsOnVoicePlayEnd","wxJsUploadVoice","wxJsDownloadVoice","wxJsTranslateVoice","wxJsGetNetworkType","wxJsOpenLocation","wxJsGetLocation","wxJsScanQRCode","wxJsPay","successCb","errorCb","onBridgeReady","wxJsLogin","appid","redirect_uri","aliJsReady","aliJsFormatCommonFailMessage","errorCodeMessage","aliJsTradePay","resultMessage","aliJsScan","aliJsGetLocation","aliJsOpenLocation","aliJsChooseImage","aliJsPreviewImage","mapTDTJSSDK","mapCenterLng","mapCenterLat","mapZoom","WebMonitor","colno","log","wrapperElements","topElement","readableTimestamp","getCurrentVersion","fetchLatestVersionFromHtml","checkVersion","latestVersion","createLocalStorage","clearLocalStorage","createCookie","domain","secureString","cookie","expires","clearCookies","cookies","cookieBase","ensureTable","db","tableName","objectStore","createIndexDB","dbName","dbVersion","writeToIndexDB","transaction","COLOR_SCHEME","getColorSchemeInLocalStorage","setColorSchemeInLocalStorage","localBi$","local$","setColorSchemeInDOM","scheme","getColorScheme$","matchMediaDark","getRootCSSVar","setRootCSSVar","getThemeColors","POSITIONALS_EXP","serializePositional","positional","flag","positionals","positionalIndex","formattedMessage","isEscaped","STACK_FRAMES_TO_IGNORE","cleanErrorStack","nextStack","InvariantError","ErrorConstructor","formatMessage","LIBRARY_PREFIX","interpolatedMessage","devUtils","InternalError","checkGlobals","LensList","#list","#lens","#openLens","kDefaultPrevented","kPropagationStopped","kImmediatePropagationStopped","TypedEvent","#returnType","Emitter","#listeners","#listenerOptions","#listenerAbortCleanups","#typelessListeners","#hookListeners","#hookListenerOptions","#hookListenerAbortCleanups","hook","wrapper","#deleteHookListener","onAbort","#deleteListener","removed","#addListener","hasListeners","proxiedEvent","#proxyEvent","#matchListeners","#callListener","pendingListeners","#isTypelessListener","listenerType","listeners$1","hookType","hookListener","insertMode","defaultParseOptions","isForbiddenKey","createNullObj","isNonEmptyString","parseString","setCookieValue","nameValuePairStr","parseNameValuePair","part","sides","nameValueArr","parseSetCookie","sch","splitCookiesString","cookiesString","cookiesStrings","lastComma","nextStart","cookiesSeparatorFound","skipWhitespace","notSpecialChar","HEADERS_INVALID_CHARACTERS","normalizeHeaderName","charCodesToRemove","HEADER_VALUE_REMOVE_REGEXP","normalizeHeaderValue","isValidHeaderName","character","isToken","isValidHeaderValue","_Symbol$toStringTag","NORMALIZED_HEADERS","RAW_HEADER_NAMES","HEADER_VALUE_DELIMITER","Headers","sortedKeys","normalizedName","normalizedValue","setCookieHeader","SOURCE_FRAME","BUILD_FRAME","getCallFrame","declarationFrame","isNodeProcess","__defProp","__export","colors_exports","__export$2","gray","yellow","IS_NODE","Logger","LOGGER_NAME","getVariable","LOGGER_LEVEL","isDefinedAndNotEquals","performance2","PerformanceEntry","message2","positionals2","level","prefix","customColors","timestampColor","prefixColor","colorize","serializeInput","deltaTime","variableName","expected","MemoryLeakError","emitter","_Emitter","internalEventName","onceListener","maxListeners","nextListeners","memoryLeakWarning","Emitter$1","getGlobalSymbol","symbol","setGlobalSymbol","deleteGlobalSymbol","InterceptorReadyState","InterceptorReadyState$1","Interceptor","logger","runningInstance","createRequestId","createDeferredExecutor","executor","onFulfilled","DeferredPromise","#executor","deferredExecutor","originalResolve","originalReject","onRejected","#decorate","onfinally","InterceptorError","__privateAdd","_handled","__privateGet","handled_get","canParseUrl","getValueBySymbol","symbolName","symbol$1","kStatus","kUrl","FetchResponse","internalState","rawHeaders","safeStatus","finalBody","clonedResponse","customStatus","customUrl","resolveWebSocketUrl","BatchInterceptor","interceptor","interceptors","getCleanUrl","isAbsolute","__create","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__commonJS","__copyProps","except","__toESM","isNodeMode","require_codes","require_statuses","codes","createMessageToStatusCodeMap","createStatusCodeList","codes2","status2","getStatusCode","getStatusMessage","allStatuses","statuses","statuses_default","kSetCookie","normalizeResponseInit","statusText","decorateResponse","responseCookies","getRawSetCookie","copyResponseOwnProperties","existingDescriptor","bodyType","kDefaultContentType","HttpResponse","responseInit","hasExplicitContentType","responseText","observeResponseBodyStream","settled","observedStream","readResult","observedResponse","RequestHandler","callFrame","_args","parsedResult","existingClone","clonedRequest","requestClone","executeResolver","resolverExtras","listenerController","finalizeFunction","getFinalize","mockedResponse","errorOrResponse","forwardResponseCookies","existingCleanups","nextResponse","requestId","cleanups2","runCleanupsOnce","allResponseCookies","HeadersPolyfill","cookieString","lexer","tokens","prefixes","delimiter","tryConsume","mustConsume","nextType","consumeText","isSafe","delimiter_1","safePattern","prevText","escapeString","name_1","pattern_1","suffix","pathToRegexp","regexpToFunction","decode","pathname","regexpToRegexp","groupsRegex","execResult","arrayToRegexp","stringToRegexp","tokensToRegexp","_f","endsWith","endsWithRe","delimiterRe","tokens_1","endToken","isEndDelimited","REDUNDANT_CHARACTERS_EXP","cleanUrl","isAbsoluteUrl","getAbsoluteUrl","normalizePath","maybeAbsoluteUrl","coercePath","parameterName","wildcard","expression","matchRequestUrl","normalizedPath","cleanPath","getTimestamp","toPublicUrl","urlInstance","kConnect","kAutoConnect","kSiblingHandlers","getSiblingHandlers","groupHandlersByKind","groups","pushUnique","kind","bucket","sibling","HandlersController","initialHandlers","#validateHandlers","normalizedInitialHandlers","nextHandlers","overrides","overridesForKind","existingForKind","normalizedNextHandlers","InMemoryHandlersController","#handlers","#initialHandlers","nextState","Disposable","toReadonlyArray","clone","executeHandlers","resolutionContext","matchingHandler","isStringEqual","actual","getStatusCodeColor","serializeRequest","requestText","serializeResponse","responseClone","responseStatus","responseStatusText","require_dist","parseCookie","stringifyCookie","stringifySetCookie","cookieNameRegExp","cookieValueRegExp","domainValueRegExp","pathValueRegExp","maxAgeRegExp","__toString","NullObject","dec","eqIdx","eqIndex","endIdx","endIndex","valueSlice","cookie2","enc","cookieStrings","_name","_val","_opts","setCookie","endIdx2","eqIdx2","date","priority","sameSite","allCookie","shareSameDomainSuffix","hostname","vhost","extractDomainWithSuffix","publicSuffix","publicSuffixIndex","lastDotBeforeSuffixIndex","getDomain","validHosts","numberOfLeadingDots","getDomainWithoutSuffix","CONTROL_CHARS","extractedHostnameValidated","isValidHostnameChar","getSpecialScheme","schemeStart","colonIndex","c0","extractHostname","urlIsValidHostname","validate","hasUpper","isSpecial","indexOfProtocol","special","slashes","indexOfColon","hasIdentifier","allDigits","isBareIpv6","indexOfIdentifier","indexOfClosingBracket","indexOfPort","indexOfFirstColon","hasControl","vValid","vLastDot","vLastCode","isProbablyIpv4","numberOfDots","isProbablyIpv6","hasColon","isIp","SPECIAL_USE_DOMAINS","isSpecialUse","isValidAscii","isValidHostname","lastDotIndex","lastCharCode","setDefaultsImpl","allowIcannDomains","allowPrivateDomains","detectIp","detectSpecialUse","mixedInputs","validateHostname","DEFAULT_OPTIONS","setDefaults","getSubdomain","getEmptyResult","resetResult","parseImpl","suffixLookup","partialOptions","urlIsValid","fastPathLookup","nodeFlags","edgeStart","edgeLength","edgeChild","labelText","rulesRoot","exceptionsRoot","numberOfNodes","numberOfEdges","edgeOffset","edgeHash","wildcardEdge","matchNode","matchStart","matchEnd","labelEquals","findEdge","walk","allowedMask","lastDot","RESULT","pathMatch","reqPath","cookiePath","SPECIAL_TREATMENT_DOMAINS","defaultGetPublicSuffixOptions","getPublicSuffix","domainParts","topLevelDomain","allowSpecialUseDomain","ignoreError","permuteDomain","pubSuf","permutations","Store","_domain","_path","_callback","_allowSpecialUseDomain","_cookie","_oldCookie","_newCookie","safeArrayToString","seenArrays","safeToStringImpl","safeToString","createPromiseCallback","inOperator","MemoryCookieStore","promiseCallback","pathMatcher","domainIndex","curPath","domains","curDomain","domainEntry","pathEntry","newCookie","keyEntry","isEmptyString","bool","cbOrMessage","ParameterError","PrefixSecurityEnum","IP_V6_REGEX","IP_V6_REGEX_OBJECT","IP_V4_REGEX","IP_V4_REGEX_OBJECT","domainToASCII","canonicalDomain","domainName","formatDate","parseDate","cookieDate","dateTokens","DELIMITER","dateToken","hours","minutes","TIME","parsedHours","parsedMinutes","parsedSeconds","DAY_OF_MONTH","dayOfMonth","MONTH","month","months","YEAR","parsedYear","COOKIE_OCTETS","PATH_VALUE","TERMINATORS","trimTerminator","terminator","terminatorIdx","parseCookiePair","cookiePair","looseMode","firstEq","cookieName","cookieValue","Cookie","firstSemi","unparsed","cookie_avs","av","av_sep","av_key","av_value","exp","fromJSON","cookieDefaults","_Cookie","hostOnly","createAge","accessAge","cdomain","age","ext","relativeTo","maxAge","millisec","MAX_TIME","cookieCompare","cmp","aPathLen","aTime","bTime","defaultPath","rightSlash","IP_REGEX_LOWERCASE","domainMatch","cookieDomain","canonicalize","_str","_domStr","isLoopbackV4","octets","isLoopbackV6","isNormalizedLocalhostTLD","lowerHost","isLocalHostname","host","hostNoBrackets","isPotentiallyTrustworthy","inputUrl","allowSecureOnLocal","defaultSetCookieOptions","defaultGetCookieOptions","SAME_SITE_CONTEXT_VAL_ERR","getCookieContext","checkSameSiteContext","isSecurePrefixConditionMet","isHostPrefixConditionMet","getNormalizedPrefixSecurity","prefixSecurity","normalizedPrefixSecurity","CookieJar","_CookieJar","syncErr","syncResult","loose","sameSiteContext","parsedCookie","ignoreErrorForPrefixSecurity","errorFound","errorMsg","cb2","withCookie","oldCookie","err2","setCookieFn","parameterError","potentiallyTrustworthy","sameSiteLevel","http","expireCheck","allPaths","matchingCookie","cookieLevel","expiryTime","now2","serializedCookie","putNext","newStore","cloneFn","completedCount","removeErrors","removeCookieCb","removeErr","strOrObj","readSerializedProperty","readSerializedBoolean","readSerializedString","jar","jsonString","jsonParse","CookieStore","#storageKey","#jar","#memoryStore","rawCookies","rawCookie","cookieStore","parseCookies","parsedCookies","getAllDocumentCookies","getDocumentCookies","requestUrl","getAllRequestCookies","requestCookieHeader","cookiesFromHeaders","cookiesFromDocument","serializeCookie","cookiesFromStore","storedCookiesObject","HttpMethods","HttpMethods2","HttpHandler","displayPath","customPredicateResult","hasMatchingMethod","hasMatchingUrl","actualMethod","publicUrl","loggedRequest","loggedResponse","statusColor","createHttpHandler","hasRefCounted","SET_TIMEOUT_MAX_ALLOWED_INT","MIN_SERVER_RESPONSE_TIME","MAX_SERVER_RESPONSE_TIME","NODE_SERVER_RESPONSE_TIME","getRealisticResponseTime","durationOrMode","delayTime","until","isCommonAssetRequest","storeResponseCookies","NetworkFrame","protocol","NetworkFrameEvent","NetworkSource","REQUEST_INTENTION_HEADER_NAME","shouldBypassRequest","isPassthroughResponse","deleteRequestPassthroughHeader","acceptHeader","nextAcceptHeader","RequestEvent","ResponseEvent","UnhandledExceptionEvent","HttpNetworkFrame","requestBody","onUnhandledFrame","requestCloneForLogs","lookupError","lookupResult","executeUnhandledFrameHandle","responseCloneForLogs","printStrategyMessage","strategy","applyStrategy","colorlessPromiseAll","promises","NetworkReadyState","NetworkReadyState2","defineNetwork","readyState","events","disposable","deriveHandlersController","handlersController","options2","session","emitAsync","PatchesRegistry","#replacements","getNextValue","ownerReplacements","getDeepPropertyDescriptor","restorePatch","currentReplacements","patchesRegistry","currentOwner","hasConfigurableGlobal","bindEvent","kCancelable","CancelableMessageEvent","nextCancelable","nextDefaultPrevented","CloseEvent","CancelableCloseEvent","kEmitter$1","kBoundListener$1","WebSocketClientConnection","socket","transport","boundListener","WEBSOCKET_CLOSE_CODE_RANGE_ERROR","kPassthroughPromise","kOnSend","kClose","WebSocketOverride","getDataSize","kEmitter","kBoundListener","kSend","WebSocketServerConnection","createConnection","realWebSocket","errorEvent","messageEvent","_event","closeEvent","WebSocketClassTransport","WebSocketProxy","newTarget","server","hasConnectionListeners","WebSocketConnectionEvent","UnhandledWebSocketExceptionEvent","WebSocketNetworkFrame","hasMatchingHandlers","handlerConnection","removeLogger","InterceptorSource","#interceptor","#frames","#handleRequest","#handleResponse","#handleWebSocketConnection","httpFrame","InterceptorHttpNetworkFrame","isMockedResponse","InterceptorWebSocketNetworkFrame","#controller","fromLegacyOnUnhandledRequest","getLegacyValue","defaults","legacyOnUnhandledRequestStrategy","toResponseInit","__export$1","INTERNAL_REQUEST_ID_HEADER_NAME","WebSocketInterceptor","supportsServiceWorker","supportsReadableStreamTransfer","createDeferredExecutor2","DeferredPromise2","InterceptorError2","RequestController","_g","FetchRequest","FetchRequest2","#resolveProperty","safeMethod","hasExplicitBody","bodyInit","safeMode","#setInternalProperty","authority","_h","kRawRequest","setRawRequest","rawRequest","encoder","encodeBuffer","decodeBuffer","encoding","toArrayBuffer","getAbsoluteWorkerUrl","workerUrl","getWorkerByRegistration","registration","absoluteWorkerUrl","findWorker","worker2","getWorkerInstance","mockRegistrations","registrations","existingRegistration","registrationError","registrationResult","scopeUrl","kDefaultPrevented2","Emitter2","SUPPORTS_SERVICE_WORKER","WorkerEvent","#workerEvent","workerEvent","WorkerChannel","#getWorker","worker","pruneGetRequestBody","deserializeRequest","serializedRequest","validateWorkerScope","devUtils2","shouldInvalidateWorker","nextOptions","ServiceWorkerSource","_ServiceWorkerSource","#current","#options","#channel","#listenerController","#clientPromise","#keepAliveInterval","#stoppedAt","devUtils3","registration2","#startWorker","activationPromise","clientConfirmationPromise","#printStartMessage","#printStopMessage","#defaultFindWorker","missingWorkerMessage","#checkWorkerIntegrity","ServiceWorkerHttpNetworkFrame","fetchRequest","fetchResponse","mockServiceWorkerUrl","integrityCheckPromise","checksum","packageVersion","#event","#respondWith","responseBody","transfer","until2","isObject2","isPropertyAccessible","createServerErrorResponse","isResponseError","isResponseLike","isNodeLikeError","handleRequest","handleResponse","handleResponseError","requestAbortPromise","requestListenersPromise","unhandledExceptionController","createNetworkError","cause","REQUEST_BODY_HEADERS","kRedirectCount","followFetchRedirect","locationUrl","sameOrigin","requestInit","headerName","finalResponse","BrotliDecompressionStream","chunk","PipelineStream","transformStreams","strategies","readable","readable$1","parseContentEncoding","contentEncoding","coding","createDecompressionStream","codings","decompressResponse","decompressionStream","FetchInterceptor","pureFetch","fetchProxy","responsePromise","requestCloneForResponseEvent","responseError","originalResponse","rawResponse","response$1","concatArrayBuffer","EventPolyfill","bubbles","cancelable","ProgressEventPolyfill","SUPPORTS_PROGRESS_EVENT","progressEvents","ProgressEventClass","findPropertySource","optionsToProxyHandler","constructorCall","methodCall","getProperty","setProperty","propertySource","ownDescriptors","next$1","isDomParserSupportedType","supportedType","parseJson","createResponse","createHeadersFromXMLHttpRequestHeaders","headersString","getBodyByteLength","explicitContentLength","kIsRequestHandled","IS_NODE2","kFetchRequest","XMLHttpRequestController","initialRequest","invoke","toAbsoluteUrl","define","nextEvents","totalRequestBodyLength","headerValue","allHeaders","totalResponseBodyLength","finalizeResponse","readNextResponseBodyChunk","responseJson","mimeType","responseBlob","contentType","nextReadyState","registeredEventName","resolvedBody","createXMLHttpRequestProxy","originalRequest","prototypeDescriptors","xhrRequestController","XMLHttpRequestInterceptor","_j","FallbackHttpSource","devUtils4","DEFAULT_WORKER_URL","setupWorker","devUtils5","network","httpSource","InterceptorSource2","movies","movieHandlers","movie","started","startMockServiceWorker","document","exportName","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","round","abs","setTimeoutContext","bindFn","invokeArrayArg","deprecate","deprecationMessage","nextKey","inherit","baseP","childP","boolOrFn","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","hasParent","inStr","inArray","findByKey","toArray","uniqueArray","sort","prefixed","camelProp","_uniqueId","uniqueId","getWindowForElement","MOBILE_REGEX","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","createInputInstance","Type","inputClass","PointerEventInput","TouchInput","TouchMouseInput","MouseInput","inputHandler","eventType","pointersLen","changedPointersLen","isFinal","computeInputData","pointersLength","simpleCloneInputData","firstInput","firstMultiple","offsetCenter","getCenter","getDistance","computeDeltaXY","getDirection","overallVelocity","getScale","getRotation","computeIntervalInputData","prevDelta","velocityX","velocityY","MOUSE_INPUT_MAP","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","POINTER_INPUT_MAP","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","removePointer","eventTypeNormalized","pointerType","isTouch","storeIndex","SINGLE_TOUCH_INPUT_MAP","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","touches","normalizeSingleTouches","changed","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","getTouches","allTouches","targetIds","targetTouches","changedTouches","changedTargetTouches","DEDUP_TIMEOUT","DEDUP_DISTANCE","inputEvent","inputData","isMouse","recordTouches","isSyntheticEvent","eventData","setLastTouch","lastTouch","lts","removeLastTouch","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","getTouchActionProps","TouchAction","recognizer","cleanTouchActions","srcEvent","hasNone","hasPanY","hasPanX","isTapPointer","isTapMovement","isTapTouchTime","touchMap","cssSupports","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","Recognizer","otherRecognizer","simultaneous","getRecognizerByNameIfManager","requireFail","emit","stateStr","inputDataClone","directionStr","AttrRecognizer","optionPointers","isRecognized","isValid","PanRecognizer","hasMoved","PinchRecognizer","inOut","PressRecognizer","validPointers","validMovement","validTime","RotateRecognizer","SwipeRecognizer","TapRecognizer","validTouchTime","validInterval","validMultiTap","tapCount","Manager","STOP","FORCED_STOP","toggleCssProps","recognizers","curRecognizer","existing","triggerDomEvent","gestureEvent","freeGlobal","filterNonNullable","chain","callbacks","access","asArray","accessWith","valueOrFn","tryOnCleanup","handleDiffArray","handleAdded","handleRemoved","currLength","prevEl","currEl","createStorage","apis","api","filteredValue","apiKey","clear","toJSON","addValue","addClearMethod","storage","serializeCookieOptions","cookieStorage","storageEvent","found","firstBreakpoint","secondBreakpoint","thirdBreakpoint","BUTTON_POSITION","POSITION","THEME_PREFERENCE","INITIAL_IS_OPEN","DEFAULT_HEIGHT","PIP_DEFAULT_HEIGHT","DEFAULT_WIDTH","DEFAULT_SORT_FN_NAME","DEFAULT_SORT_ORDER","DEFAULT_MUTATION_SORT_FN_NAME","QueryDevtoolsContext","useQueryDevtoolsContext","PipOpenError","PiPContext","PiPProvider","pipWindow","setPipWindow","closePipWindow","requestPipWindow","pip","styleSheet","cssRules","style_node","style_id","gooberStyles","pip_style","usePiPWindow","ThemeContext","useTheme","characterMap","allAccents","removeAccents","rankings","rankItem","_options$threshold","rank","getMatchRanking","valuesToRank","getAllValuesToRank","rankingInfo","rankValue","newRank","minRanking","maxRanking","testString","stringToRank","prepareValueForComparison","getAcronym","getClosenessRanking","acronym","wordInString","splitByHyphenWord","matchingInOrderCharCount","charNumber","findMatchingCharacter","matchChar","getRanking","spread3","spreadPercentage","inOrderPercentage","firstIndex","spread2","_ref","keepDiacritics","getItemValues","accessorFn","accessors","allValues","attributes","getAccessorAttributes","itemValues","defaultKeyAttributes","clsx","createListTransition","initSource","onChange","prevSet","exiting","toRemove","setToRemove","isTransitionPending","finishRemoved","els","elsToRemove","sourceList","nextSet","added","unchanged","nothingChanged","mergeRefs","refs","defaultElementPredicate","getResolvedElements","serverPredicate","createClassnames","enterTransition","classes","onBeforeEnter","onEnter","onAfterEnter","endTransition","exitTransition","onBeforeExit","onExit","onAfterExit","TransitionGroup","classnames","toMove","moved","newRect","endTransition2","keyArray","keyFn","addNewItem","getItem","setItem","save","setIndex","Key","makeEventListener","attachListeners","type2","makeResizeObserver","previousMap","unobserve","contentRect","previous","extractCSSregex","stringStyleToObject","combineStyle","addItemToArray","removeItemFromArray","updatedArray","createGenerateId","baseId","contains","getActiveElement","activeDescendant","activeElement","getDocument","isFrame","EventKey","EventKey2","testPlatform","isMac","isIPhone","isIPad","isIOS","isAppleDevice","callHandler","composeEventHandlers","isCtrlKey","focusWithoutScrolling","supportsPreventScroll","scrollableElements","getScrollableElements","restoreScrollPosition","supportsPreventScrollCached","rootScrollingElement","focusableElements","tabbableElements","FOCUSABLE_ELEMENT_SELECTOR","TABBABLE_ELEMENT_SELECTOR","getAllTabbableIn","includeContainer","tabbableElements2","isTabbable","frameBody","allFrameTabbable","isFocusable","hasNegativeTabIndex","isElementVisible","childElement","isStyleVisible","isAttributeVisible","display","visibility","isVisible","getComputedStyle3","computedDisplay","computedVisibility","getFocusableTreeWalker","getScrollParent","isScrollable","noop3","isPointInPolygon","yi","xj","yj","where","mergeDefaultProps","defaultProps","transitionsByElement","transitionCallbacks","setupGlobalEvents","onTransitionStart","transitions","onTransitionEnd","scrollIntoView","scrollView","offsetX","relativeOffset","offsetY","ancestor","scrollIntoViewport","targetElement","originalLeft","originalTop","newLeft","newTop","visuallyHiddenStyles","createTagName","setTagName","stringOrUndefined","Polymorphic","local","button_exports","Button","ButtonRoot","BUTTON_INPUT_TYPES","isButton","mergedProps","isNativeButton","elementTagName","isNativeInput","isNativeLink","r$","_ref$","createControllableSignal","_setValue","isControlled","createControllableBooleanSignal","createControllableArraySignal","createToggleState","isSelected","_setIsSelected","buildNodes","getKey","_getKey","dataKey","getTextValue","_getTextValue","dataTextValue","getDisabled","_getDisabled","getSectionChildren","sectionChildren","createCollection","RTL_SCRIPTS","RTL_LANGS","isRTL","locale","lang","getReadingDirection","getDefaultLocale","currentLocale","updateLocale","createDefaultLocale","defaultClientLocale","setDefaultClientLocale","defaultLocale","I18nContext","createCollator","cacheKey","collator","Selection","_Selection","anchorKey","createControllableSelectionSignal","isNonContiguousSelectionModifier","isCtrlKeyPressed","convertSelection","selection","isSameSelection","setA","setB","createMultipleSelectionState","setFocused","focusedKey","setFocusedKey","selectedKeysProp","defaultSelectedKeys","defaultSelection","selectedKeys","_setSelectedKeys","selectionBehavior","setSelectionBehavior","selectionMode","disallowEmptySelection","setSelectedKeys","createTypeSelect","search","setSearch","setTimeoutId","getStringForKey","newSearch","isAllSameLetter","createSelectableCollection","scrollRef","finalScrollRef","scrollPos","scrollEl","typeSelectHandlers","orientation","onKeyDown","refEl","selectOnFocus","navigateToKey","shouldFocusWrap","isRTL3","firstKey","onFocusIn","navigateToFirstKey","relatedTarget","onFocusOut","onMouseDown","tryAutoFocus","autoFocus","isVirtualized","createSelectableItem","shouldUseVirtualFocus","onSelect","isDisabled","allowsSelection","pointerDownType","tabIndex","shouldUseVirtualFocus2","SelectionManager","collection","retrievedKey","isItemBeforeFirst","isItemAfterLast","toKey","retrievedToKey","fromItem","toItem","ListCollection","createListState","selectionState","selectionManager","DomCollectionContext","useOptionalDomCollectionContext","useDomCollectionContext","isElementPreceding","findDOMIndex","itemEl","currentItemEl","sortBasedOnDOMPosition","pairs","isOrderDifferent","indexA","indexB","elementA","elementB","setItemsBasedOnDOMPosition","setItems","sortedItems","getCommonParent","firstItem","lastItemEl","parentEl","createTimeoutObserver","createSortBasedOnDOMPosition","previousItems","hasPreviousItems","createDomCollection","registerItem","prevItems","nextItems","prevItem","props2","createDomCollectionItem","unregister","floor","createCoords","oppositeSideMap","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","getAxisLength","getSideAxis","firstChar","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","isStart","getOppositeAxisPlacements","flipAlignment","expandPaddingObject","getPaddingObject","rectToClientRect","computeCoordsFromPlacement","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","detectOverflow","_await$platform$isEle","platform2","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","MAX_RESET_COUNT","computePosition","middleware","platformWithDetectOverflow","statefulPlacement","resetCount","middlewareData","currentMiddleware","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","max2","offset3","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements2","overflow","overflows","overflowsData","sides2","side2","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","_overflowsData$filter2","placement2","currentSideAxis","overflow2","getSideOffsets","isAnySideFullyClipped","hide","offsets","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","mainAxis","crossAxis","_middlewareData$offse","diffCoords","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","min2","limitedCoords","_state$middlewareData","_state$middlewareData2","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","getNodeName","getWindow2","_node$ownerDocument","isShadowRoot","isOverflowElement","overflowX","overflowY","getComputedStyle2","isTableElement","isTopLayer","willChangeRe","containRe","isNotNone","isWebKitValue","isContainingBlock","elementOrCss","isWebKit","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","domElement","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","SCROLLBAR_MAX","getViewportRect","visualViewport","visualViewportBased","windowScrollbarX","bodyStyles","bodyMarginInline","clippingStableScrollbarWidth","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","cache2","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","currentNodeIsContaining","getClippingRect","clippingAncestors","firstRect","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL2","platform","rectsAreEqual","observeMove","_io","refresh","skip","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset2","shift2","flip2","size2","hide2","arrow2","computePosition2","mergedOptions","platformWithCache","PopperContext","usePopperContext","_tmpl$","DEFAULT_SIZE","HALF_DEFAULT_SIZE","ROTATION_DEG","PopperArrow","dir","contentStyle","createComputedStyle","stroke","borderWidth","_el$","_el$2","PopperPositioner","createDOMRect","anchorRect","getAnchorElement","getAnchorRect","isValidPlacement","flip22","REVERSE_BASE_PLACEMENT","getTransformOrigin","readingDirection","basePlacement","reversePlacement","PopperRoot","positionerRef","setPositionerRef","arrowRef","setArrowRef","currentPlacement","setCurrentPlacement","anchorRef","floatingEl","arrowEl","arrowOffset","finalGutter","hasAlignment","referenceWidth","arrowX","arrowY","cleanupAutoUpdate","positioner","Popper","DATA_TOP_LAYER_ATTR","originalBodyPointerEvents","hasDisabledBodyPointerEvents","layers","indexOf","layer","isTopMostLayer","getPointerBlockingLayers","getTopMostPointerBlockingLayer","hasPointerBlockingLayer","isBelowPointerBlockingLayer","highestBlockingIndex","addLayer","removeLayer","assignPointerEventToLayers","disableBodyPointerEvents","ownerDocument","restoreBodyPointerEvents","layerStack","POINTER_DOWN_OUTSIDE_EVENT","FOCUS_OUTSIDE_EVENT","createInteractOutside","pointerDownTimeoutId","clickHandler","onPointerDownOutside","onFocusOutside","onInteractOutside","isEventOutside","handler2","pointerDownOutsideEvent","focusOutsideEvent","createEscapeKeyDown","handleKeyDown","DismissableLayerContext","useOptionalDismissableLayerContext","DismissableLayer","parentContext","nestedLayers","registerNestedLayer","parentUnregister","unregisterFromParentLayer","disableOutsidePointerEvents","createDisclosureState","setIsOpen","createRegisterId","access2","createPresence","refStyles","getAnimationName","presentState","setPresentState","animationName","prevShow","show","prevAnimationName","currentAnimationName","handleAnimationStart","handleAnimationEnd","isCurrentAnimation","presence_default","src_default","FORM_CONTROL_PROP_NAMES","createFormControl","defaultId","labelId","setLabelId","fieldId","setFieldId","descriptionId","setDescriptionId","errorMessageId","setErrorMessageId","getAriaLabelledBy","fieldId2","fieldAriaLabel","fieldAriaLabelledBy","hasAriaLabelledBy","getAriaDescribedBy","fieldAriaDescribedBy","FormControlContext","useFormControlContext","FormControlDescription","FormControlLabel","createFormResetListener","element2","form","getClosestForm","isFormElement","FormControlErrorMessage","isInvalid","AUTOFOCUS_ON_MOUNT_EVENT","AUTOFOCUS_ON_UNMOUNT_EVENT","EVENT_OPTIONS","focusScopeStack","createFocusScope","setIsPaused","focusScope","lastFocusedElement","onMountAutoFocus","onUnmountAutoFocus","createSentinel","tabbables","firstTabbable","lastTabbable","shouldPreventUnmountAutoFocus","previouslyFocusedElement","mountEvent","unmountEvent","startSentinel","endSentinel","mutations","DATA_LIVE_ANNOUNCER_ATTR","createHideOutside","ariaHideOutside","refCountMap","observerStack","visibleNodes","hiddenNodes","root2","acceptNode","acceptRoot","hide3","changes","change","observerWrapper","contains2","activeStyles","createStyle","originalStyles","activeStyle","activeStyle2","style_default","getScrollDimensions","isScrollContainer","getScrollAtLocation","stopAt","directionFactor","availableScroll","availableScrollTop","wrapperReached","scrollOffset","scrolled","preventScrollStack","setPreventScrollStack","createPreventScroll","defaultedProps","preventScrollId","currentTouchStart","currentTouchStartAxis","currentTouchStartDelta","scrollbarWidth","offsetTop","offsetLeft","maybePreventWheel","logTouchStart","maybePreventTouch","getTouchXY","getDeltaXY","axisDelta","resultsInScroll","wouldScroll","shouldCancel","wouldResultInScroll","targetInWrapper","preventScroll_default","src_default2","radio_group_exports","RadioGroupItem","RadioGroupItemControl","RadioGroupItemDescription","RadioGroupItemIndicator","RadioGroupItemInput","RadioGroupItemLabel","RadioGroupLabel","RadioGroup","RadioGroupRoot","useRadioGroupContext","RadioGroupContext","RadioGroupItemContext","useRadioGroupItemContext","formControlContext","radioGroupContext","inputId","setInputId","inputRef","setInputRef","setIsFocused","isDefault","setRef","present","radioContext","ariaLabelledBy","ariaDescribedBy","isInternalChangeEvent","setIsInternalChangeEvent","onBlur","formControlProps","isDefaultValue","isSelectedValue","radio","ListKeyboardDelegate","keyAfter","keyBefore","menu","pageY","keyAbove","keyBelow","fromKey","createSelectableList","keyboardDelegate","MenubarContext","useOptionalMenubarContext","NavigationMenuContext","useOptionalNavigationMenuContext","MenuContext","useOptionalMenuContext","useMenuContext","MenuItemContext","useMenuItemContext","MenuRootContext","useMenuRootContext","MenuItemBase","rootContext","menuContext","labelRef","setLabelRef","isHighlighted","selectableItem","onPointerMove","ariaChecked","MenuCheckboxItem","MENUBAR_KEYS","MENU_KEYS","MenuTrigger","optionalMenubarContext","handleClick","onMouseOver","MenuContentBase","optionalNavigationMenuContext","lastPointerX","isRootModalContent","selectableList","onEscapeKeyDown","pointerXHasChanged","commonAttributes","MenuContent","MenuGroupContext","useMenuGroupContext","MenuGroup","MenuGroupLabel","MenuIcon","MenuItem","MenuItemDescription","MenuItemIndicator","MenuItemLabel","MenuPortal","MenuRadioGroupContext","useMenuRadioGroupContext","MenuRadioGroup","MenuRadioItem","getPointerGraceArea","contentEl","pointerX","pointerY","isPointerInGraceArea","Menu","parentDomCollectionContext","parentMenuContext","pointerGraceTimeoutId","pointerGraceIntent","pointerDir","triggerId","setTriggerId","contentId","setContentId","triggerRef","setTriggerRef","contentRef","setContentRef","focusStrategy","setFocusStrategy","nestedMenus","setNestedMenus","DomCollectionProvider","disclosureState","contentPresent","listState","focusStrategy2","recursively","toggle","_focusContent","focusContent","registerNestedMenu","isPointerMovingToSubmenu","onItemEnter","onItemLeave","onTriggerLeave","intent","MenuSub","SUB_CLOSE_KEYS","MenuSubContent","isKeyDownInside","isCloseKey","isSubMenu","SELECTION_KEYS","SUB_OPEN_KEYS","MenuSubTrigger","openTimeoutId","clearOpenTimeout","parentSelectionManager","pointerGraceTimer","MenuRoot","separator_exports","SeparatorRoot","Separator","dropdown_menu_exports","DropdownMenuContent","DropdownMenu","DropdownMenuRoot","hasInteractedOutside","_tmpl$2","_tmpl$22","_tmpl$3","_tmpl$4","_tmpl$5","_tmpl$6","_tmpl$7","_tmpl$8","_tmpl$9","_tmpl$0","_tmpl$1","_tmpl$10","_tmpl$11","_tmpl$12","_tmpl$13","_tmpl$14","_tmpl$15","_tmpl$16","_tmpl$17","_tmpl$18","_tmpl$19","_tmpl$20","_tmpl$21","_tmpl$222","_tmpl$23","Search","Trash","ChevronDown","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Sun","Moon","Monitor","Wifi","Offline","Settings","PiPIcon","Copier","Pencil","CopiedCopier","_el$15","_el$16","ErrorCopier","List","Check","_el$19","_el$20","_el$21","_el$22","CheckCircle","LoadingCircle","XCircle","PauseCircle","TanstackLogo","_el$27","_el$28","_el$29","_el$30","_el$31","_el$32","_el$33","_el$34","_el$35","_el$36","_el$37","_el$38","_el$39","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","_el$46","_el$47","_el$48","_el$49","_el$50","_el$51","_el$52","_el$53","_el$54","_el$55","_el$56","_el$57","_el$58","_el$59","_el$60","_el$61","_el$62","_el$63","_el$64","_el$65","_el$66","_el$67","_el$68","_el$69","_el$70","_el$71","_el$72","_el$73","_el$74","_el$75","_el$76","_el$77","_el$78","_el$79","_el$80","_el$81","_el$82","_el$83","_el$84","_el$85","_el$86","_el$87","_el$88","_el$89","_el$90","_el$91","_el$92","_el$93","_el$94","_el$95","_el$96","_el$97","_el$98","_el$99","_el$100","_el$101","_el$102","_el$103","_el$104","_el$105","_el$106","_el$107","_el$108","_el$109","_el$110","_el$111","_el$112","_el$113","_el$114","_el$115","_el$116","_el$117","_el$118","_el$119","_tmpl$24","_tmpl$25","_tmpl$32","_tmpl$42","_tmpl$52","_tmpl$62","_tmpl$72","_tmpl$82","_tmpl$92","_tmpl$02","_tmpl$110","_tmpl$102","chunkArray","size3","Expander","darkStyles","lightStyles","CopyButton","copyState","setCopyState","_p$","_v$","_v$2","ClearArrayButton","_el$3","DeleteItemButton","_el$4","ToggleValueButton","_el$5","Explorer","expanded","setExpanded","toggleExpanded","old","expandedPages","setExpandedPages","subEntries","subEntryPages","currentDataPath","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","_el$10","_el$11","_el$12","_el$13","_v$3","_v$4","_v$5","_v$6","_el$14","_el$23","_el$24","_el$26","_v$1","_v$10","_el$17","_el$18","changeEvent","_v$7","_v$8","_v$9","_v$0","stylesFactory","border","light","_tmpl$26","_tmpl$27","_tmpl$33","_tmpl$53","_tmpl$63","_tmpl$73","_tmpl$83","_tmpl$93","_tmpl$03","_tmpl$111","_tmpl$103","_tmpl$112","_tmpl$122","_tmpl$132","_tmpl$142","_tmpl$152","_tmpl$162","_tmpl$172","_tmpl$182","_tmpl$192","_tmpl$202","_tmpl$212","_tmpl$223","_tmpl$232","_tmpl$242","_tmpl$252","_tmpl$262","_tmpl$272","_tmpl$28","_tmpl$29","_tmpl$30","_tmpl$31","_tmpl$322","_tmpl$332","_tmpl$34","_tmpl$35","_tmpl$36","_tmpl$37","_tmpl$38","selectedQueryHash","setSelectedQueryHash","selectedMutationId","setSelectedMutationId","panelWidth","setPanelWidth","offline","setOffline","darkStyles2","lightStyles2","transitionsContainerRef","panelPosition","pip_open","PiPPanel","ContentView","DraggablePanel","getPanelDynamicStyles","resizeCB","closeBtnRef","isResizing","setIsResizing","handleDragStart","panelElement","newSize","minHeight","minWidth","runDrag","moveEvent","valToAdd","panelRef","rootContainer","currentPosition","previousPaddings","previousValue","_ref$3","currentHeight","currentWidth","_ref$4","setupQueryCacheSubscription","setupMutationCacheSubscription","containerRef","selectedView","setSelectedView","sortOrder","mutationSort","mutationSortOrder","sortFn","mutationSortFn","query_cache","mutation_cache","queryCount","createSubscribeToQueryCacheBatcher","queryCache","queries","curr","filtered","mutationCount","createSubscribeToMutationCacheBatcher","mutationCache","setDevtoolsPosition","setComputedVariables","variable","_el$25","_ref$5","QueryStatusCount","MutationStatusCount","sendDevToolsEvent","_c$","QueryRow","MutationRow","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","_v$20","_v$21","_v$22","_v$23","_v$24","_v$25","_v$26","QueryDetails","MutationDetails","getObserverCountColorStyles","_v$27","_v$28","_v$29","mutationState","_v$30","_v$31","_v$32","stale","fresh","fetching","paused","inactive","QueryStatus","tagRef","setMouseOver","showLabel","_ref$6","_v$33","_v$34","restoringLoading","setRestoringLoading","dataMode","setDataMode","dataEditError","setDataEditError","activeQuery","activeQueryFresh","activeQueryState","activeQueryStateData","statusLabel","queryStatus","handleRefetch","triggerError","errorType","activeQueryVal","__previousQueryOptions","restoreQueryAfterLoadingOrError","previousState","previousOptions","getQueryStatusColors","_v$35","_v$36","_v$37","_v$38","_v$39","_v$40","_$p","parsedData","_v$41","_v$42","_v$43","_v$44","_v$45","_v$46","_v$47","_v$48","_v$49","_v$50","_v$51","_v$52","_v$53","_v$54","_v$55","_v$56","_v$57","_v$58","_v$59","_v$60","_v$61","_v$62","_v$63","_v$64","_v$65","_v$66","_v$67","_v$68","_v$69","_v$70","_v$71","_v$72","activeMutation","_el$120","_el$121","_el$122","_el$123","_el$124","_el$125","_el$126","_el$127","_el$128","_el$129","_v$73","_v$74","_v$75","_v$76","_v$77","_v$78","_v$79","_v$80","_v$81","_v$82","_v$83","_v$84","queryCacheMap","equalityCheck","shouldUpdate","mutationCacheMap","DEV_TOOLS_EVENT","queryHash","metadata","stylesFactory2","DevtoolsComponent","localStore","setLocalStore","preference","DevtoolsComponent_default"],"mappings":"g5BAAA,MAAMA,GAAK,SAAS,aAAa,IACjC,SAASC,IAAK,CACZ,MAAMC,EAAI,OAAO,YAAc,UAAY,YAAc,WAAW,SAAW,QAAU,WAAYC,EAAI,OAAO,QAAU,UAAY,QAAU,OAAO,SAAW,QAAU,OAAQ,EAAI,OAAO,QAAU,UAAY,QAAU,OAAO,SAAW,QAAU,OAAQ,EAAI,OAAO,MAAQ,UAAY,MAAQ,KAAK,SAAW,QAAU,KACpU,OAAOD,GAAKC,GAAK,GAAK,GAAK,MAAQH,EACrC,CACK,MAACI,GAAIH,KAAMI,GAAK,CACnB,IAAK,CACH,SAAU,GAEV,SAAU,EACX,EACD,KAAM,CAAE,EACR,SAAU,GAEV,SAAU,GAEV,SAAU,CACR,KAAM,OACN,IAAK,MACN,EACD,GAAG,OAAO,SAAW,UAAY,QAAU,QAAU,CAAE,CACzD,GAAQ,CAEN,GAAGA,GAAG,GAQR,GAAE,MAACC,GAAK,OACR,SAASC,GAAGL,EAAGC,EAAIG,GAAI,CACrB,OAAOJ,EAAE,WAAWC,CAAC,CACvB,CACA,SAASK,GAAGN,EAAGC,EAAIG,GAAI,CACrB,OAAOC,GAAGL,EAAGC,CAAC,EAAID,EAAI,GAAGC,CAAC,GAAGD,CAAC,EAChC,CACA,SAASO,GAAGP,EAAG,CACb,OAAO,OAAOA,GAAK,UAAYA,EAAE,WAAW,SAAS,GAAKA,EAAE,SAAS,GAAG,CAC1E,CACA,SAASQ,GAAGR,EAAG,CACb,OAAOO,GAAGP,CAAC,IAAMA,EAAIA,EAAE,MAAM,EAAG,EAAE,GAAIA,CACxC,CACA,SAASS,GAAGT,EAAG,CACb,OAAOA,EAAIQ,GAAGR,CAAC,EAAGA,EAAIM,GAAGN,CAAC,EAAG,OAAO,QAAU,WAAa,OAAOA,CAAC,EAAI,UAAUA,CAAC,GACpF,CACWS,GAAG,MAAM,EAmBf,MAACC,GAAK,IAAKC,GAAK,OAAO,UAAU,EAAoBC,GAAK,CAC7D,UAAW,EAEX,KAAM,IACN,OAAQ,IACR,IAAK,IACL,KAAM,GACR,EAIA,SAASC,GAAGb,EAAG,CACb,MAAO,aAAcA,CACvB,CAiDA,IAAIc,IAAuBd,IAAOA,EAAEA,EAAE,YAAY,EAAI,CAAC,EAAI,aAAcA,EAAEA,EAAE,WAAW,EAAI,CAAC,EAAI,YAAaA,EAAEA,EAAE,UAAU,EAAI,CAAC,EAAI,WAAYA,EAAEA,EAAE,UAAU,EAAI,CAAC,EAAI,WAAYA,EAAEA,EAAE,YAAY,EAAI,CAAC,EAAI,aAAcA,EAAEA,EAAE,WAAW,EAAI,CAAC,EAAI,YAAaA,EAAEA,EAAE,WAAW,EAAI,CAAC,EAAI,YAAaA,EAAEA,EAAE,WAAW,EAAI,CAAC,EAAI,YAAaA,EAAEA,EAAE,YAAY,EAAI,CAAC,EAAI,aAAcA,EAAEA,EAAE,eAAe,EAAI,CAAC,EAAI,gBAAiBA,EAAEA,EAAE,cAAc,EAAI,EAAE,EAAI,eAAgBA,EAAEA,EAAE,0BAA0B,EAAI,EAAE,EAAI,2BAA4BA,EAAEA,EAAE,oBAAoB,EAAI,EAAE,EAAI,qBAAsBA,EAAEA,EAAE,YAAY,EAAI,EAAE,EAAI,aAAcA,EAAEA,EAAE,WAAW,EAAI,EAAE,EAAI,YAAaA,EAAEA,EAAE,WAAW,EAAI,EAAE,EAAI,YAAaA,EAAEA,EAAE,WAAW,EAAI,EAAE,EAAI,YAAaA,EAAEA,EAAE,YAAY,EAAI,EAAE,EAAI,aAAcA,EAAEA,EAAE,YAAY,EAAI,EAAE,EAAI,aAAcA,EAAEA,EAAE,WAAW,EAAI,EAAE,EAAI,YAAaA,EAAEA,EAAE,0BAA0B,EAAI,EAAE,EAAI,2BAA4BA,EAAEA,EAAE,wBAAwB,EAAI,EAAE,EAAI,yBAA0BA,EAAEA,EAAE,wBAAwB,EAAI,EAAE,EAAI,yBAA0BA,EAAEA,EAAE,kBAAkB,EAAI,EAAE,EAAI,mBAAoBA,EAAEA,EAAE,iBAAiB,EAAI,EAAE,EAAI,kBAAmBA,EAAEA,EAAE,uBAAuB,EAAI,EAAE,EAAI,wBAAyBA,EAAEA,EAAE,mCAAmC,EAAI,EAAE,EAAI,oCAAqCA,EAAEA,EAAE,oBAAoB,EAAI,EAAE,EAAI,qBAAsBA,EAAEA,EAAE,mBAAmB,EAAI,EAAE,EAAI,oBAAqBA,EAAEA,EAAE,0BAA0B,EAAI,EAAE,EAAI,2BAA4BA,EAAEA,EAAE,8BAA8B,EAAI,EAAE,EAAI,+BAAgCA,EAAEA,EAAE,iBAAiB,EAAI,EAAE,EAAI,kBAAmBA,EAAEA,EAAE,iBAAiB,EAAI,EAAE,EAAI,kBAAmBA,EAAEA,EAAE,oBAAoB,EAAI,EAAE,EAAI,qBAAsBA,EAAEA,EAAE,oBAAoB,EAAI,EAAE,EAAI,qBAAsBA,EAAEA,EAAE,+BAA+B,EAAI,EAAE,EAAI,gCAAiCA,EAAEA,EAAE,sBAAsB,EAAI,EAAE,EAAI,uBAAwBA,EAAEA,EAAE,mBAAmB,EAAI,EAAE,EAAI,oBAAqBA,IAAIc,IAAM,CAAA,CAAE,EAAGC,IAAuBf,IAAOA,EAAEA,EAAE,KAAO,CAAC,EAAI,OAAQA,EAAEA,EAAE,QAAU,CAAC,EAAI,UAAWA,EAAEA,EAAE,aAAe,CAAC,EAAI,eAAgBA,EAAEA,EAAE,YAAc,CAAC,EAAI,cAAeA,IAAIe,IAAM,CAAA,CAAE,EAC9lE,MAQFC,GAAK,CACN,MAAO,QAaP,KAAM,OACN,QAAS,QAUT,QAAS,UACT,WAAY,WACZ,KAAM,OAEN,QAAS,QACT,OAAQ,SACR,UAAW,YACX,OAAQ,SAER,OAAQ,SAER,IAAK,KAGP,EA0MMC,GAAMjB,GAAM,CAChB,IAAIC,EAAI,KACR,OAAQD,EAAC,CACP,IAAK,gBACHC,EAAI,MACJ,MACF,IAAK,MACHA,EAAI,iBACJ,MACF,IAAK,MACHA,EAAI,iBACJ,MACF,IAAK,MACHA,EAAI,uBACJ,MACF,IAAK,QACHA,EAAI,kBACJ,MACF,IAAK,MACHA,EAAI,gBACJ,MACF,IAAK,SACHA,EAAI,uCACJ,MACF,IAAK,gBACHA,EAAI,sCACJ,MACF,IAAK,QACHA,EAAI,YACJ,MACF,IAAK,OACHA,EAAI,aACJ,MACF,IAAK,SACHA,EAAI,sBACJ,MACF,IAAK,eACHA,EAAI,OACJ,MACF,IAAK,gBACHA,EAAI,OACF,IAAM,SAAS,UAAU,SAAS,KAAK,OAAO,UAAU,cAAc,EAAE,QAAQgB,GAAG,QAAQ,EAAG,MAAM,EAAE,QACpG,yDACA,OACV,EAAY,GACZ,EACM,MACF,IAAK,cACHhB,EAAI,mCACJ,MACF,IAAK,eACHA,EAAI,oBACJ,MACF,IAAK,QACHA,EAAI,sEACJ,MACF,IAAK,KACHA,EAAI,wFACJ,MACF,IAAK,MACHA,EAAI,kDACJ,MACF,IAAK,cACHA,EAAI,4BACJ,MACF,IAAK,OACHA,EAAI,gDACJ,MACF,IAAK,OACHA,EAAI,kCACJ,MACF,IAAK,WACHA,EAAI,gFACJ,MACF,IAAK,cACHA,EAAI,kHACJ,MACF,IAAK,YACHA,EAAI,wDACJ,MACF,IAAK,QACHA,EAAI,mTACJ,MACF,IAAK,aACHA,EAAI,8IACJ,MACF,IAAK,cACHA,EAAI,0RACJ,MACF,IAAK,WACHA,EAAI,6BACJ,MACF,IAAK,SACHA,EAAI,yDACJ,MACF,IAAK,eACHA,EAAI,+BACJ,MACF,IAAK,UACHA,EAAI,IAAI,OACN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASL,QAAQ,OAAQ,EAAE,EACpB,GACR,EACM,MACF,IAAK,aACHA,EAAI,WACJ,MACF,IAAK,aACHA,EAAI,WACJ,MACF,IAAK,aACHA,EAAI,WACJ,MACF,IAAK,qBACHA,EAAI,4OACJ,MACF,IAAK,sBACHA,EAAI,yOACJ,MACF,IAAK,oBACHA,EAAI,wQACJ,MACF,IAAK,qBACHA,EAAI,sBACJ,MACF,IAAK,oBACHA,EAAI,6CACJ,KACH,CACD,OAAOA,CACT,EAWMiB,GAAK,CAAClB,EAAGC,KAAO,OAAOD,GAAK,WAAaA,EAAIiB,GAAGjB,CAAC,GAAK,IAAI,OAAOA,CAAC,GAAIA,EAAE,KAAKC,CAAC,GAA2KkB,GAAK,CAACnB,EAAGC,IAAM,CAC5Q,OAAOD,GAAK,WAAaA,EAAIiB,GAAGjB,CAAC,GAAK,IAAI,OAAOA,CAAC,GAClD,MAAM,EAAIC,EAAE,MAAMD,CAAC,EACnB,OAAO,EAAIA,EAAE,MAAM,YAAW,EAAG,QAAQ,GAAG,GAAK,EAAI,EAAE,IACpD,IAAO,CACN,WAAY,GACZ,UAAW,EACX,YAAa,CAAE,CACrB,EACA,EAAM,CACF,WAAY,OAAO,EAAE,OAAS,SAAW,EAAE,MAAQ,GACnD,UAAW,EAAE,CAAC,EACd,YAAa,EAAE,MAAM,CAAC,CACvB,EAAG,IACN,EAAGoB,GAAK,CAACpB,EAAGC,IAAM,CAChB,OAAOD,GAAK,WAAaA,EAAIiB,GAAGjB,CAAC,GAAK,IAAI,OAAOA,CAAC,GAClD,MAAM,EAAI,CAAA,EAAI,EAAIC,EAAE,SAASD,CAAC,EAC9B,UAAWqB,KAAK,EACd,EAAE,KAAK,CACL,WAAY,OAAOA,EAAE,OAAS,SAAWA,EAAE,MAAQ,GACnD,UAAWA,EAAE,CAAC,EACd,YAAaA,EAAE,MAAM,CAAC,CAC5B,CAAK,EACH,OAAO,CACT,EAaA,SAASC,GAAGtB,EAAG,CACb,MAAMC,EAAID,EAAE,MAAM,UAAU,EAC5B,OAAOC,EAAIA,EAAE,OAAS,CACxB,CAuBA,SAASsB,GAAGvB,EAAGC,EAAG,CAChB,MAAM,EAAID,EAAE,YAAYC,CAAC,EACzB,OAAO,EAAI,OAAO,cAAc,CAAC,EAAI,MACvC,CA4BA,MAAMuB,GAAK,iEAAkEC,GAAK,aAClF,SAASC,GAAG1B,EAAI,GAAIC,EAAIuB,GAAI,CAC1B,IAAI,EAAI,GACR,QAAS,EAAI,EAAG,EAAIxB,EAAG,IACrB,GAAKC,EAAE,KAAK,MAAM,KAAK,SAAWA,EAAE,MAAM,CAAC,EAC7C,OAAO,CACT,CACA,SAAS0B,GAAG3B,EAAI,GAAI,CAClB,OAAO0B,GAAG1B,EAAGyB,EAAE,CACjB,CAmBA,SAASG,GAAG5B,EAAG,CACb,OAAOA,EAAE,QAAQ,SAAWC,GAAMA,EAAE,YAAW,CAAE,CACnD,CACA,MAAM4B,GAAK,CAAC7B,EAAGC,EAAI,MAAQ,CACzB,IAAI,EAAID,EAAE,QAAQ,IAAI,OAAO,eAAgB,GAAG,EAAGC,EAAI,IAAI,EAAE,YAAW,EACxE,MAAM,EAAI,IAAI,OAAO,IAAIA,CAAC,EAAE,EAC5B,OAAO,EAAE,KAAKD,CAAC,IAAM,EAAI,EAAE,QAAQ,EAAG,EAAE,GAAI,CAC9C,EACA,SAAS8B,GAAG9B,EAAG,CACb,OAAOA,EAAE,QAAQ,gBAAkBC,GAAMA,EAAE,MAAM,EAAE,EAAE,YAAa,CAAA,CACpE,CACA,SAAS8B,GAAG/B,EAAG,CACb,OAAO4B,GAAGE,GAAG9B,CAAC,CAAC,CACjB,CAsCA,SAASgC,GAAGhC,EAAG,CACb,IAAIC,EAAI,GACR,QAAS,EAAI,EAAG,EAAID,EAAE,OAAQ,EAAI,EAAG,IAAK,CACxC,MAAMqB,EAAIrB,EAAE,WAAW,CAAC,EACxBqB,GAAK,GAAKA,GAAK,IAAMpB,GAAKD,EAAE,OAAO,CAAC,EAAIqB,EAAI,MAAQpB,GAAK,OAAO,aAAa,IAAMoB,GAAK,GAAK,EAAE,EAAGpB,GAAK,OAAO,aAAa,IAAMoB,GAAK,EAAI,EAAE,EAAGpB,GAAK,OAAO,aAAa,IAAMoB,GAAK,EAAI,EAAE,IAAMpB,GAAK,OAAO,aAAa,IAAMoB,GAAK,EAAI,EAAE,EAAGpB,GAAK,OAAO,aAAa,IAAMoB,GAAK,EAAI,EAAE,EACvR,CACD,OAAOpB,CACT,CAoNA,SAASgC,IAAK,CACZ,MAAMjC,EAAI,YAAY,GAAG,SAAS,EAAGC,EAAI,IAAI,WAAWD,EAAE,MAAM,EAChE,OAAQC,EAAE,CAAC,EAAI,SAAWA,EAAE,CAAC,EAAI,MAAQA,EAAE,CAAC,EAAI,IAAMA,EAAE,CAAC,EAAC,CACxD,IAAK,WACH,MAAO,GACT,IAAK,YACL,QACE,MAAO,EACV,CACH,CACyC,MAAAiC,GAAK,CAAClC,EAAGC,EAAI,KAAO,CAC3D,IAAI,EAAID,EAAE,cACV,MAAM,EAAI,EAAE,QAAQ,IAAI,GAAK,EAAGqB,EAAI,EAAE,QAAQ,IAAI,GAAK,EAAGc,EAAI,EAAE,QAAQ,IAAI,GAAK,GAChF,GAAKd,GAAKc,KAAO,EAAI,EAAE,MAAM,CAAC,GAAI,IAAMlC,EAAI,GAAIoB,IAAMpB,EAAI,GAAIkC,IAAMlC,EAAI,IACzE,MAAM,EAAI,SAAS,EAAGA,CAAC,EACvB,GAAI,OAAO,MAAM,CAAC,GAAK,EAAE,QAAU,EACjC,MAAM,IAAI,MAAM,uBAAuBD,CAAC,KAAKC,CAAC,SAAS,EACzD,OAAO,CACT,EAqHA,SAASmC,GAAGpC,EAAGC,EAAG,CAChB,IAAI,EAAIA,GAAG,KACX,MAAM,EAAIA,GAAG,KAAMoB,EAAIpB,GAAG,OAC1B,GAAI,CAAC,GAAK,EACR,OAAQoB,EAAC,CACP,KAAKL,GAAG,KACR,KAAKA,GAAG,OAAO,EACb,EAAI,GAAG,CAAC,YAAYK,CAAC,GACrB,MACF,KAAKL,GAAG,OACN,EAAI,GAAG,CAAC,IAAIK,CAAC,GACb,MACF,QACE,EAAI,GAAG,CAAC,GACR,KACH,CACH,OAAO,IAAI,KAAK,CAACrB,CAAC,EAAG,CACnB,KAAM,CACV,CAAG,CACH,CACA,SAASqC,GAAGrC,EAAG,CACb,IAAIC,EAAIa,GAAG,YAAY,EACvB,OAAQ,IAAI,SAASd,CAAC,EAAE,UAAU,EAAGiC,GAAE,CAAE,EAAE,SAAS,EAAE,EAAE,YAAa,EAAA,CACnE,IAAK,WACHhC,EAAIa,GAAG,YAAY,EACnB,MACF,IAAK,WACL,IAAK,WACL,IAAK,WACL,IAAK,WACHb,EAAIa,GAAG,YAAY,EACnB,MACF,IAAK,WACHb,EAAIa,GAAG,WAAW,EAClB,MACF,IAAK,WACHb,EAAIa,GAAG,WAAW,EAClB,MACF,IAAK,WACHb,EAAIa,GAAG,YAAY,EACnB,MACF,IAAK,WACHb,EAAIa,GAAG,iBAAiB,EACxB,MACF,IAAK,WACHb,EAAIa,GAAG,iBAAiB,EACxB,KACH,CACD,OAAOb,CACT,CA0JM,MAAAqC,GAAK,qBAAsBC,GAAK,gBAAiBC,GAAK,mBAAoBC,GAAK,kBAAmBC,GAAK,kBAAmBC,GAAK,kBAAmBC,GAAK,kBAAmBC,GAAK,oBAAqBC,GAAK,6BAA8BC,GAAK,iBAClP,SAASC,GAAGhD,EAAG,CACb,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAC,CACzC,CA8BA,SAASiD,GAAGjD,EAAG,CACb,MAAMC,EAAI+C,GAAGhD,CAAC,EACd,OAAOC,IAAMqC,IAAMrC,IAAMsC,IAAMtC,IAAMuC,IAAMvC,IAAMwC,IAAMxC,IAAM0C,IAAM1C,IAAM2C,IAAM3C,IAAMyC,EACvF,CACA,SAASQ,GAAGlD,EAAG,CACb,MAAMC,EAAI+C,GAAGhD,CAAC,EACd,OAAOC,GAAK4C,IAAM5C,GAAK6C,EACzB,CASA,SAASK,GAAGnD,EAAG,CACb,GAAI,CAACoD,GAAGpD,CAAC,EACP,MAAO,GACT,MAAMC,EAAI,sBAAuB,EAAI,8BAA+B,EAAI,OACtE,IAAM,SAAS,UAAU,SAAS,KAAK,OAAO,UAAU,cAAc,EAAE,QAAQA,EAAG,MAAM,EAAE,QACzF,yDACA,OACN,EAAQ,GACR,EACE,OAAQiD,GAAGlD,CAAC,EAAI,EAAI,GAAG,KAAKqD,GAAGrD,CAAC,CAAC,CACnC,CACA,SAASsD,GAAGtD,EAAGC,EAAG,CAChB,OAAOD,IAAIC,CAAC,CACd,CACA,SAASsD,GAAGvD,EAAGC,EAAG,CAChB,MAAM,EAAIqD,GAAGtD,EAAGC,CAAC,EACjB,OAAOkD,GAAG,CAAC,EAAI,EAAI,MACrB,CAIWI,GAAGrD,GAAG,KAAK,EAAQqD,GAAGrD,GAAG,SAAS,EAC7C,SAASsD,GAAGxD,EAAG,CACb,OAAOgD,GAAGhD,CAAC,IAAM+C,EACnB,CAIA,SAASK,GAAGpD,EAAG,CACb,MAAMC,EAAI,OAAOD,EACjB,MAAO,CAAC,CAACA,IAAMC,GAAK,UAAYA,GAAK,WACvC,CACA,SAASwD,GAAGzD,EAAG,CACb,MAAO,CAAC,CAACA,GAAK,OAAOA,GAAK,QAC5B,CACA,SAAS0D,GAAG1D,EAAG,CACb,GAAI,OAAO,UAAU,SAAS,KAAKA,CAAC,IAAM,kBACxC,MAAO,GACT,MAAMC,EAAI,OAAO,eAAeD,CAAC,EACjC,OAAOC,IAAM,MAAQA,IAAM,OAAO,SACpC,CAmBA,MAAM0D,GAAM3D,GAAM,CAChB,UAAWC,KAAKD,EACd,GAAI,OAAO,UAAU,eAAe,KAAKA,EAAGC,CAAC,EAC3C,MAAO,GACX,MAAO,EACT,EACA,SAAS2D,GAAG5D,EAAG,CACb,OAAO,OAAO,QAAU,KAAOA,aAAa,SAAWoD,GAAGpD,CAAC,GAAK,OAAOA,EAAE,MAAQ,YAAc,OAAOA,EAAE,OAAS,UACnH,CAuBA,SAAS6D,GAAG7D,EAAG,CACb,MAAMC,EAAI,CAAA,EACV,UAAW,KAAKD,EACd,OAAO,UAAU,eAAe,KAAKA,EAAG,CAAC,GAAKC,EAAE,KAAK,CAAC,EACxD,OAAOA,CACT,CA+BA,SAAS6D,GAAG9D,EAAGC,EAAG,EAAI,GAAI,CACxB,GAAIyD,GAAG1D,CAAC,GAAK0D,GAAGzD,CAAC,EACf,UAAW,KAAK4D,GAAG5D,CAAC,EAClByD,GAAG1D,EAAE,CAAC,CAAC,GAAK0D,GAAGzD,EAAE,CAAC,CAAC,EAAI6D,GAAG9D,EAAE,CAAC,EAAGC,EAAE,CAAC,EAAG,CAAC,GAAK,GAAK,OAAOD,EAAE,CAAC,EAAI,OAASA,EAAE,CAAC,EAAIC,EAAE,CAAC,GACtF,OAAOD,CACT,CA6DA,SAAS+D,GAAG/D,KAAMC,EAAG,CACnB,OAAO,IAAID,EAAE,YAAY,GAAGC,CAAC,CAC/B,CA4DA,SAAS+D,GAAGhE,EAAGC,EAAG,CAChB,OAAOD,IAAMC,GAAKD,IAAMA,GAAKC,IAAMA,CACrC,CAwDA,SAASoD,GAAGrD,EAAG,CACb,GAAIA,GAAK,KAAM,CACb,GAAI,CACF,OAAO,SAAS,UAAU,SAAS,KAAKA,CAAC,CAC/C,MAAY,CACP,CACD,GAAI,CACF,MAAO,GAAKA,CAClB,MAAY,CACP,CACF,CACD,MAAO,EACT,CACA,SAASiE,GAAGjE,EAAGC,EAAI,CAAC,GAAI,OAAQ,KAAK,EAAG,CACtC,OAAOyD,GAAG1D,CAAC,EAAI,OAAO,KAAKA,CAAC,EAAE,OAAQ,GAAM,CAC1C,QAAS,EAAI,EAAGqB,EAAIpB,EAAE,OAAQ,EAAIoB,EAAG,IACnC,GAAIrB,EAAE,CAAC,GAAKC,EAAE,CAAC,EACb,MAAO,GACX,MAAO,EACX,CAAG,EAAE,KAAI,EAAG,IAAK,GAAM,GAAG,CAAC,IAAID,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,GAAG,EAAI,OAAOA,CAAC,CAC3D,CAeA,SAASkE,GAAGlE,EAAGC,EAAG,CAChB,IAAI,EACJ,OAAO,OAAOA,GAAK,SAAW,EAAIA,EAAE,MAAM,GAAG,EAAI,EAAIA,EAAG,EAAE,OACxD,CAAC,EAAGoB,IAAM,GAAK,MAAQ,GAAK,KAAO,EAAEA,CAAC,EAAI,EAC1CrB,CACJ,CACA,CACA,SAASmE,GAAGnE,EAAGC,EAAG,CAChB,GAAI,CACF,OAAOiE,GAAGlE,EAAGC,CAAC,CAClB,MAAU,CACN,MACD,CACH,CACA,SAASmE,GAAGpE,EAAGC,EAAG,EAAG,CACnB,GAAI,CAACD,GAAK,CAACC,EACT,OAAOD,EACT,IAAI,EACJ,OAAOC,GAAK,SAAW,EAAIA,EAAE,MAAM,GAAG,EAAI,EAAIA,EAC9C,IAAIoB,EAAIrB,EACR,QAASmC,EAAI,EAAG,EAAI,EAAE,OAAS,EAAGA,EAAI,EAAGA,IAAK,CAC5C,MAAMkC,EAAI,EAAElC,CAAC,GACZ,EAAEkC,KAAKhD,IAAM,OAAOA,EAAEgD,CAAC,GAAK,UAAYhD,EAAEgD,CAAC,IAAM,QAAUhD,EAAEgD,CAAC,EAAI,OAAO,MAAM,OAAO,EAAElC,EAAI,CAAC,CAAC,CAAC,EAAI,CAAA,EAAK,CAAA,GAAKd,EAAIA,EAAEgD,CAAC,CACtH,CACD,OAAOhD,EAAE,EAAE,EAAE,OAAS,CAAC,CAAC,EAAI,EAAGrB,CACjC,CAkBA,SAASsE,GAAGtE,EAAG,CACb,OAAOA,GAAK,IACd,CACA,SAASuE,GAAGvE,EAAG,CACb,OAAOsE,GAAGtE,CAAC,GAAKA,IAAMW,IAAMX,IAAMU,EACpC,CAqMA,SAAS8D,GAAGxE,EAAG,CACb,OAAO,OAAOA,GAAK,UAAY,CAAC,OAAO,MAAMA,CAAC,CAChD,CAIK,MAA6ByE,GAAK,GAAK,GAAK,EACjD,SAASC,GAAE1E,EAAGC,EAAG,CACf,MAAM,EAAI,WAAWD,CAAC,EACtB,OAAO,OAAO,MAAM,CAAC,EAAI,OAAOC,GAAK,SAAWA,EAAI,IAAM,CAC5D,CACK,MAAC0E,GAAM3E,GAAM,OAAOA,GAAK,UAAYA,GAAK,GAAK,OAAO,SAASA,CAAC,EAAG4E,GAAM5E,GAAM2E,GAAG3E,CAAC,GAAKA,EAAI,EAAG6E,GAAM7E,GAAM4E,GAAG5E,CAAC,GAAKA,IAAM,KAAK,MAAMA,CAAC,EAAuE8E,GAAM9E,GAAMA,IAAM,EAAI,GAAK6E,GAAG7E,CAAC,EAkBjP,SAAS+E,GAAG/E,EAAI,KAAM,CACpB,OAAO,SAASC,EAAG,EAAG,CACpB,OAAO,KAAK,IAAIA,EAAI,CAAC,EAAID,CAC7B,CACA,CAKA,SAASgF,GAAEhF,EAAGC,EAAG,EAAG,CAClB,MAAM,EAAI,KAAK,IAAIA,EAAG,CAAC,EAAGoB,EAAI,KAAK,IAAIpB,EAAG,CAAC,EAC3C,OAAOD,EAAI,EAAI,EAAIA,EAAIqB,EAAIA,EAAIrB,CACjC,CAKA,SAASiF,GAAGjF,EAAGC,EAAG,CAChB,OAAQD,EAAIC,EAAIA,GAAKA,CACvB,CACA,SAASiF,GAAGlF,EAAGC,EAAG,EAAG,CACnB,OAAO,OAAOD,GAAK,UAAY,OAAOC,GAAK,UAAY,EAAI,GAAKD,EAAI,EAAIC,EAAI,OAAOD,GAAK,SAAWA,EAAI,OAAOC,GAAK,SAAWA,EAAI,CACpI,CACA,SAASkF,GAAGnF,EAAGC,EAAG,EAAG,CACnB,MAAM,EAAI,KAAK,IAAID,EAAE,OAAQC,EAAE,MAAM,EAAGoB,EAAI,IAAI,MAAM,CAAC,EACvD,QAASc,EAAI,EAAGA,EAAI,EAAGA,IACrBd,EAAEc,CAAC,EAAI+C,GAAGlF,EAAEmC,CAAC,EAAGlC,EAAEkC,CAAC,EAAG,CAAC,EACzB,OAAOd,CACT,CAIA,SAAS+D,GAAGpF,EAAGC,EAAG,EAAG,CACnB,OAAQ,GAAM,CACZ,MAAMoB,EAAI2D,GAAE,EAAGhF,EAAGC,CAAC,EACnB,OAAO,GAAK,EAAIoB,EAAIpB,EAAIoB,EAAI,EAAIpB,EAAI,KAAK,MAAMoB,EAAI,CAAC,EAAI,CAC5D,CACA,CAIA,SAASgE,GAAGrF,EAAGC,EAAI,EAAG,CACpB,OAAOyE,GAAE1E,EAAG,CAAC,EAAE,QAAQC,CAAC,CAC1B,CACA,SAASqF,GAAGtF,EAAGC,EAAI,EAAG,CACpB,MAAO,CAACoF,GAAGrF,EAAGC,CAAC,CACjB,CACA,SAASsF,GAAGvF,EAAGC,EAAI,EAAG,CACpB,OAAO,OAAOqF,GAAGtF,EAAGC,CAAC,CAAC,CACxB,CAQA,SAASuF,GAAGxF,EAAG,CACb,KAAM,CAACC,EAAG,CAAC,EAAI,OAAOD,CAAC,EAAE,MAAM,GAAG,EAClC,OAAO,OAAOC,CAAC,CACjB,CAaA,SAASwF,GAAGzF,EAAGC,EAAG,CAChB,MAAM,EAAIkB,GAAG,gBAAiB,OAAOnB,CAAC,CAAC,EACvC,MAAO,CACL,UAAW,CAAC,CAAC,EACb,OAAQ,GAAK,CAAC,MAAM,QAAQ,CAAC,GAAK,EAAE,UAAY,WAAW,EAAE,SAAS,EAAIuE,GAAGtE,CAAC,EAAIA,EAAI,IACtF,OAAQ,GAAK,CAAC,MAAM,QAAQ,CAAC,GAAK,EAAE,UAAYD,EAAE,UAAU,EAAG,EAAE,UAAU,EAAI,GAC/E,OAAQ,GAAK,CAAC,MAAM,QAAQ,CAAC,GAAK,EAAE,UAAYA,EAAE,UAAU,EAAE,WAAa,EAAE,UAAU,MAAM,EAAI,EACrG,CACA,CACA,SAAS0F,GAAG1F,EAAG,CACb,MAAMC,EAAIkB,GAAG,SAAUnB,CAAC,EACxB,OAAOC,EAAI,MAAM,QAAQA,CAAC,EAAIA,EAAE,IAAK,GAAM,OAAO,EAAE,SAAS,CAAC,EAAI,CAAC,OAAOA,EAAE,SAAS,CAAC,EAAI,EAC5F,CAoDA,SAAS0F,GAAG3F,EAAGC,EAAG,CAChB,MAAM,EAAID,EAAE,UAAW,GAAM,IAAMC,CAAC,EACpC,GAAK,GAAKD,EAAE,OAAO,EAAG,CAAC,CACzB,CACA,SAAS4F,GAAG5F,EAAGC,EAAG,CAChB,OAAOD,EAAE,SAASC,CAAC,EAAID,EAAE,OAAQ,GAAM,IAAMC,CAAC,EAAI,CAAC,GAAGD,EAAGC,CAAC,CAC5D,CA2CA,SAAS4F,GAAG7F,EAAGC,EAAG,CAChB,QAAS,EAAI,EAAG,EAAID,EAAE,OAAQ,EAAI,EAAG,IACnC,GAAIA,EAAE,CAAC,GAAKC,EACV,MAAO,GACX,MAAO,EACT,CAQA,SAAS6F,GAAG9F,EAAI,GAAIC,EAAI,CAAA,EAAI,CAC1B,MAAM,EAAID,EAAE,QAAU,EAAG,EAAIC,EAAE,QAAU,EACzC,QAASkC,EAAI,EAAGA,EAAI,EAAGA,IACrBnC,EAAEmC,CAAC,EAAIlC,EAAEkC,CAAC,EACZ,IAAId,EAAI,KAAK,IAAI,EAAG,EAAI,CAAC,EACzB,KAAOA,EAAI,GACTrB,EAAE,MAAOqB,IACX,OAAOrB,CACT,CAoCA,SAAS+F,GAAG/F,KAAMC,EAAG,CACnB,OAAOA,EAAE,QAAS,GAAM,CACtB4F,GAAG7F,EAAG,CAAC,GAAKA,EAAE,KAAK,CAAC,CACrB,CAAA,EAAGA,CACN,CAmDA,MAAMgG,WAAW,KAAM,CACrB,YAAY/F,EAAG,CACb,MAAMA,CAAC,EAAG,KAAK,KAAK,CAAC,CACtB,CACH,CACA,MAAMgG,GAAMjG,GAAM6E,GAAG7E,CAAC,EAAIA,GAAK,KAAK,IAAI,EAAG,CAAC,EAAI,WAAaA,GAAK,KAAK,IAAI,EAAG,EAAE,EAAI,YAAcA,GAAK,KAAK,IAAI,EAAG,EAAE,EAAI,YAAcA,GAAK,OAAO,iBAAmBgG,GAAK,KAAO,KAClL,SAASE,GAAGlG,EAAGC,EAAG,CAChB,IAAI,EAAID,EAAE,OACV,KAAO,KACL,GAAIgE,GAAGhE,EAAE,CAAC,EAAE,CAAC,EAAGC,CAAC,EACf,OAAO,EACX,MAAO,EACT,CA6BA,SAASkG,IAAI,CACX,OAAQ,OAAO,aAAe,UAAY,aAAe,OAAO,YAAY,KAAO,WAAa,YAAc,MAAM,IAAG,CACzH,CAIA,SAASC,GAAGpG,EAAoB,IAAI,KAAQ,CAC1C,OAAOA,EAAE,SACX,CACA,SAASqG,GAAGrG,EAAoB,IAAI,KAAQC,EAAI,0BAA2B,CACzE,OAAOqG,GAAGtG,EAAGC,CAAC,CAChB,CACA,SAASsG,GAAEvG,EAAG,CACZ,MAAMC,EAAID,EAAE,UACZ,MAAO,CAAC,OAAO,MAAMC,CAAC,CACxB,CAEA,SAASuG,GAAGxG,EAAG,CACb,OAAOA,EAAI,IACb,CACA,SAASyG,GAAGzG,EAAG,CACb,OAAOA,EAAI,KAAO,CAACwG,GAAGxG,CAAC,CACzB,CACA,SAAS0G,GAAG1G,EAAG,CACb,GAAIA,GAAK,KACP,OAAuB,IAAI,KAAK,GAAG,EACrC,GAAIA,aAAa,KACf,OAAO,IAAI,KAAKA,CAAC,EACnB,GAAI,OAAOA,GAAK,SAAU,CACxB,MAAMC,EAAID,EAAE,MACV,mGACN,EACI,GAAIC,GAAKA,EAAE,CAAC,EAAG,CACb,MAAM,EAAI,SAASA,EAAE,CAAC,CAAC,EAAG,EAAIA,EAAE,CAAC,EAAI,KAAK,IAAI,SAASA,EAAE,CAAC,CAAC,EAAI,EAAG,CAAC,EAAI,EAAGoB,EAAIpB,EAAE,CAAC,EAAI,SAASA,EAAE,CAAC,CAAC,EAAI,EAAGkC,EAAIlC,EAAE,CAAC,EAAI,SAASA,EAAE,CAAC,CAAC,EAAI,EAAG,EAAIA,EAAE,CAAC,EAAI,SAASA,EAAE,CAAC,CAAC,EAAI,EAAGoE,EAAIpE,EAAE,CAAC,EAAI,SAASA,EAAE,CAAC,CAAC,EAAI,EAAG0G,EAAI1G,EAAE,CAAC,EAAI,SAASA,EAAE,CAAC,EAAE,UAAU,EAAG,CAAC,CAAC,EAAI,EAClP,MAAO,MAAM,KAAKD,CAAC,EAAI,IAAI,KAAK,KAAK,IAAI,EAAG,EAAGqB,EAAGc,EAAG,EAAGkC,EAAGsC,CAAC,CAAC,EAAI,IAAI,KAAK,EAAG,EAAGtF,EAAGc,EAAG,EAAGkC,EAAGsC,CAAC,CAC9F,KACC,QAAuB,IAAI,KAAK,GAAG,CACtC,CACD,OAAO,MAAM,QAAQ3G,CAAC,EAAI,IAAI,KAC5BA,EAAE,CAAC,EACH,KAAK,IAAIA,EAAE,CAAC,EAAI,EAAG,CAAC,EACpBA,EAAE,CAAC,GAAK,EACRA,EAAE,CAAC,GAAK,EACRA,EAAE,CAAC,GAAK,EACRA,EAAE,CAAC,GAAK,EACRA,EAAE,CAAC,GAAK,CACT,EAAGyG,GAAGzG,CAAC,EAAI,IAAI,KAAKwG,GAAGxG,CAAC,EAAIA,EAAIA,EAAI,GAAG,EAAoB,IAAI,KAAK,GAAG,CAC1E,CACA,SAAS4G,GAAG5G,EAAGC,EAAI,EAAG,EAAI,IAAK,CAC7B,MAAM,EAAI,KAAK,IAAID,EAAE,OAAQ,CAAC,EAC9B,IAAIqB,EAAI,GACR,QAAS,EAAI,EAAG,EAAI,EAAI,EAAG,IACzBA,GAAKrB,EAAE,CAAC,GAAK,IACf,MAAMmC,EAAI,CACRd,EAEA,IAAMrB,EAAE,EAAI,CAAC,GAAK,MAAQA,EAAE,EAAI,CAAC,GAAK,KAEtC,IAAMA,EAAE,EAAI,CAAC,GAAK,MAAQA,EAAE,EAAI,CAAC,GAAK,IAE1C,EACE,OAAQC,EAAC,CACP,IAAK,GACH,OAAOkC,EAAE,CAAC,EACZ,IAAK,GACH,OAAOA,EAAE,CAAC,EAAI,EAAIA,EAAE,CAAC,EACvB,IAAK,GACH,OAAOA,EAAE,CAAC,EAAI,EAAIA,EAAE,CAAC,EAAI,EAAIA,EAAE,CAAC,CACnC,CACH,CACA,SAAS0E,GAAG7G,EAAGC,EAAI,EAAG,CACpB,MAAM,EAAI,KAAK,IAAID,EAAE,OAAQ,CAAC,EAC9B,IAAI,EAAI,EACR,QAAS,EAAI,EAAG,EAAI,EAAI,EAAG,IACzB,EAAI,EAAI,IAAMA,EAAE,CAAC,GAAK,GACxB,MAAMqB,EAAI,CACR,KAAK,MAAM,CAAC,EAEZ,KAAK,OAAOrB,EAAE,EAAI,CAAC,GAAK,GAAK,IAAMA,EAAE,EAAI,CAAC,GAAK,EAAE,EAEjD,KAAK,OAAOA,EAAE,EAAI,CAAC,GAAK,GAAK,IAAMA,EAAE,EAAI,CAAC,GAAK,EAAE,CAErD,EACE,IAAImC,EAAI,GACR,OAAQlC,EAAC,CACP,IAAK,GACHoB,EAAE,CAAC,EAAIc,GAAKd,EAAE,CAAC,EAAI,MAAQA,EAAE,CAAC,GAAKA,EAAE,CAAC,KAAOc,GAAK,OAClD,MACF,IAAK,GACHd,EAAE,CAAC,IAAMc,GAAKd,EAAE,CAAC,EAAI,MAAOA,EAAE,CAAC,EAAIc,GAAKd,EAAE,CAAC,EAAI,KAAOA,EAAE,CAAC,IAAMc,GAAK,OACpE,MACF,IAAK,GACL,QACEd,EAAE,CAAC,IAAMc,GAAKd,EAAE,CAAC,EAAI,OAAQA,EAAE,CAAC,GAAKA,EAAE,CAAC,KAAOc,GAAKd,EAAE,CAAC,EAAI,MAAOA,EAAE,CAAC,IAAMc,GAAKd,EAAE,CAAC,EAAI,KACvF,KACH,CACD,OAAOc,GAAK,IACd,CACA,SAAS2E,GAAG9G,EAAG,CACb,MAAMC,EAAI,KAAK,IAAID,EAAE,OAAQ,CAAC,EAC9B,IAAI,EAAI,EACR,IAAMA,EAAEC,EAAI,CAAC,GAAK,GAAK,IAAMD,EAAEC,EAAI,CAAC,GAAK,GAAI,KAAOD,EAAEC,EAAI,CAAC,GAAK,GAAK,IAAMD,EAAEC,EAAI,CAAC,GAAK,IAAM,GAC7F,IAAI,EAAI,EACR,QAASoB,EAAI,EAAGA,EAAIpB,EAAI,EAAGoB,IACzB,EAAI,EAAI,IAAMrB,EAAEqB,CAAC,GAAK,GACxB,OAAO,GAAK,EAAI,GAAK,GAAI,KAAK,MAAM,KAAK,IAAI,EAAG,CAAC,CAAC,CACpD,CACA,SAAS0F,GAAG/G,EAAGC,EAAI,GAAI,CACrB,IAAI,EAAI,EACR,GAAI,OAAOD,GAAK,SAAW,EAAIA,EAAI,EAAI8G,GAAG9G,CAAC,EAAG,GAAK,EACjD,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC1B,MAAM,EAAI,CAAE,EAAEqB,EAAI,EAAI,GACtB,EAAE,QAAQA,EAAI,EAAE,EAAG,EAAE,QAAQ,KAAK,MAAMA,EAAI,EAAE,CAAC,EAAG,EAAI,KAAK,MAAM,EAAI,EAAE,EACvE,MAAMc,EAAI,EAAI,GACd,GAAI,EAAE,QAAQA,EAAI,EAAE,EAAG,EAAE,QAAQ,KAAK,MAAMA,EAAI,EAAE,CAAC,EAAG,EAAI,KAAK,MAAM,EAAI,EAAE,EAAGlC,EAAG,CAC/E,MAAM,EAAI,EAAI,IACd,IAAK,EAAE,QAAQ,EAAI,EAAE,EAAG,EAAE,QAAQ,KAAK,MAAM,EAAI,EAAE,CAAC,EAAG,EAAI,KAAK,MAAM,EAAI,GAAG,EAAG,GAC9E,EAAE,QAAQ,EAAI,EAAE,EAAG,EAAI,KAAK,MAAM,EAAI,EAAE,CAC9C,KAAS,CACL,MAAM,EAAI,EAAI,GACd,EAAE,QAAQ,EAAI,EAAE,EAAG,EAAE,QAAQ,KAAK,MAAM,EAAI,EAAE,CAAC,CAChD,CACD,OAAO,CACT,CAcA,SAAS+G,GAAGhH,EAAGC,EAAI,GAAI,CACrB,MAAM,EAAID,EAAE,CAAC,GAAK,EAAG,EAAIA,EAAE,CAAC,GAAK,EAAGqB,EAAIrB,EAAE,CAAC,GAAK,EAChD,OAAO+G,GAAG,EAAI,GAAK,GAAK,EAAI,GAAK1F,EAAGpB,CAAC,CACvC,CACA,SAASgH,GAAGjH,EAAGC,EAAG,EAAI,GAAI,CACxB,MAAM,GAAKsG,GAAEvG,CAAC,GAAKuG,GAAEtG,CAAC,EAAI,KAAK,IAAIA,EAAE,QAAO,EAAKD,EAAE,QAAO,CAAE,EAAI,GAAK,IACrE,OAAO+G,GAAG,EAAG,CAAC,CAChB,CACA,SAASG,GAAGlH,EAAGC,EAAI,EAAG,EAAI,GAAI,CAC5B,OAAOD,EAAEA,EAAE,OAAS,CAAC,GAAKC,EAAG8G,GAAG/G,EAAG,CAAC,CACtC,CAqBA,SAASsG,GAAGtG,EAAGC,EAAI,sBAAuB,CACxC,GAAI,CAACsG,GAAEvG,CAAC,EACN,MAAO,GACT,MAAM,EAAI,OAAO,KAAKC,CAAC,EACvB,GAAI,GAAK,EAAE,CAAC,EAAG,CACb,MAAMoB,EAAI,EAAE,CAAC,EACbpB,EAAIA,EAAE,QACJoB,GAECrB,EAAE,cAAgB,IAAI,UAAU,EAAIqB,EAAE,MAAM,CACnD,CACG,CACD,MAAM,EAAI,CACR,KAAMrB,EAAE,SAAQ,EAAK,EAErB,KAAMA,EAAE,QAAS,EAEjB,KAAMA,EAAE,SAAU,EAElB,KAAMA,EAAE,WAAY,EAEpB,KAAMA,EAAE,WAAY,EAEpB,KAAM,KAAK,OAAOA,EAAE,SAAU,EAAG,GAAK,CAAC,EAEvC,KAAMA,EAAE,gBAAiB,CAE7B,EACE,UAAWqB,KAAK,EAAG,CACjB,MAAMc,EAAI,IAAI,OAAO,IAAMd,EAAI,GAAG,EAAE,KAAKpB,CAAC,EAC1C,GAAIkC,GAAKA,EAAE,CAAC,EAAG,CACb,MAAM,EAAIA,EAAE,CAAC,EACblC,EAAIA,EAAE,QACJ,EAKA,EAAE,SAAW,EAAI,GAAK,EAAEoB,CAAC,GAAK,KAAO,EAAEA,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAClE,CACK,CACF,CACD,OAAOpB,CACT,CAaA,SAASkH,GAAGnH,EAAGC,EAAI,IAAK,EAAI,IAAK,CAC/B,OAAOqG,GACLtG,EACA,OAAOC,CAAC,KAAKA,CAAC,QAAQ,CAAC,KAAK,CAAC,IACjC,CACA,CA4HA,SAASmH,MAAMpH,EAAG,CAChB,OAAOA,EAAE,SAAW,EAAI,IAAIC,IAAMA,EAAID,EAAE,SAAW,EAAIA,EAAE,CAAC,EAAIA,EAAE,OAC9D,CAACC,EAAG,IAAM,IAAI,IAAMA,EAAE,EAAE,GAAG,CAAC,CAAC,CACjC,CACA,CAmDA,SAASoH,GAAGrH,EAAI,EAAGC,EAAG,CACpB,MAAM,EAAIA,GAAG,KAAO,IAAK,EAAIA,GAAG,KAAO,IAAKoB,EAAIpB,GAAG,UAAY,EAAGkC,EAAIlC,GAAG,QAAU,GACnF,IAAI,EAAI,EAAI,KAAK,IAAIoB,EAAGrB,CAAC,EACzB,GAAImC,EAAG,CACL,MAAMkC,EAAI,KAAK,OAAM,EAAIsC,EAAI,KAAK,MAAMtC,EAAIlC,EAAI,CAAC,EACjD,EAAI,KAAK,MAAMkC,EAAI,EAAE,EAAI,EAAI,EAAIsC,EAAI,EAAIA,CAC1C,CACD,OAAO,KAAK,IAAI,EAAG,CAAC,EAAI,CAC1B,CAoBA,SAASW,GAAGtH,EAAGC,EAAI,CAQnB,EAAG,CACD,GAAI,OAAOD,GAAK,WACd,MAAM,IAAI,UAAU,qBAAqB,EAC3C,MAAM,EAAI,YAAY,EAAG,CACvB,MAAMqB,EAAIpB,GAAG,SAAW,KAAMkC,EAAIlC,GAAG,iBAAmBA,EAAE,iBAAiB,MAAMoB,EAAG,CAAC,EAAI,EAAE,CAAC,EAAG,EAAI,EAAE,MACrG,GAAI,EAAE,IAAIc,CAAC,EACT,OAAO,EAAE,IAAIA,CAAC,EAChB,MAAMkC,EAAIrE,EAAE,MAAMqB,EAAG,CAAC,EACtB,OAAOgD,aAAa,SAAWA,EAAE,MAAM,IAAM,EAAE,OAAOlC,CAAC,CAAC,EAAG,EAAE,MAAQ,EAAE,IAAIA,EAAGkC,CAAC,GAAK,EAAGA,CAC3F,EACE,OAAO,EAAE,MAAQpE,GAAG,YAAcA,EAAE,cAAgC,IAAI,IAAO,CACjF,CAsCA,MAAM,UAAU,GAAK,SAASD,EAAG,CAC/B,OAAO,KAAK,OAAO,CAACC,EAAG,IAAMA,EAAE,OAAOD,EAAE,IAAI,CAAC,CAAC,EAAG,CAAE,CAAA,CACrD,EA4FA,SAASuH,IAAK,CACZ,IAAIvH,EAAGC,EACP,MAAO,CAAE,QAAS,IAAI,QAAQ,CAACuH,EAAGnG,IAAM,CACtCrB,EAAIwH,EAAGvH,EAAIoB,CACZ,CAAA,EAAG,QAASrB,EAAG,OAAQC,CAAC,CAC3B,CAQA,SAASwH,GAAGzH,EAAGC,EAAK,GAAM,QAAQ,MAAM,CAAC,EAAG,CAC1C,GAAI,CACF,MAAM,EAAID,IACV,OAAO4D,GAAG,CAAC,EAAI,QAAQ,QAAQ,CAAC,EAAE,MAAO,GAAM,CAC7C3D,EAAE,CAAC,CACJ,CAAA,EAAI,CACN,OAAQ,EAAG,CACVA,EAAE,CAAC,CACJ,CACH,CACA,MAAMyH,GAAK,WACX,SAASC,GAAG3H,EAAGC,EAAG,EAAG,CACnB,GAAI,OAAOA,GAAK,UAAYA,GAAK,EAC/B,OAAOD,EACT,IAAI,EACJ,MAAMqB,EAAI,IAAI,QAAQ,CAACc,EAAG,IAAM,CAC9B,EAAI,WACF,CAACkC,EAAGsC,IAAM,CACRtC,EAAE,IAAI,MAAMsC,GAAK,cAAc1G,CAAC,KAAK,CAAC,CACvC,EACD,KAAK,IAAIA,EAAGyH,EAAE,EACd,EACA,CACN,CACA,CAAG,EACD,OAAO,QAAQ,KAAK,CAAC1H,EAAGqB,CAAC,CAAC,EAAE,QAAQ,IAAM,CACxC,IAAM,SAAW,aAAa,CAAC,EAAG,EAAI,OAC1C,CAAG,CACH,CACA,SAASuG,GAAG5H,EAAGC,EAAG,EAAG,CACnB,GAAI,CAACA,EACH,OAAOD,EACT,MAAM,EAAI,GAAK,WACf,OAAOC,EAAE,QAAU,QAAQ,OAAO,IAAI,MAAM,CAAC,CAAC,EAAI,IAAI,QAAQ,CAACoB,EAAGc,IAAM,CACtE,MAAM,EAAI,IAAM,CACdA,EAAE,IAAI,MAAM,CAAC,CAAC,CACpB,EACIlC,EAAE,iBAAiB,QAAS,EAAG,CAAE,KAAM,GAAI,EAAGD,EAAE,QAAQ,IAAM,CAC5DC,EAAE,oBAAoB,QAAS,CAAC,CACjC,CAAA,EAAGD,EAAE,KAAKqB,EAAGc,CAAC,CACnB,CAAG,CACH,CAm7BA,MAAM0F,EAAG,CACP,SAAW,CAAA,EACX,KAAO,EACP,YAAY5H,EAAG,CACbA,EAAIA,GAAK,GACT,MAAM,EAAIA,EAAE,OACZ,IAAI,EAAI,GACR,KAAO,EAAE,EAAI,GAAK,CAChB,MAAMoB,EAAIpB,EAAE,CAAC,EACb,KAAK,IAAIoB,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CACpB,CACF,CACD,IAAIpB,EAAG,EAAG,CACR,MAAM,EAAI,KAAK,SAAUoB,EAAI6E,GAAG,EAAGjG,CAAC,EACpC,OAAOoB,EAAI,GAAK,EAAE,KAAK,KAAM,EAAE,KAAK,CAACpB,EAAG,CAAC,CAAC,GAAK,EAAEoB,CAAC,EAAE,CAAC,EAAI,EAAG,IAC7D,CACD,IAAIpB,EAAG,CACL,MAAM,EAAI,KAAK,SAAU,EAAIiG,GAAG,EAAGjG,CAAC,EACpC,OAAO,EAAI,EAAI,OAAS,EAAE,CAAC,EAAE,CAAC,CAC/B,CACD,IAAIA,EAAG,CACL,OAAOiG,GAAG,KAAK,SAAUjG,CAAC,EAAI,EAC/B,CACD,OAAOA,EAAG,CACR,MAAM,EAAI,KAAK,SAAU,EAAIiG,GAAG,EAAGjG,CAAC,EACpC,GAAI,EAAI,EACN,MAAO,GACT,MAAMoB,EAAI,EAAE,OAAS,EACrB,OAAO,GAAKA,EAAI,EAAE,IAAG,EAAK,MAAM,UAAU,OAAO,KAAK,EAAG,EAAG,CAAC,EAAG,EAAE,KAAK,KAAM,EAC9E,CACD,OAAQ,CACN,KAAK,SAAW,CAAA,EAAI,KAAK,KAAO,CACjC,CACD,CAAC,SAAU,CACT,UAAWpB,KAAK,KAAK,SACnB,MAAMA,CACT,CACD,CAAC,MAAO,CACN,UAAWA,KAAK,KAAK,SACnB,MAAMA,EAAE,CAAC,CACZ,CACD,CAAC,QAAS,CACR,UAAWA,KAAK,KAAK,SACnB,MAAMA,EAAE,CAAC,CACZ,CACD,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAO,KAAK,SACb,CACH,CACA,MAAM6H,GAAK,OAAO,aAAe,UAAY,aAAe,OAAO,YAAY,KAAO,WAAa,YAAc,KAAMC,GAAqB,IAAI,IAAOC,GAAK,CAAChI,EAAGC,EAAG,EAAG,IAAM,CAC1K,OAAOE,GAAG,aAAe,WAAaA,GAAG,YAAYH,EAAGC,EAAG,EAAG,CAAC,EAAI,QAAQ,MAAM,IAAI,CAAC,KAAKA,CAAC,KAAKD,CAAC,EAAE,CACtG,EAAGiI,GAAMjI,GAAM,CAAC+H,GAAG,IAAI/H,CAAC,EACxB,MAAMkI,EAAG,CACP,KACA,OAEA,MAAO,GAAK,GACZ,OAAO,OAAOjI,EAAG,CACf,MAAM,EAAIgG,GAAGhG,CAAC,EACd,GAAI,CAAC,EACH,MAAO,GACTiI,GAAG,GAAK,GACR,MAAM,EAAI,IAAIA,GAAGjI,EAAG,CAAC,EACrB,OAAOiI,GAAG,GAAK,GAAI,CACpB,CACD,YAAYjI,EAAG,EAAG,CAChB,GAAI,CAACiI,GAAG,GACN,MAAM,IAAI,UAAU,yCAAyC,EAC/D,KAAK,KAAO,IAAI,EAAEjI,CAAC,EAAG,KAAK,OAAS,CACrC,CACD,KAAKA,EAAG,CACN,KAAK,KAAK,KAAK,QAAQ,EAAIA,CAC5B,CACD,KAAM,CACJ,OAAO,KAAK,KAAK,EAAE,KAAK,MAAM,CAC/B,CACH,CACA,MAAMkI,EAAG,CAKP,GAIA,GACA,GACAC,GACAC,GACAC,GACAC,GACAC,GAIA,IAAI,MAAO,CACT,OAAO,KAAKA,EACb,CAID,IAIA,cAIA,aAIA,eAIA,eAIA,WAIA,eAIA,YAIA,aAIA,gBAIA,yBAIA,mBAIA,uBAIA,2BAIA,iBAEAC,GACAC,GACAC,GACAC,GACA,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACA,GACA,GACAC,GACAC,GACAC,GACAC,GAUA,OAAO,sBAAsBvJ,EAAG,CAC9B,MAAO,CAEL,OAAQA,EAAEmJ,GACV,KAAMnJ,EAAE,GACR,gBAAiBA,EAAE,GACnB,MAAOA,EAAEkJ,GACT,OAAQlJ,EAAE0I,GACV,QAAS1I,EAAE2I,GACX,QAAS3I,EAAE,GACX,KAAMA,EAAE4I,GACR,KAAM5I,EAAE6I,GACR,IAAI,MAAO,CACT,OAAO7I,EAAE8I,EACV,EACD,IAAI,MAAO,CACT,OAAO9I,EAAE+I,EACV,EACD,KAAM/I,EAAEgJ,GAER,kBAAoB,GAAMhJ,EAAEwJ,GAAG,CAAC,EAChC,gBAAiB,CAAC,EAAG,EAAGpI,EAAGc,IAAMlC,EAAEyJ,GACjC,EACA,EACArI,EACAc,CACD,EACD,WAAa,GAAMlC,EAAE0J,GAAG,CAAC,EACzB,QAAU,GAAM1J,EAAE2J,GAAG,CAAC,EACtB,SAAW,GAAM3J,EAAE4J,GAAG,CAAC,EACvB,QAAU,GAAM5J,EAAE6J,GAAG,CAAC,CAC5B,CACG,CAKD,IAAI,KAAM,CACR,OAAO,KAAK,EACb,CAID,IAAI,SAAU,CACZ,OAAO,KAAK,EACb,CAID,IAAI,gBAAiB,CACnB,OAAO,KAAKpB,EACb,CAID,IAAI,MAAO,CACT,OAAO,KAAKD,EACb,CAID,IAAI,aAAc,CAChB,OAAO,KAAKH,EACb,CACD,IAAI,YAAa,CACf,OAAO,KAAKC,EACb,CAID,IAAI,SAAU,CACZ,OAAO,KAAK,EACb,CAID,IAAI,UAAW,CACb,OAAO,KAAKH,EACb,CAID,IAAI,cAAe,CACjB,OAAO,KAAKC,EACb,CACD,YAAYpI,EAAG,CACb,KAAM,CACJ,IAAK,EAAI,EACT,IAAK,EACL,cAAeoB,EAAI,EACnB,aAAcc,EACd,eAAgB,EAChB,eAAgBkC,EAChB,WAAYsC,EACZ,QAASoD,EACT,SAAUC,EACV,aAAcC,EACd,eAAgB,EAChB,YAAaC,EACb,QAAS,EAAI,EACb,aAAcC,EAAI,EAClB,gBAAiBC,EACjB,YAAaC,EACb,WAAYC,EACZ,yBAA0BC,EAC1B,mBAAoB,EACpB,2BAA4BC,EAC5B,uBAAwBC,EACxB,iBAAkBC,EAClB,KAAMC,CACP,EAAG1K,EACJ,GAAI0K,IAAM,QAAU,OAAOA,GAAG,KAAO,WACnC,MAAM,IAAI,UACR,mDACR,EACI,GAAI,KAAKnC,GAAKmC,GAAK7C,GAAI,IAAM,GAAK,CAACjD,GAAG,CAAC,EACrC,MAAM,IAAI,UAAU,0CAA0C,EAChE,MAAM+F,EAAI,EAAI3E,GAAG,CAAC,EAAI,MACtB,GAAI,CAAC2E,EACH,MAAM,IAAI,MAAM,sBAAwB,CAAC,EAC3C,GAAI,KAAK,GAAK,EAAG,KAAK,GAAK,EAAG,KAAK,aAAeT,GAAK,KAAK,GAAI,KAAK,gBAAkBC,EAAG,KAAK,gBAAiB,CAC9G,GAAI,CAAC,KAAK,IAAM,CAAC,KAAK,aACpB,MAAM,IAAI,UACR,oEACV,EACM,GAAI,OAAO,KAAK,iBAAmB,WACjC,MAAM,IAAI,UAAU,qCAAqC,CAC5D,CACD,GAAIE,IAAM,QAAU,OAAOA,GAAK,WAC9B,MAAM,IAAI,UAAU,0CAA0C,EAChE,GAAI,KAAK/B,GAAK+B,EAAGD,IAAM,QAAU,OAAOA,GAAK,WAC3C,MAAM,IAAI,UAAU,6CAA6C,EACnE,GAAI,KAAK/B,GAAK+B,EAAG,KAAKf,GAAK,CAAC,CAACe,EAAG,KAAK1B,GAAqB,IAAI,IAAO,KAAKC,GAAK,MAAM,KAAK,CAAE,OAAQ,CAAC,CAAE,EAAE,KAAK,MAAM,EAAG,KAAK,GAAK,MAAM,KAAK,CAAE,OAAQ,CAAG,CAAA,EAAE,KAAK,MAAM,EAAG,KAAKC,GAAK,IAAI+B,EAAE,CAAC,EAAG,KAAK9B,GAAK,IAAI8B,EAAE,CAAC,EAAG,KAAK7B,GAAK,EAAG,KAAKC,GAAK,EAAG,KAAKC,GAAKf,GAAG,OAAO,CAAC,EAAG,KAAKO,GAAK,EAAG,KAAKC,GAAK,EAAG,OAAOqB,GAAK,aAAe,KAAK,GAAKA,GAAI,OAAOC,GAAK,aAAe,KAAK5B,GAAK4B,GAAI,OAAOC,GAAK,YAAc,KAAK5B,GAAK4B,EAAG,KAAKf,GAAK,KAAO,KAAKb,GAAK,OAAQ,KAAKa,GAAK,QAAS,KAAKG,GAAK,CAAC,CAAC,KAAK,GAAI,KAAKG,GAAK,CAAC,CAAC,KAAKpB,GAAI,KAAKmB,GAAK,CAAC,CAAC,KAAKlB,GAAI,KAAK,eAAiB,CAAC,CAAC,EAAG,KAAK,YAAc,CAAC,CAAC6B,EAAG,KAAK,yBAA2B,CAAC,CAACK,EAAG,KAAK,2BAA6B,CAAC,CAACC,EAAG,KAAK,uBAAyB,CAAC,CAACC,EAAG,KAAK,iBAAmB,CAAC,CAACC,EAAG,KAAK,eAAiB,EAAG,CACjuB,GAAI,KAAK,KAAO,GAAK,CAAC7F,GAAG,KAAK,EAAE,EAC9B,MAAM,IAAI,UACR,iDACV,EACM,GAAI,CAACA,GAAG,KAAK,YAAY,EACvB,MAAM,IAAI,UACR,sDACV,EACM,KAAKgG,GAAE,CACR,CACD,GAAI,KAAK,WAAa,CAAC,CAAClE,EAAG,KAAK,mBAAqB,CAAC,CAAC,EAAG,KAAK,eAAiB,CAAC,CAAC,EAAG,KAAK,eAAiB,CAAC,CAACtC,EAAG,KAAK,cAAgBQ,GAAGxD,CAAC,GAAKA,IAAM,EAAIA,EAAI,EAAG,KAAK,aAAe,CAAC,CAACc,EAAG,KAAK,IAAM,GAAK,EAAG,KAAK,IAAK,CACnN,GAAI,CAAC0C,GAAG,KAAK,GAAG,EACd,MAAM,IAAI,UAAU,6CAA6C,EACnE,KAAKiG,GAAE,CACR,CACD,GAAI,KAAK,KAAO,GAAK,KAAK,MAAQ,GAAK,KAAK,KAAO,EACjD,MAAM,IAAI,UAAU,kDAAkD,EACxE,GAAI,CAAC,KAAK,cAAgB,CAAC,KAAK,IAAM,CAAC,KAAK,GAAI,CAC9C,MAAMC,EAAI,sBACV9C,GAAG8C,CAAC,IAAMhD,GAAG,IAAIgD,CAAC,EAAG/C,GAAG,gGAAiG,wBAAyB+C,EAAG5C,EAAE,EACxJ,CACF,CAKD,gBAAgBlI,EAAG,CACjB,OAAO,KAAK0I,GAAG,IAAI1I,CAAC,EAAI,EAAI,EAAI,CACjC,CACD6K,IAAK,CACH,MAAM7K,EAAI,IAAI+F,GAAG,KAAK,EAAE,EAAG,EAAI,IAAIA,GAAG,KAAK,EAAE,EAC7C,KAAK,GAAK/F,EAAG,KAAKmJ,GAAK,EACvB,MAAM,EAAI,KAAK,aAAe,MAAM,KAAK,CACvC,OAAQ,KAAK,EACnB,CAAK,EAAI,OACL,KAAK,GAAK,EAAG,KAAK4B,GAAK,CAAC3G,EAAGsC,EAAGoD,EAAI,KAAKvB,GAAG,IAAG,IAAO,CAClD,EAAEnE,CAAC,EAAIsC,IAAM,EAAIoD,EAAI,EAAG9J,EAAEoE,CAAC,EAAIsC,EAAGtF,EAAEgD,EAAGsC,CAAC,CAC9C,EAAO,KAAKsE,GAAM5G,GAAM,CAClB,EAAEA,CAAC,EAAIpE,EAAEoE,CAAC,IAAM,EAAI,KAAKmE,GAAG,IAAK,EAAG,EAAGnH,EAAEgD,EAAGpE,EAAEoE,CAAC,CAAC,CACtD,EACI,MAAMhD,EAAI,KAAK,aAAe,CAACgD,EAAGsC,IAAM,CACtC,GAAI,IAAItC,CAAC,IAAM,aAAa,EAAEA,CAAC,CAAC,EAAG,EAAEA,CAAC,EAAI,QAASsC,GAAKA,IAAM,GAAK,EAAG,CACpE,MAAMoD,EAAI,WAAW,IAAM,CACzB,KAAKD,GAAGzF,CAAC,GAAK,KAAK6G,GAAG,KAAKtC,GAAGvE,CAAC,EAAG,QAAQ,CACpD,EAAWsC,EAAI,CAAC,EACRoD,EAAE,OAASA,EAAE,MAAO,EAAE,EAAE1F,CAAC,EAAI0F,CAC9B,CACP,EAAQ,IAAM,CACd,EACI,KAAKoB,GAAK,CAAC9G,EAAGsC,IAAM,CAClB,GAAI1G,EAAE0G,CAAC,EAAG,CACR,MAAMoD,EAAI9J,EAAE0G,CAAC,EAAGqD,EAAI,EAAErD,CAAC,EACvB,GAAI,CAACoD,GAAK,CAACC,EACT,OACF3F,EAAE,IAAM0F,EAAG1F,EAAE,MAAQ2F,EAAG3F,EAAE,IAAMlC,GAAK,IACrC,MAAM8H,EAAI5F,EAAE,IAAM2F,EAClB3F,EAAE,aAAe0F,EAAIE,CACtB,CACP,EACI,IAAI9H,EAAI,EACR,MAAM,EAAI,IAAM,CACd,MAAMkC,EAAI,KAAKmE,GAAG,IAAG,EACrB,GAAI,KAAK,cAAgB,EAAG,CAC1BrG,EAAIkC,EACJ,MAAMsC,EAAI,WAAW,IAAMxE,EAAI,EAAG,KAAK,aAAa,EACpDwE,EAAE,OAASA,EAAE,OACd,CACD,OAAOtC,CACb,EACI,KAAK,gBAAmBA,GAAM,CAC5B,MAAMsC,EAAI,KAAKgC,GAAG,IAAItE,CAAC,EACvB,GAAIsC,IAAM,OACR,MAAO,GACT,MAAMoD,EAAI9J,EAAE0G,CAAC,EAAGqD,EAAI,EAAErD,CAAC,EACvB,GAAI,CAACoD,GAAK,CAACC,EACT,MAAO,GAAI,EACb,MAAMC,GAAK9H,GAAK,EAAC,GAAM6H,EACvB,OAAOD,EAAIE,CACjB,EAAO,KAAKH,GAAMzF,GAAM,CAClB,MAAMsC,EAAI,EAAEtC,CAAC,EAAG0F,EAAI9J,EAAEoE,CAAC,EACvB,MAAO,CAAC,CAAC0F,GAAK,CAAC,CAACpD,IAAMxE,GAAK,EAAC,GAAMwE,EAAIoD,CAC5C,CACG,CAEDkB,GAAK,IAAM,CACb,EACEE,GAAK,IAAM,CACb,EACEH,GAAK,IAAM,CACb,EACElB,GAAK,IAAM,GACXe,IAAK,CACH,MAAM5K,EAAI,IAAI+F,GAAG,KAAK,EAAE,EACxB,KAAK0C,GAAK,EAAG,KAAKS,GAAKlJ,EAAG,KAAKmL,GAAM,GAAM,CACzC,KAAK1C,IAAMzI,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAI,CAC9B,EAAO,KAAKoL,GAAK,CAAC,EAAG,EAAGhK,EAAGc,IAAM,CAC3B,GAAI,KAAKsH,GAAG,CAAC,EACX,MAAO,GACT,GAAI,CAAC5E,GAAGxD,CAAC,EACP,GAAIc,EAAG,CACL,GAAI,OAAOA,GAAK,WACd,MAAM,IAAI,UAAU,oCAAoC,EAC1D,GAAId,EAAIc,EAAE,EAAG,CAAC,EAAG,CAAC0C,GAAGxD,CAAC,EACpB,MAAM,IAAI,UACR,0DACd,CACS,KACC,OAAM,IAAI,UACR,2HACZ,EACM,OAAOA,GAAK,CACb,EAAE,KAAKiK,GAAK,CAAC,EAAG,EAAGjK,IAAM,CACxB,GAAIpB,EAAE,CAAC,EAAI,EAAG,KAAK,GAAI,CACrB,MAAMkC,EAAI,KAAK,GAAKlC,EAAE,CAAC,EACvB,KAAO,KAAKyI,GAAKvG,GACf,KAAKoJ,GAAG,EAAE,CACb,CACD,KAAK7C,IAAMzI,EAAE,CAAC,EAAGoB,IAAMA,EAAE,UAAY,EAAGA,EAAE,oBAAsB,KAAKqH,GAC3E,CACG,CACD0C,GAAMnL,GAAM,CACd,EACEqL,GAAK,CAACrL,EAAG,EAAG,IAAM,CACpB,EACEoL,GAAK,CAACpL,EAAG,EAAG,EAAGoB,IAAM,CACnB,GAAI,GAAKA,EACP,MAAM,IAAI,UACR,kEACR,EACI,MAAO,EACX,EACE,CAACuI,GAAG,CAAE,WAAY3J,EAAI,KAAK,UAAY,EAAG,GAAI,CAC5C,GAAI,KAAKwI,GACP,QAAS,EAAI,KAAKO,GAAI,KAAKwC,GAAG,CAAC,KAAOvL,GAAK,CAAC,KAAK6J,GAAG,CAAC,KAAO,MAAM,GAAI,IAAM,KAAKf,KAC/E,EAAI,KAAKD,GAAG,CAAC,CAClB,CACD,CAACe,GAAG,CAAE,WAAY5J,EAAI,KAAK,UAAY,EAAG,GAAI,CAC5C,GAAI,KAAKwI,GACP,QAAS,EAAI,KAAKM,GAAI,KAAKyC,GAAG,CAAC,KAAOvL,GAAK,CAAC,KAAK6J,GAAG,CAAC,KAAO,MAAM,GAAI,IAAM,KAAKd,KAC/E,EAAI,KAAKH,GAAG,CAAC,CAClB,CACD2C,GAAGvL,EAAG,CACJ,OAAOA,IAAM,QAAU,KAAK0I,GAAG,IAAI,KAAKC,GAAG3I,CAAC,CAAC,IAAMA,CACpD,CAKD,CAAC,SAAU,CACT,UAAWA,KAAK,KAAK2J,GAAI,EACvB,KAAK,GAAG3J,CAAC,IAAM,QAAU,KAAK2I,GAAG3I,CAAC,IAAM,QAAU,CAAC,KAAKwJ,GAAG,KAAK,GAAGxJ,CAAC,CAAC,IAAM,KAAM,CAAC,KAAK2I,GAAG3I,CAAC,EAAG,KAAK,GAAGA,CAAC,CAAC,EAC3G,CAOD,CAAC,UAAW,CACV,UAAWA,KAAK,KAAK4J,GAAI,EACvB,KAAK,GAAG5J,CAAC,IAAM,QAAU,KAAK2I,GAAG3I,CAAC,IAAM,QAAU,CAAC,KAAKwJ,GAAG,KAAK,GAAGxJ,CAAC,CAAC,IAAM,KAAM,CAAC,KAAK2I,GAAG3I,CAAC,EAAG,KAAK,GAAGA,CAAC,CAAC,EAC3G,CAKD,CAAC,MAAO,CACN,UAAWA,KAAK,KAAK2J,KAAM,CACzB,MAAM,EAAI,KAAKhB,GAAG3I,CAAC,EACnB,IAAM,QAAU,CAAC,KAAKwJ,GAAG,KAAK,GAAGxJ,CAAC,CAAC,IAAM,MAAM,EAChD,CACF,CAOD,CAAC,OAAQ,CACP,UAAWA,KAAK,KAAK4J,KAAM,CACzB,MAAM,EAAI,KAAKjB,GAAG3I,CAAC,EACnB,IAAM,QAAU,CAAC,KAAKwJ,GAAG,KAAK,GAAGxJ,CAAC,CAAC,IAAM,MAAM,EAChD,CACF,CAKD,CAAC,QAAS,CACR,UAAWA,KAAK,KAAK2J,GAAI,EACvB,KAAK,GAAG3J,CAAC,IAAM,QAAU,CAAC,KAAKwJ,GAAG,KAAK,GAAGxJ,CAAC,CAAC,IAAM,MAAM,KAAK,GAAGA,CAAC,EACpE,CAOD,CAAC,SAAU,CACT,UAAWA,KAAK,KAAK4J,GAAI,EACvB,KAAK,GAAG5J,CAAC,IAAM,QAAU,CAAC,KAAKwJ,GAAG,KAAK,GAAGxJ,CAAC,CAAC,IAAM,MAAM,KAAK,GAAGA,CAAC,EACpE,CAKD,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAO,KAAK,SACb,CAMD,CAAC,OAAO,WAAW,EAAI,WAKvB,KAAKA,EAAG,EAAI,GAAI,CACd,UAAW,KAAK,KAAK2J,KAAM,CACzB,MAAMvI,EAAI,KAAK,GAAG,CAAC,EAAGc,EAAI,KAAKsH,GAAGpI,CAAC,EAAIA,EAAE,qBAAuBA,EAChE,GAAIc,IAAM,QAAUlC,EAAEkC,EAAG,KAAKyG,GAAG,CAAC,EAAG,IAAI,EACvC,OAAO,KAAK6C,GAAG,KAAK7C,GAAG,CAAC,EAAG,CAAC,CAC/B,CACF,CAYD,QAAQ3I,EAAG,EAAI,KAAM,CACnB,UAAW,KAAK,KAAK2J,KAAM,CACzB,MAAMvI,EAAI,KAAK,GAAG,CAAC,EAAGc,EAAI,KAAKsH,GAAGpI,CAAC,EAAIA,EAAE,qBAAuBA,EAChEc,IAAM,QAAUlC,EAAE,KAAK,EAAGkC,EAAG,KAAKyG,GAAG,CAAC,EAAG,IAAI,CAC9C,CACF,CAKD,SAAS3I,EAAG,EAAI,KAAM,CACpB,UAAW,KAAK,KAAK4J,KAAM,CACzB,MAAMxI,EAAI,KAAK,GAAG,CAAC,EAAGc,EAAI,KAAKsH,GAAGpI,CAAC,EAAIA,EAAE,qBAAuBA,EAChEc,IAAM,QAAUlC,EAAE,KAAK,EAAGkC,EAAG,KAAKyG,GAAG,CAAC,EAAG,IAAI,CAC9C,CACF,CAKD,YAAa,CACX,IAAI3I,EAAI,GACR,UAAW,KAAK,KAAK4J,GAAG,CAAE,WAAY,GAAI,EACxC,KAAKC,GAAG,CAAC,IAAM,KAAKoB,GAAG,KAAKtC,GAAG,CAAC,EAAG,QAAQ,EAAG3I,EAAI,IACpD,OAAOA,CACR,CAaD,KAAKA,EAAG,CACN,MAAM,EAAI,KAAK0I,GAAG,IAAI1I,CAAC,EACvB,GAAI,IAAM,OACR,OACF,MAAM,EAAI,KAAK,GAAG,CAAC,EAAGoB,EAAI,KAAKoI,GAAG,CAAC,EAAI,EAAE,qBAAuB,EAChE,GAAIpI,IAAM,OACR,OACF,MAAMc,EAAI,CAAE,MAAOd,GACnB,GAAI,KAAK,IAAM,KAAK+H,GAAI,CACtB,MAAM,EAAI,KAAK,GAAG,CAAC,EAAG/E,EAAI,KAAK+E,GAAG,CAAC,EACnC,GAAI,GAAK/E,EAAG,CACV,MAAMsC,EAAI,GAAK,KAAK6B,GAAG,IAAG,EAAKnE,GAC/BlC,EAAE,IAAMwE,EAAGxE,EAAE,MAAQ,KAAK,KAC3B,CACF,CACD,OAAO,KAAKgH,KAAOhH,EAAE,KAAO,KAAKgH,GAAG,CAAC,GAAIhH,CAC1C,CAcD,MAAO,CACL,MAAMlC,EAAI,CAAA,EACV,UAAW,KAAK,KAAK2J,GAAG,CAAE,WAAY,EAAE,CAAE,EAAG,CAC3C,MAAM,EAAI,KAAKhB,GAAG,CAAC,EAAGvH,EAAI,KAAK,GAAG,CAAC,EAAGc,EAAI,KAAKsH,GAAGpI,CAAC,EAAIA,EAAE,qBAAuBA,EAChF,GAAIc,IAAM,QAAU,IAAM,OACxB,SACF,MAAM,EAAI,CAAE,MAAOA,GACnB,GAAI,KAAK,IAAM,KAAKiH,GAAI,CACtB,EAAE,IAAM,KAAK,GAAG,CAAC,EACjB,MAAM/E,EAAI,KAAKmE,GAAG,IAAK,EAAG,KAAKY,GAAG,CAAC,EACnC,EAAE,MAAQ,KAAK,MAAM,KAAK,IAAG,EAAK/E,CAAC,CACpC,CACD,KAAK8E,KAAO,EAAE,KAAO,KAAKA,GAAG,CAAC,GAAIlJ,EAAE,QAAQ,CAAC,EAAG,CAAC,CAAC,CACnD,CACD,OAAOA,CACR,CAUD,KAAKA,EAAG,CACN,KAAK,MAAK,EACV,SAAW,CAAC,EAAG,CAAC,IAAKA,EAAG,CACtB,GAAI,EAAE,MAAO,CACX,MAAMoB,EAAI,KAAK,IAAG,EAAK,EAAE,MACzB,EAAE,MAAQ,KAAKmH,GAAG,IAAG,EAAKnH,CAC3B,CACD,KAAKqK,GAAG,EAAG,EAAE,MAAO,CAAC,CACtB,CACF,CA+BD,IAAIzL,EAAG,EAAG,EAAI,CAAA,EAAI,CAChB,KAAM,CAAE,OAAQoB,EAAI,MAAM,EAAK,EAC/B,OAAO,EAAE,OAASA,EAAGA,IAAMA,EAAE,GAAK,MAAOA,EAAE,IAAMpB,EAAG,IAAM,SAAWoB,EAAE,MAAQ,IAAK,KAAKqK,GAAGzL,EAAG,EAAG,CAAC,CACpG,CACDyL,GAAGzL,EAAG,EAAG,EAAI,CAAA,EAAI,CACf,KAAM,CACJ,IAAKoB,EAAI,KAAK,IACd,MAAOc,EACP,eAAgB,EAAI,KAAK,eACzB,gBAAiBkC,EAAI,KAAK,gBAC1B,OAAQsC,CACT,EAAG,EACJ,GAAI,IAAM,OACR,OAAOA,IAAMA,EAAE,IAAM,WAAY,KAAK,OAAO1G,CAAC,EAAG,KACnD,GAAI,CAAE,YAAa8J,EAAI,KAAK,WAAW,EAAK,EAC5CpD,GAAK,CAAC,KAAK8C,GAAG,CAAC,IAAM9C,EAAE,MAAQ,GAC/B,MAAMqD,EAAI,KAAKqB,GACbpL,EACA,EACA,EAAE,MAAQ,EACVoE,EACAsC,CACN,EACI,GAAI,KAAK,cAAgBqD,EAAI,KAAK,aAChC,OAAO,KAAKkB,GAAGjL,EAAG,KAAK,EAAG0G,IAAMA,EAAE,IAAM,OAAQA,EAAE,qBAAuB,IAAK,KAChF,IAAIsD,EAAI,KAAKxB,KAAO,EAAI,OAAS,KAAKE,GAAG,IAAI1I,CAAC,EAC9C,GAAIgK,IAAM,OACRA,EAAI,KAAKxB,KAAO,EAAI,KAAKO,GAAK,KAAKC,GAAG,SAAW,EAAI,KAAKA,GAAG,IAAG,EAAK,KAAKR,KAAO,KAAK,GAAK,KAAK8C,GAAG,EAAE,EAAI,KAAK9C,GAAI,KAAKG,GAAGqB,CAAC,EAAIhK,EAAG,KAAK,GAAGgK,CAAC,EAAI,EAAG,KAAKtB,GAAG,IAAI1I,EAAGgK,CAAC,EAAG,KAAKpB,GAAG,KAAKG,EAAE,EAAIiB,EAAG,KAAKnB,GAAGmB,CAAC,EAAI,KAAKjB,GAAI,KAAKA,GAAKiB,EAAG,KAAKxB,KAAM,KAAK6C,GAAGrB,EAAGD,EAAGrD,CAAC,EAAGA,IAAMA,EAAE,IAAM,OAAQoD,EAAI,GAAI,KAAKP,IAAM,KAAKpB,KAAK,EAAGnI,EAAG,KAAK,MACtT,CACH,KAAK0J,GAAGM,CAAC,EACT,MAAM,EAAI,KAAK,GAAGA,CAAC,EACnB,GAAI,IAAM,EAAG,CACX,GAAI,KAAKX,IAAM,KAAKG,GAAG,CAAC,EAAG,CACzB,EAAE,kBAAkB,MAAM,IAAI,MAAM,UAAU,CAAC,EAC/C,KAAM,CAAE,qBAAsBS,CAAG,EAAG,EACpCA,IAAM,QAAU,CAAC,IAAM,KAAKb,IAAM,KAAK,KAAKa,EAAGjK,EAAG,KAAK,EAAG,KAAKsJ,IAAM,KAAKL,IAAI,KAAK,CAACgB,EAAGjK,EAAG,KAAK,CAAC,EACjG,MACC,IAAM,KAAKoJ,IAAM,KAAK,KAAK,EAAGpJ,EAAG,KAAK,EAAG,KAAKsJ,IAAM,KAAKL,IAAI,KAAK,CAAC,EAAGjJ,EAAG,KAAK,CAAC,GACjF,GAAI,KAAKmL,GAAGnB,CAAC,EAAG,KAAKqB,GAAGrB,EAAGD,EAAGrD,CAAC,EAAG,KAAK,GAAGsD,CAAC,EAAI,EAAGtD,EAAG,CACnDA,EAAE,IAAM,UACR,MAAMuD,EAAI,GAAK,KAAKT,GAAG,CAAC,EAAI,EAAE,qBAAuB,EACrDS,IAAM,SAAWvD,EAAE,SAAWuD,EAC/B,CACF,MACCvD,IAAMA,EAAE,IAAM,UAChB,KAAK6C,IAAM,KAAK,WAAW,EAAGvJ,EAAG,IAAM,EAAI,SAAW,SAAS,CAChE,CACD,GAAIoB,IAAM,GAAK,CAAC,KAAK,IAAM,KAAKyJ,GAAI,EAAE,KAAK,KAAOf,GAAK,KAAKiB,GAAGf,EAAG5I,EAAGc,CAAC,EAAGwE,GAAK,KAAKwE,GAAGxE,EAAGsD,CAAC,GAAI,CAAC,GAAK,KAAKV,IAAM,KAAKL,GAAI,CACtH,MAAM,EAAI,KAAKA,GACf,IAAIgB,EACJ,KAAOA,EAAI,GAAG,MAAO,GACnB,KAAK7B,KAAK,GAAG6B,CAAC,CACjB,CACD,OAAO,IACR,CAKD,KAAM,CACJ,GAAI,CACF,KAAO,KAAKzB,IAAM,CAChB,MAAMxI,EAAI,KAAK,GAAG,KAAK8I,EAAE,EACzB,GAAI,KAAKwC,GAAG,EAAE,EAAG,KAAK9B,GAAGxJ,CAAC,GACxB,GAAIA,EAAE,qBACJ,OAAOA,EAAE,6BACFA,IAAM,OACf,OAAOA,CACV,CACP,QAAc,CACR,GAAI,KAAKsJ,IAAM,KAAKL,GAAI,CACtB,MAAMjJ,EAAI,KAAKiJ,GACf,IAAI,EACJ,KAAO,EAAIjJ,GAAG,MAAO,GACnB,KAAKoI,KAAK,GAAG,CAAC,CACjB,CACF,CACF,CACDkD,GAAGtL,EAAG,CACJ,MAAM,EAAI,KAAK8I,GAAI,EAAI,KAAKH,GAAG,CAAC,EAAGvH,EAAI,KAAK,GAAG,CAAC,EAChD,OAAO,KAAKiI,IAAM,KAAKG,GAAGpI,CAAC,EAAIA,EAAE,kBAAkB,MAAM,IAAI,MAAM,SAAS,CAAC,GAAK,KAAKgI,IAAM,KAAKE,MAAQ,KAAKF,IAAM,KAAK,KAAKhI,EAAG,EAAG,OAAO,EAAG,KAAKkI,IAAM,KAAKL,IAAI,KAAK,CAAC7H,EAAG,EAAG,OAAO,CAAC,GAAI,KAAK+J,GAAG,CAAC,EAAG,KAAK,KAAK,CAAC,IAAM,aAAa,KAAK,GAAG,CAAC,CAAC,EAAG,KAAK,GAAG,CAAC,EAAI,QAASnL,IAAM,KAAK2I,GAAG,CAAC,EAAI,OAAQ,KAAK,GAAG,CAAC,EAAI,OAAQ,KAAKK,GAAG,KAAK,CAAC,GAAI,KAAKR,KAAO,GAAK,KAAKM,GAAK,KAAKC,GAAK,EAAG,KAAKC,GAAG,OAAS,GAAK,KAAKF,GAAK,KAAKF,GAAG,CAAC,EAAG,KAAKF,GAAG,OAAO,CAAC,EAAG,KAAKF,KAAM,CAC7b,CAiBD,IAAIxI,EAAG,EAAI,GAAI,CACb,KAAM,CAAE,OAAQ,EAAI,MAAM,EAAK,EAC/B,OAAO,EAAE,OAAS,EAAG,IAAM,EAAE,GAAK,MAAO,EAAE,IAAMA,GAAI,KAAK0L,GAAG1L,EAAG,CAAC,CAClE,CACD0L,GAAG1L,EAAG,EAAI,GAAI,CACZ,KAAM,CAAE,eAAgB,EAAI,KAAK,eAAgB,OAAQoB,CAAG,EAAG,EAAGc,EAAI,KAAKwG,GAAG,IAAI1I,CAAC,EACnF,GAAIkC,IAAM,OAAQ,CAChB,MAAM,EAAI,KAAK,GAAGA,CAAC,EACnB,GAAI,KAAKsH,GAAG,CAAC,GAAK,EAAE,uBAAyB,OAC3C,MAAO,GACT,GAAI,KAAKK,GAAG3H,CAAC,EACXd,IAAMA,EAAE,IAAM,QAAS,KAAK8J,GAAG9J,EAAGc,CAAC,OAEnC,QAAO,GAAK,KAAK8I,GAAG9I,CAAC,EAAGd,IAAMA,EAAE,IAAM,MAAO,KAAK8J,GAAG9J,EAAGc,CAAC,GAAI,EAChE,MACCd,IAAMA,EAAE,IAAM,QAChB,MAAO,EACR,CAQD,KAAKpB,EAAG,EAAI,GAAI,CACd,KAAM,CAAE,OAAQ,EAAI,MAAM,EAAK,EAC/B,OAAO,IAAM,EAAE,GAAK,OAAQ,EAAE,IAAMA,GAAI,EAAE,OAAS,EAAG,KAAK2L,GAAG3L,EAAG,CAAC,CACnE,CACD2L,GAAG3L,EAAG,EAAG,CACP,KAAM,CAAE,OAAQ,EAAG,WAAYoB,EAAI,KAAK,UAAY,EAAG,EAAGc,EAAI,KAAKwG,GAAG,IAAI1I,CAAC,EAC3E,GAAIkC,IAAM,QAAU,CAACd,GAAK,KAAKyI,GAAG3H,CAAC,EAAG,CACpC,IAAM,EAAE,KAAOA,IAAM,OAAS,OAAS,SACvC,MACD,CACD,MAAM,EAAI,KAAK,GAAGA,CAAC,EAAGkC,EAAI,KAAKoF,GAAG,CAAC,EAAI,EAAE,qBAAuB,EAChE,OAAO,IAAMpF,IAAM,QAAU,EAAE,KAAO,MAAO,EAAE,MAAQA,GAAK,EAAE,KAAO,QAASA,CAC/E,CACDqF,GAAGzJ,EAAG,EAAG,EAAGoB,EAAG,CACb,MAAMc,EAAI,IAAM,OAAS,OAAS,KAAK,GAAG,CAAC,EAC3C,GAAI,KAAKsH,GAAGtH,CAAC,EACX,OAAOA,EACT,MAAM,EAAI,IAAI,gBAAmB,CAAE,OAAQkC,CAAG,EAAG,EACjDA,GAAG,iBAAiB,QAAS,IAAM,EAAE,MAAMA,EAAE,MAAM,EAAG,CACpD,OAAQ,EAAE,MAChB,CAAK,EACD,MAAMsC,EAAI,CACR,OAAQ,EAAE,OACV,QAAS,EACT,QAAStF,CACV,EAAE0I,EAAI,CAACI,EAAGC,EAAI,KAAO,CACpB,KAAM,CAAE,QAASC,GAAM,EAAE,OAAQC,EAAI,EAAE,kBAAoBH,IAAM,OAAQI,EAAI,EAAE,kBAAoB,CAAC,EAAE,EAAE,wBAA0BJ,IAAM,QACxI,GAAI,EAAE,SAAWE,GAAK,CAACD,GAAK,EAAE,OAAO,aAAe,GAAI,EAAE,OAAO,WAAa,EAAE,OAAO,OAAQE,IAAM,EAAE,OAAO,kBAAoB,KAAO,EAAE,OAAO,cAAgB,IAAKD,GAAK,CAACC,GAAK,CAACF,EACjL,OAAOH,EAAE,EAAE,OAAO,OAAQM,CAAC,EAC7B,MAAM,EAAIL,EAAGM,EAAI,KAAK,GAAG,CAAC,EAC1B,OAAQA,IAAMN,GAAKM,IAAM,QAAUF,GAAKF,KAAOD,IAAM,OAAS,EAAE,uBAAyB,OAAS,KAAK,GAAG,CAAC,EAAI,EAAE,qBAAuB,KAAKe,GAAGjL,EAAG,OAAO,GAAK,EAAE,SAAW,EAAE,OAAO,aAAe,IAAK,KAAKyL,GAAGzL,EAAGkK,EAAGxD,EAAE,OAAO,IAAKwD,CAC3O,EAAOH,EAAKG,IAAO,EAAE,SAAW,EAAE,OAAO,cAAgB,GAAI,EAAE,OAAO,WAAaA,GAAIF,EAAEE,EAAG,EAAE,GAAIF,EAAI,CAACE,EAAGC,IAAM,CAC1G,KAAM,CAAE,QAASC,GAAM,EAAE,OAAQC,EAAID,GAAK,EAAE,uBAAwBE,EAAID,GAAK,EAAE,2BAA4B,EAAIC,GAAK,EAAE,yBAA0BC,EAAIN,EACpJ,GAAI,KAAK,GAAG,CAAC,IAAMA,IAAM,CAAC,GAAK,CAACE,GAAKI,EAAE,uBAAyB,OAAS,KAAKU,GAAGjL,EAAG,OAAO,EAAIqK,IAAM,KAAK,GAAG,CAAC,EAAIE,EAAE,uBAAwBD,EAC1I,OAAO,EAAE,QAAUC,EAAE,uBAAyB,SAAW,EAAE,OAAO,cAAgB,IAAKA,EAAE,qBAC3F,GAAIA,EAAE,aAAeA,EACnB,MAAML,CACd,EAAO,EAAI,CAACA,EAAGC,IAAM,CACf,MAAMC,EAAI,KAAK/B,KAAKrI,EAAGkC,EAAGwE,CAAC,EAC3B0D,GAAKA,aAAa,SAAWA,EAAE,KAAMC,GAAMH,EAAEG,IAAM,OAAS,OAASA,CAAC,EAAGF,CAAC,EAAG,EAAE,OAAO,iBAAiB,QAAS,IAAM,EACnH,CAAC,EAAE,kBAAoB,EAAE,0BAA4BD,EAAE,MAAM,EAAG,EAAE,yBAA2BA,EAAKG,GAAMP,EAAEO,EAAG,EAAE,GACxH,CAAO,CACP,EACI,EAAE,SAAW,EAAE,OAAO,gBAAkB,IACxC,MAAMJ,EAAI,IAAI,QAAQ,CAAC,EAAE,KAAKH,EAAGC,CAAC,EAAG,EAAI,OAAO,OAAOE,EAAG,CACxD,kBAAmB,EACnB,qBAAsB/H,EACtB,WAAY,MAClB,CAAK,EACD,OAAO,IAAM,QAAU,KAAKuJ,GAAGzL,EAAG,EAAG,CAAE,GAAG0G,EAAE,QAAS,OAAQ,OAAQ,EAAG,EAAI,KAAKgC,GAAG,IAAI1I,CAAC,GAAK,KAAK,GAAG,CAAC,EAAI,EAAG,CAC/G,CACDwJ,GAAGxJ,EAAG,CACJ,GAAI,CAAC,KAAKqJ,GACR,MAAO,GACT,MAAM,EAAIrJ,EACV,MAAO,CAAC,CAAC,GAAK,aAAa,SAAW,OAAO,UAAU,eAAe,KAAK,EAAG,sBAAsB,GAAK,EAAE,6BAA6B,eACzI,CACD,MAAMA,EAAG,EAAI,GAAI,CACf,KAAM,CAAE,OAAQ,EAAI,MAAM,EAAK,EAC/B,OAAO,EAAE,OAAS,EAAG,GAAK,EAAE,UAAY,EAAE,QAAU,EAAE,SAAU,KAAK,GAAGA,EAAG,CAAC,CAC7E,CACD,KAAM,GAAGA,EAAG,EAAI,GAAI,CAClB,KAAM,CAEJ,WAAY,EAAI,KAAK,WACrB,eAAgBoB,EAAI,KAAK,eACzB,mBAAoBc,EAAI,KAAK,mBAE7B,IAAK,EAAI,KAAK,IACd,eAAgBkC,EAAI,KAAK,eACzB,KAAMsC,EAAI,EACV,gBAAiBoD,EAAI,KAAK,gBAC1B,YAAaC,EAAI,KAAK,YAEtB,yBAA0BC,EAAI,KAAK,yBACnC,2BAA4B,EAAI,KAAK,2BACrC,iBAAkBC,EAAI,KAAK,iBAC3B,uBAAwB,EAAI,KAAK,uBACjC,QAASC,EACT,aAAcC,EAAI,GAClB,OAAQC,EACR,OAAQC,CACT,EAAG,EACJ,GAAID,IAAMA,EAAE,GAAK,QAASA,EAAE,IAAMpK,EAAGmK,IAAMC,EAAE,aAAe,KAAM,CAAC,KAAKf,GACtE,OAAOe,IAAMA,EAAE,MAAQ,OAAQ,KAAKoB,GAAGxL,EAAG,CACxC,WAAY,EACZ,eAAgBoB,EAChB,mBAAoBc,EACpB,OAAQkI,CAChB,CAAO,EACH,MAAME,EAAI,CACR,WAAY,EACZ,eAAgBlJ,EAChB,mBAAoBc,EACpB,IAAK,EACL,eAAgBkC,EAChB,KAAMsC,EACN,gBAAiBoD,EACjB,YAAaC,EACb,yBAA0BC,EAC1B,2BAA4B,EAC5B,uBAAwB,EACxB,iBAAkBC,EAClB,OAAQG,EACR,OAAQC,CACT,EAAE,EAAI,KAAK3B,GAAG,IAAI1I,CAAC,EACpB,GAAI,IAAM,OAAQ,CAChBoK,IAAMA,EAAE,MAAQ,QAChB,MAAMG,EAAI,KAAKd,GAAGzJ,EAAG,EAAGsK,EAAGJ,CAAC,EAC5B,OAAOK,EAAE,WAAaA,CAC5B,KAAW,CACL,MAAMA,EAAI,KAAK,GAAG,CAAC,EACnB,GAAI,KAAKf,GAAGe,CAAC,EAAG,CACd,MAAMO,EAAI,GAAKP,EAAE,uBAAyB,OAC1C,OAAOH,IAAMA,EAAE,MAAQ,WAAYU,IAAMV,EAAE,cAAgB,KAAMU,EAAIP,EAAE,qBAAuBA,EAAE,WAAaA,CAC9G,CACD,MAAMC,EAAI,KAAKX,GAAG,CAAC,EACnB,GAAI,CAACM,GAAK,CAACK,EACT,OAAOJ,IAAMA,EAAE,MAAQ,OAAQ,KAAKV,GAAG,CAAC,EAAGtI,GAAK,KAAK4J,GAAG,CAAC,EAAGZ,GAAK,KAAKc,GAAGd,EAAG,CAAC,EAAGG,EAClF,MAAME,EAAI,KAAKhB,GAAGzJ,EAAG,EAAGsK,EAAGJ,CAAC,EAAGS,EAAIF,EAAE,uBAAyB,QAAU,EACxE,OAAOL,IAAMA,EAAE,MAAQI,EAAI,QAAU,UAAWG,GAAKH,IAAMJ,EAAE,cAAgB,KAAMO,EAAIF,EAAE,qBAAuBA,EAAE,WAAaA,CAChI,CACF,CACD,WAAWzK,EAAG,EAAI,GAAI,CACpB,KAAM,CAAE,OAAQ,EAAI,MAAM,EAAK,EAC/B,OAAO,EAAE,OAAS,EAAG,GAAK,EAAE,UAAY,EAAE,QAAU,EAAE,SAAU,KAAK4L,GAAG5L,EAAG,CAAC,CAC7E,CACD,KAAM4L,GAAG5L,EAAG,EAAI,GAAI,CAClB,MAAM,EAAI,MAAM,KAAK,GACnBA,EACA,CACN,EACI,GAAI,IAAM,OACR,MAAM,IAAI,MAAM,4BAA4B,EAC9C,OAAO,CACR,CACD,KAAKA,EAAG,EAAI,GAAI,CACd,KAAM,CAAE,OAAQ,EAAI,MAAM,EAAK,EAC/B,EAAE,OAAS,EAAG,IAAM,EAAE,GAAK,OAAQ,EAAE,IAAMA,EAAG,EAAE,UAAY,EAAE,QAAU,EAAE,UAC1E,MAAMoB,EAAI,KAAKyK,GAAG7L,EAAG,CAAC,EACtB,OAAO,IAAM,EAAE,MAAQoB,GAAIA,CAC5B,CACDyK,GAAG7L,EAAG,EAAI,GAAI,CACZ,MAAM,EAAI,KAAKsI,GACf,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,uCAAuC,EACzD,KAAM,CAAE,QAASlH,EAAG,OAAQc,EAAG,aAAc,EAAG,GAAGkC,CAAG,EAAG,EACzDlC,GAAK,IAAMA,EAAE,aAAe,IAC5B,MAAMwE,EAAI,KAAK8E,GAAGxL,EAAGoE,CAAC,EAAG0F,EAAI,GAAKpD,IAAM,OACxC,GAAIxE,IAAMA,EAAE,KAAO4H,EAAI,OAAS,MAAOA,IAAM5H,EAAE,MAAQwE,IAAK,CAACoD,EAC3D,OAAOpD,EACT,MAAMqD,EAAI,EAAE/J,EAAG0G,EAAG,CAChB,QAAStC,EACT,QAAShD,CACf,CAAK,EACD,OAAOc,IAAMA,EAAE,MAAQ6H,GAAI,KAAK0B,GAAGzL,EAAG+J,EAAG3F,CAAC,EAAG2F,CAC9C,CAOD,IAAI/J,EAAG,EAAI,GAAI,CACb,KAAM,CAAE,OAAQ,EAAI,MAAM,EAAK,EAC/B,EAAE,OAAS,EAAG,IAAM,EAAE,GAAK,MAAO,EAAE,IAAMA,GAC1C,MAAMoB,EAAI,KAAKoK,GAAGxL,EAAG,CAAC,EACtB,OAAO,GAAKoB,IAAM,SAAW,EAAE,MAAQA,GAAIA,CAC5C,CACDoK,GAAGxL,EAAG,EAAI,GAAI,CACZ,KAAM,CACJ,WAAY,EAAI,KAAK,WACrB,eAAgBoB,EAAI,KAAK,eACzB,mBAAoBc,EAAI,KAAK,mBAC7B,OAAQ,CACd,EAAQ,EAAGkC,EAAI,KAAKsE,GAAG,IAAI1I,CAAC,EACxB,GAAIoE,IAAM,OAAQ,CAChB,IAAM,EAAE,IAAM,QACd,MACD,CACD,MAAMsC,EAAI,KAAK,GAAGtC,CAAC,EAAG0F,EAAI,KAAKN,GAAG9C,CAAC,EACnC,OAAO,GAAK,KAAKwE,GAAG,EAAG9G,CAAC,EAAG,KAAKyF,GAAGzF,CAAC,EAAI0F,GAAK,IAAM,EAAE,IAAM,kBAAmB,GAAKpD,EAAE,uBAAyB,QAAU,IAAM,EAAE,cAAgB,IAAKA,EAAE,sBAAwB,SAAWxE,GAAK,KAAK+I,GAAGjL,EAAG,QAAQ,EAAG,IAAM,EAAE,IAAM,SAAU,GAAK,IAAM,EAAE,cAAgB,IAAK0G,GAAK,SAAW,IAAM,EAAE,IAAMoD,EAAI,WAAa,OAAQ,KAAKJ,GAAGtF,CAAC,EAAGhD,GAAK,KAAK4J,GAAG5G,CAAC,EAAG0F,EAAIpD,EAAE,qBAAuBA,EACjY,CACD,GAAG1G,EAAG,EAAG,CACP,KAAK6I,GAAG,CAAC,EAAI7I,EAAG,KAAK4I,GAAG5I,CAAC,EAAI,CAC9B,CACD0J,GAAG1J,EAAG,CACJA,IAAM,KAAK+I,KAAO/I,IAAM,KAAK8I,GAAK,KAAKA,GAAK,KAAKF,GAAG5I,CAAC,EAAI,KAAK,GAAG,KAAK6I,GAAG7I,CAAC,EAAG,KAAK4I,GAAG5I,CAAC,CAAC,EAAG,KAAK,GAAG,KAAK+I,GAAI/I,CAAC,EAAG,KAAK+I,GAAK/I,EAC1H,CAMD,OAAOA,EAAG,CACR,OAAO,KAAKiL,GAAGjL,EAAG,QAAQ,CAC3B,CACDiL,GAAGjL,EAAG,EAAG,CACP,IAAI,EAAI,GACR,GAAI,KAAKwI,KAAO,EAAG,CACjB,MAAMpH,EAAI,KAAKsH,GAAG,IAAI1I,CAAC,EACvB,GAAIoB,IAAM,OACR,GAAI,KAAK,KAAKA,CAAC,IAAM,aAAa,KAAK,KAAKA,CAAC,CAAC,EAAG,KAAK,GAAGA,CAAC,EAAI,QAAS,EAAI,GAAI,KAAKoH,KAAO,EACzF,KAAKsD,GAAG,CAAC,MACN,CACH,KAAKX,GAAG/J,CAAC,EACT,MAAMc,EAAI,KAAK,GAAGd,CAAC,EACnB,GAAI,KAAKoI,GAAGtH,CAAC,EAAIA,EAAE,kBAAkB,MAAM,IAAI,MAAM,SAAS,CAAC,GAAK,KAAKkH,IAAM,KAAKE,MAAQ,KAAKF,IAAM,KAAK,KAAKlH,EAAGlC,EAAG,CAAC,EAAG,KAAKsJ,IAAM,KAAKL,IAAI,KAAK,CAAC/G,EAAGlC,EAAG,CAAC,CAAC,GAAI,KAAK0I,GAAG,OAAO1I,CAAC,EAAG,KAAK2I,GAAGvH,CAAC,EAAI,OAAQ,KAAK,GAAGA,CAAC,EAAI,OAAQA,IAAM,KAAK2H,GACvO,KAAKA,GAAK,KAAKF,GAAGzH,CAAC,UACZA,IAAM,KAAK0H,GAClB,KAAKA,GAAK,KAAKF,GAAGxH,CAAC,MAChB,CACH,MAAM,EAAI,KAAKyH,GAAGzH,CAAC,EACnB,KAAKwH,GAAG,CAAC,EAAI,KAAKA,GAAGxH,CAAC,EACtB,MAAMgD,EAAI,KAAKwE,GAAGxH,CAAC,EACnB,KAAKyH,GAAGzE,CAAC,EAAI,KAAKyE,GAAGzH,CAAC,CACvB,CACD,KAAKoH,KAAM,KAAKQ,GAAG,KAAK5H,CAAC,CAC1B,CACJ,CACD,GAAI,KAAKkI,IAAM,KAAKL,IAAI,OAAQ,CAC9B,MAAM7H,EAAI,KAAK6H,GACf,IAAI/G,EACJ,KAAOA,EAAId,GAAG,MAAO,GACnB,KAAKgH,KAAK,GAAGlG,CAAC,CACjB,CACD,OAAO,CACR,CAID,OAAQ,CACN,OAAO,KAAK4J,GAAG,QAAQ,CACxB,CACDA,GAAG9L,EAAG,CACJ,UAAW,KAAK,KAAK4J,GAAG,CAAE,WAAY,EAAE,CAAE,EAAG,CAC3C,MAAM,EAAI,KAAK,GAAG,CAAC,EACnB,GAAI,KAAKJ,GAAG,CAAC,EACX,EAAE,kBAAkB,MAAM,IAAI,MAAM,SAAS,CAAC,MAC3C,CACH,MAAMpI,EAAI,KAAKuH,GAAG,CAAC,EACnB,KAAKS,IAAM,KAAK,KAAK,EAAGhI,EAAGpB,CAAC,EAAG,KAAKsJ,IAAM,KAAKL,IAAI,KAAK,CAAC,EAAG7H,EAAGpB,CAAC,CAAC,CAClE,CACF,CACD,GAAI,KAAK0I,GAAG,MAAK,EAAI,KAAK,GAAG,KAAK,MAAM,EAAG,KAAKC,GAAG,KAAK,MAAM,EAAG,KAAK,IAAM,KAAKQ,GAAI,CACnF,KAAK,GAAG,KAAK,CAAC,EAAG,KAAKA,GAAG,KAAK,CAAC,EAC/B,UAAW,KAAK,KAAK,IAAM,CAAE,EAC3B,IAAM,QAAU,aAAa,CAAC,EAChC,KAAK,IAAI,KAAK,MAAM,CACrB,CACD,GAAI,KAAKD,IAAM,KAAKA,GAAG,KAAK,CAAC,EAAG,KAAKJ,GAAK,EAAG,KAAKC,GAAK,EAAG,KAAKC,GAAG,OAAS,EAAG,KAAKP,GAAK,EAAG,KAAKD,GAAK,EAAG,KAAKc,IAAM,KAAKL,GAAI,CAC1H,MAAM,EAAI,KAAKA,GACf,IAAI,EACJ,KAAO,EAAI,GAAG,MAAO,GACnB,KAAKb,KAAK,GAAG,CAAC,CACjB,CACF,CACH,CACA,MAAM2D,EAAG,CAEP,KAEA,cAAgC,IAAI,IAEpC,aAA+B,IAAI,IAGnC,YAA8B,OAAO,OAAO,IAAI,EAChD,IACA,IAKA,eACA,cACA,eACA,cACA,YACA,QACA,eACA,MACA,gBACA,YAAY,CACV,IAAK/L,EAAI,EAAI,EACb,IAAK,EAAI,EAAI,EAIb,eAAgB,EAAI,GACpB,cAAeoB,EAAI,GACnB,eAAgBc,EAAI,GACpB,cAAe,EAAI,GACnB,YAAakC,EAAI,GACjB,QAASsC,EACT,eAAgBoD,EAAI,EACrB,EAAG,GAAIC,EAAoB,IAAI,IAAO,CACrC,GAAI/J,IAAM,QAAU,CAAC6E,GAAG7E,CAAC,EACvB,MAAM,IAAI,UAAU,iDAAiD,EACvE,GAAI,CAAC6E,GAAG,CAAC,EACP,MAAM,IAAI,UAAU,0CAA0C,EAChE,GAAI,KAAK,KAAOkF,EAAG,KAAK,IAAM/J,EAAG,KAAK,IAAM,EAAG,KAAK,eAAiB,CAAC,CAAC,EAAG,KAAK,cAAgB,CAAC,CAACoB,EAAG,KAAK,eAAiB,CAAC,CAACc,EAAG,KAAK,cAAgB,CAAC,CAAC,EAAG,KAAK,YAAc,CAAC,CAACkC,EAAG,KAAK,eAAiB,CAAC,CAAC0F,EAAGpD,IAAM,OAAQ,CACxN,GAAI,OAAOA,GAAK,WACd,MAAM,IAAI,UAAU,iCAAiC,EACvD,KAAK,QAAUA,CAChB,MACC,KAAK,QAAU,CAACsD,EAAG,EAAGC,IAAM,CAClC,EACI,KAAK,MAAQ,OAAQ,KAAK,gBAAkB,MAC7C,CACD,IAAI,MAAO,CACT,OAAO,KAAK,KAAK,IAClB,CAGD,SAASjK,EAAG,EAAG,CACb,GAAI,KAAK,iBAAmB,KAAK,gBAAkBA,EACjD,OACF,KAAK,OAAS,aAAa,KAAK,KAAK,EACrC,MAAM,EAAI,WAAW,IAAM,CACzB,KAAK,MAAQ,OAAQ,KAAK,gBAAkB,OAAQ,KAAK,aACzD,UAAWoB,KAAK,KAAK,YAAa,CAChC,MAAMc,EAAI,OAAOd,CAAC,EAClB,KAAK,SAASc,EAAGA,EAAIgE,GAAG,CAAA,EACxB,KACD,CACP,EAAO,KAAK,IAAI1B,GAAI,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC/B,EAAE,OAAS,EAAE,QAAS,KAAK,gBAAkBxE,EAAG,KAAK,MAAQ,CAC9D,CAID,aAAc,CACZ,KAAK,QAAU,aAAa,KAAK,KAAK,EAAG,KAAK,gBAAkB,OAAQ,KAAK,MAAQ,OACtF,CACD,OAAQ,CACN,MAAMA,EAAI,KAAK,UAAY+L,GAAG,UAAU,QAAU,CAAC,GAAG,IAAI,EAAI,GAC9D,KAAK,KAAK,MAAK,EAAI,KAAK,cAAc,MAAO,EAAE,KAAK,YAAW,EAAI,KAAK,YAA8B,OAAO,OAAO,IAAI,EACxH,SAAW,CAAC,EAAG,CAAC,IAAK/L,EACnB,KAAK,QAAQ,EAAG,EAAG,QAAQ,CAC9B,CACD,OAAOA,EAAG,EAAI,KAAK,IAAK,CACtB,MAAM,EAAI,KAAK,cAAc,IAAIA,CAAC,EAClC,GAAI,IAAM,OAAQ,CAChB,MAAMoB,EAAI,KAAK,YAAY,CAAC,EAC5B,CAACA,GAAKA,EAAE,QAAU,EAAI,OAAO,KAAK,YAAY,CAAC,EAAI,KAAK,YAAY,CAAC,EAAIA,EAAE,OAAQc,GAAMA,IAAMlC,CAAC,CACjG,CACD,GAAI,GAAK,IAAM,EAAI,EAAG,CACpB,KAAK,aAAa,OAAOA,CAAC,EAC1B,MAAMoB,EAAI,KAAK,MAAM8E,GAAG,EAAG,CAAC,EAC5B,KAAK,cAAc,IAAIlG,EAAGoB,CAAC,EAAG,KAAK,YAAYA,CAAC,IAAM,KAAK,YAAYA,CAAC,EAAI,CAAE,EAAE,KAAK,SAASA,EAAG,CAAC,GAAI,KAAK,YAAYA,CAAC,EAAE,KAAKpB,CAAC,CACjI,MACC,KAAK,aAAa,IAAIA,CAAC,EAAG,KAAK,cAAc,IAAIA,EAAG,EAAI,CAAC,CAC5D,CACD,IAAIA,EAAG,EAAG,CACR,IAAK,EAAI,KAAK,IACd,YAAaoB,EAAI,KAAK,YACtB,eAAgBc,EAAI,KAAK,cAC1B,EAAG,GAAI,CACN,GAAI,CAAC2C,GAAG,CAAC,EACP,MAAM,IAAI,UAAU,0CAA0C,EAChE,GAAI,KAAK,cAAc,IAAI7E,CAAC,EAAG,CAC7BoB,GAAK,KAAK,OAAOpB,EAAG,CAAC,EACrB,MAAM,EAAI,KAAK,KAAK,IAAIA,CAAC,EAAGoE,EAAI,CAAClC,GAAK,KAAK,KAAK,IAAIlC,CAAC,EACrD,IAAM,IAAM,KAAK,KAAK,IAAIA,EAAG,CAAC,EAAGoE,GAAK,KAAK,QAAQ,EAAGpE,EAAG,KAAK,EAC/D,MACC,KAAK,OAAOA,EAAG,CAAC,EAAG,KAAK,KAAK,IAAIA,EAAG,CAAC,EACvC,KAAO,KAAK,KAAO,KAAK,KACtB,KAAK,gBAAe,EACtB,OAAO,IACR,CACD,IAAIA,EAAG,CACL,cAAe,EAAI,KAAK,cACxB,IAAK,EAAI,KAAK,IACd,eAAgBoB,EAAI,KAAK,cAC1B,EAAG,GAAI,CACN,OAAO,KAAK,KAAK,IAAIpB,CAAC,EAAI,GAAK,KAAK,gBAAgBA,CAAC,IAAM,GAAK,KAAK,OAAOA,CAAC,EAAG,KAAOoB,GAAK,KAAK,OAAOpB,EAAG,CAAC,EAAG,IAAM,EACtH,CACD,gBAAgBA,EAAG,CACjB,MAAM,EAAI,KAAK,cAAc,IAAIA,CAAC,EAClC,OAAO,IAAM,EAAI,EAAI,EAAI,EAAI,IAAM,OAAS,KAAK,IAAI,EAAG,KAAK,KAAK,EAAIkG,GAAG,CAAA,CAAC,EAAI,CAC/E,CACD,IAAIlG,EAAG,CACL,eAAgB,EAAI,KAAK,eACzB,IAAK,EAAI,KAAK,IACd,cAAeoB,EAAI,KAAK,aACzB,EAAG,GAAI,CACN,MAAMc,EAAI,KAAK,KAAK,IAAIlC,CAAC,EACzB,GAAIoB,GAAK,KAAK,gBAAgBpB,CAAC,IAAM,EAAG,CACtC,KAAK,OAAOA,CAAC,EACb,MACD,CACD,OAAO,GAAK,KAAK,OAAOA,EAAG,CAAC,EAAGkC,CAChC,CACD,OAAOlC,EAAG,CACR,MAAM,EAAI,KAAK,cAAc,IAAIA,CAAC,EAClC,GAAI,IAAM,OAAQ,CAChB,MAAM,EAAI,KAAK,KAAK,IAAIA,CAAC,EACzB,KAAK,KAAK,OAAOA,CAAC,EAAG,KAAK,cAAc,OAAOA,CAAC,EAAG,KAAK,aAAa,OAAOA,CAAC,EAC7E,MAAMoB,EAAI,KAAK,YAAY,CAAC,EAC5B,OAAOA,IAAMA,EAAE,QAAU,EAAI,OAAO,KAAK,YAAY,CAAC,EAAI,KAAK,YAAY,CAAC,EAAIA,EAAE,OAC/Ec,GAAMA,IAAMlC,CACd,GAAG,KAAK,QAAQ,EAAGA,EAAG,QAAQ,EAAG,KAAK,OAAS,GAAK,KAAK,YAAa,EAAE,EAC1E,CACD,MAAO,EACR,CAED,iBAAkB,CAChB,GAAI,EAAE,KAAK,MAAQ,KAAK,KACtB,UAAWA,KAAK,KAAK,YAAa,CAChC,MAAM,EAAI,KAAK,YAAYA,CAAC,EAC5B,GAAI,KAAK,KAAO,EAAE,QAAU,KAAK,IAAK,CACpC,OAAO,KAAK,YAAYA,CAAC,EACzB,MAAM,EAAI,CAAA,EACV,UAAWoB,KAAK,EACd,EAAE,KAAK,CAACA,EAAG,KAAK,KAAK,IAAIA,CAAC,CAAC,CAAC,EAAG,KAAK,KAAK,OAAOA,CAAC,EAAG,KAAK,cAAc,OAAOA,CAAC,EACjF,SAAW,CAACA,EAAGc,CAAC,IAAK,EACnB,KAAK,QAAQA,EAAGd,EAAG,OAAO,CACtC,KAAe,CACL,MAAM,EAAI,KAAK,KAAO,KAAK,IAAKA,EAAI,GACpC,UAAWc,KAAK,EAAE,OAAO,EAAG,CAAC,EAC3Bd,EAAE,KAAK,CAACc,EAAG,KAAK,KAAK,IAAIA,CAAC,CAAC,CAAC,EAAG,KAAK,KAAK,OAAOA,CAAC,EAAG,KAAK,cAAc,OAAOA,CAAC,EACjF,SAAW,CAACA,EAAG,CAAC,IAAKd,EACnB,KAAK,QAAQ,EAAGc,EAAG,OAAO,CAC7B,CACF,CACJ,CAED,YAAa,CACX,MAAMlC,EAAI,KAAK,KAAKkG,GAAG,CAAA,EACvB,UAAW,KAAK,KAAK,YAAa,CAChC,GAAI,IAAM,YAAc,OAAO,CAAC,EAAIlG,EAClC,OACF,MAAM,EAAI,CAAC,GAAG,KAAK,YAAY,CAAC,GAAK,CAAE,CAAA,EAAGoB,EAAI,GAC9C,OAAO,KAAK,YAAY,CAAC,EACzB,UAAWc,KAAK,EACdd,EAAE,KAAK,CAACc,EAAG,KAAK,KAAK,IAAIA,CAAC,CAAC,CAAC,EAAG,KAAK,KAAK,OAAOA,CAAC,EAAG,KAAK,cAAc,OAAOA,CAAC,EACjF,SAAW,CAACA,EAAG,CAAC,IAAKd,EACnB,KAAK,QAAQ,EAAGc,EAAG,QAAQ,CAC9B,CACD,KAAK,OAAS,GAAK,KAAK,YAAW,CACpC,CACD,CAAC,SAAU,CACT,UAAWlC,KAAK,KAAK,YACnB,UAAW,KAAK,KAAK,YAAYA,CAAC,EAChC,KAAM,CAAC,EAAG,KAAK,KAAK,IAAI,CAAC,CAAC,EAC9B,UAAWA,KAAK,KAAK,aACnB,KAAM,CAACA,EAAG,KAAK,KAAK,IAAIA,CAAC,CAAC,CAC7B,CACD,CAAC,MAAO,CACN,UAAWA,KAAK,KAAK,YACnB,UAAW,KAAK,KAAK,YAAYA,CAAC,EAChC,MAAM,EACV,UAAWA,KAAK,KAAK,aACnB,MAAMA,CACT,CACD,CAAC,QAAS,CACR,UAAWA,KAAK,KAAK,YACnB,UAAW,KAAK,KAAK,YAAYA,CAAC,EAChC,MAAM,KAAK,KAAK,IAAI,CAAC,EACzB,UAAWA,KAAK,KAAK,aACnB,MAAM,KAAK,KAAK,IAAIA,CAAC,CACxB,CACD,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAO,KAAK,SACb,CACD,UAAW,CACT,OAAO,KAAK,KAAI,EAAG,KAAI,EAAG,KAC3B,CACH,CAkCA,MAAMgM,EAAG,CACP,MACA,iBACA,YAAYhM,EAAG,CACb,GAAI,OAAO,gBAAkB,IAC3B,MAAM,IAAI,MAAM,gCAAgC,EAClD,KAAK,MAAQA,GAAG,YAAcA,EAAE,YAAa,EAAmB,IAAI,IAAO,KAAK,iBAAmBA,GAAG,mBAAqB,IAAI,IAAM,OAAO,EAAE,CAAC,CAAC,EACjJ,CACD,OAAOA,EAAG,CACR,MAAM,EAAI,KAAK,iBAAiB,GAAGA,CAAC,EAAG,EAAI,IAAI,gBAC/C,OAAO,KAAK,MAAM,IAAI,EAAG,CAAC,EAAG,CAC9B,CACD,OAAOA,EAAG,CACR,MAAM,EAAI,KAAK,iBAAiB,GAAGA,CAAC,EACpC,OAAO,KAAK,MAAM,IAAI,CAAC,CACxB,CACD,UAAUA,EAAG,CACX,MAAM,EAAI,KAAK,iBAAiB,GAAGA,CAAC,EACpC,OAAO,KAAK,MAAM,OAAO,CAAC,CAC3B,CACD,OAAQ,CACN,KAAK,MAAM,OACZ,CACD,SAASA,EAAG,CACV,KAAK,IAAI,GAAGA,CAAC,GAAG,MAAO,EAAE,KAAK,OAAO,GAAGA,CAAC,CAC1C,CACH,CACA,MAAMiM,GAAK,CACT,OAAQ,IACR,WAAY,IACZ,KAAM,IACN,MAAO,GACT,EACA,SAASC,GAAGnM,EAAGC,EAAI,GAAI,CACrB,KAAM,CACJ,WAAY,EAAI,GAChB,cAAe,EAAI,GACnB,UAAWoB,EAAI;AAAA,EAEf,QAASc,CACb,EAAMlC,EAAG,EAAI,CAAA,EAAIoE,EAAoB,IAAI,QACvC,SAASsC,EAAEqD,EAAGC,EAAI,GAAI,EAAI,EAAG,CAC3B,GAAI,OAAOD,GAAK,SAAU,CACxB,EAAE,KAAKC,EAAI,IAAMD,EAAI,GAAG,EACxB,MACD,CACD,GAAI,OAAOA,GAAK,UAAYA,IAAM,KAAM,CACtC,GAAK,EAAE,KAAKC,EAAI,OAAOD,CAAC,CAAC,EACzB,MACD,CACD,GAAI7H,GAAK,GAAKA,EAAG,CACf,MAAM,QAAQnC,CAAC,EAAI,EAAE,KAAK,kBAAkB,EAAI,EAAE,KAAK,kBAAkB,EACzE,MACD,CACD,GAAIqE,EAAE,IAAI2F,CAAC,EAAG,CACZ,EAAE,KAAKC,EAAI,YAAY,EACvB,MACD,CACD5F,EAAE,IAAI2F,CAAC,EACP,MAAME,EAAI,OAAO,KAAKF,CAAC,EAAE,OAAQ,GAAM,EAAE,GAAK,OAAOA,EAAE,CAAC,GAAK,WAAW,EACxEE,EAAE,QAAQ,CAAC,EAAGC,IAAM,CAClB,MAAMC,EAAIJ,EAAE,CAAC,EAAGK,EAAIF,IAAMD,EAAE,OAAS,EAAGI,EAAI,IAAM,GAAKH,IAAM,EAAI,GAAKF,EAAGM,EAAIF,EAAI6B,GAAG,WAAaA,GAAG,OAAQ,EAAI,EAAE,KAAI,IAAO,GAAK,GAAK,EACvI,IAAI1B,EAAIF,EAAIC,GAAK,EAAI,IAAM,EAAI,IAC/B,MAAME,EAAI,EAAE,KAAI,IAAO,GACvB,GAAIL,GAAK,OAAOA,GAAK,UAAY/F,EAAE,IAAI+F,CAAC,EACtC,EAAE,KACAI,GAAKC,EAAI,KAAOD,EAAI,IAAM,IAAM,YAC1C,UACeJ,GAAK,OAAOA,GAAK,UAAY,CAAC,MAAM,QAAQA,CAAC,EAAG,CACvD,EAAE,KAAKI,CAAC,EACR,MAAME,EAAIL,EAAI6B,GAAG,MAAQA,GAAG,KAAMvB,EAAIL,EAAII,EAAI,IAC9C/D,EAAEyD,EAAGO,EAAG,EAAI,CAAC,CACd,SAAU,MAAM,QAAQP,CAAC,EAAG,CAC3B,EAAE,KACAI,GAAKC,EAAI,KAAOD,EAAI,IAAM,IAAM,UAAYJ,EAAE,OAAS,IACjE,EACQ,MAAMM,EAAIL,EAAI6B,GAAG,MAAQA,GAAG,KAAMvB,EAAIL,EAAII,EAAI,IAC9C/D,EAAEyD,EAAGO,EAAG,EAAI,CAAC,CACd,SAAU,EAAG,CACZ,MAAMD,EAAI,OAAON,GAAK,WAAa,aAAe,OAAOA,GAAK,SAAW,IAAM,OAAOA,CAAC,EAAI,IAAM,OAAOA,CAAC,EACzGI,IAAMC,EAAI,KAAOD,EAAI,IAAM,IAAME,EAAG,EAAE,KAAKF,CAAC,CAC7C,MACC,EAAE,KAAKA,CAAC,CAChB,CAAK,CACF,CACD,MAAMT,EAAI,OAAO,KAAK/J,CAAC,EACvB,GAAI+J,EAAE,SAAW,EACf,MAAO,UACT,GAAIA,EAAE,SAAW,GAAKA,EAAE,CAAC,IAAM,QAAUA,EAAE,CAAC,EAAE,KAAI,IAAO,IAAM,OAAO/J,EAAE+J,EAAE,CAAC,CAAC,GAAK,SAAU,CACzF,MAAMC,EAAID,EAAE,CAAC,EAAGE,EAAIiC,GAAG,WAAY,EAAIlM,EAAEgK,CAAC,EAAGE,EAAI,OAAO,GAAK,WAAa,aAAe,OAAO,GAAK,SAAW,IAAM,EAAI,IAAM,OAAO,CAAC,EACxI,OAAOD,EAAI,IAAMC,CAClB,CACD,OAAOvD,EAAE3G,CAAC,EAAGqB,EAAI,EAAE,KAAKA,CAAC,CAC3B,CACA,SAAS+K,GAAGpM,EAAI,UAAW,CACzB,IAAIC,EAAI,GACR,OAAQD,EAAC,CACP,IAAK,UACHC,EAAI,EACJ,MACF,IAAK,QACHA,EAAI,EACJ,MACF,IAAK,OACHA,EAAI,EACJ,MACF,IAAK,OACHA,EAAI,EACJ,MACF,IAAK,QACHA,EAAI,EACJ,KACH,CACD,OAAOA,CACT,CACA,SAASoM,GAAGrM,EAAI,UAAW,CACzBE,GAAE,eAAiBkM,GAAGpM,CAAC,CACzB,CACA,SAASsM,IAAK,CACZpM,GAAE,eAAiB,EACrB,CACA,SAASqM,GAAGvM,EAAG,CACbE,GAAE,cAAgBF,CACpB,CACAsM,KACA,SAASE,GAAGxM,EAAI,UAAW,CACzB,OAAOE,GAAE,gBAAkBkM,GAAGpM,CAAC,CACjC,CACA,SAASyM,GAAGzM,EAAG,CACbE,GAAE,eAAiBA,GAAE,cAAcF,CAAC,CACtC,CACA,SAAS0M,GAAG1M,EAAGC,EAAI,GAAI,CACrB,GAAI,CACF,GAAIwM,GAAG,CAAE,MAAO,OAAQ,IAAKzM,EAAG,KAAMC,CAAG,CAAA,EAAG,CAACuM,GAAG,MAAM,EACpD,OACF,QAAQ,IAAIxM,CAAC,CACjB,MAAU,CACP,CACH,CACA,SAAS2M,GAAG3M,EAAGC,EAAI,GAAI,CACrB,GAAI,CACF,GAAIwM,GAAG,CAAE,MAAO,OAAQ,IAAKzM,EAAG,KAAMC,CAAG,CAAA,EAAG,CAACuM,GAAG,MAAM,EACpD,OACF,QAAQ,KAAKxM,CAAC,CAClB,MAAU,CACP,CACH,CACA,SAAS4M,GAAG5M,EAAGC,EAAI,GAAI,CACrB,GAAI,CACF,GAAIwM,GAAG,CAAE,MAAO,QAAS,IAAKzM,EAAG,KAAMC,CAAG,CAAA,EAAG,CAACuM,GAAG,OAAO,EACtD,OACF,QAAQ,MAAMxM,CAAC,CACnB,MAAU,CACP,CACH,CACK,MAAC6M,GAAK,CACT,MAAQ7M,GAAM,CACZwM,GAAG,SAAS,IAAM,CAAC,SAAW,OAAO,SAAW,UAChD,OAAO,QAAQ,gBAAkB,YAAc,QAAQ,eAAexM,CAAC,EACxE,EACD,IAAK,IAAM,CACT,CAAC,SAAW,OAAO,SAAW,UAAY,OAAO,QAAQ,UAAY,YAAc,QAAQ,UAC5F,CACH,EA4OA,SAAS8M,GAAG9M,EAAG,CACb,GAAI,OAAO,eAAiB,MAAQmD,GAAG,cAAc,GAAK,eAAe,aAAe,sCAAuC,CAC7H,KAAM,CAAE,MAAOlD,EAAG,MAAO,CAAG,EAAG,IAAI,eACnCA,EAAE,UAAY,IAAM,CAClBA,EAAE,UAAY,KAAMD,GAC1B,EAAO,EAAE,YAAY,IAAI,CACtB,MACC,WAAWA,EAAG,CAAC,CACnB,CAIA,eAAe+M,IAAK,CAClB,OAAO,IAAI,QAAS/M,GAAM,CACxB8M,GAAG9M,CAAC,CACR,CAAG,CACH,CAGA,GAFAE,GAAE,sBAAwBA,GAAE,uBAAyBA,GAAE,6BAA+BA,GAAE,0BAA4BA,GAAE,wBAA0BA,GAAE,wBAClJA,GAAE,qBAAuBA,GAAE,sBAAwBA,GAAE,4BAA8BA,GAAE,yBAA2BA,GAAE,uBAAyBA,GAAE,uBACzI,CAACA,GAAE,sBAAuB,CAC5B,IAAIF,EAAImG,KACRjG,GAAE,sBAAyBD,GAAM,CAC/B,MAAM,EAAIkG,GAAG,EAAE,EAAI,KAAK,IAAI,EAAG,IAAM,EAAInG,EAAE,EAAGqB,EAAInB,GAAE,WAAW,IAAM,CACnED,EAAE,EAAI,CAAC,CACR,EAAE,CAAC,EACJ,OAAOD,EAAI,EAAI,EAAGqB,CACtB,CACA,CACAnB,GAAE,uBAAyBA,GAAE,qBAAwBF,GAAM,CACzDE,GAAE,aAAaF,CAAC,CAClB,GACA,MAAMgN,GAAK9M,GAAE,sBAAuB+M,GAAK/M,GAAE,qBAC3C,SAASgN,GAAGlN,EAAG,CACb,IAAIC,EAAI,GAAI,EAAI+M,GAAG,SAAS,EAAE3L,EAAG,CAC/BpB,GAAKD,EAAEqB,CAAC,IAAM,EAAI2L,GAAG,CAAC,EAC1B,CAAG,EACD,MAAO,IAAM,CACX/M,EAAI,GAAIgN,GAAG,CAAC,CAChB,CACA,CAwBA/M,GAAE,oBAAsBA,GAAE,qBAAuB,SAASF,EAAGC,EAAG,CAC9D,MAAM,EAAIkG,KACV,OAAO,WAAW,IAAM,CACtB,MAAM,EAAIA,KAAM,EAAG9E,EAAI,CACrB,WAAY,OAAOpB,GAAG,SAAW,SAAW,GAAK,EAAIA,EAAE,QAOvD,cAAe,IAAM,KAAK,IAAI,EAAG,GAAK,CAAC,CAC7C,EACID,EAAEqB,CAAC,CACP,EAAKpB,GAAG,OAAO,CACf,EACAC,GAAE,mBAAqBA,GAAE,oBAAsB,SAASF,EAAG,CACzD,aAAaA,CAAC,CAChB,EACWE,GAAE,oBAA0BA,GAAE,mBACzC,IAAIiN,GAAK,GAAIC,GAAK,GAAIC,GAAK,EAAGC,GAAK,EAAGC,GAAK,GAC3C,SAASC,GAAGxN,EAAG,CACbuN,KAAOA,GAAK,GAAIP,GAAI/M,GAAM,CACxBsN,GAAK,GAAIF,GAAKpN,EAAGqN,KAAO,IAAMA,GAAKD,GAAKD,IACxC,IAAI,EAAIA,GAAKC,GAAKC,GAClB,EAAIF,IAAMD,GAAKC,IAAM,EAAI,IAAM,EAAI,GAAIA,GAAK,KAAK,IAC/C,EACAD,EACN,GAAS,EAAIC,IAAMD,GAAKC,KAAOA,GAAK,KAAK,IACnC,EACAD,EACN,GAAQA,GAAK,EAAGG,GAAKD,GAAKD,GAAIN,GAAG,IAAM,CACjC9M,EAAEsN,EAAE,EAAGE,GAAGxN,CAAC,CACjB,CAAK,CACF,CAAA,EACH,CACA,SAASyN,GAAGzN,EAAG,CACb,MAAMC,EAAID,GAAG,eAAiB,IAAK,EAAI,CAAC,CAACA,GAAG,QAAS,EAAIA,GAAG,UAAakK,GAAM,CAC7E,MAAM,EAAI,KAAK,OAAOA,EAAE,KAAK,EAC7B,QAAQ,IACN,GAAG,CAAC,QAAQA,EAAE,EAAE,WAAWA,EAAE,QAAQ,WAAWA,EAAE,MAAM,EAC9D,CACA,GAAM7I,EAAI,GACR,IAAIc,EAAI,EAAG,EAAI,EACf,MAAMkC,EAAoB,IAAI,IAAOsC,EAAKuD,IAAO7F,EAAE,IAAI6F,CAAC,EAAG,IAAM,CAC/D7F,EAAE,OAAO6F,CAAC,CACd,GACE,IAAIH,EACJ,SAASC,EAAEE,EAAG,EAAG,CACf,MAAMC,EAAIJ,EAAGK,EAAI,CACf,GAAI,OAAO,EAAEjI,CAAC,EACd,QAAS+H,EACT,OAAQ,EACR,UAAW/D,GAAG,EACd,SAAUgE,GAAG,GACb,MAAOA,EAAIA,EAAE,MAAQ,EAAI,CAC/B,EACI9I,EAAE,KAAK+I,CAAC,CACT,CACD,IAAIH,EAAI,GACR,SAAS,GAAI,CACX,GAAIA,EACF,OACFA,EAAI,GACJ,IAAIC,EAAI,EACR,GAAI,CACF,KAAO,EAAI7I,EAAE,QAAU,CACrB,GAAI,EAAE6I,EAAIjK,EACR,MAAM,IAAI,MAAM,wCAAwC,EAC1D,MAAM,EAAIoB,EAAE,CAAC,EAAG8I,EAAIJ,EACpBA,EAAI,EAAG,GAAK,EAAE,CAAC,EACf,MAAMK,EAAI,MAAM,KAAK/F,CAAC,EACtB,UAAWgG,KAAKD,EACd,GAAI,CACFC,EAAE,GAAG,EAAE,OAAO,CACf,OAAQC,EAAG,CACVwC,GAAG,IAAM,CACP,MAAMxC,CACpB,CAAa,CACF,CACHP,EAAII,EAAG,GACR,CACP,QAAc,CACRF,EAAI,GAAI,GAAK5I,EAAE,SAAWA,EAAE,OAAS,EAAG,EAAI,EAC7C,CACF,CACD,MAAO,CACL,UAAWsF,EACX,KAAKuD,EAAG,CACN,MAAM,EAAIvD,EAAE,IAAIwD,IAAM,CACpB,IAAKD,EAAE,GAAGC,CAAC,CACnB,CAAO,EACD,OAAO,CACR,EACD,QAAQD,EAAG,CACTF,EAAEE,CAAC,EAAG,GACP,EACD,SAASA,KAAM,EAAG,CAChBF,EAAE,EAAGE,CAAC,EAAG,EAAC,CACX,EACD,OAAQ,CACN7F,EAAE,MAAK,CACR,CACL,CACA,CACA,SAASqJ,GAAG1N,EAAI,GAAI,CAClB,KAAM,CAAE,YAAaC,EAAI,EAAI,EAAG,iBAAkB,EAAI,GAAK,EAAGD,EAC9D,IAAI,EAAI,EAAI,EACZ,MAAMqB,EAAI,IAAM,IAAM,EAAI,GAAK8E,GAAC,EAAK,EAAGhE,EAAKyI,GAAM,CACjD,EAAIzE,GAAC,EAAKyE,EAAGb,EAAC,CAClB,EACE,IAAI,EAAI1I,IAAM,EAAI,EAClB,MAAMgD,EAAI,IAAM,EAAI,EAAGsC,EAAI,IAAM,CAC/B,GACD,EAAEoD,EAAI,IAAM,CACX,EAAI,GAAK,IAAKW,EAAC,CACnB,EAAKV,EAAI,IAAM,CAAC3F,EAAC,GAAM,CAAChD,EAAC,EAAI4I,EAAI,SAAY,CACzCD,EAAG,GAAI,MAAM+C,IACjB,EACE,IAAI,EAAI,EAAG7C,EAAI,GACf,MAAM,EAAoB,IAAI,IAAOC,EAAoB,IAAI,IAC7D,IAAIC,EAAI,EAAGC,EAAI,CAAA,EAAIC,EAAI,CAAA,EACvB,MAAMC,EAAI,IAAM,CACdH,IAAM,IAAMC,EAAE,QAASO,GAAMA,EAAG,CAAA,EAAGP,EAAI,GAAIH,EAAE,SAAW,IAAMI,EAAE,QAASM,GAAMA,EAAC,CAAE,EAAGN,EAAI,CAAE,GAC/F,EAAK,EAAKM,GAAM,CACZ,GAAIA,EAAE,OAAQ,CACZ,GAAIA,EAAE,OAAO,QACX,OAAOA,EAAE,aAAa,oBAAoB,EAAGA,EAC/CA,EAAE,aAAe,IAAM,CACrBA,EAAE,aAAa,kBAAkB,EAAGV,EAAIA,EAAE,OAAQa,GAAMA,EAAE,KAAOH,EAAE,EAAE,EAAGL,EAAC,CACjF,EAASK,EAAE,OAAO,iBAAiB,QAASA,EAAE,aAAc,CACpD,KAAM,EACd,CAAO,CACF,CACD,GAAIV,EAAE,OAAQa,GAAMH,EAAE,aAAa,SAASG,EAAE,EAAE,CAAC,EAAE,QAASA,GAAM,CAChEA,EAAE,aAAa,wBAAwB,CACxC,CAAA,EAAGb,EAAIA,EAAE,OAAQa,GAAM,CAACH,EAAE,aAAa,SAASG,EAAE,EAAE,CAAC,EAAGH,EAAE,KAAM,CAC/D,MAAMG,EAAIb,EAAE,UAAWyD,GAAMA,EAAE,KAAO/C,EAAE,EAAE,EAC1C,GAAIG,IAAM,GAAI,CACZ,MAAM4C,EAAIzD,EAAEa,CAAC,EAAG6C,EAAIhD,EAAE,KAAK+C,EAAG/C,CAAC,EAC/B,OAAO+C,EAAE,QAAUC,EAAE,QAASD,CAC/B,KACC,QAAOzD,EAAE,KAAKU,CAAC,EAAGA,CACrB,KACC,QAAOV,EAAE,KAAKU,CAAC,EAAGA,CACrB,EAAEJ,EAAI,IAAM,CACX,GAAIN,EAAE,SAAW,EACf,OACF,IAAIU,EAAI,GAAIG,EACZ,QAAS4C,EAAI,EAAGC,EAAI1D,EAAE,OAAQyD,EAAIC,EAAGD,IAAK,CACxC,MAAME,EAAK3D,EAAEyD,CAAC,GACb,CAAC5C,GAAK8C,EAAG,SAAW9C,EAAE,YAAcH,EAAI+C,EAAG5C,EAAI8C,EACjD,CACD,OAAO3D,EAAE,OAAOU,EAAG,CAAC,EAAGG,CAC3B,EACE,IAAIN,EAAI,GACR,MAAMC,EAAI,IAAM,CACdD,GAAKpG,EAAC,IAAOoG,EAAI,GAAIqC,GAAG,IAAM,CAC5B,IAAKrC,EAAI,GAAIP,EAAE,OAAS,GAAKC,EAAE,KAAO,GAAKC,EAAInK,GAAK,CAACoE,EAAC,GAAM,CAC1D,MAAMuG,EAAIJ,EAAG,EAAEO,EAAIvG,GAAGoG,EAAE,QAAQ,GAAKzE,GAAC,GAAMyE,EAAE,SAAU+C,EAAI/C,EAAE,UAAYhK,GAAG,UAC7E,GAAI,CAACS,EAAG,GAAI,CAAC0J,GAAK,CAAC4C,EAAG,CACpB,EAAE/C,CAAC,EAAGF,IACN,KACD,CACD,GAAIE,EAAE,QAAQ,QAAS,CACrBA,EAAE,aAAa,oBAAoB,EAAGL,EAAC,EACvC,QACD,CACDH,IACA,MAAMwD,EAAIzD,EAAE,OAAQ,EAAC,KAAI,EAAG,MAC5BA,EAAE,OAAOyD,CAAC,EAAGhG,GACXD,GACE,QAAQ,QAAQiG,EAAE,GAAGhD,EAAE,OAAO,CAAC,EAE/B,CACD,EACDA,EAAE,MACZ,EAAU,KAAMiD,GAAO,CACbjD,EAAE,cAAciD,CAAE,CAC5B,CAAS,EAAE,MAAOA,GAAO,CACfjD,EAAE,MAAQ,GAAKA,EAAE,QAAS,EAAEA,CAAC,GAAKA,EAAE,aAAaiD,CAAE,CAC7D,CAAS,EAAE,QAAQ,SAAY,CACrB,EAAE,IAAID,CAAC,GAAKzD,EAAE,IAAIyD,CAAC,EAAGhD,EAAE,QAAUA,EAAE,cAAgBA,EAAE,OAAO,oBAAoB,QAASA,EAAE,YAAY,EAAGR,IAAKG,IAAKG,GAC/H,CAAS,CACF,CACF,CAAA,EACF,EAAEC,EAAKC,IAAO,EAAE,IAAIA,CAAC,EAAGT,EAAE,IAAIS,CAAC,EAAGF,EAAG,EAAE,IAAM,CAC5C,EAAE,OAAOE,CAAC,EAAGT,EAAE,OAAOS,CAAC,CAC3B,GACE,MAAO,CAEL,OAAOA,EAAG,CACR,MAAMG,EAAIH,EAAEA,EAAE,OAAS,CAAC,GAAK,GAC7B,IAAI+C,EAAI,CAAA,GACP,aAAc5C,GAAK,aAAcA,GAAK,UAAWA,GAAK,WAAYA,GAAK,gBAAiBA,GAAK,SAAUA,KAAO4C,EAAI/C,EAAE,IAAG,GACxH,MAAMgD,EAAIrG,KAAMsG,EAAK,EAAE,CACrB,GAAI,OAAO,EAAE,CAAC,EACd,QAASjD,EACT,UAAWzE,GAAG,EACd,OAAQyH,EAAE,QACV,cAAeA,EAAE,QACjB,aAAcA,EAAE,OAChB,SAAUD,EAAE,UAAY/M,GAAG,OAC3B,SAAU+M,EAAE,UAAYjN,GACxB,MAAOiN,EAAE,OAAS,EAClB,OAAQA,EAAE,MAClB,CAAO,EACD,OAAOjD,EAAG,EAAEmD,CACb,EACD,OAAOjD,EAAG,CACRV,EAAIA,EAAE,OAAQa,GAAMA,EAAE,KAAOH,EAAE,EAAE,EAAGA,EAAE,QAAUA,EAAE,cAAgBA,EAAE,OAAO,oBAAoB,QAASA,EAAE,YAAY,EAAGL,GAC1H,EACD,OAAQ,CACN,UAAWK,KAAKV,EACdU,EAAE,QAAUA,EAAE,cAAgBA,EAAE,OAAO,oBAAoB,QAASA,EAAE,YAAY,EAAGA,EAAE,aAAa,IAAI,MAAM,SAAS,CAAC,EAC1HV,EAAE,OAAS,EAAGK,GACf,EACD,IAAKI,EACL,KAAKC,EAAG,CACN,MAAMG,EAAIJ,EAAE,IAAIgD,IAAM,CACpB,GAAI,CACF,OAAO/C,EAAE,GAAG+C,CAAC,CACvB,QAAkB,CACR5C,GACD,CACT,CAAO,EACD,OAAOA,CACR,EACD,MAAM,SAAU,CACd,GAAI,EAAEX,IAAM,GAAKF,EAAE,SAAW,GAC5B,OAAO,IAAI,QAASU,GAAM,CACxBN,EAAE,KAAKM,CAAC,CAClB,CAAS,CACJ,EACD,MAAM,QAAS,CACb,GAAIR,IAAM,EACR,OAAO,IAAI,QAASQ,GAAM,CACxBP,EAAE,KAAKO,CAAC,CAClB,CAAS,CACJ,EACD,MAAOjE,EACP,OAAQoD,EACR,IAAI,QAAS,CACX,OAAO1F,EAAC,CACT,EACD,WAAYlC,EACZ,cAAe8H,CACnB,CACA,CACA,MAAM6D,EAAG,CACP,KACA,YACA,iBACA,YAAY7N,EAAI,CAAE,YAAa,CAAC,EAAI,CAClC,KAAK,YAAcA,EAAE,aAAe,EAAG,KAAK,iBAAmBA,EAAE,kBAAoB,IAAK,KAAK,KAAOyN,GAAG,CACvG,YAAa,KAAK,YAClB,iBAAkB,KAAK,gBAC7B,CAAK,EACD,QAAS,EAAI,EAAG,EAAI,KAAK,YAAa,IACpC,KAAK,KAAK,IAAI,eAAerM,EAAG,CAC9B,OAAO,MAAMA,EAAC,CACtB,CAAO,CACJ,CACD,OAAOpB,EAAG,CACR,KAAK,KAAK,OAAOA,CAAC,CACnB,CACD,OAAQ,CACN,KAAK,KAAK,OACX,CACD,IAAI,QAAS,CACX,OAAO,KAAK,KAAK,MAClB,CACD,WAAWA,EAAG,CACZ,KAAK,KAAK,WAAWA,CAAC,CACvB,CAED,MAAM,UAAUA,EAAG,CACjB,GAAI,CACF,OAAO,KAAK,KAAK,MAAO,EAAE,MAAM,KAAK,KAAK,OAAM,EAAI,MAAM0H,GAAG,QAAQ,QAAQ1H,EAAG,CAAA,EAAG,KAAK,gBAAgB,CAC9G,QAAc,CACR,KAAK,KAAK,QACX,CACF,CAOD,KAAKA,EAAG,EAAG,CACT,OAAO,KAAK,KAAK,IAAIA,EAAG,CACtB,SAAU,GAAG,UAAYW,GAAG,OAC5B,SAAU,OAAO,GAAG,SAAW,SAAWuF,KAAM,GAAG,QAAUzF,EACnE,CAAK,CACF,CACH,CAkDA,MAAMqN,EAAG,CACP,KACA,QAAU,GACV,YAAY9N,EAAI,CAAE,YAAa,CAAC,EAAI,CAClC,KAAK,KAAO,IAAI6N,GAAG7N,CAAC,EAAG,KAAK,KAAK,WAAW,CAAC,CAC9C,CACD,OAAQ,CACN,KAAK,KAAK,OACX,CAED,OAAQ,CACN,KAAK,UAAY,KAAK,QAAU,GAAIuN,GAAIvN,GAAM,CAC5C,KAAK,KAAK,WAAWA,EAAIkG,GAAG,CAAA,CAC7B,CAAA,EACF,CACD,MAAM,KAAKlG,EAAG,EAAG,CACf,OAAO,KAAK,MAAO,EAAE,MAAM,KAAK,KAAK,KAAKA,EAAG,CAAE,SAAUW,GAAG,KAAM,QAAS,CAAC,CAAE,EAAE,MACjF,CACH,CACA,MAAMoN,GAAK,IAAID,GAAME,GAAKD,GAAG,KAAK,KAAKA,EAAE,EA0FzC,MAAME,EAAG,CACP,OACA,aAAc,CACZ,KAAK,OAAS,EACf,CACD,QAAQjO,EAAG,CACT,OAAO,KAAK,OAAOA,CAAC,GAAK,MAAQ,KAAK,OAAOA,CAAC,EAAE,QAAU,CAC3D,CACD,IAAIA,EAAG,EAAG,CACR,OAAO,KAAK,OAAOA,CAAC,IAAM,QAAU,KAAK,OAAOA,CAAC,EAAE,QAAQ,CAAC,IAAM,EACnE,CACD,gBAAgBA,EAAG,EAAG,EAAG,CACvB,OAAO,KAAK,OAAOA,CAAC,IAAM,KAAK,OAAOA,CAAC,EAAI,CAAE,GAAG,KAAK,OAAOA,CAAC,EAAE,QAC7D,EAAI,EAAE,KAAK,CAAC,EAAI,CACjB,EAAE,IACJ,CACD,YAAYA,EAAG,EAAG,EAAG,CACnB,OAAO,KAAK,OAAOA,CAAC,IAAM,KAAK,OAAOA,CAAC,EAAI,CAAE,GAAG,KAAK,OAAOA,CAAC,EAAE,KAC7D,EAAI,EAAE,KAAK,CAAC,EAAI,CACjB,EAAE,IACJ,CACD,GAAGA,EAAG,EAAG,EAAG,CACV,OAAO,KAAK,YAAYA,EAAG,EAAG,CAAC,EAAG,IACnC,CACD,eAAeA,EAAG,EAAG,CACnB,OAAO,KAAK,OAAOA,CAAC,IAAM,KAAK,OAAOA,CAAC,EAAI,KAAK,OAAOA,CAAC,EAAE,OAAQ,GAAM,IAAM,CAAC,GAAI,IACpF,CACD,IAAIA,EAAG,EAAG,CACR,OAAO,KAAK,eAAeA,EAAG,CAAC,EAAG,IACnC,CACD,mBAAmBA,EAAG,CACpB,OAAOA,EAAI,KAAK,OAAOA,CAAC,EAAI,CAAE,EAAG,KAAK,OAAS,CAAE,EAAE,IACpD,CAED,KAAKA,KAAM,EAAG,CACZ,OAAO,KAAK,OAAOA,CAAC,GAAK,KAAK,OAAOA,CAAC,EAAE,MAAM,CAAC,EAAE,QAASoB,GAAM,CAC9DA,EAAE,GAAG,CAAC,CACP,CAAA,EAAG,IACL,CACD,KAAKpB,EAAG,EAAG,EAAG,CACZ,MAAMoB,EAAI,IAAIc,IAAM,CAClB,EAAI,EAAE,MAAM,EAAGA,CAAC,EAAI,EAAE,GAAGA,CAAC,EAAG,KAAK,IAAIlC,EAAGoB,CAAC,CAChD,EACI,OAAO,KAAK,GAAGpB,EAAGoB,CAAC,EAAG,IACvB,CACH,CACA,IAAI8M,GAAK,SAASnO,EAAGC,EAAG,CACtB,OAAOkO,GAAK,OAAO,gBAAkB,CAAE,UAAW,CAAE,CAAA,YAAc,OAAS,SAAS,EAAG,EAAG,CACxF,EAAE,UAAY,CAClB,GAAO,SAAS,EAAG,EAAG,CAClB,QAAS9M,KAAK,EACZ,OAAO,UAAU,eAAe,KAAK,EAAGA,CAAC,IAAM,EAAEA,CAAC,EAAI,EAAEA,CAAC,EAC/D,EAAK8M,GAAGnO,EAAGC,CAAC,CACZ,EACA,SAASmO,GAAGpO,EAAGC,EAAG,CAChB,GAAI,OAAOA,GAAK,YAAcA,IAAM,KAClC,MAAM,IAAI,UAAU,uBAAyB,OAAOA,CAAC,EAAI,+BAA+B,EAC1FkO,GAAGnO,EAAGC,CAAC,EACP,SAAS,GAAI,CACX,KAAK,YAAcD,CACpB,CACDA,EAAE,UAAYC,IAAM,KAAO,OAAO,OAAOA,CAAC,GAAK,EAAE,UAAYA,EAAE,UAAW,IAAI,EAChF,CACA,SAASoO,GAAGrO,EAAGC,EAAG,EAAG,EAAG,CACtB,SAASoB,EAAEc,EAAG,CACZ,OAAOA,aAAa,EAAIA,EAAI,IAAI,EAAE,SAAS,EAAG,CAC5C,EAAEA,CAAC,CACT,CAAK,CACF,CACD,OAAO,IAAK,IAAM,EAAI,UAAU,SAASA,EAAG,EAAG,CAC7C,SAASkC,EAAE2F,EAAG,CACZ,GAAI,CACFD,EAAE,EAAE,KAAKC,CAAC,CAAC,CACZ,OAAQC,EAAG,CACV,EAAEA,CAAC,CACJ,CACF,CACD,SAAStD,EAAEqD,EAAG,CACZ,GAAI,CACFD,EAAE,EAAE,MAAMC,CAAC,CAAC,CACb,OAAQC,EAAG,CACV,EAAEA,CAAC,CACJ,CACF,CACD,SAASF,EAAEC,EAAG,CACZA,EAAE,KAAO7H,EAAE6H,EAAE,KAAK,EAAI3I,EAAE2I,EAAE,KAAK,EAAE,KAAK3F,EAAGsC,CAAC,CAC3C,CACDoD,GAAG,EAAI,EAAE,MAAM/J,EAAGC,GAAK,CAAE,CAAA,GAAG,KAAI,CAAE,CACtC,CAAG,CACH,CACA,SAASqO,GAAGtO,EAAGC,EAAG,CAChB,IAAI,EAAI,CAAE,MAAO,EAAG,KAAM,UAAW,CACnC,GAAIkC,EAAE,CAAC,EAAI,EACT,MAAMA,EAAE,CAAC,EACX,OAAOA,EAAE,CAAC,CACd,EAAK,KAAM,CAAA,EAAI,IAAK,CAAE,CAAA,EAAI,EAAGd,EAAGc,EAAG,EAAI,OAAO,QAAQ,OAAO,UAAY,WAAa,SAAW,QAAQ,SAAS,EAChH,OAAO,EAAE,KAAOkC,EAAE,CAAC,EAAG,EAAE,MAAQA,EAAE,CAAC,EAAG,EAAE,OAASA,EAAE,CAAC,EAAG,OAAO,QAAU,aAAe,EAAE,OAAO,QAAQ,EAAI,UAAW,CACrH,OAAO,IACR,GAAG,EACJ,SAASA,EAAE0F,EAAG,CACZ,OAAO,SAASC,EAAG,CACjB,OAAOrD,EAAE,CAACoD,EAAGC,CAAC,CAAC,CACrB,CACG,CACD,SAASrD,EAAEoD,EAAG,CACZ,GAAI,EACF,MAAM,IAAI,UAAU,iCAAiC,EACvD,KAAO,IAAM,EAAI,EAAGA,EAAE,CAAC,IAAM,EAAI,IAAK,GACpC,GAAI,CACF,GAAI,EAAI,EAAG1I,IAAMc,EAAI4H,EAAE,CAAC,EAAI,EAAI1I,EAAE,OAAS0I,EAAE,CAAC,EAAI1I,EAAE,SAAWc,EAAId,EAAE,SAAWc,EAAE,KAAKd,CAAC,EAAG,GAAKA,EAAE,OAAS,EAAEc,EAAIA,EAAE,KAAKd,EAAG0I,EAAE,CAAC,CAAC,GAAG,KAChI,OAAO5H,EACT,OAAQd,EAAI,EAAGc,IAAM4H,EAAI,CAACA,EAAE,CAAC,EAAI,EAAG5H,EAAE,KAAK,GAAI4H,EAAE,CAAC,EAAC,CACjD,IAAK,GACL,IAAK,GACH5H,EAAI4H,EACJ,MACF,IAAK,GACH,OAAO,EAAE,QAAS,CAAE,MAAOA,EAAE,CAAC,EAAG,KAAM,IACzC,IAAK,GACH,EAAE,QAAS1I,EAAI0I,EAAE,CAAC,EAAGA,EAAI,CAAC,CAAC,EAC3B,SACF,IAAK,GACHA,EAAI,EAAE,IAAI,IAAK,EAAE,EAAE,KAAK,MACxB,SACF,QACE,GAAI5H,EAAI,EAAE,KAAM,EAAEA,EAAIA,EAAE,OAAS,GAAKA,EAAEA,EAAE,OAAS,CAAC,KAAO4H,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,IAAM,GAAI,CACpF,EAAI,EACJ,QACD,CACD,GAAIA,EAAE,CAAC,IAAM,IAAM,CAAC5H,GAAK4H,EAAE,CAAC,EAAI5H,EAAE,CAAC,GAAK4H,EAAE,CAAC,EAAI5H,EAAE,CAAC,GAAI,CACpD,EAAE,MAAQ4H,EAAE,CAAC,EACb,KACD,CACD,GAAIA,EAAE,CAAC,IAAM,GAAK,EAAE,MAAQ5H,EAAE,CAAC,EAAG,CAChC,EAAE,MAAQA,EAAE,CAAC,EAAGA,EAAI4H,EACpB,KACD,CACD,GAAI5H,GAAK,EAAE,MAAQA,EAAE,CAAC,EAAG,CACvB,EAAE,MAAQA,EAAE,CAAC,EAAG,EAAE,IAAI,KAAK4H,CAAC,EAC5B,KACD,CACD5H,EAAE,CAAC,GAAK,EAAE,IAAI,IAAG,EAAI,EAAE,KAAK,MAC5B,QACH,CACD4H,EAAI9J,EAAE,KAAKD,EAAG,CAAC,CAChB,OAAQgK,EAAG,CACVD,EAAI,CAAC,EAAGC,CAAC,EAAG3I,EAAI,CACxB,QAAgB,CACR,EAAIc,EAAI,CACT,CACH,GAAI4H,EAAE,CAAC,EAAI,EACT,MAAMA,EAAE,CAAC,EACX,MAAO,CAAE,MAAOA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,OAAQ,KAAM,EAAE,CAC/C,CACH,CACA,SAASwE,GAAGvO,EAAG,CACb,IAAIC,EAAI,OAAO,QAAU,YAAc,OAAO,SAAU,EAAIA,GAAKD,EAAEC,CAAC,EAAG,EAAI,EAC3E,GAAI,EACF,OAAO,EAAE,KAAKD,CAAC,EACjB,GAAIA,GAAK,OAAOA,EAAE,QAAU,SAC1B,MAAO,CACL,KAAM,UAAW,CACf,OAAOA,GAAK,GAAKA,EAAE,SAAWA,EAAI,QAAS,CAAE,MAAOA,GAAKA,EAAE,GAAG,EAAG,KAAM,CAACA,EACzE,CACP,EACE,MAAM,IAAI,UAAUC,EAAI,0BAA4B,iCAAiC,CACvF,CACA,SAASuO,GAAGxO,EAAGC,EAAG,CAChB,IAAI,EAAI,OAAO,QAAU,YAAcD,EAAE,OAAO,QAAQ,EACxD,GAAI,CAAC,EACH,OAAOA,EACT,IAAI,EAAI,EAAE,KAAKA,CAAC,EAAGqB,EAAGc,EAAI,CAAE,EAAE,EAC9B,GAAI,CACF,MAAQlC,IAAM,QAAUA,KAAM,IAAM,EAAEoB,EAAI,EAAE,KAAM,GAAE,MAClDc,EAAE,KAAKd,EAAE,KAAK,CACjB,OAAQgD,EAAG,CACV,EAAI,CAAE,MAAOA,EACjB,QAAY,CACR,GAAI,CACFhD,GAAK,CAACA,EAAE,OAAS,EAAI,EAAE,SAAW,EAAE,KAAK,CAAC,CAChD,QAAc,CACR,GAAI,EACF,MAAM,EAAE,KACX,CACF,CACD,OAAOc,CACT,CACA,SAASsM,GAAGzO,EAAGC,EAAG,EAAG,CACnB,GAAI,GAAK,UAAU,SAAW,EAC5B,QAAS,EAAI,EAAGoB,EAAIpB,EAAE,OAAQkC,EAAG,EAAId,EAAG,KACrCc,GAAK,EAAE,KAAKlC,MAAQkC,IAAMA,EAAI,MAAM,UAAU,MAAM,KAAKlC,EAAG,EAAG,CAAC,GAAIkC,EAAE,CAAC,EAAIlC,EAAE,CAAC,GACnF,OAAOD,EAAE,OAAOmC,GAAK,MAAM,UAAU,MAAM,KAAKlC,CAAC,CAAC,CACpD,CACA,SAASyO,GAAG1O,EAAG,CACb,OAAO,gBAAgB0O,IAAM,KAAK,EAAI1O,EAAG,MAAQ,IAAI0O,GAAG1O,CAAC,CAC3D,CACA,SAAS2O,GAAG3O,EAAGC,EAAG,EAAG,CACnB,GAAI,CAAC,OAAO,cACV,MAAM,IAAI,UAAU,sCAAsC,EAC5D,IAAI,EAAI,EAAE,MAAMD,EAAGC,GAAK,CAAA,CAAE,EAAGoB,EAAGc,EAAI,GACpC,OAAOd,EAAI,OAAO,QAAQ,OAAO,eAAiB,WAAa,cAAgB,QAAQ,SAAS,EAAGgD,EAAE,MAAM,EAAGA,EAAE,OAAO,EAAGA,EAAE,SAAU,CAAC,EAAGhD,EAAE,OAAO,aAAa,EAAI,UAAW,CAC7K,OAAO,IACR,EAAEA,EACH,SAAS,EAAE6I,EAAG,CACZ,OAAO,SAAS,EAAG,CACjB,OAAO,QAAQ,QAAQ,CAAC,EAAE,KAAKA,EAAGD,CAAC,CACzC,CACG,CACD,SAAS5F,EAAE6F,EAAG,EAAG,CACf,EAAEA,CAAC,IAAM7I,EAAE6I,CAAC,EAAI,SAASC,EAAG,CAC1B,OAAO,IAAI,QAAQ,SAASC,EAAGC,EAAG,CAChClI,EAAE,KAAK,CAAC+H,EAAGC,EAAGC,EAAGC,CAAC,CAAC,EAAI,GAAK1D,EAAEuD,EAAGC,CAAC,CAC1C,CAAO,CACP,EAAO,IAAM9I,EAAE6I,CAAC,EAAI,EAAE7I,EAAE6I,CAAC,CAAC,GACvB,CACD,SAASvD,EAAEuD,EAAG,EAAG,CACf,GAAI,CACFH,EAAE,EAAEG,CAAC,EAAE,CAAC,CAAC,CACV,OAAQC,EAAG,CACV,EAAEhI,EAAE,CAAC,EAAE,CAAC,EAAGgI,CAAC,CACb,CACF,CACD,SAASJ,EAAEG,EAAG,CACZA,EAAE,iBAAiBwE,GAAK,QAAQ,QAAQxE,EAAE,MAAM,CAAC,EAAE,KAAKF,EAAGC,CAAC,EAAI,EAAE9H,EAAE,CAAC,EAAE,CAAC,EAAG+H,CAAC,CAC7E,CACD,SAASF,EAAEE,EAAG,CACZvD,EAAE,OAAQuD,CAAC,CACZ,CACD,SAASD,EAAEC,EAAG,CACZvD,EAAE,QAASuD,CAAC,CACb,CACD,SAAS,EAAEA,EAAG,EAAG,CACfA,EAAE,CAAC,EAAG/H,EAAE,MAAK,EAAIA,EAAE,QAAUwE,EAAExE,EAAE,CAAC,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAE,CAAC,CAAC,CAChD,CACH,CACA,SAASyM,GAAG5O,EAAG,CACb,GAAI,CAAC,OAAO,cACV,MAAM,IAAI,UAAU,sCAAsC,EAC5D,IAAIC,EAAID,EAAE,OAAO,aAAa,EAAG,EACjC,OAAOC,EAAIA,EAAE,KAAKD,CAAC,GAAKA,EAAI,OAAOuO,IAAM,WAAaA,GAAGvO,CAAC,EAAIA,EAAE,OAAO,QAAQ,IAAK,EAAI,CAAA,EAAI,EAAE,MAAM,EAAG,EAAE,OAAO,EAAG,EAAE,QAAQ,EAAG,EAAE,OAAO,aAAa,EAAI,UAAW,CACnK,OAAO,IACR,EAAE,GACH,SAAS,EAAEmC,EAAG,CACZ,EAAEA,CAAC,EAAInC,EAAEmC,CAAC,GAAK,SAAS,EAAG,CACzB,OAAO,IAAI,QAAQ,SAASkC,EAAGsC,EAAG,CAChC,EAAI3G,EAAEmC,CAAC,EAAE,CAAC,EAAGd,EAAEgD,EAAGsC,EAAG,EAAE,KAAM,EAAE,KAAK,CAC5C,CAAO,CACP,CACG,CACD,SAAStF,EAAEc,EAAG,EAAGkC,EAAGsC,EAAG,CACrB,QAAQ,QAAQA,CAAC,EAAE,KAAK,SAASoD,EAAG,CAClC5H,EAAE,CAAE,MAAO4H,EAAG,KAAM1F,CAAG,CAAA,CACxB,EAAE,CAAC,CACL,CACH,CACA,SAASwK,GAAE7O,EAAG,CACZ,OAAO,OAAOA,GAAK,UACrB,CACA,SAAS8O,GAAG9O,EAAG,CACb,IAAIC,EAAI,SAAS,EAAG,CAClB,MAAM,KAAK,CAAC,EAAG,EAAE,MAAQ,IAAI,MAAO,EAAC,KACzC,EAAK,EAAID,EAAEC,CAAC,EACV,OAAO,EAAE,UAAY,OAAO,OAAO,MAAM,SAAS,EAAG,EAAE,UAAU,YAAc,EAAG,CACpF,CACA,IAAI8O,GAAKD,GAAG,SAAS9O,EAAG,CACtB,OAAO,SAASgP,EAAG,CACjBhP,EAAE,IAAI,EAAG,KAAK,QAAUgP,EAAIA,EAAE,OAAS;AAAA,EACvCA,EAAE,IAAI,SAASxH,EAAGnG,EAAG,CACnB,OAAOA,EAAI,EAAI,KAAOmG,EAAE,SAAQ,CACtC,CAAK,EAAE,KAAK;AAAA,GACT,EAAI,GAAI,KAAK,KAAO,sBAAuB,KAAK,OAASwH,CAC5D,CACA,CAAC,EACD,SAASC,GAAGjP,EAAGC,EAAG,CAChB,GAAID,EAAG,CACL,IAAI,EAAIA,EAAE,QAAQC,CAAC,EACnB,GAAK,GAAKD,EAAE,OAAO,EAAG,CAAC,CACxB,CACH,CACA,IAAIkP,GAAK,UAAW,CAClB,SAASlP,EAAEC,EAAG,CACZ,KAAK,gBAAkBA,EAAG,KAAK,OAAS,GAAI,KAAK,WAAa,KAAM,KAAK,YAAc,IACxF,CACD,OAAOD,EAAE,UAAU,YAAc,UAAW,CAC1C,IAAIC,EAAG,EAAG,EAAGoB,EAAGc,EAChB,GAAI,CAAC,KAAK,OAAQ,CAChB,KAAK,OAAS,GACd,IAAI,EAAI,KAAK,WACb,GAAI,EACF,GAAI,KAAK,WAAa,KAAM,MAAM,QAAQ,CAAC,EACzC,GAAI,CACF,QAASkC,EAAIkK,GAAG,CAAC,EAAG5H,EAAItC,EAAE,KAAI,EAAI,CAACsC,EAAE,KAAMA,EAAItC,EAAE,KAAI,EAAI,CACvD,IAAI0F,EAAIpD,EAAE,MACVoD,EAAE,OAAO,IAAI,CACd,CACF,OAAQI,EAAG,CACVlK,EAAI,CAAE,MAAOkK,EACzB,QAAoB,CACR,GAAI,CACFxD,GAAK,CAACA,EAAE,OAAS,EAAItC,EAAE,SAAW,EAAE,KAAKA,CAAC,CACxD,QAAsB,CACR,GAAIpE,EACF,MAAMA,EAAE,KACX,CACF,MAED,EAAE,OAAO,IAAI,EACjB,IAAI+J,EAAI,KAAK,gBACb,GAAI6E,GAAE7E,CAAC,EACL,GAAI,CACFA,GACD,OAAQG,EAAG,CACVhI,EAAIgI,aAAa4E,GAAK5E,EAAE,OAAS,CAACA,CAAC,CACpC,CACH,IAAIF,EAAI,KAAK,YACb,GAAIA,EAAG,CACL,KAAK,YAAc,KACnB,GAAI,CACF,QAAS,EAAIsE,GAAGtE,CAAC,EAAGC,EAAI,EAAE,KAAI,EAAI,CAACA,EAAE,KAAMA,EAAI,EAAE,KAAI,EAAI,CACvD,IAAI,EAAIA,EAAE,MACV,GAAI,CACFiF,GAAG,CAAC,CACL,OAAQhF,EAAG,CACVhI,EAAIA,GAAK,CAAA,EAAIgI,aAAa4E,GAAK5M,EAAIsM,GAAGA,GAAG,GAAID,GAAGrM,CAAC,CAAC,EAAGqM,GAAGrE,EAAE,MAAM,CAAC,EAAIhI,EAAE,KAAKgI,CAAC,CAC9E,CACF,CACF,OAAQA,EAAG,CACV,EAAI,CAAE,MAAOA,EACvB,QAAkB,CACR,GAAI,CACFD,GAAK,CAACA,EAAE,OAAS7I,EAAI,EAAE,SAAWA,EAAE,KAAK,CAAC,CACtD,QAAoB,CACR,GAAI,EACF,MAAM,EAAE,KACX,CACF,CACF,CACD,GAAIc,EACF,MAAM,IAAI4M,GAAG5M,CAAC,CACjB,CACF,EAAEnC,EAAE,UAAU,IAAM,SAASC,EAAG,CAC/B,IAAI,EACJ,GAAIA,GAAKA,IAAM,KACb,GAAI,KAAK,OACPkP,GAAGlP,CAAC,MACD,CACH,GAAIA,aAAaD,EAAG,CAClB,GAAIC,EAAE,QAAUA,EAAE,WAAW,IAAI,EAC/B,OACFA,EAAE,WAAW,IAAI,CAClB,EACA,KAAK,aAAe,EAAI,KAAK,eAAiB,MAAQ,IAAM,OAAS,EAAI,CAAE,GAAE,KAAKA,CAAC,CACrF,CACJ,EAAED,EAAE,UAAU,WAAa,SAASC,EAAG,CACtC,IAAI,EAAI,KAAK,WACb,OAAO,IAAMA,GAAK,MAAM,QAAQ,CAAC,GAAK,EAAE,SAASA,CAAC,CACnD,EAAED,EAAE,UAAU,WAAa,SAASC,EAAG,CACtC,IAAI,EAAI,KAAK,WACb,KAAK,WAAa,MAAM,QAAQ,CAAC,GAAK,EAAE,KAAKA,CAAC,EAAG,GAAK,EAAI,CAAC,EAAGA,CAAC,EAAIA,CACpE,EAAED,EAAE,UAAU,cAAgB,SAASC,EAAG,CACzC,IAAI,EAAI,KAAK,WACb,IAAMA,EAAI,KAAK,WAAa,KAAO,MAAM,QAAQ,CAAC,GAAKgP,GAAG,EAAGhP,CAAC,CAC/D,EAAED,EAAE,UAAU,OAAS,SAASC,EAAG,CAClC,IAAI,EAAI,KAAK,YACb,GAAKgP,GAAG,EAAGhP,CAAC,EAAGA,aAAaD,GAAKC,EAAE,cAAc,IAAI,CACzD,EAAKD,EAAE,MAAQ,UAAW,CACtB,IAAIC,EAAI,IAAID,EACZ,OAAOC,EAAE,OAAS,GAAIA,CACvB,EAAA,EAAID,CACP,IAAKoP,GAAKF,GAAG,MACb,SAASG,GAAGrP,EAAG,CACb,OAAOA,aAAakP,IAAMlP,GAAK,WAAYA,GAAK6O,GAAE7O,EAAE,MAAM,GAAK6O,GAAE7O,EAAE,GAAG,GAAK6O,GAAE7O,EAAE,WAAW,CAC5F,CACA,SAASmP,GAAGnP,EAAG,CACb6O,GAAE7O,CAAC,EAAIA,EAAG,EAAGA,EAAE,YAAW,CAC5B,CACA,IAAIsP,GAAK,CACP,iBAAkB,KAClB,sBAAuB,KACvB,QAAS,OACT,sCAAuC,GACvC,yBAA0B,EAC5B,EAAGC,GAAK,CACN,WAAY,SAASvP,EAAGC,EAAG,CACzB,QAAS,EAAI,CAAA,EAAI,EAAI,EAAG,EAAI,UAAU,OAAQ,IAC5C,EAAE,EAAI,CAAC,EAAI,UAAU,CAAC,EAExB,OAAkE,WAAW,MAAM,OAAQwO,GAAG,CAACzO,EAAGC,CAAC,EAAGuO,GAAG,CAAC,CAAC,CAAC,CAC7G,EACD,aAAc,SAASxO,EAAG,CAExB,OAA2B,aAAcA,CAAC,CAC3C,EACD,SAAU,MACZ,EACA,SAASwP,GAAGxP,EAAG,CACbuP,GAAG,WAAW,UAAW,CACvB,MAAMvP,CACV,CAAG,CACH,CACA,SAASyP,IAAK,CACd,CACA,SAASC,GAAG1P,EAAG,CACbA,GACF,CACA,IAAI2P,GAAK,SAAS3P,EAAG,CACnBoO,GAAGnO,EAAGD,CAAC,EACP,SAASC,EAAE,EAAG,CACZ,IAAI,EAAID,EAAE,KAAK,IAAI,GAAK,KACxB,OAAO,EAAE,UAAY,GAAI,GAAK,EAAE,YAAc,EAAGqP,GAAG,CAAC,GAAK,EAAE,IAAI,CAAC,GAAK,EAAE,YAAcO,GAAI,CAC3F,CACD,OAAO3P,EAAE,OAAS,SAAS,EAAG,EAAGoB,EAAG,CAClC,OAAO,IAAIwO,GAAG,EAAG,EAAGxO,CAAC,CACtB,EAAEpB,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,KAAK,WAAa,KAAK,MAAM,CAAC,CAC/B,EAAEA,EAAE,UAAU,MAAQ,SAAS,EAAG,CACjC,KAAK,YAAc,KAAK,UAAY,GAAI,KAAK,OAAO,CAAC,EACzD,EAAKA,EAAE,UAAU,SAAW,UAAW,CACnC,KAAK,YAAc,KAAK,UAAY,GAAI,KAAK,UAAS,EAC1D,EAAKA,EAAE,UAAU,YAAc,UAAW,CACtC,KAAK,SAAW,KAAK,UAAY,GAAID,EAAE,UAAU,YAAY,KAAK,IAAI,EAAG,KAAK,YAAc,KAC7F,EAAEC,EAAE,UAAU,MAAQ,SAAS,EAAG,CACjC,KAAK,YAAY,KAAK,CAAC,CACxB,EAAEA,EAAE,UAAU,OAAS,SAAS,EAAG,CAClC,GAAI,CACF,KAAK,YAAY,MAAM,CAAC,CAC9B,QAAc,CACR,KAAK,YAAW,CACjB,CACL,EAAKA,EAAE,UAAU,UAAY,UAAW,CACpC,GAAI,CACF,KAAK,YAAY,UACvB,QAAc,CACR,KAAK,YAAW,CACjB,CACF,EAAEA,CACL,EAAEiP,EAAE,EAAGY,GAAK,SAAS,UAAU,KAC/B,SAASC,GAAG/P,EAAGC,EAAG,CAChB,OAAO6P,GAAG,KAAK9P,EAAGC,CAAC,CACrB,CACA,IAAI+P,GAAK,UAAW,CAClB,SAAShQ,EAAEC,EAAG,CACZ,KAAK,gBAAkBA,CACxB,CACD,OAAOD,EAAE,UAAU,KAAO,SAASC,EAAG,CACpC,IAAI,EAAI,KAAK,gBACb,GAAI,EAAE,KACJ,GAAI,CACF,EAAE,KAAKA,CAAC,CACT,OAAQ,EAAG,CACVgQ,GAAG,CAAC,CACL,CACJ,EAAEjQ,EAAE,UAAU,MAAQ,SAASC,EAAG,CACjC,IAAI,EAAI,KAAK,gBACb,GAAI,EAAE,MACJ,GAAI,CACF,EAAE,MAAMA,CAAC,CACV,OAAQ,EAAG,CACVgQ,GAAG,CAAC,CACL,MAEDA,GAAGhQ,CAAC,CACV,EAAKD,EAAE,UAAU,SAAW,UAAW,CACnC,IAAIC,EAAI,KAAK,gBACb,GAAIA,EAAE,SACJ,GAAI,CACFA,EAAE,SAAQ,CACX,OAAQ,EAAG,CACVgQ,GAAG,CAAC,CACL,CACJ,EAAEjQ,CACL,IAAK6P,GAAK,SAAS7P,EAAG,CACpBoO,GAAGnO,EAAGD,CAAC,EACP,SAASC,EAAE,EAAG,EAAGoB,EAAG,CAClB,IAAIc,EAAInC,EAAE,KAAK,IAAI,GAAK,KAAM,EAC9B,GAAI6O,GAAE,CAAC,GAAK,CAAC,EACX,EAAI,CACF,KAAM,GAAK,OACX,MAAO,GAAK,OACZ,SAAUxN,GAAK,MACvB,MACS,CACH,IAAIgD,EACJlC,GAAKmN,GAAG,0BAA4BjL,EAAI,OAAO,OAAO,CAAC,EAAGA,EAAE,YAAc,UAAW,CACnF,OAAOlC,EAAE,aACV,EAAE,EAAI,CACL,KAAM,EAAE,MAAQ4N,GAAG,EAAE,KAAM1L,CAAC,EAC5B,MAAO,EAAE,OAAS0L,GAAG,EAAE,MAAO1L,CAAC,EAC/B,SAAU,EAAE,UAAY0L,GAAG,EAAE,SAAU1L,CAAC,CAChD,GAAW,EAAI,CACV,CACD,OAAOlC,EAAE,YAAc,IAAI6N,GAAG,CAAC,EAAG7N,CACnC,CACD,OAAOlC,CACT,EAAE0P,EAAE,EACJ,SAASM,GAAGjQ,EAAG,CACbwP,GAAGxP,CAAC,CACN,CACA,SAASkQ,GAAGlQ,EAAG,CACb,MAAMA,CACR,CACA,IAAI4P,GAAK,CACP,OAAQ,GACR,KAAMH,GACN,MAAOS,GACP,SAAUT,EACZ,EAAGU,GAAK,UAAW,CACjB,OAAO,OAAO,QAAU,YAAc,OAAO,YAAc,cAC7D,IACA,SAASC,GAAGpQ,EAAG,CACb,OAAOA,CACT,CAMA,SAASqQ,GAAGrQ,EAAG,CACb,OAAOA,EAAE,SAAW,EAAIoQ,GAAKpQ,EAAE,SAAW,EAAIA,EAAE,CAAC,EAAI,SAASgP,EAAG,CAC/D,OAAOhP,EAAE,OAAO,SAASwH,EAAGnG,EAAG,CAC7B,OAAOA,EAAEmG,CAAC,CACX,EAAEwH,CAAC,CACR,CACA,CACA,IAAIsB,GAAK,UAAW,CAClB,SAAStQ,EAAEC,EAAG,CACZA,IAAM,KAAK,WAAaA,EACzB,CACD,OAAOD,EAAE,UAAU,KAAO,SAASC,EAAG,CACpC,IAAI,EAAI,IAAID,EACZ,OAAO,EAAE,OAAS,KAAM,EAAE,SAAWC,EAAG,CAC5C,EAAKD,EAAE,UAAU,UAAY,SAASC,EAAG,EAAG,EAAG,CAC3C,IAAIoB,EAAI,KAAMc,EAAIoO,GAAGtQ,CAAC,EAAIA,EAAI,IAAI4P,GAAG5P,EAAG,EAAG,CAAC,EAC5C,OAAOyP,GAAG,UAAW,CACnB,IAAI,EAAIrO,EAAGgD,EAAI,EAAE,SAAUsC,EAAI,EAAE,OACjCxE,EAAE,IAAIkC,EAAIA,EAAE,KAAKlC,EAAGwE,CAAC,EAAIA,EAAItF,EAAE,WAAWc,CAAC,EAAId,EAAE,cAAcc,CAAC,CAAC,CAClE,CAAA,EAAGA,CACL,EAAEnC,EAAE,UAAU,cAAgB,SAASC,EAAG,CACzC,GAAI,CACF,OAAO,KAAK,WAAWA,CAAC,CACzB,OAAQ,EAAG,CACVA,EAAE,MAAM,CAAC,CACV,CACF,EAAED,EAAE,UAAU,QAAU,SAASC,EAAG,EAAG,CACtC,IAAI,EAAI,KACR,OAAO,EAAIuQ,GAAG,CAAC,EAAG,IAAI,EAAE,SAASnP,EAAGc,EAAG,CACrC,IAAI,EAAI,IAAI0N,GAAG,CACb,KAAM,SAASxL,EAAG,CAChB,GAAI,CACFpE,EAAEoE,CAAC,CACJ,OAAQsC,EAAG,CACVxE,EAAEwE,CAAC,EAAG,EAAE,YAAW,CACpB,CACF,EACD,MAAOxE,EACP,SAAUd,CAClB,CAAO,EACD,EAAE,UAAU,CAAC,CACnB,CAAK,CACF,EAAErB,EAAE,UAAU,WAAa,SAASC,EAAG,CACtC,IAAI,EACJ,OAAQ,EAAI,KAAK,UAAY,MAAQ,IAAM,OAAS,OAAS,EAAE,UAAUA,CAAC,CAC3E,EAAED,EAAE,UAAUmQ,EAAE,EAAI,UAAW,CAC9B,OAAO,IACX,EAAKnQ,EAAE,UAAU,KAAO,UAAW,CAC/B,QAASC,EAAI,CAAA,EAAI,EAAI,EAAG,EAAI,UAAU,OAAQ,IAC5CA,EAAE,CAAC,EAAI,UAAU,CAAC,EACpB,OAAOoQ,GAAGpQ,CAAC,EAAE,IAAI,CAClB,EAAED,EAAE,UAAU,UAAY,SAASC,EAAG,CACrC,IAAI,EAAI,KACR,OAAOA,EAAIuQ,GAAGvQ,CAAC,EAAG,IAAIA,EAAE,SAAS,EAAGoB,EAAG,CACrC,IAAIc,EACJ,EAAE,UAAU,SAAS,EAAG,CACtB,OAAOA,EAAI,CACZ,EAAE,SAAS,EAAG,CACb,OAAOd,EAAE,CAAC,CAClB,EAAS,UAAW,CACZ,OAAO,EAAEc,CAAC,CAClB,CAAO,CACP,CAAK,CACL,EAAKnC,EAAE,OAAS,SAASC,EAAG,CACxB,OAAO,IAAID,EAAEC,CAAC,CACf,EAAED,CACL,IACA,SAASwQ,GAAGxQ,EAAG,CACb,IAAIC,EACJ,OAAQA,EAAID,GAAKsP,GAAG,WAAa,MAAQrP,IAAM,OAASA,EAAI,OAC9D,CACA,SAASwQ,GAAGzQ,EAAG,CACb,OAAOA,GAAK6O,GAAE7O,EAAE,IAAI,GAAK6O,GAAE7O,EAAE,KAAK,GAAK6O,GAAE7O,EAAE,QAAQ,CACrD,CACA,SAASuQ,GAAGvQ,EAAG,CACb,OAAOA,GAAKA,aAAa2P,IAAMc,GAAGzQ,CAAC,GAAKqP,GAAGrP,CAAC,CAC9C,CACA,SAAS0Q,GAAG1Q,EAAG,CACb,OAAO6O,GAAE7O,GAAG,IAAI,CAClB,CACA,SAAS2Q,GAAG3Q,EAAG,CACb,OAAO,SAASC,EAAG,CACjB,GAAIyQ,GAAGzQ,CAAC,EACN,OAAOA,EAAE,KAAK,SAAS,EAAG,CACxB,GAAI,CACF,OAAOD,EAAE,EAAG,IAAI,CACjB,OAAQ,EAAG,CACV,KAAK,MAAM,CAAC,CACb,CACT,CAAO,EACH,MAAM,IAAI,UAAU,wCAAwC,CAChE,CACA,CACA,SAAS4Q,GAAG5Q,EAAGC,EAAG,EAAG,EAAGoB,EAAG,CACzB,OAAO,IAAIwP,GAAG7Q,EAAGC,EAAG,EAAG,EAAGoB,CAAC,CAC7B,CACG,IAACwP,GAAK,SAAS7Q,EAAG,CACnBoO,GAAGnO,EAAGD,CAAC,EACP,SAASC,EAAE,EAAG,EAAGoB,EAAGc,EAAG,EAAGkC,EAAG,CAC3B,IAAIsC,EAAI3G,EAAE,KAAK,KAAM,CAAC,GAAK,KAC3B,OAAO2G,EAAE,WAAa,EAAGA,EAAE,kBAAoBtC,EAAGsC,EAAE,MAAQ,EAAI,SAASoD,EAAG,CAC1E,GAAI,CACF,EAAEA,CAAC,CACJ,OAAQC,EAAG,CACV,EAAE,MAAMA,CAAC,CACV,CACP,EAAQhK,EAAE,UAAU,MAAO2G,EAAE,OAASxE,EAAI,SAAS4H,EAAG,CAChD,GAAI,CACF5H,EAAE4H,CAAC,CACJ,OAAQC,EAAG,CACV,EAAE,MAAMA,CAAC,CACjB,QAAgB,CACR,KAAK,YAAW,CACjB,CACP,EAAQhK,EAAE,UAAU,OAAQ2G,EAAE,UAAYtF,EAAI,UAAW,CACnD,GAAI,CACFA,GACD,OAAQ0I,EAAG,CACV,EAAE,MAAMA,CAAC,CACjB,QAAgB,CACR,KAAK,YAAW,CACjB,CACF,EAAG/J,EAAE,UAAU,UAAW2G,CAC5B,CACD,OAAO1G,EAAE,UAAU,YAAc,UAAW,CAC1C,IAAI,EACJ,GAAI,CAAC,KAAK,mBAAqB,KAAK,kBAAiB,EAAI,CACvD,IAAI,EAAI,KAAK,OACbD,EAAE,UAAU,YAAY,KAAK,IAAI,EAAG,CAAC,KAAO,EAAI,KAAK,cAAgB,MAAQ,IAAM,QAAU,EAAE,KAAK,IAAI,EACzG,CACF,EAAEC,CACL,EAAE0P,EAAE,EAAGmB,GAAKhC,GAAG,SAAS9O,EAAG,CACzB,OAAO,UAAW,CAChBA,EAAE,IAAI,EAAG,KAAK,KAAO,0BAA2B,KAAK,QAAU,qBACnE,CACA,CAAC,EAAG+Q,GAAK,SAAS/Q,EAAG,CACnBoO,GAAGnO,EAAGD,CAAC,EACP,SAASC,GAAI,CACX,IAAI,EAAID,EAAE,KAAK,IAAI,GAAK,KACxB,OAAO,EAAE,OAAS,GAAI,EAAE,iBAAmB,KAAM,EAAE,UAAY,CAAE,EAAE,EAAE,UAAY,GAAI,EAAE,SAAW,GAAI,EAAE,YAAc,KAAM,CAC7H,CACD,OAAOC,EAAE,UAAU,KAAO,SAAS,EAAG,CACpC,IAAI,EAAI,IAAI+Q,GAAG,KAAM,IAAI,EACzB,OAAO,EAAE,SAAW,EAAG,CAC3B,EAAK/Q,EAAE,UAAU,eAAiB,UAAW,CACzC,GAAI,KAAK,OACP,MAAM,IAAI6Q,EACb,EAAE7Q,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,IAAI,EAAI,KACRyP,GAAG,UAAW,CACZ,IAAIrO,EAAGc,EACP,GAAI,EAAE,eAAc,EAAI,CAAC,EAAE,UAAW,CACpC,EAAE,mBAAqB,EAAE,iBAAmB,MAAM,KAAK,EAAE,SAAS,GAClE,GAAI,CACF,QAAS,EAAIoM,GAAG,EAAE,gBAAgB,EAAGlK,EAAI,EAAE,KAAM,EAAE,CAACA,EAAE,KAAMA,EAAI,EAAE,OAAQ,CACxE,IAAIsC,EAAItC,EAAE,MACVsC,EAAE,KAAK,CAAC,CACT,CACF,OAAQoD,EAAG,CACV1I,EAAI,CAAE,MAAO0I,EACvB,QAAkB,CACR,GAAI,CACF1F,GAAK,CAACA,EAAE,OAASlC,EAAI,EAAE,SAAWA,EAAE,KAAK,CAAC,CACtD,QAAoB,CACR,GAAId,EACF,MAAMA,EAAE,KACX,CACF,CACF,CACP,CAAK,CACF,EAAEpB,EAAE,UAAU,MAAQ,SAAS,EAAG,CACjC,IAAI,EAAI,KACRyP,GAAG,UAAW,CACZ,GAAI,EAAE,eAAc,EAAI,CAAC,EAAE,UAAW,CACpC,EAAE,SAAW,EAAE,UAAY,GAAI,EAAE,YAAc,EAC/C,QAASrO,EAAI,EAAE,UAAWA,EAAE,QAC1BA,EAAE,MAAK,EAAG,MAAM,CAAC,CACpB,CACP,CAAK,CACL,EAAKpB,EAAE,UAAU,SAAW,UAAW,CACnC,IAAI,EAAI,KACRyP,GAAG,UAAW,CACZ,GAAI,EAAE,eAAc,EAAI,CAAC,EAAE,UAAW,CACpC,EAAE,UAAY,GACd,QAAS,EAAI,EAAE,UAAW,EAAE,QAC1B,EAAE,QAAQ,UACb,CACP,CAAK,CACL,EAAKzP,EAAE,UAAU,YAAc,UAAW,CACtC,KAAK,UAAY,KAAK,OAAS,GAAI,KAAK,UAAY,KAAK,iBAAmB,IAC7E,EAAE,OAAO,eAAeA,EAAE,UAAW,WAAY,CAChD,IAAK,UAAW,CACd,IAAI,EACJ,QAAS,EAAI,KAAK,aAAe,MAAQ,IAAM,OAAS,OAAS,EAAE,QAAU,CAC9E,EACD,WAAY,GACZ,aAAc,EACf,CAAA,EAAGA,EAAE,UAAU,cAAgB,SAAS,EAAG,CAC1C,OAAO,KAAK,eAAgB,EAAED,EAAE,UAAU,cAAc,KAAK,KAAM,CAAC,CACrE,EAAEC,EAAE,UAAU,WAAa,SAAS,EAAG,CACtC,OAAO,KAAK,eAAgB,EAAE,KAAK,wBAAwB,CAAC,EAAG,KAAK,gBAAgB,CAAC,CACtF,EAAEA,EAAE,UAAU,gBAAkB,SAAS,EAAG,CAC3C,IAAI,EAAI,KAAMoB,EAAI,KAAMc,EAAId,EAAE,SAAU,EAAIA,EAAE,UAAWgD,EAAIhD,EAAE,UAC/D,OAAOc,GAAK,EAAIiN,IAAM,KAAK,iBAAmB,KAAM/K,EAAE,KAAK,CAAC,EAAG,IAAI6K,GAAG,UAAW,CAC/E,EAAE,iBAAmB,KAAMD,GAAG5K,EAAG,CAAC,CACnC,CAAA,EACF,EAAEpE,EAAE,UAAU,wBAA0B,SAAS,EAAG,CACnD,IAAI,EAAI,KAAMoB,EAAI,EAAE,SAAUc,EAAI,EAAE,YAAa,EAAI,EAAE,UACvDd,EAAI,EAAE,MAAMc,CAAC,EAAI,GAAK,EAAE,UAC5B,EAAKlC,EAAE,UAAU,aAAe,UAAW,CACvC,IAAI,EAAI,IAAIqQ,GACZ,OAAO,EAAE,OAAS,KAAM,CACzB,EAAErQ,EAAE,OAAS,SAAS,EAAG,EAAG,CAC3B,OAAO,IAAI+Q,GAAG,EAAG,CAAC,CACnB,EAAE/Q,CACL,EAAEqQ,EAAE,EAAGU,GAAK,SAAShR,EAAG,CACtBoO,GAAGnO,EAAGD,CAAC,EACP,SAASC,EAAE,EAAG,EAAG,CACf,IAAIoB,EAAIrB,EAAE,KAAK,IAAI,GAAK,KACxB,OAAOqB,EAAE,YAAc,EAAGA,EAAE,OAAS,EAAGA,CACzC,CACD,OAAOpB,EAAE,UAAU,KAAO,SAAS,EAAG,CACpC,IAAI,EAAGoB,GACNA,GAAK,EAAI,KAAK,eAAiB,MAAQ,IAAM,OAAS,OAAS,EAAE,QAAU,MAAQA,IAAM,QAAUA,EAAE,KAAK,EAAG,CAAC,CAChH,EAAEpB,EAAE,UAAU,MAAQ,SAAS,EAAG,CACjC,IAAI,EAAGoB,GACNA,GAAK,EAAI,KAAK,eAAiB,MAAQ,IAAM,OAAS,OAAS,EAAE,SAAW,MAAQA,IAAM,QAAUA,EAAE,KAAK,EAAG,CAAC,CACpH,EAAKpB,EAAE,UAAU,SAAW,UAAW,CACnC,IAAI,EAAG,GACN,GAAK,EAAI,KAAK,eAAiB,MAAQ,IAAM,OAAS,OAAS,EAAE,YAAc,MAAQ,IAAM,QAAU,EAAE,KAAK,CAAC,CACjH,EAAEA,EAAE,UAAU,WAAa,SAAS,EAAG,CACtC,IAAI,EAAGoB,EACP,OAAQA,GAAK,EAAI,KAAK,UAAY,MAAQ,IAAM,OAAS,OAAS,EAAE,UAAU,CAAC,KAAO,MAAQA,IAAM,OAASA,EAAI+N,EAClH,EAAEnP,CACL,EAAE8Q,EAAE,EAAGE,GAAK,SAASjR,EAAG,CACtBoO,GAAGnO,EAAGD,CAAC,EACP,SAASC,EAAE,EAAG,CACZ,IAAI,EAAID,EAAE,KAAK,IAAI,GAAK,KACxB,OAAO,EAAE,OAAS,EAAG,CACtB,CACD,OAAO,OAAO,eAAeC,EAAE,UAAW,QAAS,CACjD,IAAK,UAAW,CACd,OAAO,KAAK,UACb,EACD,WAAY,GACZ,aAAc,EACf,CAAA,EAAGA,EAAE,UAAU,WAAa,SAAS,EAAG,CACvC,IAAI,EAAID,EAAE,UAAU,WAAW,KAAK,KAAM,CAAC,EAC3C,MAAO,CAAC,EAAE,QAAU,EAAE,KAAK,KAAK,MAAM,EAAG,CAC7C,EAAKC,EAAE,UAAU,SAAW,UAAW,CACnC,IAAI,EAAI,KAAM,EAAI,EAAE,SAAUoB,EAAI,EAAE,YAAac,EAAI,EAAE,OACvD,GAAI,EACF,MAAMd,EACR,OAAO,KAAK,eAAgB,EAAEc,CAC/B,EAAElC,EAAE,UAAU,KAAO,SAAS,EAAG,CAChCD,EAAE,UAAU,KAAK,KAAK,KAAM,KAAK,OAAS,CAAC,CAC5C,EAAEC,CACL,EAAE8Q,EAAE,EAeAG,GAAK,SAASlR,EAAG,CACnB,OAAOA,GAAK,OAAOA,EAAE,QAAU,UAAY,OAAOA,GAAK,UACzD,EACA,SAASmR,GAAGnR,EAAG,CACb,OAAO6O,GAAE7O,GAAG,IAAI,CAClB,CACA,SAASoR,GAAGpR,EAAG,CACb,OAAO6O,GAAE7O,EAAEmQ,EAAE,CAAC,CAChB,CACA,SAASkB,GAAGrR,EAAG,CACb,OAAO,OAAO,eAAiB6O,GAAE7O,IAAI,OAAO,aAAa,CAAC,CAC5D,CACA,SAASsR,GAAGtR,EAAG,CACb,OAAO,IAAI,UAAU,iBAAmBA,IAAM,MAAQ,OAAOA,GAAK,SAAW,oBAAsB,IAAMA,EAAI,KAAO,0HAA0H,CAChP,CACA,SAASuR,IAAK,CACZ,OAAO,OAAO,QAAU,YAAc,CAAC,OAAO,SAAW,aAAe,OAAO,QACjF,CACA,IAAIC,GAAKD,GAAE,EACX,SAASE,GAAGzR,EAAG,CACb,OAAO6O,GAAE7O,IAAIwR,EAAE,CAAC,CAClB,CACA,SAASE,GAAG1R,EAAG,CACb,OAAO2O,GAAG,KAAM,UAAW,UAAW,CACpC,IAAIK,EAAGxH,EAAGnG,EAAG,EACb,OAAOiN,GAAG,KAAM,SAASqD,EAAG,CAC1B,OAAQA,EAAE,MAAK,CACb,IAAK,GACH3C,EAAIhP,EAAE,UAAS,EAAI2R,EAAE,MAAQ,EAC/B,IAAK,GACHA,EAAE,KAAK,KAAK,CAAC,EAAK,CAAA,EAAG,EAAE,CAAC,EAAGA,EAAE,MAAQ,EACvC,IAAK,GACH,MAAO,CAAC,EAAGjD,GAAGM,EAAE,KAAI,CAAE,CAAC,EACzB,IAAK,GACH,OAAOxH,EAAImK,EAAE,KAAM,EAAEtQ,EAAImG,EAAE,MAAO,EAAIA,EAAE,KAAM,EAAI,CAAC,EAAGkH,GAAG,MAAM,CAAC,EAAI,CAAC,EAAG,CAAC,EAC3E,IAAK,GACH,MAAO,CAAC,EAAGiD,EAAE,KAAM,CAAA,EACrB,IAAK,GACH,MAAO,CAAC,EAAGjD,GAAGrN,CAAC,CAAC,EAClB,IAAK,GACH,MAAO,CAAC,EAAGsQ,EAAE,KAAM,CAAA,EACrB,IAAK,GACH,OAAOA,EAAE,KAAI,EAAI,CAAC,EAAG,CAAC,EACxB,IAAK,GACH,MAAO,CAAC,EAAG,EAAE,EACf,IAAK,GACH,OAAO3C,EAAE,cAAe,CAAC,CAAC,EAC5B,IAAK,IACH,MAAO,CAAC,CAAC,CACZ,CACP,CAAK,CACL,CAAG,CACH,CACA,SAAS4C,GAAG5R,EAAG,CACb,OAAO6O,GAAE7O,GAAG,SAAS,CACvB,CACA,SAAS6R,GAAG7R,EAAG,CACb,GAAIA,aAAasQ,GACf,OAAOtQ,EACT,GAAIA,GAAK,KAAM,CACb,GAAIoR,GAAGpR,CAAC,EACN,OAAO8R,GAAG9R,CAAC,EACb,GAAIkR,GAAGlR,CAAC,EACN,OAAO+R,GAAG/R,CAAC,EACb,GAAImR,GAAGnR,CAAC,EACN,OAAOgS,GAAGhS,CAAC,EACb,GAAIqR,GAAGrR,CAAC,EACN,OAAOiS,GAAGjS,CAAC,EACb,GAAIyR,GAAGzR,CAAC,EACN,OAAOkS,GAAGlS,CAAC,EACb,GAAI4R,GAAG5R,CAAC,EACN,OAAOmS,GAAGnS,CAAC,CACd,CACD,MAAMsR,GAAGtR,CAAC,CACZ,CACA,SAAS8R,GAAG9R,EAAG,CACb,OAAO,IAAIsQ,GAAG,SAASrQ,EAAG,CACxB,IAAI,EAAID,EAAEmQ,EAAE,IACZ,GAAItB,GAAE,EAAE,SAAS,EACf,OAAO,EAAE,UAAU5O,CAAC,EACtB,MAAM,IAAI,UAAU,gEAAgE,CACxF,CAAG,CACH,CACA,SAAS8R,GAAG/R,EAAG,CACb,OAAO,IAAIsQ,GAAG,SAASrQ,EAAG,CACxB,QAAS,EAAI,EAAG,EAAID,EAAE,QAAU,CAACC,EAAE,OAAQ,IACzCA,EAAE,KAAKD,EAAE,CAAC,CAAC,EACbC,EAAE,SAAQ,CACd,CAAG,CACH,CACA,SAAS+R,GAAGhS,EAAG,CACb,OAAO,IAAIsQ,GAAG,SAASrQ,EAAG,CACxBD,EAAE,KAAK,SAAS,EAAG,CACjBC,EAAE,SAAWA,EAAE,KAAK,CAAC,EAAGA,EAAE,SAAQ,EACnC,EAAE,SAAS,EAAG,CACb,OAAOA,EAAE,MAAM,CAAC,CACjB,CAAA,EAAE,KAAK,KAAMuP,EAAE,CACpB,CAAG,CACH,CACA,SAAS0C,GAAGlS,EAAG,CACb,OAAO,IAAIsQ,GAAG,SAASrQ,EAAG,CACxB,IAAI,EAAG,EACP,GAAI,CACF,QAASoB,EAAIkN,GAAGvO,CAAC,EAAGmC,EAAId,EAAE,KAAI,EAAI,CAACc,EAAE,KAAMA,EAAId,EAAE,KAAI,EAAI,CACvD,IAAI,EAAIc,EAAE,MACV,GAAIlC,EAAE,KAAK,CAAC,EAAGA,EAAE,OACf,MACH,CACF,OAAQoE,EAAG,CACV,EAAI,CAAE,MAAOA,EACnB,QAAc,CACR,GAAI,CACFlC,GAAK,CAACA,EAAE,OAAS,EAAId,EAAE,SAAW,EAAE,KAAKA,CAAC,CAClD,QAAgB,CACR,GAAI,EACF,MAAM,EAAE,KACX,CACF,CACDpB,EAAE,SAAQ,CACd,CAAG,CACH,CACA,SAASgS,GAAGjS,EAAG,CACb,OAAO,IAAIsQ,GAAG,SAASrQ,EAAG,CACxBmS,GAAGpS,EAAGC,CAAC,EAAE,MAAM,SAAS,EAAG,CACzB,OAAOA,EAAE,MAAM,CAAC,CACtB,CAAK,CACL,CAAG,CACH,CACA,SAASkS,GAAGnS,EAAG,CACb,OAAOiS,GAAGP,GAAG1R,CAAC,CAAC,CACjB,CACA,SAASoS,GAAGpS,EAAGC,EAAG,CAChB,IAAI,EAAG,EAAGoB,EAAGc,EACb,OAAOkM,GAAG,KAAM,OAAQ,OAAQ,UAAW,CACzC,IAAI,EAAGhK,EACP,OAAOiK,GAAG,KAAM,SAAS3H,EAAG,CAC1B,OAAQA,EAAE,MAAK,CACb,IAAK,GACHA,EAAE,KAAK,KAAK,CAAC,EAAG,EAAG,EAAG,EAAE,CAAC,EAAG,EAAIiI,GAAG5O,CAAC,EAAG2G,EAAE,MAAQ,EACnD,IAAK,GACH,MAAO,CAAC,EAAG,EAAE,KAAM,CAAA,EACrB,IAAK,GACH,GAAI,EAAIA,EAAE,KAAM,EAAE,CAAC,CAAC,EAAE,KACpB,MAAO,CAAC,EAAG,CAAC,EACd,GAAI,EAAI,EAAE,MAAO1G,EAAE,KAAK,CAAC,EAAGA,EAAE,OAC5B,MAAO,CAAC,CAAC,EACX0G,EAAE,MAAQ,EACZ,IAAK,GACH,MAAO,CAAC,EAAG,CAAC,EACd,IAAK,GACH,MAAO,CAAC,EAAG,EAAE,EACf,IAAK,GACH,OAAOtC,EAAIsC,EAAE,KAAI,EAAItF,EAAI,CAAE,MAAOgD,CAAG,EAAE,CAAC,EAAG,EAAE,EAC/C,IAAK,GACH,OAAOsC,EAAE,KAAK,KAAK,CAAC,EAAC,CAAI,EAAG,EAAE,CAAC,EAAG,GAAK,CAAC,EAAE,OAASxE,EAAI,EAAE,QAAU,CAAC,EAAGA,EAAE,KAAK,CAAC,CAAC,EAAI,CAAC,EAAG,CAAC,EAC3F,IAAK,GACHwE,EAAE,KAAM,EAAEA,EAAE,MAAQ,EACtB,IAAK,GACH,MAAO,CAAC,EAAG,EAAE,EACf,IAAK,GACH,GAAItF,EACF,MAAMA,EAAE,MACV,MAAO,CAAC,CAAC,EACX,IAAK,IACH,MAAO,CAAC,CAAC,EACX,IAAK,IACH,OAAOpB,EAAE,WAAY,CAAC,CAAC,CAC1B,CACP,CAAK,CACL,CAAG,CACH,CA6KA,SAASoS,GAAGrS,EAAG,CACb,OAAO2Q,GAAG,SAAS1Q,EAAG,EAAG,CACvB,IAAI,EAAI,KAAMoB,EAAI,GAAIc,EACtB,EAAIlC,EAAE,UAAU2Q,GAAG,EAAG,OAAQ,OAAQ,SAAS,EAAG,CAChDzO,EAAI0P,GAAG7R,EAAE,EAAGqS,GAAGrS,CAAC,EAAEC,CAAC,CAAC,CAAC,EAAG,GAAK,EAAE,YAAa,EAAE,EAAI,KAAMkC,EAAE,UAAU,CAAC,GAAKd,EAAI,EAC/E,CAAA,CAAC,EAAGA,IAAM,EAAE,YAAa,EAAE,EAAI,KAAMc,EAAE,UAAU,CAAC,EACvD,CAAG,CACH,CAmJA,SAASmQ,IAAK,CACZ,MAAMtS,EAAIE,GAAE,WAAW,UAAWD,EAAID,EAAE,QAAQ,OAAO,EACvD,GAAIC,EAAI,EACN,OAAO,SAASD,EAAE,UAAUC,EAAI,EAAGD,EAAE,QAAQ,IAAKC,CAAC,CAAC,EAAG,EAAE,EAC3D,GAAID,EAAE,QAAQ,UAAU,EAAI,EAAG,CAC7B,MAAMqB,EAAIrB,EAAE,QAAQ,KAAK,EACzB,OAAO,SAASA,EAAE,UAAUqB,EAAI,EAAGrB,EAAE,QAAQ,IAAKqB,CAAC,CAAC,EAAG,EAAE,CAC1D,CACD,MAAMmG,EAAIxH,EAAE,QAAQ,OAAO,EAC3B,OAAOwH,EAAI,EAAI,SAASxH,EAAE,UAAUwH,EAAI,EAAGxH,EAAE,QAAQ,IAAKwH,CAAC,CAAC,EAAG,EAAE,EAAI,EACvE,CACW8K,GAAI,EAAcpS,GAAE,UAAYA,GAAE,SAAS,cAAgBA,GAAE,SAAS,aAAyBA,GAAE,UAAYA,GAAE,SAAS,cAAgBA,GAAE,SAAS,aAA0BA,GAAE,UAAYA,GAAE,SAAS,cAAgBA,GAAE,SAAS,aAa1N,CAAC,EAAEA,GAAE,QAAUA,GAAE,MAAQA,GAAE,SAAWA,GAAE,iBAAmBA,GAAE,mCAAqCA,GAAE,mBAAqBA,GAAE,kBAAkB,UAAU,4BAA8BA,GAAE,KAAOA,GAAE,IAAI,iBAAqB,MAAAqS,IAAM,IAAM,CACrP,GAAI,CAACrS,GAAE,gBACL,MAAO,GACT,MAAMF,EAAI,IAAI,gBAAgB,EAAG,CAAC,EAAGC,EAAID,EAAE,WAAW,IAAI,EAC1D,GAAI,CAACC,EACH,MAAO,GACTA,EAAE,SAAS,EAAG,EAAG,EAAG,CAAC,EACrB,MAAM,EAAID,EAAE,wBACZ,GAAI,CACFC,EAAE,cAAc,EAAG,WAAW,CAClC,MAAU,CACN,MAAO,EACR,CACD,MAAO,EACT,GAAK,EA2JCuS,GAAKtS,GAAE,OAAasS,IAAI,OAa9B,SAASC,IAAK,CACZ,GAAI,CACF,OAAOD,GAAG,YACd,MAAU,CACN,IAAI,EAAqB,IAAI,KAAM,EAAE,QAAO,EAC5C,MAAO,uCAAuC,QAC5C,QACA,SAAShL,EAAG,CACV,MAAMnG,GAAK,EAAI,KAAK,OAAM,EAAK,IAAM,GAAK,EAC1C,OAAO,EAAI,KAAK,MAAM,EAAI,EAAE,GAAImG,GAAK,IAAMnG,EAAIA,EAAI,EAAI,GAAG,SAAS,EAAE,CACtE,CACP,CACG,CACH,CA4CA,SAASqR,GAAG1S,EAAGC,EAAG,CAChB,OAAO,KAAK,UAAUgE,GAAGjE,CAAC,CAAC,CAC7B,CAuEA,MAAM2S,GAAK,SACX,SAASC,GAAG5S,EAAG,CACb,OAAOA,EAAE,WAAW2S,EAAE,EAAI3S,EAAE,MAAM,CAAC,EAAIA,CACzC,CACA,SAAS6S,GAAG7S,EAAG,CACb,GAAI,CACF,MAAO,CAAE,GAAI,GAAI,MAAO,KAAK,MAAM4S,GAAG5S,CAAC,CAAC,EAC5C,MAAU,CACN,MAAO,CAAE,GAAI,GACd,CACH,CACAsH,GAAGuL,GAAI,CACL,YAAa,IAAM,IAAI1K,GAAG,CAAE,IAAK,EAAE,CAAE,EACrC,iBAAmBnI,GAAMA,CAC3B,CAAC,EAwQD,MAAM8S,GAAK,GAAIC,GAAK,CAAC/S,EAAI,IAAOC,GAAM,QAAQA,EAAID,CAAC,IAAKgT,GAAK,CAAChT,EAAI,IAAOC,GAAM,QAAQ,GAAKD,CAAC,MAAMC,CAAC,IAAKgT,GAAK,CAACjT,EAAI,IAAM,CAACC,EAAG,EAAG,IAAM,QAAQ,GAAKD,CAAC,MAAMC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAKiT,GAAI,CAC5K,SAAU,CACR,MAAO,CAAC,EAAG,CAAC,EAEZ,KAAM,CAAC,EAAG,EAAE,EACZ,IAAK,CAAC,EAAG,EAAE,EACX,OAAQ,CAAC,EAAG,EAAE,EACd,UAAW,CAAC,EAAG,EAAE,EACjB,SAAU,CAAC,GAAI,EAAE,EACjB,QAAS,CAAC,EAAG,EAAE,EACf,OAAQ,CAAC,EAAG,EAAE,EACd,cAAe,CAAC,EAAG,EAAE,CACtB,EACD,MAAO,CACL,MAAO,CAAC,GAAI,EAAE,EACd,IAAK,CAAC,GAAI,EAAE,EACZ,MAAO,CAAC,GAAI,EAAE,EACd,OAAQ,CAAC,GAAI,EAAE,EACf,KAAM,CAAC,GAAI,EAAE,EACb,QAAS,CAAC,GAAI,EAAE,EAChB,KAAM,CAAC,GAAI,EAAE,EACb,MAAO,CAAC,GAAI,EAAE,EAEd,YAAa,CAAC,GAAI,EAAE,EACpB,KAAM,CAAC,GAAI,EAAE,EAEb,KAAM,CAAC,GAAI,EAAE,EAEb,UAAW,CAAC,GAAI,EAAE,EAClB,YAAa,CAAC,GAAI,EAAE,EACpB,aAAc,CAAC,GAAI,EAAE,EACrB,WAAY,CAAC,GAAI,EAAE,EACnB,cAAe,CAAC,GAAI,EAAE,EACtB,WAAY,CAAC,GAAI,EAAE,EACnB,YAAa,CAAC,GAAI,EAAE,CACrB,EACD,QAAS,CACP,QAAS,CAAC,GAAI,EAAE,EAChB,MAAO,CAAC,GAAI,EAAE,EACd,QAAS,CAAC,GAAI,EAAE,EAChB,SAAU,CAAC,GAAI,EAAE,EACjB,OAAQ,CAAC,GAAI,EAAE,EACf,UAAW,CAAC,GAAI,EAAE,EAClB,OAAQ,CAAC,GAAI,EAAE,EACf,QAAS,CAAC,GAAI,EAAE,EAEhB,cAAe,CAAC,IAAK,EAAE,EACvB,OAAQ,CAAC,IAAK,EAAE,EAEhB,OAAQ,CAAC,IAAK,EAAE,EAEhB,YAAa,CAAC,IAAK,EAAE,EACrB,cAAe,CAAC,IAAK,EAAE,EACvB,eAAgB,CAAC,IAAK,EAAE,EACxB,aAAc,CAAC,IAAK,EAAE,EACtB,gBAAiB,CAAC,IAAK,EAAE,EACzB,aAAc,CAAC,IAAK,EAAE,EACtB,cAAe,CAAC,IAAK,EAAE,CACxB,CACH,EACA,OAAO,KAAKA,GAAE,QAAQ,EACtB,MAAMC,GAAK,OAAO,KAAKD,GAAE,KAAK,EAAGE,GAAK,OAAO,KAAKF,GAAE,OAAO,EAC3D,CAAC,GAAGC,GAAI,GAAGC,EAAE,EACb,SAASC,IAAK,CACZ,MAAMrT,EAAoB,IAAI,IAC9B,SAAW,CAACC,EAAG,CAAC,IAAK,OAAO,QAAQiT,EAAC,EAAG,CACtC,SAAW,CAAC,EAAG7R,CAAC,IAAK,OAAO,QAAQ,CAAC,EACnC6R,GAAE,CAAC,EAAI,CACL,KAAM,QAAQ7R,EAAE,CAAC,CAAC,IAClB,MAAO,QAAQA,EAAE,CAAC,CAAC,GACpB,EAAE,EAAE,CAAC,EAAI6R,GAAE,CAAC,EAAGlT,EAAE,IAAIqB,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAClC,OAAO,eAAe6R,GAAGjT,EAAG,CAC1B,MAAO,EACP,WAAY,EAClB,CAAK,CACF,CACD,OAAO,OAAO,eAAeiT,GAAG,QAAS,CACvC,MAAOlT,EACP,WAAY,EAChB,CAAG,EAAGkT,GAAE,MAAM,MAAQ,WAAYA,GAAE,QAAQ,MAAQ,WAAYA,GAAE,MAAM,KAAOH,GAAI,EAAEG,GAAE,MAAM,QAAUF,GAAE,EAAIE,GAAE,MAAM,QAAUD,KAAMC,GAAE,QAAQ,KAAOH,GAAGD,EAAE,EAAGI,GAAE,QAAQ,QAAUF,GAAGF,EAAE,EAAGI,GAAE,QAAQ,QAAUD,GAAGH,EAAE,EAAG,OAAO,iBAAiBI,GAAG,CAC7O,aAAc,CACZ,MAAMjT,EAAG,EAAG,EAAG,CACb,OAAOA,IAAM,GAAK,IAAM,EAAIA,EAAI,EAAI,GAAKA,EAAI,IAAM,IAAM,KAAK,OAAOA,EAAI,GAAK,IAAM,EAAE,EAAI,IAAM,GAAK,GAAK,KAAK,MAAMA,EAAI,IAAM,CAAC,EAAI,EAAI,KAAK,MAAM,EAAI,IAAM,CAAC,EAAI,KAAK,MAAM,EAAI,IAAM,CAAC,CACzL,EACD,WAAY,EACb,EACD,SAAU,CACR,MAAMA,EAAG,CACP,MAAM,EAAI,yBAAyB,KAAKA,EAAE,SAAS,EAAE,CAAC,EACtD,GAAI,CAAC,EACH,MAAO,CAAC,EAAG,EAAG,CAAC,EACjB,GAAI,CAAC,CAAC,EAAI,EACV,EAAE,SAAW,IAAM,EAAI,CAAC,GAAG,CAAC,EAAE,IAAKkC,GAAMA,EAAIA,CAAC,EAAE,KAAK,EAAE,GACvD,MAAMd,EAAI,OAAO,SAAS,EAAG,EAAE,EAC/B,MAAO,CAELA,GAAK,GAAK,IACVA,GAAK,EAAI,IACTA,EAAI,GAEd,CACO,EACD,WAAY,EACb,EACD,aAAc,CACZ,MAAQpB,GAAMiT,GAAE,aAAa,GAAGA,GAAE,SAASjT,CAAC,CAAC,EAC7C,WAAY,EACb,EACD,cAAe,CACb,MAAMA,EAAG,CACP,GAAIA,EAAI,EACN,MAAO,IAAKA,EACd,GAAIA,EAAI,GACN,MAAO,KAAMA,EAAI,GACnB,IAAI,EAAG,EAAGoB,EACV,GAAIpB,GAAK,IACP,IAAMA,EAAI,KAAO,GAAK,GAAK,IAAK,EAAI,EAAGoB,EAAI,MACxC,CACHpB,GAAK,GACL,MAAMoE,EAAIpE,EAAI,GACd,EAAI,KAAK,MAAMA,EAAI,EAAE,EAAI,EAAG,EAAI,KAAK,MAAMoE,EAAI,CAAC,EAAI,EAAGhD,EAAIgD,EAAI,EAAI,CACpE,CACD,MAAMlC,EAAI,KAAK,IAAI,EAAG,EAAGd,CAAC,EAAI,EAC9B,GAAIc,IAAM,EACR,MAAO,IACT,IAAI,EAAI,IAAM,KAAK,MAAMd,CAAC,GAAK,EAAI,KAAK,MAAM,CAAC,GAAK,EAAI,KAAK,MAAM,CAAC,GACpE,OAAOc,IAAM,IAAM,GAAK,IAAK,CAC9B,EACD,WAAY,EACb,EACD,UAAW,CACT,MAAO,CAAClC,EAAG,EAAG,IAAMiT,GAAE,cAAcA,GAAE,aAAajT,EAAG,EAAG,CAAC,CAAC,EAC3D,WAAY,EACb,EACD,UAAW,CACT,MAAQA,GAAMiT,GAAE,cAAcA,GAAE,aAAajT,CAAC,CAAC,EAC/C,WAAY,EACb,CACF,CAAA,EAAGiT,EACN,CACM,MAAAI,GAAKD,GAAE,EAGkCE,GAAK,EAAmQ,IAAI,IAAID,GAAG,MAAM,OAAM,CAAE,EAC7U,OAAOC,EAAE,EAuLZ,MAAMC,EAAG,CACP,KAAO,CACL,EAAG,EAEH,EAAG,EAEH,EAAG,EAEH,EAAG,EAEH,WAAY,CAEhB,EACE,YAAYvT,EAAG,EAAG,CAChBA,IAAM,KAAK,MAAQA,GAAI,KAAK,SAAS,CAAC,CACvC,CACD,IAAI,OAAQ,CACV,OAAO,KAAK,IACb,CAED,IAAI,MAAMA,EAAG,CACX,MAAM,EAAI,kCAAkCA,CAAC,UAAU,OAAOA,CAAC,IAC/D,GAAIA,aAAauT,GACf,KAAK,OAAOvT,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,UACvB,OAAOA,GAAK,SACnB,KAAK,OAAOA,CAAC,UACN,OAAOA,GAAK,SAAU,CAC7B,IAAI,EACJ,GAAI,EAAI,oBAAoB,KAAKA,CAAC,EAAG,CACnC,MAAMoB,EAAI,EAAE,CAAC,EACb,IAAIc,EACJ,OAAQ,EAAE,CAAC,EAAC,CACV,IAAK,MACL,IAAK,QACFA,EAAI,+DAA+D,KAClEd,CACd,IAAkB,KAAK,EAAI,SAASc,EAAE,CAAC,EAAG,EAAE,EAAG,KAAK,EAAI,SAASA,EAAE,CAAC,EAAG,EAAE,EAAG,KAAK,EAAI,SAASA,EAAE,CAAC,EAAG,EAAE,EAAG,KAAK,EAAIA,EAAE,CAAC,EAAI,WAAWA,EAAE,CAAC,CAAC,EAAI,IAAMA,EAAI,kEAAkE,KAC1Md,CACD,IAAK,KAAK,EAAI2D,GAAE,WAAW7C,EAAE,CAAC,CAAC,EAAG,EAAG,GAAG,EAAI,IAAM,IAAK,KAAK,EAAI6C,GAAE,WAAW7C,EAAE,CAAC,CAAC,EAAG,EAAG,GAAG,EAAI,IAAM,IAAK,KAAK,EAAI6C,GAAE,WAAW7C,EAAE,CAAC,CAAC,EAAG,EAAG,GAAG,EAAI,IAAM,IAAK,KAAK,EAAIA,EAAE,CAAC,EAAI,WAAWA,EAAE,CAAC,CAAC,EAAI,GAAKwK,GAAG,CAAC,EACxM,MACF,IAAK,MACL,IAAK,QACFxK,EAAI,mFAAmF,KACtFd,CACD,GAAI,KAAK,OACR,WAAWc,EAAE,CAAC,CAAC,EAAI,IACnB,WAAWA,EAAE,CAAC,CAAC,EAAI,IACnB,WAAWA,EAAE,CAAC,CAAC,EAAI,IACnBA,EAAE,CAAC,EAAI,WAAWA,EAAE,CAAC,CAAC,EAAI,CACxC,EAAgBwK,GAAG,CAAC,EACR,MACF,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,QACFxK,EAAI,mFAAmF,KACtFd,CACD,GAAI,KAAK,OACR,WAAWc,EAAE,CAAC,CAAC,EAAI,IACnB,WAAWA,EAAE,CAAC,CAAC,EAAI,IACnB,WAAWA,EAAE,CAAC,CAAC,EAAI,IACnBA,EAAE,CAAC,EAAI,WAAWA,EAAE,CAAC,CAAC,EAAI,CACxC,EAAgBwK,GAAG,CAAC,EACR,MACF,QACEA,GAAG,CAAC,CACP,CACF,SAAU,EAAI,kBAAkB,KAAK1M,CAAC,EAAG,CACxC,MAAMoB,EAAI,EAAE,CAAC,EAAGc,EAAId,EAAE,OACtBc,IAAM,EAAI,KAAK,OACb,SAASd,EAAE,OAAO,CAAC,EAAG,EAAE,EACxB,SAASA,EAAE,OAAO,CAAC,EAAG,EAAE,EACxB,SAASA,EAAE,OAAO,CAAC,EAAG,EAAE,EACxB,CACV,EAAYc,IAAM,EAAI,KAAK,OACjB,SAASd,EAAE,OAAO,CAAC,EAAG,EAAE,EACxB,SAASA,EAAE,OAAO,CAAC,EAAG,EAAE,EACxB,SAASA,EAAE,OAAO,CAAC,EAAG,EAAE,EACxB2D,GAAE,SAAS3D,EAAE,OAAO,CAAC,EAAG,EAAE,EAAI,GAAI,EAAG,CAAC,CACvC,EAAGc,IAAM,GAAKA,IAAM,EAAI,KAAK,OAAO,SAASd,EAAG,EAAE,CAAC,EAAIsL,GAAG,CAAC,CAC7D,MACCA,GAAG,CAAC,CACP,MACC,OAAO,UAAU,eAAe,KAAK1M,EAAG,GAAG,GAAK,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,GAAK,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,EAAI,KAAK,OAClJA,EAAE,EACFA,EAAE,EACFA,EAAE,EACF,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,EAAIA,EAAE,EAAI,CAC7D,EAAU,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,GAAK,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,GAAK,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,EAAI,KAAK,OACtJA,EAAE,EACFA,EAAE,EACFA,EAAE,EACF,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,EAAIA,EAAE,EAAI,CAC7D,EAAU,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,GAAK,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,GAAK,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,EAAI,KAAK,OACtJA,EAAE,EACFA,EAAE,EACFA,EAAE,EACF,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,EAAIA,EAAE,EAAI,CAC7D,EAAU,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,GAAK,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,GAAK,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,EAAI,KAAK,OACtJA,EAAE,EACFA,EAAE,EACFA,EAAE,EACF,OAAO,UAAU,eAAe,KAAKA,EAAG,GAAG,EAAIA,EAAE,EAAI,CAC7D,EAAU0M,GAAG,CAAC,EACV,KAAK,KAAK,WAAa8G,GAAG,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,CACjD,CACD,IAAIxT,EAAG,CACL,OAAO,KAAK,MAAQA,EAAG,IACxB,CACD,IAAI,GAAI,CACN,OAAO,KAAK,KAAK,CAClB,CACD,IAAI,EAAEA,EAAG,CACP,KAAK,KAAK,EAAI+E,GAAE,KAAK,MAAMN,GAAEzE,EAAG,KAAK,CAAC,CAAC,EAAG,EAAG,GAAG,CACjD,CACD,IAAI,GAAI,CACN,OAAO,KAAK,KAAK,CAClB,CACD,IAAI,EAAEA,EAAG,CACP,KAAK,KAAK,EAAI+E,GAAE,KAAK,MAAMN,GAAEzE,EAAG,KAAK,CAAC,CAAC,EAAG,EAAG,GAAG,CACjD,CACD,IAAI,GAAI,CACN,OAAO,KAAK,KAAK,CAClB,CACD,IAAI,EAAEA,EAAG,CACP,KAAK,KAAK,EAAI+E,GAAE,KAAK,MAAMN,GAAEzE,EAAG,KAAK,CAAC,CAAC,EAAG,EAAG,GAAG,CACjD,CACD,IAAI,GAAI,CACN,OAAO,KAAK,KAAK,CAClB,CACD,IAAI,EAAEA,EAAG,CACP,KAAK,KAAK,EAAI+E,GAAEN,GAAEzE,EAAG,KAAK,CAAC,EAAG,EAAG,CAAC,CACnC,CACD,SAASA,EAAG,CACV,OAAO,KAAK,EAAIA,EAAG,IACpB,CACD,IAAI,YAAa,CACf,OAAO,KAAK,KAAK,UAClB,CACD,UAAUA,EAAG,EAAI,EAAG,CAClB,OAAO,KAAK,EAAIA,EAAE,CAAC,EAAG,KAAK,EAAIA,EAAE,EAAI,CAAC,EAAG,KAAK,EAAIA,EAAE,EAAI,CAAC,EAAG,KAAK,EAAIA,EAAE,EAAI,CAAC,EAAG,IAChF,CACD,QAAQA,EAAI,GAAI,EAAI,EAAG,CACrB,OAAOA,EAAE,CAAC,EAAI,KAAK,EAAGA,EAAE,EAAI,CAAC,EAAI,KAAK,EAAGA,EAAE,EAAI,CAAC,EAAI,KAAK,EAAGA,EAAE,EAAI,CAAC,EAAI,KAAK,EAAGA,CAChF,CACD,aAAc,CACZ,OAAO,KAAK,IAAM,EAAI,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAM,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAIqF,GAAG,KAAK,EAAG,CAAC,CAAC,GACjH,CACD,aAAc,CACZ,OAAO,KAAK,IAAM,GAAK,SAAW,KAAK,IAAI,SAAS,EAAE,GAAG,MAAM,EAAE,GAAK,WAAa,KAAK,IAAI,SAAS,EAAE,GAAG,MAAM,EAAE,CACnH,CACD,UAAW,CACT,OAAO,KAAK,IAAM,EAAI,IAAM,KAAK,YAAa,EAAG,KAAK,aACvD,CACD,EAAE,OAAO,QAAQ,GAAI,CACnB,MAAM,KAAK,EAAG,MAAM,KAAK,EAAG,MAAM,KAAK,EAAG,MAAM,KAAK,CACtD,CACD,OAAQ,CACN,OAAO,IAAIkO,GAAG,KAAK,KAAK,CACzB,CACD,KAAKvT,EAAG,CACN,OAAO,KAAK,MAAQA,EAAE,MAAO,IAC9B,CACD,OAAOA,EAAG,CACR,OAAOA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,CAC3E,CACD,IAAIA,EAAG,CACL,OAAO,KAAK,EAAI,KAAK,EAAIA,EAAE,EAAG,KAAK,EAAI,KAAK,EAAIA,EAAE,EAAG,KAAK,EAAI,KAAK,EAAIA,EAAE,EAAG,IAC7E,CACD,UAAUA,EAAG,EAAG,CACd,OAAO,KAAK,EAAIA,EAAE,EAAI,EAAE,EAAG,KAAK,EAAIA,EAAE,EAAI,EAAE,EAAG,KAAK,EAAIA,EAAE,EAAI,EAAE,EAAG,IACpE,CACD,UAAUA,EAAG,CACX,OAAO,KAAK,EAAI,KAAK,EAAIA,EAAG,KAAK,EAAI,KAAK,EAAIA,EAAG,KAAK,EAAI,KAAK,EAAIA,EAAG,IACvE,CACD,UAAUA,EAAG,CACX,OAAO,KAAK,EAAIA,EAAG,KAAK,EAAIA,EAAG,KAAK,EAAIA,EAAG,IAC5C,CACD,IAAIA,EAAG,CACL,OAAO,KAAK,EAAI,KAAK,EAAIA,EAAE,EAAG,KAAK,EAAI,KAAK,EAAIA,EAAE,EAAG,KAAK,EAAI,KAAK,EAAIA,EAAE,EAAG,IAC7E,CACD,SAASA,EAAG,CACV,OAAO,KAAK,EAAI,KAAK,EAAIA,EAAE,EAAG,KAAK,EAAI,KAAK,EAAIA,EAAE,EAAG,KAAK,EAAI,KAAK,EAAIA,EAAE,EAAG,IAC7E,CACD,eAAeA,EAAG,CAChB,OAAO,KAAK,EAAI,KAAK,EAAIA,EAAG,KAAK,EAAI,KAAK,EAAIA,EAAG,KAAK,EAAI,KAAK,EAAIA,EAAG,IACvE,CACD,SAASA,EAAI,GAAI,EAAI,UAAW,EAAI,UAAW,CAC7C,GAAIA,EACF,OAAO,KAAK,MAAQ,KAAK,EAAI,KAAQ,KAAK,EAAI,KAAQ,KAAK,EAAI,KAAQ,IAAM,EAAI,EAAG,KACtF,CACE,KAAM,CAAE,EAAGoB,EAAG,EAAGc,EAAG,EAAG,CAAC,EAAK,KAAK,MAClC,OAAO,KAAK,EAAI,IAAMd,EAAG,KAAK,EAAI,IAAMc,EAAG,KAAK,EAAI,IAAM,EAAG,IAC9D,CACF,CACD,OAAOlC,EAAI,UAAW,EAAI,UAAW,CACnC,OAAO,KAAK,SAAS,GAAIA,EAAG,CAAC,EAAE,SAC7B,GACAA,EACA,CACN,CACG,CAED,QAAQA,EAAG,CACTA,EAAI+E,GAAE/E,EAAG,EAAG,CAAC,EACb,KAAM,CAAE,EAAG,EAAG,EAAG,EAAG,EAAGoB,EAAG,EAAGc,GAAM,KAAK,MACxC,OAAOA,GAAK,EAAI,KAAK,EAAIlC,GAAK,KAAK,EAAI,GAAK,IAAM,GAAKA,EAAG,KAAK,EAAI,GAAK,IAAM,GAAKA,EAAG,KAAK,EAAIoB,GAAK,IAAMA,GAAKpB,GAAI,IACpH,CAED,OAAOA,EAAG,CACRA,EAAI+E,GAAE/E,EAAG,EAAG,CAAC,EACb,KAAM,CAAE,EAAG,EAAG,EAAG,EAAG,EAAGoB,EAAG,EAAGc,GAAM,KAAK,MACxC,OAAOA,GAAK,EAAI,KAAK,EAAIlC,GAAK,KAAK,EAAI,GAAK,EAAIA,GAAI,KAAK,EAAI,GAAK,EAAIA,GAAI,KAAK,EAAIoB,GAAK,EAAIpB,IAAK,IAClG,CAGD,KAAKA,EAAG,EAAG,CACT,EAAI+E,GAAE,EAAG,EAAG,CAAC,EACb,KAAM,CAAE,EAAG,EAAG3D,EAAG,EAAGc,CAAG,EAAG,KAAK,MAC/B,OAAO,KAAK,EAAI,GAAKlC,EAAE,EAAI,GAAK,EAAG,KAAK,EAAIoB,GAAKpB,EAAE,EAAIoB,GAAK,EAAG,KAAK,EAAIc,GAAKlC,EAAE,EAAIkC,GAAK,EAAG,IAC5F,CAGD,WAAWlC,EAAG,EAAG,EAAG,CAClB,OAAO,EAAI+E,GAAE,EAAG,EAAG,CAAC,EAAG,KAAK,EAAI/E,EAAE,GAAK,EAAE,EAAIA,EAAE,GAAK,EAAG,KAAK,EAAIA,EAAE,GAAK,EAAE,EAAIA,EAAE,GAAK,EAAG,KAAK,EAAIA,EAAE,GAAK,EAAE,EAAIA,EAAE,GAAK,EAAG,IACxH,CAGD,OAAO,SAASA,EAAG,EAAG,EAAG,CACvB,GAAI,CACF,OAAOyT,GAAG,WAAW,IAAIF,GAAGvT,CAAC,EAAG,IAAIuT,GAAG,CAAC,EAAG,CAAC,EAAE,SAAQ,CAC5D,MAAY,CACN,OAAO,CACR,CACF,CACD,OAAO,QAAS,CACd,OAAOE,GAAG,OAAO,KAAK,OAAM,EAAK,QAAQ,EAAE,UAC5C,CACD,OAAOzT,EAAG,EAAG,EAAGoB,EAAI,EAAG,CACrB,OAAO,KAAK,EAAI2D,GAAE/E,EAAG,EAAG,GAAG,EAAG,KAAK,EAAI+E,GAAE,EAAG,EAAG,GAAG,EAAG,KAAK,EAAIA,GAAE,EAAG,EAAG,GAAG,EAAG,KAAK,EAAIA,GAAE3D,EAAG,EAAG,CAAC,EAAG,IAClG,CAED,OAAOpB,EAAG,CACR,OAAOA,EAAI,KAAK,MAAMA,CAAC,EAAGA,EAAI,UAAY,KAAK,EAAIA,GAAK,GAAK,IAAK,KAAK,EAAIA,GAAK,EAAI,IAAK,KAAK,EAAIA,EAAI,IAAK,KAAK,EAAI,IAAM,KAAK,EAAIA,GAAK,GAAK,IAAK,KAAK,EAAIA,GAAK,GAAK,IAAK,KAAK,EAAIA,GAAK,EAAI,IAAK,KAAK,GAAKA,EAAI,KAAO,KAAM,IAC7N,CACD,IAAI,KAAM,CACR,IAAIA,GAAK,KAAK,GAAK,KAAO,KAAK,GAAK,GAAK,KAAK,EAC9C,OAAO,KAAK,IAAM,IAAMA,EAAIA,GAAK,EAAGA,GAAK,KAAK,MAAM,KAAK,EAAI,GAAG,GAAIA,CACrE,CAGD,OAAOA,EAAG,EAAG,EAAGoB,EAAI,EAAG,CACrB,MAAMc,EAAI8C,GAAGhF,EAAG,CAAC,EAAG,EAAI+E,GAAE,EAAG,EAAG,CAAC,EAAGX,EAAIW,GAAE,EAAG,EAAG,CAAC,EACjD,GAAI,IAAM,EACR,KAAK,EAAIX,EAAI,IAAK,KAAK,EAAIA,EAAI,IAAK,KAAK,EAAIA,EAAI,QAC9C,CACH,MAAMsC,EAAItC,GAAK,GAAMA,GAAK,EAAI,GAAKA,EAAI,EAAIA,EAAI,EAAG0F,EAAI,EAAI1F,EAAIsC,EAC9D,KAAK,EAAIgN,GAAG5J,EAAGpD,EAAGxE,EAAI,EAAI,CAAC,EAAI,IAAK,KAAK,EAAIwR,GAAG5J,EAAGpD,EAAGxE,CAAC,EAAI,IAAK,KAAK,EAAIwR,GAAG5J,EAAGpD,EAAGxE,EAAI,EAAI,CAAC,EAAI,GAChG,CACD,OAAO,KAAK,EAAId,EAAG,IACpB,CACD,OAAOpB,EAAG,CACR,MAAM,EAAI,KAAK,EAAG,EAAI,KAAK,EAAGoB,EAAI,KAAK,EAAGc,EAAI,KAAK,IAAI,EAAG,EAAGd,CAAC,EAAI,IAAK,EAAI,KAAK,IAAI,EAAG,EAAGA,CAAC,EAAI,IAC/F,IAAIgD,EAAGsC,EACP,MAAMoD,GAAK,EAAI5H,GAAK,EACpB,GAAI,IAAMA,EACRkC,EAAI,EAAGsC,EAAI,MACR,CACH,MAAMqD,EAAI7H,EAAI,EACd,OAAQwE,EAAIoD,GAAK,GAAMC,GAAK7H,EAAI,GAAK6H,GAAK,EAAI7H,EAAI,GAAIA,EAAC,CACrD,KAAK,EACHkC,GAAK,EAAIhD,GAAK2I,GAAK,EAAI3I,EAAI,EAAI,GAC/B,MACF,KAAK,EACHgD,GAAKhD,EAAI,GAAK2I,EAAI,EAClB,MACF,KAAK3I,EACL,QACEgD,GAAK,EAAI,GAAK2F,EAAI,EAClB,KACH,CACD3F,GAAK,CACN,CACD,OAAOpE,GAAKA,EAAE,OAAOoE,EAAGsC,EAAGoD,EAAG,KAAK,CAAC,EAAG,CACrC,EAAG1F,EACH,EAAGsC,EACHoD,EACA,EAAG,KAAK,CACd,CACG,CACD,UAAU9J,EAAG,EAAG,EAAG,CACjB,MAAMoB,EAAI,KAAK,SACf,OAAO,KAAK,OAAOA,EAAE,EAAIpB,EAAGoB,EAAE,EAAI,EAAGA,EAAE,EAAI,CAAC,CAC7C,CACD,QAAQpB,EAAG,EAAG,CACZ,MAAM,EAAI,KAAK,OAAM,EAAIoB,EAAIpB,EAAE,OAAQ,EAAEkC,EAAI+C,GAAG,EAAE,EAAG7D,EAAE,EAAG,CAAC,EAAG,EAAI6D,GAAG,EAAE,EAAG7D,EAAE,EAAG,CAAC,EAAGgD,EAAIa,GAAG,EAAE,EAAG7D,EAAE,EAAG,CAAC,EACrG,OAAO,KAAK,OAAOc,EAAG,EAAGkC,CAAC,EAAG,IAC9B,CAGD,OAAOpE,EAAG,EAAG,EAAGoB,EAAI,EAAG,CACrB,MAAMc,EAAI6C,GAAE/E,EAAG,EAAG,CAAC,EAAI,IAAK,EAAI+E,GAAE,EAAG,EAAG,CAAC,EAAGX,EAAIW,GAAE,EAAG,EAAG,CAAC,EAAG2B,EAAI,KAAK,MAAMxE,EAAI,EAAE,EAAI,EAAG4H,EAAI5H,EAAI,GAAK,KAAK,MAAMA,EAAI,EAAE,EAAG6H,EAAI3F,GAAK,EAAI,GAAI4F,EAAI5F,GAAK,EAAI0F,EAAI,GAAI,EAAI1F,GAAK,GAAK,EAAI0F,GAAK,GAAIG,EAAI,CAC5L,CAAC7F,EAAG,EAAG2F,CAAC,EACR,CAACC,EAAG5F,EAAG2F,CAAC,EACR,CAACA,EAAG3F,EAAG,CAAC,EACR,CAAC2F,EAAGC,EAAG5F,CAAC,EACR,CAAC,EAAG2F,EAAG3F,CAAC,EACR,CAACA,EAAG2F,EAAGC,CAAC,CACT,EAACtD,CAAC,EACH,OAAO,KAAK,EAAIuD,EAAE,CAAC,EAAI,IAAK,KAAK,EAAIA,EAAE,CAAC,EAAI,IAAK,KAAK,EAAIA,EAAE,CAAC,EAAI,IAAK,KAAK,EAAI7I,EAAG,IACnF,CACD,OAAOpB,EAAG,EAAG,EAAGoB,EAAI,EAAG,CACrB,KAAK,OAAOpB,EAAG,EAAG,EAAGoB,CAAC,CACvB,CACD,OAAOpB,EAAG,CACR,KAAM,CAAE,EAAG,EAAG,EAAG,EAAG,EAAGoB,EAAG,EAAGc,CAAG,EAAG,KAAK,MAAO,EAAI,KAAK,IAAI,EAAG,EAAGd,CAAC,EAAGgD,EAAI,KAAK,IAAI,EAAG,EAAGhD,CAAC,EAAGsF,EAAI,EAAItC,EACrG,IAAI0F,EACJ,IAAM,EAAIA,GAAK,EAAI1I,GAAKsF,EAAI,IAAM,EAAIoD,EAAI,GAAK1I,EAAI,GAAKsF,EAAIoD,EAAI,GAAK,EAAI,GAAKpD,EAAGoD,GAAK,EAAGA,EAAI,IAAMA,GAAK,GACxG,MAAMC,EAAIrD,GAAK,EAAI,EAAIoD,EAAGE,EAAI,IAAM,EAAI,EAAItD,EAAI,EAAG,EAAI,EAAI,IAC3D,OAAO1G,GAAKA,EAAE,OAAO+J,EAAGC,EAAG,EAAG9H,CAAC,EAAG,CAChC,EAAG6H,EACH,EAAGC,EACH,EAAG,EACH,EAAG9H,CACT,CACG,CACD,OAAOlC,EAAG,CACR,KAAM,CAAE,EAAG,EAAG,EAAG,EAAG,EAAGoB,EAAG,EAAGc,CAAG,EAAG,KAAK,OAAOlC,CAAC,EAChD,MAAO,CACL,EAAG,EACH,EAAG,EACH,EAAGoB,EACH,EAAGc,CACT,CACG,CACH,CACA,MAAMuR,GAAK,IAAIF,GACf,SAASG,GAAG3T,EAAGC,EAAG,EAAG,CACnB,OAAO,EAAI,IAAM,GAAK,GAAI,EAAI,IAAM,GAAK,GAAI,EAAI,EAAI,EAAID,GAAKC,EAAID,GAAK,EAAI,EAAI,EAAI,EAAI,EAAIC,EAAI,EAAI,EAAI,EAAID,GAAKC,EAAID,GAAK,GAAK,EAAI,EAAI,GAAKA,CAC7I,CACA,SAASyT,GAAGzT,EAAGC,EAAG,EAAG,CACnB,MAAO,OAASD,EAAI,MAASC,EAAI,MAAS,CAC5C,CACA,SAAS2T,GAAG5T,EAAG,CACb,MAAMC,EAAI,OAAOD,CAAC,EAAE,YAAW,EAC/B,GAAIC,EAAE,QAAQ,IAAI,GAAK,GAAKA,EAAE,QAAQ,GAAG,GAAK,EAC5C,OAAOA,EACT,MAAM,EAAI,WAAWA,CAAC,EACtB,MAAO,CAACuE,GAAG,CAAC,GAAK,EAAI,EAAI,GAAK,GAAK,IAAM,KAAK,KAAK,EAAI,IAAM,EAAE,EAAI,GAAK,KAAO,KAAK,KAAK,CAAC,EAAI,GAChG,CACA,SAASqP,GAAG7T,EAAGC,EAAI,EAAG,CACpB,OAAOoF,GAAGrF,EAAI,IAAKC,CAAC,CACtB,CACA,SAAS6T,GAAG9T,EAAGC,EAAI,EAAG,CACpB,OAAO,OAAO,OAAO4T,GAAG7T,EAAGC,CAAC,CAAC,CAAC,CAChC,CAsrHA,SAAS8T,GAAG/T,EAAI,OAAO,SAAS,KAAMC,EAAG,CACvC,GAAI,CACF,OAAO,IAAI,IAAID,EAAGC,CAAC,CACvB,MAAU,CACN,MAAMuH,EAAI,uBAAwBnG,EAAI,oDAAqD,EAAI,mCAAoCsQ,EAAI,2BAA4BtN,EAAI,oBAAqB0F,EAAI,IAAI,OAAO,IAAIvC,CAAC,KAAKnG,CAAC,GAAG,CAAC,GAAGsQ,CAAC,GAAGtN,CAAC,GAAG,EAAE,KAAKrE,CAAC,EAC7O,MAAO,CACL,KAAMA,EACN,SAAU+J,GAAG,QAAQ,UAAY,GACjC,KAAMA,GAAG,QAAQ,MAAQ,GACzB,SAAUA,GAAG,QAAQ,UAAY,GACjC,KAAMA,GAAG,QAAQ,MAAQ,GACzB,SAAUA,GAAG,QAAQ,UAAY,GACjC,OAAQA,GAAG,QAAQ,QAAU,GAC7B,KAAMA,GAAG,QAAQ,MAAQ,EAC/B,CACG,CACH,CA6BA,SAASiK,GAAGhU,EAAI,OAAO,SAAS,KAAM,CACpC,MAAMC,EAAI8T,GAAG/T,CAAC,EAAG,EAAIC,EAAE,KAAK,QAAQA,EAAE,IAAI,EAC1C,OAAOA,EAAE,MAAQ,GAAK,EAAIA,EAAE,KAAK,UAAU,EAAG,CAAC,EAAIA,EAAE,IACvD,CAOA,SAASgU,GAAGjU,EAAGC,EAAG,CAChB,OAAOD,EAAIC,EAAE,QAAQ,QAASD,EAAE,QAAQ,GAAG,GAAK,EAAI,IAAM,GAAG,CAC/D,CAoBA,SAASkU,GAAGlU,EAAG,CACb,MAAO,IAAM,OAAO,QAAQA,CAAC,EAAE,IAAI,CAAC,CAACC,EAAG,CAAC,IAAM,GAAG,mBAAmBA,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,EAAE,EAAE,KAAK,GAAG,CAC9G,CACA,SAASkU,GAAGnU,EAAG,CACb,MAAO,IAAM,CAAC,GAAGA,EAAE,QAAO,CAAE,EAAE,IAC3BC,GAAM,mBAAmBA,EAAE,CAAC,CAAC,EAAI,IAAM,mBAAmBA,EAAE,CAAC,YAAa,KAAOA,EAAE,CAAC,EAAE,KAAOA,EAAE,CAAC,CAAC,CACtG,EAAI,KAAK,GAAG,CACZ,CAqEA,SAASmU,GAAGpU,EAAG,CACb,OAAOA,EAAI,KAAK,GAAK,GACvB,CAEA,SAASqU,GAAGrU,EAAG,CACb,OAAOA,EAAI,IAAM,KAAK,EACxB,CAEA,SAASsU,GAAGtU,EAAGC,EAAG,EAAI,EAAG,CACvB,OAAO,KAAK,KAAKD,EAAIA,EAAIC,EAAIA,EAAI,EAAI,CAAC,CACxC,CACA,SAASsU,GAAGvU,EAAGC,EAAG,EAAG,EAAG,CACtB,OAAOqU,GAAG,EAAItU,EAAG,EAAIC,CAAC,CACxB,CACA,SAASuU,GAAGxU,EAAGC,EAAG,EAAG,EAAG,CACtB,IAAIoB,EAAI,KAAK,MAAM,EAAIpB,EAAG,EAAID,CAAC,EAC/B,OAAOqB,EAAI,IAAMA,GAAK,KAAK,GAAK,GAAIA,CACtC,CACA,SAASoT,GAAGzU,EAAGC,EAAG,CAChB,MAAO,CACL,GAAI,KAAK,IAAID,CAAC,EAAIC,EAClB,GAAI,KAAK,IAAID,CAAC,EAAIC,CACtB,CACA,CAyrBA,SAASyU,GAAG1U,EAAGC,EAAG,CAChB,OAAO,UAAW,CAChB,OAAOD,EAAE,MAAMC,EAAG,SAAS,CAC/B,CACA,CACA,KAAM,CAAE,SAAU0U,EAAE,EAAK,OAAO,UAAW,CAAE,eAAgBC,EAAI,EAAG,OAAQC,IAAO7U,GAAOC,GAAM,CAC9F,MAAM,EAAI0U,GAAG,KAAK1U,CAAC,EACnB,OAAOD,EAAE,CAAC,IAAMA,EAAE,CAAC,EAAI,EAAE,MAAM,EAAG,EAAE,EAAE,YAAa,EACrD,GAAmB,OAAO,OAAO,IAAI,CAAC,EAAG8U,GAAM9U,IAAOA,EAAIA,EAAE,YAAa,EAAGC,GAAM4U,GAAG5U,CAAC,IAAMD,GAAI+U,GAAM/U,GAAOC,GAAM,OAAOA,IAAMD,EAAG,CAAE,QAASgV,EAAI,EAAG,MAAOC,GAAKF,GAAG,WAAW,EAC/K,SAASG,GAAGlV,EAAG,CACb,OAAOA,IAAM,MAAQ,CAACiV,GAAGjV,CAAC,GAAKA,EAAE,cAAgB,MAAQ,CAACiV,GAAGjV,EAAE,WAAW,GAAKmV,GAAGnV,EAAE,YAAY,QAAQ,GAAKA,EAAE,YAAY,SAASA,CAAC,CACvI,CACA,MAAMoV,GAAKN,GAAG,aAAa,EAC3B,SAASO,GAAGrV,EAAG,CACb,IAAIC,EACJ,OAAO,OAAO,YAAc,KAAO,YAAY,OAASA,EAAI,YAAY,OAAOD,CAAC,EAAIC,EAAID,GAAKA,EAAE,QAAUoV,GAAGpV,EAAE,MAAM,EAAGC,CACzH,CACA,MAAMqV,GAAKP,GAAG,QAAQ,EAAGI,GAAKJ,GAAG,UAAU,EAAGQ,GAAKR,GAAG,QAAQ,EAAGS,GAAMxV,GAAMA,IAAM,MAAQ,OAAOA,GAAK,SAAUyV,GAAMzV,GAAMA,IAAM,IAAMA,IAAM,GAAI0V,GAAM1V,GAAM,CAC7J,GAAI6U,GAAG7U,CAAC,IAAM,SACZ,MAAO,GACT,MAAMC,EAAI2U,GAAG5U,CAAC,EACd,OAAQC,IAAM,MAAQA,IAAM,OAAO,WAAa,OAAO,eAAeA,CAAC,IAAM,OAAS,EAAE,OAAO,eAAeD,IAAM,EAAE,OAAO,YAAYA,EAC3I,EAAG2V,GAAKb,GAAG,MAAM,EAAGc,GAAKd,GAAG,MAAM,EAAGe,GAAKf,GAAG,MAAM,EAAGgB,GAAKhB,GAAG,UAAU,EAAGiB,GAAM/V,GAAMwV,GAAGxV,CAAC,GAAKmV,GAAGnV,EAAE,IAAI,EAAGgW,GAAMhW,GAAM,CACtH,IAAIC,EACJ,OAAOD,IAAM,OAAO,UAAY,YAAcA,aAAa,UAAYmV,GAAGnV,EAAE,MAAM,KAAOC,EAAI4U,GAAG7U,CAAC,KAAO,YACxGC,IAAM,UAAYkV,GAAGnV,EAAE,QAAQ,GAAKA,EAAE,SAAQ,IAAO,qBACvD,EAAGiW,GAAKnB,GAAG,iBAAiB,EAAG,CAACoB,GAAIC,GAAIC,GAAIC,EAAE,EAAI,CAAC,iBAAkB,UAAW,WAAY,SAAS,EAAE,IAAIvB,EAAE,EAAGwB,GAAMtW,GAAMA,EAAE,KAAOA,EAAE,KAAM,EAAGA,EAAE,QAAQ,qCAAsC,EAAE,EAClM,SAASuW,GAAGvW,EAAGC,EAAG,CAAE,WAAY,EAAI,EAAI,EAAG,GAAI,CAC7C,GAAID,IAAM,MAAQ,OAAOA,EAAI,IAC3B,OACF,IAAI,EAAGqB,EACP,GAAI,OAAOrB,GAAK,WAAaA,EAAI,CAACA,CAAC,GAAIgV,GAAGhV,CAAC,EACzC,IAAK,EAAI,EAAGqB,EAAIrB,EAAE,OAAQ,EAAIqB,EAAG,IAC/BpB,EAAE,KAAK,KAAMD,EAAE,CAAC,EAAG,EAAGA,CAAC,MACtB,CACH,MAAMmC,EAAI,EAAI,OAAO,oBAAoBnC,CAAC,EAAI,OAAO,KAAKA,CAAC,EAAG,EAAImC,EAAE,OACpE,IAAIkC,EACJ,IAAK,EAAI,EAAG,EAAI,EAAG,IACjBA,EAAIlC,EAAE,CAAC,EAAGlC,EAAE,KAAK,KAAMD,EAAEqE,CAAC,EAAGA,EAAGrE,CAAC,CACpC,CACH,CACA,SAASwW,GAAGxW,EAAGC,EAAG,CAChBA,EAAIA,EAAE,cACN,MAAM,EAAI,OAAO,KAAKD,CAAC,EACvB,IAAI,EAAI,EAAE,OAAQqB,EAClB,KAAO,KAAM,GACX,GAAIA,EAAI,EAAE,CAAC,EAAGpB,IAAMoB,EAAE,YAAa,EACjC,OAAOA,EACX,OAAO,IACT,CACA,MAAMoV,IAAM,IAAM,OAAO,WAAa,IAAM,WAAa,OAAO,KAAO,IAAM,KAAO,OAAO,OAAS,IAAM,OAAS,UAAWC,GAAM1W,GAAM,CAACiV,GAAGjV,CAAC,GAAKA,IAAMyW,GAC1J,SAASE,IAAK,CACZ,KAAM,CAAE,SAAU3W,CAAG,EAAG0W,GAAG,IAAI,GAAK,MAAQ,CAAE,EAAEzW,EAAI,CAAE,EAAE,EAAI,CAAC,EAAGoB,IAAM,CACpE,MAAMc,EAAInC,GAAKwW,GAAGvW,EAAGoB,CAAC,GAAKA,EAC3BqU,GAAGzV,EAAEkC,CAAC,CAAC,GAAKuT,GAAG,CAAC,EAAIzV,EAAEkC,CAAC,EAAIwU,GAAG1W,EAAEkC,CAAC,EAAG,CAAC,EAAIuT,GAAG,CAAC,EAAIzV,EAAEkC,CAAC,EAAIwU,GAAG,CAAA,EAAI,CAAC,EAAI3B,GAAG,CAAC,EAAI/U,EAAEkC,CAAC,EAAI,EAAE,MAAK,EAAKlC,EAAEkC,CAAC,EAAI,CAC1G,EACE,QAAS,EAAI,EAAGd,EAAI,UAAU,OAAQ,EAAIA,EAAG,IAC3C,UAAU,CAAC,GAAKkV,GAAG,UAAU,CAAC,EAAG,CAAC,EACpC,OAAOtW,CACT,CACA,MAAM2W,GAAK,CAAC5W,EAAGC,EAAG,EAAG,CAAE,WAAY,CAAG,EAAG,CAAE,KAAMsW,GAAGtW,EAAG,CAACoB,EAAGc,IAAM,CAC/D,GAAKgT,GAAG9T,CAAC,EAAIrB,EAAEmC,CAAC,EAAIuS,GAAGrT,EAAG,CAAC,EAAIrB,EAAEmC,CAAC,EAAId,CACxC,EAAG,CAAE,WAAY,CAAG,CAAA,EAAGrB,GAAI6W,GAAM7W,IAAOA,EAAE,WAAW,CAAC,IAAM,QAAUA,EAAIA,EAAE,MAAM,CAAC,GAAIA,GAAI8W,GAAK,CAAC9W,EAAGC,EAAG,EAAG,IAAM,CAC9GD,EAAE,UAAY,OAAO,OAAOC,EAAE,UAAW,CAAC,EAAGD,EAAE,UAAU,YAAcA,EAAG,OAAO,eAAeA,EAAG,QAAS,CAC1G,MAAOC,EAAE,SACb,CAAG,EAAG,GAAK,OAAO,OAAOD,EAAE,UAAW,CAAC,CACvC,EAAG+W,GAAK,CAAC/W,EAAGC,EAAG,EAAG,IAAM,CACtB,IAAIoB,EAAGc,EAAG,EACV,MAAMkC,EAAI,CAAA,EACV,GAAIpE,EAAIA,GAAK,CAAE,EAAED,GAAK,KACpB,OAAOC,EACT,EAAG,CACD,IAAKoB,EAAI,OAAO,oBAAoBrB,CAAC,EAAGmC,EAAId,EAAE,OAAQc,KAAM,GAC1D,EAAId,EAAEc,CAAC,GAAI,CAAC,GAAK,EAAE,EAAGnC,EAAGC,CAAC,IAAM,CAACoE,EAAE,CAAC,IAAMpE,EAAE,CAAC,EAAID,EAAE,CAAC,EAAGqE,EAAE,CAAC,EAAI,IAChErE,EAAI,IAAM,IAAM4U,GAAG5U,CAAC,CACxB,OAAWA,IAAM,CAAC,GAAK,EAAEA,EAAGC,CAAC,IAAMD,IAAM,OAAO,WAC9C,OAAOC,CACT,EAAG+W,GAAK,CAAChX,EAAGC,EAAG,IAAM,CACnBD,EAAI,OAAOA,CAAC,GAAI,IAAM,QAAU,EAAIA,EAAE,UAAY,EAAIA,EAAE,QAAS,GAAKC,EAAE,OACxE,MAAM,EAAID,EAAE,QAAQC,EAAG,CAAC,EACxB,OAAO,IAAM,IAAM,IAAM,CAC3B,EAAGgX,GAAMjX,GAAM,CACb,GAAI,CAACA,EACH,OAAO,KACT,GAAIgV,GAAGhV,CAAC,EACN,OAAOA,EACT,IAAIC,EAAID,EAAE,OACV,GAAI,CAACuV,GAAGtV,CAAC,EACP,OAAO,KACT,MAAM,EAAI,IAAI,MAAMA,CAAC,EACrB,KAAOA,KAAM,GACX,EAAEA,CAAC,EAAID,EAAEC,CAAC,EACZ,OAAO,CACT,EAAGiX,IAAOlX,GAAOC,GAAMD,GAAKC,aAAaD,GAAG,OAAO,WAAa,KAAO4U,GAAG,UAAU,CAAC,EAAGuC,GAAK,CAACnX,EAAGC,IAAM,CACrG,MAAMuH,GAAKxH,GAAKA,EAAE,OAAO,QAAQ,GAAG,KAAKA,CAAC,EAC1C,IAAIqB,EACJ,MAAQA,EAAImG,EAAE,KAAI,IAAO,CAACnG,EAAE,MAAQ,CAClC,MAAM,EAAIA,EAAE,MACZpB,EAAE,KAAKD,EAAG,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,CACrB,CACH,EAAGoX,GAAK,CAACpX,EAAGC,IAAM,CAChB,IAAI,EACJ,MAAM,EAAI,CAAA,EACV,MAAQ,EAAID,EAAE,KAAKC,CAAC,KAAO,MACzB,EAAE,KAAK,CAAC,EACV,OAAO,CACT,EAAGoX,GAAKvC,GAAG,iBAAiB,EAAGwC,GAAMtX,GAAMA,EAAE,YAAW,EAAG,QACzD,wBACA,SAASgP,EAAGxH,EAAGnG,EAAG,CAChB,OAAOmG,EAAE,YAAa,EAAGnG,CAC1B,CACH,EAAGkW,IAAM,CAAC,CAAE,eAAgBvX,KAAQ,CAACC,EAAG,IAAMD,EAAE,KAAKC,EAAG,CAAC,GAAG,OAAO,SAAS,EAAGuX,GAAK1C,GAAG,QAAQ,EAAG2C,GAAK,CAACzX,EAAGC,IAAM,CAC/G,MAAM,EAAI,OAAO,0BAA0BD,CAAC,EAAG,EAAI,GACnDuW,GAAG,EAAG,CAAClV,EAAGc,IAAM,CACd,IAAI,GACH,EAAIlC,EAAEoB,EAAGc,EAAGnC,CAAC,KAAO,KAAO,EAAEmC,CAAC,EAAI,GAAKd,EACzC,CAAA,EAAG,OAAO,iBAAiBrB,EAAG,CAAC,CAClC,EAAG0X,GAAM1X,GAAM,CACbyX,GAAGzX,EAAG,CAACC,EAAG,IAAM,CACd,GAAIkV,GAAGnV,CAAC,GAAK,CAAC,YAAa,SAAU,QAAQ,EAAE,QAAQ,CAAC,IAAM,GAC5D,MAAO,GACT,MAAM,EAAIA,EAAE,CAAC,EACb,GAAImV,GAAG,CAAC,EAAG,CACT,GAAIlV,EAAE,WAAa,GAAI,aAAcA,EAAG,CACtCA,EAAE,SAAW,GACb,MACD,CACDA,EAAE,MAAQA,EAAE,IAAM,IAAM,CACtB,MAAM,MAAM,qCAAuC,EAAI,GAAG,CAClE,EACK,CACL,CAAG,CACH,EAAG0X,GAAK,CAAC3X,EAAGC,IAAM,CAChB,MAAM,EAAI,CAAA,EAAI,EAAKoB,GAAM,CACvBA,EAAE,QAASc,GAAM,CACf,EAAEA,CAAC,EAAI,EACb,CAAK,CACL,EACE,OAAO6S,GAAGhV,CAAC,EAAI,EAAEA,CAAC,EAAI,EAAE,OAAOA,CAAC,EAAE,MAAMC,CAAC,CAAC,EAAG,CAC/C,EAAG2X,GAAK,IAAM,CACd,EAAGC,GAAK,CAAC7X,EAAGC,IAAMD,GAAK,MAAQ,OAAO,SAASA,EAAI,CAACA,CAAC,EAAIA,EAAIC,EAC7D,SAAS6X,GAAG9X,EAAG,CACb,MAAO,CAAC,EAAEA,GAAKmV,GAAGnV,EAAE,MAAM,GAAKA,EAAE,OAAO,WAAW,IAAM,YAAcA,EAAE,OAAO,QAAQ,EAC1F,CACA,MAAM+X,GAAM/X,GAAM,CAChB,MAAMC,EAAI,IAAI,MAAM,EAAE,EAAG,EAAI,CAAC,EAAGoB,IAAM,CACrC,GAAImU,GAAG,CAAC,EAAG,CACT,GAAIvV,EAAE,QAAQ,CAAC,GAAK,EAClB,OACF,GAAI,EAAE,WAAY,GAAI,CACpBA,EAAEoB,CAAC,EAAI,EACP,MAAMc,EAAI6S,GAAG,CAAC,EAAI,CAAA,EAAK,CAAA,EACvB,OAAOuB,GAAG,EAAG,CAAC,EAAGlS,IAAM,CACrB,MAAMsC,EAAI,EAAE,EAAGtF,EAAI,CAAC,EACpB,CAAC4T,GAAGtO,CAAC,IAAMxE,EAAEkC,CAAC,EAAIsC,EACnB,CAAA,EAAG1G,EAAEoB,CAAC,EAAI,OAAQc,CACpB,CACF,CACD,OAAO,CACX,EACE,OAAO,EAAEnC,EAAG,CAAC,CACf,EAAGgY,GAAKlD,GAAG,eAAe,EAAGmD,GAAMjY,GAAMA,IAAMwV,GAAGxV,CAAC,GAAKmV,GAAGnV,CAAC,IAAMmV,GAAGnV,EAAE,IAAI,GAAKmV,GAAGnV,EAAE,KAAK,EAAGkY,IAAM,CAAClY,EAAGC,IAAMD,EAAI,aAAeC,GAAK,CAAC,EAAG,KAAOwW,GAAG,iBAAiB,UAAW,CAAC,CAAE,OAAQpV,EAAG,KAAMc,KAAQ,CACzMd,IAAMoV,IAAMtU,IAAM,GAAK,EAAE,QAAU,EAAE,MAAK,GAC5C,EAAG,EAAE,EAAId,GAAM,CACb,EAAE,KAAKA,CAAC,EAAGoV,GAAG,YAAY,EAAG,GAAG,CAClC,IAAI,SAAS,KAAK,OAAQ,CAAA,GAAI,CAAA,CAAE,EAAK,GAAM,WAAW,CAAC,GACrD,OAAO,cAAgB,WACvBtB,GAAGsB,GAAG,WAAW,CACnB,EAAG0B,GAAK,OAAO,eAAiB,IAAM,eAAe,KAAK1B,EAAE,EAAI,OAAO,QAAU,KAAO,QAAQ,UAAYyB,GAAIE,EAAI,CAClH,QAASpD,GACT,cAAeI,GACf,SAAUF,GACV,WAAYc,GACZ,kBAAmBX,GACnB,SAAUC,GACV,SAAUC,GACV,UAAWE,GACX,SAAUD,GACV,cAAeE,GACf,iBAAkBQ,GAClB,UAAWC,GACX,WAAYC,GACZ,UAAWC,GACX,YAAapB,GACb,OAAQU,GACR,OAAQC,GACR,OAAQC,GACR,SAAU2B,GACV,WAAYrC,GACZ,SAAUY,GACV,kBAAmBE,GACnB,aAAciB,GACd,WAAYpB,GACZ,QAASS,GACT,MAAOI,GACP,OAAQC,GACR,KAAMN,GACN,SAAUO,GACV,SAAUC,GACV,aAAcC,GACd,OAAQlC,GACR,WAAYC,GACZ,SAAUkC,GACV,QAASC,GACT,aAAcE,GACd,SAAUC,GACV,WAAYC,GACZ,eAAgBE,GAChB,WAAYA,GAEZ,kBAAmBE,GACnB,cAAeC,GACf,YAAaC,GACb,YAAaL,GACb,KAAMM,GACN,eAAgBC,GAChB,QAASrB,GACT,OAAQC,GACR,iBAAkBC,GAClB,oBAAqBoB,GACrB,aAAcC,GACd,UAAWC,GACX,WAAYC,GACZ,aAAcC,GACd,KAAMC,EACR,EACA,SAASE,GAAErY,EAAGC,EAAG,EAAG,EAAGoB,EAAG,CACxB,MAAM,KAAK,IAAI,EAAG,MAAM,kBAAoB,MAAM,kBAAkB,KAAM,KAAK,WAAW,EAAI,KAAK,MAAQ,IAAI,QAAQ,MAAO,KAAK,QAAUrB,EAAG,KAAK,KAAO,aAAcC,IAAM,KAAK,KAAOA,GAAI,IAAM,KAAK,OAAS,GAAI,IAAM,KAAK,QAAU,GAAIoB,IAAM,KAAK,SAAWA,EAAG,KAAK,OAASA,EAAE,OAASA,EAAE,OAAS,KAChT,CACA+W,EAAE,SAASC,GAAG,MAAO,CACnB,OAAQ,UAAW,CACjB,MAAO,CAEL,QAAS,KAAK,QACd,KAAM,KAAK,KAEX,YAAa,KAAK,YAClB,OAAQ,KAAK,OAEb,SAAU,KAAK,SACf,WAAY,KAAK,WACjB,aAAc,KAAK,aACnB,MAAO,KAAK,MAEZ,OAAQD,EAAE,aAAa,KAAK,MAAM,EAClC,KAAM,KAAK,KACX,OAAQ,KAAK,MACnB,CACG,CACH,CAAC,EACD,MAAME,GAAKD,GAAE,UAAWE,GAAK,CAAA,EAC7B,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,iBAEF,EAAE,QAASvY,GAAM,CACfuY,GAAGvY,CAAC,EAAI,CAAE,MAAOA,CAAC,CACpB,CAAC,EACD,OAAO,iBAAiBqY,GAAGE,EAAE,EAC7B,OAAO,eAAeD,GAAI,eAAgB,CAAE,MAAO,EAAE,CAAE,EACvDD,GAAE,KAAO,CAACrY,EAAGC,EAAG,EAAG,EAAGoB,EAAGc,IAAM,CAC7B,MAAM,EAAI,OAAO,OAAOmW,EAAE,EAC1B,OAAOF,EAAE,aAAapY,EAAG,EAAG,SAAS,EAAG,CACtC,OAAO,IAAM,MAAM,SACpB,EAAGqE,GAAMA,IAAM,cAAc,EAAGgU,GAAE,KAAK,EAAGrY,EAAE,QAASC,EAAG,EAAG,EAAGoB,CAAC,EAAG,EAAE,MAAQrB,EAAG,EAAE,KAAOA,EAAE,KAAMmC,GAAK,OAAO,OAAO,EAAGA,CAAC,EAAG,CAC7H,EACA,MAAMqW,GAAK,KACX,SAASC,GAAGzY,EAAG,CACb,OAAOoY,EAAE,cAAcpY,CAAC,GAAKoY,EAAE,QAAQpY,CAAC,CAC1C,CACA,SAAS0Y,GAAG1Y,EAAG,CACb,OAAOoY,EAAE,SAASpY,EAAG,IAAI,EAAIA,EAAE,MAAM,EAAG,EAAE,EAAIA,CAChD,CACA,SAAS2Y,GAAG3Y,EAAGC,EAAG,EAAG,CACnB,OAAOD,EAAIA,EAAE,OAAOC,CAAC,EAAE,IAAI,SAASoB,EAAG,EAAG,CACxC,OAAOA,EAAIqX,GAAGrX,CAAC,EAAG,CAAC,GAAK,EAAI,IAAMA,EAAI,IAAMA,CAChD,CAAG,EAAE,KAAK,EAAI,IAAM,EAAE,EAAIpB,CAC1B,CACA,SAAS2Y,GAAG5Y,EAAG,CACb,OAAOoY,EAAE,QAAQpY,CAAC,GAAK,CAACA,EAAE,KAAKyY,EAAE,CACnC,CACA,MAAMI,GAAKT,EAAE,aAAaA,EAAG,CAAA,EAAI,KAAM,SAAS,EAAG,CACjD,MAAO,WAAW,KAAK,CAAC,CAC1B,CAAC,EACD,SAASU,GAAG9Y,EAAGC,EAAG,EAAG,CACnB,GAAI,CAACmY,EAAE,SAASpY,CAAC,EACf,MAAM,IAAI,UAAU,0BAA0B,EAChDC,EAAIA,GAAK,IAAI,SAAY,EAAImY,EAAE,aAAa,EAAG,CAC7C,WAAY,GACZ,KAAM,GACN,QAAS,EACV,EAAE,GAAI,SAASjO,EAAGC,EAAG,CACpB,MAAO,CAACgO,EAAE,YAAYhO,EAAED,CAAC,CAAC,CAC9B,CAAG,EACD,MAAM,EAAI,EAAE,WAAY9I,EAAI,EAAE,SAAW,EAAGc,EAAI,EAAE,KAAM,EAAI,EAAE,QAAS,GAAK,EAAE,MAAQ,OAAO,KAAO,KAAO,OAASiW,EAAE,oBAAoBnY,CAAC,EAC3I,GAAI,CAACmY,EAAE,WAAW/W,CAAC,EACjB,MAAM,IAAI,UAAU,4BAA4B,EAClD,SAAS,EAAE0X,EAAG,CACZ,GAAIA,IAAM,KACR,MAAO,GACT,GAAIX,EAAE,OAAOW,CAAC,EACZ,OAAOA,EAAE,cACX,GAAI,CAAC,GAAKX,EAAE,OAAOW,CAAC,EAClB,MAAM,IAAIV,GAAE,8CAA8C,EAC5D,OAAOD,EAAE,cAAcW,CAAC,GAAKX,EAAE,aAAaW,CAAC,EAAI,GAAK,OAAO,MAAQ,WAAa,IAAI,KAAK,CAACA,CAAC,CAAC,EAAI,OAAO,KAAKA,CAAC,EAAIA,CACpH,CACD,SAAS,EAAEA,EAAG5O,EAAGC,EAAG,CAClB,IAAI,EAAI2O,EACR,GAAIA,GAAK,CAAC3O,GAAK,OAAO2O,GAAK,UACzB,GAAIX,EAAE,SAASjO,EAAG,IAAI,EACpBA,EAAI,EAAIA,EAAIA,EAAE,MAAM,EAAG,EAAE,EAAG4O,EAAI,KAAK,UAAUA,CAAC,UACzCX,EAAE,QAAQW,CAAC,GAAKH,GAAGG,CAAC,IAAMX,EAAE,WAAWW,CAAC,GAAKX,EAAE,SAASjO,EAAG,IAAI,KAAO,EAAIiO,EAAE,QAAQW,CAAC,GAC5F,OAAO5O,EAAIuO,GAAGvO,CAAC,EAAG,EAAE,QAAQ,SAASI,EAAGyO,EAAG,CACzC,EAAEZ,EAAE,YAAY7N,CAAC,GAAKA,IAAM,OAAStK,EAAE,OAErC,IAAM,GAAK0Y,GAAG,CAACxO,CAAC,EAAG6O,EAAG7W,CAAC,EAAI,IAAM,KAAOgI,EAAIA,EAAI,KAChD,EAAEI,CAAC,CACf,CACA,CAAS,EAAG,GAER,OAAOkO,GAAGM,CAAC,EAAI,IAAM9Y,EAAE,OAAO0Y,GAAGvO,EAAGD,EAAGhI,CAAC,EAAG,EAAE4W,CAAC,CAAC,EAAG,GACnD,CACD,MAAM9O,EAAI,CAAA,EAAIgP,EAAI,OAAO,OAAOJ,GAAI,CAClC,eAAgB,EAChB,aAAc,EACd,YAAaJ,EACjB,CAAG,EACD,SAASvO,EAAE6O,EAAG5O,EAAG,CACf,GAAI,CAACiO,EAAE,YAAYW,CAAC,EAAG,CACrB,GAAI9O,EAAE,QAAQ8O,CAAC,IAAM,GACnB,MAAM,MAAM,kCAAoC5O,EAAE,KAAK,GAAG,CAAC,EAC7DF,EAAE,KAAK8O,CAAC,EAAGX,EAAE,QAAQW,EAAG,SAAS1O,EAAGC,EAAG,EACpC,EAAE8N,EAAE,YAAY/N,CAAC,GAAKA,IAAM,OAAShJ,EAAE,KACtCpB,EACAoK,EACA+N,EAAE,SAAS9N,CAAC,EAAIA,EAAE,KAAM,EAAGA,EAC3BH,EACA8O,CACD,KAAM,IAAM/O,EAAEG,EAAGF,EAAIA,EAAE,OAAOG,CAAC,EAAI,CAACA,CAAC,CAAC,CAC/C,CAAO,EAAGL,EAAE,KACP,CACF,CACD,GAAI,CAACmO,EAAE,SAASpY,CAAC,EACf,MAAM,IAAI,UAAU,wBAAwB,EAC9C,OAAOkK,EAAElK,CAAC,EAAGC,CACf,CACA,SAASiZ,GAAGlZ,EAAG,CACb,MAAMC,EAAI,CACR,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,IACX,EACE,OAAO,mBAAmBD,CAAC,EAAE,QAAQ,mBAAoB,SAASwH,EAAG,CACnE,OAAOvH,EAAEuH,CAAC,CACd,CAAG,CACH,CACA,SAAS2R,GAAGnZ,EAAGC,EAAG,CAChB,KAAK,OAAS,CAAA,EAAID,GAAK8Y,GAAG9Y,EAAG,KAAMC,CAAC,CACtC,CACA,MAAMmZ,GAAKD,GAAG,UACdC,GAAG,OAAS,SAAS,EAAGpK,EAAG,CACzB,KAAK,OAAO,KAAK,CAAC,EAAGA,CAAC,CAAC,CACzB,EACAoK,GAAG,SAAW,SAAS,EAAG,CACxB,MAAMpK,EAAI,EAAI,SAASxH,EAAG,CACxB,OAAO,EAAE,KAAK,KAAMA,EAAG0R,EAAE,CAC1B,EAAGA,GACJ,OAAO,KAAK,OAAO,IAAI,SAAS7X,EAAG,CACjC,OAAO2N,EAAE3N,EAAE,CAAC,CAAC,EAAI,IAAM2N,EAAE3N,EAAE,CAAC,CAAC,CAC9B,EAAE,EAAE,EAAE,KAAK,GAAG,CACjB,EACA,SAASgY,GAAGrZ,EAAG,CACb,OAAO,mBAAmBA,CAAC,EAAE,QAAQ,QAAS,GAAG,EAAE,QAAQ,OAAQ,GAAG,EAAE,QAAQ,QAAS,GAAG,EAAE,QAAQ,OAAQ,GAAG,EAAE,QAAQ,QAAS,GAAG,EAAE,QAAQ,QAAS,GAAG,CAC/J,CACA,SAASsZ,GAAGtZ,EAAGC,EAAG,EAAG,CACnB,GAAI,CAACA,EACH,OAAOD,EACT,MAAM,EAAI,GAAK,EAAE,QAAUqZ,GAC3BjB,EAAE,WAAW,CAAC,IAAM,EAAI,CACtB,UAAW,CACf,GACE,MAAM/W,EAAI,GAAK,EAAE,UACjB,IAAIc,EACJ,GAAId,EAAIc,EAAId,EAAEpB,EAAG,CAAC,EAAIkC,EAAIiW,EAAE,kBAAkBnY,CAAC,EAAIA,EAAE,SAAQ,EAAK,IAAIkZ,GAAGlZ,EAAG,CAAC,EAAE,SAAS,CAAC,EAAGkC,EAAG,CAC7F,MAAM,EAAInC,EAAE,QAAQ,GAAG,EACvB,IAAM,KAAOA,EAAIA,EAAE,MAAM,EAAG,CAAC,GAAIA,IAAMA,EAAE,QAAQ,GAAG,IAAM,GAAK,IAAM,KAAOmC,CAC7E,CACD,OAAOnC,CACT,CACA,MAAMuZ,EAAG,CACP,aAAc,CACZ,KAAK,SAAW,EACjB,CASD,IAAItZ,EAAG,EAAG,EAAG,CACX,OAAO,KAAK,SAAS,KAAK,CACxB,UAAWA,EACX,SAAU,EACV,YAAa,EAAI,EAAE,YAAc,GACjC,QAAS,EAAI,EAAE,QAAU,IAC1B,CAAA,EAAG,KAAK,SAAS,OAAS,CAC5B,CAQD,MAAMA,EAAG,CACP,KAAK,SAASA,CAAC,IAAM,KAAK,SAASA,CAAC,EAAI,KACzC,CAMD,OAAQ,CACN,KAAK,WAAa,KAAK,SAAW,CAAE,EACrC,CAWD,QAAQA,EAAG,CACTmY,EAAE,QAAQ,KAAK,SAAU,SAAS5Q,EAAG,CACnCA,IAAM,MAAQvH,EAAEuH,CAAC,CACvB,CAAK,CACF,CACH,CACA,MAAMgS,GAAKD,GAAIE,GAAK,CAClB,kBAAmB,GACnB,kBAAmB,GACnB,oBAAqB,EACvB,EAAGC,GAAK,OAAO,gBAAkB,IAAM,gBAAkBP,GAAIQ,GAAK,OAAO,SAAW,IAAM,SAAW,KAAMC,GAAK,OAAO,KAAO,IAAM,KAAO,KAAMC,GAAK,CACpJ,UAAW,GACX,QAAS,CACP,gBAAiBH,GACjB,SAAUC,GACV,KAAMC,EACP,EACD,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,MAAM,CAC5D,EAAGE,GAAK,OAAO,OAAS,KAAO,OAAO,SAAW,IAAKC,GAAK,OAAO,WAAa,UAAY,WAAa,OAAQC,GAAKF,KAAO,CAACC,IAAM,CAAC,cAAe,eAAgB,IAAI,EAAE,QAAQA,GAAG,OAAO,EAAI,GAAIE,IAAM,IAAM,OAAO,kBAAoB,KAC1O,gBAAgB,mBAAqB,OAAO,KAAK,eAAiB,YAAa,EAAEC,GAAKJ,IAAM,OAAO,SAAS,MAAQ,mBAAoBK,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC/M,UAAW,KACX,cAAeL,GACf,sBAAuBE,GACvB,+BAAgCC,GAChC,UAAWF,GACX,OAAQG,EACV,EAAG,OAAO,YAAa,CAAE,MAAO,QAAU,CAAA,CAAC,EAAGE,GAAI,CAChD,GAAGD,GACH,GAAGN,EACL,EACA,SAASQ,GAAGra,EAAGC,EAAG,CAChB,OAAO6Y,GAAG9Y,EAAG,IAAIoa,GAAE,QAAQ,gBAAmB,OAAO,OAAO,CAC1D,QAAS,SAAS,EAAG,EAAG/Y,EAAGc,EAAG,CAC5B,OAAOiY,GAAE,QAAUhC,EAAE,SAAS,CAAC,GAAK,KAAK,OAAO,EAAG,EAAE,SAAS,QAAQ,CAAC,EAAG,IAAMjW,EAAE,eAAe,MAAM,KAAM,SAAS,CACvH,CACL,EAAKlC,CAAC,CAAC,CACP,CACA,SAASqa,GAAGta,EAAG,CACb,OAAOoY,EAAE,SAAS,gBAAiBpY,CAAC,EAAE,IAAKC,GAAMA,EAAE,CAAC,IAAM,KAAO,GAAKA,EAAE,CAAC,GAAKA,EAAE,CAAC,CAAC,CACpF,CACA,SAASsa,GAAGva,EAAG,CACb,MAAMC,EAAI,CAAA,EAAI,EAAI,OAAO,KAAKD,CAAC,EAC/B,IAAI,EACJ,MAAMqB,EAAI,EAAE,OACZ,IAAIc,EACJ,IAAK,EAAI,EAAG,EAAId,EAAG,IACjBc,EAAI,EAAE,CAAC,EAAGlC,EAAEkC,CAAC,EAAInC,EAAEmC,CAAC,EACtB,OAAOlC,CACT,CACA,SAASua,GAAGxa,EAAG,CACb,SAASC,EAAE,EAAG,EAAGoB,EAAGc,EAAG,CACrB,IAAI,EAAI,EAAEA,GAAG,EACb,GAAI,IAAM,YACR,MAAO,GACT,MAAMkC,EAAI,OAAO,SAAS,CAAC,CAAC,EAAGsC,EAAIxE,GAAK,EAAE,OAC1C,OAAO,EAAI,CAAC,GAAKiW,EAAE,QAAQ/W,CAAC,EAAIA,EAAE,OAAS,EAAGsF,GAAKyR,EAAE,WAAW/W,EAAG,CAAC,EAAIA,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAG,CAAC,EAAIA,EAAE,CAAC,EAAI,EAAG,CAACgD,KAAO,CAAChD,EAAE,CAAC,GAAK,CAAC+W,EAAE,SAAS/W,EAAE,CAAC,CAAC,KAAOA,EAAE,CAAC,EAAI,CAAE,GAAGpB,EAAE,EAAG,EAAGoB,EAAE,CAAC,EAAGc,CAAC,GAAKiW,EAAE,QAAQ/W,EAAE,CAAC,CAAC,IAAMA,EAAE,CAAC,EAAIkZ,GAAGlZ,EAAE,CAAC,CAAC,GAAI,CAACgD,EACrN,CACD,GAAI+T,EAAE,WAAWpY,CAAC,GAAKoY,EAAE,WAAWpY,EAAE,OAAO,EAAG,CAC9C,MAAM,EAAI,CAAA,EACV,OAAOoY,EAAE,aAAapY,EAAG,CAAC,EAAGqB,IAAM,CACjCpB,EAAEqa,GAAG,CAAC,EAAGjZ,EAAG,EAAG,CAAC,CACjB,CAAA,EAAG,CACL,CACD,OAAO,IACT,CACA,SAASoZ,GAAGza,EAAGC,EAAG,EAAG,CACnB,GAAImY,EAAE,SAASpY,CAAC,EACd,GAAI,CACF,OAAQC,GAAK,KAAK,OAAOD,CAAC,EAAGoY,EAAE,KAAKpY,CAAC,CACtC,OAAQ,EAAG,CACV,GAAI,EAAE,OAAS,cACb,MAAM,CACT,CACH,OAAQ,GAAK,KAAK,WAAWA,CAAC,CAChC,CACA,MAAM0a,GAAK,CACT,aAAcjB,GACd,QAAS,CAAC,MAAO,OAAQ,OAAO,EAChC,iBAAkB,CAAC,SAAS,EAAGzK,EAAG,CAChC,MAAMxH,EAAIwH,EAAE,eAAgB,GAAI,GAAI3N,EAAImG,EAAE,QAAQ,kBAAkB,EAAI,GAAI,EAAI4Q,EAAE,SAAS,CAAC,EAC5F,GAAI,GAAKA,EAAE,WAAW,CAAC,IAAM,EAAI,IAAI,SAAS,CAAC,GAAIA,EAAE,WAAW,CAAC,EAC/D,OAAO/W,EAAI,KAAK,UAAUmZ,GAAG,CAAC,CAAC,EAAI,EACrC,GAAIpC,EAAE,cAAc,CAAC,GAAKA,EAAE,SAAS,CAAC,GAAKA,EAAE,SAAS,CAAC,GAAKA,EAAE,OAAO,CAAC,GAAKA,EAAE,OAAO,CAAC,GAAKA,EAAE,iBAAiB,CAAC,EAC5G,OAAO,EACT,GAAIA,EAAE,kBAAkB,CAAC,EACvB,OAAO,EAAE,OACX,GAAIA,EAAE,kBAAkB,CAAC,EACvB,OAAOpJ,EAAE,eAAe,kDAAmD,EAAE,EAAG,EAAE,WACpF,IAAI3K,EACJ,GAAI,EAAG,CACL,GAAImD,EAAE,QAAQ,mCAAmC,EAAI,GACnD,OAAO6S,GAAG,EAAG,KAAK,cAAc,EAAE,SAAQ,EAC5C,IAAKhW,EAAI+T,EAAE,WAAW,CAAC,IAAM5Q,EAAE,QAAQ,qBAAqB,EAAI,GAAI,CAClE,MAAMb,EAAI,KAAK,KAAO,KAAK,IAAI,SAC/B,OAAOmS,GACLzU,EAAI,CAAE,UAAW,CAAC,EAAK,EACvBsC,GAAK,IAAIA,EACT,KAAK,cACf,CACO,CACF,CACD,OAAO,GAAKtF,GAAK2N,EAAE,eAAe,mBAAoB,EAAE,EAAGyL,GAAG,CAAC,GAAK,CACxE,CAAG,EACD,kBAAmB,CAAC,SAAS,EAAG,CAC9B,MAAMzL,EAAI,KAAK,cAAgB0L,GAAG,aAAclT,EAAIwH,GAAKA,EAAE,kBAAmB3N,EAAI,KAAK,eAAiB,OACxG,GAAI+W,EAAE,WAAW,CAAC,GAAKA,EAAE,iBAAiB,CAAC,EACzC,OAAO,EACT,GAAI,GAAKA,EAAE,SAAS,CAAC,IAAM5Q,GAAK,CAAC,KAAK,cAAgBnG,GAAI,CACxD,MAAMsQ,EAAI,EAAE3C,GAAKA,EAAE,oBAAsB3N,EACzC,GAAI,CACF,OAAO,KAAK,MAAM,CAAC,CACpB,OAAQgD,EAAG,CACV,GAAIsN,EACF,MAAMtN,EAAE,OAAS,cAAgBgU,GAAE,KAAKhU,EAAGgU,GAAE,iBAAkB,KAAM,KAAM,KAAK,QAAQ,EAAIhU,CAC/F,CACF,CACD,OAAO,CACX,CAAG,EAKD,QAAS,EACT,eAAgB,aAChB,eAAgB,eAChB,iBAAkB,GAClB,cAAe,GACf,IAAK,CACH,SAAU+V,GAAE,QAAQ,SACpB,KAAMA,GAAE,QAAQ,IACjB,EACD,eAAgB,SAAS,EAAG,CAC1B,OAAO,GAAK,KAAO,EAAI,GACxB,EACD,QAAS,CACP,OAAQ,CACN,OAAQ,oCACR,eAAgB,MACjB,CACF,CACH,EACAhC,EAAE,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,OAAO,EAAIpY,GAAM,CAClE0a,GAAG,QAAQ1a,CAAC,EAAI,EAClB,CAAC,EACD,MAAM2a,GAAKD,GAAIE,GAAKxC,EAAE,YAAY,CAChC,MACA,gBACA,iBACA,eACA,OACA,UACA,OACA,OACA,oBACA,sBACA,gBACA,WACA,eACA,sBACA,UACA,cACA,YACF,CAAC,EAAGyC,GAAM7a,GAAM,CACd,MAAMC,EAAI,CAAA,EACV,IAAI,EAAG,EAAGoB,EACV,OAAOrB,GAAKA,EAAE,MAAM;AAAA,CACrB,EAAE,QAAQ,SAAS2R,EAAG,CACnBtQ,EAAIsQ,EAAE,QAAQ,GAAG,EAAG,EAAIA,EAAE,UAAU,EAAGtQ,CAAC,EAAE,KAAM,EAAC,YAAW,EAAI,EAAIsQ,EAAE,UAAUtQ,EAAI,CAAC,EAAE,OAAQ,EAAE,CAAC,GAAKpB,EAAE,CAAC,GAAK2a,GAAG,CAAC,KAAO,IAAM,aAAe3a,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,KAAK,CAAC,EAAIA,EAAE,CAAC,EAAI,CAAC,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,KAAO,EAAI,EACnN,CAAA,EAAGA,CACN,EAAG6a,GAAK,OAAO,WAAW,EAC1B,SAASC,GAAG/a,EAAG,CACb,OAAOA,GAAK,OAAOA,CAAC,EAAE,KAAI,EAAG,aAC/B,CACA,SAASgb,GAAGhb,EAAG,CACb,OAAOA,IAAM,IAAMA,GAAK,KAAOA,EAAIoY,EAAE,QAAQpY,CAAC,EAAIA,EAAE,IAAIgb,EAAE,EAAI,OAAOhb,CAAC,CACxE,CACA,SAASib,GAAGjb,EAAG,CACb,MAAMC,EAAoB,OAAO,OAAO,IAAI,EAAG,EAAI,mCACnD,IAAI,EACJ,KAAO,EAAI,EAAE,KAAKD,CAAC,GACjBC,EAAE,EAAE,CAAC,CAAC,EAAI,EAAE,CAAC,EACf,OAAOA,CACT,CACA,MAAMib,GAAMlb,GAAM,iCAAiC,KAAKA,EAAE,KAAI,CAAE,EAChE,SAASmb,GAAGnb,EAAGC,EAAG,EAAG,EAAGoB,EAAG,CACzB,GAAI+W,EAAE,WAAW,CAAC,EAChB,OAAO,EAAE,KAAK,KAAMnY,EAAG,CAAC,EAC1B,GAAIoB,IAAMpB,EAAI,GAAI,CAAC,CAACmY,EAAE,SAASnY,CAAC,EAAG,CACjC,GAAImY,EAAE,SAAS,CAAC,EACd,OAAOnY,EAAE,QAAQ,CAAC,IAAM,GAC1B,GAAImY,EAAE,SAAS,CAAC,EACd,OAAO,EAAE,KAAKnY,CAAC,CAClB,CACH,CACA,SAASmb,GAAGpb,EAAG,CACb,OAAOA,EAAE,KAAI,EAAG,YAAa,EAAC,QAAQ,kBAAmB,CAACC,EAAG,EAAG,IAAM,EAAE,YAAa,EAAG,CAAC,CAC3F,CACA,SAASob,GAAGrb,EAAGC,EAAG,CAChB,MAAM,EAAImY,EAAE,YAAY,IAAMnY,CAAC,EAC/B,CAAC,MAAO,MAAO,KAAK,EAAE,QAAS,GAAM,CACnC,OAAO,eAAeD,EAAG,EAAI,EAAG,CAC9B,MAAO,SAASqB,EAAGc,EAAG,EAAG,CACvB,OAAO,KAAK,CAAC,EAAE,KAAK,KAAMlC,EAAGoB,EAAGc,EAAG,CAAC,CACrC,EACD,aAAc,EACpB,CAAK,CACL,CAAG,CACH,CACA,MAAMmZ,EAAG,CACP,YAAYrb,EAAG,CACbA,GAAK,KAAK,IAAIA,CAAC,CAChB,CACD,IAAIA,EAAG,EAAG,EAAG,CACX,MAAMoB,EAAI,KACV,SAASc,EAAEkC,EAAGsC,EAAGoD,EAAG,CAClB,MAAMC,EAAI+Q,GAAGpU,CAAC,EACd,GAAI,CAACqD,EACH,MAAM,IAAI,MAAM,wCAAwC,EAC1D,MAAMC,EAAImO,EAAE,QAAQ/W,EAAG2I,CAAC,GACvB,CAACC,GAAK5I,EAAE4I,CAAC,IAAM,QAAUF,IAAM,IAAMA,IAAM,QAAU1I,EAAE4I,CAAC,IAAM,MAAQ5I,EAAE4I,GAAKtD,CAAC,EAAIqU,GAAG3W,CAAC,EACxF,CACD,MAAM,EAAI,CAACA,EAAGsC,IAAMyR,EAAE,QAAQ/T,EAAG,CAAC0F,EAAGC,IAAM7H,EAAE4H,EAAGC,EAAGrD,CAAC,CAAC,EACrD,GAAIyR,EAAE,cAAcnY,CAAC,GAAKA,aAAa,KAAK,YAC1C,EAAEA,EAAG,CAAC,UACCmY,EAAE,SAASnY,CAAC,IAAMA,EAAIA,EAAE,SAAW,CAACib,GAAGjb,CAAC,EAC/C,EAAE4a,GAAG5a,CAAC,EAAG,CAAC,UACHmY,EAAE,UAAUnY,CAAC,EACpB,SAAW,CAACoE,EAAGsC,CAAC,IAAK1G,EAAE,QAAS,EAC9BkC,EAAEwE,EAAGtC,EAAG,CAAC,OAEXpE,GAAK,MAAQkC,EAAE,EAAGlC,EAAG,CAAC,EACxB,OAAO,IACR,CACD,IAAIA,EAAG,EAAG,CACR,GAAIA,EAAI8a,GAAG9a,CAAC,EAAGA,EAAG,CAChB,MAAM,EAAImY,EAAE,QAAQ,KAAMnY,CAAC,EAC3B,GAAI,EAAG,CACL,MAAMoB,EAAI,KAAK,CAAC,EAChB,GAAI,CAAC,EACH,OAAOA,EACT,GAAI,IAAM,GACR,OAAO4Z,GAAG5Z,CAAC,EACb,GAAI+W,EAAE,WAAW,CAAC,EAChB,OAAO,EAAE,KAAK,KAAM/W,EAAG,CAAC,EAC1B,GAAI+W,EAAE,SAAS,CAAC,EACd,OAAO,EAAE,KAAK/W,CAAC,EACjB,MAAM,IAAI,UAAU,wCAAwC,CAC7D,CACF,CACF,CACD,IAAIpB,EAAG,EAAG,CACR,GAAIA,EAAI8a,GAAG9a,CAAC,EAAGA,EAAG,CAChB,MAAM,EAAImY,EAAE,QAAQ,KAAMnY,CAAC,EAC3B,MAAO,CAAC,EAAE,GAAK,KAAK,CAAC,IAAM,SAAW,CAAC,GAAKkb,GAAG,KAAM,KAAK,CAAC,EAAG,EAAG,CAAC,GACnE,CACD,MAAO,EACR,CACD,OAAOlb,EAAG,EAAG,CACX,MAAM,EAAI,KACV,IAAIoB,EAAI,GACR,SAASc,EAAE,EAAG,CACZ,GAAI,EAAI4Y,GAAG,CAAC,EAAG,EAAG,CAChB,MAAM1W,EAAI+T,EAAE,QAAQ,EAAG,CAAC,EACxB/T,IAAM,CAAC,GAAK8W,GAAG,EAAG,EAAE9W,CAAC,EAAGA,EAAG,CAAC,KAAO,OAAO,EAAEA,CAAC,EAAGhD,EAAI,GACrD,CACF,CACD,OAAO+W,EAAE,QAAQnY,CAAC,EAAIA,EAAE,QAAQkC,CAAC,EAAIA,EAAElC,CAAC,EAAGoB,CAC5C,CACD,MAAMpB,EAAG,CACP,MAAM,EAAI,OAAO,KAAK,IAAI,EAC1B,IAAI,EAAI,EAAE,OAAQoB,EAAI,GACtB,KAAO,KAAO,CACZ,MAAMc,EAAI,EAAE,CAAC,GACZ,CAAClC,GAAKkb,GAAG,KAAM,KAAKhZ,CAAC,EAAGA,EAAGlC,EAAG,EAAE,KAAO,OAAO,KAAKkC,CAAC,EAAGd,EAAI,GAC7D,CACD,OAAOA,CACR,CACD,UAAUpB,EAAG,CACX,MAAM,EAAI,KAAM,EAAI,GACpB,OAAOmY,EAAE,QAAQ,KAAM,CAAC/W,EAAGc,IAAM,CAC/B,MAAM,EAAIiW,EAAE,QAAQ,EAAGjW,CAAC,EACxB,GAAI,EAAG,CACL,EAAE,CAAC,EAAI6Y,GAAG3Z,CAAC,EAAG,OAAO,EAAEc,CAAC,EACxB,MACD,CACD,MAAMkC,EAAIpE,EAAImb,GAAGjZ,CAAC,EAAI,OAAOA,CAAC,EAAE,OAChCkC,IAAMlC,GAAK,OAAO,EAAEA,CAAC,EAAG,EAAEkC,CAAC,EAAI2W,GAAG3Z,CAAC,EAAG,EAAEgD,CAAC,EAAI,EAC9C,CAAA,EAAG,IACL,CACD,UAAUpE,EAAG,CACX,OAAO,KAAK,YAAY,OAAO,KAAM,GAAGA,CAAC,CAC1C,CACD,OAAOA,EAAG,CACR,MAAM,EAAoB,OAAO,OAAO,IAAI,EAC5C,OAAOmY,EAAE,QAAQ,KAAM,CAAC,EAAG/W,IAAM,CAC/B,GAAK,MAAQ,IAAM,KAAO,EAAEA,CAAC,EAAIpB,GAAKmY,EAAE,QAAQ,CAAC,EAAI,EAAE,KAAK,IAAI,EAAI,EACrE,CAAA,EAAG,CACL,CACD,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAO,OAAO,QAAQ,KAAK,OAAQ,CAAA,EAAE,OAAO,QAAQ,GACrD,CACD,UAAW,CACT,OAAO,OAAO,QAAQ,KAAK,OAAQ,CAAA,EAAE,IAAI,CAAC,CAACnY,EAAG,CAAC,IAAMA,EAAI,KAAO,CAAC,EAAE,KAAK;AAAA,CAC3E,CACE,CACD,IAAK,OAAO,WAAW,GAAI,CACzB,MAAO,cACR,CACD,OAAO,KAAKA,EAAG,CACb,OAAOA,aAAa,KAAOA,EAAI,IAAI,KAAKA,CAAC,CAC1C,CACD,OAAO,OAAOA,KAAM,EAAG,CACrB,MAAM,EAAI,IAAI,KAAKA,CAAC,EACpB,OAAO,EAAE,QAASoB,GAAM,EAAE,IAAIA,CAAC,CAAC,EAAG,CACpC,CACD,OAAO,SAASpB,EAAG,CACjB,MAAMuH,GAAK,KAAKsT,EAAE,EAAI,KAAKA,EAAE,EAAI,CAC/B,UAAW,CAAE,CACd,GAAE,UAAWzZ,EAAI,KAAK,UACvB,SAAS,EAAEsQ,EAAG,CACZ,MAAMtN,EAAI0W,GAAGpJ,CAAC,EACdnK,EAAEnD,CAAC,IAAMgX,GAAGha,EAAGsQ,CAAC,EAAGnK,EAAEnD,CAAC,EAAI,GAC3B,CACD,OAAO+T,EAAE,QAAQnY,CAAC,EAAIA,EAAE,QAAQ,CAAC,EAAI,EAAEA,CAAC,EAAG,IAC5C,CACH,CACAqb,GAAG,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,eAAe,CAAC,EAC1GlD,EAAE,kBAAkBkD,GAAG,UAAW,CAAC,CAAE,MAAOtb,CAAG,EAAEC,IAAM,CACrD,IAAI,EAAIA,EAAE,CAAC,EAAE,YAAW,EAAKA,EAAE,MAAM,CAAC,EACtC,MAAO,CACL,IAAK,IAAMD,EACX,IAAI,EAAG,CACL,KAAK,CAAC,EAAI,CACX,CACL,CACA,CAAC,EACDoY,EAAE,cAAckD,EAAE,EAClB,MAAMC,GAAKD,GACX,SAASE,GAAGxb,EAAGC,EAAG,CAChB,MAAM,EAAI,MAAQ0a,GAAI,EAAI1a,GAAK,EAAGoB,EAAIka,GAAG,KAAK,EAAE,OAAO,EACvD,IAAIpZ,EAAI,EAAE,KACV,OAAOiW,EAAE,QAAQpY,EAAG,SAASqE,EAAG,CAC9BlC,EAAIkC,EAAE,KAAK,EAAGlC,EAAGd,EAAE,UAAW,EAAEpB,EAAIA,EAAE,OAAS,MAAM,CACtD,CAAA,EAAGoB,EAAE,UAAW,EAAEc,CACrB,CACA,SAASsZ,GAAGzb,EAAG,CACb,MAAO,CAAC,EAAEA,GAAKA,EAAE,WACnB,CACA,SAAS0b,GAAG1b,EAAGC,EAAG,EAAG,CACnBoY,GAAE,KAAK,KAAMrY,GAAK,WAAYqY,GAAE,aAAcpY,EAAG,CAAC,EAAG,KAAK,KAAO,eACnE,CACAmY,EAAE,SAASsD,GAAIrD,GAAG,CAChB,WAAY,EACd,CAAC,EACD,SAASsD,GAAG3b,EAAGC,EAAG,EAAG,CACnB,MAAM,EAAI,EAAE,OAAO,eACnB,CAAC,EAAE,QAAU,CAAC,GAAK,EAAE,EAAE,MAAM,EAAID,EAAE,CAAC,EAAIC,EAAE,IAAIoY,GAC5C,mCAAqC,EAAE,OACvC,CAACA,GAAE,gBAAiBA,GAAE,gBAAgB,EAAE,KAAK,MAAM,EAAE,OAAS,GAAG,EAAI,CAAC,EACtE,EAAE,OACF,EAAE,QACF,CACJ,CAAG,CACH,CACA,SAASuD,GAAG5b,EAAG,CACb,MAAMC,EAAI,4BAA4B,KAAKD,CAAC,EAC5C,OAAOC,GAAKA,EAAE,CAAC,GAAK,EACtB,CACA,SAAS4b,GAAG7b,EAAGC,EAAG,CAChBD,EAAIA,GAAK,GACT,MAAM,EAAI,IAAI,MAAMA,CAAC,EAAG,EAAI,IAAI,MAAMA,CAAC,EACvC,IAAIqB,EAAI,EAAGc,EAAI,EAAG,EAClB,OAAOlC,EAAIA,IAAM,OAASA,EAAI,IAAK,SAAS,EAAG,CAC7C,MAAM,EAAI,KAAK,IAAG,EAAI,EAAI,EAAEkC,CAAC,EAC7B,IAAM,EAAI,GAAI,EAAEd,CAAC,EAAI,EAAG,EAAEA,CAAC,EAAI,EAC/B,IAAI4I,EAAI9H,EAAG8W,EAAI,EACf,KAAOhP,IAAM5I,GACX4X,GAAK,EAAEhP,GAAG,EAAGA,EAAIA,EAAIjK,EACvB,GAAIqB,GAAKA,EAAI,GAAKrB,EAAGqB,IAAMc,IAAMA,GAAKA,EAAI,GAAKnC,GAAI,EAAI,EAAIC,EACzD,OACF,MAAMiK,EAAI,GAAK,EAAI,EACnB,OAAOA,EAAI,KAAK,MAAM+O,EAAI,IAAM/O,CAAC,EAAI,MACzC,CACA,CACA,SAAS4R,GAAG9b,EAAGC,EAAG,CAChB,IAAI,EAAI,EAAG,EAAI,IAAMA,EAAGoB,EAAGc,EAC3B,MAAM,EAAI,CAAC4H,EAAGC,EAAI,KAAK,IAAG,IAAO,CAC/B,EAAIA,EAAG3I,EAAI,KAAMc,IAAM,aAAaA,CAAC,EAAGA,EAAI,MAAOnC,EAAE,MAAM,KAAM+J,CAAC,CACtE,EACE,MAAO,CAAC,IAAIA,IAAM,CAChB,MAAMC,EAAI,KAAK,IAAK,EAAEC,EAAID,EAAI,EAC9BC,GAAK,EAAI,EAAEF,EAAGC,CAAC,GAAK3I,EAAI0I,EAAG5H,IAAMA,EAAI,WAAW,IAAM,CACpDA,EAAI,KAAM,EAAEd,CAAC,CACnB,EAAO,EAAI4I,CAAC,GACT,EAAE,IAAM5I,GAAK,EAAEA,CAAC,CAAC,CACpB,CACA,MAAM0a,GAAK,CAAC/b,EAAGC,EAAG,EAAI,IAAM,CAC1B,IAAI,EAAI,EACR,MAAMoB,EAAIwa,GAAG,GAAI,GAAG,EACpB,OAAOC,GAAI3Z,GAAM,CACf,MAAM,EAAIA,EAAE,OAAQkC,EAAIlC,EAAE,iBAAmBA,EAAE,MAAQ,OAAQwE,EAAI,EAAI,EAAGoD,EAAI1I,EAAEsF,CAAC,EAAGqD,EAAI,GAAK3F,EAC7F,EAAI,EACJ,MAAM4F,EAAI,CACR,OAAQ,EACR,MAAO5F,EACP,SAAUA,EAAI,EAAIA,EAAI,OACtB,MAAOsC,EACP,KAAMoD,GAAK,OACX,UAAWA,GAAK1F,GAAK2F,GAAK3F,EAAI,GAAK0F,EAAI,OACvC,MAAO5H,EACP,iBAAkBkC,GAAK,KACvB,CAACpE,EAAI,WAAa,QAAQ,EAAG,EACnC,EACID,EAAEiK,CAAC,CACJ,EAAE,CAAC,CACN,EAAG+R,GAAK,CAAChc,EAAGC,IAAM,CAChB,MAAM,EAAID,GAAK,KACf,MAAO,CAAE,GAAMC,EAAE,CAAC,EAAE,CAClB,iBAAkB,EAClB,MAAOD,EACP,OAAQ,CACZ,CAAG,EAAGC,EAAE,CAAC,CAAC,CACV,EAAGgc,GAAMjc,GAAM,IAAIC,IAAMmY,EAAE,KAAK,IAAMpY,EAAE,GAAGC,CAAC,CAAC,EAAGic,GAAK9B,GAAE,uBAAyB,CAACpa,EAAGC,IAAO,IAAO,EAAI,IAAI,IAAI,EAAGma,GAAE,MAAM,EAAGpa,EAAE,WAAa,EAAE,UAAYA,EAAE,OAAS,EAAE,OAASC,GAAKD,EAAE,OAAS,EAAE,QAC/L,IAAI,IAAIoa,GAAE,MAAM,EAChBA,GAAE,WAAa,kBAAkB,KAAKA,GAAE,UAAU,SAAS,CAC7D,EAAI,IAAM,GAAI+B,GAAK/B,GAAE,sBAEnB,CACE,MAAMpa,EAAGC,EAAG,EAAG,EAAGoB,EAAGc,EAAG,CACtB,MAAM,EAAI,CAACnC,EAAI,IAAM,mBAAmBC,CAAC,CAAC,EAC1CmY,EAAE,SAAS,CAAC,GAAK,EAAE,KAAK,WAAa,IAAI,KAAK,CAAC,EAAE,aAAa,EAAGA,EAAE,SAAS,CAAC,GAAK,EAAE,KAAK,QAAU,CAAC,EAAGA,EAAE,SAAS/W,CAAC,GAAK,EAAE,KAAK,UAAYA,CAAC,EAAGc,IAAM,IAAM,EAAE,KAAK,QAAQ,EAAG,SAAS,OAAS,EAAE,KAAK,IAAI,CAC3M,EACD,KAAKnC,EAAG,CACN,MAAMC,EAAI,SAAS,OAAO,MAAM,IAAI,OAAO,aAAeD,EAAI,WAAW,CAAC,EAC1E,OAAOC,EAAI,mBAAmBA,EAAE,CAAC,CAAC,EAAI,IACvC,EACD,OAAOD,EAAG,CACR,KAAK,MAAMA,EAAG,GAAI,KAAK,IAAG,EAAK,KAAK,CACrC,CACF,EAGD,CACE,OAAQ,CACP,EACD,MAAO,CACL,OAAO,IACR,EACD,QAAS,CACR,CACF,EAEH,SAASoc,GAAGpc,EAAG,CACb,MAAO,8BAA8B,KAAKA,CAAC,CAC7C,CACA,SAASqc,GAAGrc,EAAGC,EAAG,CAChB,OAAOA,EAAID,EAAE,QAAQ,SAAU,EAAE,EAAI,IAAMC,EAAE,QAAQ,OAAQ,EAAE,EAAID,CACrE,CACA,SAASsc,GAAGtc,EAAGC,EAAG,EAAG,CACnB,IAAI,EAAI,CAACmc,GAAGnc,CAAC,EACb,OAAOD,IAAM,GAAK,GAAK,IAAMqc,GAAGrc,EAAGC,CAAC,EAAIA,CAC1C,CACA,MAAMsc,GAAMvc,GAAMA,aAAaub,GAAK,CAAE,GAAGvb,CAAG,EAAGA,EAC/C,SAASwc,GAAGxc,EAAGC,EAAG,CAChBA,EAAIA,GAAK,GACT,MAAM,EAAI,CAAA,EACV,SAAS,EAAE8J,EAAGC,EAAGC,EAAG,EAAG,CACrB,OAAOmO,EAAE,cAAcrO,CAAC,GAAKqO,EAAE,cAAcpO,CAAC,EAAIoO,EAAE,MAAM,KAAK,CAAE,SAAU,CAAC,EAAIrO,EAAGC,CAAC,EAAIoO,EAAE,cAAcpO,CAAC,EAAIoO,EAAE,MAAM,CAAA,EAAIpO,CAAC,EAAIoO,EAAE,QAAQpO,CAAC,EAAIA,EAAE,MAAO,EAAGA,CAC1J,CACD,SAAS3I,EAAE0I,EAAGC,EAAGC,EAAG,EAAG,CACrB,GAAImO,EAAE,YAAYpO,CAAC,GACjB,GAAI,CAACoO,EAAE,YAAYrO,CAAC,EAClB,OAAO,EAAE,OAAQA,EAAGE,EAAG,CAAC,MAE1B,QAAO,EAAEF,EAAGC,EAAGC,EAAG,CAAC,CACtB,CACD,SAAS9H,EAAE4H,EAAGC,EAAG,CACf,GAAI,CAACoO,EAAE,YAAYpO,CAAC,EAClB,OAAO,EAAE,OAAQA,CAAC,CACrB,CACD,SAAS,EAAED,EAAGC,EAAG,CACf,GAAIoO,EAAE,YAAYpO,CAAC,GACjB,GAAI,CAACoO,EAAE,YAAYrO,CAAC,EAClB,OAAO,EAAE,OAAQA,CAAC,MAEpB,QAAO,EAAE,OAAQC,CAAC,CACrB,CACD,SAAS3F,EAAE0F,EAAGC,EAAGC,EAAG,CAClB,GAAIA,KAAKhK,EACP,OAAO,EAAE8J,EAAGC,CAAC,EACf,GAAIC,KAAKjK,EACP,OAAO,EAAE,OAAQ+J,CAAC,CACrB,CACD,MAAMpD,EAAI,CACR,IAAKxE,EACL,OAAQA,EACR,KAAMA,EACN,QAAS,EACT,iBAAkB,EAClB,kBAAmB,EACnB,iBAAkB,EAClB,QAAS,EACT,eAAgB,EAChB,gBAAiB,EACjB,cAAe,EACf,QAAS,EACT,aAAc,EACd,eAAgB,EAChB,eAAgB,EAChB,iBAAkB,EAClB,mBAAoB,EACpB,WAAY,EACZ,iBAAkB,EAClB,cAAe,EACf,eAAgB,EAChB,UAAW,EACX,UAAW,EACX,WAAY,EACZ,YAAa,EACb,WAAY,EACZ,iBAAkB,EAClB,eAAgBkC,EAChB,QAAS,CAAC0F,EAAGC,EAAGC,IAAM5I,EAAEkb,GAAGxS,CAAC,EAAGwS,GAAGvS,CAAC,EAAGC,EAAG,EAAE,CAC/C,EACE,OAAOmO,EAAE,QAAQ,OAAO,KAAK,OAAO,OAAO,CAAA,EAAIpY,EAAGC,CAAC,CAAC,EAAG,SAAS,EAAG,CACjE,MAAMgK,EAAItD,EAAE,CAAC,GAAKtF,EAAG4X,EAAIhP,EAAEjK,EAAE,CAAC,EAAGC,EAAE,CAAC,EAAG,CAAC,EACxCmY,EAAE,YAAYa,CAAC,GAAKhP,IAAM5F,IAAM,EAAE,CAAC,EAAI4U,EACxC,CAAA,EAAG,CACN,CACA,MAAMwD,GAAMzc,GAAM,CAChB,MAAMC,EAAIuc,GAAG,CAAE,EAAExc,CAAC,EAClB,GAAI,CAAE,KAAM,EAAG,cAAe,EAAG,eAAgBqB,EAAG,eAAgBc,EAAG,QAAS,EAAG,KAAMkC,CAAC,EAAKpE,EAC/FA,EAAE,QAAU,EAAIsb,GAAG,KAAK,CAAC,EAAGtb,EAAE,IAAMqZ,GAAGgD,GAAGrc,EAAE,QAASA,EAAE,IAAKA,EAAE,iBAAiB,EAAGD,EAAE,OAAQA,EAAE,gBAAgB,EAAGqE,GAAK,EAAE,IACtH,gBACA,SAAW,MAAMA,EAAE,UAAY,IAAM,KAAOA,EAAE,SAAW,SAAS,mBAAmBA,EAAE,QAAQ,CAAC,EAAI,GAAG,CAC3G,EACE,IAAIsC,EACJ,GAAIyR,EAAE,WAAW,CAAC,GAChB,GAAIgC,GAAE,uBAAyBA,GAAE,+BAC/B,EAAE,eAAe,MAAM,WACfzT,EAAI,EAAE,eAAgB,KAAM,GAAI,CACxC,KAAM,CAACoD,EAAG,GAAGC,CAAC,EAAIrD,EAAIA,EAAE,MAAM,GAAG,EAAE,IAAKsD,GAAMA,EAAE,KAAI,CAAE,EAAE,OAAO,OAAO,EAAI,GAC1E,EAAE,eAAe,CAACF,GAAK,sBAAuB,GAAGC,CAAC,EAAE,KAAK,IAAI,CAAC,CAC/D,EAEH,GAAIoQ,GAAE,wBAA0B,GAAKhC,EAAE,WAAW,CAAC,IAAM,EAAI,EAAEnY,CAAC,GAAI,GAAK,IAAM,IAAMic,GAAGjc,EAAE,GAAG,GAAI,CAC/F,MAAM8J,EAAI1I,GAAKc,GAAKga,GAAG,KAAKha,CAAC,EAC7B4H,GAAK,EAAE,IAAI1I,EAAG0I,CAAC,CAChB,CACD,OAAO9J,CACT,EAAGyc,GAAK,OAAO,eAAiB,IAAKC,GAAKD,IAAM,SAAS1c,EAAG,CAC1D,OAAO,IAAI,QAAQ,SAASgP,EAAGxH,EAAG,CAChC,MAAMnG,EAAIob,GAAGzc,CAAC,EACd,IAAI,EAAIqB,EAAE,KACV,MAAMsQ,EAAI4J,GAAG,KAAKla,EAAE,OAAO,EAAE,YAC7B,GAAI,CAAE,aAAcgD,EAAG,iBAAkB,EAAG,mBAAoB,GAAMhD,EAAG,EAAG4I,EAAGgP,EAAG/O,EAAG6O,EACrF,SAAS5O,GAAI,CACXD,GAAKA,EAAG,EAAE6O,GAAKA,EAAG,EAAE1X,EAAE,aAAeA,EAAE,YAAY,YAAY,CAAC,EAAGA,EAAE,QAAUA,EAAE,OAAO,oBAAoB,QAAS,CAAC,CACvH,CACD,IAAI+I,EAAI,IAAI,eACZA,EAAE,KAAK/I,EAAE,OAAO,YAAa,EAAEA,EAAE,IAAK,EAAE,EAAG+I,EAAE,QAAU/I,EAAE,QACzD,SAAS,GAAI,CACX,GAAI,CAAC+I,EACH,OACF,MAAMG,EAAIgR,GAAG,KACX,0BAA2BnR,GAAKA,EAAE,sBAAuB,CAC1D,EAAEI,EAAI,CACL,KAAM,CAACnG,GAAKA,IAAM,QAAUA,IAAM,OAAS+F,EAAE,aAAeA,EAAE,SAC9D,OAAQA,EAAE,OACV,WAAYA,EAAE,WACd,QAASG,EACT,OAAQvK,EACR,QAASoK,CACjB,EACMuR,GAAG,SAASjR,EAAG,CACbsE,EAAEtE,CAAC,EAAGP,GACP,EAAE,SAASO,EAAG,CACblD,EAAEkD,CAAC,EAAGP,GACd,EAASK,CAAC,EAAGJ,EAAI,IACZ,CACD,cAAeA,EAAIA,EAAE,UAAY,EAAIA,EAAE,mBAAqB,UAAW,CACrE,CAACA,GAAKA,EAAE,aAAe,GAAKA,EAAE,SAAW,GAAK,EAAEA,EAAE,aAAeA,EAAE,YAAY,QAAQ,OAAO,IAAM,IAAM,WAAW,CAAC,CAC5H,EAAOA,EAAE,QAAU,UAAW,CACxBA,IAAM5C,EAAE,IAAI6Q,GAAE,kBAAmBA,GAAE,aAAcrY,EAAGoK,CAAC,CAAC,EAAGA,EAAI,KACnE,EAAOA,EAAE,QAAU,UAAW,CACxB5C,EAAE,IAAI6Q,GAAE,gBAAiBA,GAAE,YAAarY,EAAGoK,CAAC,CAAC,EAAGA,EAAI,IAC1D,EAAOA,EAAE,UAAY,UAAW,CAC1B,IAAI4O,EAAI3X,EAAE,QAAU,cAAgBA,EAAE,QAAU,cAAgB,mBAChE,MAAMmJ,EAAInJ,EAAE,cAAgBoY,GAC5BpY,EAAE,sBAAwB2X,EAAI3X,EAAE,qBAAsBmG,EAAE,IAAI6Q,GAC1DW,EACAxO,EAAE,oBAAsB6N,GAAE,UAAYA,GAAE,aACxCrY,EACAoK,CACR,CAAO,EAAGA,EAAI,IACd,EAAO,IAAM,QAAUuH,EAAE,eAAe,IAAI,EAAG,qBAAsBvH,GAAKgO,EAAE,QAAQzG,EAAE,OAAM,EAAI,SAASqH,EAAGxO,EAAG,CACzGJ,EAAE,iBAAiBI,EAAGwO,CAAC,CACxB,CAAA,EAAGZ,EAAE,YAAY/W,EAAE,eAAe,IAAM+I,EAAE,gBAAkB,CAAC,CAAC/I,EAAE,iBAAkBgD,GAAKA,IAAM,SAAW+F,EAAE,aAAe/I,EAAE,cAAe,IAAM,CAAC4X,EAAGF,CAAC,EAAIgD,GAAG,EAAG,EAAE,EAAG3R,EAAE,iBAAiB,WAAY6O,CAAC,GAAI,GAAK7O,EAAE,SAAW,CAACH,EAAGC,CAAC,EAAI6R,GAAG,CAAC,EAAG3R,EAAE,OAAO,iBAAiB,WAAYH,CAAC,EAAGG,EAAE,OAAO,iBAAiB,UAAWF,CAAC,IAAK7I,EAAE,aAAeA,EAAE,UAAY,EAAKkJ,GAAM,CACxWH,IAAM5C,EAAE,CAAC+C,GAAKA,EAAE,KAAO,IAAImR,GAAG,KAAM1b,EAAGoK,CAAC,EAAIG,CAAC,EAAGH,EAAE,QAASA,EAAI,KACrE,EAAO/I,EAAE,aAAeA,EAAE,YAAY,UAAU,CAAC,EAAGA,EAAE,SAAWA,EAAE,OAAO,QAAU,EAAG,EAAGA,EAAE,OAAO,iBAAiB,QAAS,CAAC,IAC1H,MAAMiJ,EAAIsR,GAAGva,EAAE,GAAG,EAClB,GAAIiJ,GAAK8P,GAAE,UAAU,QAAQ9P,CAAC,IAAM,GAAI,CACtC9C,EAAE,IAAI6Q,GAAE,wBAA0B/N,EAAI,IAAK+N,GAAE,gBAAiBrY,CAAC,CAAC,EAChE,MACD,CACDoK,EAAE,KAAK,GAAK,IAAI,CACpB,CAAG,CACH,EAAGwS,GAAK,CAAC5c,EAAGC,IAAM,CAChB,KAAM,CAAE,OAAQ,CAAC,EAAKD,EAAIA,EAAIA,EAAE,OAAO,OAAO,EAAI,GAClD,GAAIC,GAAK,EAAG,CACV,IAAI,EAAI,IAAI,gBAAmBoB,EAC/B,MAAMc,EAAI,SAAS4H,EAAG,CACpB,GAAI,CAAC1I,EAAG,CACNA,EAAI,GAAIgD,IACR,MAAM2F,EAAID,aAAa,MAAQA,EAAI,KAAK,OACxC,EAAE,MAAMC,aAAaqO,GAAIrO,EAAI,IAAI0R,GAAG1R,aAAa,MAAQA,EAAE,QAAUA,CAAC,CAAC,CACxE,CACP,EACI,IAAI,EAAI/J,GAAK,WAAW,IAAM,CAC5B,EAAI,KAAMkC,EAAE,IAAIkW,GAAE,WAAWpY,CAAC,kBAAmBoY,GAAE,SAAS,CAAC,CAC9D,EAAEpY,CAAC,EACJ,MAAMoE,EAAI,IAAM,CACdrE,IAAM,GAAK,aAAa,CAAC,EAAG,EAAI,KAAMA,EAAE,QAAS+J,GAAM,CACrDA,EAAE,YAAcA,EAAE,YAAY5H,CAAC,EAAI4H,EAAE,oBAAoB,QAAS5H,CAAC,CAC3E,CAAO,EAAGnC,EAAI,KACd,EACIA,EAAE,QAAS+J,GAAMA,EAAE,iBAAiB,QAAS5H,CAAC,CAAC,EAC/C,KAAM,CAAE,OAAQwE,CAAG,EAAG,EACtB,OAAOA,EAAE,YAAc,IAAMyR,EAAE,KAAK/T,CAAC,EAAGsC,CACzC,CACH,EAAGkW,GAAKD,GAAIE,GAAK,UAAW9c,EAAGC,EAAG,CAChC,IAAI,EAAID,EAAE,WACV,GAAI,CAACC,GAAK,EAAIA,EAAG,CACf,MAAMD,EACN,MACD,CACD,IAAI,EAAI,EAAGqB,EACX,KAAO,EAAI,GACTA,EAAI,EAAIpB,EAAG,MAAMD,EAAE,MAAM,EAAGqB,CAAC,EAAG,EAAIA,CACxC,EAAG0b,GAAK,gBAAiB/c,EAAGC,EAAG,CAC7B,gBAAiB,KAAK+c,GAAGhd,CAAC,EACxB,MAAO8c,GAAG,EAAG7c,CAAC,CAClB,EAAG+c,GAAK,gBAAiBhd,EAAG,CAC1B,GAAIA,EAAE,OAAO,aAAa,EAAG,CAC3B,MAAOA,EACP,MACD,CACD,MAAMC,EAAID,EAAE,YACZ,GAAI,CACF,OAAW,CACT,KAAM,CAAE,KAAM,EAAG,MAAO,CAAC,EAAK,MAAMC,EAAE,OACtC,GAAI,EACF,MACF,MAAM,CACP,CACL,QAAY,CACR,MAAMA,EAAE,QACT,CACH,EAAGgd,GAAK,CAACjd,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAI0b,GAAG/c,EAAGC,CAAC,EACjB,IAAIkC,EAAI,EAAG,EAAGkC,EAAKsC,GAAM,CACvB,IAAM,EAAI,GAAI,GAAK,EAAEA,CAAC,EAC1B,EACE,OAAO,IAAI,eAAe,CACxB,MAAM,KAAKA,EAAG,CACZ,GAAI,CACF,KAAM,CAAE,KAAMoD,EAAG,MAAOC,CAAC,EAAK,MAAM3I,EAAE,OACtC,GAAI0I,EAAG,CACL1F,EAAG,EAAEsC,EAAE,QACP,MACD,CACD,IAAIsD,EAAID,EAAE,WACV,GAAI,EAAG,CACL,IAAI,EAAI7H,GAAK8H,EACb,EAAE,CAAC,CACJ,CACDtD,EAAE,QAAQ,IAAI,WAAWqD,CAAC,CAAC,CAC5B,OAAQD,EAAG,CACV,MAAM1F,EAAE0F,CAAC,EAAGA,CACb,CACF,EACD,OAAOpD,EAAG,CACR,OAAOtC,EAAEsC,CAAC,EAAGtF,EAAE,OAAM,CACtB,CACL,EAAK,CACD,cAAe,CACnB,CAAG,CACH,EAAG6b,GAAK,OAAO,OAAS,YAAc,OAAO,SAAW,YAAc,OAAO,UAAY,WAAYC,GAAKD,IAAM,OAAO,gBAAkB,WAAYE,GAAKF,KAAO,OAAO,aAAe,YAAeld,GAAOC,GAAMD,EAAE,OAAOC,CAAC,GAAG,IAAI,WAAa,EAAI,MAAOD,GAAM,IAAI,WAAW,MAAM,IAAI,SAASA,CAAC,EAAE,YAAa,CAAA,GAAIqd,GAAK,CAACrd,KAAMC,IAAM,CACxU,GAAI,CACF,MAAO,CAAC,CAACD,EAAE,GAAGC,CAAC,CACnB,MAAU,CACN,MAAO,EACR,CACH,EAAGqd,GAAKH,IAAME,GAAG,IAAM,CACrB,IAAIrd,EAAI,GACR,MAAMC,EAAI,IAAI,QAAQma,GAAE,OAAQ,CAC9B,KAAM,IAAI,eACV,OAAQ,OACR,IAAI,QAAS,CACX,OAAOpa,EAAI,GAAI,MAChB,CACF,CAAA,EAAE,QAAQ,IAAI,cAAc,EAC7B,OAAOA,GAAK,CAACC,CACf,CAAC,EAAGsd,GAAK,GAAK,KAAMC,GAAKL,IAAME,GAAG,IAAMjF,EAAE,iBAAiB,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,EAAGqF,GAAK,CACvF,OAAQD,KAAQxd,GAAMA,EAAE,KAC1B,EACAkd,KAAQld,GAAM,CACZ,CAAC,OAAQ,cAAe,OAAQ,WAAY,QAAQ,EAAE,QAASC,GAAM,CACnE,CAACwd,GAAGxd,CAAC,IAAMwd,GAAGxd,CAAC,EAAImY,EAAE,WAAWpY,EAAEC,CAAC,CAAC,EAAK,GAAM,EAAEA,CAAC,IAAM,CAAC,EAAG,IAAM,CAChE,MAAM,IAAIoY,GAAE,kBAAkBpY,CAAC,qBAAsBoY,GAAE,gBAAiB,CAAC,CAC/E,EACA,CAAG,CACH,GAAG,IAAI,QAAU,EACjB,MAAMqF,GAAK,MAAO1d,GAAM,CACtB,GAAIA,GAAK,KACP,MAAO,GACT,GAAIoY,EAAE,OAAOpY,CAAC,EACZ,OAAOA,EAAE,KACX,GAAIoY,EAAE,oBAAoBpY,CAAC,EACzB,OAAQ,MAAM,IAAI,QAAQoa,GAAE,OAAQ,CAClC,OAAQ,OACR,KAAMpa,CACZ,CAAK,EAAE,YAAa,GAAE,WACpB,GAAIoY,EAAE,kBAAkBpY,CAAC,GAAKoY,EAAE,cAAcpY,CAAC,EAC7C,OAAOA,EAAE,WACX,GAAIoY,EAAE,kBAAkBpY,CAAC,IAAMA,EAAIA,EAAI,IAAKoY,EAAE,SAASpY,CAAC,EACtD,OAAQ,MAAMod,GAAGpd,CAAC,GAAG,UACzB,EAAG2d,GAAK,MAAO3d,EAAGC,IACNmY,EAAE,eAAepY,EAAE,iBAAkB,CAAA,GACnC0d,GAAGzd,CAAC,EACf2d,GAAKV,KAAO,MAAOld,GAAM,CAC1B,GAAI,CACF,IAAKC,EACL,OAAQ,EACR,KAAM,EACN,OAAQoB,EACR,YAAac,EACb,QAAS,EACT,mBAAoBkC,EACpB,iBAAkBsC,EAClB,aAAcoD,EACd,QAASC,EACT,gBAAiBC,EAAI,cACrB,aAAc,CAClB,EAAMwS,GAAGzc,CAAC,EACR+J,EAAIA,GAAKA,EAAI,IAAI,YAAa,EAAG,OACjC,IAAIG,EAAI2S,GAAG,CAACxb,EAAGc,GAAKA,EAAE,eAAe,EAAG,CAAC,EAAG,EAC5C,MAAMgI,EAAID,GAAKA,EAAE,cAAgB,IAAM,CACrCA,EAAE,YAAW,CACjB,GACE,IAAIE,EACJ,GAAI,CACF,GAAIzD,GAAK2W,IAAM,IAAM,OAAS,IAAM,SAAWlT,EAAI,MAAMuT,GAAG3T,EAAG,CAAC,KAAO,EAAG,CACxE,IAAIQ,EAAI,IAAI,QAAQvK,EAAG,CACrB,OAAQ,OACR,KAAM,EACN,OAAQ,MACT,CAAA,EAAGwK,EACJ,GAAI2N,EAAE,WAAW,CAAC,IAAM3N,EAAID,EAAE,QAAQ,IAAI,cAAc,IAAMR,EAAE,eAAeS,CAAC,EAAGD,EAAE,KAAM,CACzF,KAAM,CAACE,EAAGC,CAAC,EAAIqR,GACb5R,EACA2R,GAAGE,GAAGtV,CAAC,CAAC,CAClB,EACQ,EAAIsW,GAAGzS,EAAE,KAAM+S,GAAI7S,EAAGC,CAAC,CACxB,CACF,CACDyN,EAAE,SAASnO,CAAC,IAAMA,EAAIA,EAAI,UAAY,QACtC,MAAMI,EAAI,gBAAiB,QAAQ,UACnC,EAAI,IAAI,QAAQpK,EAAG,CACjB,GAAG,EACH,OAAQiK,EACR,OAAQ,EAAE,YAAa,EACvB,QAASF,EAAE,UAAW,EAAC,OAAQ,EAC/B,KAAM,EACN,OAAQ,OACR,YAAaK,EAAIJ,EAAI,MAC3B,CAAK,EACD,IAAIK,EAAI,MAAM,MAAM,CAAC,EACrB,MAAMC,EAAIiT,KAAOzT,IAAM,UAAYA,IAAM,YACzC,GAAIyT,KAAOnZ,GAAKkG,GAAKJ,GAAI,CACvB,MAAMK,EAAI,CAAA,EACV,CAAC,SAAU,aAAc,SAAS,EAAE,QAASI,GAAM,CACjDJ,EAAEI,CAAC,EAAIN,EAAEM,CAAC,CAClB,CAAO,EACD,MAAMH,EAAI2N,EAAE,eAAe9N,EAAE,QAAQ,IAAI,gBAAgB,CAAC,EAAG,CAACI,EAAGC,CAAC,EAAItG,GAAK2X,GACzEvR,EACAsR,GAAGE,GAAG5X,CAAC,EAAG,EAAE,CACb,GAAI,GACLiG,EAAI,IAAI,SACN2S,GAAG3S,EAAE,KAAMiT,GAAI7S,EAAG,IAAM,CACtBC,GAAKA,EAAC,EAAIR,GAAKA,EAAC,CAC1B,CAAS,EACDK,CACR,CACK,CACDT,EAAIA,GAAK,OACT,IAAI,EAAI,MAAM0T,GAAGrF,EAAE,QAAQqF,GAAI1T,CAAC,GAAK,MAAM,EAAEO,EAAGtK,CAAC,EACjD,MAAO,CAACuK,GAAKJ,GAAKA,EAAC,EAAI,MAAM,IAAI,QAAQ,CAACK,EAAGC,IAAM,CACjDkR,GAAGnR,EAAGC,EAAG,CACP,KAAM,EACN,QAAS8Q,GAAG,KAAKjR,EAAE,OAAO,EAC1B,OAAQA,EAAE,OACV,WAAYA,EAAE,WACd,OAAQtK,EACR,QAAS,CACjB,CAAO,CACP,CAAK,CACF,OAAQqK,EAAG,CACV,MAAMF,GAAKA,EAAC,EAAIE,GAAKA,EAAE,OAAS,aAAe,SAAS,KAAKA,EAAE,OAAO,EAAI,OAAO,OAC/E,IAAIgO,GAAE,gBAAiBA,GAAE,YAAarY,EAAG,CAAC,EAC1C,CACE,MAAOqK,EAAE,OAASA,CACnB,CACP,EAAQgO,GAAE,KAAKhO,EAAGA,GAAKA,EAAE,KAAMrK,EAAG,CAAC,CAChC,CACH,GAAI6d,GAAK,CACP,KAAMrF,GACN,IAAKmE,GACL,MAAOiB,EACT,EACAxF,EAAE,QAAQyF,GAAI,CAAC7d,EAAGC,IAAM,CACtB,GAAID,EAAG,CACL,GAAI,CACF,OAAO,eAAeA,EAAG,OAAQ,CAAE,MAAOC,CAAC,CAAE,CACnD,MAAY,CACP,CACD,OAAO,eAAeD,EAAG,cAAe,CAAE,MAAOC,CAAC,CAAE,CACrD,CACH,CAAC,EACD,MAAM6d,GAAM9d,GAAM,KAAKA,CAAC,GAAI+d,GAAM/d,GAAMoY,EAAE,WAAWpY,CAAC,GAAKA,IAAM,MAAQA,IAAM,GAAIge,GAAK,CACtF,WAAahe,GAAM,CACjBA,EAAIoY,EAAE,QAAQpY,CAAC,EAAIA,EAAI,CAACA,CAAC,EACzB,KAAM,CAAE,OAAQC,CAAG,EAAGD,EACtB,IAAI,EAAG,EACP,MAAMqB,EAAI,CAAA,EACV,QAASc,EAAI,EAAGA,EAAIlC,EAAGkC,IAAK,CAC1B,EAAInC,EAAEmC,CAAC,EACP,IAAI,EACJ,GAAI,EAAI,EAAG,CAAC4b,GAAG,CAAC,IAAM,EAAIF,IAAI,EAAI,OAAO,CAAC,GAAG,YAAa,CAAA,EAAG,IAAM,QACjE,MAAM,IAAIxF,GAAE,oBAAoB,CAAC,GAAG,EACtC,GAAI,EACF,MACFhX,EAAE,GAAK,IAAMc,CAAC,EAAI,CACnB,CACD,GAAI,CAAC,EAAG,CACN,MAAMA,EAAI,OAAO,QAAQd,CAAC,EAAE,IAC1B,CAAC,CAACgD,EAAGsC,CAAC,IAAM,WAAWtC,CAAC,KAAOsC,IAAM,GAAK,sCAAwC,gCAC1F,EACM,IAAI,EAAI1G,EAAIkC,EAAE,OAAS,EAAI;AAAA,EAC7BA,EAAE,IAAI2b,EAAE,EAAE,KAAK;AAAA,CAClB,EAAI,IAAMA,GAAG3b,EAAE,CAAC,CAAC,EAAI,0BAChB,MAAM,IAAIkW,GACR,wDAA0D,EAC1D,iBACR,CACK,CACD,OAAO,CACR,EACD,SAAUwF,EACZ,EACA,SAASI,GAAGje,EAAG,CACb,GAAIA,EAAE,aAAeA,EAAE,YAAY,mBAAoBA,EAAE,QAAUA,EAAE,OAAO,QAC1E,MAAM,IAAI0b,GAAG,KAAM1b,CAAC,CACxB,CACA,SAASke,GAAGle,EAAG,CACb,OAAOie,GAAGje,CAAC,EAAGA,EAAE,QAAUub,GAAG,KAAKvb,EAAE,OAAO,EAAGA,EAAE,KAAOwb,GAAG,KACxDxb,EACAA,EAAE,gBACH,EAAE,CAAC,OAAQ,MAAO,OAAO,EAAE,QAAQA,EAAE,MAAM,IAAM,IAAMA,EAAE,QAAQ,eAAe,oCAAqC,EAAE,EAAGge,GAAG,WAAWhe,EAAE,SAAW2a,GAAG,OAAO,EAAE3a,CAAC,EAAE,KAAK,SAASwH,EAAG,CACpL,OAAOyW,GAAGje,CAAC,EAAGwH,EAAE,KAAOgU,GAAG,KACxBxb,EACAA,EAAE,kBACFwH,CACN,EAAOA,EAAE,QAAU+T,GAAG,KAAK/T,EAAE,OAAO,EAAGA,CACpC,EAAE,SAASA,EAAG,CACb,OAAOiU,GAAGjU,CAAC,IAAMyW,GAAGje,CAAC,EAAGwH,GAAKA,EAAE,WAAaA,EAAE,SAAS,KAAOgU,GAAG,KAC/Dxb,EACAA,EAAE,kBACFwH,EAAE,QACH,EAAEA,EAAE,SAAS,QAAU+T,GAAG,KAAK/T,EAAE,SAAS,OAAO,IAAK,QAAQ,OAAOA,CAAC,CAC3E,CAAG,CACH,CACA,MAAM2W,GAAK,QAASC,GAAK,GACzB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,QAAQ,EAAE,QAAQ,CAACpe,EAAGC,IAAM,CAChFme,GAAGpe,CAAC,EAAI,SAASwH,EAAG,CAClB,OAAO,OAAOA,IAAMxH,GAAK,KAAOC,EAAI,EAAI,KAAO,KAAOD,CAC1D,CACA,CAAC,EACD,MAAMqe,GAAK,CAAA,EACXD,GAAG,aAAe,SAAS,EAAGpP,EAAGxH,EAAG,CAClC,SAASnG,EAAE,EAAGsQ,EAAG,CACf,MAAO,WAAawM,GAAK,0BAA4B,EAAI,IAAMxM,GAAKnK,EAAI,KAAOA,EAAI,GACpF,CACD,MAAO,CAAC,EAAGmK,EAAGtN,IAAM,CAClB,GAAI,IAAM,GACR,MAAM,IAAIgU,GACRhX,EAAEsQ,EAAG,qBAAuB3C,EAAI,OAASA,EAAI,GAAG,EAChDqJ,GAAE,cACV,EACI,OAAOrJ,GAAK,CAACqP,GAAG1M,CAAC,IAAM0M,GAAG1M,CAAC,EAAI,GAAI,QAAQ,KACzCtQ,EACEsQ,EACA,+BAAiC3C,EAAI,yCACtC,CACP,GAAQ,EAAI,EAAE,EAAG2C,EAAGtN,CAAC,EAAI,EACzB,CACA,EACA+Z,GAAG,SAAW,SAAS,EAAG,CACxB,MAAO,CAACpP,EAAGxH,KAAO,QAAQ,KAAK,GAAGA,CAAC,+BAA+B,CAAC,EAAE,EAAG,GAC1E,EACA,SAAS8W,GAAGte,EAAGC,EAAG,EAAG,CACnB,GAAI,OAAOD,GAAK,SACd,MAAM,IAAIqY,GAAE,4BAA6BA,GAAE,oBAAoB,EACjE,MAAM,EAAI,OAAO,KAAKrY,CAAC,EACvB,IAAIqB,EAAI,EAAE,OACV,KAAOA,KAAM,GAAK,CAChB,MAAMc,EAAI,EAAEd,CAAC,EAAG,EAAIpB,EAAEkC,CAAC,EACvB,GAAI,EAAG,CACL,MAAMkC,EAAIrE,EAAEmC,CAAC,EAAGwE,EAAItC,IAAM,QAAU,EAAEA,EAAGlC,EAAGnC,CAAC,EAC7C,GAAI2G,IAAM,GACR,MAAM,IAAI0R,GAAE,UAAYlW,EAAI,YAAcwE,EAAG0R,GAAE,oBAAoB,EACrE,QACD,CACD,GAAI,IAAM,GACR,MAAM,IAAIA,GAAE,kBAAoBlW,EAAGkW,GAAE,cAAc,CACtD,CACH,CACA,MAAMkG,GAAK,CACT,cAAeD,GACf,WAAYF,EACd,EAAGI,GAAKD,GAAG,WACX,MAAME,EAAG,CACP,YAAYxe,EAAG,CACb,KAAK,SAAWA,EAAG,KAAK,aAAe,CACrC,QAAS,IAAIuZ,GACb,SAAU,IAAIA,EACpB,CACG,CASD,MAAM,QAAQvZ,EAAG,EAAG,CAClB,GAAI,CACF,OAAO,MAAM,KAAK,SAASA,EAAG,CAAC,CAChC,OAAQ,EAAG,CACV,GAAI,aAAa,MAAO,CACtB,IAAIoB,EAAI,CAAA,EACR,MAAM,kBAAoB,MAAM,kBAAkBA,CAAC,EAAIA,EAAI,IAAI,MAC/D,MAAMc,EAAId,EAAE,MAAQA,EAAE,MAAM,QAAQ,QAAS,EAAE,EAAI,GACnD,GAAI,CACF,EAAE,MAAQc,GAAK,CAAC,OAAO,EAAE,KAAK,EAAE,SAASA,EAAE,QAAQ,YAAa,EAAE,CAAC,IAAM,EAAE,OAAS;AAAA,EAC1FA,GAAK,EAAE,MAAQA,CACnB,MAAgB,CACP,CACF,CACD,MAAM,CACP,CACF,CACD,SAASlC,EAAG,EAAG,CACb,OAAOA,GAAK,UAAY,EAAI,GAAK,CAAE,EAAE,EAAE,IAAMA,GAAK,EAAIA,GAAK,CAAA,EAAI,EAAIuc,GAAG,KAAK,SAAU,CAAC,EACtF,KAAM,CAAE,aAAc,EAAG,iBAAkBnb,EAAG,QAASc,CAAG,EAAG,EAC7D,IAAM,QAAUoc,GAAG,cAAc,EAAG,CAClC,kBAAmBC,GAAG,aAAaA,GAAG,OAAO,EAC7C,kBAAmBA,GAAG,aAAaA,GAAG,OAAO,EAC7C,oBAAqBA,GAAG,aAAaA,GAAG,OAAO,CACrD,EAAO,EAAE,EAAGnd,GAAK,OAAS+W,EAAE,WAAW/W,CAAC,EAAI,EAAE,iBAAmB,CAC3D,UAAWA,CACjB,EAAQkd,GAAG,cAAcld,EAAG,CACtB,OAAQmd,GAAG,SACX,UAAWA,GAAG,QACf,EAAE,EAAE,GAAI,EAAE,oBAAsB,SAAW,KAAK,SAAS,oBAAsB,OAAS,EAAE,kBAAoB,KAAK,SAAS,kBAAoB,EAAE,kBAAoB,IAAKD,GAAG,cAAc,EAAG,CAC9L,QAASC,GAAG,SAAS,SAAS,EAC9B,cAAeA,GAAG,SAAS,eAAe,CAC3C,EAAE,EAAE,EAAG,EAAE,QAAU,EAAE,QAAU,KAAK,SAAS,QAAU,OAAO,YAAW,EAC1E,IAAI,EAAIrc,GAAKiW,EAAE,MACbjW,EAAE,OACFA,EAAE,EAAE,MAAM,CAChB,EACIA,GAAKiW,EAAE,QACL,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,QAAQ,EACzD,GAAM,CACL,OAAOjW,EAAE,CAAC,CACX,CACP,EAAO,EAAE,QAAUoZ,GAAG,OAAO,EAAGpZ,CAAC,EAC7B,MAAMkC,EAAI,CAAA,EACV,IAAIsC,EAAI,GACR,KAAK,aAAa,QAAQ,QAAQ,SAASwD,EAAG,CAC5C,OAAOA,EAAE,SAAW,YAAcA,EAAE,QAAQ,CAAC,IAAM,KAAOxD,EAAIA,GAAKwD,EAAE,YAAa9F,EAAE,QAAQ8F,EAAE,UAAWA,EAAE,QAAQ,EACzH,CAAK,EACD,MAAMJ,EAAI,CAAA,EACV,KAAK,aAAa,SAAS,QAAQ,SAASI,EAAG,CAC7CJ,EAAE,KAAKI,EAAE,UAAWA,EAAE,QAAQ,CACpC,CAAK,EACD,IAAIH,EAAGC,EAAI,EAAG,EACd,GAAI,CAACtD,EAAG,CACN,MAAM,EAAI,CAACuX,GAAG,KAAK,IAAI,EAAG,MAAM,EAChC,IAAK,EAAE,QAAQ,MAAM,EAAG7Z,CAAC,EAAG,EAAE,KAAK,MAAM,EAAG0F,CAAC,EAAG,EAAI,EAAE,OAAQC,EAAI,QAAQ,QAAQ,CAAC,EAAGC,EAAI,GACxFD,EAAIA,EAAE,KAAK,EAAEC,GAAG,EAAG,EAAEA,GAAG,CAAC,EAC3B,OAAOD,CACR,CACD,EAAI3F,EAAE,OACN,IAAI6F,EAAI,EACR,IAAKD,EAAI,EAAGA,EAAI,GAAK,CACnB,MAAM,EAAI5F,EAAE4F,GAAG,EAAGE,EAAI9F,EAAE4F,GAAG,EAC3B,GAAI,CACFC,EAAI,EAAEA,CAAC,CACR,OAAQE,EAAG,CACVD,EAAE,KAAK,KAAMC,CAAC,EACd,KACD,CACF,CACD,GAAI,CACFJ,EAAIkU,GAAG,KAAK,KAAMhU,CAAC,CACpB,OAAQ,EAAG,CACV,OAAO,QAAQ,OAAO,CAAC,CACxB,CACD,IAAKD,EAAI,EAAG,EAAIF,EAAE,OAAQE,EAAI,GAC5BD,EAAIA,EAAE,KAAKD,EAAEE,GAAG,EAAGF,EAAEE,GAAG,CAAC,EAC3B,OAAOD,CACR,CACD,OAAO/J,EAAG,CACRA,EAAIuc,GAAG,KAAK,SAAUvc,CAAC,EACvB,MAAM,EAAIqc,GAAGrc,EAAE,QAASA,EAAE,IAAKA,EAAE,iBAAiB,EAClD,OAAOqZ,GAAG,EAAGrZ,EAAE,OAAQA,EAAE,gBAAgB,CAC1C,CACH,CACAmY,EAAE,QAAQ,CAAC,SAAU,MAAO,OAAQ,SAAS,EAAG,SAAS,EAAG,CAC1DqG,GAAG,UAAU,CAAC,EAAI,SAASzP,EAAGxH,EAAG,CAC/B,OAAO,KAAK,QAAQgV,GAAGhV,GAAK,CAAA,EAAI,CAC9B,OAAQ,EACR,IAAKwH,EACL,MAAOxH,GAAK,CAAA,GAAI,IACjB,CAAA,CAAC,CACN,CACA,CAAC,EACD4Q,EAAE,QAAQ,CAAC,OAAQ,MAAO,OAAO,EAAG,SAAS,EAAG,CAC9C,SAASpJ,EAAExH,EAAG,CACZ,OAAO,SAASrF,EAAGwP,EAAGtN,EAAG,CACvB,OAAO,KAAK,QAAQmY,GAAGnY,GAAK,CAAA,EAAI,CAC9B,OAAQ,EACR,QAASmD,EAAI,CACX,eAAgB,qBAC1B,EAAY,CAAE,EACN,IAAKrF,EACL,KAAMwP,CACP,CAAA,CAAC,CACR,CACG,CACD8M,GAAG,UAAU,CAAC,EAAIzP,EAAG,EAAEyP,GAAG,UAAU,EAAI,MAAM,EAAIzP,EAAE,EAAE,CACxD,CAAC,EACD,MAAM0P,GAAKD,GACX,MAAME,EAAG,CACP,YAAY1e,EAAG,CACb,GAAI,OAAOA,GAAK,WACd,MAAM,IAAI,UAAU,8BAA8B,EACpD,IAAI,EACJ,KAAK,QAAU,IAAI,QAAQ,SAAS,EAAG,CACrC,EAAI,CACV,CAAK,EACD,MAAM,EAAI,KACV,KAAK,QAAQ,KAAMoB,GAAM,CACvB,GAAI,CAAC,EAAE,WACL,OACF,IAAIc,EAAI,EAAE,WAAW,OACrB,KAAOA,KAAM,GACX,EAAE,WAAWA,CAAC,EAAEd,CAAC,EACnB,EAAE,WAAa,IAChB,CAAA,EAAG,KAAK,QAAQ,KAAQA,GAAM,CAC7B,IAAIc,EACJ,MAAM,EAAI,IAAI,QAASkC,GAAM,CAC3B,EAAE,UAAUA,CAAC,EAAGlC,EAAIkC,CAC5B,CAAO,EAAE,KAAKhD,CAAC,EACT,OAAO,EAAE,OAAS,UAAW,CAC3B,EAAE,YAAYc,CAAC,CAChB,EAAE,CACJ,EAAElC,EAAE,SAAS,EAAG0R,EAAGtN,EAAG,CACrB,EAAE,SAAW,EAAE,OAAS,IAAIqX,GAAG,EAAG/J,EAAGtN,CAAC,EAAG,EAAE,EAAE,MAAM,EACzD,CAAK,CACF,CAID,kBAAmB,CACjB,GAAI,KAAK,OACP,MAAM,KAAK,MACd,CAID,UAAUpE,EAAG,CACX,GAAI,KAAK,OAAQ,CACfA,EAAE,KAAK,MAAM,EACb,MACD,CACD,KAAK,WAAa,KAAK,WAAW,KAAKA,CAAC,EAAI,KAAK,WAAa,CAACA,CAAC,CACjE,CAID,YAAYA,EAAG,CACb,GAAI,CAAC,KAAK,WACR,OACF,MAAM,EAAI,KAAK,WAAW,QAAQA,CAAC,EACnC,IAAM,IAAM,KAAK,WAAW,OAAO,EAAG,CAAC,CACxC,CACD,eAAgB,CACd,MAAMA,EAAI,IAAI,gBAAmB,EAAK,GAAM,CAC1CA,EAAE,MAAM,CAAC,CACf,EACI,OAAO,KAAK,UAAU,CAAC,EAAGA,EAAE,OAAO,YAAc,IAAM,KAAK,YAAY,CAAC,EAAGA,EAAE,MAC/E,CAKD,OAAO,QAAS,CACd,IAAIA,EACJ,MAAO,CACL,MAAO,IAAI0e,GAAG,SAAStd,EAAG,CACxBpB,EAAIoB,CACZ,CAAO,EACD,OAAQpB,CACd,CACG,CACH,CACA,MAAM2e,GAAKD,GACX,SAASE,GAAG7e,EAAG,CACb,OAAO,SAASgP,EAAG,CACjB,OAAOhP,EAAE,MAAM,KAAMgP,CAAC,CAC1B,CACA,CACA,SAAS8P,GAAG9e,EAAG,CACb,OAAOoY,EAAE,SAASpY,CAAC,GAAKA,EAAE,eAAiB,EAC7C,CACA,MAAM+e,GAAK,CACT,SAAU,IACV,mBAAoB,IACpB,WAAY,IACZ,WAAY,IACZ,GAAI,IACJ,QAAS,IACT,SAAU,IACV,4BAA6B,IAC7B,UAAW,IACX,aAAc,IACd,eAAgB,IAChB,YAAa,IACb,gBAAiB,IACjB,OAAQ,IACR,gBAAiB,IACjB,iBAAkB,IAClB,MAAO,IACP,SAAU,IACV,YAAa,IACb,SAAU,IACV,OAAQ,IACR,kBAAmB,IACnB,kBAAmB,IACnB,WAAY,IACZ,aAAc,IACd,gBAAiB,IACjB,UAAW,IACX,SAAU,IACV,iBAAkB,IAClB,cAAe,IACf,4BAA6B,IAC7B,eAAgB,IAChB,SAAU,IACV,KAAM,IACN,eAAgB,IAChB,mBAAoB,IACpB,gBAAiB,IACjB,WAAY,IACZ,qBAAsB,IACtB,oBAAqB,IACrB,kBAAmB,IACnB,UAAW,IACX,mBAAoB,IACpB,oBAAqB,IACrB,OAAQ,IACR,iBAAkB,IAClB,SAAU,IACV,gBAAiB,IACjB,qBAAsB,IACtB,gBAAiB,IACjB,4BAA6B,IAC7B,2BAA4B,IAC5B,oBAAqB,IACrB,eAAgB,IAChB,WAAY,IACZ,mBAAoB,IACpB,eAAgB,IAChB,wBAAyB,IACzB,sBAAuB,IACvB,oBAAqB,IACrB,aAAc,IACd,YAAa,IACb,8BAA+B,GACjC,EACA,OAAO,QAAQA,EAAE,EAAE,QAAQ,CAAC,CAAC/e,EAAGC,CAAC,IAAM,CACrC8e,GAAG9e,CAAC,EAAID,CACV,CAAC,EACD,MAAMgf,GAAKD,GACX,SAASE,GAAGjf,EAAG,CACb,MAAMC,EAAI,IAAIye,GAAG1e,CAAC,EAAG,EAAI0U,GAAGgK,GAAG,UAAU,QAASze,CAAC,EACnD,OAAOmY,EAAE,OAAO,EAAGsG,GAAG,UAAWze,EAAG,CAAE,WAAY,EAAE,CAAE,EAAGmY,EAAE,OAAO,EAAGnY,EAAG,KAAM,CAAE,WAAY,EAAE,CAAE,EAAG,EAAE,OAAS,SAASoB,EAAG,CACxH,OAAO4d,GAAGzC,GAAGxc,EAAGqB,CAAC,CAAC,CACnB,EAAE,CACL,CACA,MAAM6d,GAAID,GAAGtE,EAAE,EACfuE,GAAE,MAAQR,GACVQ,GAAE,cAAgBxD,GAClBwD,GAAE,YAAcN,GAChBM,GAAE,SAAWzD,GACbyD,GAAE,QAAUf,GACZe,GAAE,WAAapG,GACfoG,GAAE,WAAa7G,GACf6G,GAAE,OAASA,GAAE,cACbA,GAAE,IAAM,SAAS,EAAG,CAClB,OAAO,QAAQ,IAAI,CAAC,CACtB,EACAA,GAAE,OAASL,GACXK,GAAE,aAAeJ,GACjBI,GAAE,YAAc1C,GAChB0C,GAAE,aAAe3D,GACjB2D,GAAE,WAAclf,GAAMwa,GAAGpC,EAAE,WAAWpY,CAAC,EAAI,IAAI,SAASA,CAAC,EAAIA,CAAC,EAC9Dkf,GAAE,WAAalB,GAAG,WAClBkB,GAAE,eAAiBF,GACnBE,GAAE,QAAUA,GACZ,MAAMC,GAAKD,GACX,MAAME,EAAG,CACP,SACA,YAAYnf,EAAG,CACb,KAAK,SAAWkf,GAAG,OAAOlf,CAAC,EAAG,KAAK,SAAS,aAAa,QAAQ,IAC9D,IAAOA,GAAG,cAAc,UAAU,CAAC,EAAG,GACtC,IAAOA,GAAG,cAAc,eAAe,CAAC,EAAG,QAAQ,OAAO,CAAC,EAC7D,EAAE,KAAK,SAAS,aAAa,SAAS,IACpC,IAAOA,GAAG,cAAc,WAAW,CAAC,EAAG,EAAE,QAAU,IAAK,QAAQ,QAAQ,CAAC,GACzE,IAAOA,GAAG,cAAc,gBAAgB,CAAC,EAAG,QAAQ,OAAO,CAAC,EACnE,CACG,CACD,QAAQA,EAAG,CACT,IAAI,EAAI,GACR,MAAM,EAAI,KAAK,SAAS,QAAQA,CAAC,EACjC,OAAO,EAAE,OAAS,IAAM,CACtB,EAAI,EACV,EAAO,EAAE,KAAMoB,GAAM,CACf,GAAI,EACF,MAAM,IAAI,MAAM,WAAW,EAC7B,OAAOA,CACb,CAAK,CACF,CACD,IAAIpB,EAAG,EAAG,CACR,OAAO,KAAK,QAAQ,CAAE,GAAG,EAAG,OAAQ,MAAO,IAAKA,CAAC,CAAE,CACpD,CACD,OAAOA,EAAG,EAAG,CACX,OAAO,KAAK,QAAQ,CAAE,GAAG,EAAG,OAAQ,SAAU,IAAKA,CAAC,CAAE,CACvD,CACD,KAAKA,EAAG,EAAG,CACT,OAAO,KAAK,QAAQ,CAAE,GAAG,EAAG,OAAQ,OAAQ,IAAKA,CAAC,CAAE,CACrD,CACD,QAAQA,EAAG,EAAG,CACZ,OAAO,KAAK,QAAQ,CAAE,GAAG,EAAG,OAAQ,UAAW,IAAKA,CAAC,CAAE,CACxD,CACD,KAAKA,EAAG,EAAG,EAAG,CACZ,OAAO,KAAK,QAAQ,CAAE,GAAG,EAAG,OAAQ,OAAQ,IAAKA,EAAG,KAAM,CAAG,CAAA,CAC9D,CACD,aAAaA,EAAG,EAAG,EAAG,CACpB,OAAO,EAAI,CACT,GAAG,EACH,QAAS,CACP,GAAG,GAAG,QACN,eAAgB,qBACjB,CAIF,EAAE,KAAK,QAAQ,CAAE,GAAG,EAAG,OAAQ,OAAQ,IAAKA,EAAG,KAAM,CAAG,CAAA,CAC1D,CAED,SAASA,EAAG,EAAG,EAAG,CAChB,OAAO,KAAK,SAAS,SAASA,EAAG,EAAG,CAClC,GAAG,CACT,CAAK,CACF,CACD,IAAIA,EAAG,EAAG,EAAG,CACX,OAAO,KAAK,QAAQ,CAAE,GAAG,EAAG,OAAQ,MAAO,IAAKA,EAAG,KAAM,CAAG,CAAA,CAC7D,CACD,MAAMA,EAAG,EAAG,EAAG,CACb,OAAO,KAAK,QAAQ,CAAE,GAAG,EAAG,OAAQ,QAAS,IAAKA,EAAG,KAAM,CAAG,CAAA,CAC/D,CACD,OAAOA,EAAG,CACR,OAAO,KAAK,SAAS,OAAOA,CAAC,CAC9B,CACH,CA+CW,IAAIgM,GAAG,CAChB,iBAAmBjM,GAAM,CACvB,KAAM,CAAE,OAAQC,EAAG,IAAK,EAAG,KAAM,CAAG,EAAGD,EACvC,OAAO0S,GAAG,CAAE,OAAQzS,EAAG,IAAK,EAAG,KAAM,CAAC,CAAE,CACzC,CACH,CAAC,EA0KD,SAASof,GAAGrf,EAAGC,EAAI,CAAC,EAAG,IAAM,GAAK,EAAG,CACnC,MAAM,EAAID,EAAE,OACZ,IAAI,EAAI,KAAK,MAAM,EAAI,CAAC,EACxB,KAAO,EAAI,GAAK,CACd,QAASqB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMc,EAAInC,EAAEqB,CAAC,EACb,IAAI,EAAIA,EACR,KAAO,GAAK,GAAK,CAACpB,EAAED,EAAE,EAAI,CAAC,EAAGmC,CAAC,GAC7BnC,EAAE,CAAC,EAAIA,EAAE,EAAI,CAAC,EAAG,GAAK,EACxBA,EAAE,CAAC,EAAImC,CACR,CACD,EAAI,KAAK,MAAM,EAAI,CAAC,CACrB,CACH,CAqIA,SAASmd,GAAGtf,EAAGC,EAAG,CAChB,MAAM,EAAI,OAAOA,GAAG,gBAAkB,SAAW,KAAK,IAAIA,EAAE,eAAgB,CAAC,EAAI,GAAI,EAAI,OAAOA,GAAG,qBAAuB,SAAW,KAAK,IAAIA,EAAE,oBAAqB,CAAC,EAAI,GAC1K,SAASoB,EAAEsF,EAAGoD,EAAI,GAAI,CACpB,OAAO9G,GAAG0D,CAAC,GAAKnD,GAAGmD,CAAC,GAAKzD,GAAGyD,CAAC,EAAI,CAAE,MAAOA,EAAG,UAAWP,IAAM,EAAG2D,GAAK,OAAO,UAAU,eAAe,KAAKpD,EAAG,WAAW,EAAIA,EAAI,CAC/H,GAAGA,EACH,UAAWP,GAAI,CACrB,CACG,CACD,IAAIjE,EAAId,EAAErB,EAAG,EAAE,EACf,SAAS,GAAI,CACX,IAAI2G,EAAI,GACR,OAAQ,GAAK,GAAKP,GAAI,EAAG1B,GAAEvC,EAAE,UAAW,CAAC,EAAI,EAAI,KAAO,GAAK,GAAKiE,KAAO,KAAOO,EAAI,IAAKA,IAAMxE,EAAE,MAAQ,QAASA,CACnH,CACD,SAASkC,EAAEsC,EAAG,CACZ,OAAOxE,EAAId,EAAEsF,EAAG,EAAE,CACnB,CACD,MAAO,CACL,IAAK,EACL,IAAKtC,CACT,CACA,CAkBA,SAASkb,GAAGvf,EAAGC,EAAG,CAChB,IAAI,EAAID,EACR,MAAM,EAAIyN,KACV,MAAO,CACL,SAAU,IAAM,EAChB,SAAWpM,GAAM,CACf,MAAMc,EAAI,OAAOd,GAAK,WAAaA,EAAE,CAAC,EAAIA,EAC1C,OAAO,GAAG,EAAGc,CAAC,GAAKlC,GAAG,cAAgB,CAACA,EAAE,aAAakC,CAAC,IAAM,EAAIA,EAAG,EAAE,KAAK,CAAC,EAC7E,EACD,UAAYd,GAAM,CAChBoG,GAAG,IAAMpG,EAAE,CAAC,CAAC,EACb,MAAMc,EAAI,EAAE,UAAW,GAAM,CAC3BsF,GAAG,IAAMpG,EAAE,CAAC,CAAC,CACrB,CAAO,EACD,MAAO,IAAMc,EAAC,CACf,CACL,CACA,CACA,SAASqd,GAAGxf,EAAG,CACb,MAAMC,EAAID,EAAE,WAAa,GACzB,IAAI,EAAIA,EAAE,QACV,GAAIA,EAAE,SACJ,OAAOA,EAAE,SAASwf,EAAE,EAAE,CAAE,QAAS,EAAG,UAAWvf,CAAC,CAAE,EACpD,MAAM,EAAIsf,GAAGtf,CAAC,EAAGoB,EAAK,GAAM,CAC1B,MAAMgD,EAAI,EAAE,EAAE,SAAU,EAAE,CAAC,EAC3B,EAAE,SAASA,CAAC,CAChB,EAAKlC,EAAK,GAAM,CACZ,EAAI,EAAGd,EAAE,CAAE,KAAM,OAAQ,CAAA,CAAE,CAC/B,EACE,OAAOA,EAAE,CAAE,KAAM,OAAM,CAAI,CAAA,EAAG,CAC5B,SAAU,EAAE,SACZ,SAAUA,EACV,UAAW,EAAE,UACb,eAAgBc,CACpB,CACA,CACA,SAASsd,GAAGzf,EAAGC,EAAI,GAAI,CACrB,MAAM,EAAI,OAAO,KAAKD,CAAC,EACvB,MAAO,CAAC,EAAI,CAAE,EAAEqB,IAAM,CACpB,MAAMc,EAAIlC,EAAI,CAAE,GAAG,CAAC,EAAK,EACzB,UAAW,KAAK,EAAG,CACjB,MAAMoE,EAAIrE,EAAE,CAAC,EAAEmC,EAAE,CAAC,GAAK,GAAId,CAAC,EAC5B,GAAIgD,IAAM,OACR,MAAM,IAAI,MAAM,YAAY,CAAC,sBAAsB,EACrDlC,EAAE,CAAC,EAAIkC,CACR,CACD,OAAOlC,CACX,CACA,CACA,SAASud,MAAM1f,EAAG,CAChB,OAAQC,GAAO,GAAM,CACnB,MAAM,EAAIA,EAAE,CAAC,EACb,IAAIoB,EAAI,EAAE,SACV,MAAMc,EAAI,CAAE,SAAU,EAAE,SAAU,SAAUd,CAAC,EAAI,EAAIrB,EAAE,IAAKqE,GAAMA,EAAElC,CAAC,CAAC,EACtE,OAAOd,EAAI+F,GAAG,GAAG,CAAC,EAAE/F,CAAC,EAAG,EAAE,SAAWA,EAAG,CAC5C,CACA,CACA,SAASse,GAAG3f,EAAG,CACb,MAAMC,EAAI,IAAIgR,GAAG,MAAM,EAAG,EAAI,IAAIF,GAClC,IAAI,EAAI,KAAM1P,EAAI,GAAIc,EAAI,GAC1B,MAAO,CACL,WAAW,EAAG,CACZ,OAAOd,EAAKgD,GAAMA,GAAKhD,EAAI,GAAIpB,EAAE,KAAK,EAAE,SAAU,CAAA,EAAIoE,GAAOsC,GAAM,CACjE,MAAMoD,EAAI1F,EAAEsC,CAAC,EACb,OAAO1G,EAAE,KAAK,EAAE,SAAQ,CAAE,EAAG,EAAE,KAAK0G,CAAC,EAAGoD,CAChD,EACK,EAED,IAAI,EAAG1F,EAAG,CACR,GAAI,CAAChD,EACH,MAAM,IAAI,MACR,yDACV,EACM,GAAIc,EACF,MAAM,IAAI,MAAM,0BAA0B,EAC5C,OAAO,IAAM,EAAI,EAAE,EAAGlC,EAAG,CACvB,GAAGD,GAAG,cAAgB,CAAE,EACxB,SAAUqE,EAAE,QAEb,CAAA,EAAE,KAIDgO,GAAG,CAAC1L,EAAGoD,KAAO6C,GAAG,eAAgBjG,CAAC,EAAGoD,EAAE,CACxC,EAAC,UAAU,CACV,KAAKpD,EAAG,CACNtC,EAAE,SAASsC,CAAC,CACb,EACD,MAAMA,EAAG,CACP,QAAQ,MAAM,qBAAsBA,CAAC,CACtC,CACT,CAAO,EAAG,EACL,EACD,SAAU,CACRxE,EAAI,GAAI,GAAG,YAAW,EAAI,EAAI,KAAM,EAAE,SAAQ,EAAIlC,EAAE,SAAQ,CAC7D,CACL,CACA,CAcK,MAAC2f,GAAM5f,GAAM,CAChB,IAAIC,EAAI,EACR,OAAQ,GAAO,GAAM,CACnB4M,GAAG,MAAM,OAAO,EAAE5M,CAAC,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO,EAAGyM,GAAG,WAAWP,GAAG,CAAC,CAAC,EAAE,EAAGO,GAAG,cAAcP,GAAGnM,EAAE,SAAU,CAAA,CAAC,EAAE,EAAG,EAAE,CAAC,EAAG0M,GAAG,cAAcP,GAAGnM,EAAE,SAAQ,CAAE,CAAC,EAAE,EAAG6M,GAAG,KACxK,CACA,EAAGgT,GAAM7f,GAAOC,GAAO,GAAM,CAC3B,GAAI,CACFA,EAAE,CAAC,CACJ,OAAQ,EAAG,CACV,MAAMyM,GAAG,gBAAgB,CAAC,EAAE,EAAG,CAChC,CACH,EAoCI,IAAAoT,GAAK,KAAM,CACb,aAAc,CACZ,KAAK,UAA4B,IAAI,IAAO,KAAK,UAAY,KAAK,UAAU,KAAK,IAAI,CACtF,CACD,UAAU9f,EAAG,CACX,OAAO,KAAK,UAAU,IAAIA,CAAC,EAAG,KAAK,YAAW,EAAI,IAAM,CACtD,KAAK,UAAU,OAAOA,CAAC,EAAG,KAAK,eACrC,CACG,CACD,cAAe,CACb,OAAO,KAAK,UAAU,KAAO,CAC9B,CACD,aAAc,CACb,CACD,eAAgB,CACf,CACH,EAAG+f,GAAK,cAAcD,EAAG,CACvB,GACA,GACA,GACA,aAAc,CACZ,QAAS,KAAK,GAAM,GAAM,CACxB,GAAI,OAAO,OAAS,KAAO,OAAO,iBAAkB,CAClD,MAAM7f,EAAI,IAAM,IAChB,OAAO,OAAO,iBAAiB,mBAAoBA,EAAG,EAAE,EAAG,IAAM,CAC/D,OAAO,oBAAoB,mBAAoBA,CAAC,CAC1D,CACO,CACP,CACG,CACD,aAAc,CACZ,KAAK,IAAM,KAAK,iBAAiB,KAAK,EAAE,CACzC,CACD,eAAgB,CACd,KAAK,aAAc,IAAK,KAAK,KAAM,EAAE,KAAK,GAAK,OAChD,CACD,iBAAiB,EAAG,CAClB,KAAK,GAAK,EAAG,KAAK,OAAQ,KAAK,GAAK,EAAGA,GAAM,CAC3C,OAAOA,GAAK,UAAY,KAAK,WAAWA,CAAC,EAAI,KAAK,SACxD,CAAK,CACF,CACD,WAAW,EAAG,CACZ,KAAK,KAAO,IAAM,KAAK,GAAK,EAAG,KAAK,QAAO,EAC5C,CACD,SAAU,CACR,MAAM,EAAI,KAAK,YACf,KAAK,UAAU,QAASA,GAAM,CAC5BA,EAAE,CAAC,CACT,CAAK,CACF,CACD,WAAY,CACV,OAAO,OAAO,KAAK,IAAM,UAAY,KAAK,GAAK,WAAW,UAAU,kBAAoB,QACzF,CACH,EAAQ,IAAI8f,GA+bT,IAAWC,GAAK,cAAcF,EAAG,CAClC,GAAK,GACL,GACA,GACA,aAAc,CACZ,QAAS,KAAK,GAAM9f,GAAM,CACxB,GAAI,OAAO,OAAS,KAAO,OAAO,iBAAkB,CAClD,MAAMC,EAAI,IAAMD,EAAE,EAAE,EAAG,EAAI,IAAMA,EAAE,EAAE,EACrC,OAAO,OAAO,iBAAiB,SAAUC,EAAG,EAAE,EAAG,OAAO,iBAAiB,UAAW,EAAG,EAAE,EAAG,IAAM,CAChG,OAAO,oBAAoB,SAAUA,CAAC,EAAG,OAAO,oBAAoB,UAAW,CAAC,CAC1F,CACO,CACP,CACG,CACD,aAAc,CACZ,KAAK,IAAM,KAAK,iBAAiB,KAAK,EAAE,CACzC,CACD,eAAgB,CACd,KAAK,aAAc,IAAK,KAAK,KAAM,EAAE,KAAK,GAAK,OAChD,CACD,iBAAiBD,EAAG,CAClB,KAAK,GAAKA,EAAG,KAAK,KAAM,EAAE,KAAK,GAAKA,EAAE,KAAK,UAAU,KAAK,IAAI,CAAC,CAChE,CACD,UAAUA,EAAG,CACX,KAAK,KAAOA,IAAM,KAAK,GAAKA,EAAG,KAAK,UAAU,QAASgP,GAAM,CAC3DA,EAAEhP,CAAC,CACJ,CAAA,EACF,CACD,UAAW,CACT,OAAO,KAAK,EACb,CACH,EAAQ,IAAIggB,GA8gDP,MAACC,GAAK,eAAgBC,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAClG,UAAW,KACX,QAASD,EACX,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,CAAC,EAAGE,GAAK,wBAAyBC,GAAK,mCAAoCC,GAAK,mCAAoCC,GAAqB,OAAO,OAAuB,OAAO,eAAe,CACrO,UAAW,KACX,QAASH,GACT,OAAQC,GACR,QAASC,EACX,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,CAAC,EAa3C,SAASE,IAAK,CACZ,MAAO,CACL,GAAGL,GACH,GAAyBI,EAC7B,CACA,CAMA,IAAIE,GACJ,SAASC,EAAEzgB,EAAGC,EAAG,EAAG,CAClB,SAAS,EAAEoE,EAAGsC,EAAG,CACf,GAAItC,EAAE,MAAQ,OAAO,eAAeA,EAAG,OAAQ,CAC7C,MAAO,CACL,IAAKsC,EACL,OAAQ,EACR,OAAwB,IAAI,GAC7B,EACD,WAAY,EACb,CAAA,EAAGtC,EAAE,KAAK,OAAO,IAAIrE,CAAC,EACrB,OACFqE,EAAE,KAAK,OAAO,IAAIrE,CAAC,EAAGC,EAAEoE,EAAGsC,CAAC,EAC5B,MAAMoD,EAAI,EAAE,UAAWC,EAAI,OAAO,KAAKD,CAAC,EACxC,QAASE,EAAI,EAAGA,EAAID,EAAE,OAAQC,IAAK,CACjC,MAAM,EAAID,EAAEC,CAAC,EACb,KAAK5F,IAAMA,EAAE,CAAC,EAAI0F,EAAE,CAAC,EAAE,KAAK1F,CAAC,EAC9B,CACF,CACD,MAAMhD,EAAI,GAAG,QAAU,OACvB,MAAMc,UAAUd,CAAE,CACjB,CACD,OAAO,eAAec,EAAG,OAAQ,CAAE,MAAOnC,CAAC,CAAE,EAC7C,SAAS,EAAEqE,EAAG,CACZ,IAAIsC,EACJ,MAAMoD,EAAI,GAAG,OAAS,IAAI5H,EAAM,KAChC,EAAE4H,EAAG1F,CAAC,GAAIsC,EAAIoD,EAAE,MAAM,WAAapD,EAAE,SAAW,CAAE,GAClD,UAAWqD,KAAKD,EAAE,KAAK,SACrBC,IACF,OAAOD,CACR,CACD,OAAO,OAAO,eAAe,EAAG,OAAQ,CAAE,MAAO,CAAG,CAAA,EAAG,OAAO,eAAe,EAAG,OAAO,YAAa,CAClG,MAAQ1F,GAAM,GAAG,QAAUA,aAAa,EAAE,OAAS,GAAKA,GAAG,MAAM,QAAQ,IAAIrE,CAAC,CAClF,CAAG,EAAG,OAAO,eAAe,EAAG,OAAQ,CAAE,MAAOA,EAAG,EAAG,CACtD,CACA,MAAM0gB,WAAW,KAAM,CACrB,aAAc,CACZ,MAAM,0EAA0E,CACjF,CACH,CACA,MAAMC,WAAW,KAAM,CACrB,YAAY1gB,EAAG,CACb,MAAM,uDAAuDA,CAAC,EAAE,EAAG,KAAK,KAAO,gBAChF,CACH,EACCugB,GAAK,YAAY,qBAAuBA,GAAG,mBAAqB,CAAE,GACnE,MAAMI,GAAK,WAAW,mBACtB,SAASC,GAAG7gB,EAAG,CACb,OAAOA,GAAK,OAAO,OAAO4gB,GAAI5gB,CAAC,EAAG4gB,EACpC,CACA,SAASE,GAAG9gB,EAAG,CACb,MAAMC,EAAI,OAAO,OAAOD,CAAC,EAAE,OAAQwH,GAAM,OAAOA,GAAK,QAAQ,EAC7D,OAAO,OAAO,QAAQxH,CAAC,EAAE,OAAO,CAAC,CAACwH,EAAGnG,CAAC,IAAMpB,EAAE,QAAQ,CAACuH,CAAC,IAAM,EAAE,EAAE,IAAI,CAAC,CAACA,EAAGnG,CAAC,IAAMA,CAAC,CACrF,CACA,SAAS0f,GAAG/gB,EAAGC,EAAG,CAChB,OAAO,OAAOA,GAAK,SAAWA,EAAE,SAAQ,EAAKA,CAC/C,CACA,SAAS+gB,GAAGhhB,EAAG,CACb,MAAO,CACL,IAAI,OAAQ,CACV,CACE,MAAMC,EAAID,IACV,OAAO,OAAO,eAAe,KAAM,QAAS,CAAE,MAAOC,EAAG,EAAGA,CAC5D,CACF,CACL,CACA,CACA,SAASghB,GAAGjhB,EAAG,CACb,OAAOA,GAAK,IACd,CACA,SAASkhB,GAAGlhB,EAAG,CACb,MAAMC,EAAID,EAAE,WAAW,GAAG,EAAI,EAAI,EAAG,EAAIA,EAAE,SAAS,GAAG,EAAIA,EAAE,OAAS,EAAIA,EAAE,OAC5E,OAAOA,EAAE,MAAMC,EAAG,CAAC,CACrB,CACA,SAASkhB,GAAGnhB,EAAGC,EAAG,CAChB,MAAM,EAAID,EAAIC,EAAG,EAAI,KAAK,MAAM,CAAC,EAAGoB,EAAI,OAAO,QAAU,KAAK,IAAI,KAAK,IAAI,CAAC,EAAG,CAAC,EAChF,OAAO,KAAK,IAAI,EAAI,CAAC,EAAIA,EAAI,EAAI,EAAI,CACvC,CACA,MAAM+f,GAAqB,OAAO,YAAY,EAC9C,SAASC,GAAErhB,EAAGC,EAAG,EAAG,CAClB,IAAI,EACJ,OAAO,eAAeD,EAAGC,EAAG,CAC1B,KAAM,CACJ,GAAI,IAAMmhB,GACR,OAAO,IAAM,SAAW,EAAIA,GAAI,EAAI,KAAM,CAC7C,EACD,IAAI/f,EAAG,CACL,OAAO,eAAerB,EAAGC,EAAG,CAC1B,MAAOoB,CAEf,CAAO,CACF,EACD,aAAc,EAClB,CAAG,CACH,CACA,SAASigB,GAAGthB,EAAGC,EAAG,EAAG,CACnB,OAAO,eAAeD,EAAGC,EAAG,CAC1B,MAAO,EACP,SAAU,GACV,WAAY,GACZ,aAAc,EAClB,CAAG,CACH,CACA,SAASshB,MAAMvhB,EAAG,CAChB,MAAMC,EAAI,CAAA,EACV,UAAW,KAAKD,EAAG,CACjB,MAAM,EAAI,OAAO,0BAA0B,CAAC,EAC5C,OAAO,OAAOC,EAAG,CAAC,CACnB,CACD,OAAO,OAAO,iBAAiB,CAAE,EAAEA,CAAC,CACtC,CACA,SAASuhB,GAAGxhB,EAAG,CACb,OAAO,KAAK,UAAUA,CAAC,CACzB,CACA,SAASyhB,GAAGzhB,EAAG,CACb,OAAOA,EAAE,YAAa,EAAC,KAAI,EAAG,QAAQ,YAAa,EAAE,EAAE,QAAQ,WAAY,GAAG,EAAE,QAAQ,WAAY,EAAE,CACxG,CACA,MAAM0hB,GAAK,sBAAuB,MAAQ,MAAM,kBAAoB,IAAI1hB,IAAM,CAC9E,EACA,SAAS2hB,GAAG3hB,EAAG,CACb,OAAO,OAAOA,GAAK,UAAYA,IAAM,MAAQ,CAAC,MAAM,QAAQA,CAAC,CAC/D,CACA,MAAM4hB,GAAqBZ,GAAG,IAAM,CAClC,GAAIJ,GAAG,SAAW,OAAO,UAAY,KAAO,WAAW,WAAW,SAAS,YAAY,EACrF,MAAO,GACT,GAAI,CACF,MAAM5gB,EAAI,SACV,OAAO,IAAIA,EAAE,EAAE,EAAG,EACtB,MAAU,CACN,MAAO,EACR,CACH,CAAC,EACD,SAAS6hB,GAAG7hB,EAAG,CACb,GAAI2hB,GAAG3hB,CAAC,IAAM,GACZ,MAAO,GACT,MAAMC,EAAID,EAAE,YACZ,GAAIC,IAAM,QAAU,OAAOA,GAAK,WAC9B,MAAO,GACT,MAAM,EAAIA,EAAE,UACZ,MAAO,EAAE0hB,GAAG,CAAC,IAAM,IAAM,OAAO,UAAU,eAAe,KAAK,EAAG,eAAe,IAAM,GACxF,CACA,SAASG,GAAG9hB,EAAG,CACb,OAAO6hB,GAAG7hB,CAAC,EAAI,CAAE,GAAGA,CAAC,EAAK,MAAM,QAAQA,CAAC,EAAI,CAAC,GAAGA,CAAC,EAAIA,aAAa,IAAM,IAAI,IAAIA,CAAC,EAAIA,aAAa,IAAM,IAAI,IAAIA,CAAC,EAAIA,CACxH,CACA,MAAM+hB,GAAqB,IAAI,IAAI,CAAC,SAAU,SAAU,QAAQ,CAAC,EACjE,SAASC,GAAGhiB,EAAG,CACb,OAAOA,EAAE,QAAQ,sBAAuB,MAAM,CAChD,CACA,SAASiiB,GAAGjiB,EAAGC,EAAG,EAAG,CACnB,MAAM,EAAI,IAAID,EAAE,KAAK,OAAOC,GAAKD,EAAE,KAAK,GAAG,EAC3C,OAAQ,CAACC,GAAK,GAAG,UAAY,EAAE,KAAK,OAASD,GAAI,CACnD,CACA,SAASkiB,GAAEliB,EAAG,CACZ,MAAMC,EAAID,EACV,GAAI,CAACC,EACH,MAAO,GACT,GAAI,OAAOA,GAAK,SACd,MAAO,CAAE,MAAO,IAAMA,GACxB,GAAIA,GAAG,UAAY,OAAQ,CACzB,GAAIA,GAAG,QAAU,OACf,MAAM,IAAI,MAAM,kDAAkD,EACpEA,EAAE,MAAQA,EAAE,OACb,CACD,OAAO,OAAOA,EAAE,QAAS,OAAOA,EAAE,OAAS,SAAW,CAAE,GAAGA,EAAG,MAAO,IAAMA,EAAE,KAAK,EAAKA,CACzF,CACA,SAASkiB,GAAGniB,EAAG,CACb,OAAO,OAAO,KAAKA,CAAC,EAAE,OAAQC,GAAMD,EAAEC,CAAC,EAAE,KAAK,QAAU,YAAcD,EAAEC,CAAC,EAAE,KAAK,SAAW,UAAU,CACvG,CACA,MAAMmiB,GAAK,CACT,QAAS,CAAC,OAAO,iBAAkB,OAAO,gBAAgB,EAC1D,MAAO,CAAC,YAAa,UAAU,EAC/B,OAAQ,CAAC,EAAG,UAAU,EACtB,QAAS,CAAC,sBAAuB,oBAAoB,EACrD,QAAS,CAAC,CAAC,OAAO,UAAW,OAAO,SAAS,CAC/C,EACA,SAASC,GAAGriB,EAAGC,EAAG,CAChB,MAAM,EAAID,EAAE,KAAK,IAAK,EAAI,EAAE,OAC5B,GAAI,GAAK,EAAE,OAAS,EAClB,MAAM,IAAI,MAAM,iEAAiE,EACnF,MAAM,EAAIuhB,GAAGvhB,EAAE,KAAK,IAAK,CACvB,IAAI,OAAQ,CACV,MAAM2R,EAAI,CAAA,EACV,UAAWtN,KAAKpE,EAAG,CACjB,GAAI,EAAEoE,KAAK,EAAE,OACX,MAAM,IAAI,MAAM,sBAAsBA,CAAC,GAAG,EAC5CpE,EAAEoE,CAAC,IAAMsN,EAAEtN,CAAC,EAAI,EAAE,MAAMA,CAAC,EAC1B,CACD,OAAOid,GAAG,KAAM,QAAS3P,CAAC,EAAGA,CAC9B,EACD,OAAQ,CAAE,CACd,CAAG,EACD,OAAOsQ,GAAGjiB,EAAG,CAAC,CAChB,CACA,SAASsiB,GAAGtiB,EAAGC,EAAG,CAChB,MAAM,EAAID,EAAE,KAAK,IAAK,EAAI,EAAE,OAC5B,GAAI,GAAK,EAAE,OAAS,EAClB,MAAM,IAAI,MAAM,iEAAiE,EACnF,MAAM,EAAIuhB,GAAGvhB,EAAE,KAAK,IAAK,CACvB,IAAI,OAAQ,CACV,MAAM2R,EAAI,CAAE,GAAG3R,EAAE,KAAK,IAAI,OAC1B,UAAWqE,KAAKpE,EAAG,CACjB,GAAI,EAAEoE,KAAK,EAAE,OACX,MAAM,IAAI,MAAM,sBAAsBA,CAAC,GAAG,EAC5CpE,EAAEoE,CAAC,GAAK,OAAOsN,EAAEtN,CAAC,CACnB,CACD,OAAOid,GAAG,KAAM,QAAS3P,CAAC,EAAGA,CAC9B,EACD,OAAQ,CAAE,CACd,CAAG,EACD,OAAOsQ,GAAGjiB,EAAG,CAAC,CAChB,CACA,SAASuiB,GAAGviB,EAAGC,EAAG,CAChB,GAAI,CAAC4hB,GAAG5hB,CAAC,EACP,MAAM,IAAI,MAAM,kDAAkD,EACpE,MAAM,EAAID,EAAE,KAAK,IAAI,OACrB,GAAI,GAAK,EAAE,OAAS,EAAG,CACrB,MAAM,EAAIA,EAAE,KAAK,IAAI,MACrB,UAAW2R,KAAK1R,EACd,GAAI,OAAO,yBAAyB,EAAG0R,CAAC,IAAM,OAC5C,MAAM,IAAI,MAAM,8FAA8F,CACnH,CACD,MAAMtQ,EAAIkgB,GAAGvhB,EAAE,KAAK,IAAK,CACvB,IAAI,OAAQ,CACV,MAAM,EAAI,CAAE,GAAGA,EAAE,KAAK,IAAI,MAAO,GAAGC,GACpC,OAAOqhB,GAAG,KAAM,QAAS,CAAC,EAAG,CAC9B,CACL,CAAG,EACD,OAAOW,GAAGjiB,EAAGqB,CAAC,CAChB,CACA,SAASmhB,GAAGxiB,EAAGC,EAAG,CAChB,GAAI,CAAC4hB,GAAG5hB,CAAC,EACP,MAAM,IAAI,MAAM,sDAAsD,EACxE,MAAM,EAAIshB,GAAGvhB,EAAE,KAAK,IAAK,CACvB,IAAI,OAAQ,CACV,MAAM,EAAI,CAAE,GAAGA,EAAE,KAAK,IAAI,MAAO,GAAGC,GACpC,OAAOqhB,GAAG,KAAM,QAAS,CAAC,EAAG,CAC9B,CACL,CAAG,EACD,OAAOW,GAAGjiB,EAAG,CAAC,CAChB,CACA,SAASyiB,GAAGziB,EAAGC,EAAG,CAChB,GAAID,EAAE,KAAK,IAAI,QAAQ,OACrB,MAAM,IAAI,MAAM,8FAA8F,EAChH,MAAM,EAAIuhB,GAAGvhB,EAAE,KAAK,IAAK,CACvB,IAAI,OAAQ,CACV,MAAM,EAAI,CAAE,GAAGA,EAAE,KAAK,IAAI,MAAO,GAAGC,EAAE,KAAK,IAAI,KAAK,EACpD,OAAOqhB,GAAG,KAAM,QAAS,CAAC,EAAG,CAC9B,EACD,IAAI,UAAW,CACb,OAAOrhB,EAAE,KAAK,IAAI,QACnB,EACD,OAAQA,EAAE,KAAK,IAAI,QAAU,CAAE,CACnC,CAAG,EACD,OAAOgiB,GAAGjiB,EAAG,CAAC,CAChB,CACA,SAAS0iB,GAAG1iB,EAAGC,EAAG,EAAG,CACnB,MAAMoB,EAAIpB,EAAE,KAAK,IAAI,OACrB,GAAIoB,GAAKA,EAAE,OAAS,EAClB,MAAM,IAAI,MAAM,oEAAoE,EACtF,MAAMsQ,EAAI4P,GAAGthB,EAAE,KAAK,IAAK,CACvB,IAAI,OAAQ,CACV,MAAMoE,EAAIpE,EAAE,KAAK,IAAI,MAAO0G,EAAI,CAAE,GAAGtC,GACrC,GAAI,EACF,UAAW0F,KAAK,EAAG,CACjB,GAAI,EAAEA,KAAK1F,GACT,MAAM,IAAI,MAAM,sBAAsB0F,CAAC,GAAG,EAC5C,EAAEA,CAAC,IAAMpD,EAAEoD,CAAC,EAAI/J,EAAI,IAAIA,EAAE,CACxB,KAAM,WACN,UAAWqE,EAAE0F,CAAC,CAC1B,CAAW,EAAI1F,EAAE0F,CAAC,EACT,KAED,WAAWA,KAAK1F,EACdsC,EAAEoD,CAAC,EAAI/J,EAAI,IAAIA,EAAE,CACf,KAAM,WACN,UAAWqE,EAAE0F,CAAC,CAC1B,CAAW,EAAI1F,EAAE0F,CAAC,EACZ,OAAOuX,GAAG,KAAM,QAAS3a,CAAC,EAAGA,CAC9B,EACD,OAAQ,CAAE,CACd,CAAG,EACD,OAAOsb,GAAGhiB,EAAG0R,CAAC,CAChB,CACA,SAASgR,GAAG3iB,EAAGC,EAAG,EAAG,CACnB,MAAM,EAAIshB,GAAGthB,EAAE,KAAK,IAAK,CACvB,IAAI,OAAQ,CACV,MAAMoB,EAAIpB,EAAE,KAAK,IAAI,MAAOkC,EAAI,CAAE,GAAGd,GACrC,GAAI,EACF,UAAW,KAAK,EAAG,CACjB,GAAI,EAAE,KAAKc,GACT,MAAM,IAAI,MAAM,sBAAsB,CAAC,GAAG,EAC5C,EAAE,CAAC,IAAMA,EAAE,CAAC,EAAI,IAAInC,EAAE,CACpB,KAAM,cACN,UAAWqB,EAAE,CAAC,CACf,CAAA,EACF,KAED,WAAW,KAAKA,EACdc,EAAE,CAAC,EAAI,IAAInC,EAAE,CACX,KAAM,cACN,UAAWqB,EAAE,CAAC,CAC1B,CAAW,EACL,OAAOigB,GAAG,KAAM,QAASnf,CAAC,EAAGA,CAC9B,CACL,CAAG,EACD,OAAO8f,GAAGhiB,EAAG,CAAC,CAChB,CACA,SAAS2iB,GAAG5iB,EAAGC,EAAI,EAAG,CACpB,GAAID,EAAE,UAAY,GAChB,MAAO,GACT,QAAS,EAAIC,EAAG,EAAID,EAAE,OAAO,OAAQ,IACnC,GAAIA,EAAE,OAAO,CAAC,GAAG,WAAa,GAC5B,MAAO,GACX,MAAO,EACT,CACA,SAAS6iB,GAAG7iB,EAAGC,EAAI,EAAG,CACpB,GAAID,EAAE,UAAY,GAChB,MAAO,GACT,QAAS,EAAIC,EAAG,EAAID,EAAE,OAAO,OAAQ,IACnC,GAAIA,EAAE,OAAO,CAAC,GAAG,WAAa,GAC5B,MAAO,GACX,MAAO,EACT,CACA,SAAS8iB,GAAG9iB,EAAGC,EAAG,CAChB,OAAOA,EAAE,IAAK,GAAM,CAClB,IAAI,EACJ,OAAQ,EAAI,GAAG,OAAS,EAAE,KAAO,IAAK,EAAE,KAAK,QAAQD,CAAC,EAAG,CAC7D,CAAG,CACH,CACA,SAAS+iB,GAAG/iB,EAAG,CACb,OAAO,OAAOA,GAAK,SAAWA,EAAIA,GAAG,OACvC,CACA,SAASgjB,GAAGhjB,EAAGC,EAAG,EAAG,CACnB,MAAM,EAAID,EAAE,QAAUA,EAAE,QAAU+iB,GAAG/iB,EAAE,MAAM,KAAK,KAAK,QAAQA,CAAC,CAAC,GAAK+iB,GAAG9iB,GAAG,QAAQD,CAAC,CAAC,GAAK+iB,GAAG,EAAE,cAAc/iB,CAAC,CAAC,GAAK+iB,GAAG,EAAE,cAAc/iB,CAAC,CAAC,GAAK,gBAAiB,CAAE,KAAMqB,EAAG,SAAUc,EAAG,MAAO,EAAG,GAAGkC,CAAG,EAAGrE,EAC3M,OAAOqE,EAAE,OAASA,EAAE,KAAO,CAAA,GAAKA,EAAE,QAAU,EAAGpE,GAAG,cAAgBoE,EAAE,MAAQ,GAAIA,CAClF,CACA,SAAS4e,GAAGjjB,EAAG,CACb,OAAO,MAAM,QAAQA,CAAC,EAAI,QAAU,OAAOA,GAAK,SAAW,SAAW,SACxE,CACA,SAASkjB,MAAMljB,EAAG,CAChB,KAAM,CAACC,EAAG,EAAG,CAAC,EAAID,EAClB,OAAO,OAAOC,GAAK,SAAW,CAC5B,QAASA,EACT,KAAM,SACN,MAAO,EACP,KAAM,CACV,EAAM,CAAE,GAAGA,EACX,CACA,MAAMkjB,GAAK,CAACnjB,EAAGC,IAAM,CACnBD,EAAE,KAAO,YAAa,OAAO,eAAeA,EAAG,OAAQ,CACrD,MAAOA,EAAE,KACT,WAAY,EACb,CAAA,EAAG,OAAO,eAAeA,EAAG,SAAU,CACrC,MAAOC,EACP,WAAY,EACb,CAAA,EAAGD,EAAE,QAAU,KAAK,UAAUC,EAAG8gB,GAAI,CAAC,EAAG,OAAO,eAAe/gB,EAAG,WAAY,CAC7E,MAAO,IAAMA,EAAE,QACf,WAAY,EAChB,CAAG,CACH,EAAGojB,GAAK3C,EAAE,YAAa0C,EAAE,EAAGE,GAAK5C,EAAE,YAAa0C,GAAI,CAAE,OAAQ,KAAO,CAAA,EACrE,SAASG,GAAGtjB,EAAGC,EAAK,GAAM,EAAE,QAAS,CACnC,MAAM,EAAI,CAAA,EAAI,EAAI,GAClB,UAAWoB,KAAKrB,EAAE,OAChBqB,EAAE,KAAK,OAAS,GAAK,EAAEA,EAAE,KAAK,CAAC,CAAC,EAAI,EAAEA,EAAE,KAAK,CAAC,CAAC,GAAK,GAAI,EAAEA,EAAE,KAAK,CAAC,CAAC,EAAE,KAAKpB,EAAEoB,CAAC,CAAC,GAAK,EAAE,KAAKpB,EAAEoB,CAAC,CAAC,EAChG,MAAO,CAAE,WAAY,EAAG,YAAa,CAAC,CACxC,CACA,SAASkiB,GAAGvjB,EAAGC,EAAK,GAAM,EAAE,QAAS,CACnC,MAAM,EAAI,CAAE,QAAS,CAAE,CAAA,EAAI,EAAI,CAACoB,EAAGc,EAAI,KAAO,CAC5C,UAAW,KAAKd,EAAE,OAChB,GAAI,EAAE,OAAS,iBAAmB,EAAE,OAAO,OACzC,EAAE,OAAO,IAAKgD,GAAM,EAAE,CAAE,OAAQA,CAAC,EAAI,CAAC,GAAGlC,EAAG,GAAG,EAAE,IAAI,CAAC,CAAC,UAChD,EAAE,OAAS,cAClB,EAAE,CAAE,OAAQ,EAAE,MAAQ,EAAE,CAAC,GAAGA,EAAG,GAAG,EAAE,IAAI,CAAC,UAClC,EAAE,OAAS,kBAClB,EAAE,CAAE,OAAQ,EAAE,MAAQ,EAAE,CAAC,GAAGA,EAAG,GAAG,EAAE,IAAI,CAAC,MACtC,CACH,MAAMkC,EAAI,CAAC,GAAGlC,EAAG,GAAG,EAAE,IAAI,EAC1B,GAAIkC,EAAE,SAAW,EACf,EAAE,QAAQ,KAAKpE,EAAE,CAAC,CAAC,MAChB,CACH,IAAI0G,EAAI,EAAGoD,EAAI,EACf,KAAOA,EAAI1F,EAAE,QAAU,CACrB,MAAM2F,EAAI3F,EAAE0F,CAAC,EACbA,IAAM1F,EAAE,OAAS,GAAKsC,EAAEqD,CAAC,EAAIrD,EAAEqD,CAAC,GAAK,CAAE,QAAS,CAAE,CAAA,EAAIrD,EAAEqD,CAAC,EAAE,QAAQ,KAAK/J,EAAE,CAAC,CAAC,GAAK0G,EAAEqD,CAAC,EAAIrD,EAAEqD,CAAC,GAAK,CAAE,QAAS,CAAA,CAAI,EAAErD,EAAIA,EAAEqD,CAAC,EAAGD,GAC5H,CACF,CACF,CACP,EACE,OAAO,EAAE/J,CAAC,EAAG,CACf,CACA,MAAMwjB,GAAMxjB,GAAM,CAACC,EAAG,EAAG,EAAGoB,IAAM,CAChC,MAAMc,EAAI,EAAI,CAAE,GAAG,EAAG,MAAO,EAAI,EAAG,CAAE,MAAO,EAAE,EAAI,EAAIlC,EAAE,KAAK,IAAI,CAAE,MAAO,EAAG,OAAQ,CAAA,GAAMkC,CAAC,EAC7F,GAAI,aAAa,QACf,MAAM,IAAIue,GACZ,GAAI,EAAE,OAAO,OAAQ,CACnB,MAAMrc,EAAI,IAAKhD,GAAG,KAAOrB,GAAG,EAAE,OAAO,IAAK2G,GAAMqc,GAAGrc,EAAGxE,EAAG0e,GAAE,CAAE,CAAC,CAAC,EAC/D,MAAMa,GAAGrd,EAAGhD,GAAG,MAAM,EAAGgD,CACzB,CACD,OAAO,EAAE,KACX,EAAGof,GAAMzjB,GAAM,MAAOC,EAAG,EAAG,EAAGoB,IAAM,CACnC,MAAMc,EAAI,EAAI,CAAE,GAAG,EAAG,MAAO,IAAO,CAAE,MAAO,EAAE,EAC/C,IAAI,EAAIlC,EAAE,KAAK,IAAI,CAAE,MAAO,EAAG,OAAQ,EAAI,EAAEkC,CAAC,EAC9C,GAAI,aAAa,UAAY,EAAI,MAAM,GAAI,EAAE,OAAO,OAAQ,CAC1D,MAAMkC,EAAI,IAAKhD,GAAG,KAAOrB,GAAG,EAAE,OAAO,IAAK2G,GAAMqc,GAAGrc,EAAGxE,EAAG0e,GAAE,CAAE,CAAC,CAAC,EAC/D,MAAMa,GAAGrd,EAAGhD,GAAG,MAAM,EAAGgD,CACzB,CACD,OAAO,EAAE,KACX,EAAGqf,GAAM1jB,GAAM,CAACC,EAAG,EAAG,IAAM,CAC1B,MAAMoB,EAAI,EAAI,CAAE,GAAG,EAAG,MAAO,EAAI,EAAG,CAAE,MAAO,EAAE,EAAIc,EAAIlC,EAAE,KAAK,IAAI,CAAE,MAAO,EAAG,OAAQ,CAAA,GAAMoB,CAAC,EAC7F,GAAIc,aAAa,QACf,MAAM,IAAIue,GACZ,OAAOve,EAAE,OAAO,OAAS,CACvB,QAAS,GACT,MAAO,IAAKnC,GAAKojB,IAAIjhB,EAAE,OAAO,IAAK,GAAM6gB,GAAG,EAAG3hB,EAAGwf,GAAE,CAAE,CAAC,CAAC,CAC5D,EAAM,CAAE,QAAS,GAAI,KAAM1e,EAAE,MAC7B,EAAGwhB,GAAqBD,GAAGL,EAAE,EAAGO,GAAM5jB,GAAM,MAAOC,EAAG,EAAG,IAAM,CAC7D,MAAMoB,EAAI,EAAI,CAAE,GAAG,EAAG,MAAO,IAAO,CAAE,MAAO,EAAE,EAC/C,IAAIc,EAAIlC,EAAE,KAAK,IAAI,CAAE,MAAO,EAAG,OAAQ,EAAI,EAAEoB,CAAC,EAC9C,OAAOc,aAAa,UAAYA,EAAI,MAAMA,GAAIA,EAAE,OAAO,OAAS,CAC9D,QAAS,GACT,MAAO,IAAInC,EAAEmC,EAAE,OAAO,IAAK,GAAM6gB,GAAG,EAAG3hB,EAAGwf,GAAE,CAAE,CAAC,CAAC,CACpD,EAAM,CAAE,QAAS,GAAI,KAAM1e,EAAE,MAC7B,EAAG0hB,GAAqBD,GAAGP,EAAE,EAAGS,GAAM9jB,GAAM,CAACC,EAAG,EAAG,IAAM,CACvD,MAAMoB,EAAI,EAAI,CAAE,GAAG,EAAG,UAAW,YAAe,CAAE,UAAW,YAC7D,OAAOmiB,GAAGxjB,CAAC,EAAEC,EAAG,EAAGoB,CAAC,CACtB,EAAG0iB,GAAM/jB,GAAM,CAACC,EAAG,EAAG,IAAMujB,GAAGxjB,CAAC,EAAEC,EAAG,EAAG,CAAC,EAAG+jB,GAAMhkB,GAAM,MAAOC,EAAG,EAAG,IAAM,CACzE,MAAMoB,EAAI,EAAI,CAAE,GAAG,EAAG,UAAW,YAAe,CAAE,UAAW,YAC7D,OAAOoiB,GAAGzjB,CAAC,EAAEC,EAAG,EAAGoB,CAAC,CACtB,EAAG4iB,GAAMjkB,GAAM,MAAOC,EAAG,EAAG,IAAMwjB,GAAGzjB,CAAC,EAAEC,EAAG,EAAG,CAAC,EAAGikB,GAAMlkB,GAAM,CAACC,EAAG,EAAG,IAAM,CACzE,MAAMoB,EAAI,EAAI,CAAE,GAAG,EAAG,UAAW,YAAe,CAAE,UAAW,YAC7D,OAAOqiB,GAAG1jB,CAAC,EAAEC,EAAG,EAAGoB,CAAC,CACtB,EAAG8iB,GAAMnkB,GAAM,CAACC,EAAG,EAAG,IAAMyjB,GAAG1jB,CAAC,EAAEC,EAAG,EAAG,CAAC,EAAGmkB,GAAMpkB,GAAM,MAAOC,EAAG,EAAG,IAAM,CACzE,MAAMoB,EAAI,EAAI,CAAE,GAAG,EAAG,UAAW,YAAe,CAAE,UAAW,YAC7D,OAAOuiB,GAAG5jB,CAAC,EAAEC,EAAG,EAAGoB,CAAC,CACtB,EAAGgjB,GAAMrkB,GAAM,MAAOC,EAAG,EAAG,IAAM2jB,GAAG5jB,CAAC,EAAEC,EAAG,EAAG,CAAC,EAAGqkB,GAAK,qBAAsBC,GAAK,cAAeC,GAAK,wCAAyCC,GAAK,oBAAqBC,GAAK,oBAAqBC,GAAK,sBAAuBC,GAAK,gGAAiGC,GAAK,kFAAmFC,GAAM9kB,GAAMA,EAAI,IAAI,OAAO,mCAAmCA,CAAC,yDAAyD,EAAI,yKAA0K+kB,GAAK,mGAAoGC,GAAK,uDACjzB,SAASC,IAAK,CACZ,OAAO,IAAI,OAAOD,GAAI,GAAG,CAC3B,CACA,MAAME,GAAK,sHAAuHC,GAAK,+XAAgYC,GAAK,2IAA4IC,GAAK,iIAAkIC,GAAK,8EAA+EC,GAAK,mBAAoBC,GAAK,WAAYC,GAAK,oBAAqBC,GAAK,sNAAuNC,GAAqB,IAAI,OAAO,IAAID,EAAE,GAAG,EAC5rC,SAASE,GAAG5lB,EAAG,CACb,MAAMC,EAAI,8BACV,OAAO,OAAOD,EAAE,WAAa,SAAWA,EAAE,YAAc,GAAK,GAAGC,CAAC,GAAKD,EAAE,YAAc,EAAI,GAAGC,CAAC,YAAc,GAAGA,CAAC,mBAAmBD,EAAE,SAAS,IAAM,GAAGC,CAAC,4BAC1J,CACA,SAAS4lB,GAAG7lB,EAAG,CACb,OAAO,IAAI,OAAO,IAAI4lB,GAAG5lB,CAAC,CAAC,GAAG,CAChC,CACA,SAAS8lB,GAAG9lB,EAAG,CACb,MAAMC,EAAI2lB,GAAG,CAAE,UAAW5lB,EAAE,SAAS,CAAE,EAAG,EAAI,CAAC,GAAG,EAClDA,EAAE,OAAS,EAAE,KAAK,EAAE,EAAGA,EAAE,QAAU,EAAE,KAAK,mCAAmC,EAC7E,MAAM,EAAI,GAAGC,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,IAC/B,OAAO,IAAI,OAAO,IAAIylB,EAAE,OAAO,CAAC,IAAI,CACtC,CACA,MAAMK,GAAM/lB,GAAM,CAChB,MAAMC,EAAID,EAAI,YAAYA,GAAG,SAAW,CAAC,IAAIA,GAAG,SAAW,EAAE,IAAM,YACnE,OAAO,IAAI,OAAO,IAAIC,CAAC,GAAG,CAC5B,EAAG+lB,GAAK,UAAWC,GAAK,oBAAqBC,GAAK,YAAaC,GAAK,YAAaC,GAAqB3F,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAC7H,IAAI,EACJD,EAAE,OAASA,EAAE,KAAO,CAAA,GAAKA,EAAE,KAAK,IAAMC,GAAI,EAAID,EAAE,MAAM,WAAa,EAAE,SAAW,CAAA,EAClF,CAAC,EAAGqmB,GAAK,CACP,OAAQ,SACR,OAAQ,SACR,OAAQ,MACV,EAAGC,GAAqB7F,EAAE,oBAAqB,CAACzgB,EAAGC,IAAM,CACvDmmB,GAAG,KAAKpmB,EAAGC,CAAC,EACZ,MAAM,EAAIomB,GAAG,OAAOpmB,EAAE,KAAK,EAC3BD,EAAE,KAAK,SAAS,KAAM,GAAM,CAC1B,MAAMqB,EAAI,EAAE,KAAK,IAAKc,GAAKlC,EAAE,UAAYoB,EAAE,QAAUA,EAAE,mBAAqB,OAAO,kBACnFpB,EAAE,MAAQkC,IAAMlC,EAAE,UAAYoB,EAAE,QAAUpB,EAAE,MAAQoB,EAAE,iBAAmBpB,EAAE,MAC5E,CAAA,EAAGD,EAAE,KAAK,MAAS,GAAM,EACvBC,EAAE,UAAY,EAAE,OAASA,EAAE,MAAQ,EAAE,MAAQA,EAAE,QAAU,EAAE,OAAO,KAAK,CACtE,OAAQ,EACR,KAAM,UACN,QAAS,OAAOA,EAAE,OAAS,SAAWA,EAAE,MAAM,UAAYA,EAAE,MAC5D,MAAO,EAAE,MACT,UAAWA,EAAE,UACb,KAAMD,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAGsmB,GAAqB9F,EAAE,uBAAwB,CAACzgB,EAAGC,IAAM,CAC3DmmB,GAAG,KAAKpmB,EAAGC,CAAC,EACZ,MAAM,EAAIomB,GAAG,OAAOpmB,EAAE,KAAK,EAC3BD,EAAE,KAAK,SAAS,KAAM,GAAM,CAC1B,MAAMqB,EAAI,EAAE,KAAK,IAAKc,GAAKlC,EAAE,UAAYoB,EAAE,QAAUA,EAAE,mBAAqB,OAAO,kBACnFpB,EAAE,MAAQkC,IAAMlC,EAAE,UAAYoB,EAAE,QAAUpB,EAAE,MAAQoB,EAAE,iBAAmBpB,EAAE,MAC5E,CAAA,EAAGD,EAAE,KAAK,MAAS,GAAM,EACvBC,EAAE,UAAY,EAAE,OAASA,EAAE,MAAQ,EAAE,MAAQA,EAAE,QAAU,EAAE,OAAO,KAAK,CACtE,OAAQ,EACR,KAAM,YACN,QAAS,OAAOA,EAAE,OAAS,SAAWA,EAAE,MAAM,UAAYA,EAAE,MAC5D,MAAO,EAAE,MACT,UAAWA,EAAE,UACb,KAAMD,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAGumB,GAAqB/F,EAAE,sBAAuB,CAACzgB,EAAGC,IAAM,CAC1DmmB,GAAG,KAAKpmB,EAAGC,CAAC,EAAGD,EAAE,KAAK,SAAS,KAAM,GAAM,CACzC,IAAI,GACH,EAAI,EAAE,KAAK,KAAK,aAAe,EAAE,WAAaC,EAAE,MAClD,CAAA,EAAGD,EAAE,KAAK,MAAS,GAAM,CACxB,GAAI,OAAO,EAAE,OAAS,OAAOC,EAAE,MAC7B,MAAM,IAAI,MAAM,oDAAoD,GACrE,OAAO,EAAE,OAAS,SAAW,EAAE,MAAQA,EAAE,QAAU,OAAO,CAAC,EAAIkhB,GAAG,EAAE,MAAOlhB,EAAE,KAAK,IAAM,IAAM,EAAE,OAAO,KAAK,CAC3G,OAAQ,OAAO,EAAE,MACjB,KAAM,kBACN,QAASA,EAAE,MACX,MAAO,EAAE,MACT,KAAMD,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAGwmB,GAAqBhG,EAAE,wBAAyB,CAACzgB,EAAGC,IAAM,CAC5DmmB,GAAG,KAAKpmB,EAAGC,CAAC,EAAGA,EAAE,OAASA,EAAE,QAAU,UACtC,MAAM,EAAIA,EAAE,QAAQ,SAAS,KAAK,EAAG,EAAI,EAAI,MAAQ,SAAU,CAACoB,EAAGc,CAAC,EAAIigB,GAAGniB,EAAE,MAAM,EACnFD,EAAE,KAAK,SAAS,KAAM,GAAM,CAC1B,MAAMqE,EAAI,EAAE,KAAK,IACjBA,EAAE,OAASpE,EAAE,OAAQoE,EAAE,QAAUhD,EAAGgD,EAAE,QAAUlC,EAAG,IAAMkC,EAAE,QAAU2hB,GACtE,CAAA,EAAGhmB,EAAE,KAAK,MAAS,GAAM,CACxB,MAAMqE,EAAI,EAAE,MACZ,GAAI,EAAG,CACL,GAAI,CAAC,OAAO,UAAUA,CAAC,EAAG,CACxB,EAAE,OAAO,KAAK,CACZ,SAAU,EACV,OAAQpE,EAAE,OACV,KAAM,eACN,SAAU,GACV,MAAOoE,EACP,KAAMrE,CAChB,CAAS,EACD,MACD,CACD,GAAI,CAAC,OAAO,cAAcqE,CAAC,EAAG,CAC5BA,EAAI,EAAI,EAAE,OAAO,KAAK,CACpB,MAAOA,EACP,KAAM,UACN,QAAS,OAAO,iBAChB,KAAM,kDACN,KAAMrE,EACN,OAAQ,EACR,UAAW,GACX,SAAU,CAACC,EAAE,KACvB,CAAS,EAAI,EAAE,OAAO,KAAK,CACjB,MAAOoE,EACP,KAAM,YACN,QAAS,OAAO,iBAChB,KAAM,kDACN,KAAMrE,EACN,OAAQ,EACR,UAAW,GACX,SAAU,CAACC,EAAE,KACvB,CAAS,EACD,MACD,CACF,CACDoE,EAAIhD,GAAK,EAAE,OAAO,KAAK,CACrB,OAAQ,SACR,MAAOgD,EACP,KAAM,YACN,QAAShD,EACT,UAAW,GACX,KAAMrB,EACN,SAAU,CAACC,EAAE,KACd,CAAA,EAAGoE,EAAIlC,GAAK,EAAE,OAAO,KAAK,CACzB,OAAQ,SACR,MAAOkC,EACP,KAAM,UACN,QAASlC,EACT,UAAW,GACX,KAAMnC,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAGymB,GAAqBjG,EAAE,qBAAsB,CAACzgB,EAAGC,IAAM,CACzD,IAAI,EACJmmB,GAAG,KAAKpmB,EAAGC,CAAC,GAAI,EAAID,EAAE,KAAK,KAAK,OAAS,EAAE,KAAQ,GAAM,CACvD,MAAMqB,EAAI,EAAE,MACZ,MAAO,CAAC4f,GAAG5f,CAAC,GAAKA,EAAE,SAAW,MAClC,GAAMrB,EAAE,KAAK,SAAS,KAAM,GAAM,CAC9B,MAAMqB,EAAI,EAAE,KAAK,IAAI,SAAW,OAAO,kBACvCpB,EAAE,QAAUoB,IAAM,EAAE,KAAK,IAAI,QAAUpB,EAAE,QAC1C,CAAA,EAAGD,EAAE,KAAK,MAAS,GAAM,CACxB,MAAMqB,EAAI,EAAE,MACZ,GAAIA,EAAE,QAAUpB,EAAE,QAChB,OACF,MAAM0R,EAAIsR,GAAG5hB,CAAC,EACd,EAAE,OAAO,KAAK,CACZ,OAAQsQ,EACR,KAAM,UACN,QAAS1R,EAAE,QACX,UAAW,GACX,MAAOoB,EACP,KAAMrB,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAG0mB,GAAqBlG,EAAE,qBAAsB,CAACzgB,EAAGC,IAAM,CACzD,IAAI,EACJmmB,GAAG,KAAKpmB,EAAGC,CAAC,GAAI,EAAID,EAAE,KAAK,KAAK,OAAS,EAAE,KAAQ,GAAM,CACvD,MAAMqB,EAAI,EAAE,MACZ,MAAO,CAAC4f,GAAG5f,CAAC,GAAKA,EAAE,SAAW,MAClC,GAAMrB,EAAE,KAAK,SAAS,KAAM,GAAM,CAC9B,MAAMqB,EAAI,EAAE,KAAK,IAAI,SAAW,OAAO,kBACvCpB,EAAE,QAAUoB,IAAM,EAAE,KAAK,IAAI,QAAUpB,EAAE,QAC1C,CAAA,EAAGD,EAAE,KAAK,MAAS,GAAM,CACxB,MAAMqB,EAAI,EAAE,MACZ,GAAIA,EAAE,QAAUpB,EAAE,QAChB,OACF,MAAM0R,EAAIsR,GAAG5hB,CAAC,EACd,EAAE,OAAO,KAAK,CACZ,OAAQsQ,EACR,KAAM,YACN,QAAS1R,EAAE,QACX,UAAW,GACX,MAAOoB,EACP,KAAMrB,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAG2mB,GAAqBnG,EAAE,wBAAyB,CAACzgB,EAAGC,IAAM,CAC5D,IAAI,EACJmmB,GAAG,KAAKpmB,EAAGC,CAAC,GAAI,EAAID,EAAE,KAAK,KAAK,OAAS,EAAE,KAAQ,GAAM,CACvD,MAAMqB,EAAI,EAAE,MACZ,MAAO,CAAC4f,GAAG5f,CAAC,GAAKA,EAAE,SAAW,MAClC,GAAMrB,EAAE,KAAK,SAAS,KAAM,GAAM,CAC9B,MAAMqB,EAAI,EAAE,KAAK,IACjBA,EAAE,QAAUpB,EAAE,OAAQoB,EAAE,QAAUpB,EAAE,OAAQoB,EAAE,OAASpB,EAAE,MAC1D,CAAA,EAAGD,EAAE,KAAK,MAAS,GAAM,CACxB,MAAMqB,EAAI,EAAE,MAAOc,EAAId,EAAE,OACzB,GAAIc,IAAMlC,EAAE,OACV,OACF,MAAM,EAAIgjB,GAAG5hB,CAAC,EAAGgD,EAAIlC,EAAIlC,EAAE,OAC3B,EAAE,OAAO,KAAK,CACZ,OAAQ,EACR,GAAGoE,EAAI,CAAE,KAAM,UAAW,QAASpE,EAAE,MAAQ,EAAG,CAAE,KAAM,YAAa,QAASA,EAAE,MAAQ,EACxF,UAAW,GACX,MAAO,GACP,MAAO,EAAE,MACT,KAAMD,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAG4mB,GAAqBpG,EAAE,wBAAyB,CAACzgB,EAAGC,IAAM,CAC5D,IAAI,EAAG,EACPmmB,GAAG,KAAKpmB,EAAGC,CAAC,EAAGD,EAAE,KAAK,SAAS,KAAMqB,GAAM,CACzC,MAAMc,EAAId,EAAE,KAAK,IACjBc,EAAE,OAASlC,EAAE,OAAQA,EAAE,UAAYkC,EAAE,WAAaA,EAAE,SAA2B,IAAI,KAAQA,EAAE,SAAS,IAAIlC,EAAE,OAAO,EACpH,CAAA,EAAGA,EAAE,SAAW,EAAID,EAAE,MAAM,QAAU,EAAE,MAASqB,GAAM,CACtDpB,EAAE,QAAQ,UAAY,EAAG,CAACA,EAAE,QAAQ,KAAKoB,EAAE,KAAK,GAAKA,EAAE,OAAO,KAAK,CACjE,OAAQ,SACR,KAAM,iBACN,OAAQpB,EAAE,OACV,MAAOoB,EAAE,MACT,GAAGpB,EAAE,QAAU,CAAE,QAASA,EAAE,QAAQ,SAAU,CAAA,EAAK,CAAE,EACrD,KAAMD,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,IAAQ,EAAID,EAAE,MAAM,QAAU,EAAE,MAAQ,IAAM,CAC9C,EACA,CAAC,EAAG8mB,GAAqBrG,EAAE,iBAAkB,CAACzgB,EAAGC,IAAM,CACrD4mB,GAAG,KAAK7mB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAS,GAAM,CACnCC,EAAE,QAAQ,UAAY,EAAG,CAACA,EAAE,QAAQ,KAAK,EAAE,KAAK,GAAK,EAAE,OAAO,KAAK,CACjE,OAAQ,SACR,KAAM,iBACN,OAAQ,QACR,MAAO,EAAE,MACT,QAASA,EAAE,QAAQ,SAAU,EAC7B,KAAMD,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAG8mB,GAAqBtG,EAAE,qBAAsB,CAACzgB,EAAGC,IAAM,CACzDA,EAAE,UAAYA,EAAE,QAAUimB,IAAKW,GAAG,KAAK7mB,EAAGC,CAAC,CAC7C,CAAC,EAAG+mB,GAAqBvG,EAAE,qBAAsB,CAACzgB,EAAGC,IAAM,CACzDA,EAAE,UAAYA,EAAE,QAAUkmB,IAAKU,GAAG,KAAK7mB,EAAGC,CAAC,CAC7C,CAAC,EAAGgnB,GAAqBxG,EAAE,oBAAqB,CAACzgB,EAAGC,IAAM,CACxDmmB,GAAG,KAAKpmB,EAAGC,CAAC,EACZ,MAAM,EAAI+hB,GAAG/hB,EAAE,QAAQ,EAAG,EAAI,IAAI,OAAO,OAAOA,EAAE,UAAY,SAAW,MAAMA,EAAE,QAAQ,IAAI,CAAC,GAAK,CAAC,EACpGA,EAAE,QAAU,EAAGD,EAAE,KAAK,SAAS,KAAMqB,GAAM,CACzC,MAAMc,EAAId,EAAE,KAAK,IACjBc,EAAE,WAAaA,EAAE,SAA2B,IAAI,KAAQA,EAAE,SAAS,IAAI,CAAC,CACzE,CAAA,EAAGnC,EAAE,KAAK,MAASqB,GAAM,CACxBA,EAAE,MAAM,SAASpB,EAAE,SAAUA,EAAE,QAAQ,GAAKoB,EAAE,OAAO,KAAK,CACxD,OAAQ,SACR,KAAM,iBACN,OAAQ,WACR,SAAUpB,EAAE,SACZ,MAAOoB,EAAE,MACT,KAAMrB,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAGinB,GAAqBzG,EAAE,sBAAuB,CAACzgB,EAAGC,IAAM,CAC1DmmB,GAAG,KAAKpmB,EAAGC,CAAC,EACZ,MAAM,EAAI,IAAI,OAAO,IAAI+hB,GAAG/hB,EAAE,MAAM,CAAC,IAAI,EACzCA,EAAE,UAAYA,EAAE,QAAU,GAAID,EAAE,KAAK,SAAS,KAAM,GAAM,CACxD,MAAMqB,EAAI,EAAE,KAAK,IACjBA,EAAE,WAAaA,EAAE,SAA2B,IAAI,KAAQA,EAAE,SAAS,IAAI,CAAC,CACzE,CAAA,EAAGrB,EAAE,KAAK,MAAS,GAAM,CACxB,EAAE,MAAM,WAAWC,EAAE,MAAM,GAAK,EAAE,OAAO,KAAK,CAC5C,OAAQ,SACR,KAAM,iBACN,OAAQ,cACR,OAAQA,EAAE,OACV,MAAO,EAAE,MACT,KAAMD,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAGknB,GAAqB1G,EAAE,oBAAqB,CAACzgB,EAAGC,IAAM,CACxDmmB,GAAG,KAAKpmB,EAAGC,CAAC,EACZ,MAAM,EAAI,IAAI,OAAO,KAAK+hB,GAAG/hB,EAAE,MAAM,CAAC,GAAG,EACzCA,EAAE,UAAYA,EAAE,QAAU,GAAID,EAAE,KAAK,SAAS,KAAM,GAAM,CACxD,MAAMqB,EAAI,EAAE,KAAK,IACjBA,EAAE,WAAaA,EAAE,SAA2B,IAAI,KAAQA,EAAE,SAAS,IAAI,CAAC,CACzE,CAAA,EAAGrB,EAAE,KAAK,MAAS,GAAM,CACxB,EAAE,MAAM,SAASC,EAAE,MAAM,GAAK,EAAE,OAAO,KAAK,CAC1C,OAAQ,SACR,KAAM,iBACN,OAAQ,YACR,OAAQA,EAAE,OACV,MAAO,EAAE,MACT,KAAMD,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAGmnB,GAAqB3G,EAAE,qBAAsB,CAACzgB,EAAGC,IAAM,CACzDmmB,GAAG,KAAKpmB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAS,GAAM,CACnC,EAAE,MAAQC,EAAE,GAAG,EAAE,KAAK,CAC1B,CACA,CAAC,EACD,MAAMonB,EAAG,CACP,YAAYpnB,EAAI,GAAI,CAClB,KAAK,QAAU,GAAI,KAAK,OAAS,EAAG,OAAS,KAAK,KAAOA,EAC1D,CACD,SAASA,EAAG,CACV,KAAK,QAAU,EAAGA,EAAE,IAAI,EAAG,KAAK,QAAU,CAC3C,CACD,MAAMA,EAAG,CACP,GAAI,OAAOA,GAAK,WAAY,CAC1BA,EAAE,KAAM,CAAE,UAAW,MAAQ,CAAA,EAAGA,EAAE,KAAM,CAAE,UAAW,OAAS,CAAA,EAC9D,MACD,CACD,MAAMuH,EAAIvH,EAAE,MAAM;AAAA,CACrB,EAAE,OAAQ0R,GAAMA,CAAC,EAAGtQ,EAAI,KAAK,IAAI,GAAGmG,EAAE,IAAKmK,GAAMA,EAAE,OAASA,EAAE,UAAW,EAAC,MAAM,CAAC,EAAG,EAAInK,EAAE,IAAKmK,GAAMA,EAAE,MAAMtQ,CAAC,CAAC,EAAE,IAAKsQ,GAAM,IAAI,OAAO,KAAK,OAAS,CAAC,EAAIA,CAAC,EACxJ,UAAWA,KAAK,EACd,KAAK,QAAQ,KAAKA,CAAC,CACtB,CACD,SAAU,CACR,MAAM1R,EAAI,SAAU,EAAI,MAAM,KAAMoB,EAAI,CAAC,IAAI,MAAM,SAAW,CAAC,EAAE,GAAG,IAAK,GAAM,KAAK,CAAC,EAAE,CAAC,EACxF,OAAO,IAAIpB,EAAE,GAAG,EAAGoB,EAAE,KAAK;AAAA,CAC7B,CAAC,CACC,CACH,CACA,MAAMimB,GAAK,CACT,MAAO,EACP,MAAO,EACP,MAAO,CACT,EAAGC,GAAoB9G,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC7C,IAAI,EACJD,IAAMA,EAAI,CAAA,GAAKA,EAAE,KAAK,IAAMC,EAAGD,EAAE,KAAK,IAAMA,EAAE,KAAK,KAAO,CAAA,EAAIA,EAAE,KAAK,QAAUsnB,GAC/E,MAAM,EAAI,CAAC,GAAGtnB,EAAE,KAAK,IAAI,QAAU,CAAA,CAAE,EACrCA,EAAE,KAAK,OAAO,IAAI,WAAW,GAAK,EAAE,QAAQA,CAAC,EAC7C,UAAWqB,KAAK,EACd,UAAWc,KAAKd,EAAE,KAAK,SACrBc,EAAEnC,CAAC,EACP,GAAI,EAAE,SAAW,GACd,EAAIA,EAAE,MAAM,WAAa,EAAE,SAAW,CAAE,GAAGA,EAAE,KAAK,UAAU,KAAK,IAAM,CACtEA,EAAE,KAAK,IAAMA,EAAE,KAAK,KAC1B,CAAK,MACE,CACH,MAAMqB,EAAI,CAAC,EAAGgD,EAAGsC,IAAM,CACrB,IAAIoD,EAAI6Y,GAAG,CAAC,EAAG5Y,EACf,UAAWC,KAAK5F,EAAG,CACjB,GAAI4F,EAAE,KAAK,IAAI,MACb,GAAI4Y,GAAG,CAAC,GAAK,CAAC5Y,EAAE,KAAK,IAAI,KAAK,CAAC,EAC7B,iBACOF,EACT,SACF,MAAM,EAAI,EAAE,OAAO,OAAQG,EAAID,EAAE,KAAK,MAAM,CAAC,EAC7C,GAAIC,aAAa,SAAWvD,GAAG,QAAU,GACvC,MAAM,IAAI+Z,GACZ,GAAI1W,GAAKE,aAAa,QACpBF,GAAKA,GAAK,QAAQ,QAAS,GAAE,KAAK,SAAY,CAC5C,MAAME,EAAG,EAAE,OAAO,SAAW,IAAMH,IAAMA,EAAI6Y,GAAG,EAAG,CAAC,GAChE,CAAW,MACE,CACH,GAAI,EAAE,OAAO,SAAW,EACtB,SACF7Y,IAAMA,EAAI6Y,GAAG,EAAG,CAAC,EAClB,CACF,CACD,OAAO5Y,EAAIA,EAAE,KAAK,IAAM,CAAC,EAAI,CAC9B,EAAE7H,EAAI,CAAC,EAAGkC,EAAGsC,IAAM,CAClB,GAAIic,GAAG,CAAC,EACN,OAAO,EAAE,QAAU,GAAI,EACzB,MAAM7Y,EAAI1I,EAAEgD,EAAG,EAAGsC,CAAC,EACnB,GAAIoD,aAAa,QAAS,CACxB,GAAIpD,EAAE,QAAU,GACd,MAAM,IAAI+Z,GACZ,OAAO3W,EAAE,KAAMC,GAAMhK,EAAE,KAAK,MAAMgK,EAAGrD,CAAC,CAAC,CACxC,CACD,OAAO3G,EAAE,KAAK,MAAM+J,EAAGpD,CAAC,CAC9B,EACI3G,EAAE,KAAK,IAAM,CAAC,EAAGqE,IAAM,CACrB,GAAIA,EAAE,WACJ,OAAOrE,EAAE,KAAK,MAAM,EAAGqE,CAAC,EAC1B,GAAIA,EAAE,YAAc,WAAY,CAC9B,MAAM0F,EAAI/J,EAAE,KAAK,MAAM,CAAE,MAAO,EAAE,MAAO,OAAQ,CAAA,CAAI,EAAE,CAAE,GAAGqE,EAAG,WAAY,EAAE,CAAE,EAC/E,OAAO0F,aAAa,QAAUA,EAAE,KAAMC,GAAM7H,EAAE6H,EAAG,EAAG3F,CAAC,CAAC,EAAIlC,EAAE4H,EAAG,EAAG1F,CAAC,CACpE,CACD,MAAMsC,EAAI3G,EAAE,KAAK,MAAM,EAAGqE,CAAC,EAC3B,GAAIsC,aAAa,QAAS,CACxB,GAAItC,EAAE,QAAU,GACd,MAAM,IAAIqc,GACZ,OAAO/Z,EAAE,KAAMoD,GAAM1I,EAAE0I,EAAG,EAAG1F,CAAC,CAAC,CAChC,CACD,OAAOhD,EAAEsF,EAAG,EAAGtC,CAAC,CACtB,CACG,CACDgd,GAAErhB,EAAG,YAAa,KAAO,CACvB,SAAWqB,GAAM,CACf,GAAI,CACF,MAAMc,EAAIwhB,GAAG3jB,EAAGqB,CAAC,EACjB,OAAOc,EAAE,QAAU,CAAE,MAAOA,EAAE,MAAS,CAAE,OAAQA,EAAE,OAAO,MAAM,CACxE,MAAc,CACN,OAAO0hB,GAAG7jB,EAAGqB,CAAC,EAAE,KAAMsQ,GAAMA,EAAE,QAAU,CAAE,MAAOA,EAAE,IAAI,EAAK,CAAE,OAAQA,EAAE,OAAO,MAAM,CAAE,CACxF,CACF,EACD,OAAQ,MACR,QAAS,CACV,EAAC,CACJ,CAAC,EAAG6V,GAAqB/G,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACjDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,QAAU,CAAC,GAAGA,GAAG,KAAK,KAAK,UAAY,EAAE,EAAE,IAAK,GAAI+lB,GAAG/lB,EAAE,KAAK,GAAG,EAAGA,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CAChH,GAAIC,EAAE,OACJ,GAAI,CACF,EAAE,MAAQ,OAAO,EAAE,KAAK,CAChC,MAAc,CACP,CACH,OAAO,OAAO,EAAE,OAAS,UAAY,EAAE,OAAO,KAAK,CACjD,SAAU,SACV,KAAM,eACN,MAAO,EAAE,MACT,KAAMD,CACP,CAAA,EAAG,CACR,CACA,CAAC,EAAGynB,GAAoBhH,EAAE,mBAAoB,CAACzgB,EAAGC,IAAM,CACtD4mB,GAAG,KAAK7mB,EAAGC,CAAC,EAAGunB,GAAG,KAAKxnB,EAAGC,CAAC,CAC7B,CAAC,EAAGynB,GAAqBjH,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/CA,EAAE,UAAYA,EAAE,QAAU4kB,IAAK4C,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EAAG0nB,GAAqBlH,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/C,GAAIA,EAAE,QAAS,CACb,MAAMuH,EAAI,CACR,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,CACV,EAAMvH,EAAE,OAAO,EACX,GAAIuH,IAAM,OACR,MAAM,IAAI,MAAM,0BAA0BvH,EAAE,OAAO,GAAG,EACxDA,EAAE,UAAYA,EAAE,QAAU6kB,GAAGtd,CAAC,EAC/B,MACCvH,EAAE,UAAYA,EAAE,QAAU6kB,GAAI,GAChC2C,GAAE,KAAKznB,EAAGC,CAAC,CACb,CAAC,EAAG2nB,GAAqBnH,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAChDA,EAAE,UAAYA,EAAE,QAAU8kB,IAAK0C,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EAAG4nB,GAAqBpH,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAC9CwnB,GAAE,KAAKznB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAS,GAAM,CAClC,GAAI,CACF,MAAM,EAAI,EAAE,MAAM,KAAI,EACtB,GAAI,CAACC,EAAE,WAAaA,EAAE,UAAU,SAAWulB,GAAG,QAAU,CAAC,gBAAgB,KAAK,CAAC,EAAG,CAChF,EAAE,OAAO,KAAK,CACZ,KAAM,iBACN,OAAQ,MACR,KAAM,qBACN,MAAO,EAAE,MACT,KAAMxlB,EACN,SAAU,CAACC,EAAE,KACvB,CAAS,EACD,MACD,CACD,MAAMoB,EAAI,IAAI,IAAI,CAAC,EACnBpB,EAAE,WAAaA,EAAE,SAAS,UAAY,EAAGA,EAAE,SAAS,KAAKoB,EAAE,QAAQ,GAAK,EAAE,OAAO,KAAK,CACpF,KAAM,iBACN,OAAQ,MACR,KAAM,mBACN,QAASpB,EAAE,SAAS,OACpB,MAAO,EAAE,MACT,KAAMD,EACN,SAAU,CAACC,EAAE,KACd,CAAA,GAAIA,EAAE,WAAaA,EAAE,SAAS,UAAY,EAAGA,EAAE,SAAS,KAAKoB,EAAE,SAAS,SAAS,GAAG,EAAIA,EAAE,SAAS,MAAM,EAAG,EAAE,EAAIA,EAAE,QAAQ,GAAK,EAAE,OAAO,KAAK,CAC9I,KAAM,iBACN,OAAQ,MACR,KAAM,mBACN,QAASpB,EAAE,SAAS,OACpB,MAAO,EAAE,MACT,KAAMD,EACN,SAAU,CAACC,EAAE,KACd,CAAA,GAAIA,EAAE,UAAY,EAAE,MAAQoB,EAAE,KAAO,EAAE,MAAQ,EAChD,MACN,MAAY,CACN,EAAE,OAAO,KAAK,CACZ,KAAM,iBACN,OAAQ,MACR,MAAO,EAAE,MACT,KAAMrB,EACN,SAAU,CAACC,EAAE,KACrB,CAAO,CACF,CACL,CACA,CAAC,EAAG6nB,GAAqBrH,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAChDA,EAAE,UAAYA,EAAE,QAAUglB,GAAE,GAAKwC,GAAE,KAAKznB,EAAGC,CAAC,CAC9C,CAAC,EAAG8nB,GAAqBtH,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACjDA,EAAE,UAAYA,EAAE,QAAU0kB,IAAK8C,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EAAG+nB,GAAqBvH,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/CA,EAAE,UAAYA,EAAE,QAAUqkB,IAAKmD,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EAAGgoB,GAAqBxH,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAChDA,EAAE,UAAYA,EAAE,QAAUskB,IAAKkD,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EAAGioB,GAAqBzH,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/CA,EAAE,UAAYA,EAAE,QAAUukB,IAAKiD,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EAAGkoB,GAAqB1H,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAC9CA,EAAE,UAAYA,EAAE,QAAUwkB,IAAKgD,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EAAGmoB,GAAqB3H,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAChDA,EAAE,UAAYA,EAAE,QAAUykB,IAAK+C,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EAAGooB,GAAqB5H,EAAE,kBAAmB,CAACzgB,EAAGC,IAAM,CACtDA,EAAE,UAAYA,EAAE,QAAU6lB,GAAG7lB,CAAC,GAAIwnB,GAAE,KAAKznB,EAAGC,CAAC,CAC/C,CAAC,EAAGqoB,GAAqB7H,EAAE,cAAe,CAACzgB,EAAGC,IAAM,CAClDA,EAAE,UAAYA,EAAE,QAAU0lB,IAAK8B,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EAAGsoB,GAAqB9H,EAAE,cAAe,CAACzgB,EAAGC,IAAM,CAClDA,EAAE,UAAYA,EAAE,QAAU4lB,GAAG5lB,CAAC,GAAIwnB,GAAE,KAAKznB,EAAGC,CAAC,CAC/C,CAAC,EAAGuoB,GAAqB/H,EAAE,kBAAmB,CAACzgB,EAAGC,IAAM,CACtDA,EAAE,UAAYA,EAAE,QAAU2kB,IAAK6C,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EAAGwoB,GAAqBhI,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/CA,EAAE,UAAYA,EAAE,QAAUilB,IAAKuC,GAAE,KAAKznB,EAAGC,CAAC,EAAGD,EAAE,KAAK,IAAI,OAAS,MACnE,CAAC,EAAG0oB,GAAqBjI,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/CA,EAAE,UAAYA,EAAE,QAAUklB,IAAKsC,GAAE,KAAKznB,EAAGC,CAAC,EAAGD,EAAE,KAAK,IAAI,OAAS,OAAQA,EAAE,KAAK,MAAS,GAAM,CAC7F,GAAI,CACF,IAAI,IAAI,WAAW,EAAE,KAAK,GAAG,CACnC,MAAY,CACN,EAAE,OAAO,KAAK,CACZ,KAAM,iBACN,OAAQ,OACR,MAAO,EAAE,MACT,KAAMA,EACN,SAAU,CAACC,EAAE,KACrB,CAAO,CACF,CACL,CACA,CAAC,EAAG0oB,GAAqBlI,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACjDA,EAAE,UAAYA,EAAE,QAAUmlB,IAAKqC,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EAAG2oB,GAAqBnI,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACjDA,EAAE,UAAYA,EAAE,QAAUolB,IAAKoC,GAAE,KAAKznB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAS,GAAM,CACjE,MAAM,EAAI,EAAE,MAAM,MAAM,GAAG,EAC3B,GAAI,CACF,GAAI,EAAE,SAAW,EACf,MAAM,IAAI,MACZ,KAAM,CAACqB,EAAGc,CAAC,EAAI,EACf,GAAI,CAACA,EACH,MAAM,IAAI,MACZ,MAAM,EAAI,OAAOA,CAAC,EAClB,GAAI,GAAG,CAAC,KAAOA,EACb,MAAM,IAAI,MACZ,GAAI,EAAI,GAAK,EAAI,IACf,MAAM,IAAI,MACZ,IAAI,IAAI,WAAWd,CAAC,GAAG,CAC7B,MAAY,CACN,EAAE,OAAO,KAAK,CACZ,KAAM,iBACN,OAAQ,SACR,MAAO,EAAE,MACT,KAAMrB,EACN,SAAU,CAACC,EAAE,KACrB,CAAO,CACF,CACL,CACA,CAAC,EACD,SAAS4oB,GAAG7oB,EAAG,CACb,GAAIA,IAAM,GACR,MAAO,GACT,GAAI,KAAK,KAAKA,CAAC,GAAKA,EAAE,OAAS,IAAM,EACnC,MAAO,GACT,GAAI,CACF,OAAO,KAAKA,CAAC,EAAG,EACpB,MAAU,CACN,MAAO,EACR,CACH,CACA,MAAM8oB,GAAqBrI,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACnDA,EAAE,UAAYA,EAAE,QAAUqlB,IAAKmC,GAAE,KAAKznB,EAAGC,CAAC,EAAGD,EAAE,KAAK,IAAI,gBAAkB,SAAUA,EAAE,KAAK,MAAS,GAAM,CACxG6oB,GAAG,EAAE,KAAK,GAAK,EAAE,OAAO,KAAK,CAC3B,KAAM,iBACN,OAAQ,SACR,MAAO,EAAE,MACT,KAAM7oB,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EACD,SAAS8oB,GAAG/oB,EAAG,CACb,GAAI,CAACulB,GAAG,KAAKvlB,CAAC,EACZ,MAAO,GACT,MAAMC,EAAID,EAAE,QAAQ,QAAU,GAAM,IAAM,IAAM,IAAM,GAAG,EAAG,EAAIC,EAAE,OAAO,KAAK,KAAKA,EAAE,OAAS,CAAC,EAAI,EAAG,GAAG,EACzG,OAAO4oB,GAAG,CAAC,CACb,CACA,MAAMG,GAAqBvI,EAAE,gBAAiB,CAACzgB,EAAGC,IAAM,CACtDA,EAAE,UAAYA,EAAE,QAAUslB,IAAKkC,GAAE,KAAKznB,EAAGC,CAAC,EAAGD,EAAE,KAAK,IAAI,gBAAkB,YAAaA,EAAE,KAAK,MAAS,GAAM,CAC3G+oB,GAAG,EAAE,KAAK,GAAK,EAAE,OAAO,KAAK,CAC3B,KAAM,iBACN,OAAQ,YACR,MAAO,EAAE,MACT,KAAM/oB,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAGgpB,GAAqBxI,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/CA,EAAE,UAAYA,EAAE,QAAUwlB,IAAKgC,GAAE,KAAKznB,EAAGC,CAAC,CAC5C,CAAC,EACD,SAASipB,GAAGlpB,EAAGC,EAAI,KAAM,CACvB,GAAI,CACF,MAAM,EAAID,EAAE,MAAM,GAAG,EACrB,GAAI,EAAE,SAAW,EACf,MAAO,GACT,KAAM,CAAC,CAAC,EAAI,EACZ,GAAI,CAAC,EACH,MAAO,GACT,MAAMqB,EAAI,KAAK,MAAM,KAAK,CAAC,CAAC,EAC5B,MAAO,EAAE,QAASA,GAAKA,GAAG,MAAQ,OAAS,CAACA,EAAE,KAAOpB,IAAM,EAAE,QAASoB,IAAMA,EAAE,MAAQpB,GAC1F,MAAU,CACN,MAAO,EACR,CACH,CACA,MAAMkpB,GAAqB1I,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAChDwnB,GAAE,KAAKznB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAS,GAAM,CAClCkpB,GAAG,EAAE,MAAOjpB,EAAE,GAAG,GAAK,EAAE,OAAO,KAAK,CAClC,KAAM,iBACN,OAAQ,MACR,MAAO,EAAE,MACT,KAAMD,EACN,SAAU,CAACC,EAAE,KACnB,CAAK,CACL,CACA,CAAC,EAAGmpB,GAAqB3I,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACjDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,QAAUA,EAAE,KAAK,IAAI,SAAWimB,GAAIjmB,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CAChF,GAAIC,EAAE,OACJ,GAAI,CACF,EAAE,MAAQ,OAAO,EAAE,KAAK,CAChC,MAAc,CACP,CACH,MAAMoB,EAAI,EAAE,MACZ,GAAI,OAAOA,GAAK,UAAY,CAAC,OAAO,MAAMA,CAAC,GAAK,OAAO,SAASA,CAAC,EAC/D,OAAO,EACT,MAAMc,EAAI,OAAOd,GAAK,SAAW,OAAO,MAAMA,CAAC,EAAI,MAAQ,OAAO,SAASA,CAAC,EAAI,OAAS,WAAa,OACtG,OAAO,EAAE,OAAO,KAAK,CACnB,SAAU,SACV,KAAM,eACN,MAAOA,EACP,KAAMrB,EACN,GAAGmC,EAAI,CAAE,SAAUA,CAAG,EAAG,CAAE,CAC5B,CAAA,EAAG,CACR,CACA,CAAC,EAAGknB,GAAqB5I,EAAE,mBAAoB,CAACzgB,EAAGC,IAAM,CACvDwmB,GAAG,KAAKzmB,EAAGC,CAAC,EAAGmpB,GAAG,KAAKppB,EAAGC,CAAC,CAC7B,CAAC,EAAGqpB,GAAqB7I,EAAE,cAAe,CAACzgB,EAAGC,IAAM,CAClDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAS,GAAM,CACtC,CAAC,EAAGupB,GAAqB9I,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAChDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,KAAO,EAAE,OAAO,KAAK,CACpD,SAAU,QACV,KAAM,eACN,MAAO,EAAE,MACT,KAAMA,CACV,CAAG,EAAG,EACN,CAAC,EACD,SAASwpB,GAAGxpB,EAAGC,EAAG,EAAG,CACnBD,EAAE,OAAO,QAAUC,EAAE,OAAO,KAAK,GAAG6iB,GAAG,EAAG9iB,EAAE,MAAM,CAAC,EAAGC,EAAE,MAAM,CAAC,EAAID,EAAE,KACvE,CACA,MAAMypB,GAAqBhJ,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAClDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CACrC,MAAMqB,EAAI,EAAE,MACZ,GAAI,CAAC,MAAM,QAAQA,CAAC,EAClB,OAAO,EAAE,OAAO,KAAK,CACnB,SAAU,QACV,KAAM,eACN,MAAOA,EACP,KAAMrB,CACP,CAAA,EAAG,EACN,EAAE,MAAQ,MAAMqB,EAAE,MAAM,EACxB,MAAMc,EAAI,CAAA,EACV,QAAS,EAAI,EAAG,EAAId,EAAE,OAAQ,IAAK,CACjC,MAAMgD,EAAIhD,EAAE,CAAC,EAAGsF,EAAI1G,EAAE,QAAQ,KAAK,IAAI,CACrC,MAAOoE,EACP,OAAQ,CAAE,CACX,EAAE,CAAC,EACJsC,aAAa,QAAUxE,EAAE,KAAKwE,EAAE,KAAMoD,GAAMyf,GAAGzf,EAAG,EAAG,CAAC,CAAC,CAAC,EAAIyf,GAAG7iB,EAAG,EAAG,CAAC,CACvE,CACD,OAAOxE,EAAE,OAAS,QAAQ,IAAIA,CAAC,EAAE,KAAK,IAAM,CAAC,EAAI,CACrD,CACA,CAAC,EACD,SAASunB,GAAG1pB,EAAGC,EAAG,EAAG,EAAGoB,EAAGc,EAAG,CAC5B,MAAM,EAAI,KAAK,EACf,GAAInC,EAAE,OAAO,OAAQ,CACnB,GAAIqB,GAAKc,GAAK,CAAC,EACb,OACFlC,EAAE,OAAO,KAAK,GAAG6iB,GAAG,EAAG9iB,EAAE,MAAM,CAAC,CACjC,CACD,GAAI,CAAC,GAAK,CAACqB,EAAG,CACZrB,EAAE,OAAO,QAAUC,EAAE,OAAO,KAAK,CAC/B,KAAM,eACN,SAAU,cACV,MAAO,OACP,KAAM,CAAC,CAAC,CACd,CAAK,EACD,MACD,CACDD,EAAE,QAAU,OAAS,IAAMC,EAAE,MAAM,CAAC,EAAI,QAAUA,EAAE,MAAM,CAAC,EAAID,EAAE,KACnE,CACA,SAAS2pB,GAAG3pB,EAAG,CACb,MAAMC,EAAI,OAAO,KAAKD,EAAE,KAAK,EAC7B,UAAW,KAAKC,EACd,GAAI,CAACD,EAAE,QAAQ,CAAC,GAAG,MAAM,QAAQ,IAAI,UAAU,EAC7C,MAAM,IAAI,MAAM,2BAA2B,CAAC,0BAA0B,EAC1E,MAAM,EAAImiB,GAAGniB,EAAE,KAAK,EACpB,MAAO,CACL,GAAGA,EACH,KAAMC,EACN,OAAQ,IAAI,IAAIA,CAAC,EACjB,QAASA,EAAE,OACX,aAAc,IAAI,IAAI,CAAC,CAC3B,CACA,CACA,SAAS2pB,GAAG5pB,EAAGC,EAAG,EAAG,EAAGoB,EAAGc,EAAG,CAC5B,MAAM,EAAI,GAAIkC,EAAIhD,EAAE,OAAQsF,EAAItF,EAAE,SAAS,KAAM0I,EAAIpD,EAAE,IAAI,KAAMqD,EAAIrD,EAAE,QAAU,WAAYsD,EAAItD,EAAE,SAAW,WAC9G,UAAW,KAAK1G,EAAG,CACjB,GAAI,IAAM,aAAeoE,EAAE,IAAI,CAAC,EAC9B,SACF,GAAI0F,IAAM,QAAS,CACjB,EAAE,KAAK,CAAC,EACR,QACD,CACD,MAAMG,EAAIvD,EAAE,IAAI,CAAE,MAAO1G,EAAE,CAAC,EAAG,OAAQ,EAAI,EAAE,CAAC,EAC9CiK,aAAa,QAAUlK,EAAE,KAAKkK,EAAE,KAAM,GAAMwf,GAAG,EAAG,EAAG,EAAGzpB,EAAG+J,EAAGC,CAAC,CAAC,CAAC,EAAIyf,GAAGxf,EAAG,EAAG,EAAGjK,EAAG+J,EAAGC,CAAC,CACzF,CACD,OAAO,EAAE,QAAU,EAAE,OAAO,KAAK,CAC/B,KAAM,oBACN,KAAM,EACN,MAAOhK,EACP,KAAMkC,CACP,CAAA,EAAGnC,EAAE,OAAS,QAAQ,IAAIA,CAAC,EAAE,KAAK,IAAM,CAAC,EAAI,CAChD,CACA,MAAM6pB,GAAqBpJ,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACnD,GAAIsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAG,CAAC,OAAO,yBAAyBA,EAAG,OAAO,GAAG,IAAK,CACnE,MAAMoE,EAAIpE,EAAE,MACZ,OAAO,eAAeA,EAAG,QAAS,CAChC,IAAK,IAAM,CACT,MAAM,EAAI,CAAE,GAAGoE,GACf,OAAO,OAAO,eAAepE,EAAG,QAAS,CACvC,MAAO,CACR,CAAA,EAAG,CACL,CACP,CAAK,CACF,CACD,MAAMuH,EAAIwZ,GAAG,IAAM2I,GAAG1pB,CAAC,CAAC,EACxBohB,GAAErhB,EAAE,KAAM,aAAc,IAAM,CAC5B,MAAMqE,EAAIpE,EAAE,MAAO,EAAI,CAAA,EACvB,UAAW,KAAKoE,EAAG,CACjB,MAAM,EAAIA,EAAE,CAAC,EAAE,KACf,GAAI,EAAE,OAAQ,CACZ,EAAE,CAAC,IAAM,EAAE,CAAC,EAAoB,IAAI,KACpC,UAAW4F,KAAK,EAAE,OAChB,EAAE,CAAC,EAAE,IAAIA,CAAC,CACb,CACF,CACD,OAAO,CACX,CAAG,EACD,MAAM5I,EAAIsgB,GAAI,EAAI1hB,EAAE,SACpB,IAAI0R,EACJ3R,EAAE,KAAK,MAAQ,CAACqE,EAAG,IAAM,CACvBsN,IAAMA,EAAInK,EAAE,OACZ,MAAM,EAAInD,EAAE,MACZ,GAAI,CAAChD,EAAE,CAAC,EACN,OAAOgD,EAAE,OAAO,KAAK,CACnB,SAAU,SACV,KAAM,eACN,MAAO,EACP,KAAMrE,CACP,CAAA,EAAGqE,EACNA,EAAE,MAAQ,GACV,MAAM,EAAI,CAAE,EAAE4F,EAAI0H,EAAE,MACpB,UAAWsH,KAAKtH,EAAE,KAAM,CACtB,MAAMzH,EAAID,EAAEgP,CAAC,EAAGF,EAAI7O,EAAE,KAAK,QAAU,WAAYC,EAAID,EAAE,KAAK,SAAW,WAAYE,EAAIF,EAAE,KAAK,IAAI,CAAE,MAAO,EAAE+O,CAAC,EAAG,OAAQ,EAAI,EAAE,CAAC,EAChI7O,aAAa,QAAU,EAAE,KAAKA,EAAE,KAAM,GAAMsf,GAAG,EAAGrlB,EAAG4U,EAAG,EAAGF,EAAG5O,CAAC,CAAC,CAAC,EAAIuf,GAAGtf,EAAG/F,EAAG4U,EAAG,EAAGF,EAAG5O,CAAC,CACzF,CACD,OAAO,EAAIyf,GAAG,EAAG,EAAGvlB,EAAG,EAAGmD,EAAE,MAAOxH,CAAC,EAAI,EAAE,OAAS,QAAQ,IAAI,CAAC,EAAE,KAAK,IAAMqE,CAAC,EAAIA,CACtF,CACA,CAAC,EAAGylB,GAAqBrJ,EAAE,gBAAiB,CAACzgB,EAAGC,IAAM,CACpD4pB,GAAG,KAAK7pB,EAAGC,CAAC,EACZ,MAAM,EAAID,EAAE,KAAK,MAAO,EAAIghB,GAAG,IAAM2I,GAAG1pB,CAAC,CAAC,EAAGoB,EAAK4X,GAAM,CACtD,MAAM/O,EAAI,IAAImd,GAAG,CAAC,QAAS,UAAW,KAAK,CAAC,EAAGtO,EAAI,EAAE,MAAO5O,EAAKI,GAAM,CACrE,MAAMyO,EAAIwI,GAAGjX,CAAC,EACd,MAAO,SAASyO,CAAC,6BAA6BA,CAAC,uBACrD,EACI9O,EAAE,MAAM,8BAA8B,EACtC,MAAME,EAAoB,OAAO,OAAO,IAAI,EAC5C,IAAI,EAAI,EACR,UAAWG,KAAKwO,EAAE,KAChB3O,EAAEG,CAAC,EAAI,OAAO,GAAG,GACnBL,EAAE,MAAM,uBAAuB,EAC/B,UAAWK,KAAKwO,EAAE,KAAM,CACtB,MAAMC,EAAI5O,EAAEG,CAAC,EAAGC,EAAIgX,GAAGjX,CAAC,EAAGE,EAAIwO,EAAE1O,CAAC,EAAGG,EAAID,GAAG,MAAM,QAAU,WAAYE,EAAIF,GAAG,MAAM,SAAW,WAChGP,EAAE,MAAM,SAAS8O,CAAC,MAAM7O,EAAEI,CAAC,CAAC,GAAG,EAAGG,GAAKC,EAAIT,EAAE,MAAM;AAAA,cAC3C8O,CAAC;AAAA,gBACCxO,CAAC;AAAA,qDACoCwO,CAAC;AAAA;AAAA,kCAEpBxO,CAAC,qBAAqBA,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,cAK3CwO,CAAC;AAAA,gBACCxO,CAAC;AAAA,wBACOA,CAAC;AAAA;AAAA;AAAA,sBAGHA,CAAC,OAAOwO,CAAC;AAAA;AAAA;AAAA,OAGxB,EAAItO,EAAIR,EAAE,MAAM;AAAA,cACT8O,CAAC;AAAA,mDACoCA,CAAC;AAAA;AAAA,gCAEpBxO,CAAC,qBAAqBA,CAAC;AAAA;AAAA;AAAA;AAAA,cAIzCwO,CAAC;AAAA,gBACCxO,CAAC;AAAA,wBACOA,CAAC;AAAA;AAAA;AAAA,sBAGHA,CAAC,OAAOwO,CAAC;AAAA;AAAA;AAAA,OAGxB,EAAI9O,EAAE,MAAM;AAAA,gBACH8O,CAAC,cAAcxO,CAAC;AAAA,cAClBwO,CAAC;AAAA,mDACoCA,CAAC;AAAA;AAAA,gCAEpBxO,CAAC,qBAAqBA,CAAC;AAAA;AAAA;AAAA,eAGxCwO,CAAC,gBAAgBA,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKZxO,CAAC;AAAA;AAAA;AAAA;AAAA,cAIRwO,CAAC;AAAA,gBACCA,CAAC;AAAA,wBACOxO,CAAC;AAAA;AAAA,wBAEDA,CAAC,OAAOwO,CAAC;AAAA;AAAA;AAAA;AAAA,OAI1B,CACF,CACD9O,EAAE,MAAM,4BAA4B,EAAGA,EAAE,MAAM,iBAAiB,EAChE,MAAMI,EAAIJ,EAAE,UACZ,MAAO,CAACK,EAAGyO,IAAM1O,EAAE2O,EAAG1O,EAAGyO,CAAC,CAC9B,EACE,IAAI7W,EACJ,MAAM,EAAIwf,GAAItd,EAAI,CAACuc,GAAG,QAAS,EAAIvc,GAAKud,GAAG,MAAO,EAAI3hB,EAAE,SACxD,IAAIgK,EACJjK,EAAE,KAAK,MAAQ,CAACiZ,EAAG/O,IAAM,CACvBD,IAAMA,EAAI,EAAE,OACZ,MAAM8O,EAAIE,EAAE,MACZ,OAAO,EAAEF,CAAC,EAAI1U,GAAK,GAAK6F,GAAG,QAAU,IAAMA,EAAE,UAAY,IAAM/H,IAAMA,EAAId,EAAEpB,EAAE,KAAK,GAAIgZ,EAAI9W,EAAE8W,EAAG/O,CAAC,EAAG,EAAI0f,GAAG,CAAA,EAAI7Q,EAAGE,EAAG/O,EAAGD,EAAGjK,CAAC,EAAIiZ,GAAK,EAAEA,EAAG/O,CAAC,GAAK+O,EAAE,OAAO,KAAK,CAC3J,SAAU,SACV,KAAM,eACN,MAAOF,EACP,KAAM/Y,CACZ,CAAK,EAAGiZ,EACR,CACA,CAAC,EACD,SAAS8Q,GAAG/pB,EAAGC,EAAG,EAAG,EAAG,CACtB,UAAWkC,KAAKnC,EACd,GAAImC,EAAE,OAAO,SAAW,EACtB,OAAOlC,EAAE,MAAQkC,EAAE,MAAOlC,EAC9B,MAAMoB,EAAIrB,EAAE,OAAQmC,GAAM,CAACygB,GAAGzgB,CAAC,CAAC,EAChC,OAAOd,EAAE,SAAW,GAAKpB,EAAE,MAAQoB,EAAE,CAAC,EAAE,MAAOA,EAAE,CAAC,IAAMpB,EAAE,OAAO,KAAK,CACpE,KAAM,gBACN,MAAOA,EAAE,MACT,KAAM,EACN,OAAQD,EAAE,IAAKmC,GAAMA,EAAE,OAAO,IAAK,GAAM6gB,GAAG,EAAG,EAAGnC,GAAE,CAAE,CAAC,CAAC,CAC5D,CAAG,EAAG5gB,EACN,CACA,MAAM+pB,GAAqBvJ,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAClDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGohB,GAAErhB,EAAE,KAAM,QAAS,IAAMC,EAAE,QAAQ,KAAM,GAAM,EAAE,KAAK,QAAU,UAAU,EAAI,WAAa,MAAM,EAAGohB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,QAAQ,KAAM,GAAM,EAAE,KAAK,SAAW,UAAU,EAAI,WAAa,MAAM,EAAGohB,GAAErhB,EAAE,KAAM,SAAU,IAAM,CAChP,GAAIC,EAAE,QAAQ,MAAO,GAAM,EAAE,KAAK,MAAM,EACtC,OAAO,IAAI,IAAIA,EAAE,QAAQ,QAAS,GAAM,MAAM,KAAK,EAAE,KAAK,MAAM,CAAC,CAAC,CACrE,CAAA,EAAGohB,GAAErhB,EAAE,KAAM,UAAW,IAAM,CAC7B,GAAIC,EAAE,QAAQ,MAAO,GAAM,EAAE,KAAK,OAAO,EAAG,CAC1C,MAAM,EAAIA,EAAE,QAAQ,IAAKoB,GAAMA,EAAE,KAAK,OAAO,EAC7C,OAAO,IAAI,OAAO,KAAK,EAAE,IAAKA,GAAM6f,GAAG7f,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,CAChE,CACL,CAAG,EACD,MAAM,EAAIpB,EAAE,QAAQ,SAAW,EAAIA,EAAE,QAAQ,CAAC,EAAE,KAAK,IAAM,KAC3DD,EAAE,KAAK,MAAQ,CAAC,EAAGqB,IAAM,CACvB,GAAI,EACF,OAAO,EAAE,EAAGA,CAAC,EACf,IAAIc,EAAI,GACR,MAAM,EAAI,CAAA,EACV,UAAWkC,KAAKpE,EAAE,QAAS,CACzB,MAAM0G,EAAItC,EAAE,KAAK,IAAI,CACnB,MAAO,EAAE,MACT,OAAQ,CAAE,CACX,EAAEhD,CAAC,EACJ,GAAIsF,aAAa,QACf,EAAE,KAAKA,CAAC,EAAGxE,EAAI,OACZ,CACH,GAAIwE,EAAE,OAAO,SAAW,EACtB,OAAOA,EACT,EAAE,KAAKA,CAAC,CACT,CACF,CACD,OAAOxE,EAAI,QAAQ,IAAI,CAAC,EAAE,KAAMkC,GAAM0lB,GAAG1lB,EAAG,EAAGrE,EAAGqB,CAAC,CAAC,EAAI0oB,GAAG,EAAG,EAAG/pB,EAAGqB,CAAC,CACzE,CACA,CAAC,EAAG4oB,GAAqBxJ,EAAE,mBAAoB,CAACzgB,EAAGC,IAAM,CACvDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CACrC,MAAMqB,EAAI,EAAE,MAAOc,EAAIlC,EAAE,KAAK,KAAK,IAAI,CAAE,MAAOoB,EAAG,OAAQ,CAAE,CAAA,EAAI,CAAC,EAAG,EAAIpB,EAAE,MAAM,KAAK,IAAI,CAAE,MAAOoB,EAAG,OAAQ,EAAI,EAAE,CAAC,EACrH,OAAOc,aAAa,SAAW,aAAa,QAAU,QAAQ,IAAI,CAACA,EAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAG,CAAC,IAAM+nB,GAAG,EAAG,EAAG,CAAC,CAAC,EAAIA,GAAG,EAAG/nB,EAAG,CAAC,CACxH,CACA,CAAC,EACD,SAASgoB,GAAGnqB,EAAGC,EAAG,CAChB,GAAID,IAAMC,EACR,MAAO,CAAE,MAAO,GAAI,KAAMD,CAAC,EAC7B,GAAIA,aAAa,MAAQC,aAAa,MAAQ,CAACD,GAAK,CAACC,EACnD,MAAO,CAAE,MAAO,GAAI,KAAMD,CAAC,EAC7B,GAAI6hB,GAAG7hB,CAAC,GAAK6hB,GAAG5hB,CAAC,EAAG,CAClB,MAAM,EAAI,OAAO,KAAKA,CAAC,EAAG,EAAI,OAAO,KAAKD,CAAC,EAAE,OAAQmC,GAAM,EAAE,QAAQA,CAAC,IAAM,EAAE,EAAGd,EAAI,CAAE,GAAGrB,EAAG,GAAGC,GAChG,UAAWkC,KAAK,EAAG,CACjB,MAAM,EAAIgoB,GAAGnqB,EAAEmC,CAAC,EAAGlC,EAAEkC,CAAC,CAAC,EACvB,GAAI,CAAC,EAAE,MACL,MAAO,CACL,MAAO,GACP,eAAgB,CAACA,EAAG,GAAG,EAAE,cAAc,CACjD,EACMd,EAAEc,CAAC,EAAI,EAAE,IACV,CACD,MAAO,CAAE,MAAO,GAAI,KAAMd,CAAC,CAC5B,CACD,GAAI,MAAM,QAAQrB,CAAC,GAAK,MAAM,QAAQC,CAAC,EAAG,CACxC,GAAID,EAAE,SAAWC,EAAE,OACjB,MAAO,CAAE,MAAO,GAAI,eAAgB,CAAE,CAAA,EACxC,MAAM,EAAI,CAAA,EACV,QAAS,EAAI,EAAG,EAAID,EAAE,OAAQ,IAAK,CACjC,MAAMqB,EAAIrB,EAAE,CAAC,EAAGmC,EAAIlC,EAAE,CAAC,EAAG,EAAIkqB,GAAG9oB,EAAGc,CAAC,EACrC,GAAI,CAAC,EAAE,MACL,MAAO,CACL,MAAO,GACP,eAAgB,CAAC,EAAG,GAAG,EAAE,cAAc,CACjD,EACM,EAAE,KAAK,EAAE,IAAI,CACd,CACD,MAAO,CAAE,MAAO,GAAI,KAAM,CAAC,CAC5B,CACD,MAAO,CAAE,MAAO,GAAI,eAAgB,CAAE,CAAA,CACxC,CACA,SAAS+nB,GAAGlqB,EAAGC,EAAG,EAAG,CACnB,MAAM,EAAoB,IAAI,IAC9B,IAAIoB,EACJ,UAAWgD,KAAKpE,EAAE,OAChB,GAAIoE,EAAE,OAAS,oBAAqB,CAClChD,IAAMA,EAAIgD,GACV,UAAWsC,KAAKtC,EAAE,KAChB,EAAE,IAAIsC,CAAC,GAAK,EAAE,IAAIA,EAAG,CAAE,CAAA,EAAG,EAAE,IAAIA,CAAC,EAAE,EAAI,EAC1C,MACC3G,EAAE,OAAO,KAAKqE,CAAC,EACnB,UAAWA,KAAK,EAAE,OAChB,GAAIA,EAAE,OAAS,oBACb,UAAWsC,KAAKtC,EAAE,KAChB,EAAE,IAAIsC,CAAC,GAAK,EAAE,IAAIA,EAAG,CAAE,CAAA,EAAG,EAAE,IAAIA,CAAC,EAAE,EAAI,QAEzC3G,EAAE,OAAO,KAAKqE,CAAC,EACnB,MAAMlC,EAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAG,CAAAkC,CAAC,IAAMA,EAAE,GAAKA,EAAE,CAAC,EAAE,IAAI,CAAC,CAACA,CAAC,IAAMA,CAAC,EAC7D,GAAIlC,EAAE,QAAUd,GAAKrB,EAAE,OAAO,KAAK,CAAE,GAAGqB,EAAG,KAAMc,CAAG,CAAA,EAAGygB,GAAG5iB,CAAC,EACzD,OAAOA,EACT,MAAM,EAAImqB,GAAGlqB,EAAE,MAAO,EAAE,KAAK,EAC7B,GAAI,CAAC,EAAE,MACL,MAAM,IAAI,MAAM,wCAAwC,KAAK,UAAU,EAAE,cAAc,CAAC,EAAE,EAC5F,OAAOD,EAAE,MAAQ,EAAE,KAAMA,CAC3B,CACA,MAAMoqB,GAAqB3J,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CACjDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EACX,MAAM,EAAI6gB,GAAG7gB,EAAE,OAAO,EAAG,EAAI,IAAI,IAAI,CAAC,EACtCD,EAAE,KAAK,OAAS,EAAGA,EAAE,KAAK,QAAU,IAAI,OAAO,KAAK,EAAE,OAAQqB,GAAM0gB,GAAG,IAAI,OAAO1gB,CAAC,CAAC,EAAE,IAAKA,GAAM,OAAOA,GAAK,SAAW2gB,GAAG3gB,CAAC,EAAIA,EAAE,SAAQ,CAAE,EAAE,KAAK,GAAG,CAAC,IAAI,EAAGrB,EAAE,KAAK,MAAQ,CAACqB,EAAGc,IAAM,CACrL,MAAM,EAAId,EAAE,MACZ,OAAO,EAAE,IAAI,CAAC,GAAKA,EAAE,OAAO,KAAK,CAC/B,KAAM,gBACN,OAAQ,EACR,MAAO,EACP,KAAMrB,CACP,CAAA,EAAGqB,CACR,CACA,CAAC,EAAGgpB,GAAqB5J,EAAE,gBAAiB,CAACzgB,EAAGC,IAAM,CACpDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAQ,WAAYA,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CAChE,GAAI,EAAE,YAAc,WAClB,MAAM,IAAI2gB,GAAG3gB,EAAE,YAAY,IAAI,EACjC,MAAMqB,EAAIpB,EAAE,UAAU,EAAE,MAAO,CAAC,EAChC,GAAI,EAAE,MACJ,OAAQoB,aAAa,QAAUA,EAAI,QAAQ,QAAQA,CAAC,GAAG,KAAMsQ,IAAO,EAAE,MAAQA,EAAG,EAAE,SAAW,GAAI,EAAE,EACtG,GAAItQ,aAAa,QACf,MAAM,IAAIqf,GACZ,OAAO,EAAE,MAAQrf,EAAG,EAAE,SAAW,GAAI,CACzC,CACA,CAAC,EACD,SAASipB,GAAGtqB,EAAGC,EAAG,CAChB,OAAOA,IAAM,SAAWD,EAAE,OAAO,QAAUA,EAAE,UAAY,CAAE,OAAQ,CAAE,EAAE,MAAO,MAAQ,EAAGA,CAC3F,CACA,MAAMuqB,GAAqB9J,EAAE,eAAgB,CAACzgB,EAAGC,IAAM,CACrDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAQ,WAAYA,EAAE,KAAK,OAAS,WAAYqhB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,UAAU,KAAK,OAAyB,IAAI,IAAI,CAAC,GAAGA,EAAE,UAAU,KAAK,OAAQ,MAAM,CAAC,EAAI,MAAM,EAAGohB,GAAErhB,EAAE,KAAM,UAAW,IAAM,CAC3N,MAAM,EAAIC,EAAE,UAAU,KAAK,QAC3B,OAAO,EAAI,IAAI,OAAO,KAAKihB,GAAG,EAAE,MAAM,CAAC,KAAK,EAAI,MACpD,CAAG,EAAGlhB,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CAC3B,GAAIC,EAAE,UAAU,KAAK,QAAU,WAAY,CACzC,MAAMoB,EAAI,EAAE,MAAOc,EAAIlC,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,EAChD,OAAOkC,aAAa,QAAUA,EAAE,KAAM,GAAMmoB,GAAG,EAAGjpB,CAAC,CAAC,EAAIipB,GAAGnoB,EAAGd,CAAC,CAChE,CACD,OAAO,EAAE,QAAU,OAAS,EAAIpB,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,CAC7D,CACA,CAAC,EAAGuqB,GAAqB/J,EAAE,oBAAqB,CAACzgB,EAAGC,IAAM,CACxDsqB,GAAG,KAAKvqB,EAAGC,CAAC,EAAGohB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,UAAU,KAAK,MAAM,EAAGohB,GAAErhB,EAAE,KAAM,UAAW,IAAMC,EAAE,UAAU,KAAK,OAAO,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAMC,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,CAC7K,CAAC,EAAGwqB,GAAqBhK,EAAE,eAAgB,CAACzgB,EAAGC,IAAM,CACnDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGohB,GAAErhB,EAAE,KAAM,QAAS,IAAMC,EAAE,UAAU,KAAK,KAAK,EAAGohB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,UAAU,KAAK,MAAM,EAAGohB,GAAErhB,EAAE,KAAM,UAAW,IAAM,CAC7I,MAAM,EAAIC,EAAE,UAAU,KAAK,QAC3B,OAAO,EAAI,IAAI,OAAO,KAAKihB,GAAG,EAAE,MAAM,CAAC,SAAS,EAAI,MACxD,CAAG,EAAGG,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,UAAU,KAAK,OAAyB,IAAI,IAAI,CAAC,GAAGA,EAAE,UAAU,KAAK,OAAQ,IAAI,CAAC,EAAI,MAAM,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,EAAE,QAAU,KAAO,EAAIC,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,CAC1M,CAAC,EAAGyqB,GAAqBjK,EAAE,cAAe,CAACzgB,EAAGC,IAAM,CAClDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAQ,WAAYqhB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,UAAU,KAAK,MAAM,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CACpH,GAAI,EAAE,YAAc,WAClB,OAAOC,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,EAClC,GAAI,EAAE,QAAU,OACd,OAAO,EAAE,MAAQA,EAAE,aAAc,EACnC,MAAMoB,EAAIpB,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,EACnC,OAAOoB,aAAa,QAAUA,EAAE,KAAMc,GAAMwoB,GAAGxoB,EAAGlC,CAAC,CAAC,EAAI0qB,GAAGtpB,EAAGpB,CAAC,CACnE,CACA,CAAC,EACD,SAAS0qB,GAAG3qB,EAAGC,EAAG,CAChB,OAAOD,EAAE,QAAU,SAAWA,EAAE,MAAQC,EAAE,cAAeD,CAC3D,CACA,MAAM4qB,GAAqBnK,EAAE,eAAgB,CAACzgB,EAAGC,IAAM,CACrDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAQ,WAAYqhB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,UAAU,KAAK,MAAM,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,KAAO,EAAE,YAAc,YAAc,EAAE,QAAU,SAAW,EAAE,MAAQC,EAAE,cAAeA,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,EAClO,CAAC,EAAG4qB,GAAqBpK,EAAE,kBAAmB,CAACzgB,EAAGC,IAAM,CACtDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGohB,GAAErhB,EAAE,KAAM,SAAU,IAAM,CACtC,MAAM,EAAIC,EAAE,UAAU,KAAK,OAC3B,OAAO,EAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,OAAQ,GAAM,IAAM,MAAM,CAAC,EAAI,MAC7D,CAAG,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CAC3B,MAAMqB,EAAIpB,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,EACnC,OAAOoB,aAAa,QAAUA,EAAE,KAAMc,GAAM2oB,GAAG3oB,EAAGnC,CAAC,CAAC,EAAI8qB,GAAGzpB,EAAGrB,CAAC,CACnE,CACA,CAAC,EACD,SAAS8qB,GAAG9qB,EAAGC,EAAG,CAChB,MAAO,CAACD,EAAE,OAAO,QAAUA,EAAE,QAAU,QAAUA,EAAE,OAAO,KAAK,CAC7D,KAAM,eACN,SAAU,cACV,MAAOA,EAAE,MACT,KAAMC,CACP,CAAA,EAAGD,CACN,CACA,MAAM+qB,GAAqBtK,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAClDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAQ,WAAYqhB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,UAAU,KAAK,MAAM,EAAGohB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,UAAU,KAAK,MAAM,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CACxK,GAAI,EAAE,YAAc,WAClB,OAAOC,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,EAClC,MAAMoB,EAAIpB,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,EACnC,OAAOoB,aAAa,QAAUA,EAAE,KAAMc,IAAO,EAAE,MAAQA,EAAE,MAAOA,EAAE,OAAO,SAAW,EAAE,MAAQlC,EAAE,WAAW,CACzG,GAAG,EACH,MAAO,CACL,OAAQkC,EAAE,OAAO,IAAK,GAAM6gB,GAAG,EAAG,EAAGnC,GAAE,CAAE,CAAC,CAC3C,EACD,MAAO,EAAE,KACf,CAAK,EAAG,EAAE,OAAS,GAAI,EAAE,SAAW,IAAK,EAAE,GAAK,EAAE,MAAQxf,EAAE,MAAOA,EAAE,OAAO,SAAW,EAAE,MAAQpB,EAAE,WAAW,CACxG,GAAG,EACH,MAAO,CACL,OAAQoB,EAAE,OAAO,IAAKc,GAAM6gB,GAAG7gB,EAAG,EAAG0e,GAAE,CAAE,CAAC,CAC3C,EACD,MAAO,EAAE,KACf,CAAK,EAAG,EAAE,OAAS,GAAI,EAAE,SAAW,IAAK,EACzC,CACA,CAAC,EAAGmK,GAAqBvK,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/CsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGohB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,GAAG,KAAK,MAAM,EAAGohB,GAAErhB,EAAE,KAAM,QAAS,IAAMC,EAAE,GAAG,KAAK,KAAK,EAAGohB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,IAAI,KAAK,MAAM,EAAGohB,GAAErhB,EAAE,KAAM,aAAc,IAAMC,EAAE,GAAG,KAAK,UAAU,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CAChO,GAAI,EAAE,YAAc,WAAY,CAC9B,MAAMmC,EAAIlC,EAAE,IAAI,KAAK,IAAI,EAAG,CAAC,EAC7B,OAAOkC,aAAa,QAAUA,EAAE,KAAM,GAAM8oB,GAAG,EAAGhrB,EAAE,GAAI,CAAC,CAAC,EAAIgrB,GAAG9oB,EAAGlC,EAAE,GAAI,CAAC,CAC5E,CACD,MAAMoB,EAAIpB,EAAE,GAAG,KAAK,IAAI,EAAG,CAAC,EAC5B,OAAOoB,aAAa,QAAUA,EAAE,KAAMc,GAAM8oB,GAAG9oB,EAAGlC,EAAE,IAAK,CAAC,CAAC,EAAIgrB,GAAG5pB,EAAGpB,EAAE,IAAK,CAAC,CACjF,CACA,CAAC,EACD,SAASgrB,GAAGjrB,EAAGC,EAAG,EAAG,CACnB,OAAOD,EAAE,OAAO,QAAUA,EAAE,QAAU,GAAIA,GAAKC,EAAE,KAAK,IAAI,CAAE,MAAOD,EAAE,MAAO,OAAQA,EAAE,OAAQ,SAAUA,EAAE,UAAY,CAAC,CACzH,CACA,MAAMkrB,GAAqBzK,EAAE,eAAgB,CAACzgB,EAAGC,IAAM,CACrDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGohB,GAAErhB,EAAE,KAAM,aAAc,IAAMC,EAAE,UAAU,KAAK,UAAU,EAAGohB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,UAAU,KAAK,MAAM,EAAGohB,GAAErhB,EAAE,KAAM,QAAS,IAAMC,EAAE,WAAW,MAAM,KAAK,EAAGohB,GAAErhB,EAAE,KAAM,SAAU,IAAMC,EAAE,WAAW,MAAM,MAAM,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CAC/P,GAAI,EAAE,YAAc,WAClB,OAAOC,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,EAClC,MAAMoB,EAAIpB,EAAE,UAAU,KAAK,IAAI,EAAG,CAAC,EACnC,OAAOoB,aAAa,QAAUA,EAAE,KAAK8pB,EAAE,EAAIA,GAAG9pB,CAAC,CACnD,CACA,CAAC,EACD,SAAS8pB,GAAGnrB,EAAG,CACb,OAAOA,EAAE,MAAQ,OAAO,OAAOA,EAAE,KAAK,EAAGA,CAC3C,CACA,MAAMorB,GAAqB3K,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CACjDsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGohB,GAAErhB,EAAE,KAAM,YAAa,IAAM,CACzC,MAAM,EAAIC,EACV,OAAO,EAAE,eAAiB,EAAE,aAAeA,EAAE,OAAQ,GAAG,EAAE,YAC3D,CAAA,EAAGohB,GAAErhB,EAAE,KAAM,UAAW,IAAMA,EAAE,KAAK,WAAW,MAAM,OAAO,EAAGqhB,GAAErhB,EAAE,KAAM,aAAc,IAAMA,EAAE,KAAK,WAAW,MAAM,UAAU,EAAGqhB,GAAErhB,EAAE,KAAM,QAAS,IAAMA,EAAE,KAAK,WAAW,MAAM,OAAS,MAAM,EAAGqhB,GAAErhB,EAAE,KAAM,SAAU,IAAMA,EAAE,KAAK,WAAW,MAAM,QAAU,MAAM,EAAGA,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAMA,EAAE,KAAK,UAAU,KAAK,IAAI,EAAG,CAAC,CACrU,CAAC,EAAGqrB,GAAqB5K,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACjDmmB,GAAG,KAAKpmB,EAAGC,CAAC,EAAGsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAGD,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,EAAGA,EAAE,KAAK,MAAS,GAAM,CAC7E,MAAM,EAAI,EAAE,MAAOqB,EAAIpB,EAAE,GAAG,CAAC,EAC7B,GAAIoB,aAAa,QACf,OAAOA,EAAE,KAAMc,GAAMmpB,GAAGnpB,EAAG,EAAG,EAAGnC,CAAC,CAAC,EACrCsrB,GAAGjqB,EAAG,EAAG,EAAGrB,CAAC,CACjB,CACA,CAAC,EACD,SAASsrB,GAAGtrB,EAAGC,EAAG,EAAG,EAAG,CACtB,GAAI,CAACD,EAAG,CACN,MAAMqB,EAAI,CACR,KAAM,SACN,MAAO,EACP,KAAM,EAEN,KAAM,CAAC,GAAG,EAAE,KAAK,IAAI,MAAQ,EAAE,EAE/B,SAAU,CAAC,EAAE,KAAK,IAAI,KAE5B,EACI,EAAE,KAAK,IAAI,SAAWA,EAAE,OAAS,EAAE,KAAK,IAAI,QAASpB,EAAE,OAAO,KAAKijB,GAAG7hB,CAAC,CAAC,CACzE,CACH,CACA,IAAIkqB,GACJ,MAAMC,EAAG,CACP,aAAc,CACZ,KAAK,KAAuB,IAAI,QAAW,KAAK,OAAyB,IAAI,GAC9E,CACD,IAAIvrB,KAAM,EAAG,CACX,MAAM,EAAI,EAAE,CAAC,EACb,OAAO,KAAK,KAAK,IAAIA,EAAG,CAAC,EAAG,GAAK,OAAO,GAAK,UAAY,OAAQ,GAAK,KAAK,OAAO,IAAI,EAAE,GAAIA,CAAC,EAAG,IACjG,CACD,OAAQ,CACN,OAAO,KAAK,KAAuB,IAAI,QAAW,KAAK,OAAyB,IAAI,IAAO,IAC5F,CACD,OAAOA,EAAG,CACR,MAAM,EAAI,KAAK,KAAK,IAAIA,CAAC,EACzB,OAAO,GAAK,OAAO,GAAK,UAAY,OAAQ,GAAK,KAAK,OAAO,OAAO,EAAE,EAAE,EAAG,KAAK,KAAK,OAAOA,CAAC,EAAG,IACjG,CACD,IAAIA,EAAG,CACL,MAAM,EAAIA,EAAE,KAAK,OACjB,GAAI,EAAG,CACL,MAAM,EAAI,CAAE,GAAG,KAAK,IAAI,CAAC,GAAK,CAAA,GAC9B,OAAO,EAAE,GACT,MAAMoB,EAAI,CAAE,GAAG,EAAG,GAAG,KAAK,KAAK,IAAIpB,CAAC,GACpC,OAAO,OAAO,KAAKoB,CAAC,EAAE,OAASA,EAAI,MACpC,CACD,OAAO,KAAK,KAAK,IAAIpB,CAAC,CACvB,CACD,IAAIA,EAAG,CACL,OAAO,KAAK,KAAK,IAAIA,CAAC,CACvB,CACH,CACA,SAASwrB,IAAK,CACZ,OAAO,IAAID,EACb,EACCD,GAAK,YAAY,uBAAyBA,GAAG,qBAAuBE,GAAE,GACvE,MAAMC,GAAK,WAAW,qBAEtB,SAASC,GAAG3rB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAAS2rB,GAAG5rB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAAS4rB,GAAG7rB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAAS6rB,GAAG9rB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAAS8rB,GAAG/rB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,QAAS,KACT,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAAS+rB,GAAGhsB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,QAAS,KACT,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASgsB,GAAGjsB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,QAAS,KACT,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASisB,GAAGlsB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,MACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASksB,GAAGnsB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASmsB,GAAGpsB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASosB,GAAGrsB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASqsB,GAAGtsB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASssB,GAAGvsB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASusB,GAAGxsB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,MACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASwsB,GAAGzsB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASysB,GAAG1sB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAAS0sB,GAAG3sB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAAS2sB,GAAG5sB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAAS4sB,GAAG7sB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAAS6sB,GAAG9sB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAAS8sB,GAAG/sB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,YACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAAS+sB,GAAGhtB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASgtB,GAAGjtB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,MACR,MAAO,gBACP,MAAO,GACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASitB,GAAGltB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,WACR,MAAO,gBACP,OAAQ,GACR,MAAO,GACP,UAAW,KACX,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASktB,GAAGntB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASmtB,GAAGptB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,UAAW,KACX,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASotB,GAAGrtB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,WACR,MAAO,gBACP,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASqtB,GAAGttB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,OAAQ,CAAE,EACV,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASstB,GAAGvtB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,MAAO,gBACP,MAAO,GACP,OAAQ,UACR,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASutB,GAAGxtB,EAAG,CACb,OAAO,IAAIA,EAAE,CACX,KAAM,SACV,CAAG,CACH,CAEA,SAASytB,GAAGztB,EAAGC,EAAG,CAChB,OAAO,IAAID,EAAE,CACX,KAAM,QACN,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CAEA,SAASytB,GAAG1tB,EAAGC,EAAG,CAChB,OAAO,IAAIqmB,GAAG,CACZ,MAAO,YACP,GAAGpE,GAAEjiB,CAAC,EACN,MAAOD,EACP,UAAW,EACf,CAAG,CACH,CAEA,SAAS2tB,GAAG3tB,EAAGC,EAAG,CAChB,OAAO,IAAIqmB,GAAG,CACZ,MAAO,YACP,GAAGpE,GAAEjiB,CAAC,EACN,MAAOD,EACP,UAAW,EACf,CAAG,CACH,CAEA,SAAS4tB,GAAG5tB,EAAGC,EAAG,CAChB,OAAO,IAAIsmB,GAAG,CACZ,MAAO,eACP,GAAGrE,GAAEjiB,CAAC,EACN,MAAOD,EACP,UAAW,EACf,CAAG,CACH,CAEA,SAAS6tB,GAAG7tB,EAAGC,EAAG,CAChB,OAAO,IAAIsmB,GAAG,CACZ,MAAO,eACP,GAAGrE,GAAEjiB,CAAC,EACN,MAAOD,EACP,UAAW,EACf,CAAG,CACH,CAEA,SAAS8tB,GAAG9tB,EAAGC,EAAG,CAChB,OAAO,IAAIumB,GAAG,CACZ,MAAO,cACP,GAAGtE,GAAEjiB,CAAC,EACN,MAAOD,CACX,CAAG,CACH,CAEA,SAAS+tB,GAAG/tB,EAAGC,EAAG,CAChB,OAAO,IAAIymB,GAAG,CACZ,MAAO,aACP,GAAGxE,GAAEjiB,CAAC,EACN,QAASD,CACb,CAAG,CACH,CAEA,SAASguB,GAAGhuB,EAAGC,EAAG,CAChB,OAAO,IAAI0mB,GAAG,CACZ,MAAO,aACP,GAAGzE,GAAEjiB,CAAC,EACN,QAASD,CACb,CAAG,CACH,CAEA,SAASiuB,GAAGjuB,EAAGC,EAAG,CAChB,OAAO,IAAI2mB,GAAG,CACZ,MAAO,gBACP,GAAG1E,GAAEjiB,CAAC,EACN,OAAQD,CACZ,CAAG,CACH,CAEA,SAASkuB,GAAGluB,EAAGC,EAAG,CAChB,OAAO,IAAI6mB,GAAG,CACZ,MAAO,gBACP,OAAQ,QACR,GAAG5E,GAAEjiB,CAAC,EACN,QAASD,CACb,CAAG,CACH,CAEA,SAASmuB,GAAGnuB,EAAG,CACb,OAAO,IAAI+mB,GAAG,CACZ,MAAO,gBACP,OAAQ,YACR,GAAG7E,GAAEliB,CAAC,CACV,CAAG,CACH,CAEA,SAASouB,GAAGpuB,EAAG,CACb,OAAO,IAAIgnB,GAAG,CACZ,MAAO,gBACP,OAAQ,YACR,GAAG9E,GAAEliB,CAAC,CACV,CAAG,CACH,CAEA,SAASquB,GAAGruB,EAAGC,EAAG,CAChB,OAAO,IAAIgnB,GAAG,CACZ,MAAO,gBACP,OAAQ,WACR,GAAG/E,GAAEjiB,CAAC,EACN,SAAUD,CACd,CAAG,CACH,CAEA,SAASsuB,GAAGtuB,EAAGC,EAAG,CAChB,OAAO,IAAIinB,GAAG,CACZ,MAAO,gBACP,OAAQ,cACR,GAAGhF,GAAEjiB,CAAC,EACN,OAAQD,CACZ,CAAG,CACH,CAEA,SAASuuB,GAAGvuB,EAAGC,EAAG,CAChB,OAAO,IAAIknB,GAAG,CACZ,MAAO,gBACP,OAAQ,YACR,GAAGjF,GAAEjiB,CAAC,EACN,OAAQD,CACZ,CAAG,CACH,CAEA,SAASwuB,GAAGxuB,EAAG,CACb,OAAO,IAAIonB,GAAG,CACZ,MAAO,YACP,GAAIpnB,CACR,CAAG,CACH,CAEA,SAASyuB,GAAGzuB,EAAG,CACb,OAAuBwuB,GAAIvuB,GAAMA,EAAE,UAAUD,CAAC,CAAC,CACjD,CAEA,SAAS0uB,IAAK,CACZ,OAAuBF,GAAIxuB,GAAMA,EAAE,KAAM,CAAA,CAC3C,CAEA,SAAS2uB,IAAK,CACZ,OAAuBH,GAAIxuB,GAAMA,EAAE,YAAa,CAAA,CAClD,CAEA,SAAS4uB,IAAK,CACZ,OAAuBJ,GAAIxuB,GAAMA,EAAE,YAAa,CAAA,CAClD,CAEA,SAAS6uB,IAAK,CACZ,OAAuBL,GAAIxuB,GAAMyhB,GAAGzhB,CAAC,CAAC,CACxC,CAEA,SAAS8uB,GAAG9uB,EAAGC,EAAG,EAAG,CACnB,OAAO,IAAID,EAAE,CACX,KAAM,QACN,QAASC,EAIT,GAAGiiB,GAAE,CAAC,CACV,CAAG,CACH,CAEA,SAAS6M,GAAG/uB,EAAGC,EAAG,EAAG,CACnB,OAAO,IAAID,EAAE,CACX,KAAM,SACN,MAAO,SACP,GAAIC,EACJ,GAAGiiB,GAAE,CAAC,CACV,CAAG,CACH,CAEA,SAAS8M,GAAGhvB,EAAGC,EAAG,CAChB,MAAM,EAAoBgvB,GAAI,IAAO,EAAE,SAAY5tB,GAAM,CACvD,GAAI,OAAOA,GAAK,SACd,EAAE,OAAO,KAAK6hB,GAAG7hB,EAAG,EAAE,MAAO,EAAE,KAAK,GAAG,CAAC,MACrC,CACH,MAAMc,EAAId,EACVc,EAAE,QAAUA,EAAE,SAAW,IAAKA,EAAE,OAASA,EAAE,KAAO,UAAWA,EAAE,QAAUA,EAAE,MAAQ,EAAE,OAAQA,EAAE,OAASA,EAAE,KAAO,GAAIA,EAAE,WAAaA,EAAE,SAAW,CAAC,EAAE,KAAK,IAAI,OAAQ,EAAE,OAAO,KAAK+gB,GAAG/gB,CAAC,CAAC,CACzL,CACL,EAAKnC,EAAE,EAAE,MAAO,CAAC,GAAIC,CAAC,EACpB,OAAO,CACT,CAEA,SAASgvB,GAAGjvB,EAAGC,EAAG,CAChB,MAAM,EAAI,IAAImmB,GAAG,CACf,MAAO,SACP,GAAGlE,GAAEjiB,CAAC,CACV,CAAG,EACD,OAAO,EAAE,KAAK,MAAQD,EAAG,CAC3B,CACA,SAASkvB,GAAGlvB,EAAG,CACb,IAAIC,EAAID,GAAG,QAAU,gBACrB,OAAOC,IAAM,YAAcA,EAAI,YAAaA,IAAM,YAAcA,EAAI,YAAa,CAC/E,WAAYD,EAAE,YAAc,CAAE,EAC9B,iBAAkBA,GAAG,UAAY0rB,GACjC,OAAQzrB,EACR,gBAAiBD,GAAG,iBAAmB,QACvC,SAAUA,GAAG,WAAa,IAAM,CACpC,GACI,GAAIA,GAAG,IAAM,SACb,QAAS,EACT,KAAsB,IAAI,IAC1B,OAAQA,GAAG,QAAU,MACrB,OAAQA,GAAG,QAAU,SACrB,SAAUA,GAAG,UAAY,MAC7B,CACA,CACA,SAASmvB,GAAEnvB,EAAGC,EAAG,EAAI,CAAE,KAAM,CAAE,EAAE,WAAY,CAAA,GAAM,CACjD,IAAI,EACJ,MAAMoB,EAAIrB,EAAE,KAAK,IAAKmC,EAAIlC,EAAE,KAAK,IAAID,CAAC,EACtC,GAAImC,EACF,OAAOA,EAAE,QAAS,EAAE,WAAW,SAASnC,CAAC,IAAMmC,EAAE,MAAQ,EAAE,MAAOA,EAAE,OACtE,MAAM,EAAI,CAAE,OAAQ,CAAA,EAAI,MAAO,EAAG,MAAO,OAAQ,KAAM,EAAE,IAAI,EAC7DlC,EAAE,KAAK,IAAID,EAAG,CAAC,EACf,MAAMqE,EAAIrE,EAAE,KAAK,eAAY,EAC7B,GAAIqE,EACF,EAAE,OAASA,MACR,CACH,MAAM,EAAI,CACR,GAAG,EACH,WAAY,CAAC,GAAG,EAAE,WAAYrE,CAAC,EAC/B,KAAM,EAAE,IACd,EACI,GAAIA,EAAE,KAAK,kBACTA,EAAE,KAAK,kBAAkBC,EAAG,EAAE,OAAQ,CAAC,MACpC,CACH,MAAMgZ,EAAI,EAAE,OAAQ/O,EAAIjK,EAAE,WAAWoB,EAAE,IAAI,EAC3C,GAAI,CAAC6I,EACH,MAAM,IAAI,MAAM,uDAAuD7I,EAAE,IAAI,EAAE,EACjF6I,EAAElK,EAAGC,EAAGgZ,EAAG,CAAC,CACb,CACD,MAAMhP,EAAIjK,EAAE,KAAK,OACjBiK,IAAM,EAAE,MAAQ,EAAE,IAAMA,GAAIklB,GAAEllB,EAAGhK,EAAG,CAAC,EAAGA,EAAE,KAAK,IAAIgK,CAAC,EAAE,SAAW,GAClE,CACD,MAAMtD,EAAI1G,EAAE,iBAAiB,IAAID,CAAC,EAClC,OAAO2G,GAAK,OAAO,OAAO,EAAE,OAAQA,CAAC,EAAG1G,EAAE,KAAO,SAAWmvB,GAAEpvB,CAAC,IAAM,OAAO,EAAE,OAAO,SAAU,OAAO,EAAE,OAAO,SAAUC,EAAE,KAAO,SAAW,cAAe,EAAE,UAAY,EAAI,EAAE,QAAQ,UAAY,EAAE,QAAU,EAAE,OAAO,YAAa,OAAO,EAAE,OAAO,UAAWA,EAAE,KAAK,IAAID,CAAC,EAAE,MACjR,CACA,SAASqvB,GAAGrvB,EAAGC,EAAG,CAChB,MAAM,EAAID,EAAE,KAAK,IAAIC,CAAC,EACtB,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,2CAA2C,EAC7D,MAAM,EAAoB,IAAI,IAC9B,UAAW,KAAKD,EAAE,KAAK,QAAO,EAAI,CAChC,MAAMqE,EAAIrE,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC,GAAG,GACxC,GAAIqE,EAAG,CACL,MAAMsC,EAAI,EAAE,IAAItC,CAAC,EACjB,GAAIsC,GAAKA,IAAM,EAAE,CAAC,EAChB,MAAM,IAAI,MAAM,wBAAwBtC,CAAC,mHAAmH,EAC9J,EAAE,IAAIA,EAAG,EAAE,CAAC,CAAC,CACd,CACF,CACD,MAAMhD,EAAK,GAAM,CACf,MAAMgD,EAAIrE,EAAE,SAAW,gBAAkB,QAAU,cACnD,GAAIA,EAAE,SAAU,CACd,MAAMiK,EAAIjK,EAAE,SAAS,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,GAAIiZ,EAAIjZ,EAAE,SAAS,MAAS+Y,GAAMA,GAC3E,GAAI9O,EACF,MAAO,CAAE,IAAKgP,EAAEhP,CAAC,CAAC,EACpB,MAAMC,EAAI,EAAE,CAAC,EAAE,OAAS,EAAE,CAAC,EAAE,OAAO,IAAM,SAASlK,EAAE,SAAS,GAC9D,OAAO,EAAE,CAAC,EAAE,MAAQkK,EAAG,CAAE,MAAOA,EAAG,IAAK,GAAG+O,EAAE,UAAU,CAAC,KAAK5U,CAAC,IAAI6F,CAAC,GACpE,CACD,GAAI,EAAE,CAAC,IAAM,EACX,MAAO,CAAE,IAAK,KAChB,MAAM,EAAI,KAAK7F,CAAC,IAAK,EAAI,EAAE,CAAC,EAAE,OAAO,IAAM,WAAWrE,EAAE,SAAS,GACjE,MAAO,CAAE,MAAO,EAAG,IAAK,EAAI,CAAC,CACjC,EAAKmC,EAAK,GAAM,CACZ,GAAI,EAAE,CAAC,EAAE,OAAO,KACd,OACF,MAAMkC,EAAI,EAAE,CAAC,EAAG,CAAE,IAAKsC,EAAG,MAAOoD,CAAC,EAAK1I,EAAE,CAAC,EAC1CgD,EAAE,IAAM,CAAE,GAAGA,EAAE,QAAU0F,IAAM1F,EAAE,MAAQ0F,GACzC,MAAMC,EAAI3F,EAAE,OACZ,UAAW4F,KAAKD,EACd,OAAOA,EAAEC,CAAC,EACZD,EAAE,KAAOrD,CACb,EACE,GAAI3G,EAAE,SAAW,QACf,UAAW,KAAKA,EAAE,KAAK,QAAO,EAAI,CAChC,MAAMqE,EAAI,EAAE,CAAC,EACb,GAAIA,EAAE,MACJ,MAAM,IAAI,MAAM,qBAAqBA,EAAE,OAAO,KAAK,GAAG,CAAC;AAAA;AAAA,iFAEkB,CAC5E,CACH,UAAW,KAAKrE,EAAE,KAAK,QAAO,EAAI,CAChC,MAAMqE,EAAI,EAAE,CAAC,EACb,GAAIpE,IAAM,EAAE,CAAC,EAAG,CACdkC,EAAE,CAAC,EACH,QACD,CACD,GAAInC,EAAE,SAAU,CACd,MAAM,EAAIA,EAAE,SAAS,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,GACzC,GAAIC,IAAM,EAAE,CAAC,GAAK,EAAG,CACnBkC,EAAE,CAAC,EACH,QACD,CACF,CACD,GAAInC,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC,GAAG,GAAI,CACpCmC,EAAE,CAAC,EACH,QACD,CACD,GAAIkC,EAAE,MAAO,CACXlC,EAAE,CAAC,EACH,QACD,CACD,GAAIkC,EAAE,MAAQ,GAAKrE,EAAE,SAAW,MAAO,CACrCmC,EAAE,CAAC,EACH,QACD,CACF,CACH,CACA,SAASmtB,GAAGtvB,EAAGC,EAAG,CAChB,MAAM,EAAID,EAAE,KAAK,IAAIC,CAAC,EACtB,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,2CAA2C,EAC7D,MAAM,EAAKoE,GAAM,CACf,MAAMsC,EAAI3G,EAAE,KAAK,IAAIqE,CAAC,EACtB,GAAIsC,EAAE,MAAQ,KACZ,OACF,MAAMoD,EAAIpD,EAAE,KAAOA,EAAE,OAAQqD,EAAI,CAAE,GAAGD,CAAG,EAAEE,EAAItD,EAAE,IACjD,GAAIA,EAAE,IAAM,KAAMsD,EAAG,CACnB,EAAEA,CAAC,EACH,MAAMC,EAAIlK,EAAE,KAAK,IAAIiK,CAAC,EAAG,EAAIC,EAAE,OAC/B,GAAI,EAAE,OAASlK,EAAE,SAAW,YAAcA,EAAE,SAAW,YAAcA,EAAE,SAAW,gBAAkB+J,EAAE,MAAQA,EAAE,OAAS,CAAA,EAAIA,EAAE,MAAM,KAAK,CAAC,GAAK,OAAO,OAAOA,EAAG,CAAC,EAAG,OAAO,OAAOA,EAAGC,CAAC,EAAG3F,EAAE,KAAK,SAAW4F,EAC1M,UAAWG,KAAKL,EACdK,IAAM,QAAUA,IAAM,SAAWA,KAAKJ,GAAK,OAAOD,EAAEK,CAAC,EACzD,GAAI,EAAE,MAAQF,EAAE,IACd,UAAWE,KAAKL,EACdK,IAAM,QAAUA,IAAM,SAAWA,KAAKF,EAAE,KAAO,KAAK,UAAUH,EAAEK,CAAC,CAAC,IAAM,KAAK,UAAUF,EAAE,IAAIE,CAAC,CAAC,GAAK,OAAOL,EAAEK,CAAC,CACnH,CACD,MAAM,EAAI/F,EAAE,KAAK,OACjB,GAAI,GAAK,IAAM4F,EAAG,CAChB,EAAE,CAAC,EACH,MAAMC,EAAIlK,EAAE,KAAK,IAAI,CAAC,EACtB,GAAIkK,GAAG,OAAO,OAASH,EAAE,KAAOG,EAAE,OAAO,KAAMA,EAAE,KAC/C,UAAW,KAAKH,EACd,IAAM,QAAU,IAAM,SAAW,KAAKG,EAAE,KAAO,KAAK,UAAUH,EAAE,CAAC,CAAC,IAAM,KAAK,UAAUG,EAAE,IAAI,CAAC,CAAC,GAAK,OAAOH,EAAE,CAAC,CACnH,CACD/J,EAAE,SAAS,CACT,UAAWqE,EACX,WAAY0F,EACZ,KAAMpD,EAAE,MAAQ,CAAE,CACxB,CAAK,CACL,EACE,UAAWtC,IAAK,CAAC,GAAGrE,EAAE,KAAK,QAAO,CAAE,EAAE,QAAS,EAC7C,EAAEqE,EAAE,CAAC,CAAC,EACR,MAAMhD,EAAI,CAAA,EACV,GAAIrB,EAAE,SAAW,gBAAkBqB,EAAE,QAAU,+CAAiDrB,EAAE,SAAW,WAAaqB,EAAE,QAAU,0CAA4CrB,EAAE,SAAW,WAAaqB,EAAE,QAAU,0CAA4CrB,EAAE,OAAQA,EAAE,UAAU,IAAK,CAC7R,MAAMqE,EAAIrE,EAAE,SAAS,SAAS,IAAIC,CAAC,GAAG,GACtC,GAAI,CAACoE,EACH,MAAM,IAAI,MAAM,oCAAoC,EACtDhD,EAAE,IAAMrB,EAAE,SAAS,IAAIqE,CAAC,CACzB,CACD,OAAO,OAAOhD,EAAG,EAAE,KAAO,EAAE,MAAM,EAClC,MAAMc,EAAInC,EAAE,iBAAiB,IAAIC,CAAC,GAAG,GACrCkC,IAAM,QAAUd,EAAE,KAAOc,GAAK,OAAOd,EAAE,GACvC,MAAM,EAAIrB,EAAE,UAAU,MAAQ,CAAA,EAC9B,UAAWqE,KAAKrE,EAAE,KAAK,QAAO,EAAI,CAChC,MAAM2G,EAAItC,EAAE,CAAC,EACbsC,EAAE,KAAOA,EAAE,QAAUA,EAAE,IAAI,KAAOA,EAAE,OAAS,OAAOA,EAAE,IAAI,GAAI,EAAEA,EAAE,KAAK,EAAIA,EAAE,IAC9E,CACD3G,EAAE,UAAY,OAAO,KAAK,CAAC,EAAE,OAAS,IAAMA,EAAE,SAAW,gBAAkBqB,EAAE,MAAQ,EAAIA,EAAE,YAAc,GACzG,GAAI,CACF,MAAMgD,EAAI,KAAK,MAAM,KAAK,UAAUhD,CAAC,CAAC,EACtC,OAAO,OAAO,eAAegD,EAAG,YAAa,CAC3C,MAAO,CACL,GAAGpE,EAAE,WAAW,EAChB,WAAY,CACV,MAAOsvB,GAAGtvB,EAAG,QAASD,EAAE,UAAU,EAClC,OAAQuvB,GAAGtvB,EAAG,SAAUD,EAAE,UAAU,CACrC,CACF,EACD,WAAY,GACZ,SAAU,EACX,CAAA,EAAGqE,CACR,MAAU,CACN,MAAM,IAAI,MAAM,kCAAkC,CACnD,CACH,CACA,SAAS+qB,GAAEpvB,EAAGC,EAAG,CACf,MAAM,EAAIA,GAAK,CAAE,KAAsB,IAAI,GAAK,EAChD,GAAI,EAAE,KAAK,IAAID,CAAC,EACd,MAAO,GACT,EAAE,KAAK,IAAIA,CAAC,EACZ,MAAM,EAAIA,EAAE,KAAK,IACjB,GAAI,EAAE,OAAS,YACb,MAAO,GACT,GAAI,EAAE,OAAS,QACb,OAAOovB,GAAE,EAAE,QAAS,CAAC,EACvB,GAAI,EAAE,OAAS,MACb,OAAOA,GAAE,EAAE,UAAW,CAAC,EACzB,GAAI,EAAE,OAAS,OACb,OAAOA,GAAE,EAAE,OAAQ,EAAE,CAAC,EACxB,GAAI,EAAE,OAAS,WAAa,EAAE,OAAS,YAAc,EAAE,OAAS,eAAiB,EAAE,OAAS,YAAc,EAAE,OAAS,YAAc,EAAE,OAAS,WAAa,EAAE,OAAS,WACpK,OAAOA,GAAE,EAAE,UAAW,CAAC,EACzB,GAAI,EAAE,OAAS,eACb,OAAOA,GAAE,EAAE,KAAM,CAAC,GAAKA,GAAE,EAAE,MAAO,CAAC,EACrC,GAAI,EAAE,OAAS,UAAY,EAAE,OAAS,MACpC,OAAOA,GAAE,EAAE,QAAS,CAAC,GAAKA,GAAE,EAAE,UAAW,CAAC,EAC5C,GAAI,EAAE,OAAS,OACb,OAAOpvB,EAAE,KAAK,OAAO,IAAI,WAAW,EAAI,GAAKovB,GAAE,EAAE,GAAI,CAAC,GAAKA,GAAE,EAAE,IAAK,CAAC,EACvE,GAAI,EAAE,OAAS,SAAU,CACvB,UAAW/tB,KAAK,EAAE,MAChB,GAAI+tB,GAAE,EAAE,MAAM/tB,CAAC,EAAG,CAAC,EACjB,MAAO,GACX,MAAO,EACR,CACD,GAAI,EAAE,OAAS,QAAS,CACtB,UAAWA,KAAK,EAAE,QAChB,GAAI+tB,GAAE/tB,EAAG,CAAC,EACR,MAAO,GACX,MAAO,EACR,CACD,GAAI,EAAE,OAAS,QAAS,CACtB,UAAWA,KAAK,EAAE,MAChB,GAAI+tB,GAAE/tB,EAAG,CAAC,EACR,MAAO,GACX,MAAO,CAAC,EAAE,EAAE,MAAQ+tB,GAAE,EAAE,KAAM,CAAC,EAChC,CACD,MAAO,EACT,CACA,MAAMI,GAAK,CAACxvB,EAAGC,EAAI,CAAE,IAAM,GAAM,CAC/B,MAAM,EAAIivB,GAAG,CAAE,GAAG,EAAG,WAAYjvB,CAAC,CAAE,EACpC,OAAOkvB,GAAEnvB,EAAG,CAAC,EAAGqvB,GAAG,EAAGrvB,CAAC,EAAGsvB,GAAG,EAAGtvB,CAAC,CACnC,EAAGuvB,GAAK,CAACvvB,EAAGC,EAAG,EAAI,CAAA,IAAQ,GAAM,CAC/B,KAAM,CAAE,eAAgBoB,EAAG,OAAQc,CAAC,EAAK,GAAK,GAAI,EAAI+sB,GAAG,CAAE,GAAG7tB,GAAK,CAAA,EAAI,OAAQc,EAAG,GAAIlC,EAAG,WAAY,CAAC,CAAE,EACxG,OAAOkvB,GAAEnvB,EAAG,CAAC,EAAGqvB,GAAG,EAAGrvB,CAAC,EAAGsvB,GAAG,EAAGtvB,CAAC,CACnC,EAAGyvB,GAAK,CACN,KAAM,OACN,IAAK,MACL,SAAU,YACV,YAAa,cACb,MAAO,EAET,EAAGC,GAAK,CAAC1vB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAI,EACVA,EAAE,KAAO,SACT,KAAM,CAAE,QAASc,EAAG,QAAS,EAAG,OAAQkC,EAAG,SAAUsC,EAAG,gBAAiBoD,CAAC,EAAK/J,EAAE,KAAK,IACtF,GAAI,OAAOmC,GAAK,WAAad,EAAE,UAAYc,GAAI,OAAO,GAAK,WAAad,EAAE,UAAY,GAAIgD,IAAMhD,EAAE,OAASouB,GAAGprB,CAAC,GAAKA,EAAGhD,EAAE,SAAW,IAAM,OAAOA,EAAE,OAAQgD,IAAM,QAAU,OAAOhD,EAAE,QAAS0I,IAAM1I,EAAE,gBAAkB0I,GAAIpD,GAAKA,EAAE,KAAO,EAAG,CAC1O,MAAMqD,EAAI,CAAC,GAAGrD,CAAC,EACfqD,EAAE,SAAW,EAAI3I,EAAE,QAAU2I,EAAE,CAAC,EAAE,OAASA,EAAE,OAAS,IAAM3I,EAAE,MAAQ,CACpE,GAAG2I,EAAE,IAAKC,IAAO,CACf,GAAGhK,EAAE,SAAW,YAAcA,EAAE,SAAW,YAAcA,EAAE,SAAW,cAAgB,CAAE,KAAM,QAAU,EAAG,CAAE,EAC7G,QAASgK,EAAE,MACnB,EAAQ,CACR,EACG,CACH,EAAG0lB,GAAK,CAAC3vB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAI,EAAG,CAAE,QAASc,EAAG,QAAS,EAAG,OAAQkC,EAAG,WAAYsC,EAAG,iBAAkBoD,EAAG,iBAAkBC,CAAC,EAAKhK,EAAE,KAAK,IACrH,OAAOqE,GAAK,UAAYA,EAAE,SAAS,KAAK,EAAIhD,EAAE,KAAO,UAAYA,EAAE,KAAO,SAC1E,MAAM4I,EAAI,OAAOD,GAAK,UAAYA,IAAM7H,GAAK,OAAO,mBAAoB,EAAI,OAAO4H,GAAK,UAAYA,IAAM,GAAK,OAAO,mBAAoBG,EAAIjK,EAAE,SAAW,YAAcA,EAAE,SAAW,cACtLgK,EAAIC,GAAK7I,EAAE,QAAU2I,EAAG3I,EAAE,iBAAmB,IAAMA,EAAE,iBAAmB2I,EAAI,OAAO7H,GAAK,WAAad,EAAE,QAAUc,GAAI,EAAI+H,GAAK7I,EAAE,QAAU0I,EAAG1I,EAAE,iBAAmB,IAAMA,EAAE,iBAAmB0I,EAAI,OAAO,GAAK,WAAa1I,EAAE,QAAU,GAAI,OAAOsF,GAAK,WAAatF,EAAE,WAAasF,EACpR,EAAGipB,GAAK,CAAC5vB,EAAGC,EAAG,EAAG,IAAM,CACtB,EAAE,KAAO,SACX,EAAG4vB,GAAK,CAAC7vB,EAAGC,EAAG,EAAG,IAAM,CACtB,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,6CAA6C,CACjE,EAAG6vB,GAAK,CAAC9vB,EAAGC,EAAG,EAAG,IAAM,CACtB,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,8CAA8C,CAClE,EAAG8vB,GAAK,CAAC/vB,EAAGC,EAAG,EAAG,IAAM,CACtBA,EAAE,SAAW,eAAiB,EAAE,KAAO,SAAU,EAAE,SAAW,GAAI,EAAE,KAAO,CAAC,IAAI,GAAK,EAAE,KAAO,MAChG,EAAG+vB,GAAK,CAAChwB,EAAGC,EAAG,EAAG,IAAM,CACtB,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,gDAAgD,CACpE,EAAGgwB,GAAK,CAACjwB,EAAGC,EAAG,EAAG,IAAM,CACtB,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,2CAA2C,CAC/D,EAAGiwB,GAAK,CAAClwB,EAAGC,EAAG,EAAG,IAAM,CACtB,EAAE,IAAM,EACV,EAAGkwB,GAAK,CAACnwB,EAAGC,EAAG,EAAG,IAAM,CACxB,EAAGmwB,GAAK,CAACpwB,EAAGC,EAAG,EAAG,IAAM,CACxB,EAAGowB,GAAK,CAACrwB,EAAGC,EAAG,EAAG,IAAM,CACtB,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,2CAA2C,CAC/D,EAAGqwB,GAAK,CAACtwB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IAAKmC,EAAI2e,GAAGzf,EAAE,OAAO,EACtCc,EAAE,MAAO,GAAM,OAAO,GAAK,QAAQ,IAAM,EAAE,KAAO,UAAWA,EAAE,MAAO,GAAM,OAAO,GAAK,QAAQ,IAAM,EAAE,KAAO,UAAW,EAAE,KAAOA,CACrI,EAAGouB,GAAK,CAACvwB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IAAKmC,EAAI,CAAA,EAC1B,UAAW,KAAKd,EAAE,OAChB,GAAI,IAAM,QACR,GAAIpB,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,0DAA0D,UACnE,OAAO,GAAK,SAAU,CAC/B,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,sDAAsD,EACxEkC,EAAE,KAAK,OAAO,CAAC,CAAC,CACjB,MACCA,EAAE,KAAK,CAAC,EACZ,GAAIA,EAAE,SAAW,EACf,GAAIA,EAAE,SAAW,EAAG,CAClB,MAAM,EAAIA,EAAE,CAAC,EACb,EAAE,KAAO,IAAM,KAAO,OAAS,OAAO,EAAGlC,EAAE,SAAW,YAAcA,EAAE,SAAW,cAAgB,EAAE,KAAO,CAAC,CAAC,EAAI,EAAE,MAAQ,CAC3H,MACCkC,EAAE,MAAO,GAAM,OAAO,GAAK,QAAQ,IAAM,EAAE,KAAO,UAAWA,EAAE,MAAO,GAAM,OAAO,GAAK,QAAQ,IAAM,EAAE,KAAO,UAAWA,EAAE,MAAO,GAAM,OAAO,GAAK,SAAS,IAAM,EAAE,KAAO,WAAYA,EAAE,MAAO,GAAM,IAAM,IAAI,IAAM,EAAE,KAAO,QAAS,EAAE,KAAOA,CACzP,EAAGquB,GAAK,CAACxwB,EAAGC,EAAG,EAAG,IAAM,CACtB,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,0CAA0C,CAC9D,EAAGwwB,GAAK,CAACzwB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAI,EAAGc,EAAInC,EAAE,KAAK,QACxB,GAAI,CAACmC,EACH,MAAM,IAAI,MAAM,uCAAuC,EACzDd,EAAE,KAAO,SAAUA,EAAE,QAAUc,EAAE,MACnC,EAAGuuB,GAAK,CAAC1wB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAI,EAAGc,EAAI,CACf,KAAM,SACN,OAAQ,SACR,gBAAiB,QAClB,EAAE,CAAE,QAAS,EAAG,QAASkC,EAAG,KAAMsC,GAAM3G,EAAE,KAAK,IAChD,IAAM,SAAWmC,EAAE,UAAY,GAAIkC,IAAM,SAAWlC,EAAE,UAAYkC,GAAIsC,EAAIA,EAAE,SAAW,GAAKxE,EAAE,iBAAmBwE,EAAE,CAAC,EAAG,OAAO,OAAOtF,EAAGc,CAAC,IAAM,OAAO,OAAOd,EAAGc,CAAC,EAAGd,EAAE,MAAQsF,EAAE,IAAKoD,IAAO,CAAE,iBAAkBA,GAAI,GAAK,OAAO,OAAO1I,EAAGc,CAAC,CAC7O,EAAGwuB,GAAK,CAAC3wB,EAAGC,EAAG,EAAG,IAAM,CACtB,EAAE,KAAO,SACX,EAAG2wB,GAAK,CAAC5wB,EAAGC,EAAG,EAAG,IAAM,CACtB,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,mDAAmD,CACvE,EAAG4wB,GAAK,CAAC7wB,EAAGC,EAAG,EAAG,IAAM,CACtB,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,qDAAqD,CACzE,EAAG6wB,GAAK,CAAC9wB,EAAGC,EAAG,EAAG,IAAM,CACtB,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,iDAAiD,CACrE,EAAG8wB,GAAK,CAAC/wB,EAAGC,EAAG,EAAG,IAAM,CACtB,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,0CAA0C,CAC9D,EAAG+wB,GAAK,CAAChxB,EAAGC,EAAG,EAAG,IAAM,CACtB,GAAIA,EAAE,kBAAoB,QACxB,MAAM,IAAI,MAAM,0CAA0C,CAC9D,EAAGgxB,GAAK,CAACjxB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAI,EAAGc,EAAInC,EAAE,KAAK,IAAK,CAAE,QAAS,EAAG,QAASqE,CAAC,EAAKrE,EAAE,KAAK,IACjE,OAAO,GAAK,WAAaqB,EAAE,SAAW,GAAI,OAAOgD,GAAK,WAAahD,EAAE,SAAWgD,GAAIhD,EAAE,KAAO,QAASA,EAAE,MAAQ8tB,GAAEhtB,EAAE,QAASlC,EAAG,CAC9H,GAAG,EACH,KAAM,CAAC,GAAG,EAAE,KAAM,OAAO,CAC7B,CAAG,CACH,EAAGixB,GAAK,CAAClxB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAI,EAAGc,EAAInC,EAAE,KAAK,IACxBqB,EAAE,KAAO,SAAUA,EAAE,WAAa,CAAA,EAClC,MAAM,EAAIc,EAAE,MACZ,UAAW4H,KAAK,EACd1I,EAAE,WAAW0I,CAAC,EAAIolB,GAAE,EAAEplB,CAAC,EAAG9J,EAAG,CAC3B,GAAG,EACH,KAAM,CAAC,GAAG,EAAE,KAAM,aAAc8J,CAAC,CACvC,CAAK,EACH,MAAM1F,EAAI,IAAI,IAAI,OAAO,KAAK,CAAC,CAAC,EAAGsC,EAAI,IAAI,IAAI,CAAC,GAAGtC,CAAC,EAAE,OAAQ0F,GAAM,CAClE,MAAMC,EAAI7H,EAAE,MAAM4H,CAAC,EAAE,KACrB,OAAO9J,EAAE,KAAO,QAAU+J,EAAE,QAAU,OAASA,EAAE,SAAW,MAC7D,CAAA,CAAC,EACFrD,EAAE,KAAO,IAAMtF,EAAE,SAAW,MAAM,KAAKsF,CAAC,GAAIxE,EAAE,UAAU,KAAK,IAAI,OAAS,QAAUd,EAAE,qBAAuB,GAAKc,EAAE,SAAWA,EAAE,WAAad,EAAE,qBAAuB8tB,GAAEhtB,EAAE,SAAUlC,EAAG,CACtL,GAAG,EACH,KAAM,CAAC,GAAG,EAAE,KAAM,sBAAsB,CAC5C,CAAG,GAAKA,EAAE,KAAO,WAAaoB,EAAE,qBAAuB,GACvD,EAAG8vB,GAAK,CAACnxB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IAAKmC,EAAId,EAAE,YAAc,GAAI,EAAIA,EAAE,QAAQ,IAAI,CAACgD,EAAGsC,IAAMwoB,GAAE9qB,EAAGpE,EAAG,CAChF,GAAG,EACH,KAAM,CAAC,GAAG,EAAE,KAAMkC,EAAI,QAAU,QAASwE,CAAC,CAC3C,CAAA,CAAC,EACFxE,EAAI,EAAE,MAAQ,EAAI,EAAE,MAAQ,CAC9B,EAAGivB,GAAK,CAACpxB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IAAKmC,EAAIgtB,GAAE9tB,EAAE,KAAMpB,EAAG,CACrC,GAAG,EACH,KAAM,CAAC,GAAG,EAAE,KAAM,QAAS,CAAC,CAC7B,CAAA,EAAG,EAAIkvB,GAAE9tB,EAAE,MAAOpB,EAAG,CACpB,GAAG,EACH,KAAM,CAAC,GAAG,EAAE,KAAM,QAAS,CAAC,CAC7B,CAAA,EAAGoE,EAAK0F,GAAM,UAAWA,GAAK,OAAO,KAAKA,CAAC,EAAE,SAAW,EAAGpD,EAAI,CAC9D,GAAGtC,EAAElC,CAAC,EAAIA,EAAE,MAAQ,CAACA,CAAC,EACtB,GAAGkC,EAAE,CAAC,EAAI,EAAE,MAAQ,CAAC,CAAC,CAC1B,EACE,EAAE,MAAQsC,CACZ,EAAG0qB,GAAK,CAACrxB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAI,EAAGc,EAAInC,EAAE,KAAK,IACxBqB,EAAE,KAAO,QACT,MAAM,EAAIpB,EAAE,SAAW,gBAAkB,cAAgB,QAASoE,EAAIpE,EAAE,SAAW,iBAAmBA,EAAE,SAAW,cAAgB,QAAU,kBAAmB0G,EAAIxE,EAAE,MAAM,IAAI,CAAC,EAAG+H,IAAMilB,GAAE,EAAGlvB,EAAG,CAChM,GAAG,EACH,KAAM,CAAC,GAAG,EAAE,KAAM,EAAGiK,CAAC,CAC1B,CAAG,CAAC,EAAGH,EAAI5H,EAAE,KAAOgtB,GAAEhtB,EAAE,KAAMlC,EAAG,CAC7B,GAAG,EACH,KAAM,CAAC,GAAG,EAAE,KAAMoE,EAAG,GAAGpE,EAAE,SAAW,cAAgB,CAACkC,EAAE,MAAM,MAAM,EAAI,CAAA,CAAE,CAC3E,CAAA,EAAI,KACLlC,EAAE,SAAW,iBAAmBoB,EAAE,YAAcsF,EAAGoD,IAAM1I,EAAE,MAAQ0I,IAAM9J,EAAE,SAAW,eAAiBoB,EAAE,MAAQ,CAC/G,MAAOsF,CACR,EAAEoD,GAAK1I,EAAE,MAAM,MAAM,KAAK0I,CAAC,EAAG1I,EAAE,SAAWsF,EAAE,OAAQoD,IAAM1I,EAAE,SAAWsF,EAAE,UAAYtF,EAAE,MAAQsF,EAAGoD,IAAM1I,EAAE,gBAAkB0I,IAC9H,KAAM,CAAE,QAASC,EAAG,QAASC,CAAC,EAAKjK,EAAE,KAAK,IAC1C,OAAOgK,GAAK,WAAa3I,EAAE,SAAW2I,GAAI,OAAOC,GAAK,WAAa5I,EAAE,SAAW4I,EAClF,EAAGqnB,GAAK,CAACtxB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAI,EAAGc,EAAInC,EAAE,KAAK,IACxBqB,EAAE,KAAO,SACT,MAAM,EAAIc,EAAE,QAAS,EAAI,EAAE,KAAK,KAAK,SACrC,GAAIA,EAAE,OAAS,SAAW,GAAK,EAAE,KAAO,EAAG,CACzC,MAAM,EAAIgtB,GAAEhtB,EAAE,UAAWlC,EAAG,CAC1B,GAAG,EACH,KAAM,CAAC,GAAG,EAAE,KAAM,oBAAqB,GAAG,CAChD,CAAK,EACDoB,EAAE,kBAAoB,GACtB,UAAW4I,KAAK,EACd5I,EAAE,kBAAkB4I,EAAE,MAAM,EAAI,CACnC,MACEhK,EAAE,SAAW,YAAcA,EAAE,SAAW,mBAAqBoB,EAAE,cAAgB8tB,GAAEhtB,EAAE,QAASlC,EAAG,CAC9F,GAAG,EACH,KAAM,CAAC,GAAG,EAAE,KAAM,eAAe,CACvC,CAAK,GAAIoB,EAAE,qBAAuB8tB,GAAEhtB,EAAE,UAAWlC,EAAG,CAC9C,GAAG,EACH,KAAM,CAAC,GAAG,EAAE,KAAM,sBAAsB,CAC9C,CAAK,EACH,MAAM,EAAI,EAAE,KAAK,OACjB,GAAI,EAAG,CACL,MAAM,EAAI,CAAC,GAAG,CAAC,EAAE,OAAQgK,GAAM,OAAOA,GAAK,UAAY,OAAOA,GAAK,QAAQ,EAC3E,EAAE,OAAS,IAAM5I,EAAE,SAAW,EAC/B,CACH,EAAGkwB,GAAK,CAACvxB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IAAKmC,EAAIgtB,GAAE9tB,EAAE,UAAWpB,EAAG,CAAC,EAAG,EAAIA,EAAE,KAAK,IAAID,CAAC,EAChEC,EAAE,SAAW,eAAiB,EAAE,IAAMoB,EAAE,UAAW,EAAE,SAAW,IAAM,EAAE,MAAQ,CAACc,EAAG,CAAE,KAAM,MAAM,CAAE,CACtG,EAAGqvB,GAAK,CAACxxB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IACjBmvB,GAAE9tB,EAAE,UAAWpB,EAAG,CAAC,EACnB,MAAMkC,EAAIlC,EAAE,KAAK,IAAID,CAAC,EACtBmC,EAAE,IAAMd,EAAE,SACZ,EAAGowB,GAAK,CAACzxB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IACjBmvB,GAAE9tB,EAAE,UAAWpB,EAAG,CAAC,EACnB,MAAMkC,EAAIlC,EAAE,KAAK,IAAID,CAAC,EACtBmC,EAAE,IAAMd,EAAE,UAAW,EAAE,QAAU,KAAK,MAAM,KAAK,UAAUA,EAAE,YAAY,CAAC,CAC5E,EAAGqwB,GAAK,CAAC1xB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IACjBmvB,GAAE9tB,EAAE,UAAWpB,EAAG,CAAC,EACnB,MAAMkC,EAAIlC,EAAE,KAAK,IAAID,CAAC,EACtBmC,EAAE,IAAMd,EAAE,UAAWpB,EAAE,KAAO,UAAY,EAAE,UAAY,KAAK,MAAM,KAAK,UAAUoB,EAAE,YAAY,CAAC,EACnG,EAAGswB,GAAK,CAAC3xB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IACjBmvB,GAAE9tB,EAAE,UAAWpB,EAAG,CAAC,EACnB,MAAMkC,EAAIlC,EAAE,KAAK,IAAID,CAAC,EACtBmC,EAAE,IAAMd,EAAE,UACV,IAAI,EACJ,GAAI,CACF,EAAIA,EAAE,WAAW,MAAM,CAC3B,MAAU,CACN,MAAM,IAAI,MAAM,uDAAuD,CACxE,CACD,EAAE,QAAU,CACd,EAAGuwB,GAAK,CAAC5xB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IAAKmC,EAAId,EAAE,GAAG,KAAK,OAAO,IAAI,eAAe,EAAG,EAAIpB,EAAE,KAAO,QAAUkC,EAAId,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAC7G8tB,GAAE,EAAGlvB,EAAG,CAAC,EACT,MAAMoE,EAAIpE,EAAE,KAAK,IAAID,CAAC,EACtBqE,EAAE,IAAM,CACV,EAAGwtB,GAAK,CAAC7xB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IACjBmvB,GAAE9tB,EAAE,UAAWpB,EAAG,CAAC,EACnB,MAAMkC,EAAIlC,EAAE,KAAK,IAAID,CAAC,EACtBmC,EAAE,IAAMd,EAAE,UAAW,EAAE,SAAW,EACpC,EAAGywB,GAAK,CAAC9xB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IACjBmvB,GAAE9tB,EAAE,UAAWpB,EAAG,CAAC,EACnB,MAAMkC,EAAIlC,EAAE,KAAK,IAAID,CAAC,EACtBmC,EAAE,IAAMd,EAAE,SACZ,EAAG0wB,GAAK,CAAC/xB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,IACjBmvB,GAAE9tB,EAAE,UAAWpB,EAAG,CAAC,EACnB,MAAMkC,EAAIlC,EAAE,KAAK,IAAID,CAAC,EACtBmC,EAAE,IAAMd,EAAE,SACZ,EAAG2wB,GAAK,CAAChyB,EAAGC,EAAG,EAAG,IAAM,CACtB,MAAMoB,EAAIrB,EAAE,KAAK,UACjBmvB,GAAE9tB,EAAGpB,EAAG,CAAC,EACT,MAAMkC,EAAIlC,EAAE,KAAK,IAAID,CAAC,EACtBmC,EAAE,IAAMd,CACV,EAAG4wB,GAAK,CACN,OAAQvC,GACR,OAAQC,GACR,QAASC,GACT,OAAQC,GACR,OAAQC,GACR,KAAMC,GACN,UAAWC,GACX,KAAMC,GACN,MAAOC,GACP,IAAKC,GACL,QAASC,GACT,KAAMC,GACN,KAAMC,GACN,QAASC,GACT,IAAKC,GACL,iBAAkBC,GAClB,KAAMC,GACN,QAASC,GACT,OAAQC,GACR,SAAUC,GACV,UAAWC,GACX,IAAKC,GACL,IAAKC,GACL,MAAOC,GACP,OAAQC,GACR,MAAOC,GACP,aAAcC,GACd,MAAOC,GACP,OAAQC,GACR,SAAUC,GACV,YAAaC,GACb,QAASC,GACT,SAAUC,GACV,MAAOC,GACP,KAAMC,GACN,SAAUC,GACV,QAASC,GACT,SAAUC,GACV,KAAMC,EACR,EACA,SAASE,GAAGlyB,EAAGC,EAAG,CAChB,GAAI,WAAYD,EAAG,CACjB,MAAM,EAAIA,EAAGqB,EAAI6tB,GAAG,CAAE,GAAGjvB,EAAG,WAAYgyB,EAAE,CAAE,EAAG9vB,EAAI,CAAA,EACnD,UAAWwE,KAAK,EAAE,OAAO,QAAO,EAAI,CAClC,KAAM,CAACoD,EAAGC,CAAC,EAAIrD,EACfwoB,GAAEnlB,EAAG3I,CAAC,CACP,CACD,MAAM,EAAI,CAAE,EAAEgD,EAAI,CAChB,SAAU,EACV,IAAKpE,GAAG,IACR,KAAMkC,CACZ,EACId,EAAE,SAAWgD,EACb,UAAWsC,KAAK,EAAE,OAAO,QAAO,EAAI,CAClC,KAAM,CAACoD,EAAGC,CAAC,EAAIrD,EACf0oB,GAAGhuB,EAAG2I,CAAC,EAAG,EAAED,CAAC,EAAIulB,GAAGjuB,EAAG2I,CAAC,CACzB,CACD,GAAI,OAAO,KAAK7H,CAAC,EAAE,OAAS,EAAG,CAC7B,MAAMwE,EAAItF,EAAE,SAAW,gBAAkB,QAAU,cACnD,EAAE,SAAW,CACX,CAACsF,CAAC,EAAGxE,CACb,CACK,CACD,MAAO,CAAE,QAAS,EACnB,CACD,MAAM,EAAI+sB,GAAG,CAAE,GAAGjvB,EAAG,WAAYgyB,EAAE,CAAE,EACrC,OAAO9C,GAAEnvB,EAAG,CAAC,EAAGqvB,GAAG,EAAGrvB,CAAC,EAAGsvB,GAAG,EAAGtvB,CAAC,CACnC,CACA,MAAMmyB,GAAqB1R,EAAE,iBAAkB,CAACzgB,EAAGC,IAAM,CACvDooB,GAAG,KAAKroB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EACD,SAASoyB,GAAGryB,EAAG,CACb,OAAuBktB,GAAGiF,GAAInyB,CAAC,CACjC,CACA,MAAMsyB,GAAqB7R,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACnDqoB,GAAG,KAAKtoB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EACD,SAASsyB,GAAGvyB,EAAG,CACb,OAAuBmtB,GAAGmF,GAAItyB,CAAC,CACjC,CACA,MAAMwyB,GAAqB/R,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACnDsoB,GAAG,KAAKvoB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EACD,SAASwyB,GAAGzyB,EAAG,CACb,OAAuBotB,GAAGoF,GAAIxyB,CAAC,CACjC,CACA,MAAM0yB,GAAqBjS,EAAE,iBAAkB,CAACzgB,EAAGC,IAAM,CACvDuoB,GAAG,KAAKxoB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EACD,SAAS0yB,GAAG3yB,EAAG,CACb,OAAuBqtB,GAAGqF,GAAI1yB,CAAC,CACjC,CACA,MAAM4yB,GAAK,CAAC5yB,EAAGC,IAAM,CACnBmjB,GAAG,KAAKpjB,EAAGC,CAAC,EAAGD,EAAE,KAAO,WAAY,OAAO,iBAAiBA,EAAG,CAC7D,OAAQ,CACN,MAAQ,GAAMujB,GAAGvjB,EAAG,CAAC,CAEtB,EACD,QAAS,CACP,MAAQ,GAAMsjB,GAAGtjB,EAAG,CAAC,CAEtB,EACD,SAAU,CACR,MAAQ,GAAM,CACZA,EAAE,OAAO,KAAK,CAAC,EAAGA,EAAE,QAAU,KAAK,UAAUA,EAAE,OAAQ+gB,GAAI,CAAC,CAC7D,CAEF,EACD,UAAW,CACT,MAAQ,GAAM,CACZ/gB,EAAE,OAAO,KAAK,GAAG,CAAC,EAAGA,EAAE,QAAU,KAAK,UAAUA,EAAE,OAAQ+gB,GAAI,CAAC,CAChE,CAEF,EACD,QAAS,CACP,KAAM,CACJ,OAAO/gB,EAAE,OAAO,SAAW,CAC5B,CAEF,CACL,CAAG,CACH,EAAG6yB,GAAqBpS,EAAE,WAAYmS,EAAE,EAAGE,GAAqBrS,EAAE,WAAYmS,GAAI,CAChF,OAAQ,KACV,CAAC,EAAGG,GAAqBvP,GAAGsP,EAAE,EAAGE,GAAqBvP,GAAGqP,EAAE,EAAGG,GAAqBvP,GAAGoP,EAAE,EAAGI,GAAqBtP,GAAGkP,EAAE,EAAGK,GAAqBrP,GAAGgP,EAAE,EAAGM,GAAqBrP,GAAG+O,EAAE,EAAGO,GAAqBrP,GAAG8O,EAAE,EAAGQ,GAAqBrP,GAAG6O,EAAE,EAAGS,GAAqBrP,GAAG4O,EAAE,EAAGU,GAAqBrP,GAAG2O,EAAE,EAAGW,GAAqBrP,GAAG0O,EAAE,EAAGY,GAAqBrP,GAAGyO,EAAE,EAAGa,GAAqB,IAAI,QACzX,SAASC,GAAG5zB,EAAGC,EAAG,EAAG,CACnB,MAAM,EAAI,OAAO,eAAeD,CAAC,EACjC,IAAIqB,EAAIsyB,GAAG,IAAI,CAAC,EAChB,GAAItyB,IAAMA,EAAoB,IAAI,IAAOsyB,GAAG,IAAI,EAAGtyB,CAAC,GAAI,CAACA,EAAE,IAAIpB,CAAC,EAAG,CACjEoB,EAAE,IAAIpB,CAAC,EACP,UAAWkC,KAAK,EAAG,CACjB,MAAM,EAAI,EAAEA,CAAC,EACb,OAAO,eAAe,EAAGA,EAAG,CAC1B,aAAc,GACd,WAAY,GACZ,KAAM,CACJ,MAAMkC,EAAI,EAAE,KAAK,IAAI,EACrB,OAAO,OAAO,eAAe,KAAMlC,EAAG,CACpC,aAAc,GACd,SAAU,GACV,WAAY,GACZ,MAAOkC,CACR,CAAA,EAAGA,CACL,EACD,IAAIA,EAAG,CACL,OAAO,eAAe,KAAMlC,EAAG,CAC7B,aAAc,GACd,SAAU,GACV,WAAY,GACZ,MAAOkC,CACnB,CAAW,CACF,CACT,CAAO,CACF,CACF,CACH,CACA,MAAMwvB,GAAoBpT,EAAE,UAAW,CAACzgB,EAAGC,KAAOsnB,GAAE,KAAKvnB,EAAGC,CAAC,EAAG,OAAO,OAAOD,EAAE,WAAW,EAAG,CAC5F,WAAY,CACV,MAAOuvB,GAAGvvB,EAAG,OAAO,EACpB,OAAQuvB,GAAGvvB,EAAG,QAAQ,CACvB,CACH,CAAC,EAAGA,EAAE,aAAewvB,GAAGxvB,EAAG,CAAA,CAAE,EAAGA,EAAE,IAAMC,EAAGD,EAAE,KAAOC,EAAE,KAAM,OAAO,eAAeD,EAAG,OAAQ,CAAE,MAAOC,CAAC,CAAE,EAAGD,EAAE,MAAQ,CAAC,EAAG,IAAM+yB,GAAG/yB,EAAG,EAAG,EAAG,CAAE,OAAQA,EAAE,KAAO,CAAA,EAAGA,EAAE,UAAY,CAAC,EAAG,IAAMizB,GAAGjzB,EAAG,EAAG,CAAC,EAAGA,EAAE,WAAa,MAAO,EAAG,IAAMgzB,GAAGhzB,EAAG,EAAG,EAAG,CAAE,OAAQA,EAAE,UAAU,CAAE,EAAGA,EAAE,eAAiB,MAAO,EAAG,IAAMkzB,GAAGlzB,EAAG,EAAG,CAAC,EAAGA,EAAE,IAAMA,EAAE,eAAgBA,EAAE,OAAS,CAAC,EAAG,IAAMmzB,GAAGnzB,EAAG,EAAG,CAAC,EAAGA,EAAE,OAAS,CAAC,EAAG,IAAMozB,GAAGpzB,EAAG,EAAG,CAAC,EAAGA,EAAE,YAAc,MAAO,EAAG,IAAMqzB,GAAGrzB,EAAG,EAAG,CAAC,EAAGA,EAAE,YAAc,MAAO,EAAG,IAAMszB,GAAGtzB,EAAG,EAAG,CAAC,EAAGA,EAAE,WAAa,CAAC,EAAG,IAAMuzB,GAAGvzB,EAAG,EAAG,CAAC,EAAGA,EAAE,WAAa,CAAC,EAAG,IAAMwzB,GAAGxzB,EAAG,EAAG,CAAC,EAAGA,EAAE,gBAAkB,MAAO,EAAG,IAAMyzB,GAAGzzB,EAAG,EAAG,CAAC,EAAGA,EAAE,gBAAkB,MAAO,EAAG,IAAM0zB,GAAG1zB,EAAG,EAAG,CAAC,EAAG4zB,GAAG5zB,EAAG,UAAW,CAClrB,SAAS,EAAG,CACV,MAAM,EAAI,KAAK,IACf,OAAO,KAAK,MAAMuhB,GAAG,EAAG,CACtB,OAAQ,CACN,GAAG,EAAE,QAAU,CAAE,EACjB,GAAG,EAAE,IAAKlgB,GAAM,OAAOA,GAAK,WAAa,CAAE,KAAM,CAAE,MAAOA,EAAG,IAAK,CAAE,MAAO,QAAQ,EAAI,SAAU,CAAE,CAAA,CAAI,EAAGA,CAAC,CAC5G,CACF,CAAA,EAAG,CAAE,OAAQ,EAAI,CAAA,CACnB,EACD,QAAQ,EAAG,CACT,OAAO,KAAK,MAAM,GAAG,CAAC,CACvB,EACD,MAAM,EAAG,EAAG,CACV,OAAO4gB,GAAG,KAAM,EAAG,CAAC,CACrB,EACD,OAAQ,CACN,OAAO,IACR,EACD,SAAS,EAAG,EAAG,CACb,OAAO,EAAE,IAAI,KAAM,CAAC,EAAG,IACxB,EACD,OAAO,EAAG,EAAG,CACX,OAAO,KAAK,MAAM6R,GAAG,EAAG,CAAC,CAAC,CAC3B,EACD,YAAY,EAAG,EAAG,CAChB,OAAO,KAAK,MAAMC,GAAG,EAAG,CAAC,CAAC,CAC3B,EACD,UAAU,EAAG,CACX,OAAO,KAAK,MAAsBvF,GAAG,CAAC,CAAC,CACxC,EACD,UAAW,CACT,OAAOwF,GAAG,IAAI,CACf,EACD,eAAgB,CACd,OAAOC,GAAG,IAAI,CACf,EACD,UAAW,CACT,OAAOC,GAAG,IAAI,CACf,EACD,SAAU,CACR,OAAOF,GAAGE,GAAG,IAAI,CAAC,CACnB,EACD,YAAY,EAAG,CACb,OAAOC,GAAG,KAAM,CAAC,CAClB,EACD,OAAQ,CACN,OAAOC,GAAG,IAAI,CACf,EACD,GAAG,EAAG,CACJ,OAAOC,GAAG,CAAC,KAAM,CAAC,CAAC,CACpB,EACD,IAAI,EAAG,CACL,OAAOC,GAAG,KAAM,CAAC,CAClB,EACD,UAAU,EAAG,CACX,OAAOC,GAAG,KAAMC,GAAG,CAAC,CAAC,CACtB,EACD,QAAQ,EAAG,CACT,OAAOC,GAAG,KAAM,CAAC,CAClB,EACD,SAAS,EAAG,CACV,OAAOC,GAAG,KAAM,CAAC,CAClB,EACD,MAAM,EAAG,CACP,OAAOC,GAAG,KAAM,CAAC,CAClB,EACD,KAAK,EAAG,CACN,OAAOJ,GAAG,KAAM,CAAC,CAClB,EACD,UAAW,CACT,OAAOK,GAAG,IAAI,CACf,EACD,SAAS,EAAG,CACV,MAAM,EAAI,KAAK,QACf,OAAOlJ,GAAG,IAAI,EAAG,CAAE,YAAa,CAAC,CAAE,EAAG,CACvC,EACD,QAAQ,EAAG,CACT,GAAI,EAAE,SAAW,EACf,OAAOA,GAAG,IAAI,IAAI,EACpB,MAAM,EAAI,KAAK,QACf,OAAOA,GAAG,IAAI,EAAG,EAAE,CAAC,CAAC,EAAG,CACzB,EACD,YAAa,CACX,OAAO,KAAK,UAAU,MAAM,EAAE,OAC/B,EACD,YAAa,CACX,OAAO,KAAK,UAAU,IAAI,EAAE,OAC7B,EACD,MAAM,EAAG,CACP,OAAO,EAAE,IAAI,CACd,CACH,CAAC,EAAG,OAAO,eAAe1rB,EAAG,cAAe,CAC1C,KAAM,CACJ,OAAO0rB,GAAG,IAAI1rB,CAAC,GAAG,WACnB,EACD,aAAc,EAChB,CAAC,EAAGA,EAAE,EAAG60B,GAAqBpU,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACtDunB,GAAG,KAAKxnB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAGqB,EAAGc,IAAMutB,GAAG1vB,EAAG,EAAGqB,CAAC,EAC/E,MAAM,EAAIrB,EAAE,KAAK,IACjBA,EAAE,OAAS,EAAE,QAAU,KAAMA,EAAE,UAAY,EAAE,SAAW,KAAMA,EAAE,UAAY,EAAE,SAAW,KAAM4zB,GAAG5zB,EAAG,aAAc,CACjH,SAAS,EAAG,CACV,OAAO,KAAK,MAAsBkuB,GAAG,GAAG,CAAC,CAAC,CAC3C,EACD,YAAY,EAAG,CACb,OAAO,KAAK,MAAsBG,GAAG,GAAG,CAAC,CAAC,CAC3C,EACD,cAAc,EAAG,CACf,OAAO,KAAK,MAAsBC,GAAG,GAAG,CAAC,CAAC,CAC3C,EACD,YAAY,EAAG,CACb,OAAO,KAAK,MAAsBC,GAAG,GAAG,CAAC,CAAC,CAC3C,EACD,OAAO,EAAG,CACR,OAAO,KAAK,MAAsBP,GAAG,GAAG,CAAC,CAAC,CAC3C,EACD,OAAO,EAAG,CACR,OAAO,KAAK,MAAsBD,GAAG,GAAG,CAAC,CAAC,CAC3C,EACD,UAAU,EAAG,CACX,OAAO,KAAK,MAAsBE,GAAG,GAAG,CAAC,CAAC,CAC3C,EACD,YAAY,EAAG,CACb,OAAO,KAAK,MAAsBD,GAAG,EAAG,GAAG,CAAC,CAAC,CAC9C,EACD,UAAU,EAAG,CACX,OAAO,KAAK,MAAsBG,GAAG,CAAC,CAAC,CACxC,EACD,UAAU,EAAG,CACX,OAAO,KAAK,MAAsBC,GAAG,CAAC,CAAC,CACxC,EACD,MAAO,CACL,OAAO,KAAK,MAAsBM,GAAE,CAAE,CACvC,EACD,aAAa,EAAG,CACd,OAAO,KAAK,MAAsBD,GAAG,GAAG,CAAC,CAAC,CAC3C,EACD,aAAc,CACZ,OAAO,KAAK,MAAsBE,GAAE,CAAE,CACvC,EACD,aAAc,CACZ,OAAO,KAAK,MAAsBC,GAAE,CAAE,CACvC,EACD,SAAU,CACR,OAAO,KAAK,MAAsBC,GAAE,CAAE,CACvC,CACL,CAAG,CACH,CAAC,EAAGiG,GAAqBrU,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAChDunB,GAAG,KAAKxnB,EAAGC,CAAC,EAAG40B,GAAG,KAAK70B,EAAGC,CAAC,EAAGD,EAAE,MAAS,GAAMA,EAAE,MAAsB4rB,GAAGmJ,GAAI,CAAC,CAAC,EAAG/0B,EAAE,IAAO,GAAMA,EAAE,MAAsBksB,GAAG8I,GAAI,CAAC,CAAC,EAAGh1B,EAAE,IAAO,GAAMA,EAAE,MAAsBitB,GAAGgI,GAAI,CAAC,CAAC,EAAGj1B,EAAE,MAAS,GAAMA,EAAE,MAAsBmsB,GAAG+I,GAAI,CAAC,CAAC,EAAGl1B,EAAE,KAAQ,GAAMA,EAAE,MAAsB6rB,GAAGsJ,GAAI,CAAC,CAAC,EAAGn1B,EAAE,KAAQ,GAAMA,EAAE,MAAsB8rB,GAAGsJ,GAAI,CAAC,CAAC,EAAGp1B,EAAE,OAAU,GAAMA,EAAE,MAAsB+rB,GAAGqJ,GAAI,CAAC,CAAC,EAAGp1B,EAAE,OAAU,GAAMA,EAAE,MAAsBgsB,GAAGoJ,GAAI,CAAC,CAAC,EAAGp1B,EAAE,OAAU,GAAMA,EAAE,MAAsBisB,GAAGmJ,GAAI,CAAC,CAAC,EAAGp1B,EAAE,OAAU,GAAMA,EAAE,MAAsBosB,GAAGiJ,GAAI,CAAC,CAAC,EAAGr1B,EAAE,KAAQ,GAAMA,EAAE,MAAsB6rB,GAAGsJ,GAAI,CAAC,CAAC,EAAGn1B,EAAE,KAAQ,GAAMA,EAAE,MAAsBqsB,GAAGiJ,GAAI,CAAC,CAAC,EAAGt1B,EAAE,MAAS,GAAMA,EAAE,MAAsBssB,GAAGiJ,GAAI,CAAC,CAAC,EAAGv1B,EAAE,KAAQ,GAAMA,EAAE,MAAsBusB,GAAGiJ,GAAI,CAAC,CAAC,EAAGx1B,EAAE,OAAU,GAAMA,EAAE,MAAsB8sB,GAAG2I,GAAI,CAAC,CAAC,EAAGz1B,EAAE,UAAa,GAAMA,EAAE,MAAsB+sB,GAAG2I,GAAI,CAAC,CAAC,EAAG11B,EAAE,IAAO,GAAMA,EAAE,MAAsBwsB,GAAGmJ,GAAI,CAAC,CAAC,EAAG31B,EAAE,MAAS,GAAMA,EAAE,MAAsBysB,GAAGmJ,GAAI,CAAC,CAAC,EAAG51B,EAAE,KAAQ,GAAMA,EAAE,MAAsB0sB,GAAGmJ,GAAI,CAAC,CAAC,EAAG71B,EAAE,KAAQ,GAAMA,EAAE,MAAsB2sB,GAAGmJ,GAAI,CAAC,CAAC,EAAG91B,EAAE,OAAU,GAAMA,EAAE,MAAsB4sB,GAAGmJ,GAAI,CAAC,CAAC,EAAG/1B,EAAE,OAAU,GAAMA,EAAE,MAAsB6sB,GAAGmJ,GAAI,CAAC,CAAC,EAAGh2B,EAAE,KAAQ,GAAMA,EAAE,MAAsBgtB,GAAGiJ,GAAI,CAAC,CAAC,EAAGj2B,EAAE,SAAY,GAAMA,EAAE,MAAMqyB,GAAG,CAAC,CAAC,EAAGryB,EAAE,KAAQ,GAAMA,EAAE,MAAMuyB,GAAG,CAAC,CAAC,EAAGvyB,EAAE,KAAQ,GAAMA,EAAE,MAAMyyB,GAAG,CAAC,CAAC,EAAGzyB,EAAE,SAAY,GAAMA,EAAE,MAAM2yB,GAAG,CAAC,CAAC,CACr2C,CAAC,EACD,SAASuD,GAAGl2B,EAAG,CACb,OAAuB2rB,GAAGmJ,GAAI90B,CAAC,CACjC,CACA,MAAMoyB,GAAoB3R,EAAE,kBAAmB,CAACzgB,EAAGC,IAAM,CACvDwnB,GAAE,KAAKznB,EAAGC,CAAC,EAAG40B,GAAG,KAAK70B,EAAGC,CAAC,CAC5B,CAAC,EAAG80B,GAAqBtU,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/C2nB,GAAG,KAAK5nB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGk1B,GAAqB1U,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAC9CynB,GAAG,KAAK1nB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGm1B,GAAqB3U,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAC9C0nB,GAAG,KAAK3nB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAG+0B,GAAqBvU,EAAE,SAAU,CAACzgB,EAAGC,IAAM,CAC7C4nB,GAAG,KAAK7nB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGi1B,GAAqBzU,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/C6nB,GAAG,KAAK9nB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGo1B,GAAqB5U,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAChD8nB,GAAG,KAAK/nB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGq1B,GAAqB7U,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAC9C+nB,GAAG,KAAKhoB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGs1B,GAAqB9U,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/CgoB,GAAG,KAAKjoB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGu1B,GAAqB/U,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAC9CioB,GAAG,KAAKloB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAG01B,GAAqBlV,EAAE,SAAU,CAACzgB,EAAGC,IAAM,CAC7CkoB,GAAG,KAAKnoB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAG21B,GAAqBnV,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CAC/CmoB,GAAG,KAAKpoB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAG41B,GAAqBpV,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAC9CwoB,GAAG,KAAKzoB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAG61B,GAAqBrV,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAC9CyoB,GAAG,KAAK1oB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAG81B,GAAqBtV,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAChD0oB,GAAG,KAAK3oB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAG+1B,GAAqBvV,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAChD2oB,GAAG,KAAK5oB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGw1B,GAAqBhV,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAChD6oB,GAAG,KAAK9oB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGy1B,GAAqBjV,EAAE,eAAgB,CAACzgB,EAAGC,IAAM,CACnD+oB,GAAG,KAAKhpB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGg2B,GAAqBxV,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAC9CgpB,GAAG,KAAKjpB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGg1B,GAAqBxU,EAAE,SAAU,CAACzgB,EAAGC,IAAM,CAC7CkpB,GAAG,KAAKnpB,EAAGC,CAAC,EAAGmyB,GAAE,KAAKpyB,EAAGC,CAAC,CAC5B,CAAC,EAAGk2B,GAAqB1V,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAChDmpB,GAAG,KAAKppB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAGqB,EAAGc,IAAMwtB,GAAG3vB,EAAG,EAAGqB,CAAC,EAAGuyB,GAAG5zB,EAAG,YAAa,CACnG,GAAG,EAAGqB,EAAG,CACP,OAAO,KAAK,MAAsBusB,GAAG,EAAGvsB,CAAC,CAAC,CAC3C,EACD,IAAI,EAAGA,EAAG,CACR,OAAO,KAAK,MAAsBwsB,GAAG,EAAGxsB,CAAC,CAAC,CAC3C,EACD,IAAI,EAAGA,EAAG,CACR,OAAO,KAAK,MAAsBwsB,GAAG,EAAGxsB,CAAC,CAAC,CAC3C,EACD,GAAG,EAAGA,EAAG,CACP,OAAO,KAAK,MAAsBqsB,GAAG,EAAGrsB,CAAC,CAAC,CAC3C,EACD,IAAI,EAAGA,EAAG,CACR,OAAO,KAAK,MAAsBssB,GAAG,EAAGtsB,CAAC,CAAC,CAC3C,EACD,IAAI,EAAGA,EAAG,CACR,OAAO,KAAK,MAAsBssB,GAAG,EAAGtsB,CAAC,CAAC,CAC3C,EACD,IAAI,EAAG,CACL,OAAO,KAAK,MAAM+0B,GAAG,CAAC,CAAC,CACxB,EACD,KAAK,EAAG,CACN,OAAO,KAAK,MAAMA,GAAG,CAAC,CAAC,CACxB,EACD,SAAS,EAAG,CACV,OAAO,KAAK,MAAsBxI,GAAG,EAAG,CAAC,CAAC,CAC3C,EACD,YAAY,EAAG,CACb,OAAO,KAAK,MAAsBC,GAAG,EAAG,CAAC,CAAC,CAC3C,EACD,SAAS,EAAG,CACV,OAAO,KAAK,MAAsBH,GAAG,EAAG,CAAC,CAAC,CAC3C,EACD,YAAY,EAAG,CACb,OAAO,KAAK,MAAsBC,GAAG,EAAG,CAAC,CAAC,CAC3C,EACD,WAAW,EAAGtsB,EAAG,CACf,OAAO,KAAK,MAAsBysB,GAAG,EAAGzsB,CAAC,CAAC,CAC3C,EACD,KAAK,EAAGA,EAAG,CACT,OAAO,KAAK,MAAsBysB,GAAG,EAAGzsB,CAAC,CAAC,CAC3C,EACD,QAAS,CACP,OAAO,IACR,CACL,CAAG,EACD,MAAM,EAAIrB,EAAE,KAAK,IACjBA,EAAE,SAAW,KAAK,IAAI,EAAE,SAAW,OAAO,kBAAmB,EAAE,kBAAoB,OAAO,iBAAiB,GAAK,KAAMA,EAAE,SAAW,KAAK,IAAI,EAAE,SAAW,OAAO,kBAAmB,EAAE,kBAAoB,OAAO,iBAAiB,GAAK,KAAMA,EAAE,OAAS,EAAE,QAAU,IAAI,SAAS,KAAK,GAAK,OAAO,cAAc,EAAE,YAAc,EAAG,EAAGA,EAAE,SAAW,GAAIA,EAAE,OAAS,EAAE,QAAU,IAC/W,CAAC,EACD,SAASq2B,GAAGr2B,EAAG,CACb,OAAuBstB,GAAG6I,GAAIn2B,CAAC,CACjC,CACA,MAAMs2B,GAAqB7V,EAAE,kBAAmB,CAACzgB,EAAGC,IAAM,CACxDopB,GAAG,KAAKrpB,EAAGC,CAAC,EAAGk2B,GAAG,KAAKn2B,EAAGC,CAAC,CAC7B,CAAC,EACD,SAASm2B,GAAGp2B,EAAG,CACb,OAAuButB,GAAG+I,GAAIt2B,CAAC,CACjC,CACA,MAAMu2B,GAAqB9V,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACnDqpB,GAAG,KAAKtpB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAM+uB,IACvE,CAAC,EACD,SAASoG,IAAK,CACZ,OAAuBhJ,GAAG+I,EAAE,CAC9B,CACA,MAAME,GAAqBhW,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CACjDspB,GAAG,KAAKvpB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAM6uB,GAAGlwB,EAAG,EAAG,CAAC,CACjF,CAAC,EACD,SAAS02B,GAAG12B,EAAG,CACb,OAAuBytB,GAAGgJ,GAAIz2B,CAAC,CACjC,CACA,MAAM22B,GAAqBlW,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CACjDwpB,GAAG,KAAKzpB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAM4vB,GAAGjxB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,QAAUC,EAAE,QAAS2zB,GAAG5zB,EAAG,WAAY,CAC5H,IAAI,EAAG,EAAG,CACR,OAAO,KAAK,MAAsBguB,GAAG,EAAG,CAAC,CAAC,CAC3C,EACD,SAAS,EAAG,CACV,OAAO,KAAK,MAAsBA,GAAG,EAAG,CAAC,CAAC,CAC3C,EACD,IAAI,EAAG,EAAG,CACR,OAAO,KAAK,MAAsBD,GAAG,EAAG,CAAC,CAAC,CAC3C,EACD,OAAO,EAAG,EAAG,CACX,OAAO,KAAK,MAAsBE,GAAG,EAAG,CAAC,CAAC,CAC3C,EACD,QAAS,CACP,OAAO,KAAK,OACb,CACL,CAAG,CACH,CAAC,EACD,SAASmG,GAAGp0B,EAAGC,EAAG,CAChB,OAAuB6uB,GAAG6H,GAAI32B,EAAGC,CAAC,CACpC,CACA,MAAM22B,GAAqBnW,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAClD6pB,GAAG,KAAK9pB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAM6vB,GAAGlxB,EAAG,EAAG,EAAGqB,CAAC,EAAGggB,GAAErhB,EAAG,QAAS,IAAMC,EAAE,KAAK,EAAG2zB,GAAG5zB,EAAG,YAAa,CACpI,OAAQ,CACN,OAAO62B,GAAG,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,CAC3C,EACD,SAAS,EAAG,CACV,OAAO,KAAK,MAAM,CAAE,GAAG,KAAK,KAAK,IAAK,SAAU,CAAC,CAAE,CACpD,EACD,aAAc,CACZ,OAAO,KAAK,MAAM,CAAE,GAAG,KAAK,KAAK,IAAK,SAAUL,GAAI,CAAA,CAAE,CACvD,EACD,OAAQ,CACN,OAAO,KAAK,MAAM,CAAE,GAAG,KAAK,KAAK,IAAK,SAAUA,GAAI,CAAA,CAAE,CACvD,EACD,QAAS,CACP,OAAO,KAAK,MAAM,CAAE,GAAG,KAAK,KAAK,IAAK,SAAUE,GAAI,CAAA,CAAE,CACvD,EACD,OAAQ,CACN,OAAO,KAAK,MAAM,CAAE,GAAG,KAAK,KAAK,IAAK,SAAU,MAAM,CAAE,CACzD,EACD,OAAO,EAAG,CACR,OAAOnU,GAAG,KAAM,CAAC,CAClB,EACD,WAAW,EAAG,CACZ,OAAOC,GAAG,KAAM,CAAC,CAClB,EACD,MAAM,EAAG,CACP,OAAOC,GAAG,KAAM,CAAC,CAClB,EACD,KAAK,EAAG,CACN,OAAOJ,GAAG,KAAM,CAAC,CAClB,EACD,KAAK,EAAG,CACN,OAAOC,GAAG,KAAM,CAAC,CAClB,EACD,WAAW,EAAG,CACZ,OAAOI,GAAGoU,GAAI,KAAM,EAAE,CAAC,CAAC,CACzB,EACD,YAAY,EAAG,CACb,OAAOnU,GAAGoU,GAAI,KAAM,EAAE,CAAC,CAAC,CACzB,CACL,CAAG,CACH,CAAC,EACD,SAASC,GAAGh3B,EAAGC,EAAG,CAChB,MAAM,EAAI,CACR,KAAM,SACN,MAAOD,GAAK,CAAE,EACd,GAAGkiB,GAAEjiB,CAAC,CACV,EACE,OAAO,IAAI22B,GAAG,CAAC,CACjB,CACA,MAAMK,GAAqBxW,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CACjD+pB,GAAG,KAAKhqB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAM8vB,GAAGnxB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,QAAUC,EAAE,OACrG,CAAC,EACD,SAASo0B,GAAGr0B,EAAGC,EAAG,CAChB,OAAO,IAAIg3B,GAAG,CACZ,KAAM,QACN,QAASj3B,EACT,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CACA,MAAMi3B,GAAqBzW,EAAE,kBAAmB,CAACzgB,EAAGC,IAAM,CACxDgqB,GAAG,KAAKjqB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAM+vB,GAAGpxB,EAAG,EAAG,EAAGqB,CAAC,CACpF,CAAC,EACD,SAASizB,GAAGt0B,EAAGC,EAAG,CAChB,OAAO,IAAIi3B,GAAG,CACZ,KAAM,eACN,KAAMl3B,EACN,MAAOC,CACX,CAAG,CACH,CACA,MAAMk3B,GAAqB1W,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAChDmqB,GAAG,KAAKpqB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAGqB,EAAGc,IAAMmuB,GAAGtwB,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,KAAOC,EAAE,QAASD,EAAE,QAAU,OAAO,OAAOC,EAAE,OAAO,EACzI,MAAM,EAAI,IAAI,IAAI,OAAO,KAAKA,EAAE,OAAO,CAAC,EACxCD,EAAE,QAAU,CAAC,EAAGqB,IAAM,CACpB,MAAMc,EAAI,CAAA,EACV,UAAW,KAAK,EACd,GAAI,EAAE,IAAI,CAAC,EACTA,EAAE,CAAC,EAAIlC,EAAE,QAAQ,CAAC,MAElB,OAAM,IAAI,MAAM,OAAO,CAAC,oBAAoB,EAChD,OAAO,IAAIk3B,GAAG,CACZ,GAAGl3B,EACH,OAAQ,CAAE,EACV,GAAGiiB,GAAE7gB,CAAC,EACN,QAASc,CACf,CAAK,CACF,EAAEnC,EAAE,QAAU,CAAC,EAAGqB,IAAM,CACvB,MAAMc,EAAI,CAAE,GAAGlC,EAAE,OAAO,EACxB,UAAW,KAAK,EACd,GAAI,EAAE,IAAI,CAAC,EACT,OAAOkC,EAAE,CAAC,MAEV,OAAM,IAAI,MAAM,OAAO,CAAC,oBAAoB,EAChD,OAAO,IAAIg1B,GAAG,CACZ,GAAGl3B,EACH,OAAQ,CAAE,EACV,GAAGiiB,GAAE7gB,CAAC,EACN,QAASc,CACf,CAAK,CACL,CACA,CAAC,EACD,SAAS00B,GAAG72B,EAAGC,EAAG,CAChB,MAAM,EAAI,MAAM,QAAQD,CAAC,EAAI,OAAO,YAAYA,EAAE,IAAK,GAAM,CAAC,EAAG,CAAC,CAAC,CAAC,EAAIA,EACxE,OAAO,IAAIm3B,GAAG,CACZ,KAAM,OACN,QAAS,EACT,GAAGjV,GAAEjiB,CAAC,CACV,CAAG,CACH,CACA,MAAMm3B,GAAqB3W,EAAE,eAAgB,CAACzgB,EAAGC,IAAM,CACrDoqB,GAAG,KAAKrqB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAMyvB,GAAG9wB,EAAG,CAAC,EAAGA,EAAE,KAAK,MAAQ,CAAC,EAAG,IAAM,CACtG,GAAI,EAAE,YAAc,WAClB,MAAM,IAAI2gB,GAAG3gB,EAAE,YAAY,IAAI,EACjC,EAAE,SAAYmC,GAAM,CAClB,GAAI,OAAOA,GAAK,SACd,EAAE,OAAO,KAAK+gB,GAAG/gB,EAAG,EAAE,MAAOlC,CAAC,CAAC,MAC5B,CACH,MAAM,EAAIkC,EACV,EAAE,QAAU,EAAE,SAAW,IAAK,EAAE,OAAS,EAAE,KAAO,UAAW,EAAE,QAAU,EAAE,MAAQ,EAAE,OAAQ,EAAE,OAAS,EAAE,KAAOnC,GAAI,EAAE,OAAO,KAAKkjB,GAAG,CAAC,CAAC,CACzI,CACP,EACI,MAAM7hB,EAAIpB,EAAE,UAAU,EAAE,MAAO,CAAC,EAChC,OAAOoB,aAAa,QAAUA,EAAE,KAAMc,IAAO,EAAE,MAAQA,EAAG,EAAE,SAAW,GAAI,EAAE,GAAK,EAAE,MAAQd,EAAG,EAAE,SAAW,GAAI,EACpH,CACA,CAAC,EACD,SAASmzB,GAAGx0B,EAAG,CACb,OAAO,IAAIo3B,GAAG,CACZ,KAAM,YACN,UAAWp3B,CACf,CAAG,CACH,CACA,MAAM82B,GAAqBrW,EAAE,cAAe,CAACzgB,EAAGC,IAAM,CACpDsqB,GAAG,KAAKvqB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAM0wB,GAAG/xB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,OAAS,IAAMA,EAAE,KAAK,IAAI,SACnH,CAAC,EACD,SAASg0B,GAAGh0B,EAAG,CACb,OAAO,IAAI82B,GAAG,CACZ,KAAM,WACN,UAAW92B,CACf,CAAG,CACH,CACA,MAAMq3B,GAAqB5W,EAAE,mBAAoB,CAACzgB,EAAGC,IAAM,CACzDuqB,GAAG,KAAKxqB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAM0wB,GAAG/xB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,OAAS,IAAMA,EAAE,KAAK,IAAI,SACnH,CAAC,EACD,SAASi0B,GAAGj0B,EAAG,CACb,OAAO,IAAIq3B,GAAG,CACZ,KAAM,WACN,UAAWr3B,CACf,CAAG,CACH,CACA,MAAMs3B,GAAqB7W,EAAE,cAAe,CAACzgB,EAAGC,IAAM,CACpDwqB,GAAG,KAAKzqB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAMkwB,GAAGvxB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,OAAS,IAAMA,EAAE,KAAK,IAAI,SACnH,CAAC,EACD,SAASk0B,GAAGl0B,EAAG,CACb,OAAO,IAAIs3B,GAAG,CACZ,KAAM,WACN,UAAWt3B,CACf,CAAG,CACH,CACA,MAAMu3B,GAAqB9W,EAAE,aAAc,CAACzgB,EAAGC,IAAM,CACnDyqB,GAAG,KAAK1qB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAMowB,GAAGzxB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,OAAS,IAAMA,EAAE,KAAK,IAAI,UAAWA,EAAE,cAAgBA,EAAE,MAClJ,CAAC,EACD,SAASy0B,GAAGz0B,EAAGC,EAAG,CAChB,OAAO,IAAIs3B,GAAG,CACZ,KAAM,UACN,UAAWv3B,EACX,IAAI,cAAe,CACjB,OAAO,OAAOC,GAAK,WAAaA,EAAC,EAAK6hB,GAAG7hB,CAAC,CAC3C,CACL,CAAG,CACH,CACA,MAAMu3B,GAAqB/W,EAAE,cAAe,CAACzgB,EAAGC,IAAM,CACpD2qB,GAAG,KAAK5qB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAMqwB,GAAG1xB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,OAAS,IAAMA,EAAE,KAAK,IAAI,SACnH,CAAC,EACD,SAAS00B,GAAG10B,EAAGC,EAAG,CAChB,OAAO,IAAIu3B,GAAG,CACZ,KAAM,WACN,UAAWx3B,EACX,IAAI,cAAe,CACjB,OAAO,OAAOC,GAAK,WAAaA,EAAC,EAAK6hB,GAAG7hB,CAAC,CAC3C,CACL,CAAG,CACH,CACA,MAAM82B,GAAqBtW,EAAE,iBAAkB,CAACzgB,EAAGC,IAAM,CACvD4qB,GAAG,KAAK7qB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAMmwB,GAAGxxB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,OAAS,IAAMA,EAAE,KAAK,IAAI,SACnH,CAAC,EACD,SAASm0B,GAAGn0B,EAAGC,EAAG,CAChB,OAAO,IAAI82B,GAAG,CACZ,KAAM,cACN,UAAW/2B,EACX,GAAGkiB,GAAEjiB,CAAC,CACV,CAAG,CACH,CACA,MAAMw3B,GAAqBhX,EAAE,WAAY,CAACzgB,EAAGC,IAAM,CACjD8qB,GAAG,KAAK/qB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAMswB,GAAG3xB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,OAAS,IAAMA,EAAE,KAAK,IAAI,UAAWA,EAAE,YAAcA,EAAE,MAChJ,CAAC,EACD,SAAS20B,GAAG30B,EAAGC,EAAG,CAChB,OAAO,IAAIw3B,GAAG,CACZ,KAAM,QACN,UAAWz3B,EACX,WAAY,OAAOC,GAAK,WAAaA,EAAI,IAAMA,CACnD,CAAG,CACH,CACA,MAAMy3B,GAAqBjX,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAChD+qB,GAAG,KAAKhrB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAMuwB,GAAG5xB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,GAAKC,EAAE,GAAID,EAAE,IAAMC,EAAE,GAC9G,CAAC,EACD,SAASs0B,GAAGv0B,EAAGC,EAAG,CAChB,OAAO,IAAIy3B,GAAG,CACZ,KAAM,OACN,GAAI13B,EACJ,IAAKC,CAET,CAAG,CACH,CACA,MAAM03B,GAAqBlX,EAAE,cAAe,CAACzgB,EAAGC,IAAM,CACpDirB,GAAG,KAAKlrB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAMwwB,GAAG7xB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,OAAS,IAAMA,EAAE,KAAK,IAAI,SACnH,CAAC,EACD,SAAS40B,GAAG50B,EAAG,CACb,OAAO,IAAI23B,GAAG,CACZ,KAAM,WACN,UAAW33B,CACf,CAAG,CACH,CACA,MAAM43B,GAAqBnX,EAAE,UAAW,CAACzgB,EAAGC,IAAM,CAChDmrB,GAAG,KAAKprB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAM2wB,GAAGhyB,EAAG,EAAG,EAAGqB,CAAC,EAAGrB,EAAE,OAAS,IAAMA,EAAE,KAAK,IAAI,OAAM,CACzH,CAAC,EACD,SAAS63B,GAAG73B,EAAG,CACb,OAAO,IAAI43B,GAAG,CACZ,KAAM,OACN,OAAQ53B,CACZ,CAAG,CACH,CACA,MAAM83B,GAAqBrX,EAAE,YAAa,CAACzgB,EAAGC,IAAM,CAClDorB,GAAG,KAAKrrB,EAAGC,CAAC,EAAG4zB,GAAE,KAAK7zB,EAAGC,CAAC,EAAGD,EAAE,KAAK,kBAAoB,CAAC,EAAG,EAAGqB,IAAMuvB,GAAG5wB,EAAG,CAAC,CAC9E,CAAC,EACD,SAAS8zB,GAAG9zB,EAAGC,EAAI,GAAI,CACrB,OAAuB8uB,GAAG+I,GAAI93B,EAAGC,CAAC,CACpC,CACA,SAAS8zB,GAAG/zB,EAAGC,EAAG,CAChB,OAAuB+uB,GAAGhvB,EAAGC,CAAC,CAChC,CACA,MAAM83B,EAAG,CACP,KACA,YAAY93B,EAAG,CACb,KAAK,KAAOA,GAAK,EAClB,CACD,MAAMA,EAAG,CACP,OAAO,KAAK,KAAK,MAAQA,EAAG,IAC7B,CACD,UAAUA,EAAG,EAAG,CACd,OAAO,KAAK,KAAK,UAAYA,EAAG,KAAK,KAAK,MAAQ,EAAG,IACtD,CACD,QAAQA,EAAG,CACT,OAAO,KAAK,KAAK,QAAUA,EAAG,IAC/B,CACD,QAAQA,EAAG,CACT,OAAO,KAAK,KAAK,QAAUA,EAAG,IAC/B,CACD,SAASA,EAAG,CACV,OAAO,KAAK,KAAK,SAAWA,EAAG,IAChC,CACH,CACA,MAAM+3B,GAAK,CACT,MAAO,SACP,QAASD,GACT,SAAU,CACR,QAAS,EACV,CACH,EACA,MAAME,EAAG,CACP,QAA0B,IAAI,IAC9B,QAAQh4B,EAAG,CACT,KAAK,QAAQ,IAAIA,EAAE,MAAOA,CAAC,CAC5B,CACD,IAAIA,EAAG,CACL,OAAO,KAAK,QAAQ,IAAIA,CAAC,CAC1B,CACH,CACA,MAAMi4B,EAAG,CACP,YAAYj4B,EAAG,EAAG,CAChB,KAAK,QAAUA,EAAG,KAAK,OAAS,OAAO,GAAK,WAAa43B,GAAG,CAAC,EAAI,CAClE,CACD,OACA,KAAO,CAAA,EACP,IAAI53B,EAAG,EAAG,CACR,MAAM,EAAI,KAAK,QAAQ,IAAIA,CAAC,EAC5B,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,GAAGA,CAAC,uBAAuB,EAC7C,MAAMoB,EAAI,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAClC,OAAO,IAAIA,CAAC,EAAG,KAAK,KAAKpB,CAAC,EAAI,CAAE,GAAG,KAAK,KAAKA,CAAC,GAAK,CAAE,EAAE,GAAGoB,EAAE,IAAM,EAAE,IACrE,CACH,CACA,MAAM82B,EAAG,CACP,YAAYl4B,EAAG,CACb,KAAK,OAASA,EAAG,KAAK,OAAS+2B,GAC7B,OAAO,YACL,OAAO,QAAQ,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,EAAG,CAAC,IAAM,CAC1C,EACA,EAAE,MACZ,CAAS,CACF,CACP,CACG,CACD,OAEA,QAAQ/2B,EAAG,CACT,OAAO,OAAO,QAAQ,KAAK,MAAM,EAAE,OACjC,CAAC,CAAC,EAAG,CAAC,IAAM,EAAE,KAAKA,CAAC,GAAG,UAAY,IAAM,EAAE,KAAK,QAAQ,UAAY,EACrE,EAAC,IAAI,CAAC,CAAC,EAAG,CAAC,KAAO,CACjB,UAAW,EACX,OAAQ,EAAE,OACV,KAAM,CAAE,GAAG,EAAE,KAAK,QAAU,GAAI,GAAG,EAAE,KAAKA,CAAC,GAAK,CAAA,CAAI,CACrD,EAAC,CACH,CAED,MAAMA,EAAG,CACP,GAAI,CACF,MAAO,CACL,QAAS,GACT,KAAM,KAAK,OAAO,MAAMA,CAAC,CACjC,CACK,OAAQ,EAAG,CACV,MAAO,CACL,QAAS,GACT,OAAQ,aAAa4yB,GAAK,EAAE,OAAS,CAAC,CAAE,KAAM,SAAU,MAAO5yB,EAAG,KAAM,CAAA,EAAI,QAAS,EAAE,QAAS,CACxG,CACK,CACF,CACD,UAAUA,EAAG,CACX,MAAM,EAAI,KAAK,OAAO,UAAUA,CAAC,EACjC,OAAO,EAAE,QAAU,CACjB,QAAS,GACT,KAAM,EAAE,IACd,EAAQ,CACF,QAAS,GACT,OAAQ,EAAE,MAAM,MACtB,CACG,CAID,aAAaA,EAAG,CACd,OAAOiyB,GAAG,KAAK,OAAQjyB,CAAC,CACzB,CACH,CACA,MAAMm4B,EAAG,CACP,QAAU,IAAIH,GACd,YAAYh4B,EAAI,GAAI,CAClB,CAAC,GAAGA,EAAG+3B,EAAE,EAAE,QAAS,GAAM,CACxB,KAAK,QAAQ,QAAQ,CAAC,EAAG,EAAE,SAASE,GAAG,YAAcA,GAAG,UAAU,EAAE,KAAK,EAAI,SAAS,EAAG,CACvF,OAAO,KAAK,IAAI,EAAE,MAAO,CAAC,CAClC,EACA,CAAK,CACF,CACD,MAAMj4B,EAAG,CACP,OAAO,IAAIi4B,GAAG,KAAK,QAASj4B,CAAC,CAC9B,CACD,OAAOA,EAAG,CACR,OAAO,IAAIk4B,GAAGl4B,CAAC,CAChB,CACH,CACA,SAASo4B,GAAGr4B,EAAI,GAAI,CAClB,OAAO,IAAIo4B,GAAGp4B,EAAE,OAAO,CACzB,CACA,MAAMs4B,WAAWP,EAAG,CAClB,MAAM93B,EAAG,CACP,OAAO,KAAK,KAAK,MAAQA,EAAG,IAC7B,CACH,CACK,MAACs4B,GAAK,CACT,MAAO,SACP,QAASD,GACT,SAAU,CACR,QAAS,EACV,CACH,EAAGE,GAAKH,GAAG,CACT,QAAS,CAACE,EAAE,CACd,CAAC,EAAQC,GAAG,OAAO,CACjB,IAAKA,GAAG,MACN,IAAMnE,GAAG,CAACgC,GAAI,EAAEH,GAAI,CAAA,CAAC,EAAE,UAAWl2B,GAAM,OAAOA,CAAC,CAAC,CAClD,CACH,CAAC,EAA0L,MAAAy4B,GAAK,kBAAmBC,GAAK,oBAAyCC,GAAK,oBAAiDC,GAAK,oBAAqBC,GAAK,wBAA2HC,GAAK,mBAAoBC,GAAK,WAAYC,GAAK,UAAWC,GAAK,WAAYC,GAAK,YAAaC,GAAK,YAAaC,GAAK,YAAaC,GAAK,aAAcC,GAAK,WAAiDC,GAAK,QAChqB,SAASC,GAAGx5B,EAAGC,EAAI,GAAI,CACrB,OAAOD,EAAE,MAAQC,EAAE,OAASD,EAAE,OAAS,GAAIA,EAAE,QAAUC,EAAE,SAAWD,EAAE,SAAW,GAAIA,EAAE,YAAcC,EAAE,aAAeD,EAAE,aAAeu5B,GAAIv5B,EAAE,gBAAkBC,EAAE,iBAAmB,GAAID,EAAE,cAAgB,CAACA,EAAE,OAAS,CAACA,EAAE,QAASA,CACpO,CACA,SAASy5B,GAAGz5B,EAAI,CAAE,EAAEC,EAAG,CACrB,MAAM,EAAI,CAAE,GAAGD,CAAC,EAAI,EAAIC,EAAE,SAAW,GACrC,GAAI0D,GAAG,CAAC,EACN61B,GAAG,EAAG,CAAC,MAEP,QAAQv5B,EAAE,KAAI,CACZ,KAAKw4B,GACHe,GAAG,EAAG,CACJ,MAAO,EAAE,OAAS,GAClB,gBAAiB,CAAC,EAAE,KAC9B,CAAS,EACD,MACF,KAAKd,GACHc,GAAG,EAAG,CACJ,QAAS,EAAE,SAAW,GACtB,gBAAiBx5B,EAAE,eAC7B,CAAS,EACD,MACF,KAAK24B,GACHa,GAAG,EAAG,CACJ,gBAAiB,EAC3B,CAAS,EACD,MACF,KAAKZ,GACHY,GAAG,EAAG,CACJ,gBAAiB,EAC3B,CAAS,EACD,MACF,KAAKX,GACHW,GAAG,EAAG,CACJ,YAAa,EAAE,MAAQ,EAAI,GAAG,EAAE,KAAK,QAAUD,GAC/C,gBAAiB,EAAE,MAAQ,CACrC,CAAS,EACD,KACH,CACH,OAAO,CACT,CACA,MAAMG,GAAK,CACT,QAAS,UAET,QAAS,IAET,SAAU,GAEZ,EAAGC,GAAK,CACN,QAAS,UAET,MAAO,QAEP,OAAQ,SAER,IAAK,KAEP,EACA,SAASC,GAAG55B,EAAGC,EAAG,CAChB,OAAQD,EAAE,IAAMC,EAAE,IAAM,OAAOA,EAAE,GAAG,EAAI,GAAID,EAAE,QAAUC,EAAE,SAAW,GAAID,EAAE,OAASC,EAAE,QAAU05B,GAAG,QAAS35B,EAAE,QAAUA,EAAE,QAAU25B,GAAG,MAAO35B,EAAE,SAAWA,EAAE,QAAU25B,GAAG,OAAQ35B,EAAE,SAAWC,EAAE,OAASy5B,GAAG,QAAS15B,EAAE,kBAAoB,GAAIA,EAAE,SAAQ,CACxP,KAAK05B,GAAG,QACN15B,EAAE,kBAAoB,KACtB,MACF,KAAK05B,GAAG,SACN15B,EAAE,kBAAoB,KACtB,KACH,CACD,OAAOA,EAAE,QAAUC,EAAE,SAAW,CAAA,EAAID,EAAE,SAAWC,EAAE,UAAY,GAAID,EAAE,gBAAkBA,EAAE,UAAY,EAAGA,EAAE,aAAe,CAAC,EAAG,IAAM,CAACA,EAAE,iBAAmB,CAACuG,GAAE,CAAC,GAAK,CAACA,GAAE,CAAC,EAAI,GAAK,EAAE,QAAS,EAAG,EAAE,QAAO,EAAKvG,EAAE,SAAW,GAAK,IAAKA,EAAE,KAAOC,EAAE,OAAS,GAAID,EAAE,KAAOC,EAAE,MAAQ,GAAID,EAAE,MAAQC,EAAE,OAASsgB,GAAE,EAAG,QAASvgB,EAAE,SAAW,OAAOC,EAAE,UAAY,SAAWA,EAAE,SAAW,GAAID,EAAE,QAAU,OAAOC,EAAE,SAAW,SAAWA,EAAE,QAAU,GAAID,EAAE,UAAY,OAAOC,EAAE,WAAa,SAAWA,EAAE,UAAY,GAAID,EAAE,SAAW,OAAOC,EAAE,UAAY,SAAWA,EAAE,SAAW,GAAID,EAAE,SAAW,OAAOC,EAAE,UAAY,SAAWA,EAAE,SAAW,GAAID,EAAE,kBAAoBA,EAAE,SAAW4T,GAAG5T,EAAE,QAAQ,EAAI,GAAIA,EAAE,mBAAqBC,EAAE,QAAU,CAAE,GAAE,IAAK,IAAO,CACntB,UAAW+G,GAAG,EAAE,CAAC,CAAC,EAElB,QAASA,GAAG,EAAE,CAAC,CAAC,EAEhB,UAAW,EAAE,CAAC,EAEd,WAAY,EAAE,CAAC,CAEhB,EAAC,EAAGhH,EAAE,WAAaC,EAAE,YAAc,GAAID,EAAE,gBAAkBC,EAAE,iBAAmB,GAAID,EAAE,mBAAqB,CAAC,CAACA,EAAE,gBAAiBA,EAAE,mBAAqB,GAAIA,EAAE,gBAAkBA,EAAE,oBAAsBA,EAAE,mBAAoBA,CAChO,CACA,SAAS65B,GAAG75B,EAAI,CAAE,EAAEC,EAAG,CACrB,MAAM,EAAI,CAAE,GAAGD,CAAC,EAAI,EAAIC,EAAE,SAAW,GACrC,OAAQA,EAAE,MAAQ84B,IAAMp1B,GAAG,CAAC,IAAMi2B,GAAG,EAAG,CAAC,EAAG,CAC9C,CACA,MAAME,GAAK,CACT,QAAS,UAET,WAAY,aAEZ,UAAW,YAEX,OAAQ,SAER,OAAQ,QAEV,EACA,SAASC,GAAG/5B,EAAGC,EAAG,EAAG,CACnB,OAAOD,EAAE,IAAMC,EAAE,IAAM,OAAOA,EAAE,GAAG,EAAI,GAAID,EAAE,GAAKC,EAAE,IAAM,GAAID,EAAE,QAAUC,EAAE,SAAW,GAAID,EAAE,UAAY,OAAOC,EAAE,WAAa,SAAWA,EAAE,UAAY,GAAID,EAAE,SAAW,OAAOC,EAAE,UAAY,SAAWA,EAAE,SAAW,GAAID,EAAE,SAAW,OAAOC,EAAE,UAAY,UAAYA,EAAE,SAAW,GAAID,EAAE,OAASC,EAAE,QAAU,GAAID,EAAE,MAAQC,EAAE,OAAS,GAAID,EAAE,SAAW,OAAOC,EAAE,UAAY,UAAYA,EAAE,SAAW,GAAID,EAAE,YAAcA,EAAE,UAAY,GAAK85B,GAAG,OAASA,GAAG,UAAW95B,EAAE,gBAAkBA,EAAE,aAAe85B,GAAG,SAAW95B,EAAE,aAAe85B,GAAG,QAAU95B,EAAE,aAAe85B,GAAG,OAAQ95B,CACxjB,CACA,SAASg6B,GAAGh6B,EAAI,CAAE,EAAEC,EAAG,CACrB,MAAM,EAAI,CAAE,GAAGD,CAAC,EAAI,EAAIC,EAAE,SAAW,GACrC,OAAQA,EAAE,MAAQ+4B,IAAMr1B,GAAG,CAAC,IAAMo2B,GAAG,EAAG,CAAC,EAAG,CAC9C,CACA,MAAME,GAAK,CACT,QAAS,UAET,QAAS,IAET,SAAU,IAEV,MAAO,IAEP,KAAM,IAEN,YAAa,IAEb,SAAU,IAEV,UAAW,IAEX,WAAY,IAEd,EAAGC,GAAK,CACN,QAAS,UAET,QAAS,IAET,QAAS,IAET,OAAQ,GAEV,EACA,SAASC,GAAGn6B,EAAGC,EAAG,CAChB,OAAQD,EAAE,GAAKC,EAAE,GAAK,OAAOA,EAAE,EAAE,EAAI,GAAID,EAAE,QAAUC,EAAE,QAAUA,EAAE,OAAO,CAAC,EAAI,OAAOA,EAAE,OAAO,CAAC,EAAE,EAAE,EAAI,GAAID,EAAE,KAAOC,EAAE,SAAWg6B,GAAG,QAASj6B,EAAE,cAAgB,GAAIA,EAAE,KAAI,CACxK,KAAKi6B,GAAG,QACNj6B,EAAE,cAAgB,QAClB,MACF,KAAKi6B,GAAG,SACNj6B,EAAE,cAAgB,SAClB,MACF,KAAKi6B,GAAG,MACNj6B,EAAE,cAAgB,UAClB,MACF,KAAKi6B,GAAG,KACNj6B,EAAE,cAAgB,KAClB,MACF,KAAKi6B,GAAG,YACNj6B,EAAE,cAAgB,MAClB,MACF,KAAKi6B,GAAG,SACNj6B,EAAE,cAAgB,OAClB,MACF,KAAKi6B,GAAG,UACNj6B,EAAE,cAAgB,QAClB,MACF,KAAKi6B,GAAG,WACNj6B,EAAE,cAAgB,UAClB,KACH,CACD,OAAQA,EAAE,MAAQC,EAAE,OAASi6B,GAAG,QAASl6B,EAAE,IAAMC,EAAE,KAAO,EAAGD,EAAE,KAAI,CACjE,KAAKi6B,GAAG,YACN,GAAIj6B,EAAE,KAAO,GAAI,CACf,IAAI,EAAI,KAAK,MAAMA,EAAE,IAAM,EAAE,EAC7B,MAAM,EAAIA,EAAE,IAAM,GAClB,IAAM,IAAM,GAAK,KAAK,MAAM,EAAI,IAAM,EAAE,EAAI,KAAMA,EAAE,aAAe,EAAI,IACxE,MACCA,EAAE,aAAeA,EAAE,IAAM,KAC3B,MACF,QACEA,EAAE,aAAe6T,GAAG7T,EAAE,IAAK,CAAC,EAC5B,KACH,CACD,OAAOA,EAAE,KAAO0G,GAAGzG,EAAE,IAAI,EAAGD,EAAE,YAAcuG,GAAEvG,EAAE,IAAI,EAAGA,EAAE,cAAgBmH,GAAGnH,EAAE,IAAI,EAAGA,CACvF,CACA,SAASo6B,GAAGp6B,EAAI,CAAE,EAAEC,EAAG,CACrB,MAAM,EAAI,CAAE,GAAGD,CAAC,EAAI,EAAIC,EAAE,SAAW,GACrC,OAAQA,EAAE,MAAQg5B,IAAMt1B,GAAG,CAAC,IAAMw2B,GAAG,EAAG,CAAC,EAAG,CAC9C,CACA,MAAME,GAAK,CACT,KAAM,OAEN,KAAM,OAEN,SAAU,UAEZ,EACA,SAASC,GAAGt6B,EAAI,EAAGC,EAAG,CACpB,IAAI,EAAID,GAAK,EAAI,EAAIA,EACrB,MAAM,EAAI,CACR,eAAgB,GAChB,KAAM,EACV,EACE,OAAQC,EAAC,CACP,KAAKo6B,GAAG,SACN,EAAI,GAAK,IAAM,IAAM,EAAG,EAAI,IAAM,GAAK,IAAM,IAAM,EAAE,eAAiB,GAAK,EAAI,GAAK,EAAE,eAAiB,GAAK,EAAG,EAAE,KAAO,IACxH,MACF,KAAKA,GAAG,KACN,EAAE,eAAiBvmB,GAAG,EAAG,CAAC,EAAG,EAAE,KAAO,IACtC,MACF,KAAKumB,GAAG,KACR,QACE,EAAI,IAAM,EAAE,eAAiB,OAAO70B,GAAG,CAAC,CAAC,EAAG,EAAE,KAAO,OAAS,EAAE,eAAiBD,GAAG,EAAI,GAAI,CAAC,EAAG,EAAE,KAAO,MACzG,KACH,CACD,OAAO,CACT,CACA,MAAMg1B,GAAK,CACT,QAAS,UAET,KAAM,IAEN,KAAM,IAEN,MAAO,IAEP,OAAQ,GAEV,EAAGC,GAAK,CACN,QAAS,UAET,KAAM,IAEN,MAAO,IAEP,IAAK,IAEL,OAAQ,IAER,QAAS,IAET,KAAM,GAER,EAAGC,GAAK,CACN,QAAS,UAET,GAAI,KAEJ,IAAK,KAEP,EAAGC,GAAK,CACN,KAAM,OAEN,QAAS,UAET,MAAO,QAEP,kBAAmB,mBAErB,EACA,SAASC,GAAG36B,EAAGC,EAAG,CAChB,OAAQD,EAAE,GAAKC,EAAE,GAAK,OAAOA,EAAE,EAAE,EAAI,GAAID,EAAE,KAAOA,EAAE,OAASu6B,GAAG,QAASv6B,EAAE,OAASA,EAAE,QAAUw6B,GAAG,QAASx6B,EAAE,IAAMC,EAAE,KAAO,EAAGD,EAAE,aAAe6T,GAAG7T,EAAE,IAAK,CAAC,EAAGA,EAAE,sBAAwB,CAAC,EAAGqB,IAAM,EAAE,KAAO,GAAKA,EAAE,KAAO,EAAGrB,EAAE,UAAY0G,GAAGzG,EAAE,SAAS,EAAGD,EAAE,iBAAmBuG,GAAEvG,EAAE,SAAS,EAAGA,EAAE,mBAAqBmH,GAAGnH,EAAE,SAAS,EAAGA,EAAE,QAAU0G,GAAGzG,EAAE,OAAO,EAAGD,EAAE,eAAiBuG,GAAEvG,EAAE,OAAO,EAAGA,EAAE,iBAAmBmH,GAAGnH,EAAE,OAAO,EAAGA,EAAE,oBAAsBA,EAAE,iBAAmB6G,GACpdI,GAAGjH,EAAE,UAA2B,IAAI,KAAQ,EAAE,EAC9C,CACJ,EAAM,GAAIA,EAAE,MAAQC,EAAE,MAAQ,CAAA,GAAI,IAC7B,GAAM,OAAO,GAAK,SAAW,EAAI,EAAE,KAAO,EAC5C,EAAED,EAAE,UAAYy6B,GAAG,QAASz6B,EAAE,OAAM,CACnC,KAAKw6B,GAAG,KACR,KAAKA,GAAG,MACNx6B,EAAE,UAAYy6B,GAAG,GACjB,MACF,KAAKD,GAAG,IACR,KAAKA,GAAG,OACNx6B,EAAE,UAAYy6B,GAAG,IACjB,KACH,CACD,OAAQz6B,EAAE,eAAiB06B,GAAG,KAAMz6B,EAAE,KAAI,CACxC,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACHD,EAAE,eAAiB06B,GAAG,KACtB,MACF,IAAK,IACH16B,EAAE,eAAiB06B,GAAG,MACtB,KACH,CACD,MAAM,EAAIJ,GAAGt6B,EAAE,GAAK,CAAC,EACrB,OAAOA,EAAE,MAAQ,EAAE,eAAiB,EAAE,KAAMA,EAAE,MAAQC,EAAE,OAAS,CAAA,EAAID,CACvE,CACA,SAAS46B,GAAG56B,EAAI,CAAE,EAAEC,EAAG,CACrB,MAAM,EAAI,CAAE,GAAGD,CAAC,EAAI,EAAIC,EAAE,SAAW,GACrC,GAAI0D,GAAG,CAAC,EACNg3B,GAAG,EAAG,CAAC,MAEP,QAAQ16B,EAAE,KAAI,CACZ,KAAKi5B,GACHyB,GAAG,EAAG,CAAC,EACP,KACH,CACH,OAAO,CACT,CACA,MAAME,GAAK,CACT,QAAS,UAET,KAAM,IAEN,MAAO,IAEP,OAAQ,IAER,aAAc,IAEd,MAAO,IAEP,MAAO,GAET,EACA,SAASC,GAAG96B,EAAGC,EAAI,GAAI,CACrB,OAAQD,EAAE,MAAQC,EAAE,OAAS46B,GAAG,QAAS76B,EAAE,eAAiB,GAAIA,EAAE,MAAK,CACrE,KAAK66B,GAAG,KACN76B,EAAE,eAAiB,KACnB,MACF,KAAK66B,GAAG,MACN76B,EAAE,eAAiB,KACnB,MACF,KAAK66B,GAAG,OACN76B,EAAE,eAAiB,KACnB,MACF,KAAK66B,GAAG,aACN76B,EAAE,eAAiB,KACnB,MACF,KAAK66B,GAAG,MACN76B,EAAE,eAAiB,KACnB,MACF,KAAK66B,GAAG,MACN76B,EAAE,eAAiB,KACnB,KACH,CACD,OAAOA,EAAE,MAAQC,EAAE,OAAS,GAAID,CAClC,CACA,SAAS+6B,GAAG/6B,EAAI,CAAE,EAAEC,EAAG,CACrB,MAAM,EAAI,CAAE,GAAGD,CAAC,EAAI,EAAIC,EAAE,SAAW,GACrC,OAAQA,EAAE,MAAQk5B,IAAMx1B,GAAG,CAAC,IAAMm3B,GAAG,EAAG,CAAC,EAAG,CAC9C,CACA,SAASE,GAAGh7B,EAAGC,EAAG,CAChB,OAAOD,EAAE,GAAKC,EAAE,GAAK,OAAOA,EAAE,EAAE,EAAI,GAAID,EAAE,KAAOC,EAAE,MAAQ,GAAID,EAAE,MAAQC,EAAE,UAAY,GAAID,EAAE,OAAS,OAAOC,EAAE,QAAU,UAAYA,EAAE,OAAS,GAAID,EAAE,cAAgBC,EAAE,SAAS,WAAa,GAAID,EAAE,0BAA4B,OAAOC,EAAE,iBAAmB,UAAYA,EAAE,iBAAmB,EAAGD,EAAE,yBAA2B,OAAOC,EAAE,gBAAkB,UAAYA,EAAE,gBAAkB,EAAGD,CAC7X,CACA,SAASi7B,GAAGj7B,EAAI,CAAE,EAAEC,EAAG,CACrB,MAAM,EAAI,CAAE,GAAGD,CAAC,EAAI,EAAIC,EAAE,SAAW,GACrC,OAAQA,EAAE,MAAQm5B,IAAMz1B,GAAG,CAAC,IAAMq3B,GAAG,EAAG,CAAC,EAAG,CAC9C,CACA,SAASE,GAAGl7B,EAAGC,EAAG,CAChB,OAAOD,EAAE,OAASC,EAAE,QAAUD,EAAE,QAAU,GAAIA,EAAE,MAAQC,EAAE,OAASD,EAAE,OAAS,GAAIA,EAAE,OAASC,EAAE,QAAUD,EAAE,QAAU,GAAIA,EAAE,UAAY,OAAOC,EAAE,WAAa,SAAWA,EAAE,UAAYD,EAAE,WAAa,GAAIA,EAAE,SAAW,OAAOC,EAAE,UAAY,SAAWA,EAAE,SAAWD,EAAE,UAAY,GAAIA,CACvR,CACA,SAASm7B,GAAGn7B,EAAI,CAAE,EAAEC,EAAG,CACrB,MAAM,EAAI,CAAE,GAAGD,CAAC,EAAI,EAAIC,EAAE,SAAW,GACrC,OAAQA,EAAE,MAAQq5B,IAAM31B,GAAG,CAAC,IAAMu3B,GAAG,EAAG,CAAC,EAAG,CAC9C,CACA,SAASE,GAAGp7B,EAAGC,EAAG,CAChB,OAAOD,EAAE,OAASC,EAAE,QAAU,GAAID,EAAE,MAAQC,EAAE,OAAS,GAAID,EAAE,SAAWC,EAAE,UAAY,GAAID,CAC5F,CACA,SAASq7B,GAAGr7B,EAAI,CAAE,EAAEC,EAAG,CACrB,MAAM,EAAI,CAAE,GAAGD,CAAC,EAAI,EAAIC,EAAE,SAAW,GACrC,OAAQA,EAAE,MAAQo5B,IAAM11B,GAAG,CAAC,IAAMy3B,GAAG,EAAG,CAAC,EAAG,CAC9C,CACA,SAASE,GAAGt7B,EAAGC,EAAI,QAAS,EAAI,UAAW,CACzC,OAAOD,EAAE,OAASC,EAAGD,EAAE,MAAQ,EAAGA,CACpC,CACA,SAASu7B,GAAGv7B,EAAI,CAAE,EAAEC,EAAG,CACrB,MAAM,EAAI,CAAE,GAAGD,CAAC,EAAI,EAAIC,EAAE,SAAW,GACrC,OAAQA,EAAE,MAAQ64B,IAAMn1B,GAAG,CAAC,IAAM23B,GAChC,EACA,EAAE,QAAU,EAAE,OACd,EAAE,OAAS,EAAE,KACd,EAAE,CACL,CACM,MAAAE,GAAK7b,GAAE,EAAI8b,GAAKjc,GAAG,CACvB,UAAW,CAAE,EACb,QAASC,GAAG,CACV,MAAOga,GACP,KAAMI,GACN,IAAKG,GACL,KAAMI,GACN,MAAOQ,GACP,MAAOG,GACP,MAAOE,GACP,KAAME,GACN,OAAQE,GACR,MAAOE,EACX,CAAG,EACD,SAAU7b,GACR8b,GAAG,WACH5b,GACAC,EAED,CACH,CAAC,EAAQ,IAAIT,GAAG,CACd,QAASmB,GAAE,EAAG,QACd,QAAS,CACP,eAAgB,gCACjB,EACD,aAAc,CACZ,QAAUvgB,GAAM,CACd,MAAMC,EAAIw7B,GAAG,SAAQ,EAAG,MAAM,MAC9Bx7B,IAAMD,EAAE,QAAUA,EAAE,SAAW,CAAE,EAAEA,EAAE,QAAQ,eAAiB,UAAUC,CAAC,GAC1E,CACF,CACH,CAAC,EAoF6C,MAAAy7B,GAAKrD,GAAG,CACpD,QAAS,CAACE,EAAE,CACd,CAAC,EAAQmD,GAAG,OAAO,CACjB,GAAIA,GAAG,MACL,IAAMrH,GAAG,CAACgC,GAAI,EAAEH,GAAI,CAAA,CAAC,EAAE,UAAWl2B,GAAM,OAAOA,CAAC,CAAC,CAClD,EACD,MAAO07B,GAAG,MAAM,IAAMxF,GAAE,CAAE,EAC1B,QAASwF,GAAG,MACV,IAAMxF,GAAE,EAAG,SAAQ,EAAG,UAAWl2B,GAAM,OAAOA,GAAK,EAAE,CAAC,CACvD,CACH,CAAC,4kBC5lqBA,SAAU27B,EAAS,CAGZC,EAAA,QAAiBD,GAgBxB,GAAC,SAAUE,EAAW,KAoBfC,EAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAQ7F,SAASC,EAAS1a,EAAG1W,EAAG,CACpB,IAAIhE,EAAI0a,EAAE,CAAC,EACPZ,EAAIY,EAAE,CAAC,EACPtX,EAAIsX,EAAE,CAAC,EACPpI,EAAIoI,EAAE,CAAC,EAEX1a,IAAM8Z,EAAI1W,EAAI,CAAC0W,EAAIxH,GAAKtO,EAAE,CAAC,EAAI,UAAY,EAC3ChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAI8Z,EAAI,CAAC9Z,EAAIoD,GAAKY,EAAE,CAAC,EAAI,UAAY,EAC3CsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMkP,EAAItS,EAAI,CAACsS,EAAIwH,GAAK9V,EAAE,CAAC,EAAI,UAAY,EAC3CZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIkP,EAAI,CAAClP,EAAIpD,GAAKgE,EAAE,CAAC,EAAI,WAAa,EAC5C8V,GAAMA,GAAK,GAAKA,IAAM,IAAM1W,EAAI,EAChCpD,IAAM8Z,EAAI1W,EAAI,CAAC0W,EAAIxH,GAAKtO,EAAE,CAAC,EAAI,UAAY,EAC3ChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAI8Z,EAAI,CAAC9Z,EAAIoD,GAAKY,EAAE,CAAC,EAAI,WAAa,EAC5CsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMkP,EAAItS,EAAI,CAACsS,EAAIwH,GAAK9V,EAAE,CAAC,EAAI,WAAa,EAC5CZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIkP,EAAI,CAAClP,EAAIpD,GAAKgE,EAAE,CAAC,EAAI,SAAW,EAC1C8V,GAAMA,GAAK,GAAKA,IAAM,IAAM1W,EAAI,EAChCpD,IAAM8Z,EAAI1W,EAAI,CAAC0W,EAAIxH,GAAKtO,EAAE,CAAC,EAAI,WAAa,EAC5ChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAI8Z,EAAI,CAAC9Z,EAAIoD,GAAKY,EAAE,CAAC,EAAI,WAAa,EAC5CsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMkP,EAAItS,EAAI,CAACsS,EAAIwH,GAAK9V,EAAE,EAAE,EAAI,MAAQ,EACxCZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIkP,EAAI,CAAClP,EAAIpD,GAAKgE,EAAE,EAAE,EAAI,WAAa,EAC7C8V,GAAMA,GAAK,GAAKA,IAAM,IAAM1W,EAAI,EAChCpD,IAAM8Z,EAAI1W,EAAI,CAAC0W,EAAIxH,GAAKtO,EAAE,EAAE,EAAI,WAAa,EAC7ChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAI8Z,EAAI,CAAC9Z,EAAIoD,GAAKY,EAAE,EAAE,EAAI,SAAW,EAC3CsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMkP,EAAItS,EAAI,CAACsS,EAAIwH,GAAK9V,EAAE,EAAE,EAAI,WAAa,EAC7CZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIkP,EAAI,CAAClP,EAAIpD,GAAKgE,EAAE,EAAE,EAAI,WAAa,EAC7C8V,GAAMA,GAAK,GAAKA,IAAM,IAAM1W,EAAI,EAEhCpD,IAAM8Z,EAAIxH,EAAIlP,EAAI,CAACkP,GAAKtO,EAAE,CAAC,EAAI,UAAY,EAC3ChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAIoD,EAAI0W,EAAI,CAAC1W,GAAKY,EAAE,CAAC,EAAI,WAAa,EAC5CsO,GAAMA,GAAK,EAAIA,IAAM,IAAMtS,EAAI,EAC/BoD,IAAMkP,EAAIwH,EAAI9Z,EAAI,CAAC8Z,GAAK9V,EAAE,EAAE,EAAI,UAAY,EAC5CZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIpD,EAAIsS,EAAI,CAACtS,GAAKgE,EAAE,CAAC,EAAI,UAAY,EAC3C8V,GAAMA,GAAK,GAAKA,IAAM,IAAM1W,EAAI,EAChCpD,IAAM8Z,EAAIxH,EAAIlP,EAAI,CAACkP,GAAKtO,EAAE,CAAC,EAAI,UAAY,EAC3ChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAIoD,EAAI0W,EAAI,CAAC1W,GAAKY,EAAE,EAAE,EAAI,SAAW,EAC3CsO,GAAMA,GAAK,EAAIA,IAAM,IAAMtS,EAAI,EAC/BoD,IAAMkP,EAAIwH,EAAI9Z,EAAI,CAAC8Z,GAAK9V,EAAE,EAAE,EAAI,UAAY,EAC5CZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIpD,EAAIsS,EAAI,CAACtS,GAAKgE,EAAE,CAAC,EAAI,UAAY,EAC3C8V,GAAMA,GAAK,GAAKA,IAAM,IAAM1W,EAAI,EAChCpD,IAAM8Z,EAAIxH,EAAIlP,EAAI,CAACkP,GAAKtO,EAAE,CAAC,EAAI,UAAY,EAC3ChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAIoD,EAAI0W,EAAI,CAAC1W,GAAKY,EAAE,EAAE,EAAI,WAAa,EAC7CsO,GAAMA,GAAK,EAAIA,IAAM,IAAMtS,EAAI,EAC/BoD,IAAMkP,EAAIwH,EAAI9Z,EAAI,CAAC8Z,GAAK9V,EAAE,CAAC,EAAI,UAAY,EAC3CZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIpD,EAAIsS,EAAI,CAACtS,GAAKgE,EAAE,CAAC,EAAI,WAAa,EAC5C8V,GAAMA,GAAK,GAAKA,IAAM,IAAM1W,EAAI,EAChCpD,IAAM8Z,EAAIxH,EAAIlP,EAAI,CAACkP,GAAKtO,EAAE,EAAE,EAAI,WAAa,EAC7ChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAIoD,EAAI0W,EAAI,CAAC1W,GAAKY,EAAE,CAAC,EAAI,SAAW,EAC1CsO,GAAMA,GAAK,EAAIA,IAAM,IAAMtS,EAAI,EAC/BoD,IAAMkP,EAAIwH,EAAI9Z,EAAI,CAAC8Z,GAAK9V,EAAE,CAAC,EAAI,WAAa,EAC5CZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIpD,EAAIsS,EAAI,CAACtS,GAAKgE,EAAE,EAAE,EAAI,WAAa,EAC7C8V,GAAMA,GAAK,GAAKA,IAAM,IAAM1W,EAAI,EAEhCpD,IAAM8Z,EAAI1W,EAAIkP,GAAKtO,EAAE,CAAC,EAAI,OAAS,EACnChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAI8Z,EAAI1W,GAAKY,EAAE,CAAC,EAAI,WAAa,EACvCsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMkP,EAAItS,EAAI8Z,GAAK9V,EAAE,EAAE,EAAI,WAAa,EACxCZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIkP,EAAItS,GAAKgE,EAAE,EAAE,EAAI,SAAW,EACtC8V,GAAMA,GAAK,GAAKA,IAAM,GAAK1W,EAAI,EAC/BpD,IAAM8Z,EAAI1W,EAAIkP,GAAKtO,EAAE,CAAC,EAAI,WAAa,EACvChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAI8Z,EAAI1W,GAAKY,EAAE,CAAC,EAAI,WAAa,EACvCsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMkP,EAAItS,EAAI8Z,GAAK9V,EAAE,CAAC,EAAI,UAAY,EACtCZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIkP,EAAItS,GAAKgE,EAAE,EAAE,EAAI,WAAa,EACxC8V,GAAMA,GAAK,GAAKA,IAAM,GAAK1W,EAAI,EAC/BpD,IAAM8Z,EAAI1W,EAAIkP,GAAKtO,EAAE,EAAE,EAAI,UAAY,EACvChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAI8Z,EAAI1W,GAAKY,EAAE,CAAC,EAAI,UAAY,EACtCsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMkP,EAAItS,EAAI8Z,GAAK9V,EAAE,CAAC,EAAI,UAAY,EACtCZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIkP,EAAItS,GAAKgE,EAAE,CAAC,EAAI,SAAW,EACrC8V,GAAMA,GAAK,GAAKA,IAAM,GAAK1W,EAAI,EAC/BpD,IAAM8Z,EAAI1W,EAAIkP,GAAKtO,EAAE,CAAC,EAAI,UAAY,EACtChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMtS,EAAI8Z,EAAI1W,GAAKY,EAAE,EAAE,EAAI,UAAY,EACvCsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMkP,EAAItS,EAAI8Z,GAAK9V,EAAE,EAAE,EAAI,UAAY,EACvCZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAM1W,EAAIkP,EAAItS,GAAKgE,EAAE,CAAC,EAAI,UAAY,EACtC8V,GAAMA,GAAK,GAAKA,IAAM,GAAK1W,EAAI,EAE/BpD,IAAMoD,GAAK0W,EAAI,CAACxH,IAAMtO,EAAE,CAAC,EAAI,UAAY,EACzChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMwH,GAAK9Z,EAAI,CAACoD,IAAMY,EAAE,CAAC,EAAI,WAAa,EAC1CsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMpD,GAAKsS,EAAI,CAACwH,IAAM9V,EAAE,EAAE,EAAI,WAAa,EAC3CZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAMxH,GAAKlP,EAAI,CAACpD,IAAMgE,EAAE,CAAC,EAAI,SAAW,EACxC8V,GAAMA,GAAK,GAAIA,IAAM,IAAM1W,EAAI,EAC/BpD,IAAMoD,GAAK0W,EAAI,CAACxH,IAAMtO,EAAE,EAAE,EAAI,WAAa,EAC3ChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMwH,GAAK9Z,EAAI,CAACoD,IAAMY,EAAE,CAAC,EAAI,WAAa,EAC1CsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMpD,GAAKsS,EAAI,CAACwH,IAAM9V,EAAE,EAAE,EAAI,QAAU,EACxCZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAMxH,GAAKlP,EAAI,CAACpD,IAAMgE,EAAE,CAAC,EAAI,WAAa,EAC1C8V,GAAMA,GAAK,GAAIA,IAAM,IAAM1W,EAAI,EAC/BpD,IAAMoD,GAAK0W,EAAI,CAACxH,IAAMtO,EAAE,CAAC,EAAI,WAAa,EAC1ChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMwH,GAAK9Z,EAAI,CAACoD,IAAMY,EAAE,EAAE,EAAI,SAAW,EACzCsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMpD,GAAKsS,EAAI,CAACwH,IAAM9V,EAAE,CAAC,EAAI,WAAa,EAC1CZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAMxH,GAAKlP,EAAI,CAACpD,IAAMgE,EAAE,EAAE,EAAI,WAAa,EAC3C8V,GAAMA,GAAK,GAAIA,IAAM,IAAM1W,EAAI,EAC/BpD,IAAMoD,GAAK0W,EAAI,CAACxH,IAAMtO,EAAE,CAAC,EAAI,UAAY,EACzChE,GAAMA,GAAK,EAAIA,IAAM,IAAM8Z,EAAI,EAC/BxH,IAAMwH,GAAK9Z,EAAI,CAACoD,IAAMY,EAAE,EAAE,EAAI,WAAa,EAC3CsO,GAAMA,GAAK,GAAKA,IAAM,IAAMtS,EAAI,EAChCoD,IAAMpD,GAAKsS,EAAI,CAACwH,IAAM9V,EAAE,CAAC,EAAI,UAAY,EACzCZ,GAAMA,GAAK,GAAKA,IAAM,IAAMkP,EAAI,EAChCwH,IAAMxH,GAAKlP,EAAI,CAACpD,IAAMgE,EAAE,CAAC,EAAI,UAAY,EACzC8V,GAAMA,GAAK,GAAKA,IAAM,IAAM1W,EAAI,EAEhCsX,EAAE,CAAC,EAAI1a,EAAI0a,EAAE,CAAC,EAAI,EAClBA,EAAE,CAAC,EAAIZ,EAAIY,EAAE,CAAC,EAAI,EAClBA,EAAE,CAAC,EAAItX,EAAIsX,EAAE,CAAC,EAAI,EAClBA,EAAE,CAAC,EAAIpI,EAAIoI,EAAE,CAAC,EAAI,CACrB,CAED,SAAS2a,EAAO75B,EAAG,CACf,IAAI85B,EAAU,CAAE,EACZ56B,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrB46B,EAAQ56B,GAAK,CAAC,EAAIc,EAAE,WAAWd,CAAC,GAAKc,EAAE,WAAWd,EAAI,CAAC,GAAK,IAAMc,EAAE,WAAWd,EAAI,CAAC,GAAK,KAAOc,EAAE,WAAWd,EAAI,CAAC,GAAK,IAE3H,OAAO46B,CACV,CAED,SAASC,EAAav1B,EAAG,CACrB,IAAIs1B,EAAU,CAAE,EACZ56B,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrB46B,EAAQ56B,GAAK,CAAC,EAAIsF,EAAEtF,CAAC,GAAKsF,EAAEtF,EAAI,CAAC,GAAK,IAAMsF,EAAEtF,EAAI,CAAC,GAAK,KAAOsF,EAAEtF,EAAI,CAAC,GAAK,IAE/E,OAAO46B,CACV,CAED,SAASE,EAAKh6B,EAAG,CACb,IAAI6M,EAAI7M,EAAE,OACNi6B,EAAQ,CAAC,WAAY,WAAY,YAAa,SAAS,EACvD/6B,EACAg7B,EACAC,EACAC,EACArI,EACAvkB,EAEJ,IAAKtO,EAAI,GAAIA,GAAK2N,EAAG3N,GAAK,GACtB06B,EAASK,EAAOJ,EAAO75B,EAAE,UAAUd,EAAI,GAAIA,CAAC,CAAC,CAAC,EAKlD,IAHAc,EAAIA,EAAE,UAAUd,EAAI,EAAE,EACtBg7B,EAASl6B,EAAE,OACXm6B,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACjDj7B,EAAI,EAAGA,EAAIg7B,EAAQh7B,GAAK,EACzBi7B,EAAKj7B,GAAK,CAAC,GAAKc,EAAE,WAAWd,CAAC,IAAOA,EAAI,GAAM,GAGnD,GADAi7B,EAAKj7B,GAAK,CAAC,GAAK,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADA06B,EAASK,EAAOE,CAAI,EACfj7B,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBi7B,EAAKj7B,CAAC,EAAI,EAKlB,OAAAk7B,EAAMvtB,EAAI,EACVutB,EAAMA,EAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB,EAC7CrI,EAAK,SAASqI,EAAI,CAAC,EAAG,EAAE,EACxB5sB,EAAK,SAAS4sB,EAAI,CAAC,EAAG,EAAE,GAAK,EAE7BD,EAAK,EAAE,EAAIpI,EACXoI,EAAK,EAAE,EAAI3sB,EAEXosB,EAASK,EAAOE,CAAI,EACbF,CACV,CAED,SAASI,EAAW71B,EAAG,CACnB,IAAIqI,EAAIrI,EAAE,OACNy1B,EAAQ,CAAC,WAAY,WAAY,YAAa,SAAS,EACvD/6B,EACAg7B,EACAC,EACAC,EACArI,EACAvkB,EAEJ,IAAKtO,EAAI,GAAIA,GAAK2N,EAAG3N,GAAK,GACtB06B,EAASK,EAAOF,EAAav1B,EAAE,SAAStF,EAAI,GAAIA,CAAC,CAAC,CAAC,EAWvD,IAJAsF,EAAKtF,EAAI,GAAM2N,EAAIrI,EAAE,SAAStF,EAAI,EAAE,EAAI,IAAI,WAAW,CAAC,EAExDg7B,EAAS11B,EAAE,OACX21B,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACjDj7B,EAAI,EAAGA,EAAIg7B,EAAQh7B,GAAK,EACzBi7B,EAAKj7B,GAAK,CAAC,GAAKsF,EAAEtF,CAAC,IAAOA,EAAI,GAAM,GAIxC,GADAi7B,EAAKj7B,GAAK,CAAC,GAAK,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADA06B,EAASK,EAAOE,CAAI,EACfj7B,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBi7B,EAAKj7B,CAAC,EAAI,EAKlB,OAAAk7B,EAAMvtB,EAAI,EACVutB,EAAMA,EAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB,EAC7CrI,EAAK,SAASqI,EAAI,CAAC,EAAG,EAAE,EACxB5sB,EAAK,SAAS4sB,EAAI,CAAC,EAAG,EAAE,GAAK,EAE7BD,EAAK,EAAE,EAAIpI,EACXoI,EAAK,EAAE,EAAI3sB,EAEXosB,EAASK,EAAOE,CAAI,EAEbF,CACV,CAED,SAASK,EAAKztB,EAAG,CACb,IAAI7M,EAAI,GACJolB,EACJ,IAAKA,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACpBplB,GAAK25B,EAAS9sB,GAAMuY,EAAI,EAAI,EAAM,EAAI,EAAIuU,EAAS9sB,GAAMuY,EAAI,EAAM,EAAI,EAE3E,OAAOplB,CACV,CAED,SAASu6B,EAAIrb,EAAG,CACZ,IAAIhgB,EACJ,IAAKA,EAAI,EAAGA,EAAIggB,EAAE,OAAQhgB,GAAK,EAC3BggB,EAAEhgB,CAAC,EAAIo7B,EAAKpb,EAAEhgB,CAAC,CAAC,EAEpB,OAAOggB,EAAE,KAAK,EAAE,CACnB,CAGGqb,EAAIP,EAAK,OAAO,CAAC,EAgBjB,OAAO,YAAgB,KAAe,CAAC,YAAY,UAAU,OAC5D,UAAY,CACT,SAASQ,EAAMC,EAAKP,EAAQ,CAGxB,OAFAO,EAAOA,EAAM,GAAM,EAEfA,EAAM,EACC,KAAK,IAAIA,EAAMP,EAAQ,CAAC,EAG5B,KAAK,IAAIO,EAAKP,CAAM,CAC9B,CAED,YAAY,UAAU,MAAQ,SAAUQ,EAAMnP,EAAI,CAC9C,IAAI2O,EAAS,KAAK,WACdS,EAAQH,EAAME,EAAMR,CAAM,EAC1BU,EAAMV,EACNW,EACAC,EACAC,EACAC,EAMJ,OAJIzP,IAAOmO,IACPkB,EAAMJ,EAAMjP,EAAI2O,CAAM,GAGtBS,EAAQC,EACD,IAAI,YAAY,CAAC,GAG5BC,EAAMD,EAAMD,EACZG,EAAS,IAAI,YAAYD,CAAG,EAC5BE,EAAc,IAAI,WAAWD,CAAM,EAEnCE,EAAc,IAAI,WAAW,KAAML,EAAOE,CAAG,EAC7CE,EAAY,IAAIC,CAAW,EAEpBF,EACvB,CACA,IASI,SAASG,EAAOC,EAAK,CACjB,MAAI,kBAAkB,KAAKA,CAAG,IAC1BA,EAAM,SAAS,mBAAmBA,CAAG,CAAC,GAGnCA,CACV,CAED,SAASC,EAAoBD,EAAKE,EAAkB,CAChD,IAAIlB,EAASgB,EAAI,OACdG,EAAO,IAAI,YAAYnB,CAAM,EAC7BoB,EAAM,IAAI,WAAWD,CAAI,EACzBn8B,EAEH,IAAKA,EAAI,EAAGA,EAAIg7B,EAAQh7B,GAAK,EACzBo8B,EAAIp8B,CAAC,EAAIg8B,EAAI,WAAWh8B,CAAC,EAG7B,OAAOk8B,EAAmBE,EAAMD,CACnC,CAED,SAASE,EAAoBF,EAAM,CAC/B,OAAO,OAAO,aAAa,MAAM,KAAM,IAAI,WAAWA,CAAI,CAAC,CAC9D,CAED,SAASG,EAAwBC,EAAOC,EAAQN,EAAkB,CAC9D,IAAIO,EAAS,IAAI,WAAWF,EAAM,WAAaC,EAAO,UAAU,EAEhE,OAAAC,EAAO,IAAI,IAAI,WAAWF,CAAK,CAAC,EAChCE,EAAO,IAAI,IAAI,WAAWD,CAAM,EAAGD,EAAM,UAAU,EAE5CL,EAAmBO,EAASA,EAAO,MAC7C,CAED,SAASC,EAAkBrB,EAAK,CAC5B,IAAIsB,EAAQ,CAAE,EACV3B,EAASK,EAAI,OACbrb,EAEJ,IAAKA,EAAI,EAAGA,EAAIgb,EAAS,EAAGhb,GAAK,EAC7B2c,EAAM,KAAK,SAAStB,EAAI,OAAOrb,EAAG,CAAC,EAAG,EAAE,CAAC,EAG7C,OAAO,OAAO,aAAa,MAAM,OAAQ2c,CAAK,CACjD,CAWD,SAASC,GAAW,CAEhB,KAAK,MAAK,CACb,CAUD,OAAAA,EAAS,UAAU,OAAS,SAAUZ,EAAK,CAGvC,YAAK,aAAaD,EAAOC,CAAG,CAAC,EAEtB,IACf,EASIY,EAAS,UAAU,aAAe,SAAUC,EAAU,CAClD,KAAK,OAASA,EACd,KAAK,SAAWA,EAAS,OAEzB,IAAI7B,EAAS,KAAK,MAAM,OACpBh7B,EAEJ,IAAKA,EAAI,GAAIA,GAAKg7B,EAAQh7B,GAAK,GAC3B06B,EAAS,KAAK,MAAOC,EAAO,KAAK,MAAM,UAAU36B,EAAI,GAAIA,CAAC,CAAC,CAAC,EAGhE,YAAK,MAAQ,KAAK,MAAM,UAAUA,EAAI,EAAE,EAEjC,IACf,EAUI48B,EAAS,UAAU,IAAM,SAAUE,EAAK,CACpC,IAAIX,EAAO,KAAK,MACZnB,EAASmB,EAAK,OACdn8B,EACAi7B,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACtD8B,EAEJ,IAAK/8B,EAAI,EAAGA,EAAIg7B,EAAQh7B,GAAK,EACzBi7B,EAAKj7B,GAAK,CAAC,GAAKm8B,EAAK,WAAWn8B,CAAC,IAAOA,EAAI,GAAM,GAGtD,YAAK,QAAQi7B,EAAMD,CAAM,EACzB+B,EAAM1B,EAAI,KAAK,KAAK,EAEhByB,IACAC,EAAML,EAAkBK,CAAG,GAG/B,KAAK,MAAK,EAEHA,CACf,EAOIH,EAAS,UAAU,MAAQ,UAAY,CACnC,YAAK,MAAQ,GACb,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,WAAY,WAAY,YAAa,SAAS,EAErD,IACf,EAOIA,EAAS,UAAU,SAAW,UAAY,CACtC,MAAO,CACH,KAAM,KAAK,MACX,OAAQ,KAAK,QACb,KAAM,KAAK,MAAM,MAAO,CACpC,CACA,EASIA,EAAS,UAAU,SAAW,SAAU7B,EAAO,CAC3C,YAAK,MAAQA,EAAM,KACnB,KAAK,QAAUA,EAAM,OACrB,KAAK,MAAQA,EAAM,KAEZ,IACf,EAMI6B,EAAS,UAAU,QAAU,UAAY,CACrC,OAAO,KAAK,MACZ,OAAO,KAAK,MACZ,OAAO,KAAK,OACpB,EAQIA,EAAS,UAAU,QAAU,SAAU3B,EAAMD,EAAQ,CACjD,IAAIh7B,EAAIg7B,EACJE,EACArI,EACAvkB,EAGJ,GADA2sB,EAAKj7B,GAAK,CAAC,GAAK,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADA06B,EAAS,KAAK,MAAOO,CAAI,EACpBj7B,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBi7B,EAAKj7B,CAAC,EAAI,EAMlBk7B,EAAM,KAAK,QAAU,EACrBA,EAAMA,EAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB,EAC7CrI,EAAK,SAASqI,EAAI,CAAC,EAAG,EAAE,EACxB5sB,EAAK,SAAS4sB,EAAI,CAAC,EAAG,EAAE,GAAK,EAE7BD,EAAK,EAAE,EAAIpI,EACXoI,EAAK,EAAE,EAAI3sB,EACXosB,EAAS,KAAK,MAAOO,CAAI,CACjC,EAWI2B,EAAS,KAAO,SAAUZ,EAAKc,EAAK,CAGhC,OAAOF,EAAS,WAAWb,EAAOC,CAAG,EAAGc,CAAG,CACnD,EAUIF,EAAS,WAAa,SAAUI,EAASF,EAAK,CAC1C,IAAIG,EAAOnC,EAAKkC,CAAO,EACnBD,EAAM1B,EAAI4B,CAAI,EAElB,OAAOH,EAAMJ,EAAkBK,CAAG,EAAIA,CAC9C,EASIH,EAAS,YAAc,UAAY,CAE/B,KAAK,MAAK,CAClB,EASIA,EAAS,YAAY,UAAU,OAAS,SAAUR,EAAK,CACnD,IAAID,EAAOG,EAAwB,KAAK,MAAM,OAAQF,EAAK,EAAI,EAC3DpB,EAASmB,EAAK,OACdn8B,EAIJ,IAFA,KAAK,SAAWo8B,EAAI,WAEfp8B,EAAI,GAAIA,GAAKg7B,EAAQh7B,GAAK,GAC3B06B,EAAS,KAAK,MAAOG,EAAasB,EAAK,SAASn8B,EAAI,GAAIA,CAAC,CAAC,CAAC,EAG/D,YAAK,MAASA,EAAI,GAAMg7B,EAAS,IAAI,WAAWmB,EAAK,OAAO,MAAMn8B,EAAI,EAAE,CAAC,EAAI,IAAI,WAAW,CAAC,EAEtF,IACf,EAUI48B,EAAS,YAAY,UAAU,IAAM,SAAUE,EAAK,CAChD,IAAIX,EAAO,KAAK,MACZnB,EAASmB,EAAK,OACdlB,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACtDj7B,EACA+8B,EAEJ,IAAK/8B,EAAI,EAAGA,EAAIg7B,EAAQh7B,GAAK,EACzBi7B,EAAKj7B,GAAK,CAAC,GAAKm8B,EAAKn8B,CAAC,IAAOA,EAAI,GAAM,GAG3C,YAAK,QAAQi7B,EAAMD,CAAM,EACzB+B,EAAM1B,EAAI,KAAK,KAAK,EAEhByB,IACAC,EAAML,EAAkBK,CAAG,GAG/B,KAAK,MAAK,EAEHA,CACf,EAOIH,EAAS,YAAY,UAAU,MAAQ,UAAY,CAC/C,YAAK,MAAQ,IAAI,WAAW,CAAC,EAC7B,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,WAAY,WAAY,YAAa,SAAS,EAErD,IACf,EAOIA,EAAS,YAAY,UAAU,SAAW,UAAY,CAClD,IAAI7B,EAAQ6B,EAAS,UAAU,SAAS,KAAK,IAAI,EAGjD,OAAA7B,EAAM,KAAOsB,EAAoBtB,EAAM,IAAI,EAEpCA,CACf,EASI6B,EAAS,YAAY,UAAU,SAAW,SAAU7B,EAAO,CAEvD,OAAAA,EAAM,KAAOkB,EAAoBlB,EAAM,KAAM,EAAI,EAE1C6B,EAAS,UAAU,SAAS,KAAK,KAAM7B,CAAK,CAC3D,EAEI6B,EAAS,YAAY,UAAU,QAAUA,EAAS,UAAU,QAE5DA,EAAS,YAAY,UAAU,QAAUA,EAAS,UAAU,QAU5DA,EAAS,YAAY,KAAO,SAAUR,EAAKU,EAAK,CAC5C,IAAIG,EAAO9B,EAAW,IAAI,WAAWiB,CAAG,CAAC,EACrCW,EAAM1B,EAAI4B,CAAI,EAElB,OAAOH,EAAMJ,EAAkBK,CAAG,EAAIA,CAC9C,EAEWH,CACX,CAAC,0CChuBe,SAAAM,GACdC,EAAQ,gCACE,CACH,OAAA,MAAM,UAAU,IAAI,KACzB,SAAS,iBAAiBA,CAAK,EAC9BC,GAAYA,EAAQ,WAAA,CAEzB,CAEa,MAAAC,GAAeC,GACnB,IAAI,cAAA,EAAgB,kBAAkBA,CAAE,EAGpCC,GAAc,CACzBvB,EACAwB,EAA+B,cAExB,IAAI,UAAY,EAAA,gBAAgBxB,EAAKwB,CAAI,EAGrCC,GAAY,CACvBH,EACAI,EAII,CACF,KAAMC,GAAK,eAAe,EAC1B,OAAQC,GAAgB,IAC1B,IAEOC,GAAOR,GAAYC,CAAE,EAAGI,CAAO,EAGxC,eAAsBI,GACpBC,EAAoB,CAAC,GAAG,EACxBC,EACiB,CAOjB,IAAIC,EAAgB,CAAA,EACd,MAAAC,EAAQ,SAAS,cAAc,OAAO,EACtC,OAAAA,EAAA,aAAa,OAAQ,MAAM,EAC3BA,EAAA,aAAa,aAAc,QAAQ,EACzCA,EAAM,aAAa,SAAUH,EAAQ,KAAK,GAAG,CAAC,EAC1CC,GACIE,EAAA,aAAa,WAAY,MAAM,EAEjCA,EAAA,iBACJ,QACCv/B,GAAM,CAILu/B,EAAM,MAAQ,EAChB,EACA,EAAA,EAEK,IAAI,QAAgB,CAACC,EAASC,IAAW,CACxCF,EAAA,iBACJ,SACCv/B,GAAa,CACZs/B,EAAQ,MAAM,KAAMt/B,EAAE,OAA4B,OAAS,CAAA,CAAE,EACzDs/B,EAAM,SAAW,EACZG,EAAA,IAAI,MAAM,QAAQ,CAAC,EAS1BD,EAAQF,CAAK,CAEjB,EACA,EAAA,EAEK,OAAA,iBACL,QACA,IAAM,CACJ,WAAW,IAAM,CACXA,EAAM,SAAW,GACZG,EAAA,IAAI,MAAM,QAAQ,CAAC,GAE3B,GAAI,CACT,EACA,CAAE,KAAM,EAAK,CAAA,EAGfF,EAAM,MAAM,CAAA,CACb,EACE,KAAMD,IACLC,EAAM,OAAO,EACND,EACR,EACA,MAAOt/B,GAAM,CACZ,MAAAu/B,EAAM,OAAO,EACPv/B,CAAA,CACP,CACL,CAEO,SAAS0/B,GAEdC,EACAd,EAAwCe,GAAgC,KACxEC,EACY,CACZ,OAAO,IAAI,QAAW,CAACL,EAASC,IAAW,CACnC,MAAAK,EAAS,IAAI,WAYnB,OAXOA,EAAA,iBAAiB,WAAa9/B,GAAiC,CAEvD6/B,IAAA7/B,EAAE,OAAQA,EAAE,KAAK,CAAA,CAC/B,EACM8/B,EAAA,iBAAiB,OAAS9/B,GAAkC,CACzDw/B,EAAAx/B,EAAE,QAAQ,MAAW,CAAA,CAE9B,EACM8/B,EAAA,iBAAiB,QAAU9/B,GAAmC,CACnEy/B,EAAOz/B,CAAC,CAAA,CACT,EACO6+B,EAAM,CACZ,KAAKe,GAAgC,QACnCE,EAAO,cAAcH,CAAI,EACzB,MACF,KAAKC,GAAgC,aACnCE,EAAO,mBAAmBH,CAAI,EAC9B,MACF,KAAKC,GAAgC,YACnCE,EAAO,kBAAkBH,CAAI,EAC7B,MACF,KAAKC,GAAgC,KACrC,QACEE,EAAO,WAAWH,CAAI,CAC1B,CAAA,CACD,CACH,CAEA,eAAsBI,GAA6BJ,EAA2B,CAC5E,MAAMK,EAAc,MAAMN,GACxBC,EACAC,GAAgC,WAAA,EAElC,OAAOK,GAA2BD,CAAW,CAC/C,CAEA,SAASE,GACPV,EACAC,EACAU,EACAR,EACAS,EACAC,EACAtD,EACA,CACM,MAAAuD,EAAa,IAAI,WACZA,EAAA,iBAAiB,OAAStgC,GAAM,CACzC,GAAI,CAACA,EAAE,QAAU,CAACA,EAAE,OAAO,OACzB,OAAOy/B,EAAOz/B,CAAC,EAGb,GADEmgC,EAAA,OAAOngC,EAAE,OAAO,MAAqB,EACvC+8B,EAAM4C,EAAK,KACbO,GACEV,EACAC,EACAU,EACAR,EACAS,EACArD,EACA,KAAK,IAAIA,EAAMqD,EAAWT,EAAK,IAAI,CAAA,MAG9B,QAAAH,EAAQW,EAAM,IAAA,CAAK,CAC5B,CACD,EACUG,EAAA,iBAAiB,QAAUtgC,GAC7By/B,EAAOz/B,CAAC,CAChB,EACDsgC,EAAW,kBAAkBX,EAAK,MAAMU,EAAOtD,CAAG,CAAC,CACrD,CAGA,eAAsBwD,GAAeZ,EAAYS,EAAY,EAAI,KAAO,KAAM,CAC5E,OAAO,MAAM,IAAI,QAAgB,CAACZ,EAASC,IACzCS,GACEV,EACAC,EACA,IAAIxB,GAAS,YACb0B,EACAS,EACA,EACA,KAAK,IAAIA,EAAWT,EAAK,IAAI,CAC/B,CAAA,CAEJ,CAEO,MAAMa,EAAW,CACtB,MAEA,SAEA,UAEA,KAEA,SAEA,UAEA,OAEA,aAAe,EAEf,YAAc,GACd,MAAQ,EACR,IAAM,EACN,MACA,KAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACnC,QACA,QACA,WACA,WACA,OAEA,YAAYzB,EAWT,CACI,KAAA,MAAQ,IAAI0B,GAAe,CAC9B,QAAS1B,EAAQ,QACjB,aAAc,CACZ,SAAW2B,GAAa,CAClBA,EAAS,OAAO,KAAO,KAAK,WAC1BA,EAAS,QAAU,MACrB,KAAK,aAAa,KAAK,eAAgB,KAAK,MAAM,EAC9C,KAAK,KAAO,KAAK,KAAK,MACxB,KAAK,YAAc,GACnB,KAAK,cAAc,EACnB,KAAK,aAAa,GAEd,KAAK,aACP,KAAK,YAAY,EAO3B,CACF,CAAA,CACD,EACD,KAAK,SAAW3B,EAAQ,SACxB,KAAK,UAAYA,EAAQ,UACzB,KAAK,KAAOA,EAAQ,KACpB,KAAK,UAAYA,EAAQ,WAAa,EAAI,KAAO,KACjD,KAAK,OAAS,KAAK,KAAK,KAAK,KAAK,KAAO,KAAK,SAAS,EACvD,KAAK,QAAUA,EAAQ,QACvB,KAAK,QAAUA,EAAQ,QACvB,KAAK,WAAaA,EAAQ,WAC1B,KAAK,WAAaA,EAAQ,WAC1B,KAAK,OAASA,EAAQ,MACxB,CAEA,MAAa,OAAQ,CACd,KAAK,WACR,KAAK,SAAW,MAAMwB,GAAe,KAAK,KAAM,KAAK,SAAS,IAGjD,MAAM,KAAK,MAAM,KAAK,KAAK,SAAU,CAClD,SAAU,KAAK,KAAK,KACpB,SAAU,KAAK,QAAA,CAChB,GACU,KAAK,SACd,KAAK,YAAc,GACnB,KAAK,UAAU,GAEV,KAAK,cACR,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,MAAM,KAAK,cAGjB,CAEO,OAAQ,CACT,KAAK,cACP,KAAK,YAAc,GACnB,KAAK,cAAc,EAEvB,CAEA,MAAc,aAAc,CAC1B,KAAK,YAAc,GACd,KAAA,MAAQ,KAAK,aAAe,KAAK,UACjC,KAAA,IAAM,KAAK,IAAI,KAAK,MAAQ,KAAK,UAAW,KAAK,KAAK,IAAI,EAC/D,MAAMI,EAAO,KAAK,KAAK,MAAM,KAAK,MAAO,KAAK,GAAG,EAC3CC,EAAK,IAAI,SACZA,EAAA,OAAO,WAAYD,CAAI,EAC1BC,EAAG,OAAO,WAAY,KAAK,KAAK,IAAI,EACjCA,EAAA,OAAO,WAAY,KAAK,QAAS,EACpCA,EAAG,OAAO,aAAc,OAAO,KAAK,YAAY,CAAC,EACjDA,EAAG,OAAO,SAAU,OAAO,KAAK,MAAM,CAAC,EACvC,MAAM,KAAK,MAAM,aAAa,KAAK,UAAWA,CAAE,CAClD,CAEQ,gBAAiB,CACvB,KAAK,cAAc,EACd,KAAA,MAAQ,YAAY,IAAM,CACXC,GAAA,KAAK,KAAM,CAAC,EAC9B,KAAK,SAASC,GAAgB,KAAK,IAAI,CAAC,GACvC,GAAI,CACT,CAEQ,eAAgB,CAClB,KAAK,QACP,cAAc,KAAK,KAAK,EACxB,KAAK,MAAQ,OAEjB,CACF,CCpSO,SAASC,IAAuB,CACrC,IAAIC,EAAM,KACV,GAAI,OAAO,cAAe,CACxB,MAAMC,EAAW,CACf,oBACA,iBACA,iBACA,iBACA,iBACA,iBACA,eAAA,EAEF,QAAS5/B,EAAI,EAAG0I,EAAIk3B,EAAS,OAAQ5/B,EAAI0I,EAAG1I,IACtC,GAAA,CACF2/B,EAAM,IAAI,OAAO,cAAcC,EAAS5/B,CAAC,CAAC,EAC1C,WACU,CACV,QACF,CACF,MAEA2/B,EAAM,IAAI,eAEL,OAAAA,CACT,CAEgB,SAAAE,GACdC,EACApC,EAgBA,CACA,OAAO,IAAI,QAAQ,CAACS,EAASC,IAAW,CAChC,KAAA,CACJ,OAAA2B,EAAS,MACT,KAAAC,EAAO,CAAC,EACR,wBAAAC,EAA0B,GAC1B,SAAAC,EAAW,GACX,QAAAC,EAAU,CAAC,EACX,gBAAAC,EAAkB,GAClB,aAAAC,EAAe,OACf,QAAAC,EAAU,GAAA,EACR5C,GAAW,CAAA,EACTiC,EAAMD,KACZC,EAAI,QAAUW,EACdX,EAAI,aAAeU,EACfV,EAAA,mBAAqB,SAAUhhC,EAAQ,CAMrCghC,EAAI,aAAe,IACjBA,EAAI,SAAW,IACjBxB,EAAQwB,EAAI,QAAQ,EAEpBvB,EAAOuB,EAAI,UAAU,EAEzB,EAEFA,EAAI,UAAY,IAAM,CACpBvB,EAAO,GAAG0B,CAAG,qBAAqBQ,CAAO,KAAK,CAAA,EAG5CX,EAAA,iBAAiB,OAAShhC,GAAW++B,GAAS,OAAO/+B,EAAGghC,CAAG,EAAG,EAAK,EACnEA,EAAA,iBACF,YACChhC,GAAW++B,GAAS,YAAY/+B,EAAGghC,CAAG,EACvC,EAAA,EAEEA,EAAA,iBACF,UACChhC,GAAW++B,GAAS,UAAU/+B,EAAGghC,CAAG,EACrC,EAAA,EAGEA,EAAA,iBACF,WACChhC,GAAW,CACV,GAAIA,EAAE,iBAAkB,CACtB,MAAM4hC,EAAa,KAAK,MAAO5hC,EAAE,OAAS,IAAOA,EAAE,KAAK,EAC/C++B,GAAA,WAAW/+B,EAAGghC,EAAKY,CAAU,CACxC,CACF,EACA,EAAA,EAGEZ,EAAA,iBAAiB,QAAUhhC,GAAW++B,GAAS,QAAQ/+B,EAAGghC,CAAG,EAAG,EAAK,EAErEA,EAAA,iBAAiB,QAAUhhC,GAAW++B,GAAS,QAAQ/+B,EAAGghC,CAAG,EAAG,EAAK,EACnE,MAAAa,EAAkBT,EAAO,cAC/B,OAAO,OAAOI,EAAS,CACrB,OAAQ,KAAA,CAIT,EACD,IAAIM,EAAsB,GACtBC,EAAc,GACdC,EAAa,GACjB,SAASC,GAAa,CAEhBjB,EAAA,iBAAiB,oBAAqB,8BAA8B,EACpES,IACFT,EAAI,gBAAkB,IAExB,UAAWkB,KAAcV,EAErBW,GAAQD,CAAU,EAAE,eAAiB,gBACrCV,EAAQU,CAAU,EAAE,YAAY,GAAK,uBAEfJ,EAAA,GAClBd,EAAA,iBACF,eACA,iCAAmCO,CAAA,IAGjCY,GAAQD,CAAU,EAAE,YAAA,GAAiB,iBACnCV,EAAQU,CAAU,EAAE,cAAc,QAAQ,YAAY,GAAK,EAC/CH,EAAA,GAGdP,EAAQU,CAAU,EAAE,YAAc,EAAA,QAAQ,kBAAkB,GAAK,IAEpDF,EAAA,KAGjBhB,EAAI,iBAAiBkB,EAAYV,EAAQU,CAAU,CAAC,EAG1D,CAEA,OAAQL,EAAiB,CACvB,IAAK,MACH,IAAIO,EAAa,GACbf,aAAgB,SAClBe,EAAaC,GAAiBhB,CAAI,EAElCe,EAAaE,GAAejB,CAAI,EAElCL,EAAI,KAAK,MAAOuB,GAAUpB,EAAKiB,CAAU,EAAG,EAAI,EACrCH,IACXjB,EAAI,KAAK,IAAI,EACb,MACF,QACMA,EAAA,KAAKa,EAAiBV,EAAK,EAAI,EACxBc,IACPH,EACFd,EAAI,aAAaM,CAAuB,EAEpCU,EACFhB,EAAI,KAAK,KAAK,UAAUK,CAAI,CAAC,EACpBU,EACLf,EAAA,KACF,OAAO,QAAQK,CAAI,EAChB,IAAI,CAAC,CAAC12B,EAAG,CAAC,IAAM,GAAGA,CAAC,IAAI,CAAC,EAAE,EAC3B,KAAK;AAAA,CAAM,CAAA,EAGZq2B,EAAA,KACF,OAAO,QAAQK,CAAI,EAChB,IACC,CAAC,CAAC12B,EAAG,CAAC,IACJ,GAAG,mBAAmBA,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,EAAA,EAEpD,KAAK,GAAG,CAAA,EAIjB,KACJ,CAAA,CAID,CACH,CAEA,eAAsB63B,GAAkBC,EAA8B,CACpE,MAAM3E,EAAS,CACb,IAAK2E,EAAY,QAAU,GAC3B,KAAM,CAAC,EACP,YACEA,EAAY,OAAO,gBAAkB,QAAUA,EAAY,QACvDA,EAAY,QACZ,oCACN,wBAAyB,GACzB,SAAU,8BAAgC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAA,EAE5DC,EAAqB,CAAA,EACrBZ,EAAsBhE,EAAO,aAAe,sBAClD,QAASz8B,EAAI,EAAGA,EAAIohC,EAAY,SAAS,OAAQphC,IAAK,CAC9C,MAAAshC,EAAUF,EAAY,SAASphC,CAAC,EACtC,GAAI,CAACshC,EAAQ,aAAa,MAAM,EAC9B,SAEI,MAAAC,EAAcD,EAAQ,aAAa,MAAM,EAK/C,OAHEA,EAAQ,SAAS,gBAAkB,SAAWC,EAC1CA,EAAY,YACZ,EAAA,GACoB,CACxB,IAAK,OACH,MAAMC,EAAcF,EACpB,GAAIb,EAEO,QAAAva,EAAI,EAAGxd,EAAI84B,EAAY,OAAO,QAAU,EAAGtb,EAAIxd,EAAGwd,IAAK,CACxD,MAAAoY,EAAOkD,EAAY,QAAQtb,CAAC,EAClC,GAAIoY,EAAM,CACR,MAAMmD,EAAmB,MAAMpD,GAC7BC,EACAC,GAAgC,YAAA,EAEzB8C,EAAA,KACP,yCACEG,EAAY,KACZ,gBACAlD,EAAK,KACL;AAAA,gBACAA,EAAK,KACL;AAAA;AAAA,EACAmD,EACA;AAAA,CAAA,CAEN,CACF,CAIF,MACF,IAAK,QACL,IAAK,WAEH,GAAI,CADiBH,EACJ,QAGf,MAGJ,QACE,MAAMI,EAAgBJ,EAIlBb,EACOY,EAAA,KACP,yCACEK,EAAc,KACd;AAAA;AAAA,EACAA,EAAc,MACd;AAAA,CAAA,EAGJjF,EAAO,KAAKiF,EAAc,IAAI,EAAIA,EAAc,MAElD,KACJ,CACF,CACA,OAAAjF,EAAO,wBACL,KACAA,EAAO,SACP;AAAA,EACA4E,EAAS,KAAK,KAAO5E,EAAO,SAAW;AAAA,CAAM,EAC7C,KACAA,EAAO,SACP;AAAA,EACKA,CACT,CCzTA,SAASkF,GAAsBC,EAA6B,CAC1D,MAAMC,EAAQ,CAAA,EACd,QAAS7hC,EAAI,EAAG2I,EAAIm5B,GAAY,OAAQ9hC,EAAI2I,EAAG3I,IAAK,CAClD,MAAM+hC,EAAOjB,GAAQgB,GAAY9hC,CAAC,EAAI4hC,CAAS,EAC/CC,EAAM,KAAKE,CAAI,CACjB,CACO,OAAAF,CACT,CAmDgB,SAAAG,GACd1E,EACA2E,EACAC,EACA,CAEM,MAAAC,EAAQC,GAAS9E,CAAE,EAEzB,OADA6E,EAAM,MAAM,MAAQA,EAAM,MAAM,OAAS,GACpCF,EAQDE,EAAM,MAAM,MAAMF,CAAI,GACtBE,EAAM,MAAM,MAAME,GAAQJ,CAAI,CAAC,GAC/BE,EAAM,MAAM,MAAMrB,GAAQmB,CAAI,CAAC,GAC/B,GARKE,EAAM,MAAM,KAWvB,CAGgB,SAAAG,GACdhF,EACA2E,EACAM,EACA,CACYC,GAAAlF,EAAK6E,GAAiB,CAChCA,EAAM,MAAM,MAAQA,EAAM,MAAM,OAAS,GACrC,OAAOF,GAAQ,UAAYM,EACvBJ,EAAA,MAAM,MAAMF,CAAI,EAAIM,EACjBN,aAAgB,QACzB,OAAO,KAAKA,CAAI,EAAE,QAASQ,GAAgB,CACzCN,EAAM,MAAM,MAAMM,CAAG,EAAIR,EAAKQ,CAAG,CAAA,CAClC,CACH,CACD,EACiBC,IACpB,CAEgB,SAAAC,GACdrF,EACAsF,EAAkB,GACM,CACxB,MAAMC,EAAiC,CAAA,EACvC,GAAI,CAACD,EACH,GAAI,iBAAkB,CACd,MAAA9hC,EAAI,iBAAiBw8B,CAAE,EAC7B,QAASt9B,EAAI,EAAG2N,EAAI7M,EAAE,OAAQd,EAAI2N,EAAG3N,IAAK,CAClC,MAAAiiC,EAAOnhC,EAAEd,CAAC,EAChB6iC,EAAOZ,CAAI,EAAInhC,EAAE,iBAAiBmhC,CAAI,CACxC,CAAA,KACK,CAEC,MAAAnhC,EAAIw8B,EAAG,OAASA,EAAG,aACzB,UAAW2E,KAAQnhC,EACb,OAAO,UAAU,eAAe,KAAKA,EAAGmhC,CAAI,IACvCY,EAAAZ,CAAI,EAAInhC,EAAEmhC,CAAI,EAG3B,CAGE,OAAA3E,EAAG,MAAM,SACXA,EAAG,MAAM,QACN,MAAM,GAAG,EACT,OAAQh4B,GAAc,CAAC,CAACA,CAAC,EACzB,QAASA,GAAc,CACtB,KAAM,CAACgE,EAAGqO,CAAC,EAAIrS,EAAE,MAAM,GAAG,EAAE,IAAKxE,GAAMA,EAAE,KAAM,CAAA,EAC3CwI,GAAKqO,IACPkrB,EAAOv5B,CAAC,EAAIqO,EACd,CACD,EAEEkrB,CACT,CAEgB,SAAAC,GACdD,EACAZ,EACQ,CACF,MAAAc,EAAgBpB,GAAsBM,CAAI,EAC1Ce,EAAqBD,EAAc,OACzC,IAAIR,EAAQ,GACZ,QAAS,EAAI,EAAG,EAAIS,EAAoB,IAAK,CACrC,MAAAC,EAAeF,EAAc,CAAC,EAEpC,GADQR,EAAAM,EAAOI,CAAY,GAAK,GAC5BV,EACK,OAAAA,CAEX,CACO,OAAAA,CACT,CAEgB,SAAAW,GACd5F,EACA2E,EACAC,EACQ,CACF,MAAAa,EAAgBpB,GAAsBM,CAAI,EAC1Ce,EAAqBD,EAAc,OACzC,IAAIR,EAAQ,GACZ,QAASviC,EAAI,EAAGA,EAAIgjC,EAAoBhjC,IAAK,CACrC,MAAAijC,EAAeF,EAAc/iC,CAAC,EAKpC,GAHGuiC,EAAA,UAAWjF,GAAMA,EAAG,MAAM2F,CAAY,GACtC,iBAAkB3F,GAAMA,EAAG,aAAa2F,CAAY,GACrD,GACEV,EACK,OAAAA,CAEX,CACA,GAAI,iBAAkB,CACd,MAAAY,EAAQ,iBAAiB7F,EAAI4E,CAAM,EACzC,QAASliC,EAAI,EAAGA,EAAIgjC,EAAoBhjC,IAAK,CACrC,MAAAijC,EAAeF,EAAc/iC,CAAC,EAMpC,GADAuiC,EAAQY,EAAM,iBAAiBF,CAAY,EAAE,KAAK,EAC9CV,EACK,OAAAA,CAEX,CACF,CACO,OAAAA,CACT,CAEgB,SAAAa,GACd9F,EACA2E,EACAM,EACA,CACA,GAAKN,EAGD,GAAA,OAAOA,GAAQ,UAAYM,EACzB,GAAA,CACFjF,EAAG,MAAM,YACP2E,EACAM,EAAM,QAAQ,cAAe,EAAE,EAC/BA,EAAM,YAAY,EAAE,SAAS,YAAY,EAAI,YAAc,EAAA,OAEnD,CACPjF,EAAA,MAAM2E,CAAI,EAAIM,CACnB,MACSN,aAAgB,QACzB,OAAO,KAAKA,CAAI,EAAE,QAAS34B,GAAc,CACvC85B,GAAe9F,EAAIh0B,EAAG24B,EAAK34B,CAAC,CAAC,CAAA,CAC9B,CAEL,CAEgB,SAAA+5B,GACd/F,EACA2E,EACA,CACI,OAAOA,GAAQ,SACjB3E,EAAG,MAAM,eAAewD,GAAQmB,CAAI,CAAC,EAErC,OAAO,KAAKA,CAAI,EAAE,QAASQ,GAAgB,CACzCY,GAAgB/F,EAAImF,CAAG,CAAA,CACxB,CAEL,CAYgB,SAAAa,GACdC,EACAjG,EACA,CACA,GAAI,CAAC,SACH,MAAO,IAAM,CAAA,EAEX,IAAAkG,EACA,GAAA,OAAOlG,GAAO,SAAU,CAC1B,MAAMmG,EAAa,SAAS,cAAcnG,CAAE,GAAG,WAC3CmG,EACID,EAAAC,EAEAD,EAAA,SAAS,cAAclG,CAAE,CACjC,MAEAkG,EAAMlG,GAAM,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAErD,GAAIkG,EAAK,CACD,MAAAL,EAAQ,SAAS,cAAc,OAAO,EAC5C,OAAAA,EAAM,UAAYI,EAClBC,EAAI,YAAYL,CAAK,EACd,IAAM,EACPK,aAAe,aAAeA,aAAe,aAC/CA,EAAI,YAAYL,CAAK,CACvB,CACF,KACK,CAOL,MAAMO,EAAW,SAAS,YAAY,CAAC,EAAE,WAAWH,CAAmB,EAEvE,MAAO,IAAM,CACX,SAAS,YAAY,CAAC,EAAE,WAAWG,CAAQ,CAAA,CAE/C,CACF,CAEA,MAAMC,EAAQ,CACL,SACA,KACA,MAEP,YAAYC,EAAkB7B,EAAcQ,EAAe,CACzD,KAAK,SAAWqB,EAChB,KAAK,KAAO7B,EACZ,KAAK,MAAQQ,CACf,CAEO,UAAW,CACT,MAAA,GAAG,KAAK,QAAQ,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,IACvD,CACF,CAEA,MAAMsB,EAAS,CACN,aACA,OAAoB,CAAA,EAE3B,YAAYC,EAAsB,CAChC,KAAK,aAAeA,CACtB,CAEO,IAAIF,EAAkBrB,EAAe,CACrC,KAAA,OAAO,KAAK,IAAIoB,GAAQC,EAAU,KAAK,aAAcrB,CAAK,CAAC,CAClE,CACF,CAEA,eAAsBwB,IAAiB,CACrC,MAAMC,EAAwB,CAAA,EACxBC,EAAa,SAAS,iBAAiB,aAAa,EAC1D,QAASjkC,EAAI,EAAG0I,EAAIu7B,EAAW,OAAQjkC,EAAI0I,EAAG1I,IAAK,CAC3C,MAAAkkC,EAAOD,EAAWjkC,CAAC,EACzB,IAAImkC,EAAeD,EAAK,UAChB,OAAAA,EAAK,SAAS,YAAe,EAAA,CACnC,IAAK,QAQH,MACF,IAAK,OACaC,EAAA,MAAMtE,GAAMqE,EAAa,KAAM,CAC7C,OAAQ,MACR,aAAc,MAAA,CACf,EACD,KACJ,CACeC,EAAAA,EACZ,QAAQ,uCAAwC,EAAE,EAClD,QAAQ,+BAAgC,EAAE,EAC1C,QAAQ,4BAA6B,EAAE,EAC1CH,EAAY,KAAKG,CAAY,CAC/B,CACO,OAAAH,CACT,CAEA,eAAsBI,IAAW,CAC/B,MAAMC,EAA2C,CAAA,EAC3CL,EAAc,MAAMD,KAC1B,QAAS/jC,EAAI,EAAG2N,EAAIq2B,EAAY,OAAQhkC,EAAI2N,EAAG3N,IAAK,CAE5C,MAAAskC,EADQN,EAAYhkC,CAAC,EACP,MAAM,eAAe,EACzC,GAAKskC,EAGL,QAASpe,EAAI,EAAGxd,EAAI47B,EAAM,OAAQpe,EAAIxd,EAAGwd,IAAK,CAC5C,MAAMqe,EAAaD,EAAMpe,CAAC,EAAE,MAAM,OAAO,EACnC0d,EAAWW,EAAW,CAAC,EAAE,KAAK,EAE9BC,EADgBD,EAAW,CAAC,EACD,MAAM,GAAG,EAC1C,QAASj7B,EAAI,EAAGA,EAAIk7B,EAAW,OAAQl7B,IACrC,GAAIk7B,EAAWl7B,CAAC,EAAE,KAAA,GAAU,GAAI,CAC9B,MAAMm7B,EAAgBD,EAAWl7B,CAAC,EAAE,MAAM,GAAG,EACvCy4B,EAAO0C,EAAc,CAAC,EAAE,KAAA,EAAO,cAC/BlC,EAAQkC,EAAc,CAAC,EACxBJ,EAAUtC,CAAI,IACjBsC,EAAUtC,CAAI,EAAI,IAAI8B,GAAS9B,CAAI,GAEjCQ,GACF8B,EAAUtC,CAAI,EAAE,IAAI6B,EAAUrB,EAAM,MAAM,CAE9C,CAEJ,CACF,CACO,OAAA8B,CACT,CC9XgB,SAAAK,GACdpH,EACA2E,EACAM,EACA,CAEI,GAAAN,IAAS,QAAaM,IAAU,OAClC,OAAOoC,GAAmBrH,CAAE,EAG9B,GAAI,OAAO2E,GAAQ,UAAYM,IAAU,OAChC,OAAAqC,GAAkBtH,EAAI2E,CAAI,EAG/B,OAAOA,GAAQ,SAGLO,GAAAlF,EAAK6E,GAAiB,CAChC,UAAW74B,KAAK24B,EACV34B,GAAK,QACPg5B,GAAShF,EAAIh0B,EAAG24B,EAAK34B,CAAC,CAAC,EAEnB,OAAO,UAAU,eAAe,KAAK24B,EAAM34B,CAAC,IAC9C64B,EAAM,MAAM74B,CAAC,EAAI,GAAK24B,EAAK34B,CAAC,EAGlC,CACD,EACQ,OAAO24B,GAAQ,UAAY,OAAOM,GAAS,WAGhDN,GAAQ,QACDK,GAAAhF,EAAI2E,EAAMM,CAAK,EAEZC,GAAAlF,EAAK6E,GAAiB,CAC1BA,EAAA,MAAMF,CAAI,EAAI,GAAKM,CAAA,CAC1B,GAOaG,IACpB,CAEO,SAASiC,GAAmBrH,EAAgB,CACjD,MAAMuH,EAAuD,CAAA,EACpD,QAAA7kC,EAAI,EAAG8kC,EAAQxH,EAAG,WAAY3vB,EAAIm3B,EAAM,OAAQ9kC,EAAI2N,EAAG3N,IAAK,CAC7D,MAAA+kC,EAAOD,EAAM9kC,CAAC,EAChB+kC,EAAK,UAAYA,EAAK,YACpBA,EAAK,WAAa,QACpBF,EAAIE,EAAK,QAAQ,EAAIpC,GAAerF,EAAI,EAAI,EAExCuH,EAAAE,EAAK,QAAQ,EAAIA,EAAK,UAGhC,CACO,OAAAF,CACT,CAEgB,SAAAD,GAAkBtH,EAAgB2E,EAAc,CAC9D,OAAIA,IAAS,QACJU,GAAerF,EAAI,EAAI,EAEvBA,EAAG,aAAawD,GAAQmB,CAAI,CAAC,CAExC,CAEgB,SAAA+C,GACd1H,EACA2E,EACAM,EACA,CAEA,OAAOjF,EAAG,aAAawD,GAAQmB,CAAI,EAAG,GAAKM,CAAK,CAClD,CAEgB,SAAA0C,GAAoB3H,EAAgBwH,EAAe,CACjEA,EAAM,MAAM,SAAS,EAAE,QAASC,GAAS,CACvC,MAAMz/B,EAAIw7B,GAAQiE,EAAK,KAAM,CAAA,EACzBz/B,GAAK,IACPg4B,EAAG,gBAAgBh4B,CAAC,CACtB,CACD,CACH,CAGgB,SAAA4/B,GACdC,EACAL,EACA,CAIA,UAAWrC,KAAOqC,EAAO,CACjB,MAAAvC,EAAQuC,EAAMrC,CAAG,EACvB,OAAQA,EAAK,CACX,IAAK,OAECF,IAAU,SACZ4C,EAAI,UAAY5C,GAElB,MACF,IAAK,SAECA,IAAU,SACZ4C,EAAI,YAAc5C,GAEpB,MACF,IAAK,eACL,IAAK,cACC4C,EAAA,UAAY,OAAO5C,CAAK,EAC5B,MACF,IAAK,iBACL,IAAK,gBAGH4C,EAAI,QAAU5C,EACd,MACF,IAAK,kBACL,IAAK,iBACH,OAAQA,EAAO,CACb,IAAK,QACL,IAAK,QACL,IAAK,QACH4C,EAAI,SAAW5C,EACf,MACF,QACE4C,EAAI,SAAW,QACf,KACJ,CACA,MACF,IAAK,oBACL,IAAK,mBAECA,EAAA,WAAa,OAAO5C,CAAK,EAC7B,MACF,IAAK,iBACL,IAAK,gBACH,MACF,IAAK,oBACL,IAAK,mBACC4C,EAAA,eAAiB,OAAO5C,CAAK,EACjC,MACF,IAAK,mBACL,IAAK,kBAEC,OAAOA,GAAU,UACf4C,EAAA,YAAY5C,EAAM,MAAM,KAAK,EAAE,IAAK,GAAM,OAAO,CAAC,CAAC,CAAC,EAE1D,MACF,IAAK,SACH,MACF,IAAK,OACC,OAAOA,GAAU,WACnB4C,EAAI,KAAO5C,GAEb,MACF,IAAK,YACL,IAAK,WACC4C,EAAA,MAAQ,IAAI5C,CAAK,GACrB,MACF,IAAK,cACL,IAAK,aACC4C,EAAA,MAAQ,IAAI5C,CAAK,GACrB,MACF,IAAK,cACL,IAAK,aACH,MACF,IAAK,aACL,IAAK,YACH,MACF,IAAK,cACL,IAAK,aACH,OAAQA,EAAO,CACb,IAAK,SACH4C,EAAI,UAAY,SAChB,MACF,IAAK,MAEHA,EAAI,UAAY,MAChB,MACF,IAAK,QAEHA,EAAI,UAAY,QAChB,KACJ,CACA,MACF,IAAK,qBACL,IAAK,oBACH,OAAQ5C,EAAO,CACb,IAAK,SACL,IAAK,SACL,IAAK,MACL,IAAK,aACL,IAAK,UACL,IAAK,cACH4C,EAAI,aAAe5C,EACnB,MACF,QACE4C,EAAI,aAAe,aACnB,KACJ,CACA,KAEJ,CACF,CACF,CCxMA,IAAIC,GAAgB,SAASxtB,EAAGwH,EAAG,CACjC,OAAAgmB,GAAgB,OAAO,gBAClB,CAAE,UAAW,CAAA,aAAgB,OAAS,SAAUxtB,EAAGwH,EAAG,CAAExH,EAAE,UAAYwH,CAAE,GACzE,SAAUxH,EAAGwH,EAAG,CAAE,QAAS1H,KAAK0H,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAG1H,CAAC,IAAGE,EAAEF,CAAC,EAAI0H,EAAE1H,CAAC,IAC1F0tB,GAAcxtB,EAAGwH,CAAC,CAC3B,EAEO,SAASimB,GAAUztB,EAAGwH,EAAG,CAC9B,GAAI,OAAOA,GAAM,YAAcA,IAAM,KACjC,MAAM,IAAI,UAAU,uBAAyB,OAAOA,CAAC,EAAI,+BAA+B,EAC5FgmB,GAAcxtB,EAAGwH,CAAC,EAClB,SAASkmB,GAAK,CAAE,KAAK,YAAc1tB,CAAI,CACvCA,EAAE,UAAYwH,IAAM,KAAO,OAAO,OAAOA,CAAC,GAAKkmB,EAAG,UAAYlmB,EAAE,UAAW,IAAIkmB,EACjF,CAqFO,SAASC,GAAUC,EAASC,EAAYn5B,EAAGo5B,EAAW,CAC3D,SAASC,EAAMpD,EAAO,CAAE,OAAOA,aAAiBj2B,EAAIi2B,EAAQ,IAAIj2B,EAAE,SAAU6xB,EAAS,CAAEA,EAAQoE,CAAK,CAAE,CAAE,CAAI,CAC5G,OAAO,IAAKj2B,IAAMA,EAAI,UAAU,SAAU6xB,EAASC,EAAQ,CACvD,SAASwH,EAAUrD,EAAO,CAAE,GAAI,CAAEsD,EAAKH,EAAU,KAAKnD,CAAK,CAAC,CAAE,OAAU5jC,EAAG,CAAEy/B,EAAOz/B,CAAC,EAAM,CAC3F,SAASmnC,EAASvD,EAAO,CAAE,GAAI,CAAEsD,EAAKH,EAAU,MAASnD,CAAK,CAAC,CAAI,OAAQ5jC,EAAG,CAAEy/B,EAAOz/B,CAAC,EAAM,CAC9F,SAASknC,EAAKpJ,EAAQ,CAAEA,EAAO,KAAO0B,EAAQ1B,EAAO,KAAK,EAAIkJ,EAAMlJ,EAAO,KAAK,EAAE,KAAKmJ,EAAWE,CAAQ,CAAI,CAC9GD,GAAMH,EAAYA,EAAU,MAAMF,EAASC,GAAc,CAAE,CAAA,GAAG,KAAI,CAAE,CAC1E,CAAG,CACH,CAEO,SAASM,GAAYP,EAASQ,EAAM,CACzC,IAAInnC,EAAI,CAAE,MAAO,EAAG,KAAM,UAAW,CAAE,GAAID,EAAE,CAAC,EAAI,EAAG,MAAMA,EAAE,CAAC,EAAG,OAAOA,EAAE,CAAC,CAAE,EAAI,KAAM,CAAA,EAAI,IAAK,CAAE,CAAA,EAAIgK,EAAGI,EAAGpK,EAAGmY,EAAI,OAAO,QAAQ,OAAO,UAAa,WAAa,SAAW,QAAQ,SAAS,EAC/L,OAAOA,EAAE,KAAOkvB,EAAK,CAAC,EAAGlvB,EAAE,MAAWkvB,EAAK,CAAC,EAAGlvB,EAAE,OAAYkvB,EAAK,CAAC,EAAG,OAAO,QAAW,aAAelvB,EAAE,OAAO,QAAQ,EAAI,UAAW,CAAE,OAAO,IAAO,GAAGA,EAC1J,SAASkvB,EAAKt4B,EAAG,CAAE,OAAO,SAAUgK,EAAG,CAAE,OAAOkuB,EAAK,CAACl4B,EAAGgK,CAAC,CAAC,CAAI,CAAG,CAClE,SAASkuB,EAAKxkB,EAAI,CACd,GAAIzY,EAAG,MAAM,IAAI,UAAU,iCAAiC,EAC5D,KAAOmO,IAAMA,EAAI,EAAGsK,EAAG,CAAC,IAAMxiB,EAAI,IAAKA,GAAG,GAAI,CAC1C,GAAI+J,EAAI,EAAGI,IAAMpK,EAAIyiB,EAAG,CAAC,EAAI,EAAIrY,EAAE,OAAYqY,EAAG,CAAC,EAAIrY,EAAE,SAAcpK,EAAIoK,EAAE,SAAcpK,EAAE,KAAKoK,CAAC,EAAG,GAAKA,EAAE,OAAS,EAAEpK,EAAIA,EAAE,KAAKoK,EAAGqY,EAAG,CAAC,CAAC,GAAG,KAAM,OAAOziB,EAE3J,OADIoK,EAAI,EAAGpK,IAAGyiB,EAAK,CAACA,EAAG,CAAC,EAAI,EAAGziB,EAAE,KAAK,GAC9ByiB,EAAG,CAAC,EAAC,CACT,IAAK,GAAG,IAAK,GAAGziB,EAAIyiB,EAAI,MACxB,IAAK,GAAG,OAAAxiB,EAAE,QAAgB,CAAE,MAAOwiB,EAAG,CAAC,EAAG,KAAM,EAAK,EACrD,IAAK,GAAGxiB,EAAE,QAASmK,EAAIqY,EAAG,CAAC,EAAGA,EAAK,CAAC,CAAC,EAAG,SACxC,IAAK,GAAGA,EAAKxiB,EAAE,IAAI,MAAOA,EAAE,KAAK,IAAG,EAAI,SACxC,QACI,GAAMD,EAAIC,EAAE,KAAM,EAAAD,EAAIA,EAAE,OAAS,GAAKA,EAAEA,EAAE,OAAS,CAAC,KAAOyiB,EAAG,CAAC,IAAM,GAAKA,EAAG,CAAC,IAAM,GAAI,CAAExiB,EAAI,EAAG,QAAW,CAC5G,GAAIwiB,EAAG,CAAC,IAAM,IAAM,CAACziB,GAAMyiB,EAAG,CAAC,EAAIziB,EAAE,CAAC,GAAKyiB,EAAG,CAAC,EAAIziB,EAAE,CAAC,GAAK,CAAEC,EAAE,MAAQwiB,EAAG,CAAC,EAAG,KAAQ,CACtF,GAAIA,EAAG,CAAC,IAAM,GAAKxiB,EAAE,MAAQD,EAAE,CAAC,EAAG,CAAEC,EAAE,MAAQD,EAAE,CAAC,EAAGA,EAAIyiB,EAAI,KAAQ,CACrE,GAAIziB,GAAKC,EAAE,MAAQD,EAAE,CAAC,EAAG,CAAEC,EAAE,MAAQD,EAAE,CAAC,EAAGC,EAAE,IAAI,KAAKwiB,CAAE,EAAG,KAAQ,CAC/DziB,EAAE,CAAC,GAAGC,EAAE,IAAI,IAAG,EACnBA,EAAE,KAAK,IAAK,EAAE,QACrB,CACDwiB,EAAK2kB,EAAK,KAAKR,EAAS3mC,CAAC,CAC5B,OAAQF,EAAG,CAAE0iB,EAAK,CAAC,EAAG1iB,CAAC,EAAGqK,EAAI,CAAE,QAAW,CAAEJ,EAAIhK,EAAI,CAAI,CAC1D,GAAIyiB,EAAG,CAAC,EAAI,EAAG,MAAMA,EAAG,CAAC,EAAG,MAAO,CAAE,MAAOA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAI,OAAQ,KAAM,GAC7E,CACH,CAkBO,SAAS6kB,GAAS51B,EAAG,CAC1B,IAAIxP,EAAI,OAAO,QAAW,YAAc,OAAO,SAAUgI,EAAIhI,GAAKwP,EAAExP,CAAC,EAAGd,EAAI,EAC5E,GAAI8I,EAAG,OAAOA,EAAE,KAAKwH,CAAC,EACtB,GAAIA,GAAK,OAAOA,EAAE,QAAW,SAAU,MAAO,CAC1C,KAAM,UAAY,CACd,OAAIA,GAAKtQ,GAAKsQ,EAAE,SAAQA,EAAI,QACrB,CAAE,MAAOA,GAAKA,EAAEtQ,GAAG,EAAG,KAAM,CAACsQ,EACvC,CACP,EACE,MAAM,IAAI,UAAUxP,EAAI,0BAA4B,iCAAiC,CACvF,CAEO,SAASqlC,GAAO71B,EAAG3C,EAAG,CAC3B,IAAI7E,EAAI,OAAO,QAAW,YAAcwH,EAAE,OAAO,QAAQ,EACzD,GAAI,CAACxH,EAAG,OAAOwH,EACf,IAAItQ,EAAI8I,EAAE,KAAKwH,CAAC,EAAGnK,EAAGsL,EAAK,CAAE,EAAE9S,EAC/B,GAAI,CACA,MAAQgP,IAAM,QAAUA,KAAM,IAAM,EAAExH,EAAInG,EAAE,KAAM,GAAE,MAAMyR,EAAG,KAAKtL,EAAE,KAAK,CAC5E,OACMigC,EAAO,CAAEznC,EAAI,CAAE,MAAOynC,CAAO,CAAG,QAC/B,CACJ,GAAI,CACIjgC,GAAK,CAACA,EAAE,OAAS2C,EAAI9I,EAAE,SAAY8I,EAAE,KAAK9I,CAAC,CAClD,QACO,CAAE,GAAIrB,EAAG,MAAMA,EAAE,KAAQ,CACpC,CACD,OAAO8S,CACT,CAkBO,SAAS40B,GAAcha,EAAImP,EAAM8K,EAAM,CAC5C,GAAIA,GAAQ,UAAU,SAAW,EAAG,QAAStmC,EAAI,EAAG2I,EAAI6yB,EAAK,OAAQ/pB,EAAIzR,EAAI2I,EAAG3I,KACxEyR,GAAM,EAAEzR,KAAKw7B,MACR/pB,IAAIA,EAAK,MAAM,UAAU,MAAM,KAAK+pB,EAAM,EAAGx7B,CAAC,GACnDyR,EAAGzR,CAAC,EAAIw7B,EAAKx7B,CAAC,GAGtB,OAAOqsB,EAAG,OAAO5a,GAAM,MAAM,UAAU,MAAM,KAAK+pB,CAAI,CAAC,CACzD,CAEO,SAAS+K,GAAQ5uB,EAAG,CACzB,OAAO,gBAAgB4uB,IAAW,KAAK,EAAI5uB,EAAG,MAAQ,IAAI4uB,GAAQ5uB,CAAC,CACrE,CAEO,SAAS6uB,GAAiBhB,EAASC,EAAYC,EAAW,CAC/D,GAAI,CAAC,OAAO,cAAe,MAAM,IAAI,UAAU,sCAAsC,EACrF,IAAI3uB,EAAI2uB,EAAU,MAAMF,EAASC,GAAc,CAAA,CAAE,EAAGzlC,EAAG6d,EAAI,GAC3D,OAAO7d,EAAI,OAAO,QAAQ,OAAO,eAAkB,WAAa,cAAgB,QAAQ,SAAS,EAAGimC,EAAK,MAAM,EAAGA,EAAK,OAAO,EAAGA,EAAK,SAAUQ,CAAW,EAAGzmC,EAAE,OAAO,aAAa,EAAI,UAAY,CAAE,OAAO,IAAK,EAAIA,EACtN,SAASymC,EAAY,EAAG,CAAE,OAAO,SAAU9uB,EAAG,CAAE,OAAO,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGymB,CAAM,CAAI,CAAG,CAC/F,SAAS6H,EAAKt4B,EAAG/E,EAAG,CAAMmO,EAAEpJ,CAAC,IAAK3N,EAAE2N,CAAC,EAAI,SAAUgK,EAAG,CAAE,OAAO,IAAI,QAAQ,SAAUrS,EAAG8Z,EAAG,CAAEvB,EAAE,KAAK,CAAClQ,EAAGgK,EAAGrS,EAAG8Z,CAAC,CAAC,EAAI,GAAKsnB,EAAO/4B,EAAGgK,CAAC,EAAI,CAAI,EAAM/O,IAAG5I,EAAE2N,CAAC,EAAI/E,EAAE5I,EAAE2N,CAAC,CAAC,GAAM,CACxK,SAAS+4B,EAAO/4B,EAAGgK,EAAG,CAAE,GAAI,CAAEkuB,EAAK9uB,EAAEpJ,CAAC,EAAEgK,CAAC,CAAC,CAAE,OAAUhZ,EAAG,CAAEgoC,EAAO9oB,EAAE,CAAC,EAAE,CAAC,EAAGlf,CAAC,EAAM,CAClF,SAASknC,EAAK1/B,EAAG,CAAEA,EAAE,iBAAiBogC,GAAU,QAAQ,QAAQpgC,EAAE,MAAM,CAAC,EAAE,KAAKygC,EAASxI,CAAM,EAAIuI,EAAO9oB,EAAE,CAAC,EAAE,CAAC,EAAG1X,CAAC,CAAI,CACxH,SAASygC,EAAQrE,EAAO,CAAEmE,EAAO,OAAQnE,CAAK,CAAI,CAClD,SAASnE,EAAOmE,EAAO,CAAEmE,EAAO,QAASnE,CAAK,CAAI,CAClD,SAASoE,EAAO,EAAGhvB,EAAG,CAAM,EAAEA,CAAC,EAAGkG,EAAE,MAAK,EAAIA,EAAE,QAAQ6oB,EAAO7oB,EAAE,CAAC,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAI,CACpF,CAQO,SAASgpB,GAAcv2B,EAAG,CAC/B,GAAI,CAAC,OAAO,cAAe,MAAM,IAAI,UAAU,sCAAsC,EACrF,IAAIxH,EAAIwH,EAAE,OAAO,aAAa,EAAGtQ,EACjC,OAAO8I,EAAIA,EAAE,KAAKwH,CAAC,GAAKA,EAAI,OAAO41B,IAAa,WAAaA,GAAS51B,CAAC,EAAIA,EAAE,OAAO,QAAQ,EAAC,EAAItQ,EAAI,CAAE,EAAEimC,EAAK,MAAM,EAAGA,EAAK,OAAO,EAAGA,EAAK,QAAQ,EAAGjmC,EAAE,OAAO,aAAa,EAAI,UAAY,CAAE,OAAO,IAAK,EAAIA,GAC9M,SAASimC,EAAKt4B,EAAG,CAAE3N,EAAE2N,CAAC,EAAI2C,EAAE3C,CAAC,GAAK,SAAUgK,EAAG,CAAE,OAAO,IAAI,QAAQ,SAAUwmB,EAASC,EAAQ,CAAEzmB,EAAIrH,EAAE3C,CAAC,EAAEgK,CAAC,EAAGgvB,EAAOxI,EAASC,EAAQzmB,EAAE,KAAMA,EAAE,KAAK,CAAE,CAAE,CAAI,CAAG,CAChK,SAASgvB,EAAOxI,EAASC,EAAQxmB,EAAGD,EAAG,CAAE,QAAQ,QAAQA,CAAC,EAAE,KAAK,SAASA,EAAG,CAAEwmB,EAAQ,CAAE,MAAOxmB,EAAG,KAAMC,CAAC,CAAE,CAAE,EAAIwmB,CAAM,CAAI,CAC9H,CA2EuB,OAAO,iBAAoB,YAAa,gBCvUxD,SAAS0I,GAAWvE,EAAO,CAC9B,OAAO,OAAOA,GAAU,UAC5B,CCFO,SAASwE,GAAiBC,EAAY,CACzC,IAAIC,EAAS,SAAUC,EAAU,CAC7B,MAAM,KAAKA,CAAQ,EACnBA,EAAS,MAAQ,IAAI,MAAK,EAAG,KACrC,EACQC,EAAWH,EAAWC,CAAM,EAChC,OAAAE,EAAS,UAAY,OAAO,OAAO,MAAM,SAAS,EAClDA,EAAS,UAAU,YAAcA,EAC1BA,CACX,CCRO,IAAIC,GAAsBL,GAAiB,SAAUE,EAAQ,CAChE,OAAO,SAAiCI,EAAQ,CAC5CJ,EAAO,IAAI,EACX,KAAK,QAAUI,EACTA,EAAO,OAAS;AAAA,EAA8CA,EAAO,IAAI,SAAUC,EAAKtnC,EAAG,CAAE,OAAOA,EAAI,EAAI,KAAOsnC,EAAI,SAAU,EAAG,EAAE,KAAK;AAAA,GAAM,EACjJ,GACN,KAAK,KAAO,sBACZ,KAAK,OAASD,CACtB,CACA,CAAC,ECVM,SAASE,GAAUnL,EAAKoL,EAAM,CACjC,GAAIpL,EAAK,CACL,IAAIqL,EAAQrL,EAAI,QAAQoL,CAAI,EAC5B,GAAKC,GAASrL,EAAI,OAAOqL,EAAO,CAAC,CACpC,CACL,CCDA,IAAIC,GAAgB,UAAY,CAC5B,SAASA,EAAaC,EAAiB,CACnC,KAAK,gBAAkBA,EACvB,KAAK,OAAS,GACd,KAAK,WAAa,KAClB,KAAK,YAAc,IACtB,CACD,OAAAD,EAAa,UAAU,YAAc,UAAY,CAC7C,IAAIE,EAAKC,EAAIC,EAAKC,EACdV,EACJ,GAAI,CAAC,KAAK,OAAQ,CACd,KAAK,OAAS,GACd,IAAIW,EAAa,KAAK,WACtB,GAAIA,EAEA,GADA,KAAK,WAAa,KACd,MAAM,QAAQA,CAAU,EACxB,GAAI,CACA,QAASC,EAAe/B,GAAS8B,CAAU,EAAGE,EAAiBD,EAAa,KAAI,EAAI,CAACC,EAAe,KAAMA,EAAiBD,EAAa,KAAI,EAAI,CAC5I,IAAIE,EAAWD,EAAe,MAC9BC,EAAS,OAAO,IAAI,CACvB,CACJ,OACMC,EAAO,CAAER,EAAM,CAAE,MAAOQ,CAAO,CAAG,QACjC,CACJ,GAAI,CACIF,GAAkB,CAACA,EAAe,OAASL,EAAKI,EAAa,SAASJ,EAAG,KAAKI,CAAY,CACjG,QACO,CAAE,GAAIL,EAAK,MAAMA,EAAI,KAAQ,CACxC,MAGDI,EAAW,OAAO,IAAI,EAG9B,IAAIK,EAAmB,KAAK,gBAC5B,GAAIvB,GAAWuB,CAAgB,EAC3B,GAAI,CACAA,GACH,OACM1pC,EAAG,CACN0oC,EAAS1oC,aAAayoC,GAAsBzoC,EAAE,OAAS,CAACA,CAAC,CAC5D,CAEL,IAAI2pC,EAAc,KAAK,YACvB,GAAIA,EAAa,CACb,KAAK,YAAc,KACnB,GAAI,CACA,QAASC,EAAgBrC,GAASoC,CAAW,EAAGE,EAAkBD,EAAc,KAAI,EAAI,CAACC,EAAgB,KAAMA,EAAkBD,EAAc,KAAI,EAAI,CACnJ,IAAIE,EAAYD,EAAgB,MAChC,GAAI,CACAE,GAAcD,CAAS,CAC1B,OACMnB,EAAK,CACRD,EAASA,GAAgD,GACrDC,aAAeF,GACfC,EAAShB,GAAcA,GAAc,CAAA,EAAIF,GAAOkB,CAAM,CAAC,EAAGlB,GAAOmB,EAAI,MAAM,CAAC,EAG5ED,EAAO,KAAKC,CAAG,CAEtB,CACJ,CACJ,OACMqB,EAAO,CAAEb,EAAM,CAAE,MAAOa,CAAO,CAAG,QACjC,CACJ,GAAI,CACIH,GAAmB,CAACA,EAAgB,OAAST,EAAKQ,EAAc,SAASR,EAAG,KAAKQ,CAAa,CACrG,QACO,CAAE,GAAIT,EAAK,MAAMA,EAAI,KAAQ,CACxC,CACJ,CACD,GAAIT,EACA,MAAM,IAAID,GAAoBC,CAAM,CAE3C,CACT,EACIK,EAAa,UAAU,IAAM,SAAUkB,EAAU,CAC7C,IAAIf,EACJ,GAAIe,GAAYA,IAAa,KACzB,GAAI,KAAK,OACLF,GAAcE,CAAQ,MAErB,CACD,GAAIA,aAAoBlB,EAAc,CAClC,GAAIkB,EAAS,QAAUA,EAAS,WAAW,IAAI,EAC3C,OAEJA,EAAS,WAAW,IAAI,CAC3B,EACA,KAAK,aAAef,EAAK,KAAK,eAAiB,MAAQA,IAAO,OAASA,EAAK,CAAE,GAAE,KAAKe,CAAQ,CACjG,CAEb,EACIlB,EAAa,UAAU,WAAa,SAAUmB,EAAQ,CAClD,IAAIb,EAAa,KAAK,WACtB,OAAOA,IAAea,GAAW,MAAM,QAAQb,CAAU,GAAKA,EAAW,SAASa,CAAM,CAChG,EACInB,EAAa,UAAU,WAAa,SAAUmB,EAAQ,CAClD,IAAIb,EAAa,KAAK,WACtB,KAAK,WAAa,MAAM,QAAQA,CAAU,GAAKA,EAAW,KAAKa,CAAM,EAAGb,GAAcA,EAAa,CAACA,EAAYa,CAAM,EAAIA,CAClI,EACInB,EAAa,UAAU,cAAgB,SAAUmB,EAAQ,CACrD,IAAIb,EAAa,KAAK,WAClBA,IAAea,EACf,KAAK,WAAa,KAEb,MAAM,QAAQb,CAAU,GAC7BT,GAAUS,EAAYa,CAAM,CAExC,EACInB,EAAa,UAAU,OAAS,SAAUkB,EAAU,CAChD,IAAIN,EAAc,KAAK,YACvBA,GAAef,GAAUe,EAAaM,CAAQ,EAC1CA,aAAoBlB,GACpBkB,EAAS,cAAc,IAAI,CAEvC,EACIlB,EAAa,MAAS,UAAY,CAC9B,IAAIoB,EAAQ,IAAIpB,EAChB,OAAAoB,EAAM,OAAS,GACRA,CACf,IACWpB,CACX,EAAC,EAEUqB,GAAqBrB,GAAa,MACtC,SAASsB,GAAezG,EAAO,CAClC,OAAQA,aAAiBmF,IACpBnF,GAAS,WAAYA,GAASuE,GAAWvE,EAAM,MAAM,GAAKuE,GAAWvE,EAAM,GAAG,GAAKuE,GAAWvE,EAAM,WAAW,CACxH,CACA,SAASmG,GAAcD,EAAW,CAC1B3B,GAAW2B,CAAS,EACpBA,IAGAA,EAAU,YAAW,CAE7B,CC7IO,IAAIQ,GAAS,CAChB,iBAAkB,KAClB,sBAAuB,KACvB,QAAS,OACT,sCAAuC,GACvC,yBAA0B,EAC9B,ECLWC,GAAkB,CACzB,WAAY,SAAUC,EAAS7I,EAAS,CAEpC,QADI8I,EAAO,CAAA,EACF/vB,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpC+vB,EAAK/vB,EAAK,CAAC,EAAI,UAAUA,CAAE,EAE/B,IAAIgwB,EAAWH,GAAgB,SAC/B,OAAwDG,GAAS,WACtDA,EAAS,WAAW,MAAMA,EAAUhD,GAAc,CAAC8C,EAAS7I,CAAO,EAAG6F,GAAOiD,CAAI,CAAC,CAAC,EAEvF,WAAW,MAAM,OAAQ/C,GAAc,CAAC8C,EAAS7I,CAAO,EAAG6F,GAAOiD,CAAI,CAAC,CAAC,CAClF,EACD,aAAc,SAAUE,EAAQ,CAC5B,IAAID,EAAWH,GAAgB,SAC/B,OAA6DG,GAAS,cAAiB,cAAcC,CAAM,CAC9G,EACD,SAAU,MACd,EChBO,SAASC,GAAqBjC,EAAK,CACtC4B,GAAgB,WAAW,UAAY,CAM/B,MAAM5B,CAElB,CAAK,CACL,CCZO,SAASkC,IAAO,CAAA,CCEhB,SAASC,GAAaC,EAAI,CAgBzBA,GAER,CCXA,IAAIC,GAAc,SAAU1C,EAAQ,CAChC5B,GAAUsE,EAAY1C,CAAM,EAC5B,SAAS0C,EAAWC,EAAa,CAC7B,IAAIC,EAAQ5C,EAAO,KAAK,IAAI,GAAK,KACjC,OAAA4C,EAAM,UAAY,GACdD,GACAC,EAAM,YAAcD,EAChBZ,GAAeY,CAAW,GAC1BA,EAAY,IAAIC,CAAK,GAIzBA,EAAM,YAAcC,GAEjBD,CACV,CACD,OAAAF,EAAW,OAAS,SAAUI,EAAM3D,EAAO4D,EAAU,CACjD,OAAO,IAAIC,GAAeF,EAAM3D,EAAO4D,CAAQ,CACvD,EACIL,EAAW,UAAU,KAAO,SAAUpH,EAAO,CACrC,KAAK,WAIL,KAAK,MAAMA,CAAK,CAE5B,EACIoH,EAAW,UAAU,MAAQ,SAAUrC,EAAK,CACpC,KAAK,YAIL,KAAK,UAAY,GACjB,KAAK,OAAOA,CAAG,EAE3B,EACIqC,EAAW,UAAU,SAAW,UAAY,CACpC,KAAK,YAIL,KAAK,UAAY,GACjB,KAAK,UAAS,EAE1B,EACIA,EAAW,UAAU,YAAc,UAAY,CACtC,KAAK,SACN,KAAK,UAAY,GACjB1C,EAAO,UAAU,YAAY,KAAK,IAAI,EACtC,KAAK,YAAc,KAE/B,EACI0C,EAAW,UAAU,MAAQ,SAAUpH,EAAO,CAC1C,KAAK,YAAY,KAAKA,CAAK,CACnC,EACIoH,EAAW,UAAU,OAAS,SAAUrC,EAAK,CACzC,GAAI,CACA,KAAK,YAAY,MAAMA,CAAG,CAC7B,QACO,CACJ,KAAK,YAAW,CACnB,CACT,EACIqC,EAAW,UAAU,UAAY,UAAY,CACzC,GAAI,CACA,KAAK,YAAY,UACpB,QACO,CACJ,KAAK,YAAW,CACnB,CACT,EACWA,CACX,EAAEjC,EAAY,EAEVwC,GAAQ,SAAS,UAAU,KAC/B,SAASC,GAAKC,EAAI5E,EAAS,CACvB,OAAO0E,GAAM,KAAKE,EAAI5E,CAAO,CACjC,CACA,IAAI6E,GAAoB,UAAY,CAChC,SAASA,EAAiBC,EAAiB,CACvC,KAAK,gBAAkBA,CAC1B,CACD,OAAAD,EAAiB,UAAU,KAAO,SAAU9H,EAAO,CAC/C,IAAI+H,EAAkB,KAAK,gBAC3B,GAAIA,EAAgB,KAChB,GAAI,CACAA,EAAgB,KAAK/H,CAAK,CAC7B,OACM6D,EAAO,CACVmE,GAAqBnE,CAAK,CAC7B,CAEb,EACIiE,EAAiB,UAAU,MAAQ,SAAU/C,EAAK,CAC9C,IAAIgD,EAAkB,KAAK,gBAC3B,GAAIA,EAAgB,MAChB,GAAI,CACAA,EAAgB,MAAMhD,CAAG,CAC5B,OACMlB,EAAO,CACVmE,GAAqBnE,CAAK,CAC7B,MAGDmE,GAAqBjD,CAAG,CAEpC,EACI+C,EAAiB,UAAU,SAAW,UAAY,CAC9C,IAAIC,EAAkB,KAAK,gBAC3B,GAAIA,EAAgB,SAChB,GAAI,CACAA,EAAgB,SAAQ,CAC3B,OACMlE,EAAO,CACVmE,GAAqBnE,CAAK,CAC7B,CAEb,EACWiE,CACX,EAAC,EACGJ,GAAkB,SAAUhD,EAAQ,CACpC5B,GAAU4E,EAAgBhD,CAAM,EAChC,SAASgD,EAAeO,EAAgBpE,EAAO4D,EAAU,CACrD,IAAIH,EAAQ5C,EAAO,KAAK,IAAI,GAAK,KAC7BqD,EACJ,GAAIxD,GAAW0D,CAAc,GAAK,CAACA,EAC/BF,EAAkB,CACd,KAAOE,GAAwE,OAC/E,MAAOpE,GAA6C,OACpD,SAAU4D,GAAsD,MAChF,MAEa,CACD,IAAIS,EACAZ,GAASZ,GAAO,0BAChBwB,EAAY,OAAO,OAAOD,CAAc,EACxCC,EAAU,YAAc,UAAY,CAAE,OAAOZ,EAAM,YAAa,GAChES,EAAkB,CACd,KAAME,EAAe,MAAQL,GAAKK,EAAe,KAAMC,CAAS,EAChE,MAAOD,EAAe,OAASL,GAAKK,EAAe,MAAOC,CAAS,EACnE,SAAUD,EAAe,UAAYL,GAAKK,EAAe,SAAUC,CAAS,CAChG,GAGgBH,EAAkBE,CAEzB,CACD,OAAAX,EAAM,YAAc,IAAIQ,GAAiBC,CAAe,EACjDT,CACV,CACD,OAAOI,CACX,EAAEN,EAAU,EAEZ,SAASY,GAAqBnE,EAAO,CAK7BmD,GAAqBnD,CAAK,CAElC,CACA,SAASsE,GAAoBpD,EAAK,CAC9B,MAAMA,CACV,CAKO,IAAIwC,GAAiB,CACxB,OAAQ,GACR,KAAMN,GACN,MAAOkB,GACP,SAAUlB,EACd,ECtLWmB,GAAc,UAAY,CAAE,OAAQ,OAAO,QAAW,YAAc,OAAO,YAAe,gBAAoB,ECAlH,SAASC,GAAS5qB,EAAG,CACxB,OAAOA,CACX,CCMO,SAAS6qB,GAAcC,EAAK,CAC/B,OAAIA,EAAI,SAAW,EACRF,GAEPE,EAAI,SAAW,EACRA,EAAI,CAAC,EAET,SAAe5M,EAAO,CACzB,OAAO4M,EAAI,OAAO,SAAUC,EAAMX,EAAI,CAAE,OAAOA,EAAGW,CAAI,CAAI,EAAE7M,CAAK,CACzE,CACA,CCXA,IAAI8M,GAAc,UAAY,CAC1B,SAASA,EAAWC,EAAW,CACvBA,IACA,KAAK,WAAaA,EAEzB,CACD,OAAAD,EAAW,UAAU,KAAO,SAAUE,EAAU,CAC5C,IAAIP,EAAa,IAAIK,EACrB,OAAAL,EAAW,OAAS,KACpBA,EAAW,SAAWO,EACfP,CACf,EACIK,EAAW,UAAU,UAAY,SAAUR,EAAgBpE,EAAO4D,EAAU,CACxE,IAAIH,EAAQ,KACRsB,EAAaC,GAAaZ,CAAc,EAAIA,EAAiB,IAAIP,GAAeO,EAAgBpE,EAAO4D,CAAQ,EACnH,OAAAP,GAAa,UAAY,CACrB,IAAI5B,EAAKgC,EAAOqB,EAAWrD,EAAG,SAAUwD,EAASxD,EAAG,OACpDsD,EAAW,IAAID,EAEPA,EAAS,KAAKC,EAAYE,CAAM,EAClCA,EAEMxB,EAAM,WAAWsB,CAAU,EAE3BtB,EAAM,cAAcsB,CAAU,CAAC,CACvD,CAAS,EACMA,CACf,EACIH,EAAW,UAAU,cAAgB,SAAUM,EAAM,CACjD,GAAI,CACA,OAAO,KAAK,WAAWA,CAAI,CAC9B,OACMhE,EAAK,CACRgE,EAAK,MAAMhE,CAAG,CACjB,CACT,EACI0D,EAAW,UAAU,QAAU,SAAUjB,EAAMwB,EAAa,CACxD,IAAI1B,EAAQ,KACZ,OAAA0B,EAAcC,GAAeD,CAAW,EACjC,IAAIA,EAAY,SAAUpN,EAASC,EAAQ,CAC9C,IAAI+M,EAAa,IAAIlB,GAAe,CAChC,KAAM,SAAU1H,EAAO,CACnB,GAAI,CACAwH,EAAKxH,CAAK,CACb,OACM+E,EAAK,CACRlJ,EAAOkJ,CAAG,EACV6D,EAAW,YAAW,CACzB,CACJ,EACD,MAAO/M,EACP,SAAUD,CAC1B,CAAa,EACD0L,EAAM,UAAUsB,CAAU,CACtC,CAAS,CACT,EACIH,EAAW,UAAU,WAAa,SAAUG,EAAY,CACpD,IAAItD,EACJ,OAAQA,EAAK,KAAK,UAAY,MAAQA,IAAO,OAAS,OAASA,EAAG,UAAUsD,CAAU,CAC9F,EACIH,EAAW,UAAUS,EAAiB,EAAI,UAAY,CAClD,OAAO,IACf,EACIT,EAAW,UAAU,KAAO,UAAY,CAEpC,QADIU,EAAa,CAAA,EACRryB,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpCqyB,EAAWryB,CAAE,EAAI,UAAUA,CAAE,EAEjC,OAAOwxB,GAAca,CAAU,EAAE,IAAI,CAC7C,EACIV,EAAW,UAAU,UAAY,SAAUO,EAAa,CACpD,IAAI1B,EAAQ,KACZ,OAAA0B,EAAcC,GAAeD,CAAW,EACjC,IAAIA,EAAY,SAAUpN,EAASC,EAAQ,CAC9C,IAAImE,EACJsH,EAAM,UAAU,SAAU7pB,EAAG,CAAE,OAAQuiB,EAAQviB,CAAK,EAAE,SAAUsnB,EAAK,CAAE,OAAOlJ,EAAOkJ,CAAG,GAAM,UAAY,CAAE,OAAOnJ,EAAQoE,CAAK,CAAE,CAAE,CAChJ,CAAS,CACT,EACIyI,EAAW,OAAS,SAAUC,EAAW,CACrC,OAAO,IAAID,EAAWC,CAAS,CACvC,EACWD,CACX,EAAC,EAED,SAASQ,GAAeD,EAAa,CACjC,IAAI1D,EACJ,OAAQA,EAAK0D,GAA+DtC,GAAO,WAAa,MAAQpB,IAAO,OAASA,EAAK,OACjI,CACA,SAAS8D,GAAWpJ,EAAO,CACvB,OAAOA,GAASuE,GAAWvE,EAAM,IAAI,GAAKuE,GAAWvE,EAAM,KAAK,GAAKuE,GAAWvE,EAAM,QAAQ,CAClG,CACA,SAAS6I,GAAa7I,EAAO,CACzB,OAAQA,GAASA,aAAiBoH,IAAgBgC,GAAWpJ,CAAK,GAAKyG,GAAezG,CAAK,CAC/F,CCnGO,SAASqJ,GAAQP,EAAQ,CAC5B,OAAOvE,GAA2DuE,GAAO,IAAI,CACjF,CACO,SAASQ,GAAQC,EAAM,CAC1B,OAAO,SAAUT,EAAQ,CACrB,GAAIO,GAAQP,CAAM,EACd,OAAOA,EAAO,KAAK,SAAUU,EAAc,CACvC,GAAI,CACA,OAAOD,EAAKC,EAAc,IAAI,CACjC,OACMzE,EAAK,CACR,KAAK,MAAMA,CAAG,CACjB,CACjB,CAAa,EAEL,MAAM,IAAI,UAAU,wCAAwC,CACpE,CACA,CChBO,SAAS0E,GAAyBpC,EAAaqC,EAAQC,EAAYC,EAASC,EAAY,CAC3F,OAAO,IAAIC,GAAmBzC,EAAaqC,EAAQC,EAAYC,EAASC,CAAU,CACtF,CACA,IAAIC,GAAsB,SAAUpF,EAAQ,CACxC5B,GAAUgH,EAAoBpF,CAAM,EACpC,SAASoF,EAAmBzC,EAAaqC,EAAQC,EAAYC,EAASC,EAAYE,EAAmB,CACjG,IAAIzC,EAAQ5C,EAAO,KAAK,KAAM2C,CAAW,GAAK,KAC9C,OAAAC,EAAM,WAAauC,EACnBvC,EAAM,kBAAoByC,EAC1BzC,EAAM,MAAQoC,EACR,SAAU1J,EAAO,CACf,GAAI,CACA0J,EAAO1J,CAAK,CACf,OACM+E,EAAK,CACRsC,EAAY,MAAMtC,CAAG,CACxB,CACJ,EACCL,EAAO,UAAU,MACvB4C,EAAM,OAASsC,EACT,SAAU7E,EAAK,CACb,GAAI,CACA6E,EAAQ7E,CAAG,CACd,OACMA,EAAK,CACRsC,EAAY,MAAMtC,CAAG,CACxB,QACO,CACJ,KAAK,YAAW,CACnB,CACJ,EACCL,EAAO,UAAU,OACvB4C,EAAM,UAAYqC,EACZ,UAAY,CACV,GAAI,CACAA,GACH,OACM5E,EAAK,CACRsC,EAAY,MAAMtC,CAAG,CACxB,QACO,CACJ,KAAK,YAAW,CACnB,CACJ,EACCL,EAAO,UAAU,UAChB4C,CACV,CACD,OAAAwC,EAAmB,UAAU,YAAc,UAAY,CACnD,IAAIxE,EACJ,GAAI,CAAC,KAAK,mBAAqB,KAAK,kBAAiB,EAAI,CACrD,IAAI0E,EAAW,KAAK,OACpBtF,EAAO,UAAU,YAAY,KAAK,IAAI,EACtC,CAACsF,KAAc1E,EAAK,KAAK,cAAgB,MAAQA,IAAO,QAAkBA,EAAG,KAAK,IAAI,EACzF,CACT,EACWwE,CACX,EAAE1C,EAAU,ECzDD6C,GAA0BzF,GAAiB,SAAUE,EAAQ,CACpE,OAAO,UAAuC,CAC1CA,EAAO,IAAI,EACX,KAAK,KAAO,0BACZ,KAAK,QAAU,qBACvB,CACA,CAAC,ECDGwF,GAAW,SAAUxF,EAAQ,CAC7B5B,GAAUoH,EAASxF,CAAM,EACzB,SAASwF,GAAU,CACf,IAAI5C,EAAQ5C,EAAO,KAAK,IAAI,GAAK,KACjC,OAAA4C,EAAM,OAAS,GACfA,EAAM,iBAAmB,KACzBA,EAAM,UAAY,GAClBA,EAAM,UAAY,GAClBA,EAAM,SAAW,GACjBA,EAAM,YAAc,KACbA,CACV,CACD,OAAA4C,EAAQ,UAAU,KAAO,SAAUvB,EAAU,CACzC,IAAIwB,EAAU,IAAIC,GAAiB,KAAM,IAAI,EAC7C,OAAAD,EAAQ,SAAWxB,EACZwB,CACf,EACID,EAAQ,UAAU,eAAiB,UAAY,CAC3C,GAAI,KAAK,OACL,MAAM,IAAID,EAEtB,EACIC,EAAQ,UAAU,KAAO,SAAUlK,EAAO,CACtC,IAAIsH,EAAQ,KACZJ,GAAa,UAAY,CACrB,IAAI7B,EAAKC,EAET,GADAgC,EAAM,eAAc,EAChB,CAACA,EAAM,UAAW,CACbA,EAAM,mBACPA,EAAM,iBAAmB,MAAM,KAAKA,EAAM,SAAS,GAEvD,GAAI,CACA,QAAS9B,EAAK7B,GAAS2D,EAAM,gBAAgB,EAAG7S,EAAK+Q,EAAG,KAAM,EAAE,CAAC/Q,EAAG,KAAMA,EAAK+Q,EAAG,OAAQ,CACtF,IAAI6E,EAAW5V,EAAG,MAClB4V,EAAS,KAAKrK,CAAK,CACtB,CACJ,OACM6F,EAAO,CAAER,EAAM,CAAE,MAAOQ,CAAO,CAAG,QACjC,CACJ,GAAI,CACIpR,GAAM,CAACA,EAAG,OAAS6Q,EAAKE,EAAG,SAASF,EAAG,KAAKE,CAAE,CACrD,QACO,CAAE,GAAIH,EAAK,MAAMA,EAAI,KAAQ,CACxC,CACJ,CACb,CAAS,CACT,EACI6E,EAAQ,UAAU,MAAQ,SAAUnF,EAAK,CACrC,IAAIuC,EAAQ,KACZJ,GAAa,UAAY,CAErB,GADAI,EAAM,eAAc,EAChB,CAACA,EAAM,UAAW,CAClBA,EAAM,SAAWA,EAAM,UAAY,GACnCA,EAAM,YAAcvC,EAEpB,QADIuF,EAAYhD,EAAM,UACfgD,EAAU,QACbA,EAAU,MAAK,EAAG,MAAMvF,CAAG,CAElC,CACb,CAAS,CACT,EACImF,EAAQ,UAAU,SAAW,UAAY,CACrC,IAAI5C,EAAQ,KACZJ,GAAa,UAAY,CAErB,GADAI,EAAM,eAAc,EAChB,CAACA,EAAM,UAAW,CAClBA,EAAM,UAAY,GAElB,QADIgD,EAAYhD,EAAM,UACfgD,EAAU,QACbA,EAAU,QAAQ,UAEzB,CACb,CAAS,CACT,EACIJ,EAAQ,UAAU,YAAc,UAAY,CACxC,KAAK,UAAY,KAAK,OAAS,GAC/B,KAAK,UAAY,KAAK,iBAAmB,IACjD,EACI,OAAO,eAAeA,EAAQ,UAAW,WAAY,CACjD,IAAK,UAAY,CACb,IAAI5E,EACJ,QAASA,EAAK,KAAK,aAAe,MAAQA,IAAO,OAAS,OAASA,EAAG,QAAU,CACnF,EACD,WAAY,GACZ,aAAc,EACtB,CAAK,EACD4E,EAAQ,UAAU,cAAgB,SAAUtB,EAAY,CACpD,YAAK,eAAc,EACZlE,EAAO,UAAU,cAAc,KAAK,KAAMkE,CAAU,CACnE,EACIsB,EAAQ,UAAU,WAAa,SAAUtB,EAAY,CACjD,YAAK,eAAc,EACnB,KAAK,wBAAwBA,CAAU,EAChC,KAAK,gBAAgBA,CAAU,CAC9C,EACIsB,EAAQ,UAAU,gBAAkB,SAAUtB,EAAY,CACtD,IAAItB,EAAQ,KACRhC,EAAK,KAAMiF,EAAWjF,EAAG,SAAUkF,EAAYlF,EAAG,UAAWgF,EAAYhF,EAAG,UAChF,OAAIiF,GAAYC,EACLhE,IAEX,KAAK,iBAAmB,KACxB8D,EAAU,KAAK1B,CAAU,EAClB,IAAIzD,GAAa,UAAY,CAChCmC,EAAM,iBAAmB,KACzBtC,GAAUsF,EAAW1B,CAAU,CAC3C,CAAS,EACT,EACIsB,EAAQ,UAAU,wBAA0B,SAAUtB,EAAY,CAC9D,IAAItD,EAAK,KAAMiF,EAAWjF,EAAG,SAAUmF,EAAcnF,EAAG,YAAakF,EAAYlF,EAAG,UAChFiF,EACA3B,EAAW,MAAM6B,CAAW,EAEvBD,GACL5B,EAAW,SAAQ,CAE/B,EACIsB,EAAQ,UAAU,aAAe,UAAY,CACzC,IAAI9B,EAAa,IAAIK,GACrB,OAAAL,EAAW,OAAS,KACbA,CACf,EACI8B,EAAQ,OAAS,SAAU7C,EAAayB,EAAQ,CAC5C,OAAO,IAAIsB,GAAiB/C,EAAayB,CAAM,CACvD,EACWoB,CACX,EAAEzB,EAAU,EAER2B,GAAoB,SAAU1F,EAAQ,CACtC5B,GAAUsH,EAAkB1F,CAAM,EAClC,SAAS0F,EAAiB/C,EAAayB,EAAQ,CAC3C,IAAIxB,EAAQ5C,EAAO,KAAK,IAAI,GAAK,KACjC,OAAA4C,EAAM,YAAcD,EACpBC,EAAM,OAASwB,EACRxB,CACV,CACD,OAAA8C,EAAiB,UAAU,KAAO,SAAUpK,EAAO,CAC/C,IAAIsF,EAAIE,GACPA,GAAMF,EAAK,KAAK,eAAiB,MAAQA,IAAO,OAAS,OAASA,EAAG,QAAU,MAAQE,IAAO,QAAkBA,EAAG,KAAKF,EAAItF,CAAK,CAC1I,EACIoK,EAAiB,UAAU,MAAQ,SAAUrF,EAAK,CAC9C,IAAIO,EAAIE,GACPA,GAAMF,EAAK,KAAK,eAAiB,MAAQA,IAAO,OAAS,OAASA,EAAG,SAAW,MAAQE,IAAO,QAAkBA,EAAG,KAAKF,EAAIP,CAAG,CACzI,EACIqF,EAAiB,UAAU,SAAW,UAAY,CAC9C,IAAI9E,EAAIE,GACPA,GAAMF,EAAK,KAAK,eAAiB,MAAQA,IAAO,OAAS,OAASA,EAAG,YAAc,MAAQE,IAAO,QAAkBA,EAAG,KAAKF,CAAE,CACvI,EACI8E,EAAiB,UAAU,WAAa,SAAUxB,EAAY,CAC1D,IAAItD,EAAIE,EACR,OAAQA,GAAMF,EAAK,KAAK,UAAY,MAAQA,IAAO,OAAS,OAASA,EAAG,UAAUsD,CAAU,KAAO,MAAQpD,IAAO,OAASA,EAAKgB,EACxI,EACW4D,CACX,EAAEF,EAAO,EC7JLQ,GAAmB,SAAUhG,EAAQ,CACrC5B,GAAU4H,EAAiBhG,CAAM,EACjC,SAASgG,EAAgBC,EAAQ,CAC7B,IAAIrD,EAAQ5C,EAAO,KAAK,IAAI,GAAK,KACjC,OAAA4C,EAAM,OAASqD,EACRrD,CACV,CACD,cAAO,eAAeoD,EAAgB,UAAW,QAAS,CACtD,IAAK,UAAY,CACb,OAAO,KAAK,UACf,EACD,WAAY,GACZ,aAAc,EACtB,CAAK,EACDA,EAAgB,UAAU,WAAa,SAAU9B,EAAY,CACzD,IAAIgC,EAAelG,EAAO,UAAU,WAAW,KAAK,KAAMkE,CAAU,EACpE,OAACgC,EAAa,QAAUhC,EAAW,KAAK,KAAK,MAAM,EAC5CgC,CACf,EACIF,EAAgB,UAAU,SAAW,UAAY,CAC7C,IAAIpF,EAAK,KAAMiF,EAAWjF,EAAG,SAAUmF,EAAcnF,EAAG,YAAaqF,EAASrF,EAAG,OACjF,GAAIiF,EACA,MAAME,EAEV,YAAK,eAAc,EACZE,CACf,EACID,EAAgB,UAAU,KAAO,SAAU1K,EAAO,CAC9C0E,EAAO,UAAU,KAAK,KAAK,KAAO,KAAK,OAAS1E,EACxD,EACW0K,CACX,EAAER,EAAO,ECjCEW,GAAwB,CAC/B,IAAK,UAAY,CACb,OAAQA,GAAsB,UAAY,MAAM,IAAG,CACtD,EACD,SAAU,MACd,ECFIC,GAAiB,SAAUpG,EAAQ,CACnC5B,GAAUgI,EAAepG,CAAM,EAC/B,SAASoG,EAAcC,EAAaC,EAAaC,EAAoB,CAC7DF,IAAgB,SAAUA,EAAc,KACxCC,IAAgB,SAAUA,EAAc,KACxCC,IAAuB,SAAUA,EAAqBJ,IAC1D,IAAIvD,EAAQ5C,EAAO,KAAK,IAAI,GAAK,KACjC,OAAA4C,EAAM,YAAcyD,EACpBzD,EAAM,YAAc0D,EACpB1D,EAAM,mBAAqB2D,EAC3B3D,EAAM,QAAU,GAChBA,EAAM,oBAAsB,GAC5BA,EAAM,oBAAsB0D,IAAgB,IAC5C1D,EAAM,YAAc,KAAK,IAAI,EAAGyD,CAAW,EAC3CzD,EAAM,YAAc,KAAK,IAAI,EAAG0D,CAAW,EACpC1D,CACV,CACD,OAAAwD,EAAc,UAAU,KAAO,SAAU9K,EAAO,CAC5C,IAAIsF,EAAK,KAAMkF,EAAYlF,EAAG,UAAW4F,EAAU5F,EAAG,QAAS6F,EAAsB7F,EAAG,oBAAqB2F,EAAqB3F,EAAG,mBAAoB0F,EAAc1F,EAAG,YACrKkF,IACDU,EAAQ,KAAKlL,CAAK,EAClB,CAACmL,GAAuBD,EAAQ,KAAKD,EAAmB,IAAG,EAAKD,CAAW,GAE/E,KAAK,YAAW,EAChBtG,EAAO,UAAU,KAAK,KAAK,KAAM1E,CAAK,CAC9C,EACI8K,EAAc,UAAU,WAAa,SAAUlC,EAAY,CACvD,KAAK,eAAc,EACnB,KAAK,YAAW,EAIhB,QAHIgC,EAAe,KAAK,gBAAgBhC,CAAU,EAC9CtD,EAAK,KAAM6F,EAAsB7F,EAAG,oBAAqB4F,EAAU5F,EAAG,QACtE8F,EAAOF,EAAQ,QACVztC,EAAI,EAAGA,EAAI2tC,EAAK,QAAU,CAACxC,EAAW,OAAQnrC,GAAK0tC,EAAsB,EAAI,EAClFvC,EAAW,KAAKwC,EAAK3tC,CAAC,CAAC,EAE3B,YAAK,wBAAwBmrC,CAAU,EAChCgC,CACf,EACIE,EAAc,UAAU,YAAc,UAAY,CAC9C,IAAIxF,EAAK,KAAMyF,EAAczF,EAAG,YAAa2F,EAAqB3F,EAAG,mBAAoB4F,EAAU5F,EAAG,QAAS6F,EAAsB7F,EAAG,oBACpI+F,GAAsBF,EAAsB,EAAI,GAAKJ,EAEzD,GADAA,EAAc,KAAYM,EAAqBH,EAAQ,QAAUA,EAAQ,OAAO,EAAGA,EAAQ,OAASG,CAAkB,EAClH,CAACF,EAAqB,CAGtB,QAFIG,EAAML,EAAmB,MACzBM,EAAO,EACF9tC,EAAI,EAAGA,EAAIytC,EAAQ,QAAUA,EAAQztC,CAAC,GAAK6tC,EAAK7tC,GAAK,EAC1D8tC,EAAO9tC,EAEX8tC,GAAQL,EAAQ,OAAO,EAAGK,EAAO,CAAC,CACrC,CACT,EACWT,CACX,EAAEZ,EAAO,ECrDLsB,GAAU,SAAU9G,EAAQ,CAC5B5B,GAAU0I,EAAQ9G,CAAM,EACxB,SAAS8G,EAAOC,EAAWC,EAAM,CAC7B,OAAOhH,EAAO,KAAK,IAAI,GAAK,IAC/B,CACD,OAAA8G,EAAO,UAAU,SAAW,SAAUhT,EAAOmT,EAAO,CAEhD,OAAO,IACf,EACWH,CACX,EAAErG,EAAY,ECXHyG,GAAmB,CAC1B,YAAa,SAAUhF,EAAS7I,EAAS,CAErC,QADI8I,EAAO,CAAA,EACF/vB,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpC+vB,EAAK/vB,EAAK,CAAC,EAAI,UAAUA,CAAE,EAE/B,IAAIgwB,EAAW8E,GAAiB,SAChC,OAAwD9E,GAAS,YACtDA,EAAS,YAAY,MAAMA,EAAUhD,GAAc,CAAC8C,EAAS7I,CAAO,EAAG6F,GAAOiD,CAAI,CAAC,CAAC,EAExF,YAAY,MAAM,OAAQ/C,GAAc,CAAC8C,EAAS7I,CAAO,EAAG6F,GAAOiD,CAAI,CAAC,CAAC,CACnF,EACD,cAAe,SAAUE,EAAQ,CAC7B,IAAID,EAAW8E,GAAiB,SAChC,OAA6D9E,GAAS,eAAkB,eAAeC,CAAM,CAChH,EACD,SAAU,MACd,ECdI8E,GAAe,SAAUnH,EAAQ,CACjC5B,GAAU+I,EAAanH,CAAM,EAC7B,SAASmH,EAAYJ,EAAWC,EAAM,CAClC,IAAIpE,EAAQ5C,EAAO,KAAK,KAAM+G,EAAWC,CAAI,GAAK,KAClD,OAAApE,EAAM,UAAYmE,EAClBnE,EAAM,KAAOoE,EACbpE,EAAM,QAAU,GACTA,CACV,CACD,OAAAuE,EAAY,UAAU,SAAW,SAAUrT,EAAOmT,EAAO,CACrD,IAAIrG,EAEJ,GADIqG,IAAU,SAAUA,EAAQ,GAC5B,KAAK,OACL,OAAO,KAEX,KAAK,MAAQnT,EACb,IAAIrc,EAAK,KAAK,GACVsvB,EAAY,KAAK,UACrB,OAAItvB,GAAM,OACN,KAAK,GAAK,KAAK,eAAesvB,EAAWtvB,EAAIwvB,CAAK,GAEtD,KAAK,QAAU,GACf,KAAK,MAAQA,EACb,KAAK,IAAMrG,EAAK,KAAK,MAAQ,MAAQA,IAAO,OAASA,EAAK,KAAK,eAAemG,EAAW,KAAK,GAAIE,CAAK,EAChG,IACf,EACIE,EAAY,UAAU,eAAiB,SAAUJ,EAAWK,EAAKH,EAAO,CACpE,OAAIA,IAAU,SAAUA,EAAQ,GACzBC,GAAiB,YAAYH,EAAU,MAAM,KAAKA,EAAW,IAAI,EAAGE,CAAK,CACxF,EACIE,EAAY,UAAU,eAAiB,SAAUE,EAAY5vB,EAAIwvB,EAAO,CAEpE,GADIA,IAAU,SAAUA,EAAQ,GAC5BA,GAAS,MAAQ,KAAK,QAAUA,GAAS,KAAK,UAAY,GAC1D,OAAOxvB,EAEPA,GAAM,MACNyvB,GAAiB,cAAczvB,CAAE,CAG7C,EACI0vB,EAAY,UAAU,QAAU,SAAUrT,EAAOmT,EAAO,CACpD,GAAI,KAAK,OACL,OAAO,IAAI,MAAM,8BAA8B,EAEnD,KAAK,QAAU,GACf,IAAI9H,EAAQ,KAAK,SAASrL,EAAOmT,CAAK,EACtC,GAAI9H,EACA,OAAOA,EAEF,KAAK,UAAY,IAAS,KAAK,IAAM,OAC1C,KAAK,GAAK,KAAK,eAAe,KAAK,UAAW,KAAK,GAAI,IAAI,EAEvE,EACIgI,EAAY,UAAU,SAAW,SAAUrT,EAAOwT,EAAQ,CACtD,IAAIC,EAAU,GACVC,EACJ,GAAI,CACA,KAAK,KAAK1T,CAAK,CAClB,OACMp8B,EAAG,CACN6vC,EAAU,GACVC,EAAa9vC,GAAQ,IAAI,MAAM,oCAAoC,CACtE,CACD,GAAI6vC,EACA,YAAK,YAAW,EACTC,CAEnB,EACIL,EAAY,UAAU,YAAc,UAAY,CAC5C,GAAI,CAAC,KAAK,OAAQ,CACd,IAAIvG,EAAK,KAAMnpB,EAAKmpB,EAAG,GAAImG,EAAYnG,EAAG,UACtC6G,EAAUV,EAAU,QACxB,KAAK,KAAO,KAAK,MAAQ,KAAK,UAAY,KAC1C,KAAK,QAAU,GACfzG,GAAUmH,EAAS,IAAI,EACnBhwB,GAAM,OACN,KAAK,GAAK,KAAK,eAAesvB,EAAWtvB,EAAI,IAAI,GAErD,KAAK,MAAQ,KACbuoB,EAAO,UAAU,YAAY,KAAK,IAAI,CACzC,CACT,EACWmH,CACX,EAAEL,EAAM,ECtFJY,GAAa,UAAY,CACzB,SAASA,EAAUC,EAAqBf,EAAK,CACrCA,IAAQ,SAAUA,EAAMc,EAAU,KACtC,KAAK,oBAAsBC,EAC3B,KAAK,IAAMf,CACd,CACD,OAAAc,EAAU,UAAU,SAAW,SAAUV,EAAMC,EAAOnT,EAAO,CACzD,OAAImT,IAAU,SAAUA,EAAQ,GACzB,IAAI,KAAK,oBAAoB,KAAMD,CAAI,EAAE,SAASlT,EAAOmT,CAAK,CAC7E,EACIS,EAAU,IAAMvB,GAAsB,IAC/BuB,CACX,ICXIE,GAAkB,SAAU5H,EAAQ,CACpC5B,GAAUwJ,EAAgB5H,CAAM,EAChC,SAAS4H,EAAeC,EAAiBjB,EAAK,CACtCA,IAAQ,SAAUA,EAAMc,GAAU,KACtC,IAAI9E,EAAQ5C,EAAO,KAAK,KAAM6H,EAAiBjB,CAAG,GAAK,KACvD,OAAAhE,EAAM,QAAU,GAChBA,EAAM,QAAU,GACTA,CACV,CACD,OAAAgF,EAAe,UAAU,MAAQ,SAAUE,EAAQ,CAC/C,IAAIL,EAAU,KAAK,QACnB,GAAI,KAAK,QAAS,CACdA,EAAQ,KAAKK,CAAM,EACnB,MACH,CACD,IAAI3I,EACJ,KAAK,QAAU,GACf,EACI,IAAKA,EAAQ2I,EAAO,QAAQA,EAAO,MAAOA,EAAO,KAAK,EAClD,YAEEA,EAASL,EAAQ,SAE3B,GADA,KAAK,QAAU,GACXtI,EAAO,CACP,KAAQ2I,EAASL,EAAQ,SACrBK,EAAO,YAAW,EAEtB,MAAM3I,CACT,CACT,EACWyI,CACX,EAAEF,EAAS,EC/BAK,GAAiB,IAAIH,GAAeT,EAAW,EAC/Ca,GAAQD,GCFRE,GAAQ,IAAIlE,GAAW,SAAUG,EAAY,CAAE,OAAOA,EAAW,SAAU,EAAG,ECAlF,SAASgE,GAAY5M,EAAO,CAC/B,OAAOA,GAASuE,GAAWvE,EAAM,QAAQ,CAC7C,CCDA,SAASuL,GAAK1R,EAAK,CACf,OAAOA,EAAIA,EAAI,OAAS,CAAC,CAC7B,CACO,SAASgT,GAAkBhG,EAAM,CACpC,OAAOtC,GAAWgH,GAAK1E,CAAI,CAAC,EAAIA,EAAK,IAAK,EAAG,MACjD,CACO,SAASiG,GAAajG,EAAM,CAC/B,OAAO+F,GAAYrB,GAAK1E,CAAI,CAAC,EAAIA,EAAK,IAAK,EAAG,MAClD,CACO,SAASkG,GAAUlG,EAAMmG,EAAc,CAC1C,OAAO,OAAOzB,GAAK1E,CAAI,GAAM,SAAWA,EAAK,IAAK,EAAGmG,CACzD,CCbO,IAAIC,GAAe,SAAUxvB,EAAG,CAAE,OAAOA,GAAK,OAAOA,EAAE,QAAW,UAAY,OAAOA,GAAM,UAAW,ECCtG,SAASyvB,GAAUlN,EAAO,CAC7B,OAAOuE,GAAyDvE,GAAM,IAAI,CAC9E,CCDO,SAASmN,GAAoBxR,EAAO,CACvC,OAAO4I,GAAW5I,EAAMuN,EAAiB,CAAC,CAC9C,CCHO,SAASkE,GAAgB9K,EAAK,CACjC,OAAO,OAAO,eAAiBiC,GAAqDjC,IAAI,OAAO,aAAa,CAAC,CACjH,CCHO,SAAS+K,GAAiC1R,EAAO,CACpD,OAAO,IAAI,UAAU,iBAAmBA,IAAU,MAAQ,OAAOA,GAAU,SAAW,oBAAsB,IAAMA,EAAQ,KAAO,0HAA0H,CAC/P,CCFO,SAAS2R,IAAoB,CAChC,OAAI,OAAO,QAAW,YAAc,CAAC,OAAO,SACjC,aAEJ,OAAO,QAClB,CACO,IAAIC,GAAWD,GAAmB,ECJlC,SAASE,GAAW7R,EAAO,CAC9B,OAAO4I,GAAyD5I,IAAM8R,EAAe,CAAC,CAC1F,CCFO,SAASC,GAAmCC,EAAgB,CAC/D,OAAO1J,GAAiB,KAAM,UAAW,UAAgD,CACrF,IAAI/H,EAAQoJ,EAAItF,EAAO4N,EACvB,OAAOpK,GAAY,KAAM,SAAUgC,EAAI,CACnC,OAAQA,EAAG,MAAK,CACZ,IAAK,GACDtJ,EAASyR,EAAe,YACxBnI,EAAG,MAAQ,EACf,IAAK,GACDA,EAAG,KAAK,KAAK,CAAC,EAAC,CAAI,EAAG,EAAE,CAAC,EACzBA,EAAG,MAAQ,EACf,IAAK,GAED,MAAO,CAAC,EAAGxB,GAAQ9H,EAAO,KAAI,CAAE,CAAC,EACrC,IAAK,GAED,OADAoJ,EAAKE,EAAG,KAAI,EAAIxF,EAAQsF,EAAG,MAAOsI,EAAOtI,EAAG,KACvCsI,EACE,CAAC,EAAG5J,GAAQ,MAAM,CAAC,EADR,CAAC,EAAG,CAAC,EAE3B,IAAK,GAAG,MAAO,CAAC,EAAGwB,EAAG,KAAM,CAAA,EAC5B,IAAK,GAAG,MAAO,CAAC,EAAGxB,GAAQhE,CAAK,CAAC,EACjC,IAAK,GAAG,MAAO,CAAC,EAAGwF,EAAG,KAAM,CAAA,EAC5B,IAAK,GACD,OAAAA,EAAG,KAAI,EACA,CAAC,EAAG,CAAC,EAChB,IAAK,GAAG,MAAO,CAAC,EAAG,EAAE,EACrB,IAAK,GACD,OAAAtJ,EAAO,YAAW,EACX,CAAC,CAAC,EACb,IAAK,IAAI,MAAO,CAAC,CAAC,CACrB,CACb,CAAS,CACT,CAAK,CACL,CACO,SAAS2R,GAAqBvL,EAAK,CACtC,OAAOiC,GAAqDjC,GAAI,SAAS,CAC7E,CCzBO,SAASwL,GAAUnS,EAAO,CAC7B,GAAIA,aAAiB8M,GACjB,OAAO9M,EAEX,GAAIA,GAAS,KAAM,CACf,GAAIwR,GAAoBxR,CAAK,EACzB,OAAOoS,GAAsBpS,CAAK,EAEtC,GAAIsR,GAAYtR,CAAK,EACjB,OAAOqS,GAAcrS,CAAK,EAE9B,GAAIuR,GAAUvR,CAAK,EACf,OAAOsS,GAAYtS,CAAK,EAE5B,GAAIyR,GAAgBzR,CAAK,EACrB,OAAOuS,GAAkBvS,CAAK,EAElC,GAAI6R,GAAW7R,CAAK,EAChB,OAAOwS,GAAaxS,CAAK,EAE7B,GAAIkS,GAAqBlS,CAAK,EAC1B,OAAOyS,GAAuBzS,CAAK,CAE1C,CACD,MAAM0R,GAAiC1R,CAAK,CAChD,CACO,SAASoS,GAAsBzL,EAAK,CACvC,OAAO,IAAImG,GAAW,SAAUG,EAAY,CACxC,IAAIyF,EAAM/L,EAAI4G,EAAiB,IAC/B,GAAI3E,GAAW8J,EAAI,SAAS,EACxB,OAAOA,EAAI,UAAUzF,CAAU,EAEnC,MAAM,IAAI,UAAU,gEAAgE,CAC5F,CAAK,CACL,CACO,SAASoF,GAAcM,EAAO,CACjC,OAAO,IAAI7F,GAAW,SAAUG,EAAY,CACxC,QAASnrC,EAAI,EAAGA,EAAI6wC,EAAM,QAAU,CAAC1F,EAAW,OAAQnrC,IACpDmrC,EAAW,KAAK0F,EAAM7wC,CAAC,CAAC,EAE5BmrC,EAAW,SAAQ,CAC3B,CAAK,CACL,CACO,SAASqF,GAAYM,EAAS,CACjC,OAAO,IAAI9F,GAAW,SAAUG,EAAY,CACxC2F,EACK,KAAK,SAAUvO,EAAO,CAClB4I,EAAW,SACZA,EAAW,KAAK5I,CAAK,EACrB4I,EAAW,SAAQ,EAEnC,EAAW,SAAU7D,EAAK,CAAE,OAAO6D,EAAW,MAAM7D,CAAG,EAAI,EAC9C,KAAK,KAAMiC,EAAoB,CAC5C,CAAK,CACL,CACO,SAASmH,GAAaK,EAAU,CACnC,OAAO,IAAI/F,GAAW,SAAUG,EAAY,CACxC,IAAIvD,EAAKC,EACT,GAAI,CACA,QAASmJ,EAAa9K,GAAS6K,CAAQ,EAAGE,EAAeD,EAAW,KAAI,EAAI,CAACC,EAAa,KAAMA,EAAeD,EAAW,KAAI,EAAI,CAC9H,IAAIzO,EAAQ0O,EAAa,MAEzB,GADA9F,EAAW,KAAK5I,CAAK,EACjB4I,EAAW,OACX,MAEP,CACJ,OACM/C,EAAO,CAAER,EAAM,CAAE,MAAOQ,CAAO,CAAG,QACjC,CACJ,GAAI,CACI6I,GAAgB,CAACA,EAAa,OAASpJ,EAAKmJ,EAAW,SAASnJ,EAAG,KAAKmJ,CAAU,CACzF,QACO,CAAE,GAAIpJ,EAAK,MAAMA,EAAI,KAAQ,CACxC,CACDuD,EAAW,SAAQ,CAC3B,CAAK,CACL,CACO,SAASsF,GAAkBS,EAAe,CAC7C,OAAO,IAAIlG,GAAW,SAAUG,EAAY,CACxCgG,GAAQD,EAAe/F,CAAU,EAAE,MAAM,SAAU7D,EAAK,CAAE,OAAO6D,EAAW,MAAM7D,CAAG,CAAI,CAAA,CACjG,CAAK,CACL,CACO,SAASqJ,GAAuBT,EAAgB,CACnD,OAAOO,GAAkBR,GAAmCC,CAAc,CAAC,CAC/E,CACA,SAASiB,GAAQD,EAAe/F,EAAY,CACxC,IAAIiG,EAAiBC,EACjBvJ,EAAKD,EACT,OAAOtC,GAAU,KAAM,OAAQ,OAAQ,UAAY,CAC/C,IAAIhD,EAAOoG,EACX,OAAO5C,GAAY,KAAM,SAAUgC,EAAI,CACnC,OAAQA,EAAG,MAAK,CACZ,IAAK,GACDA,EAAG,KAAK,KAAK,CAAC,EAAG,EAAG,EAAG,EAAE,CAAC,EAC1BqJ,EAAkBvK,GAAcqK,CAAa,EAC7CnJ,EAAG,MAAQ,EACf,IAAK,GAAG,MAAO,CAAC,EAAGqJ,EAAgB,KAAM,CAAA,EACzC,IAAK,GACD,GAAMC,EAAoBtJ,EAAG,OAAQ,EAACsJ,EAAkB,KAAO,MAAO,CAAC,EAAG,CAAC,EAG3E,GAFA9O,EAAQ8O,EAAkB,MAC1BlG,EAAW,KAAK5I,CAAK,EACjB4I,EAAW,OACX,MAAO,CAAC,CAAC,EAEbpD,EAAG,MAAQ,EACf,IAAK,GAAG,MAAO,CAAC,EAAG,CAAC,EACpB,IAAK,GAAG,MAAO,CAAC,EAAG,EAAE,EACrB,IAAK,GACD,OAAAY,EAAQZ,EAAG,OACXD,EAAM,CAAE,MAAOa,GACR,CAAC,EAAG,EAAE,EACjB,IAAK,GAED,OADAZ,EAAG,KAAK,KAAK,CAAC,EAAC,CAAI,EAAG,EAAE,CAAC,EACnBsJ,GAAqB,CAACA,EAAkB,OAASxJ,EAAKuJ,EAAgB,QACrE,CAAC,EAAGvJ,EAAG,KAAKuJ,CAAe,CAAC,EAD0D,CAAC,EAAG,CAAC,EAEtG,IAAK,GACDrJ,EAAG,KAAI,EACPA,EAAG,MAAQ,EACf,IAAK,GAAG,MAAO,CAAC,EAAG,EAAE,EACrB,IAAK,GACD,GAAID,EAAK,MAAMA,EAAI,MACnB,MAAO,CAAC,CAAC,EACb,IAAK,IAAI,MAAO,CAAC,CAAC,EAClB,IAAK,IACD,OAAAqD,EAAW,SAAQ,EACZ,CAAC,CAAC,CAChB,CACb,CAAS,CACT,CAAK,CACL,CC7IO,SAASmG,GAAgBC,EAAoBvD,EAAWC,EAAMC,EAAOsD,EAAQ,CAC5EtD,IAAU,SAAUA,EAAQ,GAC5BsD,IAAW,SAAUA,EAAS,IAClC,IAAIC,EAAuBzD,EAAU,SAAS,UAAY,CACtDC,IACIuD,EACAD,EAAmB,IAAI,KAAK,SAAS,KAAMrD,CAAK,CAAC,EAGjD,KAAK,YAAW,CAEvB,EAAEA,CAAK,EAER,GADAqD,EAAmB,IAAIE,CAAoB,EACvC,CAACD,EACD,OAAOC,CAEf,CCbO,SAASC,GAAU1D,EAAWE,EAAO,CACxC,OAAIA,IAAU,SAAUA,EAAQ,GACzBrC,GAAQ,SAAUR,EAAQF,EAAY,CACzCE,EAAO,UAAUW,GAAyBb,EAAY,SAAU5I,EAAO,CAAE,OAAO+O,GAAgBnG,EAAY6C,EAAW,UAAY,CAAE,OAAO7C,EAAW,KAAK5I,CAAK,GAAM2L,CAAK,CAAE,EAAI,UAAY,CAAE,OAAOoD,GAAgBnG,EAAY6C,EAAW,UAAY,CAAE,OAAO7C,EAAW,SAAQ,CAAK,EAAE+C,CAAK,GAAM,SAAU5G,EAAK,CAAE,OAAOgK,GAAgBnG,EAAY6C,EAAW,UAAY,CAAE,OAAO7C,EAAW,MAAM7D,CAAG,CAAE,EAAI4G,CAAK,CAAI,CAAA,CAAC,CACxa,CAAK,CACL,CCPO,SAASyD,GAAY3D,EAAWE,EAAO,CAC1C,OAAIA,IAAU,SAAUA,EAAQ,GACzBrC,GAAQ,SAAUR,EAAQF,EAAY,CACzCA,EAAW,IAAI6C,EAAU,SAAS,UAAY,CAAE,OAAO3C,EAAO,UAAUF,CAAU,GAAM+C,CAAK,CAAC,CACtG,CAAK,CACL,CCHO,SAAS0D,GAAmB1T,EAAO8P,EAAW,CACjD,OAAOqC,GAAUnS,CAAK,EAAE,KAAKyT,GAAY3D,CAAS,EAAG0D,GAAU1D,CAAS,CAAC,CAC7E,CCFO,SAAS6D,GAAgB3T,EAAO8P,EAAW,CAC9C,OAAOqC,GAAUnS,CAAK,EAAE,KAAKyT,GAAY3D,CAAS,EAAG0D,GAAU1D,CAAS,CAAC,CAC7E,CCJO,SAAS8D,GAAc5T,EAAO8P,EAAW,CAC5C,OAAO,IAAIhD,GAAW,SAAUG,EAAY,CACxC,IAAInrC,EAAI,EACR,OAAOguC,EAAU,SAAS,UAAY,CAC9BhuC,IAAMk+B,EAAM,OACZiN,EAAW,SAAQ,GAGnBA,EAAW,KAAKjN,EAAMl+B,GAAG,CAAC,EACrBmrC,EAAW,QACZ,KAAK,SAAQ,EAGjC,CAAS,CACT,CAAK,CACL,CCZO,SAAS4G,GAAiB7T,EAAO8P,EAAW,CAC/C,OAAO,IAAIhD,GAAW,SAAUG,EAAY,CACxC,IAAI2E,EACJ,OAAAwB,GAAgBnG,EAAY6C,EAAW,UAAY,CAC/C8B,EAAW5R,EAAM8R,EAAe,IAChCsB,GAAgBnG,EAAY6C,EAAW,UAAY,CAC/C,IAAInG,EACAtF,EACA4N,EACJ,GAAI,CACCtI,EAAKiI,EAAS,OAAQvN,EAAQsF,EAAG,MAAOsI,EAAOtI,EAAG,IACtD,OACMP,EAAK,CACR6D,EAAW,MAAM7D,CAAG,EACpB,MACH,CACG6I,EACAhF,EAAW,SAAQ,EAGnBA,EAAW,KAAK5I,CAAK,CAEzC,EAAe,EAAG,EAAI,CACtB,CAAS,EACM,UAAY,CAAE,OAAOuE,GAA+DgJ,GAAS,MAAM,GAAKA,EAAS,OAAQ,EACxI,CAAK,CACL,CC5BO,SAASkC,GAAsB9T,EAAO8P,EAAW,CACpD,GAAI,CAAC9P,EACD,MAAM,IAAI,MAAM,yBAAyB,EAE7C,OAAO,IAAI8M,GAAW,SAAUG,EAAY,CACxCmG,GAAgBnG,EAAY6C,EAAW,UAAY,CAC/C,IAAI8B,EAAW5R,EAAM,OAAO,aAAa,EAAC,EAC1CoT,GAAgBnG,EAAY6C,EAAW,UAAY,CAC/C8B,EAAS,KAAI,EAAG,KAAK,SAAUrT,EAAQ,CAC/BA,EAAO,KACP0O,EAAW,SAAQ,EAGnBA,EAAW,KAAK1O,EAAO,KAAK,CAEpD,CAAiB,CACjB,EAAe,EAAG,EAAI,CACtB,CAAS,CACT,CAAK,CACL,CCnBO,SAASwV,GAA2B/T,EAAO8P,EAAW,CACzD,OAAOgE,GAAsB/B,GAAmC/R,CAAK,EAAG8P,CAAS,CACrF,CCSO,SAASkE,GAAUhU,EAAO8P,EAAW,CACxC,GAAI9P,GAAS,KAAM,CACf,GAAIwR,GAAoBxR,CAAK,EACzB,OAAO0T,GAAmB1T,EAAO8P,CAAS,EAE9C,GAAIwB,GAAYtR,CAAK,EACjB,OAAO4T,GAAc5T,EAAO8P,CAAS,EAEzC,GAAIyB,GAAUvR,CAAK,EACf,OAAO2T,GAAgB3T,EAAO8P,CAAS,EAE3C,GAAI2B,GAAgBzR,CAAK,EACrB,OAAO8T,GAAsB9T,EAAO8P,CAAS,EAEjD,GAAI+B,GAAW7R,CAAK,EAChB,OAAO6T,GAAiB7T,EAAO8P,CAAS,EAE5C,GAAIoC,GAAqBlS,CAAK,EAC1B,OAAO+T,GAA2B/T,EAAO8P,CAAS,CAEzD,CACD,MAAM4B,GAAiC1R,CAAK,CAChD,CCjCO,SAAS1C,GAAK0C,EAAO8P,EAAW,CACnC,OAAOA,EAAYkE,GAAUhU,EAAO8P,CAAS,EAAIqC,GAAUnS,CAAK,CACpE,CCFO,SAASiU,IAAK,CAEjB,QADI/I,EAAO,CAAA,EACF/vB,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpC+vB,EAAK/vB,CAAE,EAAI,UAAUA,CAAE,EAE3B,IAAI20B,EAAYqB,GAAajG,CAAI,EACjC,OAAO5N,GAAK4N,EAAM4E,CAAS,CAC/B,CCRO,IAAIoE,GAAarL,GAAiB,SAAUE,EAAQ,CACvD,OAAO,UAA0B,CAC7BA,EAAO,IAAI,EACX,KAAK,KAAO,aACZ,KAAK,QAAU,yBACvB,CACA,CAAC,ECLM,SAASoL,GAAehH,EAAQpC,EAAQ,CAC3C,IAAIqJ,EAAY,OAAOrJ,GAAW,SAClC,OAAO,IAAI,QAAQ,SAAU9K,EAASC,EAAQ,CAC1C,IAAI+M,EAAa,IAAIlB,GAAe,CAChC,KAAM,SAAU1H,EAAO,CACnBpE,EAAQoE,CAAK,EACb4I,EAAW,YAAW,CACzB,EACD,MAAO/M,EACP,SAAU,UAAY,CACdkU,EACAnU,EAAQ8K,EAAO,YAAY,EAG3B7K,EAAO,IAAIgU,EAAY,CAE9B,CACb,CAAS,EACD/G,EAAO,UAAUF,CAAU,CACnC,CAAK,CACL,CCtBO,SAASoH,GAAYhQ,EAAO,CAC/B,OAAOA,aAAiB,MAAQ,CAAC,MAAMA,CAAK,CAChD,CCAO,SAASiQ,GAAIC,EAASjN,EAAS,CAClC,OAAOqG,GAAQ,SAAUR,EAAQF,EAAY,CACzC,IAAI1D,EAAQ,EACZ4D,EAAO,UAAUW,GAAyBb,EAAY,SAAU5I,EAAO,CACnE4I,EAAW,KAAKsH,EAAQ,KAAKjN,EAASjD,EAAOkF,GAAO,CAAC,CACxD,CAAA,CAAC,CACV,CAAK,CACL,CCPA,IAAIiL,GAAU,MAAM,QACpB,SAASC,GAAYvI,EAAIhB,EAAM,CAC3B,OAAOsJ,GAAQtJ,CAAI,EAAIgB,EAAG,MAAM,OAAQ/D,GAAc,CAAA,EAAIF,GAAOiD,CAAI,CAAC,CAAC,EAAIgB,EAAGhB,CAAI,CACtF,CACO,SAASwJ,GAAiBxI,EAAI,CACjC,OAAOoI,GAAI,SAAUpJ,EAAM,CAAE,OAAOuJ,GAAYvI,EAAIhB,CAAI,CAAE,CAAE,CAChE,CCRA,IAAIsJ,GAAU,MAAM,QAChBG,GAAiB,OAAO,eAAgBC,GAAc,OAAO,UAAWC,GAAU,OAAO,KACtF,SAASC,GAAqB5J,EAAM,CACvC,GAAIA,EAAK,SAAW,EAAG,CACnB,IAAI6J,EAAU7J,EAAK,CAAC,EACpB,GAAIsJ,GAAQO,CAAO,EACf,MAAO,CAAE,KAAMA,EAAS,KAAM,IAAI,EAEtC,GAAIC,GAAOD,CAAO,EAAG,CACjB,IAAIE,EAAOJ,GAAQE,CAAO,EAC1B,MAAO,CACH,KAAME,EAAK,IAAI,SAAU1Q,EAAK,CAAE,OAAOwQ,EAAQxQ,CAAG,EAAI,EACtD,KAAM0Q,CACtB,CACS,CACJ,CACD,MAAO,CAAE,KAAM/J,EAAM,KAAM,IAAI,CACnC,CACA,SAAS8J,GAAOrO,EAAK,CACjB,OAAOA,GAAO,OAAOA,GAAQ,UAAYgO,GAAehO,CAAG,IAAMiO,EACrE,CCpBO,SAASM,GAAaD,EAAME,EAAQ,CACvC,OAAOF,EAAK,OAAO,SAAU1W,EAAQgG,EAAKziC,EAAG,CAAE,OAASy8B,EAAOgG,CAAG,EAAI4Q,EAAOrzC,CAAC,EAAIy8B,CAAQ,EAAI,CAAA,CAAE,CACpG,CCOO,SAAS6W,IAAgB,CAE5B,QADIlK,EAAO,CAAA,EACF/vB,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpC+vB,EAAK/vB,CAAE,EAAI,UAAUA,CAAE,EAE3B,IAAI20B,EAAYqB,GAAajG,CAAI,EAC7BmK,EAAiBnE,GAAkBhG,CAAI,EACvCvB,EAAKmL,GAAqB5J,CAAI,EAAGoK,EAAc3L,EAAG,KAAMsL,EAAOtL,EAAG,KACtE,GAAI2L,EAAY,SAAW,EACvB,OAAOhY,GAAK,GAAIwS,CAAS,EAE7B,IAAIvR,EAAS,IAAIuO,GAAWyI,GAAkBD,EAAaxF,EAAWmF,EAE9D,SAAUE,EAAQ,CAAE,OAAOD,GAAaD,EAAME,CAAM,CAAI,EAExDzI,EAAQ,CAAC,EACjB,OAAO2I,EAAiB9W,EAAO,KAAKmW,GAAiBW,CAAc,CAAC,EAAI9W,CAC5E,CACO,SAASgX,GAAkBD,EAAaxF,EAAW0F,EAAgB,CACtE,OAAIA,IAAmB,SAAUA,EAAiB9I,IAC3C,SAAUO,EAAY,CACzBwI,GAAc3F,EAAW,UAAY,CAyBjC,QAxBIhT,EAASwY,EAAY,OACrBH,EAAS,IAAI,MAAMrY,CAAM,EACzB4Y,EAAS5Y,EACT6Y,EAAuB7Y,EACvB8Y,EAAU,SAAU9zC,EAAG,CACvB2zC,GAAc3F,EAAW,UAAY,CACjC,IAAI3C,EAAS7P,GAAKgY,EAAYxzC,CAAC,EAAGguC,CAAS,EACvC+F,EAAgB,GACpB1I,EAAO,UAAUW,GAAyBb,EAAY,SAAU5I,EAAO,CACnE8Q,EAAOrzC,CAAC,EAAIuiC,EACPwR,IACDA,EAAgB,GAChBF,KAECA,GACD1I,EAAW,KAAKuI,EAAeL,EAAO,MAAK,CAAE,CAAC,CAE1E,EAAuB,UAAY,CACN,EAAEO,GACHzI,EAAW,SAAQ,CAE1B,CAAA,CAAC,CACL,EAAEA,CAAU,CAC7B,EACqBnrC,EAAI,EAAGA,EAAIg7B,EAAQh7B,IACxB8zC,EAAQ9zC,CAAC,CAEhB,EAAEmrC,CAAU,CACrB,CACA,CACA,SAASwI,GAAc3F,EAAWgG,EAAS7G,EAAc,CACjDa,EACAsD,GAAgBnE,EAAca,EAAWgG,CAAO,EAGhDA,GAER,CCjEO,SAASC,GAAe5I,EAAQF,EAAYsH,EAASyB,EAAYC,EAAcC,EAAQC,EAAmBC,EAAqB,CAClI,IAAIC,EAAS,CAAA,EACTX,EAAS,EACTnM,EAAQ,EACR+M,EAAa,GACbC,EAAgB,UAAY,CACxBD,GAAc,CAACD,EAAO,QAAU,CAACX,GACjCzI,EAAW,SAAQ,CAE/B,EACQuJ,EAAY,SAAUnS,EAAO,CAAE,OAAQqR,EAASM,EAAaS,EAAWpS,CAAK,EAAIgS,EAAO,KAAKhS,CAAK,CAAG,EACrGoS,EAAa,SAAUpS,EAAO,CAC9B6R,GAAUjJ,EAAW,KAAK5I,CAAK,EAC/BqR,IACA,IAAIgB,EAAgB,GACpBvE,GAAUoC,EAAQlQ,EAAOkF,GAAO,CAAC,EAAE,UAAUuE,GAAyBb,EAAY,SAAU0J,EAAY,CACxCV,IAAaU,CAAU,EAC/ET,EACAM,EAAUG,CAAU,EAGpB1J,EAAW,KAAK0J,CAAU,CAE1C,EAAW,UAAY,CACXD,EAAgB,EACnB,EAAE,OAAW,UAAY,CACtB,GAAIA,EACA,GAAI,CACAhB,IAUA,QATIE,EAAU,UAAY,CACtB,IAAIgB,EAAgBP,EAAO,QACvBF,EACA/C,GAAgBnG,EAAYkJ,EAAmB,UAAY,CAAE,OAAOM,EAAWG,CAAa,CAAE,CAAE,EAGhGH,EAAWG,CAAa,CAEpD,EAC2BP,EAAO,QAAUX,EAASM,GAC7BJ,IAEJW,GACH,OACMnN,EAAK,CACR6D,EAAW,MAAM7D,CAAG,CACvB,CAER,CAAA,CAAC,CACV,EACI,OAAA+D,EAAO,UAAUW,GAAyBb,EAAYuJ,EAAW,UAAY,CACzEF,EAAa,GACbC,GACH,CAAA,CAAC,EACK,UAAY,CAC2DH,KAClF,CACA,CCtDO,SAASS,GAAStC,EAASc,EAAgBW,EAAY,CAE1D,OADIA,IAAe,SAAUA,EAAa,KACtCpN,GAAWyM,CAAc,EAClBwB,GAAS,SAAUzvC,EAAGtF,EAAG,CAAE,OAAOwyC,GAAI,SAAUpzB,EAAG5c,EAAI,CAAE,OAAO+wC,EAAejuC,EAAG8Z,EAAGpf,EAAGwC,CAAE,EAAI,EAAE6tC,GAAUoC,EAAQntC,EAAGtF,CAAC,CAAC,CAAC,CAAI,EAAEk0C,CAAU,GAE1I,OAAOX,GAAmB,WAC/BW,EAAaX,GAEV1H,GAAQ,SAAUR,EAAQF,EAAY,CAAE,OAAO8I,GAAe5I,EAAQF,EAAYsH,EAASyB,CAAU,CAAI,CAAA,EACpH,CCZO,SAASc,GAASd,EAAY,CACjC,OAAIA,IAAe,SAAUA,EAAa,KACnCa,GAASnK,GAAUsJ,CAAU,CACxC,CCJO,SAASe,IAAY,CACxB,OAAOD,GAAS,CAAC,CACrB,CCAO,SAASE,IAAS,CAErB,QADI9L,EAAO,CAAA,EACF/vB,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpC+vB,EAAK/vB,CAAE,EAAI,UAAUA,CAAE,EAE3B,OAAO47B,GAAW,EAACzZ,GAAK4N,EAAMiG,GAAajG,CAAI,CAAC,CAAC,CACrD,CCFA,IAAI+L,GAA0B,CAAC,cAAe,gBAAgB,EAC1DC,GAAqB,CAAC,mBAAoB,qBAAqB,EAC/DC,GAAgB,CAAC,KAAM,KAAK,EACzB,SAASC,GAAU1Z,EAAQ2Z,EAAW7X,EAAS6V,EAAgB,CAKlE,GAJIzM,GAAWpJ,CAAO,IAClB6V,EAAiB7V,EACjBA,EAAU,QAEV6V,EACA,OAAO+B,GAAU1Z,EAAQ2Z,EAAW7X,CAAO,EAAE,KAAKkV,GAAiBW,CAAc,CAAC,EAEtF,IAAI1L,EAAK1B,GAAOqP,GAAc5Z,CAAM,EAC9BwZ,GAAmB,IAAI,SAAUK,EAAY,CAAE,OAAO,SAAUtM,EAAS,CAAE,OAAOvN,EAAO6Z,CAAU,EAAEF,EAAWpM,EAASzL,CAAO,CAAI,EAAG,EAErIgY,GAAwB9Z,CAAM,EACxBuZ,GAAwB,IAAIQ,GAAwB/Z,EAAQ2Z,CAAS,CAAC,EACtEK,GAA0Bha,CAAM,EAC5ByZ,GAAc,IAAIM,GAAwB/Z,EAAQ2Z,CAAS,CAAC,EAC5D,GAAI,CAAC,EAAGM,EAAMhO,EAAG,CAAC,EAAGiO,EAASjO,EAAG,CAAC,EACpD,GAAI,CAACgO,GACGrG,GAAY5T,CAAM,EAClB,OAAOmZ,GAAS,SAAUgB,EAAW,CAAE,OAAOT,GAAUS,EAAWR,EAAW7X,CAAO,CAAI,CAAA,EAAE2S,GAAUzU,CAAM,CAAC,EAGpH,GAAI,CAACia,EACD,MAAM,IAAI,UAAU,sBAAsB,EAE9C,OAAO,IAAI7K,GAAW,SAAUG,EAAY,CACxC,IAAIhC,EAAU,UAAY,CAEtB,QADIC,EAAO,CAAA,EACF/vB,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpC+vB,EAAK/vB,CAAE,EAAI,UAAUA,CAAE,EAE3B,OAAO8xB,EAAW,KAAK,EAAI/B,EAAK,OAASA,EAAOA,EAAK,CAAC,CAAC,CACnE,EACQ,OAAAyM,EAAI1M,CAAO,EACJ,UAAY,CAAE,OAAO2M,EAAO3M,CAAO,CAAE,CACpD,CAAK,CACL,CACA,SAASwM,GAAwB/Z,EAAQ2Z,EAAW,CAChD,OAAO,SAAUE,EAAY,CAAE,OAAO,SAAUtM,EAAS,CAAE,OAAOvN,EAAO6Z,CAAU,EAAEF,EAAWpM,CAAO,CAAE,CAAG,CAChH,CACA,SAASuM,GAAwB9Z,EAAQ,CACrC,OAAOkL,GAAWlL,EAAO,WAAW,GAAKkL,GAAWlL,EAAO,cAAc,CAC7E,CACA,SAASga,GAA0Bha,EAAQ,CACvC,OAAOkL,GAAWlL,EAAO,EAAE,GAAKkL,GAAWlL,EAAO,GAAG,CACzD,CACA,SAAS4Z,GAAc5Z,EAAQ,CAC3B,OAAOkL,GAAWlL,EAAO,gBAAgB,GAAKkL,GAAWlL,EAAO,mBAAmB,CACvF,CCtDO,SAASoa,GAAiBC,EAAYC,EAAe3C,EAAgB,CACxE,OAAIA,EACOyC,GAAiBC,EAAYC,CAAa,EAAE,KAAKtD,GAAiBW,CAAc,CAAC,EAErF,IAAIvI,GAAW,SAAUG,EAAY,CACxC,IAAIhC,EAAU,UAAY,CAEtB,QADIxqC,EAAI,CAAA,EACC0a,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpC1a,EAAE0a,CAAE,EAAI,UAAUA,CAAE,EAExB,OAAO8xB,EAAW,KAAKxsC,EAAE,SAAW,EAAIA,EAAE,CAAC,EAAIA,CAAC,CAC5D,EACYw3C,EAAWF,EAAW9M,CAAO,EACjC,OAAOrC,GAAWoP,CAAa,EAAI,UAAY,CAAE,OAAOA,EAAc/M,EAASgN,CAAQ,CAAI,EAAG,MACtG,CAAK,CACL,CCdO,SAASC,GAAMC,EAASC,EAAqBtI,EAAW,CACvDqI,IAAY,SAAUA,EAAU,GAChCrI,IAAc,SAAUA,EAAYgB,IACxC,IAAIuH,EAAmB,GACvB,OAAID,GAAuB,OACnBnH,GAAYmH,CAAmB,EAC/BtI,EAAYsI,EAGZC,EAAmBD,GAGpB,IAAItL,GAAW,SAAUG,EAAY,CACxC,IAAIqL,EAAMjE,GAAY8D,CAAO,EAAI,CAACA,EAAUrI,EAAU,IAAK,EAAGqI,EAC1DG,EAAM,IACNA,EAAM,GAEV,IAAI7oC,EAAI,EACR,OAAOqgC,EAAU,SAAS,UAAY,CAC7B7C,EAAW,SACZA,EAAW,KAAKx9B,GAAG,EACf,GAAK4oC,EACL,KAAK,SAAS,OAAWA,CAAgB,EAGzCpL,EAAW,SAAQ,EAG9B,EAAEqL,CAAG,CACd,CAAK,CACL,CC7BO,SAASC,IAAQ,CAEpB,QADIrN,EAAO,CAAA,EACF/vB,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpC+vB,EAAK/vB,CAAE,EAAI,UAAUA,CAAE,EAE3B,IAAI20B,EAAYqB,GAAajG,CAAI,EAC7B8K,EAAa5E,GAAUlG,EAAM,GAAQ,EACrCsN,EAAUtN,EACd,OAAQsN,EAAQ,OAGVA,EAAQ,SAAW,EAEbrG,GAAUqG,EAAQ,CAAC,CAAC,EAEpB1B,GAASd,CAAU,EAAE1Y,GAAKkb,EAAS1I,CAAS,CAAC,EALjDkB,EAMZ,CCrBA,IAAIwD,GAAU,MAAM,QACb,SAASiE,GAAevN,EAAM,CACjC,OAAOA,EAAK,SAAW,GAAKsJ,GAAQtJ,EAAK,CAAC,CAAC,EAAIA,EAAK,CAAC,EAAIA,CAC7D,CCDO,SAASwN,GAAOC,EAAWrR,EAAS,CACvC,OAAOqG,GAAQ,SAAUR,EAAQF,EAAY,CACzC,IAAI1D,EAAQ,EACZ4D,EAAO,UAAUW,GAAyBb,EAAY,SAAU5I,EAAO,CAAE,OAAOsU,EAAU,KAAKrR,EAASjD,EAAOkF,GAAO,GAAK0D,EAAW,KAAK5I,CAAK,CAAI,CAAA,CAAC,CAC7J,CAAK,CACL,CCHO,SAASuU,IAAO,CAEnB,QADIJ,EAAU,CAAA,EACLr9B,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpCq9B,EAAQr9B,CAAE,EAAI,UAAUA,CAAE,EAE9B,OAAAq9B,EAAUC,GAAeD,CAAO,EACzBA,EAAQ,SAAW,EAAIrG,GAAUqG,EAAQ,CAAC,CAAC,EAAI,IAAI1L,GAAW+L,GAASL,CAAO,CAAC,CAC1F,CACO,SAASK,GAASL,EAAS,CAC9B,OAAO,SAAUvL,EAAY,CAazB,QAZI6L,EAAgB,CAAA,EAChBlD,EAAU,SAAU,EAAG,CACvBkD,EAAc,KAAK3G,GAAUqG,EAAQ,CAAC,CAAC,EAAE,UAAU1K,GAAyBb,EAAY,SAAU5I,EAAO,CACrG,GAAIyU,EAAe,CACf,QAASl2C,EAAI,EAAGA,EAAIk2C,EAAc,OAAQl2C,IACtCA,IAAM,GAAKk2C,EAAcl2C,CAAC,EAAE,YAAW,EAE3Ck2C,EAAgB,IACnB,CACD7L,EAAW,KAAK5I,CAAK,CACxB,CAAA,CAAC,CAAC,CACf,EACiBviC,EAAI,EAAGg3C,GAAiB,CAAC7L,EAAW,QAAUnrC,EAAI02C,EAAQ,OAAQ12C,IACvE8zC,EAAQ9zC,CAAC,CAErB,CACA,CC3BO,SAASi3C,GAAqBC,EAAYC,EAAa,CAC1D,OAAIA,IAAgB,SAAUA,EAAcvM,IAC5CsM,EAAaA,GAA4DE,GAClEvL,GAAQ,SAAUR,EAAQF,EAAY,CACzC,IAAIkM,EACA9a,EAAQ,GACZ8O,EAAO,UAAUW,GAAyBb,EAAY,SAAU5I,EAAO,CACnE,IAAI+U,EAAaH,EAAY5U,CAAK,GAC9BhG,GAAS,CAAC2a,EAAWG,EAAaC,CAAU,KAC5C/a,EAAQ,GACR8a,EAAcC,EACdnM,EAAW,KAAK5I,CAAK,EAE5B,CAAA,CAAC,CACV,CAAK,CACL,CACA,SAAS6U,GAAe9xC,EAAG8Z,EAAG,CAC1B,OAAO9Z,IAAM8Z,CACjB,CCjBO,SAASm4B,GAAW9E,EAASc,EAAgB,CAChD,OAAIA,EACO,SAAUlI,EAAQ,CACrB,OAAOA,EAAO,KAAKkM,GAAW,SAAUjyC,EAAGtF,EAAG,CAAE,OAAOqwC,GAAUoC,EAAQntC,EAAGtF,CAAC,CAAC,EAAE,KAAKwyC,GAAI,SAAUpzB,EAAG5c,EAAI,CAAE,OAAO+wC,EAAejuC,EAAG8Z,EAAGpf,EAAGwC,CAAE,CAAE,CAAE,CAAC,CAAE,CAAE,CAAC,CACnK,EAEWqpC,GAAQ,SAAUR,EAAQF,EAAY,CACzC,IAAI1D,EAAQ,EACR+P,EAAW,KACXhD,EAAa,GACjBnJ,EAAO,UAAUW,GAAyBb,EAAY,SAAUsM,EAAY,CACnED,IACDA,EAAWxL,GAAyBb,EAAY,OAAW,UAAY,CACnEqM,EAAW,KACXhD,GAAcrJ,EAAW,UAC7C,CAAiB,EACDkF,GAAUoC,EAAQgF,EAAYhQ,GAAO,CAAC,EAAE,UAAU+P,CAAQ,EAE1E,EAAW,UAAY,CACXhD,EAAa,GACb,CAACgD,GAAYrM,EAAW,UAC3B,CAAA,CAAC,CACV,CAAK,CACL,CCtBO,SAASuM,GAAMha,EAAS,CACvBA,IAAY,SAAUA,EAAU,CAAE,GACtC,IAAImK,EAAKnK,EAAQ,UAAWia,EAAY9P,IAAO,OAAS,UAAY,CAAE,OAAO,IAAI4E,EAAU,EAAK5E,EAAIE,EAAKrK,EAAQ,aAAcka,EAAe7P,IAAO,OAAS,GAAOA,EAAI/Q,EAAK0G,EAAQ,gBAAiBma,EAAkB7gB,IAAO,OAAS,GAAOA,EAAI8gB,EAAKpa,EAAQ,oBAAqBqa,EAAsBD,IAAO,OAAS,GAAOA,EACnU,OAAO,SAAUE,EAAe,CAC5B,IAAIC,EACAC,EACAxL,EACAyL,EAAW,EACXC,EAAe,GACfC,EAAa,GACbC,EAAc,UAAY,CACwCJ,GAAgB,cAClFA,EAAkB,MAC9B,EACYK,EAAQ,UAAY,CACpBD,IACAL,EAAavL,EAAU,OACvB0L,EAAeC,EAAa,EACxC,EACYG,EAAsB,UAAY,CAClC,IAAIC,EAAOR,EACXM,IAC4CE,GAAK,aAC7D,EACQ,OAAO5M,GAAQ,SAAUR,EAAQF,EAAY,CACzCgN,IACI,CAACE,GAAc,CAACD,GAChBE,IAEJ,IAAII,EAAQhM,EAAUA,GAAmDiL,EAAS,EAClFxM,EAAW,IAAI,UAAY,CACvBgN,IACIA,IAAa,GAAK,CAACE,GAAc,CAACD,IAClCF,EAAkBS,GAAYH,EAAqBT,CAAmB,EAE1F,CAAa,EACDW,EAAK,UAAUvN,CAAU,EACrB,CAAC8M,GACDE,EAAW,IACXF,EAAa,IAAIhO,GAAe,CAC5B,KAAM,SAAU1H,EAAO,CAAE,OAAOmW,EAAK,KAAKnW,CAAK,CAAI,EACnD,MAAO,SAAU+E,EAAK,CAClB+Q,EAAa,GACbC,IACAJ,EAAkBS,GAAYJ,EAAOX,EAActQ,CAAG,EACtDoR,EAAK,MAAMpR,CAAG,CACjB,EACD,SAAU,UAAY,CAClB8Q,EAAe,GACfE,IACAJ,EAAkBS,GAAYJ,EAAOV,CAAe,EACpDa,EAAK,SAAQ,CAChB,CACrB,CAAiB,EACDrI,GAAUhF,CAAM,EAAE,UAAU4M,CAAU,EAEtD,CAAS,EAAED,CAAa,CACxB,CACA,CACA,SAASW,GAAYJ,EAAOr7B,EAAI,CAE5B,QADIksB,EAAO,CAAA,EACF/vB,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpC+vB,EAAK/vB,EAAK,CAAC,EAAI,UAAUA,CAAE,EAE/B,GAAI6D,IAAO,GAAM,CACbq7B,IACA,MACH,CACD,GAAIr7B,IAAO,GAGX,KAAI07B,EAAe,IAAI3O,GAAe,CAClC,KAAM,UAAY,CACd2O,EAAa,YAAW,EACxBL,GACH,CACT,CAAK,EACD,OAAOlI,GAAUnzB,EAAG,MAAM,OAAQmpB,GAAc,CAAA,EAAIF,GAAOiD,CAAI,CAAC,CAAC,CAAC,EAAE,UAAUwP,CAAY,EAC9F,CCjFO,SAASC,GAAYC,EAAoBC,EAAY/K,EAAW,CACnE,IAAInG,EAAIE,EAAI/Q,EACRgiB,EACAb,EAAW,GACf,OAAIW,GAAsB,OAAOA,GAAuB,UACnDjR,EAAKiR,EAAmB,WAAYE,EAAanR,IAAO,OAAS,IAAWA,EAAIE,EAAK+Q,EAAmB,WAAYC,EAAahR,IAAO,OAAS,IAAWA,EAAI/Q,EAAK8hB,EAAmB,SAAUX,EAAWnhB,IAAO,OAAS,GAAQA,EAAIgX,EAAY8K,EAAmB,WAGzQE,EAAcF,GAAoF,IAE/FpB,GAAM,CACT,UAAW,UAAY,CAAE,OAAO,IAAIrK,GAAc2L,EAAYD,EAAY/K,CAAS,CAAI,EACvF,aAAc,GACd,gBAAiB,GACjB,oBAAqBmK,CAC7B,CAAK,CACL,CCfO,SAASc,IAAY,CAExB,QADI5F,EAAS,CAAA,EACJh6B,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpCg6B,EAAOh6B,CAAE,EAAI,UAAUA,CAAE,EAE7B,IAAI20B,EAAYqB,GAAagE,CAAM,EACnC,OAAOxH,GAAQ,SAAUR,EAAQF,EAAY,EACxC6C,EAAYkH,GAAO7B,EAAQhI,EAAQ2C,CAAS,EAAIkH,GAAO7B,EAAQhI,CAAM,GAAG,UAAUF,CAAU,CACrG,CAAK,CACL,CCTO,SAAS+N,GAAUzG,EAASc,EAAgB,CAC/C,OAAO1H,GAAQ,SAAUR,EAAQF,EAAY,CACzC,IAAIgO,EAAkB,KAClB1R,EAAQ,EACR+M,EAAa,GACbC,EAAgB,UAAY,CAAE,OAAOD,GAAc,CAAC2E,GAAmBhO,EAAW,SAAU,GAChGE,EAAO,UAAUW,GAAyBb,EAAY,SAAU5I,EAAO,CACD4W,GAAgB,cAClF,IAAIC,EAAa,EACbC,EAAa5R,IACjB4I,GAAUoC,EAAQlQ,EAAO8W,CAAU,CAAC,EAAE,UAAWF,EAAkBnN,GAAyBb,EAAY,SAAU0J,EAAY,CAAE,OAAO1J,EAAW,KAAKoI,EAAiBA,EAAehR,EAAOsS,EAAYwE,EAAYD,GAAY,EAAIvE,CAAU,CAAI,EAAE,UAAY,CAC9PsE,EAAkB,KAClB1E,GACH,CAAA,EACb,EAAW,UAAY,CACXD,EAAa,GACbC,GACH,CAAA,CAAC,CACV,CAAK,CACL,CCpBO,SAAS6E,IAAY,CACxB,OAAOJ,GAAUtO,EAAQ,CAC7B,CCAO,SAAS2O,GAAUC,EAAU,CAChC,OAAO3N,GAAQ,SAAUR,EAAQF,EAAY,CACzCkF,GAAUmJ,CAAQ,EAAE,UAAUxN,GAAyBb,EAAY,UAAY,CAAE,OAAOA,EAAW,SAAU,GAAK3B,EAAI,CAAC,EACvH,CAAC2B,EAAW,QAAUE,EAAO,UAAUF,CAAU,CACzD,CAAK,CACL,CCLO,SAASsO,GAAIjP,EAAgBpE,EAAO4D,EAAU,CACjD,IAAI0P,EAAc5S,GAAW0D,CAAc,GAAKpE,GAAS4D,EAEjD,CAAE,KAAMQ,EAAgB,MAAOpE,EAAO,SAAU4D,CAAU,EAC5DQ,EACN,OAAOkP,EACD7N,GAAQ,SAAUR,EAAQF,EAAY,CACpC,IAAItD,GACHA,EAAK6R,EAAY,aAAe,MAAQ7R,IAAO,QAAkBA,EAAG,KAAK6R,CAAW,EACrF,IAAIC,EAAU,GACdtO,EAAO,UAAUW,GAAyBb,EAAY,SAAU5I,EAAO,CACnE,IAAIsF,GACHA,EAAK6R,EAAY,QAAU,MAAQ7R,IAAO,QAAkBA,EAAG,KAAK6R,EAAanX,CAAK,EACvF4I,EAAW,KAAK5I,CAAK,CACrC,EAAe,UAAY,CACX,IAAIsF,EACJ8R,EAAU,IACT9R,EAAK6R,EAAY,YAAc,MAAQ7R,IAAO,QAAkBA,EAAG,KAAK6R,CAAW,EACpFvO,EAAW,SAAQ,CACtB,EAAE,SAAU7D,EAAK,CACd,IAAIO,EACJ8R,EAAU,IACT9R,EAAK6R,EAAY,SAAW,MAAQ7R,IAAO,QAAkBA,EAAG,KAAK6R,EAAapS,CAAG,EACtF6D,EAAW,MAAM7D,CAAG,CACpC,EAAe,UAAY,CACX,IAAIO,EAAIE,EACJ4R,KACC9R,EAAK6R,EAAY,eAAiB,MAAQ7R,IAAO,QAAkBA,EAAG,KAAK6R,CAAW,IAE1F3R,EAAK2R,EAAY,YAAc,MAAQ3R,IAAO,QAAkBA,EAAG,KAAK2R,CAAW,CACvF,CAAA,CAAC,CACd,CAAS,EAEG9O,EACZ,CCnCO,SAASgP,GAASC,EAAkB5Q,EAAQ,CAC/C,OAAO4C,GAAQ,SAAUR,EAAQF,EAAY,CACzC,IAAItD,EAAKoB,GAAgD,GAAIlB,EAAKF,EAAG,QAASiS,EAAU/R,IAAO,OAAS,GAAOA,EAAI/Q,EAAK6Q,EAAG,SAAUkS,EAAW/iB,IAAO,OAAS,GAAQA,EACpKgjB,EAAW,GACXC,EAAY,KACZC,EAAY,KACZ1F,EAAa,GACb2F,EAAgB,UAAY,CAC0BD,GAAU,cAChEA,EAAY,KACRH,IACAK,IACA5F,GAAcrJ,EAAW,WAEzC,EACYkP,EAAoB,UAAY,CAChCH,EAAY,KACZ1F,GAAcrJ,EAAW,UACrC,EACYmP,EAAgB,SAAU/X,EAAO,CACjC,OAAQ2X,EAAY7J,GAAUwJ,EAAiBtX,CAAK,CAAC,EAAE,UAAUyJ,GAAyBb,EAAYgP,EAAeE,CAAiB,CAAC,CACnJ,EACYD,EAAO,UAAY,CACnB,GAAIJ,EAAU,CACVA,EAAW,GACX,IAAIzX,EAAQ0X,EACZA,EAAY,KACZ9O,EAAW,KAAK5I,CAAK,EACrB,CAACiS,GAAc8F,EAAc/X,CAAK,CACrC,CACb,EACQ8I,EAAO,UAAUW,GAAyBb,EAAY,SAAU5I,EAAO,CACnEyX,EAAW,GACXC,EAAY1X,EACZ,EAAE2X,GAAa,CAACA,EAAU,UAAYJ,EAAUM,IAASE,EAAc/X,CAAK,EACxF,EAAW,UAAY,CACXiS,EAAa,GACb,EAAEuF,GAAYC,GAAYE,GAAa,CAACA,EAAU,SAAW/O,EAAW,UAC3E,CAAA,CAAC,CACV,CAAK,CACL,CCxCO,SAASoP,GAAaC,EAAUxM,EAAW/E,EAAQ,CAClD+E,IAAc,SAAUA,EAAYgB,IACxC,IAAIyL,EAAYrE,GAAMoE,EAAUxM,CAAS,EACzC,OAAO4L,GAAS,UAAY,CAAE,OAAOa,CAAY,EAAExR,CAAM,CAC7D,CCCO,SAASyR,GAAaC,EAAUC,EAAiB,CACpD,OAAO/O,GAAQ,SAAUR,EAAQF,EAAY,CACzC,IAAI0P,EAAU,CAAA,EACVC,EAAc,SAAUxT,EAAK,CAC7B,KAAO,EAAIuT,EAAQ,QACfA,EAAQ,MAAK,EAAG,MAAMvT,CAAG,EAE7B6D,EAAW,MAAM7D,CAAG,CAChC,EACQ+I,GAAUsK,CAAQ,EAAE,UAAU3O,GAAyBb,EAAY,SAAU4P,EAAW,CACpF,IAAIC,EAAS,IAAIvO,GACjBoO,EAAQ,KAAKG,CAAM,EACnB,IAAIC,EAAsB,IAAIvT,GAC1BwT,EAAc,UAAY,CAC1B3T,GAAUsT,EAASG,CAAM,EACzBA,EAAO,SAAQ,EACfC,EAAoB,YAAW,CAC/C,EACgBE,EACJ,GAAI,CACAA,EAAkB9K,GAAUuK,EAAgBG,CAAS,CAAC,CACzD,OACMzT,EAAK,CACRwT,EAAYxT,CAAG,EACf,MACH,CACD6D,EAAW,KAAK6P,EAAO,aAAc,CAAA,EACrCC,EAAoB,IAAIE,EAAgB,UAAUnP,GAAyBb,EAAY+P,EAAa1R,GAAMsR,CAAW,CAAC,CAAC,CACnI,EAAWtR,EAAI,CAAC,EACR6B,EAAO,UAAUW,GAAyBb,EAAY,SAAU5I,EAAO,CACnE,IAAIqF,EAAKC,EACLuT,EAAcP,EAAQ,QAC1B,GAAI,CACA,QAASQ,EAAgBnV,GAASkV,CAAW,EAAGE,EAAkBD,EAAc,KAAI,EAAI,CAACC,EAAgB,KAAMA,EAAkBD,EAAc,KAAI,EAAI,CACnJ,IAAIE,EAAWD,EAAgB,MAC/BC,EAAS,KAAKhZ,CAAK,CACtB,CACJ,OACM6F,EAAO,CAAER,EAAM,CAAE,MAAOQ,CAAO,CAAG,QACjC,CACJ,GAAI,CACIkT,GAAmB,CAACA,EAAgB,OAASzT,EAAKwT,EAAc,SAASxT,EAAG,KAAKwT,CAAa,CACrG,QACO,CAAE,GAAIzT,EAAK,MAAMA,EAAI,KAAQ,CACxC,CACb,EAAW,UAAY,CACX,KAAO,EAAIiT,EAAQ,QACfA,EAAQ,QAAQ,WAEpB1P,EAAW,SAAQ,CACtB,EAAE2P,EAAa,UAAY,CACxB,KAAO,EAAID,EAAQ,QACfA,EAAQ,QAAQ,aAEvB,CAAA,CAAC,CACV,CAAK,CACL,CCjBO,SAASW,GAAsB78C,EAAQ,CAE5C,OAAIA,EAAE,UACGA,EAAE,UAEAA,EAAE,cACJA,EAAE,cAEAA,EAAE,WACJA,EAAE,WAEF,IAEX,CAeO,SAAS88C,GACd7f,EACA2Z,EACApM,EACAuS,EAAa,GACD,CACN,MAAAC,EAAe,MAAOh9C,GAAkB,CAC5C,MAAMwqC,EAAQxqC,CAAC,CAAA,EAGb,GAAA,CACKi9B,EAAA,iBAAiB2Z,EAAWoG,EAAcD,CAAU,OACjD,CACH9f,EAAA,YAAY,KAAO2Z,EAAWoG,CAAY,CACnD,CAEA,MAAO,IAAM,CACP,GAAA,CACK/f,EAAA,oBAAoB2Z,EAAWoG,EAAcD,CAAU,OACpD,CACH9f,EAAA,YAAY,KAAO2Z,EAAWoG,CAAY,CACnD,CAAA,CAEJ,CAGO,SAASC,GACd/S,EACAjN,EACA2Z,EACApM,EACAuS,EAAa,GACD,CACL,OAAAD,GACL5S,GAAU,SAAS,KACnB0M,EACC52C,GAAM,CACDA,EAAE,SAAWi9B,GAEfuN,EAAQxqC,CAAC,CAEb,EACA+8C,CAAA,CAEJ,CAEO,SAASG,GAAwBjgB,EAA6B,CACnEA,EAAO,YAAYA,EAAO,UAAU,EAAI,CAAC,CAC3C,CAEO,SAASkgB,GACdlgB,EACA2Z,EACAmG,EAAa,GACE,CAEf,OAAOpG,GAAa1Z,EAAQ2Z,EAAW,CAAE,QAASmG,EAAY,CAChE,CAmBO,SAASK,GAAwBre,EAKlB,CAEpB,MAAMx4B,EAAI8wC,GAEN7M,GAKOzL,EAAQ,SAASyL,CAAO,EAEjC,CAACA,EAA2BC,IAAiB,CAC3C1L,EAAQ,aAAayL,EAAS,GAAIC,GAAQ,CAAG,CAAA,CAC/C,EAGA,IAAIA,IACK,CAAC,GAAGA,CAAI,CACjB,EAEF,OAAI1L,EAAQ,MACHx4B,EAAE,KACP2zC,GAAY,CACV,WAAYnb,EAAQ,YAAc,EAClC,SAAU,EAAA,CACX,CAAA,EAGIx4B,CAEX,CAOO,SAAS82C,GAAgBr9C,EAAe,CAC7C,GAAIA,EAAE,gBAAiB,CACrBA,EAAE,gBAAgB,EAClB,MACF,CACI,GAAA,CACFA,EAAE,aAAe,QACN,CAEb,CACF,CAYO,SAASs9C,GAAet9C,EAAe,CAC5C,GAAIA,EAAE,eAAgB,CACpBA,EAAE,eAAe,EACjB,MACF,CACI,GAAA,CACFA,EAAE,YAAc,QACL,CAEb,CACF,CAIA,MAAMu9C,GAAc,CAClB,QACA,WACA,QACA,cACA,YACA,UACA,YACA,YACA,WACA,aACA,YACF,EACMC,GAAiB,CAAC,UAAW,QAAS,UAAU,EAChDC,GAAc,CAAC,aAAc,WAAY,cAAe,WAAW,EACnEC,GAAgB,CACpB,cACA,YACA,gBACA,aACF,EACMC,GAAa,CACjB,YACA,OACA,UACA,YACA,WACA,YACA,MACF,EACMC,GAAS,CAAC,QAAQ,EAER,SAAAC,GACdjH,EACA7X,EAOsB,CACpB,QAAS,GACT,OAAQ,CAAC,CACX,EACY,CACR,IAAA+e,EACA,GAAA,CACF,MAAMnsC,EAAI,OAAO,OACf,CACE,QAAS,GACT,WAAY,GACZ,KAAM,OACN,OAAQ,EAKR,QAAS,GACT,OAAQ,GACR,SAAU,GACV,QAAS,GACT,OAAQ,EACR,cAAe,IACjB,EACAotB,CAAA,EAEEwe,GAAY,SAAS3G,CAAS,EACxBkH,EAAA,IAAI,WAAWlH,EAAWjlC,CAAC,EAC1B6rC,GAAe,SAAS5G,CAAS,EAClCkH,EAAA,IAAI,cAAclH,EAAWjlC,CAAC,EAC7B8rC,GAAY,SAAS7G,CAAS,EAC/BkH,EAAA,IAAI,WAAWlH,EAAWjlC,CAAC,EAC1B+rC,GAAc,SAAS9G,CAAS,EACjCkH,EAAA,IAAI,aAAalH,EAAWjlC,CAAC,EAC5BgsC,GAAW,SAAS/G,CAAS,EAC9BkH,EAAA,IAAI,UAAUlH,EAAWjlC,CAAC,EACzBisC,GAAO,SAAShH,CAAS,EAC1BkH,EAAA,IAAI,MAAMlH,EAAWjlC,CAAC,EAItBmsC,EAAA,IAAI,YAAYlH,EAAWjlC,CAAC,OAE5B,CAEN,SAAS,YAGXmsC,EAAQ,SAEL,YAAY,OAAO,EACnB,UAAUlH,EAAW,GAAM,EAAI,EACzB,SAAS,oBAClBkH,EAAQ,SAAS,oBAErB,CACO,OAAAA,CACT,CAEgB,SAAAC,GACd9gB,EACA2Z,EACAkH,EACA,CACA,GAAK7gB,EAGL,GAAIA,EAAO,cAETA,EAAO,cAAc6gB,CAAK,UACjB7gB,EAAO,WAAa,SAAS,kBAE/BA,EAAA,UAAU,KAAO2Z,EAAWkH,CAAK,MAExC,OAAM,IAAI,MAAM,0BAA0BlH,CAAS,EAAE,CAEzD,CAEgB,SAAAoH,GAAuBh+C,EAAe42C,EAAsB,CAC1E,MAAM3Z,EAASj9B,EAAE,OACX89C,EAAQD,GAAYjH,CAAS,EACrBmH,GAAA9gB,EAAQ2Z,EAAWkH,CAAK,CACxC,CAEO,SAASG,GAAuBj+C,EAAe,CACpD,MAAMi9B,EAASj9B,EAAE,OACX42C,EAAY,QAClB,GAAI,CAAC,2BAA2B,KAAK3Z,EAAO,OAAO,EAAG,CAC9C,MAAA6gB,EAAQD,GAAYjH,CAAS,EAC7BkH,EAAA,KAAQ99C,EAAU,MAAQ,OAChC89C,EAAM,OAAS,EACTA,EAAA,QAAU7gB,EAAO,SAAW,EAC5B6gB,EAAA,QAAU7gB,EAAO,SAAW,EAC5B6gB,EAAA,QAAU7gB,EAAO,SAAW,EAC5B6gB,EAAA,QAAU7gB,EAAO,SAAW,EAClC6gB,EAAM,MAAS99C,EAAU,MACzB89C,EAAM,MAAS99C,EAAU,MACnB89C,EAAA,QAAU,CAAC,CAAE99C,EAAU,QACvB89C,EAAA,OAAS,CAAC,CAAE99C,EAAU,OACtB89C,EAAA,SAAW,CAAC,CAAE99C,EAAU,SACxB89C,EAAA,QAAU,CAAC,CAAE99C,EAAU,QAC7B89C,EAAM,OAAS,EACfA,EAAM,cAAgB,KACtBA,EAAM,aAAe,GACPC,GAAA9gB,EAAQ2Z,EAAWkH,CAAK,CACxC,CACF,CAEgB,SAAAI,GACdC,EACAvH,EACY,CACN,MAAAwH,EAAQD,EAAW,eAAe,CAAC,EACzC,OAAON,GAAYjH,EAAW,CAC5B,QAAS,GACT,WAAY,GACZ,KAAM,OACN,OAAQ,EACR,QAASwH,EAAM,QACf,QAASA,EAAM,QACf,QAASA,EAAM,QACf,QAASA,EAAM,QACf,QAAS,GACT,OAAQ,GACR,SAAU,GACV,QAAS,GACT,OAAQ,EACR,cAAe,IAAA,CAChB,CACH,CCtYO,SAASC,GACdC,EACAC,EACAC,EACAC,EACAC,EACmC,CACnC,MAAMC,EAAoBJ,EAAcC,EACxC,IAAII,EAAY,EACZC,EAAa,EACjB,OAAQP,EAAM,CACZ,IAAK,YACCK,GAAqB,GACXC,EAAAH,EACZI,EAAaD,EAAYD,EACrBE,EAAaH,IACFG,EAAAH,EACbE,EAAYC,EAAaF,KAGdE,EAAAH,EACbE,EAAYC,EAAaF,EACrBC,EAAYH,IACFG,EAAAH,EACZI,EAAaD,EAAYD,IAG7B,MACF,IAAK,aACCA,GAAqB,GACVE,EAAAH,EACbE,EAAYC,EAAaF,IAEbC,EAAAH,EACZI,EAAaD,EAAYD,GAE3B,MACF,IAAK,WACSC,EAAAH,EACZI,EAAaD,EAAYD,EACzB,MACF,IAAK,YACUE,EAAAH,EACbE,EAAYC,EAAaF,EACzB,MACF,IAAK,cACL,QACcC,EAAAH,EACCI,EAAAH,EACb,KACJ,CACA,MAAO,CAAE,MAAOE,EAAW,OAAQC,CAAW,CAChD,CAEO,SAASC,GACdC,EACW,CACP,GAAA,CACI,MAAAC,EAAS,SAAS,cAAc,QAAQ,EACxCxY,EAAMwY,EAAO,WAAW,IAAI,EAClC,OAAAA,EAAO,MAAQD,EAAM,MACrBC,EAAO,OAASD,EAAM,OACtBvY,EAAI,UAAUuY,EAAO,EAAG,EAAGC,EAAO,MAAOA,EAAO,MAAM,EAC/CxY,EAAI,aAAa,EAAG,EAAGwY,EAAO,MAAOA,EAAO,MAAM,OAC/C,CAEV,OAAO,IAAI,UAAUD,EAAM,MAAOA,EAAM,MAAM,CAChD,CACF,CAGa,MAAAE,GAAqBC,GAAyB,CAMzD,MAAMC,EAAUD,EAAU,MACpBE,EAAWF,EAAU,OACrBG,EAAcF,EAAUC,EAAW,EACnCE,EAASD,EAAc,GAWvBE,EAAmB,CAEvB,GACA,GAEAD,EAAS,IACRA,GAAU,EAAK,IACfA,GAAU,GAAM,IAChBA,GAAU,GAAM,IAEjB,EACA,EAEA,EACA,EAEA,GACA,EACA,EACA,CAAA,EAkBIE,EAAmB,CAEvB,GACA,EACA,EACA,EAEAL,EAAU,IACTA,GAAW,EAAK,IAChBA,GAAW,GAAM,IACjBA,GAAW,GAAM,IAElBC,EAAW,IACVA,GAAY,EAAK,IACjBA,GAAY,GAAM,IAClBA,GAAY,GAAM,IAEnB,EACA,EAGA,GACA,EAEA,EACA,EACA,EACA,EAEAC,EAAc,IACbA,GAAe,EAAK,IACpBA,GAAe,GAAM,IACrBA,GAAe,GAAM,IAEtB,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,CAAA,EAGII,GAAY,EAAMN,EAAU,EAAK,GAAM,EACvCO,EAAWR,EAAU,KAE3B,IAAIS,EAAe,GACnB,MAAMC,EAAWT,GAAW,EAC5B,IAAI90C,EAAI+0C,EACR,MAAMS,EAAe,OAAO,aAEzB,EAAA,CACK,MAAAC,EAAWF,GAAYv1C,EAAI,GACjC,IAAI01C,EAAc,GAClB,QAAS1+B,EAAI,EAAGA,EAAI89B,EAAS99B,IAAK,CAChC,MAAM2+B,EAAW3+B,GAAK,EACtB0+B,GACEF,EAAaH,EAASI,EAAWE,EAAW,CAAC,CAAC,EAC9CH,EAAaH,EAASI,EAAWE,EAAW,CAAC,CAAC,EAC9CH,EAAaH,EAASI,EAAWE,CAAQ,CAAC,CAC9C,CAEA,QAASj2C,EAAI,EAAGA,EAAI01C,EAAU11C,IACbg2C,GAAA,OAAO,aAAa,CAAC,EAGtBJ,GAAAI,QACT,EAAE11C,GAEX,SAAS41C,EAAW5e,EAAsB,CACpC,GAAA,CAAC,OAAO,KACJ,KAAA,iBAER,IAAIhE,EAAM,GACN,GAAA,OAAOgE,GAAQ,SACXhE,EAAAgE,MAEN,SAAShgC,EAAI,EAAGA,EAAIggC,EAAK,OAAQhgC,IAC/Bg8B,GAAO,OAAO,aAAagE,EAAKhgC,CAAC,CAAC,EAGtC,OAAO,KAAKg8B,CAAG,CACjB,CAEA,OACE4iB,EAAWV,EAAiB,OAAOC,CAAgB,CAAC,EACpDS,EAAWN,CAAY,CAE3B,EAKO,SAASO,GAAmBhB,EAA8B,CACzD,KAAA,CAAE,MAAAiB,EAAO,OAAAC,CAAW,EAAAlB,EACpBF,EAAS,SAAS,cAAc,QAAQ,EACxCxY,EAAMwY,EAAO,WAAW,IAAI,EAClC,OAAAA,EAAO,MAAQmB,EACfnB,EAAO,OAASoB,EAChB5Z,EAAI,aAAa0Y,EAAW,EAAG,EAAG,EAAG,EAAGiB,EAAOC,CAAM,EACrCpB,EAAO,UAAU,WAAW,CAE9C,CAGa,MAAAqB,GAAkB,CAC7BnB,EACAoB,EACAvV,IACG,CACG,KAAA,CAAE,MAAAoV,EAAO,OAAAC,CAAW,EAAAlB,EACpBF,EAAS,SAAS,cAAc,QAAQ,EACxCxY,EAAMwY,EAAO,WAAW,IAAI,EAClCA,EAAO,MAAQmB,EACfnB,EAAO,OAASoB,EAChB5Z,EAAI,aAAa0Y,EAAW,EAAG,EAAG,EAAG,EAAGiB,EAAOC,CAAM,EACrD,MAAMG,EAAc,SAClBD,EAAkBA,EAAgB,cAAgB,KACpD,GACOtB,EAAA,OACJre,GAAsB,CACrBoK,IAAK,KAAMpK,CAAI,CACjB,EACA4f,EACA,CAAA,CAEJ,EAEgB,SAAAC,GAAgB7f,EAAY5B,EAA8B,CACjE,OAAA,kBAAkB4B,EAAM5B,CAAO,CACxC,CAGO,SAAS0hB,GAAkBvB,EAAsB,CACtD,MAAMwB,EAAO,CAAA,EACPC,EAAO,CAAA,EACPC,EAAO,CAAA,EACb,IAAIr5B,EAAI,EACC,QAAAlmB,EAAI,EAAGw/C,EAAM3B,EAAU,KAAK,OAAQ79C,EAAIw/C,EAAKx/C,GAAK,EACzDq/C,EAAKn5B,CAAC,EAAI23B,EAAU,KAAK79C,CAAC,EAC1Bs/C,EAAKp5B,CAAC,EAAI23B,EAAU,KAAK79C,EAAI,CAAC,EAC9Bu/C,EAAKr5B,CAAC,EAAI23B,EAAU,KAAK79C,EAAI,CAAC,EACzBkmB,GAAA,EAED,MAAA9c,EAAIq2C,GAAoBJ,CAAI,EAC5BK,EAAID,GAAoBH,CAAI,EAC5Bl5B,EAAIq5B,GAAoBF,CAAI,EAClC,MAAO,OAASn2C,EAAI,IAAMs2C,EAAI,IAAMt5B,EAAI,GAC1C,CAEA,SAASq5B,GAAoBrjB,EAAe,CAC1C,MAAMujB,EAAW,CAAA,EACXC,EAAiB,CAAA,EACjBC,EAAmB,CAAA,EACzB,QAAS7/C,EAAI,EAAGA,EAAIo8B,EAAI,OAAQp8B,IACzB2/C,EAASvjB,EAAIp8B,CAAC,CAAC,EAGH4/C,EAAA,KAAKxjB,EAAIp8B,CAAC,CAAC,EAFjB2/C,EAAAvjB,EAAIp8B,CAAC,CAAC,EAAI,EAKvB,IAAIsJ,EAAI,EACR,QAAStJ,EAAI,EAAGA,EAAI4/C,EAAe,OAAQ5/C,IAAK,CAC1CsJ,EAAA,EACJ,QAAS4c,EAAI,EAAGA,EAAI05B,EAAe,OAAQ15B,IACrC05B,EAAe5/C,CAAC,IAAM4/C,EAAe15B,CAAC,IACnC5c,GAAA,GAEPu2C,EAAiB7/C,CAAC,EAAIsJ,CAE1B,CACA,MAAMw2C,EAAM,KAAK,IAAI,MAAM,KAAMD,CAAgB,EACjD,IAAIE,EAAW,EACR,KAAAA,EAAWF,EAAiB,OAAQE,IACrC,GAAAF,EAAiBE,CAAQ,IAAMD,EACjC,OAGJ,OAAOF,EAAeG,CAAQ,CAChC,CAGa,MAAAC,GAAkBnC,GAAyB,CACtD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC1BigC,EAAAC,CAAU,EAAIlgB,GAAMh3B,EAAI81C,EAAQA,EAAQ9+B,EAAI,GAAK,CAAC,EAClDigC,EAAAC,EAAa,CAAC,EAAIlgB,GAAMh3B,EAAI81C,EAAQA,EAAQ9+B,EAAI,GAAK,EAAI,CAAC,EAC1DigC,EAAAC,EAAa,CAAC,EAAIlgB,GAAMh3B,EAAI81C,EAAQA,EAAQ9+B,EAAI,GAAK,EAAI,CAAC,EAC1DigC,EAAAC,EAAa,CAAC,EAAIlgB,GAAMh3B,EAAI81C,EAAQA,EAAQ9+B,EAAI,GAAK,EAAI,CAAC,CACvE,CAGK,OADc,IAAI,UAAUigC,EAAYnB,EAAOC,CAAM,CAE9D,EAGaoB,GAAkBtC,GAAyB,CACtD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC1BigC,EAAAC,CAAU,EAAIlgB,IAAO+e,EAAS/1C,EAAI,GAAK81C,EAAQ9+B,GAAK,CAAC,EACrDigC,EAAAC,EAAa,CAAC,EAAIlgB,IAAO+e,EAAS/1C,EAAI,GAAK81C,EAAQ9+B,GAAK,EAAI,CAAC,EAC7DigC,EAAAC,EAAa,CAAC,EAAIlgB,IAAO+e,EAAS/1C,EAAI,GAAK81C,EAAQ9+B,GAAK,EAAI,CAAC,EAC7DigC,EAAAC,EAAa,CAAC,EAAIlgB,IAAO+e,EAAS/1C,EAAI,GAAK81C,EAAQ9+B,GAAK,EAAI,CAAC,CAC1E,CAGK,OADc,IAAI,UAAUigC,EAAYnB,EAAOC,CAAM,CAE9D,EAGaqB,GAAcvC,GAAyB,CAClD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAAShgB,EAAI,EAAGA,EAAI8+B,EAAO9+B,IACzB,QAAShX,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAAK,CACzB,MAAAk3C,GAAclgC,EAAI++B,EAAS/1C,GAAK,EAC3Bi3C,EAAAC,CAAU,EAAIlgB,GAAMh3B,EAAI81C,EAAQA,EAAQ9+B,EAAI,GAAK,CAAC,EAClDigC,EAAAC,EAAa,CAAC,EAAIlgB,GAAMh3B,EAAI81C,EAAQA,EAAQ9+B,EAAI,GAAK,EAAI,CAAC,EAC1DigC,EAAAC,EAAa,CAAC,EAAIlgB,GAAMh3B,EAAI81C,EAAQA,EAAQ9+B,EAAI,GAAK,EAAI,CAAC,EAC1DigC,EAAAC,EAAa,CAAC,EAAIlgB,GAAMh3B,EAAI81C,EAAQA,EAAQ9+B,EAAI,GAAK,EAAI,CAAC,CACvE,CAGK,OADc,IAAI,UAAUigC,EAAYlB,EAAQD,CAAK,CAE9D,EAGauB,GAAexC,GAAyB,CACnD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAAShgB,EAAI,EAAGA,EAAI8+B,EAAO9+B,IACzB,QAAShX,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAAK,CACzB,MAAAk3C,GAAclgC,EAAI++B,EAAS/1C,GAAK,EAC3Bi3C,EAAAC,CAAU,EAAIlgB,IAAO+e,EAAS/1C,EAAI,GAAK81C,EAAQ9+B,GAAK,CAAC,EACrDigC,EAAAC,EAAa,CAAC,EAAIlgB,IAAO+e,EAAS/1C,EAAI,GAAK81C,EAAQ9+B,GAAK,EAAI,CAAC,EAC7DigC,EAAAC,EAAa,CAAC,EAAIlgB,IAAO+e,EAAS/1C,EAAI,GAAK81C,EAAQ9+B,GAAK,EAAI,CAAC,EAC7DigC,EAAAC,EAAa,CAAC,EAAIlgB,IAAO+e,EAAS/1C,EAAI,GAAK81C,EAAQ9+B,GAAK,EAAI,CAAC,CAC1E,CAGK,OADc,IAAI,UAAUigC,EAAYlB,EAAQD,CAAK,CAE9D,EAGawB,GAAUzC,GAAyB,CAC9C,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC/BugC,GACHvgB,EAAKkgB,CAAU,EAAIlgB,EAAKkgB,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,GAAK,EACrED,EAAWC,CAAU,EAAIK,EACdN,EAAAC,EAAa,CAAC,EAAIK,EAClBN,EAAAC,EAAa,CAAC,EAAIK,EAC7BN,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGayB,GAAW3C,GAAyB,CAC/C,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAE/BugC,EACJ,MAASvgB,EAAKkgB,CAAU,EACxB,MAASlgB,EAAKkgB,EAAa,CAAC,EAC5B,MAASlgB,EAAKkgB,EAAa,CAAC,EAC9BD,EAAWC,CAAU,EAAIK,EACdN,EAAAC,EAAa,CAAC,EAAIK,EAClBN,EAAAC,EAAa,CAAC,EAAIK,EAC7BN,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGa0B,GAAmB5C,GAAyB,CACvD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAG/B0gC,GADH1gB,EAAKkgB,CAAU,EAAIlgB,EAAKkgB,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,GAAK,EACzC,IAAM,IAAM,EACxCD,EAAWC,CAAU,EAAIQ,EACdT,EAAAC,EAAa,CAAC,EAAIQ,EAClBT,EAAAC,EAAa,CAAC,EAAIQ,EAC7BT,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGa4B,GAAc9C,GAAyB,CAClD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EACrCigC,EAAWC,CAAU,EAAI,IAAMlgB,EAAKkgB,CAAU,EAC9CD,EAAWC,EAAa,CAAC,EAAI,IAAMlgB,EAAKkgB,EAAa,CAAC,EACtDD,EAAWC,EAAa,CAAC,EAAI,IAAMlgB,EAAKkgB,EAAa,CAAC,EACtDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGa6B,GAAS/C,GAAyB,CAC7C,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC1BigC,EAAAC,CAAU,EAAIlgB,EAAKkgB,CAAU,EAC7BD,EAAAC,EAAa,CAAC,EAAI,EAClBD,EAAAC,EAAa,CAAC,EAAI,EAC7BD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGa8B,GAAWhD,GAAyB,CAC/C,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EACrCigC,EAAWC,CAAU,EAAI,EACzBD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EACrCD,EAAAC,EAAa,CAAC,EAAI,EAC7BD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGa+B,GAAUjD,GAAyB,CAC9C,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EACrCigC,EAAWC,CAAU,EAAI,EACdD,EAAAC,EAAa,CAAC,EAAI,EAC7BD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGagC,GAAiBlD,GAAyB,CACrD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC1BigC,EAAAC,CAAU,EAAIlgB,EAAKkgB,CAAU,EACxCD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EACrCD,EAAAC,EAAa,CAAC,EAAI,EAC7BD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGaiC,GAAgBnD,GAAyB,CACpD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC1BigC,EAAAC,CAAU,EAAIlgB,EAAKkgB,CAAU,EAC7BD,EAAAC,EAAa,CAAC,EAAI,EAC7BD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGakC,GAAkBpD,GAAyB,CACtD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EACrCigC,EAAWC,CAAU,EAAI,EACzBD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGamC,GAAgBrD,GAAyB,CACpD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC/BmhC,GAAanhB,EAAKkgB,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,GAAK,EACvDD,EAAAC,CAAU,EAAIlgB,EAAKkgB,CAAU,EAC7BD,EAAAC,EAAa,CAAC,EAAIiB,EAClBlB,EAAAC,EAAa,CAAC,EAAIiB,EAC7BlB,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGaqC,GAAkBvD,GAAyB,CACtD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC/BmhC,GAAanhB,EAAKkgB,CAAU,EAAIlgB,EAAKkgB,EAAa,CAAC,GAAK,EAC9DD,EAAWC,CAAU,EAAIiB,EACzBlB,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EACrCD,EAAAC,EAAa,CAAC,EAAIiB,EAC7BlB,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGasC,GAAiBxD,GAAyB,CACrD,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC/BmhC,GAAanhB,EAAKkgB,CAAU,EAAIlgB,EAAKkgB,EAAa,CAAC,GAAK,EAC9DD,EAAWC,CAAU,EAAIiB,EACdlB,EAAAC,EAAa,CAAC,EAAIiB,EAC7BlB,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGauC,GAAWzD,GAED0D,GAAkB1D,EADxB,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAE,CACO,EAK7C2D,GAAiB3D,GAEP0D,GAAkB1D,EADxB,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAE,CACO,EAK7C4D,GAAY5D,GAAoC,CAC3D,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC1BigC,EAAAC,CAAU,EAAIlgB,EAAKkgB,CAAU,EACxCD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EACrCD,EAAAC,EAAa,CAAC,EAAI,GAC/B,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,EAGa2C,GAAY7D,GAAoC,CAC3D,KAAM,CAAE,KAAA7d,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EACrC,GAAIggB,EAAKkgB,EAAa,CAAC,IAAM,EAC3BD,EAAWC,CAAU,EAAI,IACdD,EAAAC,EAAa,CAAC,EAAI,IAClBD,EAAAC,EAAa,CAAC,EAAI,IAClBD,EAAAC,EAAa,CAAC,EAAI,QACxB,CACL,MAAMQ,EAAWiB,GACf,CACE3hB,EAAKkgB,CAAU,EACflgB,EAAKkgB,EAAa,CAAC,EACnBlgB,EAAKkgB,EAAa,CAAC,EACnBlgB,EAAKkgB,EAAa,CAAC,CACrB,EACA,CAAC,IAAK,IAAK,IAAK,GAAG,CAAA,EAEVD,EAAAC,CAAU,EAAIQ,EAAS,CAAC,EACnCT,EAAWC,EAAa,CAAC,EAAIQ,EAAS,CAAC,EACvCT,EAAWC,EAAa,CAAC,EAAIQ,EAAS,CAAC,EACvCT,EAAWC,EAAa,CAAC,EAAIQ,EAAS,CAAC,CACzC,CACF,CAGK,OADc,IAAI,UAAUT,EAAYnB,EAAOC,CAAM,CAE9D,EAagB,SAAA6C,GACd/D,EACAgE,EACAC,EACAC,EACAC,EACAC,EAAqB,GACrBC,EACW,CACX,KAAM,CAAE,KAAAliB,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAChC,IAAIsE,EAAYH,EACZI,EAAWL,EACXM,EAAaR,EACbS,EAAcR,EA4BlB,GA3BIK,EAAY,EACFA,EAAA,EACHA,EAAYrD,IACTqD,EAAArD,GAEVsD,EAAW,EACFA,EAAA,EACFA,EAAWrD,IACTqD,EAAArD,GAETsD,EAAa,EACFA,EAAA,EACJA,EAAavD,IACTuD,EAAAvD,GAEXwD,EAAc,EACFA,EAAA,EACLA,EAAcvD,IACTuD,EAAAvD,GAEZoD,EAAYE,EAAavD,IAC3BuD,EAAavD,EAAQqD,GAEnBC,EAAWE,EAAcvD,IAC3BuD,EAAcvD,EAASqD,GAGrBH,EAAoB,CACtB,MAAMhC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAAS,EAAI,EAAG,EAAI+e,EAAQ,IAC1B,QAAS/+B,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAc,EAAIpB,EAAQ9+B,GAAK,EAEnCA,GAAKmiC,GACLniC,GAAKmiC,EAAYE,GACjB,GAAKD,GACL,GAAKA,EAAWE,GAELrC,EAAAC,CAAU,EAAIlgB,EAAKkgB,CAAU,EACxCD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,IAEhDD,EAAWC,CAAU,EAAI,IACdD,EAAAC,EAAa,CAAC,EAAI,IAClBD,EAAAC,EAAa,CAAC,EAAI,IAC7BD,EAAWC,EAAa,CAAC,EACvBgC,GAAa,CAAC,MAAO,MAAM,EAAE,SAASA,EAAU,YAAa,CAAA,EACzD,IACA,EAEV,CAGK,OADc,IAAI,UAAUjC,EAAYnB,EAAOC,CAAM,CACrD,KACF,CACL,MAAMkB,EAAa,IAAI,kBAAkBoC,EAAaC,EAAc,CAAC,EACrE,QAAS,EAAIF,EAAU,GAAKA,EAAWE,EAAa,IAClD,QAAStiC,EAAImiC,EAAWniC,GAAKmiC,EAAYE,EAAYriC,IAAK,CACxD,MAAMkgC,IAAe,EAAIkC,GAAYC,EAAariC,EAAImiC,GAAa,EAC7DI,GAAe,EAAIzD,EAAQ9+B,GAAK,EAC3BigC,EAAAC,CAAU,EAAIlgB,EAAKuiB,CAAW,EACzCtC,EAAWC,EAAa,CAAC,EAAIlgB,EAAKuiB,EAAc,CAAC,EACjDtC,EAAWC,EAAa,CAAC,EAAIlgB,EAAKuiB,EAAc,CAAC,EACjDtC,EAAWC,EAAa,CAAC,EAAIlgB,EAAKuiB,EAAc,CAAC,CACnD,CAGK,OADc,IAAI,UAAUtC,EAAYoC,EAAYC,CAAW,CAExE,CACF,CAUO,SAASE,GACd3E,EACA4E,EACAP,EACAQ,EACW,CACX,KAAM,CAAE,KAAA1iB,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAChC,IAAI8E,EAAcF,EACdE,EAAc,KAAK,MAAM7D,EAAQ,CAAC,IACtB6D,EAAA,KAAK,MAAM7D,EAAQ,CAAC,GAEhC6D,EAAc,KAAK,MAAM5D,EAAS,CAAC,IACvB4D,EAAA,KAAK,MAAM5D,EAAS,CAAC,GAEjC4D,EAAc,IACFA,EAAA,GAEhB,MAAM1C,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EACrC,IAAIrX,EAAI,GACJqX,EAAI2iC,EACF35C,EAAI25C,EACNh6C,EAAI,KAAK,KACP,KAAK,IAAIg6C,EAAc3iC,EAAI,EAAG,CAAC,EAAI,KAAK,IAAI2iC,EAAc35C,EAAI,EAAG,CAAC,CAAA,EAE3DA,EAAI+1C,EAAS4D,EAAc,IACpCh6C,EAAI,KAAK,KACP,KAAK,IAAIg6C,EAAc3iC,EAAI,EAAG,CAAC,EAC7B,KAAK,IAAIhX,GAAK+1C,EAAS4D,GAAc,CAAC,CAAA,GAGnC3iC,EAAI8+B,EAAQ6D,EAAc,IAC/B35C,EAAI25C,EACNh6C,EAAI,KAAK,KACP,KAAK,IAAIqX,GAAK8+B,EAAQ6D,GAAc,CAAC,EACnC,KAAK,IAAIA,EAAc35C,EAAI,EAAG,CAAC,CAAA,EAE1BA,EAAI+1C,EAAS4D,EAAc,IACpCh6C,EAAI,KAAK,KACP,KAAK,IAAIqX,GAAK8+B,EAAQ6D,GAAc,CAAC,EACnC,KAAK,IAAI35C,GAAK+1C,EAAS4D,GAAc,CAAC,CAAA,IAI1C,KAAK,MAAMh6C,CAAC,EAAIg6C,GAClB1C,EAAWC,CAAU,EAAI,IACdD,EAAAC,EAAa,CAAC,EAAI,IAClBD,EAAAC,EAAa,CAAC,EAAI,IAClBD,EAAAC,EAAa,CAAC,EACvBwC,GAAYR,EAAU,gBAAkB,MAAQ,EAAI,MAE3CjC,EAAAC,CAAU,EAAIlgB,EAAKkgB,CAAU,EACxCD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EACrCD,EAAAC,EAAa,CAAC,EACvBwC,GAAYR,EAAU,gBAAkB,MACpCliB,EAAKkgB,EAAa,CAAC,EACnB,IAEV,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,CAYO,SAAS6D,GACdC,EACA/D,EACAC,EACA8C,EACAC,EACAgB,EAAiB,IACN,CACL,MAAAC,EAAM,IAAI,MAChBA,EAAI,IAAMF,EACJ,MAAAlF,EAAS,SAAS,cAAc,QAAQ,EACxCxY,EAAMwY,EAAO,WAAW,IAAI,EAClC,OAAAA,EAAO,MAAQmF,EACfnF,EAAO,OAASmF,EACZ3d,EAAA,UAAU4d,EAAK,EAAG,EAAGjE,EAAOC,EAAQ,EAAG,EAAG8C,EAAUC,CAAS,EAC5C3c,EAAI,aAAa,EAAG,EAAG0c,EAAUC,CAAS,CAEjE,CAGgB,SAAAkB,GACdnF,EACAoF,EACW,CACX,KAAM,CAAE,KAAAjjB,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC1BigC,EAAAC,CAAU,EAAI,KAAK,IAC5B,KAAK,IAAIlgB,EAAKkgB,CAAU,EAAI+C,EAAW,GAAG,EAC1C,CAAA,EAEShD,EAAAC,EAAa,CAAC,EAAI,KAAK,IAChC,KAAK,IAAIlgB,EAAKkgB,EAAa,CAAC,EAAI+C,EAAW,GAAG,EAC9C,CAAA,EAEShD,EAAAC,EAAa,CAAC,EAAI,KAAK,IAChC,KAAK,IAAIlgB,EAAKkgB,EAAa,CAAC,EAAI+C,EAAW,GAAG,EAC9C,CAAA,EAEFhD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,CAGO,SAASmE,GACdrF,EACAtb,EACA4gB,EAAmB,GACR,CACX,KAAM,CAAE,KAAAnjB,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EACjCggB,EAAKkgB,EAAa,CAAC,IAAM,GAC3BD,EAAWC,CAAU,EAAI,IACdD,EAAAC,EAAa,CAAC,EAAI,IAClBD,EAAAC,EAAa,CAAC,EAAI,MAElBD,EAAAC,CAAU,EAAIlgB,EAAKkgB,CAAU,EACxCD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,GAE9C,IAAA56C,EAAI06B,EAAKkgB,EAAa,CAAC,EACvBiD,EACE79C,EAAA,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,IAAMi9B,CAAK,EAAG,GAAG,EAAG,CAAC,EAEtDj9B,EAAI,KAAK,IAAI,KAAK,IAAI,KAAK,MAAMA,EAAI,IAAMi9B,CAAK,EAAG,GAAG,EAAG,CAAC,EAEjD0d,EAAAC,EAAa,CAAC,EAAI56C,CAC/B,CAGK,OADc,IAAI,UAAU26C,EAAYnB,EAAOC,CAAM,CAE9D,CAGO,SAASqE,GACdvF,EACAwF,EACAtB,EACAC,EACW,CACX,KAAM,CAAE,KAAAhiB,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1B,CACJ,KAAMyF,EACN,MAAOC,EACP,OAAQC,CACN,EAAAH,EACJ,IAAIjB,EAAWL,EACXI,EAAYH,EACZD,EAAMyB,EAAkBzE,IAC1BqD,EAAWrD,EAASyE,GAElBxB,EAAOuB,EAAiBzE,IAC1BqD,EAAYrD,EAAQyE,GAEtB,MAAMtD,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAEnC,GAAAA,EAAImiC,GACJniC,EAAImiC,EAAYoB,GAChBv6C,GAAKo5C,GACLp5C,GAAKo5C,EAAWoB,EAELvD,EAAAC,CAAU,EAAIlgB,EAAKkgB,CAAU,EACxCD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,MAC3C,CACL,MAAMuD,GACHz6C,EAAI81C,EACH9+B,IACEoiC,EAAW,GAAKtD,GACf91C,GAAKo5C,EAAW,KAAOtD,EAAQyE,IAClCA,EACApB,EACA,GACF,EACIuB,EAA+C,CACnDJ,EAAcG,CAAmB,EACjCH,EAAcG,EAAsB,CAAC,EACrCH,EAAcG,EAAsB,CAAC,EACrCH,EAAcG,EAAsB,CAAC,CAAA,EAEjCE,EAA+C,CACnD3jB,EAAKkgB,CAAU,EACflgB,EAAKkgB,EAAa,CAAC,EACnBlgB,EAAKkgB,EAAa,CAAC,EACnBlgB,EAAKkgB,EAAa,CAAC,CAAA,EAEf0D,EAAajC,GAAY+B,EAAYC,CAAU,EAC1C1D,EAAAC,CAAU,EAAI0D,EAAW,CAAC,EACrC3D,EAAWC,EAAa,CAAC,EAAI0D,EAAW,CAAC,EACzC3D,EAAWC,EAAa,CAAC,EAAI0D,EAAW,CAAC,EACzC3D,EAAWC,EAAa,CAAC,EAAI0D,EAAW,CAAC,CAC3C,CACF,CAGK,OADc,IAAI,UAAU3D,EAAYnB,EAAOC,CAAM,CAE9D,CAYO,SAAS8E,GACdhG,EACAiG,EACAC,EACAhC,EACAC,EACAgC,EAAa,GACF,CACX,KAAM,CAAE,KAAAhkB,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAChC,IAAIsE,EAAYH,EACZI,EAAWL,EACXM,EAAayB,EACbxB,EAAcyB,EACd5B,EAAY,EACFA,EAAA,EACHA,EAAYrD,IACTqD,EAAArD,GAEVsD,EAAW,EACFA,EAAA,EACFA,EAAWrD,IACTqD,EAAArD,GAETsD,EAAa,EACFA,EAAA,EACJA,EAAavD,IACTuD,EAAAvD,GAEXwD,EAAc,EACFA,EAAA,EACLA,EAAcvD,IACTuD,EAAAvD,GAEZoD,EAAYE,EAAavD,IAC3BuD,EAAavD,EAAQqD,GAEnBC,EAAWE,EAAcvD,IAC3BuD,EAAcvD,EAASqD,GAGzB,MAAMnC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAEnC,GAAAA,GAAKmiC,GACLniC,GAAKmiC,EAAYE,GACjBr5C,GAAKo5C,GACLp5C,GAAKo5C,EAAWE,EAChB,CACA,MAAM2B,EAAY,KAAK,OAAOjkC,EAAImiC,GAAa6B,CAAU,EACnDE,EAAY,KAAK,OAAOl7C,EAAIo5C,GAAY4B,CAAU,EACxD,IAAIG,EAAkB,KAAK,MACzBH,GAAcC,EAAY,GAAKD,EAAa,EAAI7B,CAAA,EAE9CiC,EAAkB,KAAK,MACzBJ,GAAcE,EAAY,GAAKF,EAAa,EAAI5B,CAAA,EAE9C+B,EAAkBrF,EAAQ,IAC5BqF,EAAkBrF,EAAQ,GAExBsF,EAAkBrF,EAAS,IAC7BqF,EAAkBrF,EAAS,GAEvB,MAAAsF,GACHD,EAAkBtF,EAAQqF,GAAmB,EACrClE,EAAAC,CAAU,EAAIlgB,EAAKqkB,CAAmB,EACjDpE,EAAWC,EAAa,CAAC,EAAIlgB,EAAKqkB,EAAsB,CAAC,EACzDpE,EAAWC,EAAa,CAAC,EAAIlgB,EAAKqkB,EAAsB,CAAC,EACzDpE,EAAWC,EAAa,CAAC,EAAIlgB,EAAKqkB,EAAsB,CAAC,CAAA,MAE9CpE,EAAAC,CAAU,EAAIlgB,EAAKkgB,CAAU,EACxCD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAEpD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,CAyCgB,SAAAuF,GACdC,EACAC,EACA9mB,EAGI,CACF,gBAAiB,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAC5C,gBAAiB,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,CAC5C,EACW,CACX,GAAI8mB,GAAe9mB,EAAS,CAC1B,KAAM,CAAE,KAAAsC,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWwF,EAC1B,CAAE,KAAME,CAAW,EAAAD,EACnBvE,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EAC9C,CAAE,gBAAA0kB,EAAiB,gBAAAC,CAAoB,EAAAjnB,EAC7C,QAAS10B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EAC/B7Z,EAAIs+C,EAAOvE,CAAU,EACrB,EAAIuE,EAAOvE,EAAa,CAAC,EACzB9gC,EAAIqlC,EAAOvE,EAAa,CAAC,EACzB56C,EAAIm/C,EAAOvE,EAAa,CAAC,EAE7B/5C,IAAMu+C,EAAgB,GACtB,IAAMA,EAAgB,GACtBtlC,IAAMslC,EAAgB,GACtBp/C,IAAMo/C,EAAgB,GACtBC,EAAgB,IAAM,GAEX1E,EAAAC,CAAU,EAAIyE,EAAgB,EAC9B1E,EAAAC,EAAa,CAAC,EAAIyE,EAAgB,EAClC1E,EAAAC,EAAa,CAAC,EAAIyE,EAAgB,EAClC1E,EAAAC,EAAa,CAAC,EAAIyE,EAAgB,IAElC1E,EAAAC,CAAU,EAAIlgB,EAAKkgB,CAAU,EACxCD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAChDD,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,EAEpD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,CACO,OAAAwF,CACT,CAGA,SAAShD,GAAkB1D,EAAsB+G,EAA6B,CAC5E,KAAM,CAAE,KAAA5kB,EAAM,MAAA8e,EAAO,OAAAC,CAAA,EAAWlB,EAC1BoC,EAAa,IAAI,kBAAkBjgB,EAAK,MAAM,EACpD,QAASh3B,EAAI,EAAGA,EAAI+1C,EAAQ/1C,IAC1B,QAASgX,EAAI,EAAGA,EAAI8+B,EAAO9+B,IAAK,CACxB,MAAAkgC,GAAcl3C,EAAI81C,EAAQ9+B,GAAK,EACrC,QAAShgB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMynC,EAAQyY,EAAalgD,EACvBggB,IAAM,GAAKA,IAAM8+B,EAAQ,GAAK91C,IAAM,GAAKA,IAAM+1C,EAAS,EAC/CkB,EAAAxY,CAAK,EAAIzH,EAAKyH,CAAK,EAE9BwY,EAAWxY,CAAK,EACdmd,EAAO,CAAC,EAAI5kB,EAAKyH,EAAQqX,EAAQ,EAAI,CAAC,EACtC8F,EAAO,CAAC,EAAI5kB,EAAKyH,EAAQqX,EAAQ,CAAC,EAClC8F,EAAO,CAAC,EAAI5kB,EAAKyH,EAAQqX,EAAQ,EAAI,CAAC,EACtC8F,EAAO,CAAC,EAAI5kB,EAAKyH,EAAQ,CAAC,EAC1Bmd,EAAO,CAAC,EAAI5kB,EAAKyH,CAAK,EACtBmd,EAAO,CAAC,EAAI5kB,EAAKyH,EAAQ,CAAC,EAC1Bmd,EAAO,CAAC,EAAI5kB,EAAKyH,EAAQqX,EAAQ,EAAI,CAAC,EACtC8F,EAAO,CAAC,EAAI5kB,EAAKyH,EAAQqX,EAAQ,CAAC,EAClC8F,EAAO,CAAC,EAAI5kB,EAAKyH,EAAQqX,EAAQ,EAAI,CAAC,CAE5C,CACAmB,EAAWC,EAAa,CAAC,EAAIlgB,EAAKkgB,EAAa,CAAC,CAClD,CAGK,OADc,IAAI,UAAUD,EAAYnB,EAAOC,CAAM,CAE9D,CAGA,SAAS4C,GACP+B,EACAC,EACA,CACA,GACED,GACAA,EAAW,SAAW,GACtBC,GACAA,EAAW,SAAW,EACtB,CACM,MAAAkB,EAASnB,EAAW,CAAC,EACrBoB,EAASnB,EAAW,CAAC,EACvB,GAAAkB,IAAW,KAAOC,IAAW,EACxB,OAAApB,EACT,GAAWmB,IAAW,EACb,OAAAlB,EACF,CACL,MAAMoB,EAAmBF,EAAS,IAC5BG,EAAmBF,EAAS,IAC5BG,EAAY,KAAK,IACrB,KAAK,IACH,KAAK,MACHvB,EAAW,CAAC,EAAIqB,EACdpB,EAAW,CAAC,EAAIqB,GAAoB,EAAID,EAC5C,EACA,GACF,EACA,CAAA,EAEIG,EAAY,KAAK,IACrB,KAAK,IACH,KAAK,MACHxB,EAAW,CAAC,EAAIqB,EACdpB,EAAW,CAAC,EAAIqB,GAAoB,EAAID,EAC5C,EACA,GACF,EACA,CAAA,EAEII,EAAY,KAAK,IACrB,KAAK,IACH,KAAK,MACHzB,EAAW,CAAC,EAAIqB,EACdpB,EAAW,CAAC,EAAIqB,GAAoB,EAAID,EAC5C,EACA,GACF,EACA,CAAA,EAEIK,EAAY,KAAK,IACrB,KAAK,IACH,KAAK,OACFL,EAAmBC,GAAoB,EAAID,IAAqB,GACnE,EACA,GACF,EACA,CAAA,EAEF,MAAO,CAACE,EAAWC,EAAWC,EAAWC,CAAS,CACpD,CACF,CACA,MAAO,CAAC,IAAK,IAAK,IAAK,GAAG,CAC5B,CCpwCa,MAAAC,GAAwB,UAAY,CAC/C,MAAMC,EAAmB,CAAA,EAElB,MAAA,CACL,UAAUlmC,EAAG,CACJkmC,EAAA,KAAKlmC,EAAI,GAAI,CACtB,EACA,WAAWpf,EAAG,CACZ,KAAK,UAAUA,CAAC,EACX,KAAA,UAAUA,IAAM,CAAC,CACxB,EACA,WAAWulD,EAAIC,EAAM,EAAGhG,EAAM+F,EAAG,OAAQ,CACvC,QAASvlD,EAAI,EAAGA,EAAIw/C,EAAKx/C,IACvB,KAAK,UAAUulD,EAAGvlD,EAAIwlD,CAAG,CAAC,CAE9B,EACA,YAAY1kD,EAAG,CACb,QAASd,EAAI,EAAGw/C,EAAM1+C,EAAE,OAAQd,EAAIw/C,EAAKx/C,IACvC,KAAK,UAAUc,EAAE,WAAWd,CAAC,CAAC,CAElC,EACA,aAAc,CACL,OAAAslD,CACT,EACA,UAAW,CACT,IAAIxkD,EAAI,IACR,QAASd,EAAI,EAAGw/C,EAAM8F,EAAO,OAAQtlD,EAAIw/C,EAAKx/C,IACxCA,EAAI,IACDc,GAAA,KAEPA,GAAKwkD,EAAOtlD,CAAC,EAEV,OAAAc,GAAA,IACEA,CACT,CAAA,CAEJ,EAEa2kD,GAA2B,UAAY,CAClD,IAAIhY,EAAU,EACViY,EAAU,EACVC,EAAU,EACVC,EAAU,GAER,MAAAC,EAAS,SAAUl4C,EAAW,CAClC,GAAI,EAAAA,EAAI,GAER,IAAWA,EAAI,GACb,MAAO,IAAOA,EAChB,GAAWA,EAAI,GACb,MAAO,KAAQA,EAAI,IACrB,GAAWA,EAAI,GACb,MAAO,KAAQA,EAAI,IACrB,GAAWA,GAAK,GACP,MAAA,IACT,GAAWA,GAAK,GACP,MAAA,IAEH,MAAA,IAAI,MAAM,KAAOA,CAAC,CAAA,EAGpBm4C,EAAe,SAAU1mC,EAAW,CACxCwmC,GAAW,OAAO,aAAaC,EAAOzmC,EAAI,EAAI,CAAC,CAAA,EAG1C,MAAA,CACL,UAAUzR,EAAG,CAIX,IAHW8/B,EAAAA,GAAW,EAAM9/B,EAAI,IACrB+3C,GAAA,EACAC,GAAA,EACJD,GAAW,GACHI,EAAArY,IAAaiY,EAAU,CAAE,EAC3BA,GAAA,CAEf,EACA,OAAQ,CAMF,GALAA,EAAU,IACCI,EAAArY,GAAY,EAAIiY,CAAQ,EAC3BjY,EAAA,EACAiY,EAAA,GAERC,EAAU,GAAK,EAAG,CAEd,MAAAI,EAAS,EAAKJ,EAAU,EAC9B,QAAS3lD,EAAI,EAAGA,EAAI+lD,EAAQ/lD,IACf4lD,GAAA,GAEf,CACF,EACA,UAAW,CACF,OAAAA,CACT,CAAA,CAEJ,EAEaI,GAAW,SACtBC,EACAC,EACAC,EACA,CACA,MAAMC,EAAQ,IAAI,MAAMH,EAAOA,CAAI,EAE7BI,EAAkB,SAAUC,EAA4B,CAC5D,MAAMC,EAAOD,EACb,IAAIE,EAAa,EACbC,EAAa,EAEV,MAAA,CACL,MAAMzmB,EAAchF,EAAgB,CAC9B,GAAAgF,IAAShF,EACL,MAAA,IAAI,MAAM,aAAa,EAGxB,KAAAwrB,EAAaxrB,GAAU,GAC5BurB,EAAK,UAAU,KAASvmB,GAAQwmB,EAAcC,EAAW,EACzDzrB,GAAU,EAAIwrB,EACdxmB,KAAU,EAAIwmB,EACDC,EAAA,EACAD,EAAA,EAGfC,EAAczmB,GAAQwmB,EAAcC,EACpCD,EAAaA,EAAaxrB,CAC5B,EAEA,OAAQ,CACFwrB,EAAa,GACfD,EAAK,UAAUE,CAAU,CAE7B,CAAA,CACF,EAGIC,EAAe,SAAUC,EAAwB,CACrD,MAAMC,EAAY,GAAKD,EACjBE,GAAW,GAAKF,GAAkB,EACxC,IAAIG,EAAYH,EAAiB,EAGjC,MAAMI,EAAQC,IAEd,QAAShnD,EAAI,EAAGA,EAAI4mD,EAAW5mD,IAC7B+mD,EAAM,IAAI,OAAO,aAAa/mD,CAAC,CAAC,EAElC+mD,EAAM,IAAI,OAAO,aAAaH,CAAS,CAAC,EACxCG,EAAM,IAAI,OAAO,aAAaF,CAAO,CAAC,EAEtC,MAAMI,EAAU5B,KACV6B,EAASb,EAAgBY,CAAO,EAG/BC,EAAA,MAAMN,EAAWE,CAAS,EAEjC,IAAIK,EAAY,EAEZrmD,EAAI,OAAO,aAAaslD,EAAMe,CAAS,CAAC,EAGrC,IAFMA,GAAA,EAENA,EAAYf,EAAM,QAAQ,CAC/B,MAAM19C,EAAI,OAAO,aAAa09C,EAAMe,CAAS,CAAC,EACjCA,GAAA,EAETJ,EAAM,SAASjmD,EAAI4H,CAAC,EACtB5H,EAAIA,EAAI4H,GAERw+C,EAAO,MAAMH,EAAM,QAAQjmD,CAAC,EAAGgmD,CAAS,EAEpCC,EAAM,KAAK,EAAI,OACbA,EAAM,QAAU,GAAKD,IACVA,GAAA,GAGTC,EAAA,IAAIjmD,EAAI4H,CAAC,GAGb5H,EAAA4H,EAER,CAEA,OAAAw+C,EAAO,MAAMH,EAAM,QAAQjmD,CAAC,EAAGgmD,CAAS,EAGjCI,EAAA,MAAML,EAASC,CAAS,EAE/BI,EAAO,MAAM,EAEND,EAAQ,aAAY,EAGvBD,EAAW,UAAY,CAC3B,MAAMI,EAA+B,CAAA,EACrC,IAAIC,EAAQ,EAEL,MAAA,CACL,IAAI5kB,EAAa,CACX,GAAA,KAAK,SAASA,CAAG,EACb,MAAA,IAAI,MAAM,WAAaA,CAAG,EAElC2kB,EAAK3kB,CAAG,EAAI4kB,EACHA,GAAA,CACX,EAEA,MAAO,CACE,OAAAA,CACT,EAEA,QAAQ5kB,EAAa,CACnB,OAAO2kB,EAAK3kB,CAAG,CACjB,EAEA,SAASA,EAAa,CACb,OAAA,OAAO2kB,EAAK3kB,CAAG,EAAK,GAC7B,CAAA,CACF,EAGK,MAAA,CACL,SAASziB,EAAWhX,EAAWs+C,EAAe,CACtClB,EAAAp9C,EAAIi9C,EAAOjmC,CAAC,EAAIsnC,CACxB,EACA,MAAMhB,EAA4B,CAEhCA,EAAI,YAAY,QAAQ,EAGxBA,EAAI,WAAWL,CAAI,EACnBK,EAAI,WAAWL,CAAI,EAEnBK,EAAI,UAAU,GAAI,EAClBA,EAAI,UAAU,CAAC,EACfA,EAAI,UAAU,CAAC,EAKXA,EAAA,UAAUiB,GAAoB,KAAOrB,EAAW,CAAC,EAAIA,EAAW,CAAC,CAAC,CAAC,EACnEI,EAAA,UAAUiB,GAAoB,KAAOrB,EAAW,CAAC,EAAIA,EAAW,CAAC,CAAC,CAAC,EACnEI,EAAA,UAAUiB,GAAoB,KAAOrB,EAAW,CAAC,EAAIA,EAAW,CAAC,CAAC,CAAC,EAGnEI,EAAA,UAAUiB,GAAoB,KAAOpB,EAAW,CAAC,EAAIA,EAAW,CAAC,CAAC,CAAC,EACnEG,EAAA,UAAUiB,GAAoB,KAAOpB,EAAW,CAAC,EAAIA,EAAW,CAAC,CAAC,CAAC,EACnEG,EAAA,UAAUiB,GAAoB,KAAOpB,EAAW,CAAC,EAAIA,EAAW,CAAC,CAAC,CAAC,EAGvEG,EAAI,YAAY,GAAG,EACnBA,EAAI,WAAW,CAAC,EAChBA,EAAI,WAAW,CAAC,EAChBA,EAAI,WAAWL,CAAI,EACnBK,EAAI,WAAWL,CAAI,EACnBK,EAAI,UAAU,CAAC,EAKf,MAAMK,EAAiB,EACjBa,EAASd,EAAaC,CAAc,EAE1CL,EAAI,UAAUK,CAAc,EAE5B,IAAIc,EAAS,EAEN,KAAAD,EAAO,OAASC,EAAS,KAC9BnB,EAAI,UAAU,GAAG,EACbA,EAAA,WAAWkB,EAAQC,EAAQ,GAAG,EACxBA,GAAA,IAGRnB,EAAA,UAAUkB,EAAO,OAASC,CAAM,EACpCnB,EAAI,WAAWkB,EAAQC,EAAQD,EAAO,OAASC,CAAM,EACrDnB,EAAI,UAAU,CAAI,EAGlBA,EAAI,YAAY,GAAG,CACrB,CAAA,CAEJ,EAEaoB,GAAkB,SAC7BzB,EACAC,EACAC,EACAwB,EACA,CACA,MAAMC,EAAM5B,GAASC,EAAMC,EAAYC,CAAU,EAEjD,QAASn9C,EAAI,EAAGA,EAAIi9C,EAAMj9C,IACxB,QAASgX,EAAI,EAAGA,EAAIimC,EAAMjmC,IACxB4nC,EAAI,SAAS5nC,EAAGhX,EAAG2+C,EAAS3nC,EAAGhX,CAAC,CAAC,EAIrC,MAAMoW,EAAIimC,KACVuC,EAAI,MAAMxoC,CAAC,EAEX,MAAMyoC,EAASpC,KACT9oB,EAAQvd,EAAE,cAChB,QAASpf,EAAI,EAAGw/C,EAAM7iB,EAAM,OAAQ38B,EAAIw/C,EAAKx/C,IACpC6nD,EAAA,UAAUlrB,EAAM38B,CAAC,CAAC,EAE3B6nD,EAAO,MAAM,EAEb,IAAI9E,EAAM,GACH,OAAAA,GAAA,yBACAA,GAAA8E,EAEA9E,CACT,ECjUM+E,GAAS,CACb,YAAa,EACb,eAAgB,EAChB,eAAgB,EAChB,WAAY,CACd,EAEMC,GAAsB,CAC1B,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,CACL,EAEMC,GAAgB,CACpB,WAAY,EACZ,WAAY,EACZ,WAAY,EACZ,WAAY,EACZ,WAAY,EACZ,WAAY,EACZ,WAAY,EACZ,WAAY,CACd,EAEMC,GAAS,CACb,KAAM,SAAUt6C,EAAW,CACzB,GAAIA,EAAI,EACN,MAAM,IAAI,MAAM,QAAUA,EAAI,GAAG,EAE5B,OAAAs6C,GAAO,UAAUt6C,CAAC,CAC3B,EACA,KAAM,SAAUA,EAAW,CACzB,KAAOA,EAAI,GACJA,GAAA,IAEP,KAAOA,GAAK,KACLA,GAAA,IAEA,OAAAs6C,GAAO,UAAUt6C,CAAC,CAC3B,EACA,UAAW,IAAI,MAAM,GAAG,EACxB,UAAW,IAAI,MAAM,GAAG,CAC1B,EAEA,QAAS3N,EAAI,EAAGA,EAAI,EAAGA,IACdioD,GAAA,UAAUjoD,CAAC,EAAI,GAAKA,EAE7B,QAASA,EAAI,EAAGA,EAAI,IAAKA,IAChBioD,GAAA,UAAUjoD,CAAC,EAChBioD,GAAO,UAAUjoD,EAAI,CAAC,EACtBioD,GAAO,UAAUjoD,EAAI,CAAC,EACtBioD,GAAO,UAAUjoD,EAAI,CAAC,EACtBioD,GAAO,UAAUjoD,EAAI,CAAC,EAE1B,QAASA,EAAI,EAAGA,EAAI,IAAKA,IACvBioD,GAAO,UAAUA,GAAO,UAAUjoD,CAAC,CAAC,EAAIA,EAG1C,MAAMkoD,GAAS,CACb,uBAAwB,CACtB,CAAC,EACD,CAAC,EAAG,EAAE,EACN,CAAC,EAAG,EAAE,EACN,CAAC,EAAG,EAAE,EACN,CAAC,EAAG,EAAE,EACN,CAAC,EAAG,EAAE,EACN,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,GAAI,EAAE,EACd,CAAC,EAAG,GAAI,GAAI,EAAE,EACd,CAAC,EAAG,GAAI,GAAI,EAAE,EACd,CAAC,EAAG,GAAI,GAAI,EAAE,EACd,CAAC,EAAG,GAAI,GAAI,EAAE,EACd,CAAC,EAAG,GAAI,GAAI,EAAE,EACd,CAAC,EAAG,GAAI,GAAI,EAAE,EACd,CAAC,EAAG,GAAI,GAAI,GAAI,EAAE,EAClB,CAAC,EAAG,GAAI,GAAI,GAAI,EAAE,EAClB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAG,EACnB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAG,EACnB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAG,EACnB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAG,EACnB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAG,EACnB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAG,EACvB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,GAAG,EACxB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,GAAG,EACxB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,GAAG,EACxB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,GAAG,EACxB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,GAAG,EACxB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,GAAG,EACxB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,GAAG,EAC7B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,GAAG,EAC7B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,GAAG,EAC7B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,GAAG,EAC7B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,GAAG,EAC7B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,GAAG,CAC/B,EAEA,IACG,KACH,IACG,KAQH,SAAW,MAEX,eAAgB,SAAUloB,EAAc,CACtC,IAAIpoB,EAAIooB,GAAQ,GACT,KAAAkoB,GAAO,YAAYtwC,CAAC,EAAIswC,GAAO,YAAYA,GAAO,GAAG,GAAK,GAE7DtwC,GAAAswC,GAAO,KAAQA,GAAO,YAAYtwC,CAAC,EAAIswC,GAAO,YAAYA,GAAO,GAAG,EAE/D,OAAAloB,GAAQ,GAAMpoB,GAAKswC,GAAO,QACrC,EAEA,iBAAkB,SAAUloB,EAAc,CACxC,IAAIpoB,EAAIooB,GAAQ,GACT,KAAAkoB,GAAO,YAAYtwC,CAAC,EAAIswC,GAAO,YAAYA,GAAO,GAAG,GAAK,GAE7DtwC,GAAAswC,GAAO,KAAQA,GAAO,YAAYtwC,CAAC,EAAIswC,GAAO,YAAYA,GAAO,GAAG,EAExE,OAAQloB,GAAQ,GAAMpoB,CACxB,EAEA,YAAa,SAAUooB,EAAc,CACnC,IAAImoB,EAAQ,EAEZ,KAAOnoB,GAAQ,GACbmoB,IACUnoB,KAAA,EAGL,OAAAmoB,CACT,EAEA,mBAAoB,SAAUC,EAAoB,CACzC,OAAAF,GAAO,uBAAuBE,EAAa,CAAC,CACrD,EAEA,QAAS,SAAUC,EAAqBroD,EAAWkmB,EAAW,CAC5D,OAAQmiC,EAAa,CACnB,KAAKL,GAAc,WACT,OAAAhoD,EAAIkmB,GAAK,GAAK,EACxB,KAAK8hC,GAAc,WACjB,OAAOhoD,EAAI,GAAK,EAClB,KAAKgoD,GAAc,WACjB,OAAO9hC,EAAI,GAAK,EAClB,KAAK8hC,GAAc,WACT,OAAAhoD,EAAIkmB,GAAK,GAAK,EACxB,KAAK8hC,GAAc,WACT,OAAA,KAAK,MAAMhoD,EAAI,CAAC,EAAI,KAAK,MAAMkmB,EAAI,CAAC,GAAK,GAAK,EACxD,KAAK8hC,GAAc,WACjB,OAAShoD,EAAIkmB,EAAK,EAAOlmB,EAAIkmB,EAAK,GAAM,EAC1C,KAAK8hC,GAAc,WACjB,OAAUhoD,EAAIkmB,EAAK,EAAOlmB,EAAIkmB,EAAK,GAAM,GAAK,EAChD,KAAK8hC,GAAc,WACjB,OAAUhoD,EAAIkmB,EAAK,GAAOlmB,EAAIkmB,GAAK,GAAM,GAAK,EAEhD,QACQ,MAAA,IAAI,MAAM,mBAAqBmiC,CAAW,CACpD,CACF,EAEA,0BAA2B,SAAUC,EAA4B,CAC/D,IAAIhjD,EAAI,IAAIijD,GAAa,CAAC,CAAC,EAAG,CAAC,EAE/B,QAASvoD,EAAI,EAAGA,EAAIsoD,EAAoBtoD,IACtCsF,EAAIA,EAAE,SAAS,IAAIijD,GAAa,CAAC,EAAGN,GAAO,KAAKjoD,CAAC,CAAC,EAAG,CAAC,CAAC,EAGlD,OAAAsF,CACT,EAEA,gBAAiB,SAAU23C,EAAczf,EAAc,CACjD,GAAA,GAAKA,GAAQA,EAAO,GAGtB,OAAQyf,EAAM,CACZ,KAAK6K,GAAO,YACH,MAAA,IACT,KAAKA,GAAO,eACH,MAAA,GACT,KAAKA,GAAO,eACH,MAAA,GACT,KAAKA,GAAO,WACH,MAAA,GACT,QACQ,MAAA,IAAI,MAAM,QAAU7K,CAAI,CAClC,SACSzf,EAAO,GAGhB,OAAQyf,EAAM,CACZ,KAAK6K,GAAO,YACH,MAAA,IACT,KAAKA,GAAO,eACH,MAAA,IACT,KAAKA,GAAO,eACH,MAAA,IACT,KAAKA,GAAO,WACH,MAAA,IACT,QACQ,MAAA,IAAI,MAAM,QAAU7K,CAAI,CAClC,SACSzf,EAAO,GAGhB,OAAQyf,EAAM,CACZ,KAAK6K,GAAO,YACH,MAAA,IACT,KAAKA,GAAO,eACH,MAAA,IACT,KAAKA,GAAO,eACH,MAAA,IACT,KAAKA,GAAO,WACH,MAAA,IACT,QACQ,MAAA,IAAI,MAAM,QAAU7K,CAAI,CAClC,KAEM,OAAA,IAAI,MAAM,QAAUzf,CAAI,CAElC,EAEA,aAAc,SAAUgrB,EAAgB,CAChC,MAAAC,EAAcD,EAAO,iBAE3B,IAAIE,EAAY,EAIhB,QAASC,EAAM,EAAGA,EAAMF,EAAaE,IACnC,QAASC,EAAM,EAAGA,EAAMH,EAAaG,IAAO,CAC1C,IAAIC,EAAY,EAChB,MAAMC,EAAON,EAAO,OAAOG,EAAKC,CAAG,EAEnC,QAASziD,EAAI,GAAIA,GAAK,EAAGA,IACvB,GAAI,EAAAwiD,EAAMxiD,EAAI,GAAKsiD,GAAeE,EAAMxiD,GAIxC,QAASuC,EAAI,GAAIA,GAAK,EAAGA,IACnBkgD,EAAMlgD,EAAI,GAAK+/C,GAAeG,EAAMlgD,GAIpCvC,GAAK,GAAKuC,GAAK,GAIfogD,GAAQN,EAAO,OAAOG,EAAMxiD,EAAGyiD,EAAMlgD,CAAC,GACxCmgD,IAKFA,EAAY,IACdH,GAAa,EAAIG,EAAY,EAEjC,CAKF,QAASF,EAAM,EAAGA,EAAMF,EAAc,EAAGE,IACvC,QAASC,EAAM,EAAGA,EAAMH,EAAc,EAAGG,IAAO,CAC9C,IAAIG,EAAQ,EACRP,EAAO,OAAOG,EAAKC,CAAG,GAAGG,IACzBP,EAAO,OAAOG,EAAM,EAAGC,CAAG,GAAGG,IAC7BP,EAAO,OAAOG,EAAKC,EAAM,CAAC,GAAGG,IAC7BP,EAAO,OAAOG,EAAM,EAAGC,EAAM,CAAC,GAAGG,KACjCA,GAAS,GAAKA,GAAS,KACZL,GAAA,EAEjB,CAKF,QAASC,EAAM,EAAGA,EAAMF,EAAaE,IACnC,QAASC,EAAM,EAAGA,EAAMH,EAAc,EAAGG,IAErCJ,EAAO,OAAOG,EAAKC,CAAG,GACtB,CAACJ,EAAO,OAAOG,EAAKC,EAAM,CAAC,GAC3BJ,EAAO,OAAOG,EAAKC,EAAM,CAAC,GAC1BJ,EAAO,OAAOG,EAAKC,EAAM,CAAC,GAC1BJ,EAAO,OAAOG,EAAKC,EAAM,CAAC,GAC1B,CAACJ,EAAO,OAAOG,EAAKC,EAAM,CAAC,GAC3BJ,EAAO,OAAOG,EAAKC,EAAM,CAAC,IAEbF,GAAA,IAKnB,QAASE,EAAM,EAAGA,EAAMH,EAAaG,IACnC,QAASD,EAAM,EAAGA,EAAMF,EAAc,EAAGE,IAErCH,EAAO,OAAOG,EAAKC,CAAG,GACtB,CAACJ,EAAO,OAAOG,EAAM,EAAGC,CAAG,GAC3BJ,EAAO,OAAOG,EAAM,EAAGC,CAAG,GAC1BJ,EAAO,OAAOG,EAAM,EAAGC,CAAG,GAC1BJ,EAAO,OAAOG,EAAM,EAAGC,CAAG,GAC1B,CAACJ,EAAO,OAAOG,EAAM,EAAGC,CAAG,GAC3BJ,EAAO,OAAOG,EAAM,EAAGC,CAAG,IAEbF,GAAA,IAOnB,IAAIM,EAAY,EAEhB,QAASJ,EAAM,EAAGA,EAAMH,EAAaG,IACnC,QAASD,EAAM,EAAGA,EAAMF,EAAaE,IAC/BH,EAAO,OAAOG,EAAKC,CAAG,GACxBI,IAKA,MAAAC,EACJ,KAAK,IAAK,IAAMD,EAAaP,EAAcA,EAAc,EAAE,EAAI,EACjE,OAAAC,GAAaO,EAAQ,GAEdP,CACT,CACF,EAEA,MAAMH,EAAa,CACjB,IAEA,YAAY5sB,EAAeutB,EAAe,CACpC,GAAAvtB,EAAI,QAAU,KAChB,MAAM,IAAI,MAAMA,EAAI,OAAS,IAAMutB,CAAK,EAE1C,IAAIzB,EAAS,EACb,KAAOA,EAAS9rB,EAAI,QAAUA,EAAI8rB,CAAM,GAAK,GAC3CA,IAEF,KAAK,IAAM,IAAI,MAAM9rB,EAAI,OAAS8rB,EAASyB,CAAK,EAChD,QAASlpD,EAAI,EAAGA,EAAI27B,EAAI,OAAS8rB,EAAQznD,IACvC,KAAK,IAAIA,CAAC,EAAI27B,EAAI37B,EAAIynD,CAAM,CAEhC,CAEA,IAAIhgB,EAAe,CACV,OAAA,KAAK,IAAIA,CAAK,CACvB,CAEA,WAAY,CACV,OAAO,KAAK,IAAI,MAClB,CAEA,SAAS,EAAiB,CAClB,MAAA9L,EAAM,IAAI,MAAM,KAAK,UAAc,EAAA,EAAE,YAAc,CAAC,EAE1D,QAAS37B,EAAI,EAAGA,EAAI,KAAK,UAAA,EAAaA,IACpC,QAASkmB,EAAI,EAAGA,EAAI,EAAE,UAAA,EAAaA,IAC7ByV,EAAA37B,EAAIkmB,CAAC,GAAK+hC,GAAO,KACnBA,GAAO,KAAK,KAAK,IAAIjoD,CAAC,CAAC,EAAIioD,GAAO,KAAK,EAAE,IAAI/hC,CAAC,CAAC,CAAA,EAK9C,OAAA,IAAIqiC,GAAa5sB,EAAK,CAAC,CAChC,CAEA,IAAI,EAA+B,CACjC,GAAI,KAAK,UAAU,EAAI,EAAE,UAAA,EAAc,EAC9B,OAAA,KAGT,MAAMstB,EAAQhB,GAAO,KAAK,KAAK,IAAI,CAAC,CAAC,EAAIA,GAAO,KAAK,EAAE,IAAI,CAAC,CAAC,EAEvDtsB,EAAM,IAAI,MAAM,KAAK,UAAW,CAAA,EAEtC,QAAS37B,EAAI,EAAGA,EAAI,KAAK,UAAA,EAAaA,IACpC27B,EAAI37B,CAAC,EAAI,KAAK,IAAIA,CAAC,EAGrB,QAASA,EAAI,EAAGA,EAAI,EAAE,UAAA,EAAaA,IAC7B27B,EAAA37B,CAAC,GAAKioD,GAAO,KAAKA,GAAO,KAAK,EAAE,IAAIjoD,CAAC,CAAC,EAAIipD,CAAK,EAIrD,OAAO,IAAIV,GAAa5sB,EAAK,CAAC,EAAE,IAAI,CAAC,CACvC,CACF,CAEA,MAAMwtB,EAAU,CACd,WACA,UAEA,YAAYC,EAAoBC,EAAmB,CACjD,KAAK,WAAaD,EAClB,KAAK,UAAYC,CACnB,CAEA,OAAO,eAAiB,CAOtB,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,CAAC,EAGT,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EAGV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EAGV,CAAC,EAAG,IAAK,EAAE,EACX,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,CAAC,EAGT,CAAC,EAAG,IAAK,GAAG,EACZ,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EAGrB,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EAGV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,EAAE,EACV,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EAGrB,CAAC,EAAG,IAAK,EAAE,EACX,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EAGrB,CAAC,EAAG,IAAK,GAAG,EACZ,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EAGrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EAGrB,CAAC,EAAG,IAAK,EAAE,EACX,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EAGrB,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,EAAE,EACvB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EAGrB,CAAC,EAAG,IAAK,GAAG,EACZ,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAGtB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAGtB,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,EAAE,EACvB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,GAAI,GAAI,EAAE,EAGX,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,EAAE,EACvB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAGtB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAGtB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,EAAE,EACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAGtB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAGtB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,GAAI,GAAI,EAAE,EACX,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAGtB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,GAAI,GAAI,EAAE,EACX,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,EAAE,EAGX,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAGtB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAC1B,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAGtB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,GAAG,EAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EACzB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,GAAG,EAC1B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,GAAI,IAAK,GAAG,EACb,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAC1B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAC1B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAGtB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAC1B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,GAAG,EAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAGtB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAC1B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,GAAG,EAC1B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAC1B,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGvB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAC1B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAA,EAGzB,OAAO,YAAYjB,EAAoBkB,EAA2B,CAChE,MAAMC,EAAUJ,GAAU,gBAAgBf,EAAYkB,CAAiB,EAEvE,GAAIC,GAAW,KACb,MAAM,IAAI,MACR,6BACEnB,EACA,sBACAkB,CAAA,EAIA,MAAAtuB,EAASuuB,EAAQ,OAAS,EAE1BC,EAAO,CAAA,EAEb,QAASxpD,EAAI,EAAGA,EAAIg7B,EAAQh7B,IAAK,CAC/B,MAAM+oD,EAAQQ,EAAQvpD,EAAI,EAAI,CAAC,EACzBopD,EAAaG,EAAQvpD,EAAI,EAAI,CAAC,EAC9BqpD,EAAYE,EAAQvpD,EAAI,EAAI,CAAC,EAEnC,QAASkmB,EAAI,EAAGA,EAAI6iC,EAAO7iC,IACzBsjC,EAAK,KAAK,IAAIL,GAAUC,EAAYC,CAAS,CAAC,CAElD,CAEO,OAAAG,CACT,CAEA,OAAO,gBAAgBpB,EAAoBkB,EAA2B,CACpE,OAAQA,EAAmB,CACzB,KAAKvB,GAAoB,EACvB,OAAOoB,GAAU,gBAAgBf,EAAa,GAAK,EAAI,CAAC,EAC1D,KAAKL,GAAoB,EACvB,OAAOoB,GAAU,gBAAgBf,EAAa,GAAK,EAAI,CAAC,EAC1D,KAAKL,GAAoB,EACvB,OAAOoB,GAAU,gBAAgBf,EAAa,GAAK,EAAI,CAAC,EAC1D,KAAKL,GAAoB,EACvB,OAAOoB,GAAU,gBAAgBf,EAAa,GAAK,EAAI,CAAC,EAC1D,QACS,MACX,CACF,CACF,CAEA,MAAMqB,EAAY,CAChB,OACA,OAEA,aAAc,CACZ,KAAK,OAAS,GACd,KAAK,OAAS,CAChB,CAEA,IAAIhiB,EAAe,CACjB,MAAMiiB,EAAW,KAAK,MAAMjiB,EAAQ,CAAC,EACrC,OAAS,KAAK,OAAOiiB,CAAQ,IAAO,EAAKjiB,EAAQ,EAAO,IAAM,CAChE,CAEA,IAAI9L,EAAaX,EAAgB,CAC/B,QAASh7B,EAAI,EAAGA,EAAIg7B,EAAQh7B,IAC1B,KAAK,QAAS27B,IAASX,EAASh7B,EAAI,EAAM,IAAM,CAAC,CAErD,CAEA,iBAAkB,CAChB,OAAO,KAAK,MACd,CAEA,OAAO2pD,EAAc,CACnB,MAAMD,EAAW,KAAK,MAAM,KAAK,OAAS,CAAC,EACvC,KAAK,OAAO,QAAUA,GACnB,KAAA,OAAO,KAAK,CAAC,EAGhBC,IACF,KAAK,OAAOD,CAAQ,GAAK,MAAS,KAAK,OAAS,GAG7C,KAAA,QACP,CACF,CAEA,MAAME,EAAW,CACf,KACA,KACA,YAAY5pB,EAAc,CACxB,KAAK,KAAO8nB,GAAO,eACnB,KAAK,KAAO9nB,CACd,CACA,WAAY,CACV,OAAO,KAAK,KAAK,MACnB,CAEA,MAAMuU,EAAqB,CAChB,QAAAv0C,EAAI,EAAGw/C,EAAM,KAAK,KAAK,OAAQx/C,EAAIw/C,EAAKx/C,IAE/Cu0C,EAAO,IAAI,KAAK,KAAK,WAAWv0C,CAAC,EAAG,CAAC,CAEzC,CACF,CAEO,MAAM6pD,EAAO,CAClB,OAAO,KAAO,IACd,OAAO,KAAO,GAEd,WACA,kBACA,QACA,YACA,UACA,SAEA,YACEzB,EACAkB,EACA,CACA,KAAK,WAAalB,EACb,KAAA,kBAAoBL,GAAoBuB,CAAiB,EAC9D,KAAK,QAAU,GACf,KAAK,YAAc,EACnB,KAAK,UAAY,KACjB,KAAK,SAAW,EAClB,CAEA,QAAQtpB,EAAc,CACd,MAAA8pB,EAAU,IAAIF,GAAW5pB,CAAI,EAC9B,KAAA,SAAS,KAAK8pB,CAAO,EAC1B,KAAK,UAAY,IACnB,CAEA,OAAOnB,EAAaC,EAAa,CAE7B,GAAAD,EAAM,GACN,KAAK,aAAeA,GACpBC,EAAM,GACN,KAAK,aAAeA,EAEpB,MAAM,IAAI,MAAMD,EAAM,IAAMC,CAAG,EAEjC,OAAO,KAAK,QAAQD,CAAG,EAAEC,CAAG,CAC9B,CAEA,gBAAiB,CACf,OAAO,KAAK,WACd,CAEA,MAAO,CAED,GAAA,KAAK,WAAa,EAAG,CACvB,IAAIR,EAAa,EACjB,IAAKA,EAAa,EAAGA,EAAa,GAAIA,IAAc,CAClD,MAAM2B,EAAWZ,GAAU,YACzBf,EACA,KAAK,iBAAA,EAGD7T,EAAS,IAAIkV,GACnB,IAAIO,EAAiB,EACrB,QAAS,EAAI,EAAG,EAAID,EAAS,OAAQ,IACjBC,GAAAD,EAAS,CAAC,EAAE,UAGhC,QAAS,EAAI,EAAG,EAAI,KAAK,SAAS,OAAQ,IAAK,CACvC,MAAA/pB,EAAO,KAAK,SAAS,CAAC,EACrBuU,EAAA,IAAIvU,EAAK,KAAM,CAAC,EAChBuU,EAAA,IACLvU,EAAK,UAAU,EACfkoB,GAAO,gBAAgBloB,EAAK,KAAMooB,CAAU,CAAA,EAE9CpoB,EAAK,MAAMuU,CAAM,CACnB,CACI,GAAAA,EAAO,mBAAqByV,EAAiB,EAAG,KACtD,CACA,KAAK,WAAa5B,CACpB,CACA,KAAK,SAAS,GAAO,KAAK,mBAAoB,CAAA,CAChD,CAEA,SAAS6B,EAAe5B,EAAqB,CACtC,KAAA,YAAc,KAAK,WAAa,EAAI,GACzC,KAAK,QAAU,IAAI,MAAM,KAAK,WAAW,EAEzC,QAASM,EAAM,EAAGA,EAAM,KAAK,YAAaA,IAAO,CAC/C,KAAK,QAAQA,CAAG,EAAI,IAAI,MAAM,KAAK,WAAW,EAE9C,QAASC,EAAM,EAAGA,EAAM,KAAK,YAAaA,IACxC,KAAK,QAAQD,CAAG,EAAEC,CAAG,EAAI,IAE7B,CAEK,KAAA,0BAA0B,EAAG,CAAC,EACnC,KAAK,0BAA0B,KAAK,YAAc,EAAG,CAAC,EACtD,KAAK,0BAA0B,EAAG,KAAK,YAAc,CAAC,EACtD,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACnB,KAAA,cAAcqB,EAAM5B,CAAW,EAEhC,KAAK,YAAc,GACrB,KAAK,gBAAgB4B,CAAI,EAGvB,KAAK,WAAa,OACpB,KAAK,UAAYJ,GAAO,WACtB,KAAK,WACL,KAAK,kBACL,KAAK,QAAA,GAIJ,KAAA,QAAQ,KAAK,UAAWxB,CAAW,CAC1C,CAEA,0BAA0BM,EAAaC,EAAa,CAClD,QAAS,EAAI,GAAI,GAAK,EAAG,IACvB,GAAI,EAAAD,EAAM,GAAK,IAAM,KAAK,aAAeA,EAAM,GAE/C,QAASjgD,EAAI,GAAIA,GAAK,EAAGA,IACnBkgD,EAAMlgD,GAAK,IAAM,KAAK,aAAekgD,EAAMlgD,IAG5C,GAAK,GAAK,GAAK,IAAMA,GAAK,GAAKA,GAAK,IACpC,GAAKA,GAAKA,GAAK,IAAM,GAAK,GAAK,GAAK,IACpC,GAAK,GAAK,GAAK,GAAK,GAAKA,GAAKA,GAAK,EAEpC,KAAK,QAAQigD,EAAM,CAAC,EAAEC,EAAMlgD,CAAC,EAAI,GAEjC,KAAK,QAAQigD,EAAM,CAAC,EAAEC,EAAMlgD,CAAC,EAAI,GAIzC,CAEA,oBAAqB,CACnB,IAAIwhD,EAAe,EACfC,EAAU,EAEd,QAASnqD,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACrB,KAAA,SAAS,GAAMA,CAAC,EAEf,MAAA0oD,EAAYR,GAAO,aAAa,IAAI,GAEtCloD,GAAK,GAAKkqD,EAAexB,KACZwB,EAAAxB,EACLyB,EAAAnqD,EAEd,CAEO,OAAAmqD,CACT,CAEA,gBACEC,EAWAC,EACAC,EACA,CACA,MAAMC,EAAQH,EAAU,qBAAqBC,EAAeC,CAAK,EAC3DE,EAAK,EAEX,KAAK,KAAK,EAEV,QAAS7B,EAAM,EAAGA,EAAM,KAAK,QAAQ,OAAQA,IAAO,CAClD,MAAM3/C,EAAI2/C,EAAM6B,EAEP,QAAA5B,EAAM,EAAGA,EAAM,KAAK,QAAQD,CAAG,EAAE,OAAQC,IAAO,CACvD,MAAM5oC,EAAI4oC,EAAM4B,EACH,KAAK,QAAQ7B,CAAG,EAAEC,CAAG,IAG1B2B,EAAA,UAAU,EAAG,GAAG,EAChBA,EAAA,OAAOvqC,EAAGhX,CAAC,EACXuhD,EAAA,OAAOvqC,EAAIwqC,EAAIxhD,CAAC,EACtBuhD,EAAM,OAAOvqC,EAAIwqC,EAAIxhD,EAAIwhD,CAAE,EACrBD,EAAA,OAAOvqC,EAAGhX,EAAIwhD,CAAE,EACtBD,EAAM,QAAQ,EAElB,CACF,CAEO,OAAAA,CACT,CAEA,oBAAqB,CACnB,QAASpkD,EAAI,EAAGA,EAAI,KAAK,YAAc,EAAGA,IACpC,KAAK,QAAQA,CAAC,EAAE,CAAC,GAAK,OAG1B,KAAK,QAAQA,CAAC,EAAE,CAAC,EAAIA,EAAI,GAAK,GAGhC,QAASuC,EAAI,EAAGA,EAAI,KAAK,YAAc,EAAGA,IACpC,KAAK,QAAQ,CAAC,EAAEA,CAAC,GAAK,OAG1B,KAAK,QAAQ,CAAC,EAAEA,CAAC,EAAIA,EAAI,GAAK,EAElC,CAEA,4BAA6B,CAC3B,MAAM+hD,EAAMvC,GAAO,mBAAmB,KAAK,UAAU,EAErD,QAASloD,EAAI,EAAGA,EAAIyqD,EAAI,OAAQzqD,IAC9B,QAASkmB,EAAI,EAAGA,EAAIukC,EAAI,OAAQvkC,IAAK,CAC7B,MAAAyiC,EAAM8B,EAAIzqD,CAAC,EACX4oD,EAAM6B,EAAIvkC,CAAC,EAEjB,GAAI,KAAK,QAAQyiC,CAAG,EAAEC,CAAG,GAAK,KAI9B,QAASziD,EAAI,GAAIA,GAAK,EAAGA,IACvB,QAASuC,EAAI,GAAIA,GAAK,EAAGA,IACnBvC,GAAK,IAAMA,GAAK,GAAKuC,GAAK,IAAMA,GAAK,GAAMvC,GAAK,GAAKuC,GAAK,EAC5D,KAAK,QAAQigD,EAAMxiD,CAAC,EAAEyiD,EAAMlgD,CAAC,EAAI,GAEjC,KAAK,QAAQigD,EAAMxiD,CAAC,EAAEyiD,EAAMlgD,CAAC,EAAI,EAIzC,CAEJ,CAEA,gBAAgBuhD,EAAe,CAC7B,MAAMS,EAAOxC,GAAO,iBAAiB,KAAK,UAAU,EAEpD,QAASloD,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MAAM2qD,EAAM,CAACV,IAAUS,GAAQ1qD,EAAK,IAAM,EAC1C,KAAK,QAAQ,KAAK,MAAMA,EAAI,CAAC,CAAC,EAAGA,EAAI,EAAK,KAAK,YAAc,EAAI,CAAC,EAAI2qD,CACxE,CAEA,QAAS3qD,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MAAM2qD,EAAM,CAACV,IAAUS,GAAQ1qD,EAAK,IAAM,EAC1C,KAAK,QAASA,EAAI,EAAK,KAAK,YAAc,EAAI,CAAC,EAAE,KAAK,MAAMA,EAAI,CAAC,CAAC,EAAI2qD,CACxE,CACF,CAEA,cAAcV,EAAe5B,EAAqB,CAC1C,MAAAroB,EAAQ,KAAK,mBAAqB,EAAKqoB,EACvCqC,EAAOxC,GAAO,eAAeloB,CAAI,EAGvC,QAAS,EAAI,EAAG,EAAI,GAAI,IAAK,CAC3B,MAAM2qB,EAAM,CAACV,IAAUS,GAAQ,EAAK,IAAM,EAEtC,EAAI,EACN,KAAK,QAAQ,CAAC,EAAE,CAAC,EAAIC,EACZ,EAAI,EACb,KAAK,QAAQ,EAAI,CAAC,EAAE,CAAC,EAAIA,EAEzB,KAAK,QAAQ,KAAK,YAAc,GAAK,CAAC,EAAE,CAAC,EAAIA,CAEjD,CAGA,QAAS,EAAI,EAAG,EAAI,GAAI,IAAK,CAC3B,MAAMA,EAAM,CAACV,IAAUS,GAAQ,EAAK,IAAM,EAEtC,EAAI,EACN,KAAK,QAAQ,CAAC,EAAE,KAAK,YAAc,EAAI,CAAC,EAAIC,EACnC,EAAI,EACb,KAAK,QAAQ,CAAC,EAAE,GAAK,EAAI,EAAI,CAAC,EAAIA,EAElC,KAAK,QAAQ,CAAC,EAAE,GAAK,EAAI,CAAC,EAAIA,CAElC,CAGA,KAAK,QAAQ,KAAK,YAAc,CAAC,EAAE,CAAC,EAAI,CAACV,CAC3C,CAEA,QAAQjqB,EAAgBqoB,EAAqB,CAC3C,IAAIuC,EAAM,GACNjC,EAAM,KAAK,YAAc,EACzBkC,EAAW,EACXC,EAAY,EAEhB,QAASlC,EAAM,KAAK,YAAc,EAAGA,EAAM,EAAGA,GAAO,EAInD,IAHIA,GAAO,GAAGA,MAGD,CACX,QAAS,EAAI,EAAG,EAAI,EAAG,IACrB,GAAI,KAAK,QAAQD,CAAG,EAAEC,EAAM,CAAC,GAAK,KAAM,CACtC,IAAIE,EAAO,GAEPgC,EAAY9qB,EAAK,SACnB8oB,GAAS9oB,EAAK8qB,CAAS,IAAMD,EAAY,IAAM,GAGpC3C,GAAO,QAAQG,EAAaM,EAAKC,EAAM,CAAC,IAGnDE,EAAO,CAACA,GAGV,KAAK,QAAQH,CAAG,EAAEC,EAAM,CAAC,EAAIE,EAC7B+B,IAEIA,GAAY,KACdC,IACWD,EAAA,EAEf,CAKF,GAFOlC,GAAAiC,EAEHjC,EAAM,GAAK,KAAK,aAAeA,EAAK,CAC/BA,GAAAiC,EACPA,EAAM,CAACA,EACP,KACF,CACF,CAEJ,CAEA,OAAO,WACLxC,EACAkB,EACAyB,EACA,CACA,MAAMhB,EAAWZ,GAAU,YAAYf,EAAYkB,CAAiB,EAE9D/U,EAAS,IAAIkV,GAEnB,QAASzpD,EAAI,EAAGA,EAAI+qD,EAAS,OAAQ/qD,IAAK,CAClC,MAAAggC,EAAO+qB,EAAS/qD,CAAC,EAChBu0C,EAAA,IAAIvU,EAAK,KAAM,CAAC,EAChBuU,EAAA,IACLvU,EAAK,UAAU,EACfkoB,GAAO,gBAAgBloB,EAAK,KAAMooB,CAAU,CAAA,EAE9CpoB,EAAK,MAAMuU,CAAM,CACnB,CAGA,IAAIyV,EAAiB,EACrB,QAAShqD,EAAI,EAAGA,EAAI+pD,EAAS,OAAQ/pD,IACjBgqD,GAAAD,EAAS/pD,CAAC,EAAE,UAGhC,GAAIu0C,EAAO,kBAAoByV,EAAiB,EAC9C,MAAM,IAAI,MACR,0BACEzV,EAAO,gBAAA,EACP,IACAyV,EAAiB,EACjB,GAAA,EAUN,IALIzV,EAAO,gBAAA,EAAoB,GAAKyV,EAAiB,GAC5CzV,EAAA,IAAI,EAAG,CAAC,EAIVA,EAAO,kBAAoB,GAAK,GACrCA,EAAO,OAAO,EAAK,EAKrB,KACM,EAAAA,EAAO,mBAAqByV,EAAiB,IAG1CzV,EAAA,IAAIsV,GAAO,KAAM,CAAC,EAErBtV,EAAO,mBAAqByV,EAAiB,KAG1CzV,EAAA,IAAIsV,GAAO,KAAM,CAAC,EAGpB,OAAAA,GAAO,YAAYtV,EAAQwV,CAAQ,CAC5C,CAEA,OAAO,YAAYxV,EAAqBwV,EAAuB,CAC7D,IAAItC,EAAS,EAETuD,EAAa,EACbC,EAAa,EAEjB,MAAMC,EAAS,IAAI,MAAMnB,EAAS,MAAM,EAClCoB,EAAS,IAAI,MAAMpB,EAAS,MAAM,EAExC,QAAS5jD,EAAI,EAAGA,EAAI4jD,EAAS,OAAQ5jD,IAAK,CAClC,MAAAilD,EAAUrB,EAAS5jD,CAAC,EAAE,UACtBklD,EAAUtB,EAAS5jD,CAAC,EAAE,WAAailD,EAE5BJ,EAAA,KAAK,IAAIA,EAAYI,CAAO,EAC5BH,EAAA,KAAK,IAAIA,EAAYI,CAAO,EAEzCH,EAAO/kD,CAAC,EAAI,IAAI,MAAMilD,CAAO,EAE7B,QAASprD,EAAI,EAAGA,EAAIkrD,EAAO/kD,CAAC,EAAE,OAAQnG,IAC7BkrD,EAAA/kD,CAAC,EAAEnG,CAAC,EAAI,IAAOu0C,EAAO,OAAOv0C,EAAIynD,CAAM,EAEtCA,GAAA2D,EAEJ,MAAAE,EAASpD,GAAO,0BAA0BmD,CAAO,EAGjDE,EAFU,IAAIhD,GAAa2C,EAAO/kD,CAAC,EAAGmlD,EAAO,YAAc,CAAC,EAE1C,IAAIA,CAAM,EAClCH,EAAOhlD,CAAC,EAAI,IAAI,MAAMmlD,EAAO,UAAA,EAAc,CAAC,EAC5C,QAAStrD,EAAI,EAAGA,EAAImrD,EAAOhlD,CAAC,EAAE,OAAQnG,IAAK,CACzC,MAAMwrD,EAAWxrD,EAAIurD,EAAQ,UAAc,EAAAJ,EAAOhlD,CAAC,EAAE,OAC9CglD,EAAAhlD,CAAC,EAAEnG,CAAC,EAAIwrD,GAAY,EAAID,EAAQ,IAAIC,CAAQ,EAAI,CACzD,CACF,CAEA,IAAIC,EAAiB,EACrB,QAASzrD,EAAI,EAAGA,EAAI+pD,EAAS,OAAQ/pD,IACjByrD,GAAA1B,EAAS/pD,CAAC,EAAE,WAG1B,MAAAggC,EAAO,IAAI,MAAMyrB,CAAc,EACrC,IAAIhkB,EAAQ,EAEZ,QAASznC,EAAI,EAAGA,EAAIgrD,EAAYhrD,IAC9B,QAASmG,EAAI,EAAGA,EAAI4jD,EAAS,OAAQ5jD,IAC/BnG,EAAIkrD,EAAO/kD,CAAC,EAAE,SAChB65B,EAAKyH,GAAO,EAAIyjB,EAAO/kD,CAAC,EAAEnG,CAAC,GAKjC,QAASA,EAAI,EAAGA,EAAIirD,EAAYjrD,IAC9B,QAASmG,EAAI,EAAGA,EAAI4jD,EAAS,OAAQ5jD,IAC/BnG,EAAImrD,EAAOhlD,CAAC,EAAE,SAChB65B,EAAKyH,GAAO,EAAI0jB,EAAOhlD,CAAC,EAAEnG,CAAC,GAK1B,OAAAggC,CACT,CACF,CAGA,MAAM0rB,GAAQ,KAAK,KACbC,GAAQ,KAAK,MACbC,GAAQ,KAAK,MAGH,SAAAC,GACdC,EACApuB,EAOA,CACM,MAAAquB,EAAMC,GAASF,CAAI,EACvBG,EAAMvuB,GAAS,KAAO,IACtBuoB,EAAOvoB,GAAS,MAAQ,IACxB0qB,EAAa,GACb8D,EAAUxuB,GAAS,SAAW,EAC9BwoB,EAAaxoB,GAAS,OAAS,UAC/ByoB,EAAazoB,GAAS,YAAc,UAGhCyuB,EAAS,IAAItC,GAAOzB,EAAY6D,CAAG,EACzCE,EAAO,QAAQJ,CAAG,EAClBI,EAAO,KAAK,EAGZ,MAAMpD,EAAQoD,EAAO,iBACnBrN,GAASmH,EAAOiG,EAAU,GAAKnD,EAE3BqD,EAAMF,EACVpM,EAAMmG,EAAOiG,EAEf,OAAOxE,GAAgBzB,EAAMC,EAAYC,EAAY,SAAUnmC,EAAGhX,EAAG,CACnE,GAAIojD,GAAOpsC,GAAKA,EAAI8/B,GAAOsM,GAAOpjD,GAAKA,EAAI82C,EAAK,CAC9C,MAAMp3C,EAAIijD,IAAO3rC,EAAIosC,GAAOtN,CAAK,EAC3B34C,EAAIwlD,IAAO3iD,EAAIojD,GAAOtN,CAAK,EACjC,OAAOqN,EAAO,OAAOhmD,EAAGuC,CAAC,EAAI,EAAI,CAAA,KAE1B,OAAA,EACT,CACD,CACH,CAGgB,SAAA2jD,GACdP,EACApuB,EAUA,CACA,MAAM1d,EAAI0d,EAAQ,GAAK,EACrB10B,EAAI00B,EAAQ,GAAK,EACjBquB,EAAMC,GAASF,CAAI,EACnB3mB,EAAMzH,EAAQ,IACduuB,EAAMvuB,EAAQ,KAAO,IACrBuoB,EAAO,OAAOvoB,EAAQ,MAAS,SAAWiuB,GAAMjuB,EAAQ,IAAI,EAAI,IAChEwuB,EAAUxuB,EAAQ,SAAW,EAC7B0qB,EAAa,GACblC,EAAaxoB,EAAQ,OAAS,UAC9ByoB,EAAazoB,EAAQ,YAAc,UAG/ByuB,EAAS,IAAItC,GAAOzB,EAAY6D,CAAG,EACzCE,EAAO,QAAQJ,CAAG,EAClBI,EAAO,KAAK,EAGZ,MAAMpD,EAAQoD,EAAO,iBACnBrN,GAASmH,EAAOiG,EAAU,GAAKnD,EAGjC5jB,EAAI,UAAYghB,EAChBhhB,EAAI,SAASnlB,EAAGhX,EAAGi9C,EAAMA,CAAI,EAG7B,QAAS0C,EAAM,EAAGA,EAAMI,EAAOJ,IAC7B,QAASC,EAAM,EAAGA,EAAMG,EAAOH,IAAO,CAC9B,MAAAr/C,EAAImiD,IAAO9C,EAAM,GAAK9J,CAAK,EAAI6M,GAAM/C,EAAM9J,CAAK,EAChDj2C,EAAI6iD,IAAO/C,EAAM,GAAK7J,CAAK,EAAI6M,GAAMhD,EAAM7J,CAAK,EAEtD3Z,EAAI,UAAYgnB,EAAO,OAAOxD,EAAKC,CAAG,EAAI1C,EAAaC,EAEnDhhB,EAAA,SACFnlB,EAAI4rC,GAAMhD,EAAM9J,CAAK,EAAIoN,EACzBljD,EAAI4iD,GAAMjD,EAAM7J,CAAK,EAAIoN,EACzB3iD,EACAV,CAAA,CAEJ,CAEJ,CCzxCO,MAAMyjD,EAAQ,CACnB,EAAI,EACJ,EAAI,EAEJ,YAAYtsC,EAAI,EAAGhX,EAAI,EAAG,CACxB,KAAK,EAAIgX,EACT,KAAK,EAAIhX,CACX,CAEA,IAAI,OAAQ,CACV,OAAO,KAAK,CACd,CAEA,IAAI,MAAMu5B,EAAe,CACvB,KAAK,EAAIA,CACX,CAEA,IAAI,QAAS,CACX,OAAO,KAAK,CACd,CAEA,IAAI,OAAOA,EAAe,CACxB,KAAK,EAAIA,CACX,CAEA,IAAIviB,EAAI,EAAGhX,EAAI,EAAG,CAChB,YAAK,EAAIgX,EACT,KAAK,EAAIhX,EACF,IACT,CAEA,UAAUujD,EAAgB,CACxB,YAAK,EAAIA,EACT,KAAK,EAAIA,EACF,IACT,CAEA,KAAKvsC,EAAW,CACd,YAAK,EAAIA,EACF,IACT,CAEA,KAAKhX,EAAW,CACd,YAAK,EAAIA,EACF,IACT,CAEA,aAAay+B,EAAelF,EAAe,CACzC,OAAQkF,EAAO,CACb,IAAK,GACH,KAAK,EAAIlF,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,QACQ,MAAA,IAAI,MAAM,0BAA4BkF,CAAK,CACrD,CACO,OAAA,IACT,CAEA,aAAaA,EAAe,CAC1B,OAAQA,EAAO,CACb,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,QACQ,MAAA,IAAI,MAAM,0BAA4BA,CAAK,CACrD,CACF,CAEA,KAAK9vB,EAAY,CACf,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACJ,IACT,CAEA,OAAQ,CACN,OAAO,IAAI20C,GAAQ,KAAK,EAAG,KAAK,CAAC,CACnC,CAKA,IAAI30C,EAAY,CACd,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,UAAU7W,EAAW,CACnB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CAEA,WAAWwE,EAAY8Z,EAAY,CAC5B,YAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACV,IACT,CAEA,gBAAgBzH,EAAY7W,EAAW,CAChC,YAAA,GAAK6W,EAAE,EAAI7W,EACX,KAAA,GAAK6W,EAAE,EAAI7W,EACT,IACT,CAGA,IAAI6W,EAAY,CACd,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,UAAU7W,EAAW,CACnB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CAEA,WAAWwE,EAAY8Z,EAAY,CAC5B,YAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACV,IACT,CAMA,SAASzH,EAAY,CACnB,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,eAAe40C,EAAgB,CAC7B,YAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CAEA,OAAO50C,EAAY,CACjB,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,aAAa40C,EAAgB,CACpB,OAAA,KAAK,eAAe,EAAIA,CAAM,CACvC,CAEA,aAAazjD,EAAY,CACvB,MAAMkX,EAAI,KAAK,EACThX,EAAI,KAAK,EACf,YAAK,EAAIF,EAAE,IAAMkX,EAAIlX,EAAE,IAAME,EAAIF,EAAE,IACnC,KAAK,EAAIA,EAAE,IAAMkX,EAAIlX,EAAE,IAAME,EAAIF,EAAE,IAC5B,IACT,CAEA,IAAI6O,EAAY,CACd,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CAEA,IAAIA,EAAY,CACd,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CAEA,MAAMy0C,EAActM,EAAc,CAChC,YAAK,EAAIxkB,GAAM,KAAK,EAAG8wB,EAAI,EAAGtM,EAAI,CAAC,EACnC,KAAK,EAAIxkB,GAAM,KAAK,EAAG8wB,EAAI,EAAGtM,EAAI,CAAC,EAC5B,IACT,CAEA,YAAY0M,EAAgBC,EAAgB,CAC1C,YAAK,EAAInxB,GAAM,KAAK,EAAGkxB,EAAQC,CAAM,EACrC,KAAK,EAAInxB,GAAM,KAAK,EAAGkxB,EAAQC,CAAM,EAC9B,IACT,CAEA,YAAYL,EAAatM,EAAa,CAC9B,MAAA9kB,EAAS,KAAK,SACpB,OAAO,KAAK,aAAaA,GAAU,CAAC,EAAE,eACpCM,GAAMN,EAAQoxB,EAAKtM,CAAG,CAAA,CAE1B,CAEA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CAEA,MAAO,CACL,YAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EAClB,IACT,CAEA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CAEA,aAAc,CACZ,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CAEA,QAAS,CACF,YAAA,EAAI,CAAC,KAAK,EACV,KAAA,EAAI,CAAC,KAAK,EACR,IACT,CAYA,IAAInoC,EAAY,CACd,OAAO,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CACnC,CAyBA,MAAMA,EAAY,CAChB,OAAO,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CACnC,CAGA,gBAAgBA,EAAY,CACpB,MAAA+0C,EAAc/0C,EAAE,WACtB,GAAI+0C,IAAgB,EACX,OAAA,KAAK,IAAI,EAAG,CAAC,EAEtB,MAAMH,EAAS50C,EAAE,IAAI,IAAI,EAAI+0C,EAC7B,OAAO,KAAK,KAAK/0C,CAAC,EAAE,eAAe40C,CAAM,CAC3C,CAGA,gBAAgB50C,EAAY,CAC1B,OAAAg1C,GAAI,KAAK,IAAI,EAAE,gBAAgBh1C,CAAC,EACzB,KAAK,IAAIg1C,EAAG,CACrB,CAMA,QAAS,CACA,OAAA,KAAK,KAAK,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAAC,CACpD,CAEA,UAAW,CACT,OAAO,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CACzC,CAEA,iBAAkB,CACT,OAAA,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,CAC3C,CAGA,WAAY,CACV,OAAO,KAAK,aAAa,KAAK,UAAY,CAAC,CAC7C,CAGA,OAAQ,CACC,OAAA,KAAK,MAAM,CAAC,KAAK,EAAG,CAAC,KAAK,CAAC,EAAI,KAAK,EAC7C,CAEA,QAAQh1C,EAAY,CACZ,MAAA+0C,EAAc,KAAK,KAAK,KAAK,WAAa/0C,EAAE,UAAU,EAC5D,GAAI+0C,IAAgB,EAClB,OAAO,KAAK,GAAK,EAEnB,MAAME,EAAQ,KAAK,IAAIj1C,CAAC,EAAI+0C,EAE5B,OAAO,KAAK,KAAKpxB,GAAMsxB,EAAO,GAAI,CAAC,CAAC,CACtC,CAEA,WAAWj1C,EAAY,CACrB,OAAO,KAAK,KAAK,KAAK,kBAAkBA,CAAC,CAAC,CAC5C,CAEA,kBAAkBA,EAAY,CACtB,MAAAk1C,EAAK,KAAK,EAAIl1C,EAAE,EAChBm1C,EAAK,KAAK,EAAIn1C,EAAE,EACf,OAAAk1C,EAAKA,EAAKC,EAAKA,CACxB,CAEA,oBAAoBn1C,EAAY,CAC9B,OAAO,KAAK,IAAI,KAAK,EAAIA,EAAE,CAAC,EAAI,KAAK,IAAI,KAAK,EAAIA,EAAE,CAAC,CACvD,CAEA,UAAUqjB,EAAgB,CACxB,OAAO,KAAK,UAAA,EAAY,eAAeA,CAAM,CAC/C,CAEA,KAAKrjB,EAAYo1C,EAAe,CAC9B,YAAK,IAAMp1C,EAAE,EAAI,KAAK,GAAKo1C,EAC3B,KAAK,IAAMp1C,EAAE,EAAI,KAAK,GAAKo1C,EACpB,IACT,CAEA,YAAYr4C,EAAa+F,EAAasyC,EAAe,CACnD,YAAK,EAAIr4C,EAAG,GAAK+F,EAAG,EAAI/F,EAAG,GAAKq4C,EAChC,KAAK,EAAIr4C,EAAG,GAAK+F,EAAG,EAAI/F,EAAG,GAAKq4C,EACzB,IACT,CAEA,OAAOp1C,EAAY,CACjB,OAAOA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,CACxC,CAEA,UAAUk5B,EAAiB4W,EAAS,EAAG,CAChC,YAAA,EAAI5W,EAAM4W,CAAM,EAChB,KAAA,EAAI5W,EAAM4W,EAAS,CAAC,EAClB,IACT,CAEA,QAAQ5W,EAAkB,GAAI4W,EAAS,EAAG,CAClC,OAAA5W,EAAA4W,CAAM,EAAI,KAAK,EACf5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,EAClB5W,CACT,CAQA,aAAamc,EAAiBC,EAAe,CACrC,MAAAvkD,EAAI,KAAK,IAAIukD,CAAK,EAClB,EAAI,KAAK,IAAIA,CAAK,EAClBjtC,EAAI,KAAK,EAAIgtC,EAAO,EACpBhkD,EAAI,KAAK,EAAIgkD,EAAO,EAC1B,YAAK,EAAIhtC,EAAItX,EAAIM,EAAI,EAAIgkD,EAAO,EAChC,KAAK,EAAIhtC,EAAI,EAAIhX,EAAIN,EAAIskD,EAAO,EACzB,IACT,CAEA,QAAS,CACF,YAAA,EAAI,KAAK,SACT,KAAA,EAAI,KAAK,SACP,IACT,CAEA,EAAE,OAAO,QAAQ,GAAI,CACnB,MAAM,KAAK,EACX,MAAM,KAAK,CACb,CACF,CAEO,MAAME,EAAQ,CACnB,EAAI,EACJ,EAAI,EACJ,EAAI,EAEJ,YAAYltC,EAAI,EAAGhX,EAAI,EAAG6I,EAAI,EAAG,CAC/B,KAAK,EAAImO,EACT,KAAK,EAAIhX,EACT,KAAK,EAAI6I,CACX,CAEA,IAAImO,EAAI,EAAGhX,EAAI,EAAG6I,EAAI,EAAG,CACvB,YAAK,EAAImO,EACT,KAAK,EAAIhX,EACT,KAAK,EAAI6I,EACF,IACT,CAEA,UAAU06C,EAAgB,CACxB,YAAK,EAAIA,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EACF,IACT,CAEA,KAAKvsC,EAAW,CACd,YAAK,EAAIA,EACF,IACT,CAEA,KAAKhX,EAAW,CACd,YAAK,EAAIA,EACF,IACT,CAEA,KAAK6I,EAAW,CACd,YAAK,EAAIA,EACF,IACT,CAEA,aAAa41B,EAAelF,EAAe,CACzC,OAAQkF,EAAO,CACb,IAAK,GACH,KAAK,EAAIlF,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,QACQ,MAAA,IAAI,MAAM,0BAA4BkF,CAAK,CACrD,CACO,OAAA,IACT,CAEA,aAAaA,EAAe,CAC1B,OAAQA,EAAO,CACb,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,QACQ,MAAA,IAAI,MAAM,0BAA4BA,CAAK,CACrD,CACF,CAEA,OAAQ,CACN,OAAO,IAAIylB,GAAQ,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,CAC3C,CAEA,KAAKv1C,EAAY,CACf,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACJ,IACT,CAEA,IAAIA,EAAY,CACd,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,UAAU7W,EAAW,CACnB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CAEA,WAAWwE,EAAY8Z,EAAY,CAC5B,YAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACV,IACT,CAEA,gBAAgBzH,EAAY7W,EAAW,CAChC,YAAA,GAAK6W,EAAE,EAAI7W,EACX,KAAA,GAAK6W,EAAE,EAAI7W,EACX,KAAA,GAAK6W,EAAE,EAAI7W,EACT,IACT,CAEA,IAAI6W,EAAY,CACd,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,UAAU7W,EAAW,CACnB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CAEA,WAAWwE,EAAY8Z,EAAY,CAC5B,YAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACV,IACT,CAEA,SAASzH,EAAY,CACnB,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,eAAe40C,EAAgB,CAC7B,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CAEA,gBAAgBjnD,EAAY8Z,EAAY,CACjC,YAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACV,IACT,CAUA,aAAatW,EAAY,CACvB,MAAMkX,EAAI,KAAK,EACThX,EAAI,KAAK,EACT6I,EAAI,KAAK,EACTlT,EAAImK,EAAE,MACP,YAAA,EAAInK,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,CAAC,EAAIkT,EACjC,KAAA,EAAIlT,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,CAAC,EAAIkT,EACjC,KAAA,EAAIlT,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,CAAC,EAAIkT,EAC/B,IACT,CAEA,kBAAkB/I,EAAY,CAC5B,OAAO,KAAK,aAAaA,CAAC,EAAE,UAAU,CACxC,CAEA,aAAaA,EAAY,CACvB,MAAMkX,EAAI,KAAK,EACThX,EAAI,KAAK,EACT6I,EAAI,KAAK,EACTlT,EAAImK,EAAE,MACNS,EAAI,GAAK5K,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,EAAE,EAAIkT,EAAIlT,EAAE,EAAE,GACrD,YAAK,GAAKA,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,CAAC,EAAIkT,EAAIlT,EAAE,EAAE,GAAK4K,EACpD,KAAK,GAAK5K,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,CAAC,EAAIkT,EAAIlT,EAAE,EAAE,GAAK4K,EACpD,KAAK,GAAK5K,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,EAAE,EAAIkT,EAAIlT,EAAE,EAAE,GAAK4K,EAC9C,IACT,CAkCA,mBAAmBT,EAAY,CAG7B,MAAMkX,EAAI,KAAK,EACThX,EAAI,KAAK,EACT6I,EAAI,KAAK,EACTlT,EAAImK,EAAE,MACP,YAAA,EAAInK,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,CAAC,EAAIkT,EACjC,KAAA,EAAIlT,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,CAAC,EAAIkT,EACjC,KAAA,EAAIlT,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,EAAE,EAAIkT,EAChC,KAAK,WACd,CAEA,OAAO8F,EAAY,CACjB,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,aAAa40C,EAAgB,CACpB,OAAA,KAAK,eAAe,EAAIA,CAAM,CACvC,CAEA,IAAI50C,EAAY,CACd,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CAEA,IAAIA,EAAY,CACd,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CAEA,MAAMy0C,EAActM,EAAc,CAEhC,YAAK,EAAIxkB,GAAM,KAAK,EAAG8wB,EAAI,EAAGtM,EAAI,CAAC,EACnC,KAAK,EAAIxkB,GAAM,KAAK,EAAG8wB,EAAI,EAAGtM,EAAI,CAAC,EACnC,KAAK,EAAIxkB,GAAM,KAAK,EAAG8wB,EAAI,EAAGtM,EAAI,CAAC,EAC5B,IACT,CAEA,YAAY0M,EAAgBC,EAAgB,CAC1C,YAAK,EAAInxB,GAAM,KAAK,EAAGkxB,EAAQC,CAAM,EACrC,KAAK,EAAInxB,GAAM,KAAK,EAAGkxB,EAAQC,CAAM,EACrC,KAAK,EAAInxB,GAAM,KAAK,EAAGkxB,EAAQC,CAAM,EAC9B,IACT,CAEA,YAAYL,EAAatM,EAAa,CAC9B,MAAA9kB,EAAS,KAAK,SACpB,OAAO,KAAK,aAAaA,GAAU,CAAC,EAAE,eACpCM,GAAMN,EAAQoxB,EAAKtM,CAAG,CAAA,CAE1B,CAEA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CAEA,MAAO,CACL,YAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EAClB,IACT,CAEA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CAEA,aAAc,CACZ,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CAEA,QAAS,CACF,YAAA,EAAI,CAAC,KAAK,EACV,KAAA,EAAI,CAAC,KAAK,EACV,KAAA,EAAI,CAAC,KAAK,EACR,IACT,CAEA,IAAInoC,EAAY,CACP,OAAA,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CAClD,CAEA,UAAW,CACF,OAAA,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAC3D,CAEA,QAAS,CACP,OAAO,KAAK,KAAK,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAAC,CACtE,CAEA,iBAAkB,CAChB,OAAO,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,CAC9D,CAEA,WAAY,CACV,OAAO,KAAK,aAAa,KAAK,UAAY,CAAC,CAC7C,CAEA,UAAUqjB,EAAgB,CACxB,OAAO,KAAK,UAAA,EAAY,eAAeA,CAAM,CAC/C,CAEA,KAAKrjB,EAAYo1C,EAAe,CAC9B,YAAK,IAAMp1C,EAAE,EAAI,KAAK,GAAKo1C,EAC3B,KAAK,IAAMp1C,EAAE,EAAI,KAAK,GAAKo1C,EAC3B,KAAK,IAAMp1C,EAAE,EAAI,KAAK,GAAKo1C,EACpB,IACT,CAEA,YAAYr4C,EAAa+F,EAAasyC,EAAe,CACnD,YAAK,EAAIr4C,EAAG,GAAK+F,EAAG,EAAI/F,EAAG,GAAKq4C,EAChC,KAAK,EAAIr4C,EAAG,GAAK+F,EAAG,EAAI/F,EAAG,GAAKq4C,EAChC,KAAK,EAAIr4C,EAAG,GAAK+F,EAAG,EAAI/F,EAAG,GAAKq4C,EACzB,IACT,CAEA,MAAMp1C,EAAY,CACT,OAAA,KAAK,aAAa,KAAMA,CAAC,CAClC,CAEA,aAAarS,EAAY8Z,EAAY,CACnC,MAAM+tC,EAAK7nD,EAAE,EACP8nD,EAAK9nD,EAAE,EACP+nD,EAAK/nD,EAAE,EACPgoD,EAAKluC,EAAE,EACPmuC,EAAKnuC,EAAE,EACPouC,EAAKpuC,EAAE,EACR,YAAA,EAAIguC,EAAKI,EAAKH,EAAKE,EACnB,KAAA,EAAIF,EAAKC,EAAKH,EAAKK,EACnB,KAAA,EAAIL,EAAKI,EAAKH,EAAKE,EACjB,IACT,CAGA,gBAAgB31C,EAAY,CACpB,MAAA+0C,EAAc/0C,EAAE,WACtB,GAAI+0C,IAAgB,EAClB,OAAO,KAAK,IAAI,EAAG,EAAG,CAAC,EAEzB,MAAMH,EAAS50C,EAAE,IAAI,IAAI,EAAI+0C,EAC7B,OAAO,KAAK,KAAK/0C,CAAC,EAAE,eAAe40C,CAAM,CAC3C,CAGA,gBAAgB50C,EAAY,CAC1B81C,OAAAA,GAAI,KAAK,IAAI,EAAE,gBAAgB91C,CAAC,EACzB,KAAK,IAAI81C,EAAG,CACrB,CAEA,eAAeC,EAAsB,CAG5B,OAAA,KAAK,gBAAgBA,CAAW,CACzC,CAEA,QAAQC,EAAiB,CAGvB,OAAO,KAAK,IAAIF,GAAI,KAAKE,CAAM,EAAE,eAAe,EAAI,KAAK,IAAIA,CAAM,CAAC,CAAC,CACvE,CAEA,QAAQh2C,EAAY,CACZ,MAAA+0C,EAAc,KAAK,KAAK,KAAK,WAAa/0C,EAAE,UAAU,EAC5D,GAAI+0C,IAAgB,EAClB,OAAO,KAAK,GAAK,EAEnB,MAAME,EAAQ,KAAK,IAAIj1C,CAAC,EAAI+0C,EAE5B,OAAO,KAAK,KAAKpxB,GAAMsxB,EAAO,GAAI,CAAC,CAAC,CACtC,CAEA,WAAWj1C,EAAY,CACrB,OAAO,KAAK,KAAK,KAAK,kBAAkBA,CAAC,CAAC,CAC5C,CAEA,kBAAkBA,EAAY,CACtB,MAAAk1C,EAAK,KAAK,EAAIl1C,EAAE,EAChBm1C,EAAK,KAAK,EAAIn1C,EAAE,EAChBi2C,EAAK,KAAK,EAAIj2C,EAAE,EACtB,OAAOk1C,EAAKA,EAAKC,EAAKA,EAAKc,EAAKA,CAClC,CAEA,oBAAoBj2C,EAAY,CAC9B,OACE,KAAK,IAAI,KAAK,EAAIA,EAAE,CAAC,EAAI,KAAK,IAAI,KAAK,EAAIA,EAAE,CAAC,EAAI,KAAK,IAAI,KAAK,EAAIA,EAAE,CAAC,CAE3E,CAyBA,uBAAuB7O,EAAY,CACjC,MAAMnK,EAAImK,EAAE,MACP,YAAA,EAAInK,EAAE,EAAE,EACR,KAAA,EAAIA,EAAE,EAAE,EACR,KAAA,EAAIA,EAAE,EAAE,EACN,IACT,CAEA,oBAAoBmK,EAAY,CAC9B,MAAM+kD,EAAK,KAAK,qBAAqB/kD,EAAG,CAAC,EAAE,SACrCglD,EAAK,KAAK,qBAAqBhlD,EAAG,CAAC,EAAE,SACrCilD,EAAK,KAAK,qBAAqBjlD,EAAG,CAAC,EAAE,SAC3C,YAAK,EAAI+kD,EACT,KAAK,EAAIC,EACT,KAAK,EAAIC,EACF,IACT,CAEA,qBAAqBjlD,EAAY2+B,EAAe,CAC9C,OAAO,KAAK,UAAU3+B,EAAE,MAAO2+B,EAAQ,CAAC,CAC1C,CAEA,qBAAqB3+B,EAAY2+B,EAAe,CAC9C,OAAO,KAAK,UAAU3+B,EAAE,MAAO2+B,EAAQ,CAAC,CAC1C,CAgBA,OAAO9vB,EAAY,CACV,OAAAA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,CAC1D,CAEA,UAAUk5B,EAAiB4W,EAAS,EAAG,CAChC,YAAA,EAAI5W,EAAM4W,CAAM,EAChB,KAAA,EAAI5W,EAAM4W,EAAS,CAAC,EACpB,KAAA,EAAI5W,EAAM4W,EAAS,CAAC,EAClB,IACT,CAEA,QAAQ5W,EAAkB,GAAI4W,EAAS,EAAG,CAClC,OAAA5W,EAAA4W,CAAM,EAAI,KAAK,EACf5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,EACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,EAClB5W,CACT,CASA,QAAS,CACF,YAAA,EAAI,KAAK,SACT,KAAA,EAAI,KAAK,SACT,KAAA,EAAI,KAAK,SACP,IACT,CAEA,iBAAkB,CAEhB,MAAM+b,EAAQ,KAAK,OAAO,EAAI,KAAK,GAAK,EAClC5pD,EAAI,KAAK,OAAO,EAAI,EAAI,EACxB0F,EAAI,KAAK,KAAK,EAAI1F,EAAIA,CAAC,EAC7B,YAAK,EAAI0F,EAAI,KAAK,IAAIkkD,CAAK,EAC3B,KAAK,EAAI5pD,EACT,KAAK,EAAI0F,EAAI,KAAK,IAAIkkD,CAAK,EACpB,IACT,CAEA,EAAE,OAAO,QAAQ,GAAI,CACnB,MAAM,KAAK,EACX,MAAM,KAAK,EACX,MAAM,KAAK,CACb,CACF,CAEO,MAAMoB,EAAQ,CACnB,EAAI,EACJ,EAAI,EACJ,EAAI,EACJ,EAAI,EAEJ,YAAYhuC,EAAI,EAAGhX,EAAI,EAAG6I,EAAI,EAAGtI,EAAI,EAAG,CACtC,KAAK,EAAIyW,EACT,KAAK,EAAIhX,EACT,KAAK,EAAI6I,EACT,KAAK,EAAItI,CACX,CAEA,IAAI,OAAQ,CACV,OAAO,KAAK,CACd,CAEA,IAAI,MAAMg5B,EAAO,CACf,KAAK,EAAIA,CACX,CAEA,IAAI,QAAS,CACX,OAAO,KAAK,CACd,CAEA,IAAI,OAAOA,EAAO,CAChB,KAAK,EAAIA,CACX,CAEA,IAAIviB,EAAI,EAAGhX,EAAI,EAAG6I,EAAI,EAAGtI,EAAI,EAAG,CAC9B,YAAK,EAAIyW,EACT,KAAK,EAAIhX,EACT,KAAK,EAAI6I,EACT,KAAK,EAAItI,EACF,IACT,CAEA,UAAUgjD,EAAgB,CACxB,YAAK,EAAIA,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EACF,IACT,CAEA,KAAKvsC,EAAW,CACd,YAAK,EAAIA,EACF,IACT,CAEA,KAAKhX,EAAW,CACd,YAAK,EAAIA,EACF,IACT,CAEA,KAAK6I,EAAW,CACd,YAAK,EAAIA,EACF,IACT,CAEA,KAAKtI,EAAW,CACd,YAAK,EAAIA,EACF,IACT,CAEA,aAAak+B,EAAelF,EAAe,CACzC,OAAQkF,EAAO,CACb,IAAK,GACH,KAAK,EAAIlF,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,QACQ,MAAA,IAAI,MAAM,0BAA4BkF,CAAK,CACrD,CACO,OAAA,IACT,CAEA,aAAaA,EAAe,CAC1B,OAAQA,EAAO,CACb,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,QACQ,MAAA,IAAI,MAAM,0BAA4BA,CAAK,CACrD,CACF,CAEA,OAAQ,CACC,OAAA,IAAIumB,GAAQ,KAAK,EAAG,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,CACnD,CAEA,KAAKr2C,EAAY,CACf,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACJ,IACT,CAEA,IAAIA,EAAY,CACd,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,UAAU7W,EAAW,CACnB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CAEA,WAAWwE,EAAY8Z,EAAY,CAC5B,YAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACV,IACT,CAEA,gBAAgBzH,EAAY7W,EAAW,CAChC,YAAA,GAAK6W,EAAE,EAAI7W,EACX,KAAA,GAAK6W,EAAE,EAAI7W,EACX,KAAA,GAAK6W,EAAE,EAAI7W,EACX,KAAA,GAAK6W,EAAE,EAAI7W,EACT,IACT,CAEA,IAAI6W,EAAY,CACd,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,UAAU7W,EAAW,CACnB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CAEA,WAAWwE,EAAY8Z,EAAY,CAC5B,YAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACZ,KAAA,EAAI9Z,EAAE,EAAI8Z,EAAE,EACV,IACT,CAEA,SAASzH,EAAY,CACnB,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,eAAe40C,EAAgB,CAC7B,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CAEA,aAAazjD,EAAY,CACvB,MAAMkX,EAAI,KAAK,EACThX,EAAI,KAAK,EACT6I,EAAI,KAAK,EACTtI,EAAI,KAAK,EACT5K,EAAImK,EAAE,MACZ,YAAK,EAAInK,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,CAAC,EAAIkT,EAAIlT,EAAE,EAAE,EAAI4K,EAClD,KAAK,EAAI5K,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,CAAC,EAAIkT,EAAIlT,EAAE,EAAE,EAAI4K,EAClD,KAAK,EAAI5K,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,EAAE,EAAIkT,EAAIlT,EAAE,EAAE,EAAI4K,EACnD,KAAK,EAAI5K,EAAE,CAAC,EAAIqhB,EAAIrhB,EAAE,CAAC,EAAIqK,EAAIrK,EAAE,EAAE,EAAIkT,EAAIlT,EAAE,EAAE,EAAI4K,EAC5C,IACT,CAEA,OAAOoO,EAAY,CACjB,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CAEA,aAAa40C,EAAgB,CACpB,OAAA,KAAK,eAAe,EAAIA,CAAM,CACvC,CAmBA,gCAAgCzjD,EAAY,CAGtC,IAAAmkD,EAAOjtC,EAAGhX,EAAG6I,EAGjB,MAAMkT,EAAKjc,EAAE,MACPmlD,EAAMlpC,EAAG,CAAC,EACVmpC,EAAMnpC,EAAG,CAAC,EACVopC,EAAMppC,EAAG,CAAC,EACVqpC,EAAMrpC,EAAG,CAAC,EACVspC,EAAMtpC,EAAG,CAAC,EACVupC,EAAMvpC,EAAG,CAAC,EACVwpC,EAAMxpC,EAAG,CAAC,EACVypC,EAAMzpC,EAAG,CAAC,EACV0pC,EAAM1pC,EAAG,EAAE,EACjB,GACE,KAAK,IAAImpC,EAAME,CAAG,EAAI,KACtB,KAAK,IAAID,EAAMI,CAAG,EAAI,KACtB,KAAK,IAAID,EAAME,CAAG,EAAI,IACtB,CAKE,GAAA,KAAK,IAAIN,EAAME,CAAG,EAAI,IACtB,KAAK,IAAID,EAAMI,CAAG,EAAI,IACtB,KAAK,IAAID,EAAME,CAAG,EAAI,IACtB,KAAK,IAAIP,EAAMI,EAAMI,EAAM,CAAC,EAAI,GAGhC,YAAK,IAAI,EAAG,EAAG,EAAG,CAAC,EACZ,KAGTxB,EAAQ,KAAK,GACP,MAAAyB,GAAMT,EAAM,GAAK,EACjBU,GAAMN,EAAM,GAAK,EACjBO,GAAMH,EAAM,GAAK,EACjBI,GAAMX,EAAME,GAAO,EACnBU,GAAMX,EAAMI,GAAO,EACnBQ,GAAMT,EAAME,GAAO,EACrB,OAAAE,EAAKC,GAAMD,EAAKE,EAEdF,EAAK,KACH1uC,EAAA,EACAhX,EAAA,WACA6I,EAAA,aAEAmO,EAAA,KAAK,KAAK0uC,CAAE,EAChB1lD,EAAI6lD,EAAK7uC,EACTnO,EAAIi9C,EAAK9uC,GAEF2uC,EAAKC,EAEVD,EAAK,KACH3uC,EAAA,WACAhX,EAAA,EACA6I,EAAA,aAEA7I,EAAA,KAAK,KAAK2lD,CAAE,EAChB3uC,EAAI6uC,EAAK7lD,EACT6I,EAAIk9C,EAAK/lD,GAIP4lD,EAAK,KACH5uC,EAAA,WACAhX,EAAA,WACA6I,EAAA,IAEAA,EAAA,KAAK,KAAK+8C,CAAE,EAChB5uC,EAAI8uC,EAAKj9C,EACT7I,EAAI+lD,EAAKl9C,GAGb,KAAK,IAAImO,EAAGhX,EAAG6I,EAAGo7C,CAAK,EAChB,IACT,CAEA,IAAInsD,EAAI,KAAK,MACV0tD,EAAMF,IAAQE,EAAMF,IAClBH,EAAMI,IAAQJ,EAAMI,IACpBH,EAAMF,IAAQE,EAAMF,EAAA,EAErB,OAAA,KAAK,IAAIptD,CAAC,EAAI,OAAWA,EAAA,GAGxB,KAAA,GAAK0tD,EAAMF,GAAOxtD,EAClB,KAAA,GAAKqtD,EAAMI,GAAOztD,EAClB,KAAA,GAAKstD,EAAMF,GAAOptD,EACvB,KAAK,EAAI,KAAK,MAAMmtD,EAAMI,EAAMI,EAAM,GAAK,CAAC,EACrC,IACT,CAEA,uBAAuB3lD,EAAY,CACjC,MAAMnK,EAAImK,EAAE,MACP,YAAA,EAAInK,EAAE,EAAE,EACR,KAAA,EAAIA,EAAE,EAAE,EACR,KAAA,EAAIA,EAAE,EAAE,EACR,KAAA,EAAIA,EAAE,EAAE,EACN,IACT,CAEA,IAAIgZ,EAAY,CACd,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CAEA,IAAIA,EAAY,CACd,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CAEA,MAAMy0C,EAActM,EAAc,CAEhC,YAAK,EAAIxkB,GAAM,KAAK,EAAG8wB,EAAI,EAAGtM,EAAI,CAAC,EACnC,KAAK,EAAIxkB,GAAM,KAAK,EAAG8wB,EAAI,EAAGtM,EAAI,CAAC,EACnC,KAAK,EAAIxkB,GAAM,KAAK,EAAG8wB,EAAI,EAAGtM,EAAI,CAAC,EACnC,KAAK,EAAIxkB,GAAM,KAAK,EAAG8wB,EAAI,EAAGtM,EAAI,CAAC,EAC5B,IACT,CAEA,YAAY0M,EAAgBC,EAAgB,CAC1C,YAAK,EAAInxB,GAAM,KAAK,EAAGkxB,EAAQC,CAAM,EACrC,KAAK,EAAInxB,GAAM,KAAK,EAAGkxB,EAAQC,CAAM,EACrC,KAAK,EAAInxB,GAAM,KAAK,EAAGkxB,EAAQC,CAAM,EACrC,KAAK,EAAInxB,GAAM,KAAK,EAAGkxB,EAAQC,CAAM,EAC9B,IACT,CAEA,YAAYL,EAAatM,EAAa,CAC9B,MAAA9kB,EAAS,KAAK,SACpB,OAAO,KAAK,aAAaA,GAAU,CAAC,EAAE,eACpCM,GAAMN,EAAQoxB,EAAKtM,CAAG,CAAA,CAE1B,CAEA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CAEA,MAAO,CACL,YAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EAClB,IACT,CAEA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CAEA,aAAc,CACZ,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CAEA,QAAS,CACF,YAAA,EAAI,CAAC,KAAK,EACV,KAAA,EAAI,CAAC,KAAK,EACV,KAAA,EAAI,CAAC,KAAK,EACV,KAAA,EAAI,CAAC,KAAK,EACR,IACT,CAEA,IAAInoC,EAAY,CACd,OAAO,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CACjE,CAEA,UAAW,CACT,OACE,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAExE,CAEA,QAAS,CACP,OAAO,KAAK,KACV,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAAA,CAExE,CAEA,iBAAkB,CAChB,OACE,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,CAE5E,CAEA,WAAY,CACV,OAAO,KAAK,aAAa,KAAK,UAAY,CAAC,CAC7C,CAEA,UAAUqjB,EAAgB,CACxB,OAAO,KAAK,UAAA,EAAY,eAAeA,CAAM,CAC/C,CAGA,gBAAgBrjB,EAAY,CACpB,MAAA+0C,EAAc/0C,EAAE,WACtB,GAAI+0C,IAAgB,EAClB,OAAO,KAAK,IAAI,EAAG,EAAG,EAAG,CAAC,EAE5B,MAAMH,EAAS50C,EAAE,IAAI,IAAI,EAAI+0C,EAC7B,OAAO,KAAK,KAAK/0C,CAAC,EAAE,eAAe40C,CAAM,CAC3C,CAQA,KAAK50C,EAAYo1C,EAAe,CAC9B,YAAK,IAAMp1C,EAAE,EAAI,KAAK,GAAKo1C,EAC3B,KAAK,IAAMp1C,EAAE,EAAI,KAAK,GAAKo1C,EAC3B,KAAK,IAAMp1C,EAAE,EAAI,KAAK,GAAKo1C,EAC3B,KAAK,IAAMp1C,EAAE,EAAI,KAAK,GAAKo1C,EACpB,IACT,CAEA,YAAYr4C,EAAa+F,EAAasyC,EAAe,CACnD,YAAK,EAAIr4C,EAAG,GAAK+F,EAAG,EAAI/F,EAAG,GAAKq4C,EAChC,KAAK,EAAIr4C,EAAG,GAAK+F,EAAG,EAAI/F,EAAG,GAAKq4C,EAChC,KAAK,EAAIr4C,EAAG,GAAK+F,EAAG,EAAI/F,EAAG,GAAKq4C,EAChC,KAAK,EAAIr4C,EAAG,GAAK+F,EAAG,EAAI/F,EAAG,GAAKq4C,EACzB,IACT,CAEA,OAAOp1C,EAAY,CACjB,OAAOA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,CAC5E,CAEA,UAAUk5B,EAAiB4W,EAAS,EAAG,CAChC,YAAA,EAAI5W,EAAM4W,CAAM,EAChB,KAAA,EAAI5W,EAAM4W,EAAS,CAAC,EACpB,KAAA,EAAI5W,EAAM4W,EAAS,CAAC,EACpB,KAAA,EAAI5W,EAAM4W,EAAS,CAAC,EAClB,IACT,CAEA,QAAQ5W,EAAkB,GAAI4W,EAAS,EAAG,CAClC,OAAA5W,EAAA4W,CAAM,EAAI,KAAK,EACf5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,EACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,EACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,EAClB5W,CACT,CAUA,QAAS,CACF,YAAA,EAAI,KAAK,SACT,KAAA,EAAI,KAAK,SACT,KAAA,EAAI,KAAK,SACT,KAAA,EAAI,KAAK,SACP,IACT,CAEA,EAAE,OAAO,QAAQ,GAAI,CACnB,MAAM,KAAK,EACX,MAAM,KAAK,EACX,MAAM,KAAK,EACX,MAAM,KAAK,CACb,CACF,CAEA,MAAM8b,GAAM,IAAIL,GACVmB,GAAM,IAAIP,GCz6CV8B,GAAgBC,GACpB,+rEAyBA,EACF,EAEA,SAASA,GAA4BC,EAAqBC,EAAQ,GAAI,CACpE,MAAMC,EAAS,CAAA,EACTC,EAAQH,EAAY,MAAM,GAAG,EAEnC,QAASlvD,EAAI,EAAGA,EAAIqvD,EAAM,OAAQrvD,GAAK,EAAG,CACxC,MAAMsvD,EAAS,IAAMD,EAAMrvD,EAAI,CAAC,EAAI,IAC9BuvD,EAAS,SAASF,EAAMrvD,CAAC,EAAGmvD,CAAK,EAChCC,EAAAE,CAAM,EAAI,KAAOC,EAAS,GACnC,CAEA,OAAAH,EAAO,OAAO,EAAI,SACXA,CACT,CAEA,SAASI,GAAOxzB,EAAaoN,EAAuC,CAC5D,MAAA+J,EAAO,OAAO,KAAK/J,CAAI,EAC7B,QAASppC,EAAI,EAAGA,EAAImzC,EAAK,OAAQnzC,IAC/Bg8B,EAAMA,EAAI,QACR,IAAI,OAAO,IAAMmX,EAAKnzC,CAAC,EAAI,IAAK,IAAI,EACpC,GAAKopC,EAAK+J,EAAKnzC,CAAC,CAAC,CAAA,EAGd,OAAAg8B,CACT,CAEA,SAASyzB,GAAaC,EAA8B,CAClD,IAAIC,EAAc3vD,EAClB,GAAI,CAAC0vD,EACH,MAAM,IAAI,MACR,+DAAA,EAGJ,MAAME,EAAQ,sDACCD,EAAA,GACZ,EAED,KADeA,EAAA,GACV3vD,EAAI,EAAGA,EAAI,GAAIA,IACF2vD,GAAAC,EAAM,KAAK,MAAM,KAAK,SAAWA,EAAM,MAAM,CAAC,QAEzDF,EAAOC,CAAY,GACrB,OAAAA,CACT,CAGA,SAASE,GAAcC,EAAmB,CAExC,MAAMC,EAAU,CACd,KAAM,QACN,MAAO,MACP,OAAQ,SACR,MAAO,QACP,IAAK,KAAA,EAEA,OAAAA,EAAQD,CAAS,GAAKC,EAAQ,KACvC,CAGA,SAASC,GAAoBC,EAAsB,CAEjD,MAAMF,EAAU,CACd,WAAY,aACZ,QAAS,UACT,IAAK,mBACL,OAAQ,kBACR,OAAQ,SAAA,EAEH,OAAAA,EAAQE,CAAY,GAAKF,EAAQ,UAC1C,CAGA,MAAMG,GAQF,CACF,YAAa,CACX,QAAS,SACT,OAAQ,UACR,IAAK,OACL,MAAO,QACT,EACA,UAAW,CACT,QAAS,OACT,OAAQ,UACR,IAAK,KACL,MAAO,MACT,EACA,QAAS,CACP,QAAS,iBACT,OAAQ,OACR,IAAK,OACL,MAAO,QACT,EACA,SAAU,CACR,QAAS,kBACT,OAAQ,QACR,IAAK,QACL,MAAO,QACT,EACA,WAAY,CACV,QAAS,oBACT,OAAQ,GACR,IAAK,EACL,MAAO,QACT,EACA,UAAW,CACT,QAAS,eACT,OAAQ,EACR,IAAK,EACL,MAAO,QACT,EACA,YAAa,CACX,QAAS,UACT,OAAQ,EACR,IAAK,EACL,MAAO,aACT,EACA,KAAM,CAEJ,OAAQ,iBACV,EACA,YAAa,CACX,OAAQ,SACV,EACA,cAAe,CACb,OAAQ,CACV,EACA,cAAe,CACb,OAAQ,CACV,EACA,WAAY,CACV,OAAQ,CACV,EACA,UAAW,CACT,OAAQ,OACV,EACA,aAAc,CACZ,OAAQ,YACV,EACA,SAAU,CACR,QAAS,mBACT,OAAQ,CAAC,EACT,IAAK,KACL,MAAO,QACT,EACA,eAAgB,CACd,QAAS,oBACT,OAAQ,EACR,IAAK,EACL,MAAO,QACT,CACF,EAEO,IAAAC,GAAA,KAA2B,CAChC,OACA,MACA,YAAYC,EAA0BjrB,EAA0B,CAC9D,KAAK,OAASirB,EACd,KAAK,MAAQjrB,CACf,CAKA,aAAasiB,EAAgB4I,EAAe,CAC1C,MAAMC,EAAO,KAAK,MAAM,gBAAgB,MAAM,EAE9C,GADKA,EAAA,aAAa,SAAU,GAAK7I,CAAM,EACnC4I,EAAM,QAAQ,MAAM,IAAM,GAAI,CAI1B,MAAAE,EADJ,kEACoB,KAAKF,CAAK,EAC5BE,IACGD,EAAA,aACH,aACAd,GAAO,mBAAoB,CACzB,EAAGe,EAAQ,CAAC,EACZ,EAAGA,EAAQ,CAAC,EACZ,EAAGA,EAAQ,CAAC,CAAA,CACb,CAAA,EAEHD,EAAK,aAAa,eAAgBC,EAAQ,CAAC,CAAC,EAC9C,MAEKD,EAAA,aAAa,aAAcD,CAAK,EAElC,KAAA,OAAO,YAAYC,CAAI,CAC9B,CACF,EAEOE,GAAA,KAA0B,CAC/B,OACA,MACA,YAAYrG,EAAqBhlB,EAA0B,CACzD,KAAK,OAASglB,EACd,KAAK,MAAQhlB,CACf,CACF,EAKOsrB,GAAA,MAAMC,EAAoB,CAG/B,WAAuB,SACvB,SACA,MACA,MACA,OACA,aACA,aACA,UACA,MACA,UACA,iBACA,yBAGW,KAEX,YAAY,CACV,OAAA/S,EACA,MAAAmB,EAAQ,IACR,OAAAC,EAAS,GAAA,EAKR,CACGpB,GACF,KAAK,SAAWA,EACX,KAAA,MAAQA,EAAO,WAAW,IAAI,EACnC,KAAK,MAAQA,EAAO,MACpB,KAAK,OAASA,EAAO,SAErB,KAAK,SAAW,KAAK,WAAW,cAAc,QAAQ,EACtD,KAAK,MAAQ,KAAK,SAAS,WAAW,IAAI,EAC1C,KAAK,MAAQmB,EACb,KAAK,OAASC,GAGhB,KAAK,mBAAmB,EACxB,KAAK,aAAe,CAAC,KAAK,gBAAiB,CAAA,EAC3C,KAAK,aAAe,GAEf,KAAA,UAAY,KAAK,WAAW,gBAC/B,6BACA,KAAA,EAEG,KAAA,UAAU,aAAa,UAAW,KAAK,EACvC,KAAA,UAAU,aAAa,QAAS,4BAA4B,EACjE,KAAK,UAAU,eACb,gCACA,cACA,8BAAA,EAEF,KAAK,UAAU,aAAa,QAAS,GAAK,KAAK,KAAK,EACpD,KAAK,UAAU,aAAa,SAAU,GAAK,KAAK,MAAM,EAGtD,KAAK,MAAQ,GAGR,KAAA,UAAY,KAAK,WAAW,gBAC/B,6BACA,MAAA,EAEG,KAAA,UAAU,YAAY,KAAK,SAAS,EAGpC,KAAA,iBAAmB,KAAK,WAAW,gBACtC,6BACA,GAAA,EAEG,KAAA,UAAU,YAAY,KAAK,gBAAgB,CAClD,CAKA,oBAAqB,CAEb,MAAA5L,EAAO,OAAO,KAAK+c,EAAM,EAC/B,QAASlwD,EAAI,EAAGg7B,EAASmY,EAAK,OAAQnzC,EAAIg7B,EAAQh7B,IAAK,CAC/C,MAAAyiC,EAAM0Q,EAAKnzC,CAAC,EAClB,KAAKyiC,CAAG,EAAIytB,GAAOztB,CAAG,EAAE,MAC1B,CACF,CAKA,iBAAkB,CAChB,MAAMkuB,EAAkC,CAAA,EAClCxd,EAAO,OAAO,KAAK+c,EAAM,EAC/B,QAASlwD,EAAI,EAAGg7B,EAASmY,EAAK,OAAQnzC,EAAIg7B,EAAQh7B,IAAK,CAC/C,MAAAyiC,EAAM0Q,EAAKnzC,CAAC,EACP2wD,EAAAluB,CAAG,EAAI,KAAKA,CAAG,CAC5B,CACO,OAAAkuB,CACT,CAKA,kBAAkBA,EAAiC,CAC3C,MAAAxd,EAAO,OAAO,KAAKwd,CAAU,EACnC,QAAS3wD,EAAI,EAAGg7B,EAASmY,EAAK,OAAQnzC,EAAIg7B,EAAQh7B,IAAK,CAC/C,MAAAyiC,EAAM0Q,EAAKnzC,CAAC,EACb,KAAAyiC,CAAG,EAAIkuB,EAAWluB,CAAG,CAC5B,CACF,CAKA,gBACEmuB,EACApsB,EAAkC,CAAA,EAClCqsB,EAAY,GACZ,CACM,MAAAvvB,EAAU,KAAK,WAAW,gBAC9B,6BACAsvB,CAAA,EAEIzd,EAAO,OAAO,KAAK3O,CAAU,EAC/BqsB,IAEMvvB,EAAA,aAAa,OAAQ,MAAM,EAC3BA,EAAA,aAAa,SAAU,MAAM,GAEvC,QAASthC,EAAI,EAAGA,EAAImzC,EAAK,OAAQnzC,IAAK,CAC9B,MAAAyiC,EAAM0Q,EAAKnzC,CAAC,EAClBshC,EAAQ,aAAamB,EAAK+B,EAAW/B,CAAG,CAAC,CAC3C,CACO,OAAAnB,CACT,CAKA,6BAA6B9D,EAAyB,CACpD,IAAIszB,EAAiB,KAAK,iBAC1B,MAAMC,EAAoB,KAAK,yBAC3BA,IACaD,EAAA,aAAatzB,EAAM,EAAE,EACpCszB,EAAiBC,EAAkB,QACjBA,EAAA,SAAS,QAAS7sB,GAAqB,CAClDA,EAAA,aAAa1G,EAAM,EAAE,CAAA,CAC3B,GAGG,MAAA2V,EAAO,OAAO,KAAK+c,EAAM,EAC/B,QAAS,EAAI,EAAG,EAAI/c,EAAK,OAAQ,IAAK,CACpC,MAAMhQ,EAAQ+sB,GAAO/c,EAAK,CAAC,CAAC,EACtB5Q,EAAQ,KAAK4Q,EAAK,CAAC,CAAC,EAC1B,GAAIhQ,EAAM,OACR,GAAIZ,aAAiByuB,GAAqB,CACxC,GAAIzuB,EAAM,MAER,KAAOA,EAAM,MAAM,UAAU,WAAW,QAAQ,CACxC,MAAA7jB,EACJ6jB,EAAM,MAAM,UAAU,WAAW,CAAC,EAClC,aAAa,IAAI,EACd,KAAA,MAAM7jB,CAAE,EAAIA,EACjB,KAAK,UAAU,YAAY6jB,EAAM,MAAM,UAAU,WAAW,CAAC,CAAC,CAChE,CAEauuB,EAAA,aACb3tB,EAAM,MACNqsB,GAAO,aAAc,CACnB,GAAIjtB,EAAM,OAAO,aAAa,IAAI,CAAA,CACnC,CAAA,CACH,SACSA,aAAiB0uB,GACXH,EAAA,aACb3tB,EAAM,MACNqsB,GAAO,aAAc,CACnB,GAAIjtB,EAAM,OAAO,aAAa,IAAI,CAAA,CACnC,CAAA,UAEMY,EAAM,MAAM,QAAQ3F,CAAI,IAAM,IAAM2F,EAAM,MAAQZ,EAExD,IAAAY,EAAM,UAAY,UAAYA,EAAM,UAAY,SACjDZ,EAAM,QAAQ,MAAM,IAAM,GAC1B,CAIM,MAAAguB,EADJ,kEACoB,KAAKhuB,CAAK,EAChC,GAAIguB,EAAS,CACIO,EAAA,aACb3tB,EAAM,QACNqsB,GAAO,mBAAoB,CACzB,EAAGe,EAAQ,CAAC,EACZ,EAAGA,EAAQ,CAAC,EACZ,EAAGA,EAAQ,CAAC,CAAA,CACb,CAAA,EAGH,IAAIW,EAAU,WAAWX,EAAQ,CAAC,CAAC,EACnC,MAAMY,EAAc,KAAK,YACrBA,GAAe,OACND,GAAAC,GAEEL,EAAA,aACb3tB,EAAM,QAAU,WAChB,GAAK+tB,CAAA,CAET,CAAA,KACK,CACL,IAAInsB,EAAO5B,EAAM,QACb,GAAAgQ,EAAK,CAAC,IAAM,gBACPpO,EAAAvH,EAAO,IAAM2F,EAAM,QACtB2tB,EAAe,aAAa/rB,CAAI,GAElC,SAIAA,GAAqB+rB,EAAA,aAAa/rB,EAAMxC,CAAK,CACnD,EAGN,CACF,CAKA,oBAAoB2B,EAAsC,CAExD,OADAA,EAAOA,GAAQ,KAAK,iBAChBA,EAAK,WAAa,KAAOA,EAAK,WAAa,MACtCA,EAEA,KAAK,oBAAoBA,EAAK,UAAmC,CAE5E,CAQA,iBAAiBktB,EAA2B,CAC1C,IAAIC,EAAa,IAAI,cAAA,EAAgB,kBAAkB,KAAK,SAAS,EAYrE,GARE,sFACQ,KAAKA,CAAU,IACvBA,EAAaA,EAAW,QACtB,oCACA,2CAAA,GAIAD,EAAkB,CACd,MAAAje,EAAO,OAAO,KAAK6b,EAAa,EAEtC,QAAS,EAAI,EAAGh0B,EAASmY,EAAK,OAAQ,EAAInY,EAAQ,IAAK,CAC/C,MAAAyH,EAAM0Q,EAAK,CAAC,EACZ5Q,EAAQysB,GAAcvsB,CAAG,EACzB6uB,EAAS,IAAI,OAAO7uB,EAAK,IAAI,EAC/B6uB,EAAO,KAAKD,CAAU,IACXA,EAAAA,EAAW,QAAQC,EAAQ/uB,CAAK,EAEjD,CACF,CAEO,OAAA8uB,CACT,CAKA,QAAS,CACP,OAAO,KAAK,SACd,CAKA,MAAO,CACC,MAAAE,EAAQ,KAAK,gBAAgB,GAAG,EAChC1oB,EAAS,KAAK,sBACf,KAAA,aAAa,KAAKA,CAAM,EAC7BA,EAAO,YAAY0oB,CAAK,EACxB,KAAK,iBAAmBA,EACxB,KAAK,aAAa,KAAK,KAAK,gBAAiB,CAAA,CAC/C,CAKA,SAAU,CACR,KAAK,yBAA2B,KAC1B,MAAAT,EAAiB,KAAK,aAAa,IAAI,EAExCA,EAIH,KAAK,iBAAmBA,EAHxB,KAAK,iBAAmB,KAAK,UAC1B,WAAW,CAAC,EAIX,MAAA/1B,EAAQ,KAAK,aAAa,IAAI,EAChCA,GACF,KAAK,kBAAkBA,CAAK,CAEhC,CAKA,eAAen8B,EAAW,CAElB,MAAAiqC,EAAS,KAAK,sBAChB,GAAAA,EAAO,WAAW,OAAS,EAAG,CAC5B,KAAK,iBAAiB,WAAa,SAChC,KAAK,2BACR,KAAK,yBAA2B,CAAE,QAASA,EAAQ,SAAU,CAAA,IAC/D,KAAK,yBAAyB,SAAS,KAAK,KAAK,gBAAgB,EACjE,KAAK,0BAA0B,GAE3B,MAAA0oB,EAAQ,KAAK,gBAAgB,GAAG,EACtC1oB,EAAO,YAAY0oB,CAAK,EACxB,KAAK,iBAAmBA,CAC1B,CAEA,IAAIC,EAAY,KAAK,iBAAiB,aAAa,WAAW,EAC1DA,EACWA,GAAA,IAEDA,EAAA,GAEDA,GAAA5yD,EACR,KAAA,iBAAiB,aAAa,YAAa4yD,CAAS,CAC3D,CAKA,MAAMxxC,EAAWhX,EAAY,CACvBA,IAAM,SACJA,EAAAgX,GAEN,KAAK,eAAewvC,GAAO,iBAAkB,CAAE,EAAAxvC,EAAM,EAAAhX,CAAM,CAAA,CAAC,CAC9D,CAKA,OAAOikD,EAAe,CACd,MAAAwE,EAAWxE,EAAQ,IAAO,KAAK,GAChC,KAAA,eACHuC,GAAO,4BAA6B,CAClC,MAAOiC,EACP,GAAI,EACJ,GAAI,CAAA,CACL,CAAA,CAEL,CAKA,UAAUzxC,EAAWhX,EAAW,CAC9B,KAAK,eAAewmD,GAAO,qBAAsB,CAAE,EAAAxvC,EAAM,EAAAhX,CAAM,CAAA,CAAC,CAClE,CAKA,UAAU1D,EAAW8Z,EAAW1W,EAAWkP,EAAWjZ,EAAWiK,EAAW,CACrE,KAAA,eACH4mD,GAAO,kCAAmC,CACxC,EAAAlqD,EACA,EAAA8Z,EACA,EAAA1W,EACA,EAAAkP,EACA,EAAAjZ,EACA,EAAAiK,CAAA,CACD,CAAA,CAEL,CAKA,WAAY,CAGV,KAAK,qBAAuB,GAC5B,KAAK,kBAAoB,GAEzB,MAAM8oD,EAAO,KAAK,gBAAgB,OAAQ,CAAA,EAAI,EAAI,EACnC,KAAK,sBACb,YAAYA,CAAI,EACvB,KAAK,iBAAmBA,CAC1B,CAKA,2BAA4B,CAC1B,MAAMZ,EAAiB,KAAK,iBACxBA,EAAe,WAAa,QACfA,EAAA,aAAa,IAAK,KAAK,oBAAoB,CAO9D,CAKA,iBAAiBa,EAAiB,CAChC,KAAK,sBAAwB,IAC7B,KAAK,sBAAwBA,CAC/B,CAMA,OAAO3xC,EAAWhX,EAAW,CACvB,KAAK,iBAAiB,WAAa,QACrC,KAAK,UAAU,EAIZ,KAAA,kBAAoB,CAAE,EAAAgX,EAAM,EAAAhX,CAAK,EACtC,KAAK,iBAAiBwmD,GAAO,YAAa,KAAK,iBAAiB,CAAC,CACnE,CAKA,WAAY,CACN,KAAK,sBACP,KAAK,iBAAiB,GAAG,CAE7B,CAKA,OAAOxvC,EAAWhX,EAAW,CACtB,KAAA,kBAAoB,CAAE,EAAAgX,EAAM,EAAAhX,CAAK,EAClC,KAAK,qBAAqB,QAAQ,GAAG,EAAI,GAC3C,KAAK,iBAAiBwmD,GAAO,YAAa,KAAK,iBAAiB,CAAC,EAEjE,KAAK,iBAAiBA,GAAO,YAAa,KAAK,iBAAiB,CAAC,CAErE,CAKA,cACEoC,EACAC,EACAC,EACAC,EACA/xC,EACAhX,EACA,CACK,KAAA,kBAAoB,CAAE,EAAAgX,EAAM,EAAAhX,CAAK,EACjC,KAAA,iBACHwmD,GAAO,wCAAyC,CAC9C,KAAAoC,EACA,KAAAC,EACA,KAAAC,EACA,KAAAC,EACA,EAAA/xC,EACA,EAAAhX,CAAA,CACD,CAAA,CAEL,CAKA,iBAAiBgpD,EAAaC,EAAajyC,EAAWhX,EAAW,CAC1D,KAAA,kBAAoB,CAAE,EAAAgX,EAAM,EAAAhX,CAAK,EACjC,KAAA,iBACHwmD,GAAO,wBAAyB,CAAE,IAAAwC,EAAU,IAAAC,EAAU,EAAAjyC,EAAM,EAAAhX,EAAM,CAAA,CAEtE,CAKA,UAAUkpD,EAA0B,CAClC,MAAM1S,EAAM,KAAK,KAAK0S,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,CAAC,EAC5D,MAAA,CAACA,EAAO,CAAC,EAAI1S,EAAK0S,EAAO,CAAC,EAAI1S,CAAG,CAC1C,CAOA,MAAMjqC,EAAYnB,EAAYoH,EAAY3B,EAAYs4C,EAAgB,CAEpE,MAAMxvD,EAAK,KAAK,mBAAqB,KAAK,kBAAkB,EACtDvB,EAAK,KAAK,mBAAqB,KAAK,kBAAkB,EAG5D,GAAI,OAAOuB,EAAM,KAAe,OAAOvB,EAAM,IAC3C,OAIF,GAAI+wD,EAAS,EACX,MAAM,IAAI,MACR,wCAA0CA,EAAS,gBAAA,EASlD,GAAAxvD,IAAO4S,GAAMnU,IAAOgT,GAAQmB,IAAOiG,GAAMpH,IAAOyF,GAAOs4C,IAAW,EAAG,CACnE,KAAA,OAAO58C,EAAInB,CAAE,EAClB,MACF,CAKM,MAAAg+C,EAAiB,KAAK,UAAU,CAACzvD,EAAK4S,EAAInU,EAAKgT,CAAE,CAAC,EAClDi+C,EAAiB,KAAK,UAAU,CAAC72C,EAAKjG,EAAIsE,EAAKzF,CAAE,CAAC,EAEtD,GAAAg+C,EAAe,CAAC,EAAIC,EAAe,CAAC,IACpCD,EAAe,CAAC,EAAIC,EAAe,CAAC,EACpC,CACK,KAAA,OAAO98C,EAAInB,CAAE,EAClB,MACF,CAQM,MAAAk+C,EACJF,EAAe,CAAC,EAAIC,EAAe,CAAC,EACpCD,EAAe,CAAC,EAAIC,EAAe,CAAC,EAChCzF,EAAQ,KAAK,KAAK,KAAK,IAAI0F,CAAG,CAAC,EAG/BC,EAAqB,KAAK,UAAU,CACxCH,EAAe,CAAC,EAAIC,EAAe,CAAC,EACpCD,EAAe,CAAC,EAAIC,EAAe,CAAC,CAAA,CACrC,EACKG,EAAgBL,EAAS,KAAK,IAAIvF,EAAQ,CAAC,EAC3C5sC,EAAIzK,EAAKi9C,EAAgBD,EAAmB,CAAC,EAC7CvpD,EAAIoL,EAAKo+C,EAAgBD,EAAmB,CAAC,EAI7CE,EAAgC,CACpC,CAACL,EAAe,CAAC,EACjBA,EAAe,CAAC,CAAA,EAGZM,EAA8B,CAACL,EAAe,CAAC,EAAG,CAACA,EAAe,CAAC,CAAC,EACpEM,EAAW,SAAUT,EAAkB,CAErClyC,MAAAA,EAAIkyC,EAAO,CAAC,EAElB,OADUA,EAAO,CAAC,GACT,EAEA,KAAK,KAAKlyC,CAAC,EAEX,CAAC,KAAK,KAAKA,CAAC,CACrB,EAEI4yC,EAAaD,EAASF,CAA6B,EACnDI,EAAWF,EAASD,CAA2B,EAGhD,KAAA,OACH1yC,EAAIyyC,EAA8B,CAAC,EAAIN,EACvCnpD,EAAIypD,EAA8B,CAAC,EAAIN,CAAA,EAKzC,KAAK,IAAInyC,EAAGhX,EAAGmpD,EAAQS,EAAYC,CAAQ,CAC7C,CAKA,QAAS,CACH,KAAK,iBAAiB,WAAa,QAChC,KAAA,iBAAiB,aAAa,cAAe,qBAAqB,EAEzE,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,QAAQ,CAC5C,CAKA,MAAO,CACD,KAAK,iBAAiB,WAAa,QAChC,KAAA,iBAAiB,aAAa,cAAe,qBAAqB,EAEzE,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,MAAM,CAC1C,CAKA,KAAK7yC,EAAWhX,EAAW81C,EAAeC,EAAgB,CACpD,KAAK,iBAAiB,WAAa,QACrC,KAAK,UAAU,EAEZ,KAAA,OAAO/+B,EAAGhX,CAAC,EACX,KAAA,OAAOgX,EAAI8+B,EAAO91C,CAAC,EACxB,KAAK,OAAOgX,EAAI8+B,EAAO91C,EAAI+1C,CAAM,EAC5B,KAAA,OAAO/+B,EAAGhX,EAAI+1C,CAAM,EACpB,KAAA,OAAO/+B,EAAGhX,CAAC,EAChB,KAAK,UAAU,CACjB,CAKA,SAASgX,EAAWhX,EAAW81C,EAAeC,EAAgB,CAC5D,MAAM+T,EAAO,KAAK,gBAChB,OACA,CACE,EAAA9yC,EACA,EAAAhX,EACA,MAAA81C,EACA,OAAAC,CACF,EACA,EAAA,EAEa,KAAK,sBACb,YAAY+T,CAAI,EACvB,KAAK,iBAAmBA,EACxB,KAAK,6BAA6B,MAAM,CAC1C,CAKA,WAAW9yC,EAAWhX,EAAW81C,EAAeC,EAAgB,CAC9D,MAAM+T,EAAO,KAAK,gBAChB,OACA,CACE,EAAA9yC,EACA,EAAAhX,EACA,MAAA81C,EACA,OAAAC,CACF,EACA,EAAA,EAEa,KAAK,sBACb,YAAY+T,CAAI,EACvB,KAAK,iBAAmBA,EACxB,KAAK,6BAA6B,QAAQ,CAC5C,CAOA,eAAgB,CAER,MAAAtB,EADU,KAAK,sBACK,aAAa,WAAW,EAC5CuB,EAAY,KAAK,UAAU,WAAW,CAAC,EACvCC,EAAaD,EAAU,WAC7B,QAAS,EAAIC,EAAW,OAAS,EAAG,GAAK,EAAG,IACtCA,EAAW,CAAC,GACJD,EAAA,YAAYC,EAAW,CAAC,CAAC,EAGvC,KAAK,iBAAmBD,EAExB,KAAK,aAAe,GAChBvB,GACF,KAAK,eAAeA,CAAS,CAEjC,CAKA,UAAUxxC,EAAWhX,EAAW81C,EAAeC,EAAgB,CAEzD,GAAA/+B,IAAM,GAAKhX,IAAM,GAAK81C,IAAU,KAAK,OAASC,IAAW,KAAK,OAAQ,CACxE,KAAK,cAAc,EACnB,MACF,CACM,MAAAlW,EAAS,KAAK,sBACdiqB,EAAO,KAAK,gBAChB,OACA,CACE,EAAA9yC,EACA,EAAAhX,EACA,MAAA81C,EACA,OAAAC,EACA,KAAM,SACR,EACA,EAAA,EAEFlW,EAAO,YAAYiqB,CAAI,CACzB,CAMA,qBAAqBv9C,EAAYnB,EAAYoH,EAAY3B,EAAY,CACnE,MAAMo5C,EAAO,KAAK,gBAChB,iBACA,CACE,GAAIxD,GAAa,KAAK,KAAK,EAC3B,GAAIl6C,EAAK,KACT,GAAIiG,EAAK,KACT,GAAIpH,EAAK,KACT,GAAIyF,EAAK,KACT,cAAe,gBACjB,EACA,EAAA,EAEG,YAAA,UAAU,YAAYo5C,CAAI,EACxB,IAAIhC,GAAqBgC,EAA+B,IAAI,CACrE,CAMA,qBACEtwD,EACAvB,EACAjB,EACAoV,EACAnB,EACA8+C,EACA,CACA,MAAMD,EAAO,KAAK,gBAChB,iBACA,CACE,GAAIxD,GAAa,KAAK,KAAK,EAC3B,GAAIl6C,EAAK,KACT,GAAInB,EAAK,KACT,EAAG8+C,EAAK,KACR,GAAIvwD,EAAK,KACT,GAAIvB,EAAK,KACT,cAAe,gBACjB,EACA,EAAA,EAEG,YAAA,UAAU,YAAY6xD,CAAI,EACxB,IAAIhC,GAAqBgC,EAA+B,IAAI,CACrE,CAKA,aAAc,CAGZ,MAAME,EADJ,kXACqB,KAAK,KAAK,IAAI,EAC/BnzB,EAAO,CACX,MAAOmzB,EAAS,CAAC,GAAK,SACtB,KAAMA,EAAS,CAAC,GAAK,OACrB,OAAQA,EAAS,CAAC,GAAK,aACvB,OAAQA,EAAS,CAAC,GAAK,SACvB,WAAYA,EAAS,CAAC,GAAK,SAC3B,KAAM,IAAA,EAIJ,OAAA,KAAK,kBAAoB,cAC3BnzB,EAAK,WAAa,aAIhB,KAAK,aACPA,EAAK,KAAO,KAAK,YAGZA,CACT,CAKA,eAAeozB,EAA+B9xB,EAAsB,CAClE,GAAI8xB,EAAK,KAAM,CACP,MAAA9tD,EAAI,KAAK,gBAAgB,GAAG,EAClC,OAAAA,EAAE,eAAe,+BAAgC,aAAc8tD,EAAK,IAAI,EACxE9tD,EAAE,YAAYg8B,CAAO,EACdh8B,CACT,CACO,OAAAg8B,CACT,CASA,YAAYwqB,EAAc9rC,EAAWhX,EAAW+lC,EAA2B,CACnE,MAAAqkB,EAAO,KAAK,cAChBvqB,EAAS,KAAK,oBACd,EAAAwqB,EAAc,KAAK,gBACjB,OACA,CACE,cAAeD,EAAK,OACpB,YAAaA,EAAK,KAClB,aAAcA,EAAK,MACnB,cAAeA,EAAK,OACpB,kBAAmBA,EAAK,WACxB,EAAApzC,EACA,EAAAhX,EACA,cAAe6mD,GAAc,KAAK,SAAS,EAC3C,oBAAqBG,GAAoB,KAAK,YAAY,CAC5D,EACA,EAAA,EAGJqD,EAAY,YAAY,KAAK,WAAW,eAAevH,CAAI,CAAC,EAC5D,KAAK,iBAAmBuH,EACxB,KAAK,6BAA6BtkB,CAAM,EACjClG,EAAA,YACL,KAAK,eAAeuqB,EAAMC,CAAqC,CAAA,CAEnE,CAQA,SAASvH,EAAc9rC,EAAWhX,EAAW,CAC3C,KAAK,YAAY8iD,EAAM9rC,EAAGhX,EAAG,MAAM,CACrC,CAQA,WAAW8iD,EAAc9rC,EAAWhX,EAAW,CAC7C,KAAK,YAAY8iD,EAAM9rC,EAAGhX,EAAG,QAAQ,CACvC,CAOA,YAAY8iD,EAAc,CACnB,YAAA,MAAM,KAAO,KAAK,KAChB,KAAK,MAAM,YAAYA,CAAI,CACpC,CAKA,IACE9rC,EACAhX,EACAmpD,EACAS,EACAC,EACAS,EACA,CAEA,GAAIV,IAAeC,EACjB,OAEWD,EAAAA,GAAc,EAAI,KAAK,IACzBC,EAAAA,GAAY,EAAI,KAAK,IAC5BD,IAAeC,IAGdA,GAAAA,EAAW,EAAI,KAAK,GAAK,MAASS,EAAmB,GAAK,KAC1D,EAAI,KAAK,KAEd,MAAMC,EAAOvzC,EAAImyC,EAAS,KAAK,IAAIU,CAAQ,EACzCW,EAAOxqD,EAAImpD,EAAS,KAAK,IAAIU,CAAQ,EACrCY,EAASzzC,EAAImyC,EAAS,KAAK,IAAIS,CAAU,EACzCc,EAAS1qD,EAAImpD,EAAS,KAAK,IAAIS,CAAU,EACzCe,EAAYL,EAAmB,EAAI,EACrC,IAAIM,EAAe,EACfC,EAAOhB,EAAWD,EAGlBiB,EAAO,IACTA,GAAQ,EAAI,KAAK,IAGfP,EACaM,EAAAC,EAAO,KAAK,GAAK,EAAI,EAErBD,EAAAC,EAAO,KAAK,GAAK,EAAI,EAGjC,KAAA,OAAOJ,EAAQC,CAAM,EACrB,KAAA,iBACHlE,GACE,uEACA,CACE,GAAI2C,EACJ,GAAIA,EACJ,cAAe,EACf,aAAAyB,EACA,UAAAD,EACA,KAAAJ,EACA,KAAAC,CACF,CACF,CAAA,EAGF,KAAK,kBAAoB,CAAE,EAAGD,EAAM,EAAGC,EACzC,CAKA,MAAO,CACL,MAAMjC,EAAQ,KAAK,oBAAA,EACjBuC,EAAW,KAAK,gBAAgB,UAAU,EAC1Cp1C,EAAK+wC,GAAa,KAAK,KAAK,EAC5BsE,EAAW,KAAK,gBAAgB,GAAG,EAErC,KAAK,0BAA0B,EACzBxC,EAAA,YAAY,KAAK,gBAAgB,EAC9BuC,EAAA,aAAa,KAAMp1C,CAAE,EACrBo1C,EAAA,YAAY,KAAK,gBAAgB,EAErC,KAAA,UAAU,YAAYA,CAAQ,EAGnCvC,EAAM,aAAa,YAAa/B,GAAO,aAAc,CAAE,GAAA9wC,CAAQ,CAAA,CAAC,EAIhE6yC,EAAM,YAAYwC,CAAQ,EAE1B,KAAK,iBAAmBA,CAC1B,CAOA,aAAa3qB,EAAa,CACxB,IAAIsU,EAAQtU,EAAK,CAAC,EAChByjB,EACAC,EACAkH,EACAC,EACApG,EAAK,EACLC,EAAK,EACLoG,EACAzjD,EACA0jD,EACAC,EACA7C,EACA8C,EACA1W,EACAj/B,EAEE,GAAA0qB,EAAK,SAAW,EAClByjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACX8qB,EAAKxW,EAAM,MACXjtC,EAAKitC,EAAM,OACNsW,EAAAE,EACAD,EAAAxjD,UACI24B,EAAK,SAAW,EACzByjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACX4qB,EAAK5qB,EAAK,CAAC,EACX6qB,EAAK7qB,EAAK,CAAC,EACX8qB,EAAKxW,EAAM,MACXjtC,EAAKitC,EAAM,eACFtU,EAAK,SAAW,EACzBykB,EAAKzkB,EAAK,CAAC,EACX0kB,EAAK1kB,EAAK,CAAC,EACX8qB,EAAK9qB,EAAK,CAAC,EACX34B,EAAK24B,EAAK,CAAC,EACXyjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACX4qB,EAAK5qB,EAAK,CAAC,EACX6qB,EAAK7qB,EAAK,CAAC,MAEX,OAAM,IAAI,MACR,oDAAsD,UAAU,MAAA,EAI9D,MAAAP,EAAS,KAAK,sBACG,KAAK,iBAC5B,MAAMyrB,EAAqB,aAAezH,EAAK,KAAOC,EAAK,IAC3D,GAAIpP,aAAiBgT,IAInB,GADAyD,EAAMzW,EAAM,OAAS,EAAA,UAAU,EAAI,EAC/ByW,EAAI,YAAcA,EAAI,WAAW,OAAS,EAAG,CAExC,IADAC,EAAAD,EAAI,WAAW,CAAC,EAChBC,EAAK,WAAW,QACrB11C,EAAM01C,EAAK,WAAW,CAAC,EAAiB,aAAa,IAAI,EACpD,KAAA,MAAM11C,CAAE,EAAIA,EACjB,KAAK,UAAU,YAAY01C,EAAK,WAAW,CAAC,CAAC,EAG/C,GADQ7C,EAAA4C,EAAI,WAAW,CAAC,EACpB5C,EAAO,CAEH,MAAAgD,EAAkBhD,EAAM,aAAa,WAAW,EAClD,IAAAiD,EACAD,EACFC,EAAqBD,EAAkB,IAAMD,EAExBE,EAAAF,EAEjB/C,EAAA,aAAa,YAAaiD,CAAkB,EAClD3rB,EAAO,YAAY0oB,CAAK,CAC1B,CACF,OACS7T,EAAM,WAAa,UAAYA,EAAM,WAAa,SAEhD2W,EAAA,KAAK,gBAAgB,OAAO,EAC9BA,EAAA,aAAa,QAASL,CAAE,EACxBK,EAAA,aAAa,SAAUJ,CAAE,EACzBI,EAAA,aAAa,sBAAuB,MAAM,GAE/CxG,GAAMC,GAAMoG,IAAOxW,EAAM,OAASjtC,IAAOitC,EAAM,UAExCC,EAAA,KAAK,WAAW,cAAc,QAAQ,EAC/CA,EAAO,MAAQqW,EACfrW,EAAO,OAASsW,EACAtW,EAAO,WAAW,IAAI,GAC7B,UAAUD,EAAOmQ,EAAIC,EAAIoG,EAAIzjD,EAAI,EAAG,EAAGujD,EAAIC,CAAE,EAC9CvW,EAAAC,GAED0W,EAAA,aAAa,YAAaC,CAAkB,EAC5CD,EAAA,eACP,+BACA,aACA3W,EAAM,WAAa,SACfA,EAAM,YACNA,EAAM,aAAa,KAAK,CAAA,EAE9B7U,EAAO,YAAYwrB,CAAQ,EAE/B,CAKA,cACE3W,EACA+W,EACA,CACM,MAAAtK,EAAU,KAAK,WAAW,gBAC5B,6BACA,SAEF,EAAAzrC,EAAK+wC,GAAa,KAAK,KAAK,EAC1B,IAAA1M,EACI,OAAAoH,EAAA,aAAa,KAAMzrC,CAAE,EAEzBg/B,EAAM,WAAa,UAAYA,EAAM,WAAa,OACpDqF,EAAM,KAAK,WAAW,gBACpB,6BACA,OAAA,EAEEA,EAAA,aACF,QACA,GAAMrF,EAA+C,KAAA,EAEnDqF,EAAA,aACF,SACA,GAAMrF,EAA+C,MAAA,EAEnDqF,EAAA,eACF,+BACA,aACArF,EAAM,WAAa,SACdA,EAA4B,YAC7BA,EAAM,aAAa,KAAK,CAAA,EAE9ByM,EAAQ,YAAYpH,CAAG,EAClB,KAAA,UAAU,YAAYoH,CAAO,GACzBzM,aAAiBgT,KAC1BvG,EAAQ,aAAa,QAAS,GAAMzM,EAA8B,KAAK,EAC/DyM,EAAA,aACN,SACA,GAAMzM,EAA8B,MAAA,EAEtCyM,EAAQ,YAAYzM,EAAM,UAAU,WAAW,CAAC,CAAC,EAC5C,KAAA,UAAU,YAAYyM,CAAO,GAE7B,IAAI6G,GAAoB7G,EAAkC,IAAI,CACvE,CAEA,YAAYuK,EAAqB,CAC3BA,GAAaA,EAAU,OAAS,EAC7B,KAAA,SAAWA,EAAU,KAAK,GAAG,EAElC,KAAK,SAAW,IAEpB,CAEA,eAAgB,CAEhB,CACA,iBAAkB,CAElB,CACA,cAAe,CAEf,CACA,cAAe,CAEf,CACA,0BAA2B,CAE3B,CACA,cAAe,CAEf,CACF,ECtzCOC,GAAA,KAAsB,CAC3B,OAEA,QAMA,cAGA,cAAwB,IAAI,OAC5B,QAAoB,CAAA,EAGpB,cAA2B,IAAI,UAK/B,wBAA0B,GAC1B,sBAAwB,GAExB,YACEhX,EACAmB,EACAC,EACA6V,EAAsB,GACtB,CACA,KAAK,OAASjX,EACT,KAAA,QAAUA,EAAO,WAAW,KAAM,CACrC,mBAAoB,EAAA,CACrB,EACGiX,IACG,KAAA,cAAgB,IAAIlE,GAAoB,CAC3C,OAAQ,KAAK,OACb,MAAO5R,GAAS,KAAK,OAAO,MAC5B,OAAQC,GAAU,KAAK,OAAO,MAAA,CAC/B,EAEL,CAEA,IAAI,UAAU8V,EAAmB,CAC/B,KAAK,wBAA0B,GAC/B,KAAK,QAAQ,UAAYA,EACrB,KAAK,gBAAe,KAAK,cAAc,UAAYA,EACzD,CAEA,IAAI,WAAoB,CACtB,OAAO,KAAK,QAAQ,SACtB,CAEA,IAAI,QAAQC,EAAwB,CAClC,KAAK,wBAA0B,GAC/B,KAAK,QAAQ,QAAUA,EACnB,KAAK,gBAAe,KAAK,cAAc,QAAUA,EACvD,CAEA,IAAI,SAAyB,CAC3B,OAAO,KAAK,QAAQ,OACtB,CAEA,IAAI,SAASC,EAA0B,CACrC,KAAK,wBAA0B,GAC/B,KAAK,QAAQ,SAAWA,EACpB,KAAK,gBAAe,KAAK,cAAc,QAAUA,EACvD,CAEA,IAAI,UAA2B,CAC7B,OAAO,KAAK,QAAQ,QACtB,CAEA,IAAI,eAAeC,EAAwB,CACzC,KAAK,wBAA0B,GAC/B,KAAK,QAAQ,eAAiBA,EAC1B,KAAK,gBAAe,KAAK,cAAc,eAAiBA,EAC9D,CAEA,IAAI,gBAAyB,CAC3B,OAAO,KAAK,QAAQ,cACtB,CAEA,IAAI,WAAWC,EAAoB,CACjC,KAAK,wBAA0B,GAC/B,KAAK,QAAQ,WAAaA,EACtB,KAAK,gBAAe,KAAK,cAAc,WAAaA,EAC1D,CAEA,IAAI,YAAqB,CACvB,OAAO,KAAK,QAAQ,UACtB,CAEA,IAAI,YAAYlI,EAAe,CAC7B,KAAK,QAAQ,YAAcA,EACvB,KAAK,gBAAe,KAAK,cAAc,YAAcA,EAC3D,CAEA,IAAI,aAAsB,CACxB,OAAO,KAAK,QAAQ,WACtB,CAKA,IAAI,UACF5pB,EAKA,CACA,KAAK,sBAAwB,GAE3B,OAAOA,GAAS,UAChBA,aAAiB,gBACjBA,aAAiB,eAEjB,KAAK,QAAQ,UAAYA,EACrB,KAAK,gBAAe,KAAK,cAAc,UAAYA,KAElD,KAAA,QAAQ,UAAYA,EAAM,SAC3B,KAAK,gBACF,KAAA,cAAc,UAAYA,EAAM,gBAE3C,CAEA,IAAI,WAAqD,CACvD,OAAO,KAAK,QAAQ,SACtB,CAEA,IAAI,YACFA,EAKA,CACA,KAAK,wBAA0B,GAE7B,OAAOA,GAAS,UAChBA,aAAiB,gBACjBA,aAAiB,eAEjB,KAAK,QAAQ,YAAcA,EACvB,KAAK,gBAAe,KAAK,cAAc,YAAcA,KAEpD,KAAA,QAAQ,YAAcA,EAAM,SAC7B,KAAK,gBACF,KAAA,cAAc,YAAcA,EAAM,gBAE7C,CAEA,IAAI,aAAuD,CACzD,OAAO,KAAK,QAAQ,WACtB,CAGA,IAAI,KAAKiwB,EAAc,CACrB,KAAK,QAAQ,KAAOA,EAChB,KAAK,gBAAe,KAAK,cAAc,KAAOA,EACpD,CAEA,IAAI,MAAe,CACjB,OAAO,KAAK,QAAQ,IACtB,CAEA,IAAI,aAAanD,EAAkC,CACjD,KAAK,QAAQ,aAAeA,EACxB,KAAK,gBAAe,KAAK,cAAc,aAAeA,EAC5D,CAEA,IAAI,cAAmC,CACrC,OAAO,KAAK,QAAQ,YACtB,CAEA,IAAI,UAAUH,EAA4B,CACxC,KAAK,QAAQ,UAAYA,EACrB,KAAK,gBAAe,KAAK,cAAc,UAAYA,EACzD,CAEA,IAAI,WAA6B,CAC/B,OAAO,KAAK,QAAQ,SACtB,CAEA,KAAK4B,EAAe,CAClB,OAAIA,EACG,KAAA,QAAQ,KAAKA,CAAI,GAGtB,KAAK,QAAQ,OACT,KAAK,eAAe,KAAK,cAAc,QAEtC,IACT,CAEA,SAAS1xC,EAAWhX,EAAWO,EAAWV,EAAW,CACnD,YAAK,QAAQ,SAASmX,EAAGhX,EAAGO,EAAGV,CAAC,EAC5B,KAAK,eAAe,KAAK,cAAc,SAASmX,EAAGhX,EAAGO,EAAGV,CAAC,EACvD,IACT,CAEA,SAASijD,EAAc9rC,EAAWhX,EAAWksD,EAA+B,CAC1E,YAAK,sBAAwB,GAC7B,KAAK,QAAQ,SAASpJ,EAAM9rC,EAAGhX,EAAGksD,CAAQ,EACtC,KAAK,eAAe,KAAK,cAAc,SAASpJ,EAAM9rC,EAAGhX,CAAC,EACvD,IACT,CAEA,YAAY0rD,EAAqB,CAC1B,YAAA,QAAQ,YAAYA,CAAS,EAC9B,KAAK,eAAoB,KAAA,cAAc,YAAYA,CAAS,EACzD,IACT,CAEA,OAAOhD,EAAe,CACpB,OAAIA,EACG,KAAA,QAAQ,OAAOA,CAAI,GAGxB,KAAK,QAAQ,SACT,KAAK,eAAe,KAAK,cAAc,UAEtC,IACT,CAEA,WACE5F,EACA9rC,EACAhX,EACAksD,EACA,CACA,YAAK,QAAQ,WAAWpJ,EAAM9rC,EAAGhX,EAAGksD,CAAQ,EACxC,KAAK,eAAe,KAAK,cAAc,WAAWpJ,EAAM9rC,EAAGhX,CAAC,EACzD,IACT,CAEA,WAAWgX,EAAWhX,EAAWO,EAAWV,EAAW,CACrD,YAAK,QAAQ,WAAWmX,EAAGhX,EAAGO,EAAGV,CAAC,EAC9B,KAAK,eAAe,KAAK,cAAc,WAAWmX,EAAGhX,EAAGO,EAAGV,CAAC,EACzD,IACT,CAEA,YAAYijD,EAA2B,CAC9B,OAAA,KAAK,QAAQ,YAAYA,CAAI,CAEtC,CAEA,UAAU9rC,EAAI,EAAGhX,EAAI,EAAGO,EAAI,KAAK,OAAO,MAAOV,EAAI,KAAK,OAAO,OAAQ,CACrE,YAAK,QAAQ,UAAUmX,EAAGhX,EAAGO,EAAGV,CAAC,EAC7B,KAAK,eAAe,KAAK,cAAc,UAAUmX,EAAGhX,EAAGO,EAAGV,CAAC,EACxD,IACT,CAEA,MAAO,CACL,YAAK,QAAQ,OACT,KAAK,eAAe,KAAK,cAAc,OACtC,KAAA,cAAgB,IAAI,UACpB,KAAA,QAAQ,KAAK,KAAK,aAAa,EAC/B,KAAA,cAAgB,IAAI,OAClB,IACT,CAEA,SAAU,CACR,YAAK,QAAQ,UACT,KAAK,eAAe,KAAK,cAAc,UAC3C,KAAK,wBAA0B,GAC/B,KAAK,sBAAwB,GACxB,KAAA,cAAgB,IAAI,UACzB,KAAK,cAAgB,KAAK,QAAQ,IAAI,GAAK,IAAI,OACxC,IACT,CAEA,WAAY,CACV,YAAK,QAAQ,YACT,KAAK,eAAe,KAAK,cAAc,YACpC,IACT,CAEA,WAAY,CACV,YAAK,QAAQ,YACT,KAAK,eAAe,KAAK,cAAc,YAC3C,KAAK,cAAc,YACZ,IACT,CAEA,aAAa6oD,EAAO,KAAK,cAAeF,EAAY,KAAK,cAAe,CAChE,MAAA2D,EAAU,IAAI,OACZA,EAAA,QAAQzD,EAAMF,CAAS,EAC/B,KAAK,cAAgB2D,CACvB,CAIA,mBAAmB/rB,EAAsB,CACnC,OAAAA,EAAK,CAAC,YAAa,OACd,KAAK,QAAQ,gBAAgBA,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAExD,KAAK,QAAQ,gBAAgBA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CAEtD,CAIA,iBAAiBA,EAAsB,CACjC,OAAAA,EAAK,CAAC,YAAa,OACd,KAAK,QAAQ,cAAcA,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAEtD,KAAK,QAAQ,cAAcA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CAEpD,CAQA,UAAUppB,EAAWhX,EAAW,CACzB,YAAA,QAAQ,UAAUgX,EAAGhX,CAAC,EACvB,KAAK,eACF,KAAA,cAAc,UAAUgX,EAAGhX,CAAC,EAE9B,KAAA,cAAc,UAAUgX,EAAGhX,CAAC,EACjC,KAAK,aAAa,EACX,IACT,CAEA,OAAOosD,EAAgBC,EAAU,EAAGC,EAAU,EAAG,CAE1C,YAAA,UAAUD,EAASC,CAAO,EAC1B,KAAA,QAAQ,OAAOF,CAAM,EACtB,KAAK,eACF,KAAA,cAAc,OAAOA,CAAM,EAE7B,KAAA,cAAc,OAAOA,CAAM,EAChC,KAAK,UAAU,CAACC,EAAS,CAACC,CAAO,EACjC,KAAK,aAAa,EACX,IACT,CAEA,MAAMt1C,EAAWhX,EAAIgX,EAAGq1C,EAAU,EAAGC,EAAU,EAAG,CAE3C,YAAA,UAAUD,EAASC,CAAO,EAC1B,KAAA,QAAQ,MAAMt1C,EAAGhX,CAAC,EACnB,KAAK,eACF,KAAA,cAAc,MAAMgX,EAAGhX,CAAC,EAE1B,KAAA,cAAc,MAAMgX,EAAGhX,CAAC,EAC7B,KAAK,UAAU,CAACqsD,EAAS,CAACC,CAAO,EACjC,KAAK,aAAa,EACX,IACT,CAEA,OAAOt1C,EAAWhX,EAAW,CACtB,YAAA,QAAQ,OAAOgX,EAAGhX,CAAC,EACpB,KAAK,eAAoB,KAAA,cAAc,OAAOgX,EAAGhX,CAAC,EACjD,KAAA,cAAc,OAAOgX,EAAGhX,CAAC,EACvB,IACT,CAEA,OAAOgX,EAAWhX,EAAW,CACtB,YAAA,QAAQ,OAAOgX,EAAGhX,CAAC,EACpB,KAAK,eAAoB,KAAA,cAAc,OAAOgX,EAAGhX,CAAC,EACjD,KAAA,cAAc,OAAOgX,EAAGhX,CAAC,EACvB,IACT,CAEA,IACEgX,EACAhX,EACAmpD,EACAS,EACAC,EACAS,EACA,CACA,YAAK,QAAQ,IAAItzC,EAAGhX,EAAGmpD,EAAQS,EAAYC,EAAUS,CAAgB,EACjE,KAAK,eACP,KAAK,cAAc,IACjBtzC,EACAhX,EACAmpD,EACAS,EACAC,EACAS,EAAmB,GAAK,CAAA,EAE5B,KAAK,cAAc,IACjBtzC,EACAhX,EACAmpD,EACAS,EACAC,EACAS,CAAA,EAEK,IACT,CAEA,MAAM/9C,EAAYnB,EAAYoH,EAAY3B,EAAYs4C,EAAgB,CACpE,YAAK,QAAQ,MAAM58C,EAAInB,EAAIoH,EAAI3B,EAAIs4C,CAAM,EACrC,KAAK,eAAe,KAAK,cAAc,MAAM58C,EAAInB,EAAIoH,EAAI3B,EAAIs4C,CAAM,EACvE,KAAK,cAAc,MAAM58C,EAAInB,EAAIoH,EAAI3B,EAAIs4C,CAAM,EACxC,IACT,CAEA,QACEnyC,EACAhX,EACAusD,EACAC,EACAC,EACA7C,EACAC,EACAS,EACA,CACA,YAAK,QAAQ,QACXtzC,EACAhX,EACAusD,EACAC,EACAC,EACA7C,EACAC,EACAS,CAAA,EAGF,KAAK,cAAc,QACjBtzC,EACAhX,EACAusD,EACAC,EACAC,EACA7C,EACAC,EACAS,CAAA,EAEK,IACT,CAEA,iBAAiBtB,EAAaC,EAAajyC,EAAWhX,EAAW,CAC/D,YAAK,QAAQ,iBAAiBgpD,EAAKC,EAAKjyC,EAAGhX,CAAC,EACxC,KAAK,eAAe,KAAK,cAAc,iBAAiBgpD,EAAKC,EAAKjyC,EAAGhX,CAAC,EAC1E,KAAK,cAAc,iBAAiBgpD,EAAKC,EAAKjyC,EAAGhX,CAAC,EAC3C,IACT,CAEA,cACE4oD,EACAC,EACAC,EACAC,EACA/xC,EACAhX,EACA,CACA,YAAK,QAAQ,cAAc4oD,EAAMC,EAAMC,EAAMC,EAAM/xC,EAAGhX,CAAC,EACnD,KAAK,eACP,KAAK,cAAc,cAAc4oD,EAAMC,EAAMC,EAAMC,EAAM/xC,EAAGhX,CAAC,EAC/D,KAAK,cAAc,cAAc4oD,EAAMC,EAAMC,EAAMC,EAAM/xC,EAAGhX,CAAC,EACtD,IACT,CAEA,KAAKgX,EAAWhX,EAAWO,EAAWV,EAAW,CAC/C,YAAK,QAAQ,KAAKmX,EAAGhX,EAAGO,EAAGV,CAAC,EACxB,KAAK,eAAe,KAAK,cAAc,KAAKmX,EAAGhX,EAAGO,EAAGV,CAAC,EAC1D,KAAK,cAAc,KAAKmX,EAAGhX,EAAGO,EAAGV,CAAC,EAC3B,IACT,CAGA,qBACE0M,EACAnB,EACAoH,EACA3B,EACA67C,EACA,CACM,MAAAC,EAA2B,KAAK,QAAQ,qBAC5CpgD,EACAnB,EACAoH,EACA3B,CAAA,EAIF,OAAI67C,GACK,OAAA,QAAQA,CAAU,EAAE,QAAQ,CAAC,CAACjzB,EAAKF,CAAK,IAAM,CACnDozB,EAAS,aAAa,WAAWlzB,CAAG,EAAGF,CAAK,CAAA,CAE7C,EAEIozB,CAKT,CAEA,qBACEhzD,EACAvB,EACAjB,EACAoV,EACAnB,EACA8+C,EACAwC,EACA,CACM,MAAAC,EAA2B,KAAK,QAAQ,qBAC5ChzD,EACAvB,EACAjB,EACAoV,EACAnB,EACA8+C,CAAA,EAIF,OAAIwC,GACK,OAAA,QAAQA,CAAU,EAAE,QAAQ,CAAC,CAACjzB,EAAKF,CAAK,IAAM,CACnDozB,EAAS,aAAa,WAAWlzB,CAAG,EAAGF,CAAK,CAAA,CAE7C,EAEIozB,CAKT,CAOA,UACEr0B,KAMG8H,EACH,CACI,GAAAA,EAAK,SAAW,EAClB,KAAK,QAAQ,UAAU9H,EAAS,EAAG,CAAC,UAC3B8H,EAAK,SAAW,EAAG,CACtB,MAAAyjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACjB,KAAK,QAAQ,UAAU9H,EAASurB,EAAIC,CAAE,CAAA,SAC7B1jB,EAAK,SAAW,EAAG,CACtB,MAAAyjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACX4qB,EAAK5qB,EAAK,CAAC,EACX6qB,EAAK7qB,EAAK,CAAC,EACjB,KAAK,QAAQ,UAAU9H,EAASurB,EAAIC,EAAIkH,EAAIC,CAAE,CAAA,SACrC7qB,EAAK,SAAW,EAAG,CACtB,MAAAykB,EAAKzkB,EAAK,CAAC,EACX0kB,EAAK1kB,EAAK,CAAC,EACX8qB,EAAK9qB,EAAK,CAAC,EACX34B,EAAK24B,EAAK,CAAC,EACXyjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACX4qB,EAAK5qB,EAAK,CAAC,EACX6qB,EAAK7qB,EAAK,CAAC,EACZ,KAAA,QAAQ,UAAU9H,EAASusB,EAAIC,EAAIoG,EAAIzjD,EAAIo8C,EAAIC,EAAIkH,EAAIC,CAAE,CAAA,KAE9D,OAAM,IAAI,MACR,oDAAsD7qB,EAAK,MAAA,EAG/D,OAAI,KAAK,eAAe,KAAK,cAAc,UAAU9H,EAAS,GAAG8H,CAAI,EAC9D,IACT,CAEA,aACEykB,EAAK,EACLC,EAAK,EACLoG,EAAK,KAAK,OAAO,MACjBzjD,EAAK,KAAK,OAAO,OACjBmlD,EACW,CACX,OAAO,KAAK,QAAQ,aAAa/H,EAAIC,EAAIoG,EAAIzjD,EAAImlD,CAAQ,CAE3D,CAEA,aAAa/X,EAAsBgP,EAAK,EAAGC,EAAK,EAAG,CACjD,OAAO,KAAK,QAAQ,aAAajP,EAAWgP,EAAIC,CAAE,CAEpD,CAEA,cACEpP,EAOA+W,EACsB,CACtB,OAAO,KAAK,QAAQ,cAAc/W,EAAO+W,CAAU,CAErD,CAEA,UAAW,CACT,GAAI,KAAK,cAAe,CACtB,MAAMoB,EAAwB,KAAK,cAAc,iBAAiB,EAAI,EAChEC,EAAyB,KAAK,cAAc,OAAO,EACzD,MAAO,CAAE,IAAKD,EAAe,QAASC,CAAW,CAAA,KAEjD,OAAO,CAAE,IAAK,GAAI,QAAS,IAAK,CAEpC,CACF,EC3oBOC,GAAA,KAAQ,CACb,EACA,EACA,IACA,IAEA,YAAYr4B,EAAqB,CAC1B,KAAA,EAAIA,GAAS,GAAK,EAClB,KAAA,EAAIA,GAAS,GAAK,EAClB,KAAA,IAAMA,GAAS,KAAO,EACtB,KAAA,IAAMA,GAAS,KAAO,CAC7B,CAEA,eAAqC,CACnC,MAAO,CAAC,CAAC,IAAK,KAAK,IAAK,KAAK,GAAG,CAAC,CACnC,CAEA,gBAAgByH,EAAsB,CACpCA,EAAI,OAAO,KAAK,IAAK,KAAK,GAAG,CAC/B,CAEA,uBAAwB,CAChB,MAAA6wB,EAAY/I,GAAM,KAAK,EAAG,KAAK,EAAG,KAAK,IAAK,KAAK,GAAG,EAC1D,GAAI+I,IAAc,EAAG,CACnB,MAAMC,EAAO,KAAK,IAAI,KAAK,EAAG,KAAK,GAAG,EAChCC,EAAO,KAAK,IAAI,KAAK,EAAG,KAAK,GAAG,EAChCC,EAAO,KAAK,IAAI,KAAK,EAAG,KAAK,GAAG,EAChCC,EAAO,KAAK,IAAI,KAAK,EAAG,KAAK,GAAG,EAC/B,MAAA,CACL,EAAGH,EACH,EAAGC,EACH,MAAOC,EAAOF,EACd,OAAQG,EAAOF,CAAA,CACjB,KACK,CACC,MAAAG,EAAM,KAAK,IAAIL,CAAS,EACxB1D,EAAM,KAAK,IAAI0D,CAAS,EACxBM,EAAMhE,EAAM,KAAK,EAAI+D,EAAM,KAAK,EAChCE,EAAMjE,EAAM,KAAK,IAAM+D,EAAM,KAAK,IAClCG,EAAMlE,EAAM,KAAK,EAAI+D,EAAM,KAAK,EAChCI,EAAMnE,EAAM,KAAK,IAAM+D,EAAM,KAAK,IACjC,MAAA,CACL,EAAG,KAAK,IAAIC,EAAKC,CAAG,EACpB,EAAG,KAAK,IAAIC,EAAKC,CAAG,EACpB,MAAO,KAAK,IAAIH,EAAKC,CAAG,EAAI,KAAK,IAAID,EAAKC,CAAG,EAC7C,OAAQ,KAAK,IAAIC,EAAKC,CAAG,EAAI,KAAK,IAAID,EAAKC,CAAG,CAAA,CAElD,CACF,CAGA,YAAY73D,EAAqC,CACxC,MAAA,CACL,EAAG,KAAK,EAAIA,GAAK,KAAK,IAAM,KAAK,GACjC,EAAG,KAAK,EAAIA,GAAK,KAAK,IAAM,KAAK,EAAA,CAErC,CAEA,aAAa83D,EAA0C,CACrD,MAAMnhD,EAAK,KAAK,EACVnB,EAAK,KAAK,EACVwiB,EAAK8/B,EAAK,IACVrjC,EAAKqjC,EAAK,IACVC,EAAM,KAAK,IAAMphD,EACjBqhD,EAAMF,EAAK,EAAI9/B,EACjB,GAAA,CAAC+/B,GAAO,CAACC,EACJ,OAAA,KAEH,MAAA/iD,GAAM,KAAK,IAAMO,GAAMuiD,EACvBp9C,GAAMm9C,EAAK,EAAIrjC,GAAMujC,EAC3B,GAAKD,GAGL,GAAW,CAACC,EAEV,MAAO,CAAE,EAAGhgC,EAAI,EAAG/iB,GAAM+iB,EAAKrhB,GAAMnB,OAHpC,OAAO,CAAE,EAAGmB,EAAI,EAAGgE,GAAMhE,EAAKqhB,GAAMvD,GAKhC,MAAAwjC,GAAQ,CAACt9C,EAAKqd,EAAKvD,EAAKxf,EAAK0B,EAAKnB,IAAOP,EAAK0F,GAC9Cu9C,EAAOjjD,GAAMgjD,EAAOthD,GAAMnB,EAChC,OAAI,MAAMyiD,CAAI,GAAK,MAAMC,CAAI,EACpB,KAEF,CAAE,EAAGD,EAAM,EAAGC,CAAK,CAC5B,CACF,EC4CA,MAAAC,GA9HO,cAAkBhmC,EAAE,CAElB,GAEA,GAEA,YAEA,aAEA,UAEP,YAAY2M,EAAuB,CACjC,MAAMA,CAAO,EACb,KAAK,GAAKA,EAAQ,GAClB,KAAK,GAAKA,EAAQ,GACb,KAAA,YAAcA,GAAS,aAAe,EACtC,KAAA,aAAeA,GAAS,cAAgB,EACxC,KAAA,UAAYA,GAAS,WAAa,EACvC,KAAK,IAAMA,EAAQ,IACnB,KAAK,IAAMA,EAAQ,GACrB,CAGA,eAAqC,CAC5B,MAAA,CACL,CACE,IACA,KAAK,GACL,KAAK,GACL,KAAK,YACL,KAAK,aACL,KAAK,UACL,KAAK,IACL,KAAK,GACP,CAAA,CAEJ,CAEA,gBAAgByH,EAA4B,CACpC,KAAA,CAAC6xB,EAAIC,EAAIC,EAAIC,EAAIC,EAAaxE,EAAYC,CAAQ,EAAI,KAAK,QAC/D,KAAK,EACL,KAAK,EACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,YACL,KAAK,aACL,KAAK,SAAA,EAEH1tB,EAAA,QACF6xB,EACAC,EACAC,EACAC,EACAC,EACAxE,EACAC,EACA,CAAC,KAAK,SAAA,CAIV,CAEA,QACEt9C,EACAnB,EACAoH,EACA3B,EACAq9C,EACAC,EACAE,EACAj8C,EACA/I,EACA,CACM,MAAAqF,EAAK2/C,EAAM,IAAO,KAAK,GACvBC,GAAO/hD,EAAKiG,GAAM,EAClB+7C,GAAOnjD,EAAKyF,GAAM,EAElB29C,EAAO,KAAK,IAAI9/C,CAAC,EAAI4/C,EAAM,KAAK,IAAI5/C,CAAC,EAAI6/C,EACzCE,EAAO,CAAC,KAAK,IAAI//C,CAAC,EAAI4/C,EAAM,KAAK,IAAI5/C,CAAC,EAAI6/C,EAE1CG,EACHF,EAAOA,GAASN,EAAKA,GAAOO,EAAOA,GAASN,EAAKA,GACpD,GAAIO,EAAqB,EAAG,CAKpB,MAAAC,EAAO,KAAK,KAAKD,CAAkB,EACzC,MAAAR,EAAKS,EAAOT,EACZC,EAAKQ,EAAOR,EAEN,IAAI,MACR,2DAA2DD,CAAE,IAAIC,CAAE,GAAA,CAEvE,CAEA,MAAMS,EAAK,KAAK,MACbV,EAAKA,EAAKC,EAAKA,EAAKD,EAAKA,EAAKO,EAAOA,EAAON,EAAKA,EAAKK,EAAOA,IAC3DN,EAAKA,EAAKO,EAAOA,EAAON,EAAKA,EAAKK,EAAOA,EAAA,EAGxC12D,EAAIsa,GAAM/I,EAAK,EAAI,GACnBwlD,EAAQ/2D,EAAI82D,EAAKV,EAAKO,EAAQN,EAC9BW,EAAQh3D,EAAI82D,EAAK,CAACT,EAAKK,EAAQN,EAE/Ba,GAASxiD,EAAKiG,GAAM,EACpBw8C,GAAS5jD,EAAKyF,GAAM,EACpBm9C,EAAK,KAAK,IAAIt/C,CAAC,EAAImgD,EAAO,KAAK,IAAIngD,CAAC,EAAIogD,EAAOC,EAC/Cd,EAAK,KAAK,IAAIv/C,CAAC,EAAImgD,EAAO,KAAK,IAAIngD,CAAC,EAAIogD,EAAOE,EAE/CC,EAAc,CAACC,EAAYC,EAAYC,EAAYC,MACtDH,EAAKG,IAAMF,EAAKC,EAAK,EAAI,IAC1B,KAAK,MACFF,EAAKE,EAAKD,EAAKE,KACb,KAAK,KAAKH,EAAKA,EAAKC,EAAKA,CAAE,EAAI,KAAK,KAAKC,EAAKA,EAAKC,GAAKA,EAAE,EAAA,EAE3DC,EAAUL,EAAY,EAAG,EAAG1iD,EAAKyhD,EAAI5iD,EAAK6iD,CAAE,EAAIv/C,EAChD6gD,EAAcN,EAAY1iD,EAAKyhD,EAAI5iD,EAAK6iD,EAAIz7C,EAAKw7C,EAAIn9C,EAAKo9C,CAAE,EAE3D,MAAA,CAACD,EAAIC,EAAIC,EAAIC,EAAIz/C,EAAG4gD,EAASA,EAAUC,CAAW,CAC3D,CACF,EChDAC,GA9EO,cAA8BznC,EAAE,CAC9B,GACA,GACA,cAEP,YAAY2M,EAAkC,CAC5C,MAAMA,CAAO,EACb,KAAK,GAAKA,EAAQ,GAClB,KAAK,GAAKA,EAAQ,GAClB,KAAK,cACH,OAAOA,EAAQ,eAAiB,UAAYA,EAAQ,cAAgB,EACxE,CAIA,eAAqC,CACnC,GAAI,KAAK,cAAe,CACtB,MAAM+6B,EAAM,KAAK,GAAK,GAAK,KAAK,EAAI,KAAK,KAAO,EAC1CC,EAAM,KAAK,GAAK,GAAK,KAAK,EAAI,KAAK,KAAO,EACzC,MAAA,CAAC,CAAC,IAAKD,EAAKC,EAAK,KAAK,IAAK,KAAK,GAAG,CAAC,CAAA,KAEpC,OAAA,CAAC,CAAC,IAAK,KAAK,GAAI,KAAK,GAAI,KAAK,IAAK,KAAK,GAAG,CAAC,CAEvD,CAEA,gBAAgBvzB,EAAsB,CACpC,GAAI,KAAK,cAAe,CACtB,MAAMszB,EAAM,KAAK,GAAK,GAAK,KAAK,EAAI,KAAK,KAAO,EAC1CC,EAAM,KAAK,GAAK,GAAK,KAAK,EAAI,KAAK,KAAO,EAChDvzB,EAAI,iBAAiBszB,EAAKC,EAAK,KAAK,IAAK,KAAK,GAAG,CAAA,MAE7CvzB,EAAA,iBAAiB,KAAK,GAAI,KAAK,GAAI,KAAK,IAAK,KAAK,GAAG,CAE7D,CAEA,uBAAwB,CACtB,MAAMwzB,EAAO,CAAC,KAAK,EAAG,KAAK,GAAG,EACxBC,EAAO,CAAC,KAAK,EAAG,KAAK,GAAG,EAC1B,IAAAtzD,EAAG8Z,EAAG1W,EAAG9J,EACb,QAASoB,EAAI,EAAGA,EAAI,EAAG,EAAEA,EACvBsF,EACEtF,GAAK,EACD,KAAK,EAAI,EAAI,KAAK,GAAK,KAAK,IAC5B,KAAK,EAAI,EAAI,KAAK,GAAK,KAAK,IAClCof,EAAIpf,GAAK,EAAI,GAAK,KAAK,EAAI,EAAI,KAAK,GAAK,GAAK,KAAK,EAAI,EAAI,KAAK,GAChE0I,EAAI1I,GAAK,EAAI,KAAK,EAAI,KAAK,EACvB,KAAK,IAAIsF,CAAC,EAAI,QACZ1G,EAAA,CAACwgB,GAAK,EAAI9Z,GACV,EAAI1G,GAAKA,EAAI,GACd,CAAA+5D,EAAMC,CAAI,EAAE54D,CAAC,EAAE,KAAKsF,EAAI1G,EAAIA,EAAIwgB,EAAIxgB,EAAI8J,CAAC,GAIhD,MAAM0jD,EAAM,CAAE,EAAG,KAAK,IAAI,MAAM,EAAGuM,CAAI,EAAG,EAAG,KAAK,IAAI,MAAM,EAAGC,CAAI,GAC7D9Y,EAAM,CAAE,EAAG,KAAK,IAAI,MAAM,EAAG6Y,CAAI,EAAG,EAAG,KAAK,IAAI,MAAM,EAAGC,CAAI,GAC5D,MAAA,CACL,EAAGxM,EAAI,EACP,EAAGA,EAAI,EACP,MAAOtM,EAAI,EAAIsM,EAAI,EACnB,OAAQtM,EAAI,EAAIsM,EAAI,CAAA,CAExB,CAGA,YAAYxtD,EAAqC,CACxC,MAAA,CACL,GACG,EAAIA,IAAM,EAAIA,GAAK,KAAK,EACzB,GAAK,EAAIA,GAAKA,EAAI,KAAK,GACvBA,EAAIA,EAAI,KAAK,IACf,GACG,EAAIA,IAAM,EAAIA,GAAK,KAAK,EACzB,GAAK,EAAIA,GAAKA,EAAI,KAAK,GACvBA,EAAIA,EAAI,KAAK,GAAA,CAEnB,CACF,ECyQAi6D,GAnVO,MAAMC,WAAoB/nC,EAAE,CAC1B,IACA,IACA,IACA,IAEP,YAAY2M,EAA8B,CACxC,MAAMA,CAAO,EACb,KAAK,IAAMA,EAAQ,IACnB,KAAK,IAAMA,EAAQ,IACnB,KAAK,IAAMA,EAAQ,IACnB,KAAK,IAAMA,EAAQ,GACrB,CAIA,eAAqC,CACnC,MAAO,CAAC,CAAC,IAAK,KAAK,IAAK,KAAK,IAAK,KAAK,IAAK,KAAK,IAAK,KAAK,IAAK,KAAK,GAAG,CAAC,CAC3E,CAEA,gBAAgByH,EAAsB,CAChCA,EAAA,cACF,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GAAA,CAET,CAEA,uBAAwB,CA6EtB,IAAI7/B,EACF,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,GAAK,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,KACjE8Z,EAAI,GAAK,KAAK,IAAM,KAAK,GAAK,GAAK,KAAK,IAAM,KAAK,KACnD1W,EAAI,KAAK,EAAI,KAAK,IAClBqwD,GAAM,CAAC35C,EAAI,KAAK,KAAKA,EAAIA,EAAI,EAAI9Z,EAAIoD,CAAC,GAAK,EAAIpD,EAC/C0S,GAAM,CAACoH,EAAI,KAAK,KAAKA,EAAIA,EAAI,EAAI9Z,EAAIoD,CAAC,GAAK,EAAIpD,EACnD,MAAM0D,EAAI,CAAC,KAAK,EAAG,KAAK,GAAG,EACrBgX,EAAI,CAAC,KAAK,EAAG,KAAK,GAAG,EACvB,IAAAg5C,EACJ,MAAMC,EAAO,CAAA,EACb,KAAK,IAAIF,CAAE,EAAI,OAASA,EAAK,IAC7B,KAAK,IAAI/gD,CAAE,EAAI,OAASA,EAAK,IACzB+gD,GAAM,GAAKA,GAAM,IACbC,EAAA,KAAK,YAAYD,CAAE,EACvB/4C,EAAA,KAAKg5C,EAAI,CAAC,EACVhwD,EAAA,KAAKgwD,EAAI,CAAC,EACPC,EAAA,KAAK,CAAE,EAAGD,EAAI,EAAG,EAAGA,EAAI,EAAG,GAE9BhhD,GAAM,GAAKA,GAAM,IACbghD,EAAA,KAAK,YAAYhhD,CAAE,EACvBgI,EAAA,KAAKg5C,EAAI,CAAC,EACVhwD,EAAA,KAAKgwD,EAAI,CAAC,EACPC,EAAA,KAAK,CAAE,EAAGD,EAAI,EAAG,EAAGA,EAAI,EAAG,GAElC1zD,EAAI,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,GAAK,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,KACnE8Z,EAAA,GAAK,KAAK,IAAM,KAAK,GAAK,GAAK,KAAK,IAAM,KAAK,KAC/C1W,EAAA,KAAK,EAAI,KAAK,IACZqwD,GAAA,CAAC35C,EAAI,KAAK,KAAKA,EAAIA,EAAI,EAAI9Z,EAAIoD,CAAC,GAAK,EAAIpD,EACzC0S,GAAA,CAACoH,EAAI,KAAK,KAAKA,EAAIA,EAAI,EAAI9Z,EAAIoD,CAAC,GAAK,EAAIpD,EAC/C,KAAK,IAAIyzD,CAAE,EAAI,OAASA,EAAK,IAC7B,KAAK,IAAI/gD,CAAE,EAAI,OAASA,EAAK,IACzB+gD,GAAM,GAAKA,GAAM,IACbC,EAAA,KAAK,YAAYD,CAAE,EACvB/4C,EAAA,KAAKg5C,EAAI,CAAC,EACVhwD,EAAA,KAAKgwD,EAAI,CAAC,EACPC,EAAA,KAAK,CAAE,EAAGD,EAAI,EAAG,EAAGA,EAAI,EAAG,GAE9BhhD,GAAM,GAAKA,GAAM,IACbghD,EAAA,KAAK,YAAYhhD,CAAE,EACvBgI,EAAA,KAAKg5C,EAAI,CAAC,EACVhwD,EAAA,KAAKgwD,EAAI,CAAC,EACPC,EAAA,KAAK,CAAE,EAAGD,EAAI,EAAG,EAAGA,EAAI,EAAG,GAGlC,MAAME,EAAQ,CAAA,EACRvwD,EAAIswD,EAAK,OACf,QAASj5D,EAAI,EAAGA,EAAI2I,EAAG3I,IAAK,CAC1B,QAASkmB,EAAIlmB,EAAI,EAAGkmB,EAAIvd,EAAGud,IACrB+yC,EAAKj5D,CAAC,EAAE,IAAMi5D,EAAK/yC,CAAC,EAAE,GAAK+yC,EAAKj5D,CAAC,EAAE,IAAMi5D,EAAK/yC,CAAC,EAAE,IAAGA,EAAI,EAAElmB,GAEhEk5D,EAAM,KAAK,CAAE,EAAGD,EAAKj5D,CAAC,EAAE,EAAG,EAAGi5D,EAAKj5D,CAAC,EAAE,CAAG,CAAA,CAC3C,CACA,MAAMosD,EAAM,CAAE,EAAG,KAAK,IAAI,MAAM,KAAMpsC,CAAC,EAAG,EAAG,KAAK,IAAI,MAAM,KAAMhX,CAAC,GAC7D82C,EAAM,CAAE,EAAG,KAAK,IAAI,MAAM,KAAM9/B,CAAC,EAAG,EAAG,KAAK,IAAI,MAAM,KAAMhX,CAAC,GAC5D,MAAA,CACL,EAAGojD,EAAI,EACP,EAAGA,EAAI,EACP,MAAOtM,EAAI,EAAIsM,EAAI,EACnB,OAAQtM,EAAI,EAAIsM,EAAI,EACpB,KAAM8M,CAAA,CAEV,CAGA,YAAYt6D,EAAqC,CACxC,MAAA,CACL,EACE,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAI,KAAK,EAC1B,EAAI,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAIA,EAAI,KAAK,IAClC,EAAI,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAI,KAAK,IAAIA,EAAG,CAAC,EAAI,KAAK,IAC/C,KAAK,IAAIA,EAAG,CAAC,EAAI,KAAK,IACxB,EACE,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAI,KAAK,EAC1B,EAAI,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAIA,EAAI,KAAK,IAClC,EAAI,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAI,KAAK,IAAIA,EAAG,CAAC,EAAI,KAAK,IAC/C,KAAK,IAAIA,EAAG,CAAC,EAAI,KAAK,GAAA,CAE5B,CAEA,OAAO,MACLA,EACA0U,EACA8F,EACAwN,EACAqP,EACQ,CACR,MAAM8iC,EAAK,GAAKzlD,EAAK,EAAI8F,EAAK,EAAIwN,EAAK,EAAIqP,EACrCje,EAAKpZ,EAAIm6D,EAAK,EAAIzlD,EAAK,GAAK8F,EAAK,EAAIwN,EAC3C,OAAOhoB,EAAIoZ,EAAK,EAAI1E,EAAK,EAAI8F,CAC/B,CAOA,OAAO,OACL7D,EACAnB,EACAoH,EACA3B,EACAiO,EACAd,EACA4P,EACAvD,EACAxhB,EAAI,EACI,CACRA,EAAI,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAG,CAAC,CAAC,EAC9B,MAAMoK,EAAKpK,EAAI,EACTsnD,EAAU,CACd,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAC5D,OAAS,MAAQ,OAAS,KAAA,EAEtBC,EAAU,CACd,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,KAAA,EAElB,IAAIC,EAAM,EAEV,QAASr5D,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MAAM+B,EAAKka,EAAKk9C,EAAQn5D,CAAC,EAAIic,EACvBq9C,EAAQ,KAAK,MAAMv3D,EAAIwT,EAAIiG,EAAIsM,EAAI8O,CAAE,EACrC2iC,EAAQ,KAAK,MAAMx3D,EAAIqS,EAAIyF,EAAImN,EAAIqM,CAAE,EACpCgmC,GAAAD,EAAQp5D,CAAC,EAAI,KAAK,KAAKs5D,EAAQA,EAAQC,EAAQA,CAAK,CAC7D,CACA,OAAOt9C,EAAKo9C,CACd,CAEA,OAAOxnD,EAAI,EAAW,CACpB,OAAOinD,GAAY,OACjB,KAAK,EACL,KAAK,EACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACLjnD,CAAA,CAEJ,CAGA,UAAUzM,EAAoB,CAC5B,MAAMmQ,EAAK,KAAK,EACVnB,EAAK,KAAK,EACVoH,EAAK,KAAK,IACV3B,EAAK,KAAK,IACViO,EAAK,KAAK,IACVd,EAAK,KAAK,IACV4P,EAAK,KAAK,IACVvD,EAAK,KAAK,IAChB,GAAIjuB,EAAK,GAAK0zD,GAAY,OAAOvjD,EAAInB,EAAIoH,EAAI3B,EAAIiO,EAAId,EAAI4P,EAAIvD,CAAE,EAAIjuB,EAC1D,MAAA,GAET,MAAMxG,EAAI,EACV,IAAIinC,EAAOjnC,EAAI,EACXoZ,EAAKpZ,EAAIinC,EACTl9B,EAAImwD,GAAY,OAAOvjD,EAAInB,EAAIoH,EAAI3B,EAAIiO,EAAId,EAAI4P,EAAIvD,EAAIrb,CAAE,EAC7D,KAAO,KAAK,IAAIrP,EAAIvD,CAAE,EAAI,KAChBygC,GAAA,EACD7tB,IAAArP,EAAIvD,EAAK,EAAI,IAAMygC,EACtBl9B,EAAAmwD,GAAY,OAAOvjD,EAAInB,EAAIoH,EAAI3B,EAAIiO,EAAId,EAAI4P,EAAIvD,EAAIrb,CAAE,EAEpD,OAAAA,CACT,CAGA,wBAAwBgjB,EAAgB,CAChC,MAAAp8B,EAAI,KAAK,UAAUo8B,CAAM,EACzB+9B,EAAK,EAAIn6D,EACb46D,EAAM,KAAK,IAAIT,EAAI,CAAC,EACpBU,EAAM,KAAK,IAAIV,EAAI,CAAC,EACpB/gD,EAAKpZ,EAAIA,EACTgnB,EAAK5N,EAAKpZ,EACVohB,EACEw5C,EAAM,KAAK,EACXC,EAAM,EAAI76D,EAAI,KAAK,IACnBm6D,EAAK,EAAIn6D,EAAIA,EAAI,KAAK,IACtBgnB,EAAK,KAAK,IACZ5c,EACEwwD,EAAM,KAAK,EACXC,EAAM,EAAI76D,EAAI,KAAK,IACnBm6D,EAAK,EAAIn6D,EAAIA,EAAI,KAAK,IACtBgnB,EAAK,KAAK,IACZ8zC,EACE,KAAK,EACL,EAAI96D,GAAK,KAAK,IAAM,KAAK,GACzBoZ,GAAM,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,GACvC2hD,EACE,KAAK,EACL,EAAI/6D,GAAK,KAAK,IAAM,KAAK,GACzBoZ,GAAM,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,GACvC4hD,EACE,KAAK,IACL,EAAIh7D,GAAK,KAAK,IAAM,KAAK,KACzBoZ,GAAM,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,KACvCtX,EACE,KAAK,IACL,EAAI9B,GAAK,KAAK,IAAM,KAAK,KACzBoZ,GAAM,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,KACvCm1C,EAAK4L,EAAK,KAAK,EAAIn6D,EAAI,KAAK,IAC5BwuD,EAAK2L,EAAK,KAAK,EAAIn6D,EAAI,KAAK,IAC5Bo4D,EAAK+B,EAAK,KAAK,IAAMn6D,EAAI,KAAK,IAC9Bq4D,EAAK8B,EAAK,KAAK,IAAMn6D,EAAI,KAAK,IAC9BmuD,EAAQ,GAAM,KAAK,MAAM2M,EAAKE,EAAID,EAAKj5D,CAAE,EAAI,IAAO,KAAK,GAEpD,MAAA,CACL,EAAAsf,EACA,EAAAhX,EACA,EAAG,CACD,EAAG0wD,EACH,EAAGC,CACL,EACA,EAAG,CACD,EAAGC,EACH,EAAGl5D,CACL,EACA,MAAO,CACL,EAAGysD,EACH,EAAGC,CACL,EACA,IAAK,CACH,EAAG4J,EACH,EAAGC,CACL,EACA,MAAAlK,CAAA,CAEJ,CACF,EC1VM8M,GAAM,KAAK,GAAK,EAOtB,SAASC,GAAkB5B,EAAYC,EAAYC,EAAYC,EAAY,CACzE,MAAM0B,EAAO7B,EAAKG,EAAKF,EAAKC,EAAK,EAAI,GAAK,EACtC,IAAAY,EAAMd,EAAKE,EAAKD,EAAKE,EAMzB,OAAIW,EAAM,IACFA,EAAA,GAEJA,EAAM,KACFA,EAAA,IAGDe,EAAO,KAAK,KAAKf,CAAG,CAC7B,CAOA,SAASgB,GACPzkD,EACAnB,EACAoH,EACA3B,EACAuB,EACA/I,EACA6kD,EACAC,EACA8C,EACAC,EACA,CAOA,MAAMC,EAAOD,GAAW3kD,EAAKiG,GAAO,EAAKy+C,GAAW7lD,EAAKyF,GAAO,EAC1DugD,EAAO,CAACH,GAAW1kD,EAAKiG,GAAO,EAAK0+C,GAAW9lD,EAAKyF,GAAO,EAE3DwgD,EAAQnD,EAAKA,EACboD,EAAQnD,EAAKA,EACboD,EAASJ,EAAMA,EACfK,EAASJ,EAAMA,EAOrB,IAAIK,EAAWJ,EAAQC,EAAQD,EAAQG,EAASF,EAAQC,EAEpDE,EAAW,IAEFA,EAAA,GAGDA,GAAAJ,EAAQG,EAASF,EAAQC,EACrCE,EAAW,KAAK,KAAKA,CAAQ,GAAKr/C,IAAO/I,EAAK,GAAK,GAE7C,MAAAqoD,EAAQD,EAAWvD,EAAMC,EAAMiD,EAC/BO,EAAQF,EAAW,CAACtD,EAAMD,EAAMiD,EAOhCnD,EAAKkD,EAAUQ,EAAMT,EAAUU,GAAOplD,EAAKiG,GAAM,EACjDy7C,EAAKgD,EAAUS,EAAMR,EAAUS,GAAOvmD,EAAKyF,GAAM,EAMjD+gD,GAAOT,EAAMO,GAAOxD,EACpB2D,GAAOT,EAAMO,GAAOxD,EACpB2D,GAAO,CAACX,EAAMO,GAAOxD,EACrB6D,GAAO,CAACX,EAAMO,GAAOxD,EAErB6D,EAASlB,GAAkB,EAAG,EAAGc,EAAKC,CAAG,EAC/C,IAAItC,EAAcuB,GAAkBc,EAAKC,EAAKC,EAAKC,CAAG,EAElD,OAAA1oD,IAAO,GAAKkmD,EAAc,IACbA,GAAAsB,IAEbxnD,IAAO,GAAKkmD,EAAc,IACbA,GAAAsB,IAGV,CAAC7C,EAAIC,EAAI+D,EAAQzC,CAAW,CACrC,CAMA,SAAS0C,GAAqBD,EAAgBzC,EAAqB,CACjE,MAAMxL,EAAS,mBAAS,KAAK,IAAIwL,EAAc,CAAC,EAW1ChjD,EAAK,KAAK,IAAIylD,CAAM,EACpB5mD,EAAK,KAAK,IAAI4mD,CAAM,EACpBx/C,EAAK,KAAK,IAAIw/C,EAASzC,CAAW,EAClC1+C,EAAK,KAAK,IAAImhD,EAASzC,CAAW,EAEjC,MAAA,CACLhjD,EACAnB,EACAmB,EAAKnB,EAAK24C,EACV34C,EAAKmB,EAAKw3C,EACVvxC,EAAK3B,EAAKkzC,EACVlzC,EAAK2B,EAAKuxC,EACVvxC,EACA3B,CAAA,CAEJ,CAagB,SAAAqhD,GACd3lD,EACAnB,EACAoH,EACA3B,EACAuB,EACA/I,EACA6kD,EACAC,EACAE,EACA,CACA,MAAM4C,EAAU,KAAK,IAAK5C,EAAMwC,GAAO,GAAG,EACpCK,EAAU,KAAK,IAAK7C,EAAMwC,GAAO,GAAG,EAIpCM,EAAOD,GAAW3kD,EAAKiG,GAAO,EAAKy+C,GAAW7lD,EAAKyF,GAAO,EAC1DugD,EAAO,CAACH,GAAW1kD,EAAKiG,GAAO,EAAK0+C,GAAW9lD,EAAKyF,GAAO,EAE7D,GAAAsgD,IAAQ,GAAKC,IAAQ,EAEvB,MAAO,GAGL,GAAAlD,IAAO,GAAKC,IAAO,EAErB,MAAO,GAKJD,EAAA,KAAK,IAAIA,CAAE,EACXC,EAAA,KAAK,IAAIA,CAAE,EAEhB,MAAMgE,EAAUhB,EAAMA,GAAQjD,EAAKA,GAAOkD,EAAMA,GAAQjD,EAAKA,GACzDgE,EAAS,IACLjE,GAAA,KAAK,KAAKiE,CAAM,EAChBhE,GAAA,KAAK,KAAKgE,CAAM,GAKlB,MAAAjrC,EAAK8pC,GAAezkD,EAAInB,EAAIoH,EAAI3B,EAAIuB,EAAI/I,EAAI6kD,EAAIC,EAAI8C,EAASC,CAAO,EAEpEz9B,EAAS,CAAA,EACX,IAAAu+B,EAAS9qC,EAAG,CAAC,EACbqoC,EAAcroC,EAAG,CAAC,EAKtB,MAAMmR,EAAW,KAAK,IAAI,KAAK,KAAK,KAAK,IAAIk3B,CAAW,GAAKsB,GAAM,EAAE,EAAG,CAAC,EAY1DtB,GAAAl3B,EAEf,QAASrhC,EAAI,EAAGA,EAAIqhC,EAAUrhC,IAC5By8B,EAAO,KAAKw+B,GAAqBD,EAAQzC,CAAW,CAAC,EAC3CyC,GAAAzC,EAML,OAAA97B,EAAO,IAAK2+B,GAAU,CAC3B,QAASp7D,EAAI,EAAGA,EAAIo7D,EAAM,OAAQp7D,GAAK,EAAG,CACpC,IAAA,EAAIo7D,EAAMp7D,EAAI,CAAC,EACfgJ,EAAIoyD,EAAMp7D,EAAI,CAAC,EAGd,GAAAk3D,EACAluD,GAAAmuD,EAGC,MAAAvzC,EAAKs2C,EAAU,EAAID,EAAUjxD,EAC7B8Z,EAAKm3C,EAAU,EAAIC,EAAUlxD,EAGnCoyD,EAAMp7D,EAAI,CAAC,EAAI4jB,EAAKsM,EAAG,CAAC,EACxBkrC,EAAMp7D,EAAI,CAAC,EAAI8iB,EAAKoN,EAAG,CAAC,CAC1B,CAEO,OAAAkrC,CAAA,CACR,CACH,CAIgB,SAAAC,GACd9lD,EACAnB,EACA8iD,EACAC,EACAlK,EACAqO,EACAC,EACA//C,EACA3B,EACA2hD,EACY,CACN,MAAAC,EAAQ,KAAK,GAAK,IAAO,IACzBC,EAAO,KAAK,GAAK,KAAQ,CAACzO,GAAS,GACzC,IAAI0O,EAAkB,CAAA,EAClB9M,EACJ,MAAM+M,EAAS,SAAU57C,GAAWhX,GAAW0yD,GAAa,CACpD,MAAAr4D,GAAI2c,GAAI,KAAK,IAAI07C,EAAG,EAAI1yD,GAAI,KAAK,IAAI0yD,EAAG,EACxCG,EAAI77C,GAAI,KAAK,IAAI07C,EAAG,EAAI1yD,GAAI,KAAK,IAAI0yD,EAAG,EAC9C,MAAO,CAAE,EAAGr4D,GAAG,EAAGw4D,CAAE,CAAA,EAElB,IAAA1oD,EACA8F,EACA+9C,EACAC,EACJ,GAAKuE,EA2CHroD,EAAKqoD,EAAU,CAAC,EAChBviD,EAAKuiD,EAAU,CAAC,EAChBxE,EAAKwE,EAAU,CAAC,EAChBvE,EAAKuE,EAAU,CAAC,MA9CF,CACd3M,EAAK+M,EAAOrmD,EAAInB,EAAI,CAACsnD,CAAG,EACxBnmD,EAAKs5C,EAAG,EACRz6C,EAAKy6C,EAAG,EACRA,EAAK+M,EAAOpgD,EAAI3B,EAAI,CAAC6hD,CAAG,EACxBlgD,EAAKqzC,EAAG,EACRh1C,EAAKg1C,EAAG,EACF,MAEJ7uC,IAAKzK,EAAKiG,GAAM,EAChBxS,IAAKoL,EAAKyF,GAAM,EAClB,IAAIhR,GAAKmX,GAAIA,IAAMk3C,EAAKA,GAAOluD,GAAIA,IAAMmuD,EAAKA,GAC1CtuD,GAAI,IACFA,GAAA,KAAK,KAAKA,EAAC,EACfquD,EAAKruD,GAAIquD,EACTC,EAAKtuD,GAAIsuD,GAEL,MAAA2E,GAAM5E,EAAKA,EACf6E,EAAM5E,EAAKA,EACX7tD,GACGgyD,GAAkBC,EAAa,GAAK,GACrC,KAAK,KACH,KAAK,KACFO,GAAMC,EAAMD,GAAM9yD,GAAIA,GAAI+yD,EAAM/7C,GAAIA,KAClC87C,GAAM9yD,GAAIA,GAAI+yD,EAAM/7C,GAAIA,GAC7B,CAAA,EAENg3C,EAAM1tD,EAAI4tD,EAAKluD,GAAKmuD,GAAM5hD,EAAKiG,GAAM,EACrCy7C,EAAM3tD,EAAI,CAAC6tD,EAAKn3C,GAAKk3C,GAAM9iD,EAAKyF,GAAM,EACjC1G,EAAA,KAAK,KAAK,SAASiB,EAAK6iD,GAAME,GAAI,QAAQ,CAAC,CAAC,CAAC,EAC7Cl+C,EAAA,KAAK,KAAK,SAASY,EAAKo9C,GAAME,GAAI,QAAQ,CAAC,CAAC,CAAC,EAElDhkD,EAAKoC,EAAKyhD,EAAK,KAAK,GAAK7jD,EAAKA,EAC9B8F,EAAKuC,EAAKw7C,EAAK,KAAK,GAAK/9C,EAAKA,EAC9B9F,EAAK,IAAMA,EAAK,KAAK,GAAK,EAAIA,GAC9B8F,EAAK,IAAMA,EAAK,KAAK,GAAK,EAAIA,GAC1BsiD,GAAcpoD,EAAK8F,IAChB9F,EAAAA,EAAK,KAAK,GAAK,GAElB,CAACooD,GAActiD,EAAK9F,IACjB8F,EAAAA,EAAK,KAAK,GAAK,EACtB,CAOF,IAAI+iD,EAAK/iD,EAAK9F,EACd,GAAI,KAAK,IAAI6oD,CAAE,EAAIP,EAAM,CACvB,MAAMQ,GAAQhjD,EACZijD,GAAQ1gD,EACR2gD,GAAQtiD,EACVZ,EAAK9F,EAAKsoD,GAAQF,GAActiD,EAAK9F,EAAK,EAAI,IAC9CqI,EAAKw7C,EAAKE,EAAK,KAAK,IAAIj+C,CAAE,EAC1BY,EAAKo9C,EAAKE,EAAK,KAAK,IAAIl+C,CAAE,EACpB0iD,EAAAN,GAAK7/C,EAAI3B,EAAIq9C,EAAIC,EAAIlK,EAAO,EAAGsO,EAAYW,GAAOC,GAAO,CAC7DljD,EACAgjD,GACAjF,EACAC,CAAA,CACD,CACH,CACA+E,EAAK/iD,EAAK9F,EACV,MAAMipD,EAAK,KAAK,IAAIjpD,CAAE,EACpBkpD,EAAK,KAAK,IAAIlpD,CAAE,EAChB0F,EAAK,KAAK,IAAII,CAAE,EAChBV,EAAK,KAAK,IAAIU,CAAE,EAChBra,EAAI,KAAK,IAAIo9D,EAAK,CAAC,EACnBM,EAAM,EAAI,EAAKpF,EAAKt4D,EACpB29D,EAAM,EAAI,EAAKpF,EAAKv4D,EACpBiV,EAAK,CAAC0B,EAAInB,CAAE,EACZmF,EAAK,CAAChE,EAAK+mD,EAAKD,EAAIjoD,EAAKmoD,EAAKH,CAAE,EAChCv1C,EAAK,CAACrL,EAAK8gD,EAAK/jD,EAAIsB,EAAK0iD,EAAK1jD,CAAE,EAChCqd,GAAK,CAAC1a,EAAI3B,CAAE,EAGd,OAFAN,EAAG,CAAC,EAAI,EAAI1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EACxBA,EAAG,CAAC,EAAI,EAAI1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EACpBiiD,EACK,CAAC,CAAC,GAAGjiD,EAAI,GAAGsN,EAAI,GAAGqP,EAAE,CAAC,EAAE,OAAOylC,CAAG,EAElC,CAAC,CAAC,GAAGpiD,EAAI,GAAGsN,EAAI,GAAGqP,EAAE,CAAC,EAAE,OAAOylC,CAAG,EAAE,IAAKx1D,IAAM,CACpD,MAAMq2D,GAAmB,CAAA,EACzB,QAASx8D,GAAI,EAAGwC,GAAK2D,GAAE,OAAQnG,GAAIwC,GAAIxC,KAC9Bw8D,GAAAx8D,EAAC,EACNA,GAAI,EAAI47D,EAAOz1D,GAAEnG,GAAI,CAAC,EAAGmG,GAAEnG,EAAC,EAAG07D,CAAG,EAAE,EAAIE,EAAOz1D,GAAEnG,EAAC,EAAGmG,GAAEnG,GAAI,CAAC,EAAG07D,CAAG,EAAE,EAEjE,OAAAc,EAAA,CACR,CAEL,CAEO,SAASC,GACdlnD,EACAnB,EACA4iD,EACAC,EACAz7C,EACA3B,EACA,CACO,MAAA,CACLtE,EAAK,EAAK,EAAI,EAAKyhD,EACnB5iD,EAAK,EAAK,EAAI,EAAK6iD,EACnBz7C,EAAK,EAAK,EAAI,EAAKw7C,EACnBn9C,EAAK,EAAK,EAAI,EAAKo9C,EACnBz7C,EACA3B,CAAA,CAEJ,CAEO,SAAS6iD,GAAInnD,EAAYnB,EAAYoH,EAAY3B,EAAY,CAClE,MAAO,CAACtE,EAAInB,EAAIoH,EAAI3B,EAAI2B,EAAI3B,CAAE,CAChC,CCrXO,MAAM8iD,GAAkD,CAC7D,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,CAEL,EAYgB,SAAAC,GAAiBC,EAAU,OAA4B,CAM9D,OALI,SAAS,gBAAgB,KAClC,SACA,6BACAA,CAAA,CAGJ,CAEO,SAASC,IAAgC,CAEvC,OADMF,GAAiB,MAAM,CAEtC,CAEa,MAAAG,GAAoBz/B,GACxBA,aAAc,YAAcA,EAAG,UAAY,OAGpC,SAAA0/B,GACdC,EACAl7B,EAAO,QACP,CACO,OAAAm7B,GACLz/B,GAAUw/B,CAAsC,EAChD,GAAGl7B,CAAI,MAAA,CAEX,CAEgB,SAAAo7B,GAAsBC,EAAmBr7B,EAAO,QAAS,CACvE,OAAOm7B,GAAOr/B,GAAOu/B,CAAS,EAAG,GAAGr7B,CAAI,MAAM,CAChD,CAEO,SAASs7B,GAA2B//B,EAAiB,CAC1D,OAAOD,GAAYC,CAAE,CACvB,CAMO,SAASggC,GAAUthC,EAAa,CACrC,OAAI,OAAOA,GAAQ,SAAiB,IACpCA,EAAMA,EAAI,OAGR,0CAA0C,KAAKA,CAAG,GAAK,UAAU,KAAKA,CAAG,EAG7E,CAEO,SAASuhC,GAAe7L,EAAmC,CACzD,OAAAA,EACJ,IAAKlqB,GAAS,CACT,GAAA,CAACA,EAAK,CAAC,EACF,MAAA,GAET,OAAQA,EAAK,CAAC,EAAE,YAAe,EAAA,CAC7B,IAAK,IACH,MAAO,GAAGA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,GAChG,IAAK,IACI,MAAA,GAAGA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,GACrF,IAAK,IACL,IAAK,IACH,MAAO,GAAGA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC,GAC/D,QACS,OAAAA,EAAK,CAAC,EAAI,IAAMA,EAAK,MAAM,CAAC,EAAE,KAAK,GAAG,CACjD,CAAA,CACD,EACA,KAAK,GAAG,CACb,CAGO,SAASg2B,GAAa9L,EAAmC,CAC9D,MAAM1xB,EAA4B,CAAA,EAC9B,OAACs9B,GAAU5L,CAAI,GAIdA,EAAA,QACH,mCACA,CAAC+L,EAAmB9L,EAAiB+L,IAA+B,CAC9D,IAAAlgC,EAAOm0B,EAAQ,cACb,MAAAvoB,EAAiBu0B,GAAkBD,CAAU,EASnD,IANIlgC,GAAQ,KAAO4L,EAAK,OAASuzB,GAAwBn/B,CAAI,IACtDwC,EAAA,KAAK,CAAC2xB,EAAS,GAAGvoB,EAAK,OAAO,EAAGuzB,GAAwBn/B,CAAI,CAAC,CAAC,CAAC,EAC9DA,EAAA,IACGm0B,EAAAA,GAAW,IAAM,IAAM,KAG5BvoB,EAAK,QAAQ,CAClB,GAAIA,EAAK,OAASuzB,GAAwBn/B,CAAI,EAC5C,MAAM,IAAI,MACR,4BAA4BigC,CAAS,gBAAgB9L,CAAO,aAAavoB,CAAI,IAAA,EAG/EpJ,EAAK,KAAK,CACR2xB,EACA,GAAGvoB,EAAK,OAAO,EAAGuzB,GAAwBn/B,CAAI,CAAC,CAAA,CAChD,CAEL,CAEA,OAAIA,GAAQ,KACLwC,EAAA,KAAK,CAAC2xB,CAAO,CAAC,EAGd,EACT,CAAA,EAEK3xB,CACT,CAGO,SAAS49B,GACdlM,EACqB,CACrB,IAAI+B,EAAS,EACTC,EAAS,EACT1zC,EAAI,EACJhX,EAAI,EAED,OAAA0oD,EAAK,IAAI,SAAUmM,EAAK,CACvB,MAAArgC,EAAOqgC,EAAI,CAAC,EACZlM,EAAUn0B,EAAK,cAGrB,GAAIA,GAAQm0B,EAEV,OADAkM,EAAI,CAAC,EAAIlM,EACDn0B,EAAM,CACZ,IAAK,IACHqgC,EAAI,CAAC,GAAK79C,EACV69C,EAAI,CAAC,GAAK70D,EACV,MACF,IAAK,IACH60D,EAAI,CAAC,GAAK70D,EACV,MACF,IAAK,IACH60D,EAAI,CAAC,GAAK79C,EACV,MACF,QACE,QAAShgB,EAAI,EAAGA,EAAI69D,EAAI,QACrBA,EAAI79D,GAAG,GAAgBggB,EACvB69C,EAAI79D,GAAG,GAAgBgJ,CAE9B,CAGF,OAAQ2oD,EAAS,CACf,IAAK,IACC3xC,EAAAyzC,EACAzqD,EAAA0qD,EACJ,MACF,IAAK,IACH1zC,EAAI69C,EAAI,CAAC,EACT,MACF,IAAK,IACH70D,EAAI60D,EAAI,CAAC,EACT,MACF,IAAK,IACC79C,EAAAyzC,EAASoK,EAAI,CAAC,EACd70D,EAAA0qD,EAASmK,EAAI,CAAC,EAClB,MACF,QACM79C,EAAA69C,EAAIA,EAAI,OAAS,CAAC,EAClB70D,EAAA60D,EAAIA,EAAI,OAAS,CAAC,CAC1B,CAEO,OAAAA,CAAA,CACR,CACH,CAEO,SAASC,GACdpM,EACqB,CACrB,IAAI+B,EAAS,EACTC,EAAS,EACT1zC,EAAI,EACJhX,EAAI,EAED,OAAA0oD,EAAK,IAAI,SAAUmM,EAAK,CACvB,MAAArgC,EAAOqgC,EAAI,CAAC,EACZlM,EAAUn0B,EAAK,cAGrB,GAAIA,GAAQm0B,EAEV,OADAkM,EAAI,CAAC,EAAIlM,EACDn0B,EAAM,CACZ,IAAK,IACHqgC,EAAI,CAAC,GAAK79C,EACV69C,EAAI,CAAC,GAAK70D,EACV,MACF,IAAK,IACH60D,EAAI,CAAC,GAAK70D,EACV,MACF,IAAK,IACH60D,EAAI,CAAC,GAAK79C,EACV,MACF,QACE,QAAShgB,EAAI,EAAGA,EAAI69D,EAAI,QACrBA,EAAI79D,GAAG,GAAgBggB,EACvB69C,EAAI79D,GAAG,GAAgBgJ,CAE9B,CAGF,OAAQ2oD,EAAS,CACf,IAAK,IACC3xC,EAAAyzC,EACAzqD,EAAA0qD,EACJ,MACF,IAAK,IACH1zC,GAAK69C,EAAI,CAAC,EACV,MACF,IAAK,IACH70D,GAAK60D,EAAI,CAAC,EACV,MACF,IAAK,IACH79C,GAAK69C,EAAI,CAAC,EACV70D,GAAK60D,EAAI,CAAC,EACVpK,GAAUoK,EAAI,CAAC,EACfnK,GAAUmK,EAAI,CAAC,EACf,MACF,QACO79C,GAAA69C,EAAIA,EAAI,OAAS,CAAC,EAClB70D,GAAA60D,EAAIA,EAAI,OAAS,CAAC,CAC3B,CAEO,OAAAA,CAAA,CACR,CACH,CAIO,SAASE,GACdrM,EACqB,CACrB,MAAMj1B,EAA8B,CAAA,EACpC,IAAIg3B,EAAS,EACTC,EAAS,EACT1zC,EAAI,EACJhX,EAAI,EACJg1D,EAAQ,EACRC,EAAQ,EACRC,EAAU,EACVC,EAAU,EAEVC,EAEJ,QAASp+D,EAAI,EAAGw/C,EAAMkS,EAAK,OAAQ1xD,EAAIw/C,EAAKx/C,IAAK,CAC3C,IAAA69D,EAAMnM,EAAK1xD,CAAC,EACV,MAAA2xD,EAAUkM,EAAI,CAAC,EAErB,OAAQlM,EAAS,CACf,IAAK,IACH8B,EAASoK,EAAI,CAAC,EACdnK,EAASmK,EAAI,CAAC,EACd,MACF,IAAK,IACH,MAAMQ,EAASnD,GACbl7C,EACAhX,EACA60D,EAAI,CAAC,EACLA,EAAI,CAAC,EACLA,EAAI,CAAC,EACLA,EAAI,CAAC,EACLA,EAAI,CAAC,EACLA,EAAI,CAAC,EACLA,EAAI,CAAC,CAAA,EAaP,GAAI,CAACQ,EAAO,OAAQ,SACbA,EAAA,QAAQ,CAACjD,EAAOl1C,IAAM,CAErB,KAAA,CAACvjB,EAAIvB,EAAImU,EAAInB,EAAIoH,EAAI3B,EAAIiO,EAAId,CAAE,EAAIo0C,EAGzCyC,EAAM,CAAC,IAAKtoD,EAAInB,EAAIoH,EAAI3B,EAAIiO,EAAId,CAAE,EAC9Bd,EAAIm4C,EAAO,OAAS,GACtB5hC,EAAO,KAAKohC,CAAG,CACjB,CACD,EACD,MACF,IAAK,IAEH,IAAI7G,EAAKh3C,EACLi3C,EAAKjuD,GACLo1D,GAAe,KAAOA,GAAe,OACvCpH,GAAMA,EAAKkH,EACXjH,GAAMA,EAAKkH,GAEbN,EAAM,CAAC,IAAK7G,EAAIC,EAAI4G,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,EAClD,MACF,IAAK,IACCO,GAAe,KAAOA,GAAe,KACvCJ,EAAQh+C,EAAI,EAAIg+C,EAChBC,EAAQj1D,EAAI,EAAIi1D,IAERD,EAAAh+C,EACAi+C,EAAAj1D,GAEV60D,EAAM,CAAC,IAAK,GAAGpB,GAAIz8C,EAAGhX,EAAGg1D,EAAOC,EAAOJ,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,CAAC,EACtD,MACF,IAAK,IACHG,EAAQH,EAAI,CAAC,EACbI,EAAQJ,EAAI,CAAC,EACbA,EAAM,CAAC,IAAK,GAAGpB,GAAIz8C,EAAGhX,EAAG60D,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,CAAC,EACxD,MACF,IAAK,IACHA,EAAM,CAAC,IAAK,GAAGnB,GAAI18C,EAAGhX,EAAG60D,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,CAAC,EACxC,MACF,IAAK,IACGA,EAAA,CAAC,IAAK,GAAGnB,GAAI18C,EAAGhX,EAAG60D,EAAI,CAAC,EAAG70D,CAAC,CAAC,EACnC,MACF,IAAK,IACG60D,EAAA,CAAC,IAAK,GAAGnB,GAAI18C,EAAGhX,EAAGgX,EAAG69C,EAAI,CAAC,CAAC,CAAC,EACnC,MACF,IAAK,IACGA,EAAA,CAAC,IAAK,GAAGnB,GAAI18C,EAAGhX,EAAGyqD,EAAQC,CAAM,CAAC,EACxC,KACJ,CAEc0K,EAAAzM,EACV3xC,EAAA69C,EAAIA,EAAI,OAAS,CAAC,EAClB70D,EAAA60D,EAAIA,EAAI,OAAS,CAAC,EAClBA,EAAI,OAAS,GACLK,EAAAL,EAAIA,EAAI,OAAS,CAAC,EAClBM,EAAAN,EAAIA,EAAI,OAAS,CAAC,IAElBK,EAAAl+C,EACAm+C,EAAAn1D,GAGZyzB,EAAO,KAAKohC,CAAG,CACjB,CAEO,OAAAphC,CACT,CAIO,SAAS6hC,GAAkBC,EAAoC,CACpE,MAAM3mD,EAAyB,CAAA,EACtB,QAAA5X,EAAI,EAAGw+D,EAAOD,EAAI,OAAQC,EAAO,EAAIx+D,EAAGA,GAAK,EAAG,CACnD,IAAA0X,EACK1X,GAAL,EACE0X,EAAA,CACF,CAAE,EAAG6mD,EAAIv+D,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,EAC3B,CAAE,EAAGu+D,EAAIv+D,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,EAC3B,CAAE,EAAGu+D,EAAIv+D,EAAI,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,EAC/B,CAAE,EAAGu+D,EAAIv+D,EAAI,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,CAAA,EAExBw+D,EAAO,GAAKx+D,EACjB0X,EAAA,CACF,CAAE,EAAG6mD,EAAIv+D,EAAI,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,EAC/B,CAAE,EAAGu+D,EAAIv+D,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,EAC3B,CAAE,EAAGu+D,EAAIv+D,EAAI,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,EAC/B,CAAE,EAAGu+D,EAAIv+D,EAAI,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,CAAA,EAG7B0X,EAAA,CACF,CAAE,EAAG6mD,EAAIv+D,EAAI,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,EAC/B,CAAE,EAAGu+D,EAAIv+D,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,EAC3B,CAAE,EAAGu+D,EAAIv+D,EAAI,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,EAC/B,CAAE,EAAGu+D,EAAIv+D,EAAI,CAAC,EAAG,EAAGu+D,EAAIv+D,EAAI,CAAC,CAAE,CAAA,EAUnC,MAAM+iB,EAAK,CACT,CAAE,EAAGrL,EAAE,CAAC,EAAE,EAAG,EAAGA,EAAE,CAAC,EAAE,CAAE,EACvB,CACE,GAAI,CAACA,EAAE,CAAC,EAAE,EAAI,EAAIA,EAAE,CAAC,EAAE,EAAIA,EAAE,CAAC,EAAE,GAAK,EACrC,GAAI,CAACA,EAAE,CAAC,EAAE,EAAI,EAAIA,EAAE,CAAC,EAAE,EAAIA,EAAE,CAAC,EAAE,GAAK,CACvC,EACA,CACE,GAAIA,EAAE,CAAC,EAAE,EAAI,EAAIA,EAAE,CAAC,EAAE,EAAIA,EAAE,CAAC,EAAE,GAAK,EACpC,GAAIA,EAAE,CAAC,EAAE,EAAI,EAAIA,EAAE,CAAC,EAAE,EAAIA,EAAE,CAAC,EAAE,GAAK,CACtC,EACA,CAAE,EAAGA,EAAE,CAAC,EAAE,EAAG,EAAGA,EAAE,CAAC,EAAE,CAAE,CAAA,EAGvBE,EAAA,KAAK,CAAC,IAAKmL,EAAG,CAAC,EAAE,EAAGA,EAAG,CAAC,EAAE,EAAGA,EAAG,CAAC,EAAE,EAAGA,EAAG,CAAC,EAAE,EAAGA,EAAG,CAAC,EAAE,EAAGA,EAAG,CAAC,EAAE,CAAC,CAAC,CACpE,CAEO,OAAAnL,CACT,CAGO,SAAS6mD,GAAc/M,EAAgD,CAC5E,MAAMj1B,EAA8B,CAAA,EACpC,IAAIiiC,EAAgC,CAAC,IAAK,EAAG,CAAC,EAC1CC,EACJ,QAAS3+D,EAAI,EAAGw/C,EAAMkS,EAAK,OAAQ1xD,EAAIw/C,EAAKx/C,IAAK,CACzC,MAAAye,EAAKizC,EAAK1xD,CAAC,EACT,OAAAye,EAAG,CAAC,EAAG,CACb,IAAK,IACHigD,EAAa,CAAC,IAAKjgD,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAC,EAC/Bge,EAAO,KAAKhe,CAAE,EACd,MACF,IAAK,IACHge,EAAO,KAAKiiC,CAAU,EACtB,MACF,IAAK,IACSC,EAAAliC,EAAOA,EAAO,OAAS,CAAC,GAAK,CAAC,IAAK,EAAG,CAAC,EACnDA,EAAO,KAAK,CACV,IACAhe,EAAG,CAAC,EACJkgD,EAAUA,EAAU,OAAS,CAAC,CAAA,CACV,EACtB,MACF,IAAK,IACSA,EAAAliC,EAAOA,EAAO,OAAS,CAAC,GAAK,CAAC,IAAK,EAAG,CAAC,EACnDA,EAAO,KAAK,CACV,IACAkiC,EAAUA,EAAU,OAAS,CAAC,EAC9BlgD,EAAG,CAAC,CAAA,CACgB,EACtB,MACF,QACEge,EAAO,KAAKhe,CAAE,CAClB,CACF,CACO,OAAAge,CACT,CAIO,SAASmiC,GACdlN,EACqB,CACrB,MAAMmN,EAAwD,CAC5D,EAAG,CAAE,GAAI,IAAK,EAAG,CAAE,EACnB,EAAG,CAAE,GAAI,IAAK,EAAG,CAAE,CAAA,EAEjB,IAAA9zB,EACAx1B,EAAK,EACLnB,EAAK,EACT,QAAS,EAAI,EAAGorC,EAAMkS,EAAK,OAAQ,EAAIlS,EAAK,IAAK,CACzC,MAAAsf,EAAMpN,EAAK,CAAC,EACZqN,EAAUF,EAAWC,EAAI,CAAC,CAAC,EAC7BC,IACED,EAAA,CAAC,EAAIC,EAAQ,GACbh0B,IACEA,EAAK,CAAC,IAAMg0B,EAAQ,IACtBxpD,EAAK,EAAI,OAAOw1B,EAAKg0B,EAAQ,EAAI,CAAC,CAAC,EAAI,OAAOh0B,EAAKg0B,EAAQ,CAAC,CAAC,EAC7D3qD,EAAK,EAAI,OAAO22B,EAAKg0B,EAAQ,EAAI,CAAC,CAAC,EAAI,OAAOh0B,EAAKg0B,EAAQ,EAAI,CAAC,CAAC,IAEjExpD,EAAK,OAAOw1B,EAAKA,EAAK,OAAS,CAAC,CAAC,EACjC32B,EAAK,OAAO22B,EAAKA,EAAK,OAAS,CAAC,CAAC,IAGrC+zB,EAAI,OAAO,EAAG,EAAGvpD,EAAInB,CAAE,GAElB22B,EAAA+zB,CACT,CACO,OAAApN,CACT,CC5eO,IAAAsN,GAAA,MAAMC,EAAM,CAEV,GACA,GACA,EACA,EACA,OACA,QACA,QAGA,WAAa,EACb,WAAa,EACb,UAAY,EACZ,UAAY,EACZ,gBAAiC,CAAA,EAIxC,YAAYvhC,EAWT,CACD,KAAK,GAAK,EACV,KAAK,GAAK,EACL,KAAA,EAAIA,GAAS,GAAK,EAClB,KAAA,EAAIA,GAAS,GAAK,EAErB,OAAOA,GAAS,SAAW,UAC3B,OAAOA,GAAS,SAAW,WAEtB,KAAA,GAAKA,EAAQ,QAAU,KAAK,EAC5B,KAAA,GAAKA,EAAQ,QAAU,KAAK,GAE9B,KAAA,OAASA,GAAS,QAAU,EACjC,KAAK,QAAU,EACf,KAAK,QAAU,EACXA,GAAS,SAAW,SACtB,KAAK,QAAUA,EAAQ,OACvB,KAAK,QAAUA,EAAQ,QAErBA,GAAS,UAAY,SACvB,KAAK,QAAUA,EAAQ,SAErBA,GAAS,UAAY,SACvB,KAAK,QAAUA,EAAQ,SAEzB,KAAK,MAAMA,GAAS,EAAGA,GAAS,YAAY,CAC9C,CAEO,MACL9lB,EACAsnD,EACA,CACI,OAAOtnD,GAAK,SACd,KAAK,qBAAqB4lD,GAAa5lD,CAAC,EAAGsnD,CAAY,EAC9CtnD,aAAaqnD,GACtB,KAAK,qBAAqBrnD,EAAE,cAAc,EAAGsnD,CAAY,EAEzD,KAAK,qBAAqBtnD,GAAK,CAAC,EAAGsnD,CAAY,CAEnD,CAEQ,qBACNl/B,EACAk/B,EACA,CACA,KAAK,gBAAkB,GAEvB,MAAMC,EAAQpB,GAAiBH,GAAkB59B,CAAI,CAAC,EACjD,KAAA,UAAY,KAAK,WAAa,EAC9B,KAAA,UAAY,KAAK,WAAa,EACnC,IAAIo/B,EAAe,GACnB,QAAS,EAAI,EAAGrW,EAAQoW,EAAM,OAAQ,EAAIpW,EAAO,IAAK,CAC9C,MAAA2I,EAAOyN,EAAM,CAAC,EAEpB,GADgBzN,EAAK,CAAC,GACP,IAAK,CACb0N,IACYA,EAAA,GACV,KAAA,WAAa1N,EAAK,CAAC,EACnB,KAAA,WAAaA,EAAK,CAAC,GAErB,KAAA,UAAYA,EAAK,CAAC,EAClB,KAAA,UAAYA,EAAK,CAAC,EACvB,QACF,CACK,KAAA,WACH,IAAIoH,GAAY,CACd,IAAKpH,EAAK,CAAC,EACX,IAAKA,EAAK,CAAC,EACX,IAAKA,EAAK,CAAC,EACX,IAAKA,EAAK,CAAC,EACX,IAAKA,EAAK,CAAC,EACX,IAAKA,EAAK,CAAC,CAAA,CACZ,CAAA,CAEL,CACIwN,IACD,CAAE,EAAG,KAAK,WAAY,EAAG,KAAK,YAAeA,EAAa,eACzD,CACE,EAAG,KAAK,WACR,EAAG,KAAK,UACV,CAAA,EAED,CAAE,EAAG,KAAK,UAAW,EAAG,KAAK,SAAA,EAAcA,EAAa,eAAe,CACtE,EAAG,KAAK,UACR,EAAG,KAAK,SAAA,CACT,EACI,KAAA,gBAAgB,QAASv2D,GAAM,EACjC,CAAE,EAAGA,EAAE,EAAG,EAAGA,EAAE,GAAMu2D,EAAa,eAAe,CAAE,EAAGv2D,EAAE,EAAG,EAAGA,EAAE,EAAG,GACnE,CAAE,EAAGA,EAAE,IAAK,EAAGA,EAAE,GAAA,EAAQu2D,EAAa,eAAe,CACpD,EAAGv2D,EAAE,IACL,EAAGA,EAAE,GAAA,CACN,EACA,CAAE,EAAGA,EAAE,IAAK,EAAGA,EAAE,GAAA,EAAQu2D,EAAa,eAAe,CACpD,EAAGv2D,EAAE,IACL,EAAGA,EAAE,GAAA,CACN,EACA,CAAE,EAAGA,EAAE,IAAK,EAAGA,EAAE,GAAA,EAAQu2D,EAAa,eAAe,CACpD,EAAGv2D,EAAE,IACL,EAAGA,EAAE,GAAA,CACN,CAAA,CACF,EAEL,CAEA,OAAO,oBAAoB02D,EAAyB,CAC5C,MAAAznD,EAAI,IAAIqnD,GACdrnD,EAAE,UAAYA,EAAE,WAAaynD,EAAO,CAAC,GAAK,EAC1CznD,EAAE,UAAYA,EAAE,WAAaynD,EAAO,CAAC,GAAK,EACjC,QAAA/1D,EAAI,EAAGy/C,EAAQsW,EAAO,OAAQ/1D,EAAI,EAAIy/C,EAAOz/C,GAAK,EACvDsO,EAAA,WACA,IAAIkhD,GAAY,CACd,IAAKuG,EAAO/1D,CAAC,EACb,IAAK+1D,EAAO/1D,EAAI,CAAC,EACjB,IAAK+1D,EAAO/1D,EAAI,CAAC,EACjB,IAAK+1D,EAAO/1D,EAAI,CAAC,EACjB,IAAK+1D,EAAO/1D,EAAI,CAAC,EACjB,IAAK+1D,EAAO/1D,EAAI,CAAC,CAAA,CAClB,CAAA,EAGE,OAAAsO,CACT,CAEA,OAAO,UAAU0nD,EAAmB,CAC5B,MAAA1nD,EAAI,IAAIqnD,GACdrnD,EAAE,UAAYA,EAAE,WAAa0nD,EAAM,CAAC,EAAE,GAAK,EAC3C1nD,EAAE,UAAYA,EAAE,WAAa0nD,EAAM,CAAC,EAAE,GAAK,EAC3C,QAASt/D,EAAI,EAAG+oD,EAAQuW,EAAM,OAAQt/D,EAAI+oD,EAAO/oD,IAC7C4X,EAAA,WAAW0nD,EAAMt/D,CAAC,CAAC,EAEhB,OAAA4X,CACT,CAGQ,WAAW8+C,EAAS,CAC1B,GAAIA,aAAgB6I,GAAK,CACRrE,GACb,KAAK,UACL,KAAK,UACLxE,EAAK,IACLA,EAAK,IACLA,EAAK,aACLA,EAAK,UACLA,EAAK,GACLA,EAAK,GACLA,EAAK,WAAA,EAEA,QAAS0E,GAAU,CAClB,KAAA,CAACz4D,EAAIvB,EAAImU,EAAInB,EAAIoH,EAAI3B,EAAImG,EAAGhX,CAAC,EAAIoyD,EACvC,KAAK,gBAAgB,KACnB,IAAItC,GAAY,CACd,EAAG,KAAK,UACR,EAAG,KAAK,UACR,IAAKvjD,EACL,IAAKnB,EACL,IAAKoH,EACL,IAAK3B,EACL,IAAKmG,EACL,IAAKhX,CAAA,CACN,CAAA,EAEH,KAAK,UAAYgX,EACjB,KAAK,UAAYhX,CAAA,CAClB,EACD,MACF,CACA,IAAIuM,EAAInB,EAAIoH,EAAI3B,EAAI2lD,EAAKC,EACrB/I,aAAgBoC,IAClBvjD,EAAKmhD,EAAK,IACVtiD,EAAKsiD,EAAK,IACVl7C,EAAKk7C,EAAK,IACV78C,EAAK68C,EAAK,IACV8I,EAAM9I,EAAK,IACX+I,EAAM/I,EAAK,KACFA,aAAgBgJ,GACzB,CAACnqD,EAAInB,EAAIoH,EAAI3B,EAAI2lD,EAAKC,CAAG,EAAIhD,GAC3B,KAAK,UACL,KAAK,UACL/F,EAAK,GACLA,EAAK,GACLA,EAAK,IACLA,EAAK,GAAA,EAIP,CAACnhD,EAAInB,EAAIoH,EAAI3B,EAAI2lD,EAAKC,CAAG,EAAI/C,GAC3B,KAAK,UACL,KAAK,UACLhG,EAAK,IACLA,EAAK,GAAA,EAGT,KAAK,gBAAgB,KACnB,IAAIoC,GAAY,CACd,EAAG,KAAK,UACR,EAAG,KAAK,UACR,IAAKvjD,EACL,IAAKnB,EACL,IAAKoH,EACL,IAAK3B,EACL,IAAA2lD,EACA,IAAAC,CAAA,CACD,CAAA,EAEH,KAAK,UAAYD,EACjB,KAAK,UAAYC,CACnB,CAGA,eAAqC,CACnC,KAAM,CAAE,WAAAE,EAAY,WAAAC,EAAY,gBAAAC,CAAgB,EAAI,KAAK,kBACnD7/B,EAA4B,CAAA,EAClCA,EAAK,KAAK,CAAC,IAAK2/B,EAAYC,CAAU,CAAC,EACvC,QAAS,EAAI,EAAG7W,EAAQ8W,EAAgB,OAAQ,EAAI9W,EAAO,IACzD/oB,EAAK,KAAK,GAAG6/B,EAAgB,CAAC,EAAE,eAAe,EAG1C,OAAA7/B,CACT,CAEA,YAAqB,CACZ,OAAAu9B,GAAe,KAAK,cAAA,CAAe,CAC5C,CAGA,gBAAgBp4B,EAAsB,CACpC,KAAM,CAAE,WAAAw6B,EAAY,WAAAC,EAAY,gBAAAC,CAAgB,EAAI,KAAK,kBACzD16B,EAAI,UAAU,EACVA,EAAA,OAAOw6B,EAAYC,CAAU,EACjBC,EAAA,QAASn3D,GAAM,CAC7BA,EAAE,gBAAgBy8B,CAAG,CAAA,CACtB,CAEH,CAGO,uBAAwB,CAC7B,KAAM,CAAE,gBAAA06B,CAAA,EAAoB,KAAK,gBAAgB,EAC3Cx8D,EAAc,CAAA,EACdw4D,EAAc,CAAA,EAMpB,GALgBgE,EAAA,QAASl3D,GAAM,CACvB,MAAAmqD,EAAOnqD,EAAE,wBACftF,EAAE,KAAKyvD,EAAK,EAAGA,EAAK,EAAIA,EAAK,KAAK,EAClC+I,EAAE,KAAK/I,EAAK,EAAGA,EAAK,EAAIA,EAAK,MAAM,CAAA,CACpC,EACGzvD,EAAE,QAAU,GAAKw4D,EAAE,QAAU,EACxB,MAAA,CAAE,EAAG,EAAG,EAAG,EAAG,MAAO,EAAG,OAAQ,GAEzC,MAAMiE,EAAO,KAAK,IAAI,MAAM,EAAGz8D,CAAC,EAC1B08D,EAAO,KAAK,IAAI,MAAM,EAAGlE,CAAC,EAC1BmE,EAAO,KAAK,IAAI,MAAM,EAAG38D,CAAC,EAC1B48D,EAAO,KAAK,IAAI,MAAM,EAAGpE,CAAC,EACzB,MAAA,CACL,EAAGiE,EACH,EAAGC,EACH,MAAOC,EAAOF,EACd,OAAQG,EAAOF,CAAA,CAEnB,CAEO,OAAOnhE,EAQX,CACD,KAAK,GAAK,OAAOA,EAAE,IAAM,SAAWA,EAAE,GAAK,KAAK,GAChD,KAAK,GAAK,OAAOA,EAAE,IAAM,SAAWA,EAAE,GAAK,KAAK,GAChD,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,OAASA,EAAE,OAChB,KAAK,QAAUA,EAAE,QACjB,KAAK,QAAUA,EAAE,OACnB,CAEQ,iBAAkB,CAGlB,MAAAkK,EAAI,IAAIo3D,GAmCV,GALFp3D,EAAA,UAAU,KAAK,EAAI,KAAK,GAAI,KAAK,EAAI,KAAK,EAAE,EAC5CA,EAAA,OAAO,KAAK,MAAM,EACpBA,EAAE,MAAM,KAAK,QAAS,KAAK,OAAO,EAClCA,EAAE,UAAU,CAAC,KAAK,GAAI,CAAC,KAAK,EAAE,EAEzBA,EAAE,WA+BE,MAAA,CACL,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,gBAAiB,KAAK,eAAA,EAlCP,CACjB,IAAI62D,EAAa,KAAK,WAClBC,EAAa,KAAK,YACrB,CAAE,EAAGD,EAAY,EAAGC,CAAW,EAAI92D,EAAE,eAAe,CACnD,EAAG62D,EACH,EAAGC,CAAA,CACJ,GACD,MAAMC,EAAiC,CAAA,EAClC,YAAA,gBAAgB,QAASl3D,GAAM,CAClC,IAAIqX,EAAIrX,EAAE,EACNK,EAAIL,EAAE,EACN8vD,EAAM9vD,EAAE,IACR+vD,EAAM/vD,EAAE,IACRw3D,EAAMx3D,EAAE,IACRy3D,EAAMz3D,EAAE,IACR62D,EAAM72D,EAAE,IACR82D,EAAM92D,EAAE,KACX,CAAE,EAAAqX,EAAM,EAAAhX,GAASF,EAAE,eAAe,CAAE,EAAAkX,EAAM,EAAAhX,CAAA,CAAM,GAChD,CAAE,EAAGyvD,EAAK,EAAGC,CAAI,EAAI5vD,EAAE,eAAe,CAAE,EAAG2vD,EAAK,EAAGC,CAAK,CAAA,EACxD,CAAE,EAAGyH,EAAK,EAAGC,CAAI,EAAIt3D,EAAE,eAAe,CAAE,EAAGq3D,EAAK,EAAGC,CAAK,CAAA,EACxD,CAAE,EAAGZ,EAAK,EAAGC,CAAI,EAAI32D,EAAE,eAAe,CAAE,EAAG02D,EAAK,EAAGC,CAAK,CAAA,EACzCI,EAAA,KACd,IAAI/G,GAAY,CAAE,EAAA94C,EAAG,EAAAhX,EAAG,IAAAyvD,EAAK,IAAAC,EAAK,IAAAyH,EAAK,IAAAC,EAAK,IAAAZ,EAAK,IAAAC,EAAK,CAAA,CACxD,CACD,EACM,CACL,WAAAE,EACA,WAAAC,EACA,gBAAAC,CAAA,CACF,CAQJ,CAGA,gBAAyB,CACvB,KAAM,CAAE,gBAAAA,CAAA,EAAoB,KAAK,gBAAgB,EAE1C,OAAAA,EAAgB,OAAO,CAACQ,EAAK13D,IAAO03D,GAAO13D,EAAE,SAAW,CAAC,CAIlE,CAEA,iBAAiBqyB,EAIf,CACA,KAAM,CAAE,gBAAA6kC,CAAA,EAAoB,KAAK,gBAAgB,EAEjD,IAAIrgB,EAAM,EACV,MAAM8gB,EAAaT,EAAgB,OACnC,QAAS,EAAI,EAAG,EAAIS,EAAY,IAAK,CAC7B,MAAA5oD,EAAImoD,EAAgB,CAAC,EACrBl3D,EAAI+O,EAAE,SACR,GAAA8nC,EAAM72C,GAAKqyB,EACN,OAAAtjB,EAAE,wBAAwBsjB,EAASwkB,CAAG,EAExCA,GAAA72C,CACT,CACA,OAAOk3D,EAAgBS,EAAa,CAAC,EAAE,wBAAwB,CAAC,CAIlE,CAIA,YAAY1hE,EAAqC,CAC/C,KAAM,CAAE,WAAA+gE,EAAY,WAAAC,EAAY,gBAAAC,CAAgB,EAAI,KAAK,kBACnDS,EAAaT,EAAgB,OACnC,GAAIS,IAAe,EACjB,MAAO,CAAE,EAAGX,EAAY,EAAGC,CAAW,EACxC,GAAWU,IAAe,EACxB,OAAOT,EAAgB,CAAC,EAAE,YAAYjhE,CAAC,EAClC,CACL,IAAIqqD,EAAQrqD,EAAI0hE,EACZ5O,EAAOmO,EAAgB,CAAC,EAE5B,GADA5W,IACIA,EAAQ,EACV,QAASjpD,EAAI,EAAGA,EAAIsgE,IAClB5O,EAAOmO,EAAgB7/D,CAAC,EACpBipD,EAAQ,GAFkBjpD,IAGnBipD,GAAA,EAMR,OAAAyI,EAAK,YAAYzI,CAAK,CAC/B,CACF,CAGA,WAAWztB,EAAcnP,EAAmB,CAC1C,GAAI,KAAK,iBAAmBA,EAAK,KACxB,OAAA,KAAK,oBAAoB,KAAMmP,CAAI,EACrC,CACL,MAAMl2B,EAAI,KAAK,oBAAoB,KAAM+mB,EAAI,CAAC,EAC9C,OAAOmP,EAAO,KAAK,oBAAoBl2B,EAAGk2B,CAAI,EAAIl2B,CACpD,CACF,CAEA,oBAAoBosD,EAAa12B,EAAgBulC,EAA2B,CAC1E,KAAM,CAAE,WAAAZ,EAAY,WAAAC,EAAY,gBAAAC,CAAgB,EAAInO,EAAK,kBAEzD,IAAI1yB,EAAsB,KACtBwgB,EAAM,EAEJ,MAAAp+B,EAAK,IAAI69C,GACZ79C,EAAA,UAAYA,EAAG,WAAau+C,EAC5Bv+C,EAAA,UAAYA,EAAG,WAAaw+C,EAC/B,QAAS5/D,EAAI,EAAGwC,EAAKq9D,EAAgB,OAAQ7/D,EAAIwC,EAAIxC,IAAK,CAClD,MAAA0X,EAAImoD,EAAgB7/D,CAAC,EACrB2I,EAAI+O,EAAE,SACR,GAAA8nC,EAAM72C,EAAIqyB,GACR,CAACgE,EAAO,CACV,MAAMwhC,EAAQ9oD,EAAE,wBAAwBsjB,EAASwkB,CAAG,EAWpD,GAVGp+B,EAAA,WACD,IAAI03C,GAAY,CACd,IAAK0H,EAAM,MAAM,EACjB,IAAKA,EAAM,MAAM,EACjB,IAAKA,EAAM,EAAE,EACb,IAAKA,EAAM,EAAE,EACb,IAAKA,EAAM,EACX,IAAKA,EAAM,CAAA,CACZ,CAAA,EAECD,EACK,OAAAn/C,EAED4d,EAAA5d,EAILA,EAAA,WACD,IAAI03C,GAAY,CACd,IAAK0H,EAAM,EAAE,EACb,IAAKA,EAAM,EAAE,EACb,IAAKA,EAAM,IAAI,EACf,IAAKA,EAAM,IAAI,EACf,IAAK9oD,EAAE,EACP,IAAKA,EAAE,CAAA,CACR,CAAA,EAEI8nC,GAAA72C,EACP,QACF,CAEK62C,GAAA72C,EACPyY,EAAG,WAAW1J,CAAC,CACjB,CAEO,OAAA0J,CACT,CAGA,aACEq/C,EACAC,EAQA,CACM,MAAAC,EAAa,KAAK,iBACxB,IAAIC,EAAO,CAAE,EAAGH,EAAQ,EAAGC,CAAO,EAC9BG,EAAa,EACbC,EAAe,IACfC,EAAY,EAGhB,QACMC,EAAa,EACjBA,GAAcL,EACdK,GAAcD,EACd,CACM,MAAAE,EAAO,KAAK,iBAAiBD,CAAU,EACvCE,EAAe,KAAK,IACxBC,GAASF,EAAK,EAAGA,EAAK,EAAGR,EAAQC,CAAM,EACvC,CAAA,EAEEQ,EAAeJ,IACVF,EAAAK,EACMJ,EAAAG,EACEF,EAAAI,EAEnB,CAIA,IADaH,GAAA,EACNA,EAAY,IAAK,CACtB,MAAMK,EAAeP,EAAaE,EAC5BM,EAAS,KAAK,iBAAiBD,CAAY,EAC3CE,EAAiB,KAAK,IAC1BH,GAASE,EAAO,EAAGA,EAAO,EAAGZ,EAAQC,CAAM,EAC3C,CAAA,EAEIa,EAAcV,EAAaE,EAC3BS,EAAQ,KAAK,iBAAiBD,CAAW,EACzCE,EAAgB,KAAK,IACzBN,GAASK,EAAM,EAAGA,EAAM,EAAGf,EAAQC,CAAM,EACzC,CAAA,EAEEU,GAAgB,GAAKE,EAAiBR,GACjCF,EAAAS,EACMR,EAAAO,EACEN,EAAAQ,GACNC,GAAeZ,GAAcc,EAAgBX,GAC/CF,EAAAY,EACMX,EAAAU,EACET,EAAAW,GAEFV,GAAA,CAEjB,CAEA,MAAMrpD,EAAI,KAAK,iBACbmpD,GAAcA,IAAeF,EAAa,IAAO,GAAA,EAG5C,MAAA,CACL,MAAOC,EACP,SACEC,GAAcF,EACV1T,GAAMv1C,EAAE,EAAGA,EAAE,EAAGkpD,EAAK,EAAGA,EAAK,CAAC,EAC9B3T,GAAM2T,EAAK,EAAGA,EAAK,EAAGlpD,EAAE,EAAGA,EAAE,CAAC,EACpC,SAAU,KAAK,KAAKopD,CAAY,CAAA,CAEpC,CAEA,IAAI,iBAA4B,CAC9B,KAAM,CAAE,WAAAnB,EAAY,WAAAC,EAAY,gBAAAC,CAAgB,EAAI,KAAK,kBAClD,MAAA,CAACF,EAAYC,CAAU,EAAE,OAC9BC,EAAgB,OACd,CAACQ,EAAK13D,IAAM03D,EAAI,OAAO,CAAC13D,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,GAAG,CAAC,EACjE,CAAC,CACH,CAAA,CAEJ,CAEA,iBAA0B,CACxB,MAAM+4D,EAAM,KAAK,gBACX,EAAIA,EAAI,OACV,IAAAlmD,EAAKkmD,EAAI,EAAI,CAAC,EACd7nD,EAAK6nD,EAAI,EAAI,CAAC,EACdhqD,EAAI,EACR,QAAS1X,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACrB0X,GAAAypD,GAASO,EAAI1hE,CAAC,EAAG0hE,EAAI1hE,EAAI,CAAC,EAAGwb,EAAI3B,CAAE,EACxC2B,EAAKkmD,EAAI1hE,CAAC,EACL6Z,EAAA6nD,EAAI1hE,EAAI,CAAC,EAET,OAAA,KAAK,MAAM0X,CAAC,CACrB,CAEA,WAAWiqD,EAA0C,CACnD,MAAMC,EAAK,KAAK,gBACVC,EAAWD,EAAG,OACpB,IAAIE,EAAYH,EAAcE,EAC9B,MAAM5Y,EAAQ,KAAK,KAAK0Y,EAAcE,CAAQ,EACxCxC,EAA8B,CAAA,EAC7BA,EAAA,KAAK,CAAC,IAAKuC,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAC,CAAC,EAC/B,IAAIt4D,EAAI,EACD,KAAAA,EAAI,GAAKu4D,EAAW,GAAG,CACtB,MAAApJ,EAAMmJ,EAAGt4D,GAAG,EACZovD,EAAMkJ,EAAGt4D,GAAG,EACZ62D,EAAMyB,EAAGt4D,GAAG,EACZ82D,EAAMwB,EAAGt4D,GAAG,EACZ0W,EAAI4hD,EAAGt4D,GAAG,EACVN,EAAI44D,EAAGt4D,GAAG,EACT+1D,EAAA,KAAK,CAAC,IAAK5G,EAAKC,EAAKyH,EAAKC,EAAKpgD,EAAGhX,CAAC,CAAC,EAC3C,IAAIJ,EAAI,EACD,KAAAA,EAAIqgD,GAAS6Y,EAAY,GACvBzC,EAAA,KAAK,CAAC,IAAKr/C,EAAGhX,EAAGgX,EAAGhX,EAAGgX,EAAGhX,CAAC,CAAC,EACtB84D,GAAA,EACbl5D,GAEJ,CACO,OAAAy2D,CACT,CAEA,OAAO,UAAU/5D,EAAa8Z,EAAa9O,EAAqB,CAC9D,MAAMyxD,EAAOz8D,EAAE,OACT08D,EAAU,IAAI,MAAMD,CAAI,EAC9B,QAAS/hE,EAAI,EAAGA,EAAI+hE,EAAM/hE,IACxBgiE,EAAQhiE,CAAC,EAAIiiE,GAAa38D,EAAEtF,CAAC,GAAKof,EAAEpf,CAAC,EAAIsF,EAAEtF,CAAC,GAAKsQ,EAAG,CAAC,EAEhD,OAAA0xD,CACT,CAGA,OAAO,oBACLhgB,EACAkgB,EACyC,CACzC,OAAQza,GACF,KAAK,IAAIA,EAAS,CAAC,EAAI,OAAO,QAEzBzF,EAEL,KAAK,IAAIyF,EAAS,CAAC,EAAI,OAAO,QAEzBya,EAEIjD,GAAM,oBACjBA,GAAM,UACJ,IAAIA,GAAM,CAAE,EAAGjd,CAAA,CAAM,EAAE,gBACvB,IAAIid,GAAM,CAAE,EAAGiD,CAAA,CAAO,EAAE,gBACxBza,CACF,CAAA,EAEU,eAEhB,CACF,EC/qBA,MAAqB0a,EAAS,CAC5B,OAAe,QAAU,EAEzB,OAAO,QAAiB,CACtB,OAAOA,GAAS,SAClB,CACF,CCDO,MAAMC,GAAS,CAEpB,OAAQ,CACN,KAAM,SAAU,EAAmB,CAC1B,OAAA,CACT,CACF,EACA,KAAM,CACJ,GAAI,SAAU,EAAmB,CACxB,OAAA,KAAK,IAAI,EAAG,GAAG,CACxB,CACF,EAEA,UAAW,CACT,GAAI,SAAU,EAAmB,CAC/B,OAAO,EAAI,CACb,EACA,IAAK,SAAU,EAAmB,CAChC,OAAO,GAAK,EAAI,EAClB,EACA,MAAO,SAAU,EAAmB,CAC7B,OAAA,GAAK,GAAK,EACN,GAAM,EAAI,EAEZ,KAAQ,EAAE,GAAK,EAAI,GAAK,EACjC,EACA,MAAO,sCACT,EAEA,MAAO,CACL,GAAI,SAAU,EAAmB,CAC/B,OAAO,EAAI,EAAI,CACjB,EACA,IAAK,SAAU,EAAmB,CACzB,MAAA,EAAE,EAAI,EAAI,EAAI,CACvB,EACA,MAAO,SAAU,EAAmB,CAC7B,OAAA,GAAK,GAAK,EACN,GAAM,EAAI,EAAI,EAEhB,KAAQ,GAAK,GAAK,EAAI,EAAI,EACnC,CACF,EAEA,QAAS,CACP,GAAI,SAAU,EAAmB,CACxB,OAAA,EAAI,EAAI,EAAI,CACrB,EACA,IAAK,SAAU,EAAmB,CAChC,MAAO,IAAI,EAAE,EAAI,EAAI,EAAI,CAC3B,EACA,MAAO,SAAU,EAAmB,CAC7B,OAAA,GAAK,GAAK,EACN,GAAM,EAAI,EAAI,EAAI,EAEpB,MAAS,GAAK,GAAK,EAAI,EAAI,EAAI,EACxC,CACF,EAEA,QAAS,CACP,GAAI,SAAU,EAAmB,CACxB,OAAA,EAAI,EAAI,EAAI,EAAI,CACzB,EACA,IAAK,SAAU,EAAmB,CAChC,MAAO,EAAE,EAAI,EAAI,EAAI,EAAI,EAAI,CAC/B,EACA,MAAO,SAAU,EAAmB,CAC7B,OAAA,GAAK,GAAK,EACN,GAAM,EAAI,EAAI,EAAI,EAAI,EAExB,KAAQ,GAAK,GAAK,EAAI,EAAI,EAAI,EAAI,EAC3C,CACF,EAEA,WAAY,CACV,GAAI,SAAU,EAAmB,CAC/B,MAAO,GAAI,KAAK,KAAM,EAAM,GAAK,KAAK,GAAM,CAAC,CAC/C,EACA,IAAK,SAAU,EAAmB,CAChC,OAAO,KAAK,IAAK,EAAI,KAAK,GAAM,CAAC,CACnC,EACA,MAAO,SAAU,EAAmB,CAClC,MAAO,KAAO,EAAI,KAAK,IAAI,KAAK,IAAM,GAAM,EAAE,EAChD,CACF,EAEA,YAAa,CACX,GAAI,SAAU,EAAmB,CAC/B,OAAO,IAAM,EAAI,EAAI,KAAK,IAAI,KAAM,EAAI,CAAC,CAC3C,EACA,IAAK,SAAU,EAAmB,CACzB,OAAA,IAAM,EAAI,EAAI,EAAI,KAAK,IAAI,EAAG,IAAM,CAAC,CAC9C,EACA,MAAO,SAAU,EAAmB,CAClC,OAAI,IAAM,EACD,EAEL,IAAM,EACD,GAEJ,GAAK,GAAK,EACN,GAAM,KAAK,IAAI,KAAM,EAAI,CAAC,EAE5B,IAAO,CAAC,KAAK,IAAI,EAAG,KAAO,EAAI,EAAE,EAAI,EAC9C,CACF,EAEA,SAAU,CACR,GAAI,SAAU,EAAmB,CAC/B,MAAO,GAAI,KAAK,KAAK,EAAI,EAAI,CAAC,CAChC,EACA,IAAK,SAAU,EAAmB,CAChC,OAAO,KAAK,KAAK,GAAI,EAAE,EAAI,CAAC,CAC9B,EACA,MAAO,SAAU,EAAmB,CAC7B,OAAA,GAAK,GAAK,EACN,KAAQ,KAAK,KAAK,EAAI,EAAI,CAAC,EAAI,GAEjC,IAAO,KAAK,KAAK,GAAK,GAAK,GAAK,CAAC,EAAI,EAC9C,EACA,MAAO,iCACT,EAEA,QAAS,CACP,GAAI,SAAU,EAAmB,CAC/B,OAAI,IAAM,EACD,EAEL,IAAM,EACD,EAEF,CAAC,KAAK,IAAI,EAAG,IAAM,EAAI,EAAE,EAAI,KAAK,KAAK,EAAI,KAAO,EAAI,KAAK,EAAE,CACtE,EACA,IAAK,SAAU,EAAmB,CAChC,OAAI,IAAM,EACD,EAEL,IAAM,EACD,EAEF,KAAK,IAAI,EAAG,IAAM,CAAC,EAAI,KAAK,KAAK,EAAI,IAAO,EAAI,KAAK,EAAE,EAAI,CACpE,EACA,MAAO,SAAU,EAAmB,CAClC,OAAI,IAAM,EACD,EAEL,IAAM,EACD,GAEJ,GAAA,EACD,EAAI,EAEJ,IAAO,KAAK,IAAI,EAAG,IAAM,EAAI,EAAE,EAAI,KAAK,KAAK,EAAI,KAAO,EAAI,KAAK,EAAE,EAIrE,GAAM,KAAK,IAAI,EAAG,KAAO,EAAI,EAAE,EAAI,KAAK,KAAK,EAAI,KAAO,EAAI,KAAK,EAAE,EAAI,EAE3E,CACF,EAEA,KAAM,CACJ,GAAI,SAAU,EAAmB,CAE/B,OAAO,IAAM,EAAI,EAAI,EAAI,IAAM,QAAI,GAAK,EAAI,QAC9C,EACA,IAAK,SAAU,EAAmB,CAGzB,OAAA,IAAM,EAAI,EAAI,EAAE,EAAI,IAAM,QAAI,GAAK,EAAI,SAAK,CACrD,EACA,MAAO,SAAU,EAAmB,CAClC,MAAMthE,EAAI,UACL,OAAA,GAAK,GAAK,EACN,IAAO,EAAI,IAAMA,EAAI,GAAK,EAAIA,IAEhC,KAAQ,GAAK,GAAK,IAAMA,EAAI,GAAK,EAAIA,GAAK,EACnD,EACA,MAAO,yCACT,EAEA,OAAQ,CACN,GAAI,SAAU,EAAmB,CAC/B,MAAO,GAAIshE,GAAO,OAAO,IAAI,EAAI,CAAC,CACpC,EACA,IAAK,SAAU,EAAmB,CAI5B,OAAA,EAAI,EAAI,KACH,OAAK,EAAI,EACP,EAAI,EAAI,KACV,QAAM,GAAK,IAAM,MAAM,EAAI,IACzB,EAAI,IAAM,KACZ,QAAM,GAAK,KAAO,MAAM,EAAI,MAE5B,QAAM,GAAK,MAAQ,MAAM,EAAI,OAExC,EACA,MAAO,SAAU,EAAmB,CAClC,OAAI,EAAI,GACCA,GAAO,OAAO,GAAG,EAAI,CAAC,EAAI,GAE5BA,GAAO,OAAO,IAAI,EAAI,EAAI,CAAC,EAAI,GAAM,EAC9C,CACF,EAEA,YAAa,SAAUC,EAAQ,EAI7B,CACA,OAAAA,EAAQA,EAAQ,OAAO,QAAU,OAAO,QAAUA,EAC1CA,EAAAA,EAAQ,IAAQ,IAAQA,EACzB,CACL,GAAI,SAAUzjE,EAAmB,CAC/B,OAAOA,GAAKyjE,CACd,EACA,IAAK,SAAUzjE,EAAmB,CACzB,MAAA,IAAK,EAAIA,IAAMyjE,CACxB,EACA,MAAO,SAAUzjE,EAAmB,CAClC,OAAIA,EAAI,IACEA,EAAI,IAAMyjE,EAAQ,GAEpB,GAAK,EAAIzjE,EAAI,IAAMyjE,GAAS,EAAI,EAC1C,CAAA,CAEJ,EAEA,OAAQ,SAAU,EAAW,CAC3B,OAAO,KAAK,QACd,EAEA,WAAY,SAAUC,EAAkC,CACtD,OAAO,SAAU1jE,EAAW,CAC1B,OAAO,KAAK,MAAMA,EAAI0jE,CAAQ,EAAIA,CAAA,CAEtC,EAEA,kBAAmB,SACjBC,EACAC,EAAmB,GACH,CAChB,MAAMC,EAAmB,EAAMD,EAC/B,OAAO,SAAU5jE,EAAW,CAC1B,OACE4jE,EAAmB,KAAK,OAAA,EAAWC,EAAmBF,EAAe3jE,CAAC,CAAA,CAG5E,EACA,MAAO,SAAU,EAAW,CAC1B,OAAO,EAAI,KAAK,IAAI,EAAI,KAAK,GAAK,CAAC,EAAI,CACzC,EACA,cAAe,SAAU,EAAW,CAClC,OAAO,EAAI,GAAM,KAAK,OAAA,EAAW,EACnC,CACF,EAIO,SAAS8jE,GAAcC,EAAwC,CACpE,OAAQA,EAAQ,CAEd,KAAKP,GAAO,UAAU,GACpB,OAAOA,GAAO,UAAU,IAC1B,KAAKA,GAAO,UAAU,IACpB,OAAOA,GAAO,UAAU,GAC1B,KAAKA,GAAO,UAAU,MACpB,OAAOA,GAAO,UAAU,MAE1B,KAAKA,GAAO,MAAM,GAChB,OAAOA,GAAO,MAAM,IACtB,KAAKA,GAAO,MAAM,IAChB,OAAOA,GAAO,MAAM,GACtB,KAAKA,GAAO,MAAM,MAChB,OAAOA,GAAO,MAAM,MAEtB,KAAKA,GAAO,QAAQ,GAClB,OAAOA,GAAO,QAAQ,IACxB,KAAKA,GAAO,QAAQ,IAClB,OAAOA,GAAO,QAAQ,GACxB,KAAKA,GAAO,QAAQ,MAClB,OAAOA,GAAO,QAAQ,MAExB,KAAKA,GAAO,QAAQ,GAClB,OAAOA,GAAO,QAAQ,IACxB,KAAKA,GAAO,QAAQ,IAClB,OAAOA,GAAO,QAAQ,GACxB,KAAKA,GAAO,QAAQ,MAClB,OAAOA,GAAO,QAAQ,MAExB,KAAKA,GAAO,WAAW,GACrB,OAAOA,GAAO,WAAW,IAC3B,KAAKA,GAAO,WAAW,IACrB,OAAOA,GAAO,WAAW,GAC3B,KAAKA,GAAO,WAAW,MACrB,OAAOA,GAAO,WAAW,MAE3B,KAAKA,GAAO,YAAY,GACtB,OAAOA,GAAO,YAAY,IAC5B,KAAKA,GAAO,YAAY,IACtB,OAAOA,GAAO,YAAY,GAC5B,KAAKA,GAAO,YAAY,MACtB,OAAOA,GAAO,YAAY,MAE5B,KAAKA,GAAO,SAAS,GACnB,OAAOA,GAAO,SAAS,IACzB,KAAKA,GAAO,SAAS,IACnB,OAAOA,GAAO,SAAS,GACzB,KAAKA,GAAO,SAAS,MACnB,OAAOA,GAAO,SAAS,MAEzB,KAAKA,GAAO,QAAQ,GAClB,OAAOA,GAAO,QAAQ,IACxB,KAAKA,GAAO,QAAQ,IAClB,OAAOA,GAAO,QAAQ,GACxB,KAAKA,GAAO,QAAQ,MAClB,OAAOA,GAAO,QAAQ,MAExB,KAAKA,GAAO,KAAK,GACf,OAAOA,GAAO,KAAK,IACrB,KAAKA,GAAO,KAAK,IACf,OAAOA,GAAO,KAAK,GACrB,KAAKA,GAAO,KAAK,MACf,OAAOA,GAAO,KAAK,MAErB,KAAKA,GAAO,OAAO,GACjB,OAAOA,GAAO,OAAO,IACvB,KAAKA,GAAO,OAAO,IACjB,OAAOA,GAAO,OAAO,GACvB,KAAKA,GAAO,OAAO,MACjB,OAAOA,GAAO,OAAO,MACvB,QACS,OAAAO,CACX,CACF,CC5UA,MAAMC,GAAoB,EACpBC,GAAmB,KACnBC,GAAwB,KACxBC,GAA6B,GAE7BC,GAAmB,GACnBC,GAAkB,GAAOD,GAAmB,GAE5CE,GAAwB,OAAO,cAAiB,WAEtD,SAAS75D,GAAE85D,EAAaC,EAAa,CAC5B,MAAA,GAAM,EAAMA,EAAM,EAAMD,CACjC,CACA,SAAS/8C,GAAE+8C,EAAaC,EAAa,CAC5B,MAAA,GAAMA,EAAM,EAAMD,CAC3B,CACA,SAASnsD,GAAEmsD,EAAa,CACtB,MAAO,GAAMA,CACf,CAGA,SAASE,GAAWC,EAAYH,EAAaC,EAAa,CACxD,QAAS/5D,GAAE85D,EAAKC,CAAG,EAAIE,EAAKl9C,GAAE+8C,EAAKC,CAAG,GAAKE,EAAKtsD,GAAEmsD,CAAG,GAAKG,CAC5D,CAGA,SAASC,GAASD,EAAYH,EAAaC,EAAa,CACtD,MAAO,GAAM/5D,GAAE85D,EAAKC,CAAG,EAAIE,EAAKA,EAAK,EAAMl9C,GAAE+8C,EAAKC,CAAG,EAAIE,EAAKtsD,GAAEmsD,CAAG,CACrE,CAEA,SAASK,GACPC,EACAC,EACAC,EACAC,EACAC,EACA,CACI,IAAAC,EACFC,EACA/jE,EAAI,EACH,GACU+jE,EAAAL,GAAMC,EAAKD,GAAM,EAC5BI,EAAWT,GAAWU,EAAUH,EAAKC,CAAG,EAAIJ,EACxCK,EAAW,EACRH,EAAAI,EAEAL,EAAAK,QAGP,KAAK,IAAID,CAAQ,EAAIhB,IACrB,EAAE9iE,EAAI+iE,IAED,OAAAgB,CACT,CAEA,SAASC,GACPP,EACAQ,EACAL,EACAC,EACA,CACA,QAAS7jE,EAAI,EAAGA,EAAI4iE,GAAmB,EAAE5iE,EAAG,CAC1C,MAAMkkE,EAAeX,GAASU,EAASL,EAAKC,CAAG,EAC/C,GAAIK,IAAiB,EACZ,OAAAD,EAET,MAAMH,EAAWT,GAAWY,EAASL,EAAKC,CAAG,EAAIJ,EACjDQ,GAAWH,EAAWI,CACxB,CACO,OAAAD,CACT,CAEA,SAASE,GAAankD,EAAW,CACxB,OAAAA,CACT,CAOO,SAASokD,GACdR,EACAS,EACAR,EACAS,EACuB,CACnB,GAAA,EAAE,GAAKV,GAAOA,GAAO,GAAK,GAAKC,GAAOA,GAAO,GACzC,MAAA,IAAI,MAAM,yCAAyC,EAGvD,GAAAD,IAAQS,GAAOR,IAAQS,EAClB,OAAAH,GAIH,MAAAI,EAAerB,GACjB,IAAI,aAAaF,EAAgB,EACjC,IAAI,MAAMA,EAAgB,EAC9B,QAAShjE,EAAI,EAAGA,EAAIgjE,GAAkB,EAAEhjE,EACtCukE,EAAavkE,CAAC,EAAIqjE,GAAWrjE,EAAIijE,GAAiBW,EAAKC,CAAG,EAG5D,SAASW,EAASf,EAAY,CAC5B,IAAIgB,EAAgB,EAChBC,EAAgB,EACpB,MAAMC,EAAa3B,GAAmB,EAEtC,KAEE0B,IAAkBC,GAAcJ,EAAaG,CAAa,GAAKjB,EAC/D,EAAEiB,EAEeD,GAAAxB,GAEjB,EAAAyB,EAGI,MAAAE,GACHnB,EAAKc,EAAaG,CAAa,IAC/BH,EAAaG,EAAgB,CAAC,EAAIH,EAAaG,CAAa,GACzDG,EAAYJ,EAAgBG,EAAO3B,GAEnC6B,EAAevB,GAASsB,EAAWjB,EAAKC,CAAG,EACjD,OAAIiB,GAAgBjC,GACXmB,GAAqBP,EAAIoB,EAAWjB,EAAKC,CAAG,EAC1CiB,IAAiB,EACnBD,EAEArB,GACLC,EACAgB,EACAA,EAAgBxB,GAChBW,EACAC,CAAA,CAGN,CAEA,OAAQ7jD,GAEFA,IAAM,GAAKA,IAAM,EACZA,EAEFqjD,GAAWmB,EAASxkD,CAAC,EAAGqkD,EAAKC,CAAG,CAE3C,CASO,SAASS,GACdC,EACkC,CAClC,OAAQA,EAAU,CAChB,IAAK,SAEH,MAAO,CAAC,EAAG,EAAG,EAAG,CAAC,EACpB,IAAK,OAEH,MAAO,CAAC,IAAM,GAAK,IAAM,CAAC,EAC5B,IAAK,UAEH,MAAO,CAAC,IAAM,EAAG,EAAG,CAAC,EACvB,IAAK,cAEH,MAAO,CAAC,IAAM,EAAG,IAAM,CAAC,EAC1B,IAAK,WAEH,MAAO,CAAC,EAAG,EAAG,IAAM,CAAC,CACzB,CACF,CAEO,SAASC,GACdD,EACkC,CAClC,KAAM,CAACzvD,EAAInB,EAAIoH,EAAI3B,CAAE,EAAIkrD,GAAsBC,CAAQ,EAChD,MAAA,CAAC,EAAIxpD,EAAI,EAAI3B,EAAI,EAAItE,EAAI,EAAInB,CAAE,CACxC,CAEO,SAAS8wD,GACdF,EACgB,CAChB,OAAOZ,GAAa,GAAGW,GAAsBC,CAAQ,CAAC,CACxD,CAEO,SAASG,GACdH,EACgB,CAChB,OAAOZ,GAAa,GAAGa,GAA6BD,CAAQ,CAAC,CAC/D,CCrMO,MAAMI,GAAgB,CAC3B,MAAO,CACL,OAAQ,SAAUC,EAAY/xD,EAAY1U,EAAmB,CACnD,OAAA0U,EAAK+xD,GAAMzmE,EAAIymE,CACzB,EACA,UAAY,UAAY,CAChB,MAAA//D,EAAI,CAAC,CAAC,EACZ,OAAO,SAAUqI,EAAmB,CAClC,IAAI7M,EAAI,EACJ,GAAAwE,EAAEqI,CAAC,EACL,OAAOrI,EAAEqI,CAAC,EAEZ,QAAS3N,EAAI2N,EAAG3N,EAAI,EAAGA,IAChBc,GAAAd,EAEP,OAAAsF,EAAEqI,CAAC,EAAI7M,EACAA,CAAA,CACT,EACC,EACH,UAAW,SAAU6M,EAAW3N,EAAmB,CAC3C,MAAAqwB,EAAK+0C,GAAc,MAAM,UACxB,OAAA/0C,EAAG1iB,CAAC,EAAI0iB,EAAGrwB,CAAC,EAAIqwB,EAAG1iB,EAAI3N,CAAC,CACjC,EAEA,WAAY,SACVqlE,EACA/xD,EACA8F,EACAwN,EACAhoB,EACQ,CACF,MAAA0mE,GAAMlsD,EAAKisD,GAAM,GACjB3wD,GAAMkS,EAAKtT,GAAM,GACjB0E,EAAKpZ,EAAIA,EACTgnB,EAAKhnB,EAAIoZ,EACf,OACG,EAAI1E,EAAK,EAAI8F,EAAKksD,EAAK5wD,GAAMkR,GAC7B,GAAKtS,EAAK,EAAI8F,EAAK,EAAIksD,EAAK5wD,GAAMsD,EACnCstD,EAAK1mE,EACL0U,CAEJ,EACA,gBAAiB,CACf+xD,EACA/xD,EACA8F,EACAxa,IACW,CACX,MAAM0K,EAAI,EAAI1K,EACP,OAAA0K,EAAIA,EAAI+7D,EAAK,EAAI/7D,EAAI1K,EAAI0U,EAAK1U,EAAIA,EAAIwa,CAC/C,EACA,YAAa,CACXisD,EACA/xD,EACA8F,EACAwN,EACAhoB,IACW,CACX,MAAM0K,EAAI,EAAI1K,EACd,OACE0K,EAAIA,EAAIA,EAAI+7D,EACZ,EAAI/7D,EAAIA,EAAI1K,EAAI0U,EAChB,EAAIhK,EAAI1K,EAAIA,EAAIwa,EAChBxa,EAAIA,EAAIA,EAAIgoB,CAEhB,CACF,EAEA,OAAQ,SAAUjP,EAAarO,EAAmB,CAC1C,MAAAR,EAAI6O,EAAE,OAAS,EACf/O,EAAIE,EAAIQ,EACRtJ,EAAI,KAAK,MAAM4I,CAAC,EAChBwhC,EAAKg7B,GAAc,MAAM,OAC/B,OAAI97D,EAAI,EACC8gC,EAAGzyB,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAG/O,CAAC,EAErBU,EAAI,EACC8gC,EAAGzyB,EAAE7O,CAAC,EAAG6O,EAAE7O,EAAI,CAAC,EAAGA,EAAIF,CAAC,EAE1BwhC,EAAGzyB,EAAE3X,CAAC,EAAG2X,EAAE3X,EAAI,EAAI8I,EAAIA,EAAI9I,EAAI,CAAC,EAAG4I,EAAI5I,CAAC,CACjD,EAEA,OAAQ,SAAU2X,EAAarO,EAAmB,CAChD,IAAI8V,EAAI,EACF,MAAAzR,EAAIgK,EAAE,OAAS,EACf4tD,EAAK,KAAK,IACVC,EAAKJ,GAAc,MAAM,UAC/B,QAASplE,EAAI,EAAGA,GAAK2N,EAAG3N,IACtBof,GAAKmmD,EAAG,EAAIj8D,EAAGqE,EAAI3N,CAAC,EAAIulE,EAAGj8D,EAAGtJ,CAAC,EAAI2X,EAAE3X,CAAC,EAAIwlE,EAAG73D,EAAG3N,CAAC,EAE5C,OAAAof,CACT,EAEA,WAAY,SAAUzH,EAAarO,EAAmB,CAC9C,MAAAR,EAAI6O,EAAE,OAAS,EACrB,IAAI/O,EAAIE,EAAIQ,EACRtJ,EAAI,KAAK,MAAM4I,CAAC,EACd,MAAAwhC,EAAKg7B,GAAc,MAAM,WAC/B,OAAIztD,EAAE,CAAC,IAAMA,EAAE7O,CAAC,GACVQ,EAAI,IACNtJ,EAAI,KAAK,MAAO4I,EAAIE,GAAK,EAAIQ,EAAG,GAE3B8gC,EACLzyB,GAAG3X,EAAI,EAAI8I,GAAKA,CAAC,EACjB6O,EAAE3X,CAAC,EACH2X,GAAG3X,EAAI,GAAK8I,CAAC,EACb6O,GAAG3X,EAAI,GAAK8I,CAAC,EACbF,EAAI5I,CAAA,GAGFsJ,EAAI,EACCqO,EAAE,CAAC,GAAKyyB,EAAGzyB,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAG,CAAC/O,CAAC,EAAI+O,EAAE,CAAC,GAEjDrO,EAAI,EACCqO,EAAE7O,CAAC,GAAKshC,EAAGzyB,EAAE7O,CAAC,EAAG6O,EAAE7O,CAAC,EAAG6O,EAAE7O,EAAI,CAAC,EAAG6O,EAAE7O,EAAI,CAAC,EAAGF,EAAIE,CAAC,EAAI6O,EAAE7O,CAAC,GAEzDshC,EACLzyB,EAAE3X,EAAIA,EAAI,EAAI,CAAC,EACf2X,EAAE3X,CAAC,EACH2X,EAAE7O,EAAI9I,EAAI,EAAI8I,EAAI9I,EAAI,CAAC,EACvB2X,EAAE7O,EAAI9I,EAAI,EAAI8I,EAAI9I,EAAI,CAAC,EACvB4I,EAAI5I,CAAA,CAGV,CACF,ECzHA,MAAqBylE,EAAM,CACjB,QAEJ,CAAA,EAEI,yBAEJ,CAAA,EAEJ,QAAqC,CAC5B,OAAA,OAAO,KAAK,KAAK,OAAO,EAAE,IAAKC,GAAY,KAAK,QAAQA,CAAO,CAAC,CACzE,CAEA,WAAkB,CAChB,KAAK,QAAU,EACjB,CAEA,IAAIC,EAAkC,CACpC,KAAK,QAAQA,EAAM,MAAO,CAAA,EAAIA,EAC9B,KAAK,yBAAyBA,EAAM,MAAO,CAAA,EAAIA,CACjD,CAEA,OAAOA,EAAkC,CACvC,OAAO,KAAK,QAAQA,EAAM,MAAO,CAAA,EACjC,OAAO,KAAK,yBAAyBA,EAAM,MAAO,CAAA,CACpD,CAEA,OAAOC,EAAe/3B,KAAOg4B,EAAW,GAAgB,CACtD,MAAMC,EAAW,OAAO,KAAK,KAAK,OAAO,EAMzC,QAAS9lE,EAAI,EAAGA,EAAI8lE,EAAS,OAAQ9lE,IAAK,CACxC,MAAM2lE,EAAQ,KAAK,QAAQG,EAAS9lE,CAAC,CAAC,EAChC+lE,EAAY,CAACF,EACfF,GAASA,EAAM,OAAOC,EAAMG,CAAS,IAAM,IAAS,CAACF,GACvD,OAAO,KAAK,QAAQC,EAAS9lE,CAAC,CAAC,CAEnC,CAIA,MAAO,CAAC,CAAC,OAAO,KAAK,KAAK,OAAO,EAAE,MACrC,CACF,CCtDa,MAAAgmE,GAAY,IAAIP,GCWtB,MAAMQ,EAA8B,CAgEzC,YAAoBC,EAAoBC,EAAwBH,GAAW,CAAvD,KAAA,QAAAE,EAAoB,KAAA,OAAAC,CAAoC,CA/DpE,IAAMhE,GAAS,SAGf,WAAa,GAEb,WAAa,EAEb,WAAa,EAEb,cAAgB,IAGhB,UAAY,GAEZ,gBAAkB,EAGlB,eAAiB,EAEjB,QAAU,EAEV,iBAEA,MAAQ,GAER,UAAY,GAGZ,aAA6B,CAAA,EAE7B,WAA8C,CAAA,EAE9C,mBAAmC,CAAA,EAGnC,gBAAkCC,GAAO,OAAO,KAEhD,uBAAgDgD,GAAc,OAG9D,eAAoC,CAAA,EAEpC,gBAAkB,GAGlB,iBAEA,sBAAwB,GAExB,sBAEA,2BAA6B,GAE7B,kBAEA,kBAEA,oBAEA,gBAEA,SAAW,GAInB,OAAgB,CACd,OAAO,KAAK,GACd,CAEA,WAAqB,CACnB,OAAO,KAAK,UACd,CAEA,UAAoB,CAClB,OAAO,KAAK,SACd,CAEA,GAAG5gC,EAA0BgW,EAAyB,CAC/C,YAAA,WAAa,OAAO,OAAOhW,CAAU,EACtCgW,IAAa,SACf,KAAK,cAAgBA,GAEhB,IACT,CAEA,SAAS5iC,EAAI,IAAY,CACvB,YAAK,cAAgBA,EACd,IACT,CAEA,MAAMguD,EAAe/3B,KAAa,CAChC,GAAI,KAAK,WACA,OAAA,KAIT,GAFA,KAAK,QAAU,KAAK,OAAO,IAAI,IAA2B,EAC1D,KAAK,QAAU,KAAK,eAChB,KAAK,UAAW,CAClB,KAAK,UAAY,GACN,UAAAu4B,KAAY,KAAK,mBAC1B,KAAK,0BAA0BA,CAAQ,EACvC,KAAK,aAAaA,CAAQ,EAAI,KAAK,mBAAmBA,CAAQ,CAElE,CACA,YAAK,WAAa,GAClB,KAAK,UAAY,GACjB,KAAK,sBAAwB,GAC7B,KAAK,2BAA6B,GAClC,KAAK,gBAAkB,GACvB,KAAK,WAAaR,EAClB,KAAK,YAAc,KAAK,WACnB,KAAA,iBACH,KAAK,QACL,KAAK,aACL,KAAK,WACL,KAAK,kBAAA,EAEA,IACT,CAEQ,iBACNM,EACAG,EACAC,EACAC,EACM,CACN,UAAWH,KAAYE,EAAY,CAC3B,MAAAE,EAAaN,EAAQE,CAAQ,EAC7BK,EAAoB,MAAM,QAAQD,CAAU,EAC5CE,EAAWD,EAAoB,QAAU,OAAOD,EAChDG,EACJ,CAACF,GAAqB,MAAM,QAAQH,EAAWF,CAAQ,CAAC,EACtD,GAAA,EAAAM,IAAa,aAAeA,IAAa,YAG7C,IAAIC,EAAqB,CACnB,IAAAC,EAAYN,EAAWF,CAAQ,EAC/B,GAAAQ,EAAU,SAAW,EACvB,SAEFA,EAAYA,EAAU,IACpB,KAAK,qBAAqB,KAAK,KAAMJ,CAAoB,CAAA,EAE3DF,EAAWF,CAAQ,EAAI,CAACI,CAAU,EAAE,OAAOI,CAAS,CACtD,CACA,IACGF,IAAa,UAAYD,IAC1BD,GACA,CAACG,EACD,CACAN,EAAaD,CAAQ,EAAIK,EAAoB,CAAA,EAAK,CAAA,EAClD,UAAWxkC,KAAQukC,EACjBH,EAAaD,CAAQ,EAAEnkC,CAAI,EAAIukC,EAAWvkC,CAAI,EAEhDskC,EAAmBH,CAAQ,EAAIK,EAAoB,CAAA,EAAK,CAAA,EACnD,KAAA,iBACHD,EACAH,EAAaD,CAAQ,EACrBE,EAAWF,CAAQ,EACnBG,EAAmBH,CAAQ,CAAA,CAC7B,MAEI,OAAOC,EAAaD,CAAQ,EAAM,MACpCC,EAAaD,CAAQ,EAAII,GAEtBC,IACHJ,EAAaD,CAAQ,GAAK,GAExBO,EACFJ,EAAmBH,CAAQ,EAAIE,EAAWF,CAAQ,EAAE,MAAA,EAAQ,UAE5DG,EAAmBH,CAAQ,EAAIC,EAAaD,CAAQ,GAAK,EAG/D,CACF,CAEA,MAAa,CAKP,OAJC,KAAK,kBACR,KAAK,gBAAkB,GACvB,KAAK,kBAAkB,GAEpB,KAAK,YAGV,KAAK,QAAU,KAAK,OAAO,OAAO,IAA2B,EAC7D,KAAK,WAAa,GAClB,KAAK,UAAY,GACb,KAAK,iBACF,KAAA,gBAAgB,KAAK,OAAO,EAE5B,MARE,IASX,CAEA,KAAY,CACV,YAAK,SAAW,GAChB,KAAK,OAAO,GAAQ,EACb,IACT,CAEA,MAAMR,EAAe/3B,KAAa,CAChC,OAAI,KAAK,WAAa,CAAC,KAAK,WACnB,MAET,KAAK,UAAY,GACjB,KAAK,gBAAkB+3B,EACvB,KAAK,QAAU,KAAK,OAAO,OAAO,IAA2B,EACtD,KACT,CAEA,OAAOA,EAAe/3B,KAAa,CACjC,MAAI,CAAC,KAAK,WAAa,CAAC,KAAK,WACpB,MAET,KAAK,UAAY,GACZ,KAAA,YAAc+3B,EAAO,KAAK,gBAC/B,KAAK,gBAAkB,EACvB,KAAK,QAAU,KAAK,OAAO,IAAI,IAA2B,EACnD,KACT,CAEA,mBAA0B,CAElB,QAAA5lE,EAAI,EAAG6mE,EAAmB,KAAK,eAAe,OAClD7mE,EAAI6mE,EACJ7mE,IAEK,KAAA,eAAeA,CAAC,EAAE,KAAK,EAEvB,OAAA,IACT,CAEA,MAAMuxD,EAAQyU,GAAiB,CAC7B,YAAK,OAASzU,EACP,IACT,CAEA,MAAMuV,EAAS,EAAS,CACtB,YAAK,WAAaA,EACX,IACT,CAEA,OAAOC,EAAQ,EAAS,CACtB,YAAK,eAAiBA,EACtB,KAAK,QAAUA,EACR,IACT,CAEA,YAAYD,EAAuB,CACjC,YAAK,iBAAmBA,EACjB,IACT,CAEA,KAAKE,EAAO,GAAa,CACvB,YAAK,MAAQA,EACN,IACT,CAEA,OAAOzE,EAAiCH,GAAO,OAAO,KAAY,CAChE,YAAK,gBAAkBG,EAChB,IACT,CAEA,cACE0E,EAA+C7B,GAAc,OACvD,CACN,YAAK,uBAAyB6B,EACvB,IACT,CAEA,SAASC,EAAiC,CACxC,YAAK,eAAiBA,EACf,IACT,CAEA,QAAQC,EAAsC,CAC5C,YAAK,iBAAmBA,EACjB,IACT,CAEA,aAAaA,EAAsC,CACjD,YAAK,sBAAwBA,EACtB,IACT,CAEA,SAASA,EAAuD,CAC9D,YAAK,kBAAoBA,EAClB,IACT,CAEA,SAASA,EAAsC,CAC7C,YAAK,kBAAoBA,EAClB,IACT,CAEA,WAAWA,EAAsC,CAC/C,YAAK,oBAAsBA,EACpB,IACT,CAEA,OAAOA,EAAsC,CAC3C,YAAK,gBAAkBA,EAChB,IACT,CAKA,OAAOvB,EAAO/3B,KAAOk4B,EAAY,GAAe,CAC9C,GAAI,KAAK,UAAkB,MAAA,GACvB,IAAAK,EACAgB,EACE,MAAAC,EAAU,KAAK,WAAa,KAAK,cACvC,GAAI,CAAC,KAAK,UAAY,CAAC,KAAK,WAAY,CACtC,GAAIzB,EAAOyB,EAAgB,MAAA,GACvBtB,GAAW,KAAK,MAAMH,CAAI,CAChC,CAEI,GADJ,KAAK,SAAW,GACZA,EAAO,KAAK,WACP,MAAA,GAEL,KAAK,wBAA0B,KAC7B,KAAK,kBACF,KAAA,iBAAiB,KAAK,OAAO,EAEpC,KAAK,sBAAwB,IAE3B,KAAK,6BAA+B,KAClC,KAAK,uBACF,KAAA,sBAAsB,KAAK,OAAO,EAEzC,KAAK,2BAA6B,IAEzBwB,GAAAxB,EAAO,KAAK,YAAc,KAAK,cAC1CwB,EAAU,KAAK,gBAAkB,GAAKA,EAAU,EAAI,EAAIA,EAClD,MAAA7kC,EAAQ,KAAK,gBAAgB6kC,CAAO,EAU1C,GATK,KAAA,kBACH,KAAK,QACL,KAAK,aACL,KAAK,WACL7kC,CAAA,EAEE,KAAK,mBACF,KAAA,kBAAkB,KAAK,QAAS6kC,CAAO,EAE1CA,IAAY,EACV,GAAA,KAAK,QAAU,EAAG,CAChB,SAAS,KAAK,OAAO,GAClB,KAAA,UAEF,IAAAhB,KAAY,KAAK,mBAChB,CAAC,KAAK,OAAS,OAAO,KAAK,WAAWA,CAAQ,GAAM,WACjD,KAAA,mBAAmBA,CAAQ,EAC9B,KAAK,mBAAmBA,CAAQ,EAChC,WAAW,KAAK,WAAWA,CAAQ,CAAW,GAE9C,KAAK,OACP,KAAK,0BAA0BA,CAAQ,EAEzC,KAAK,aAAaA,CAAQ,EAAI,KAAK,mBAAmBA,CAAQ,EAEhE,OAAI,KAAK,QACF,KAAA,UAAY,CAAC,KAAK,WAErB,KAAK,mBAAqB,OACvB,KAAA,WAAaR,EAAO,KAAK,iBAEzB,KAAA,WAAaA,EAAO,KAAK,WAE5B,KAAK,mBACF,KAAA,kBAAkB,KAAK,OAAO,EAErC,KAAK,2BAA6B,GAC3B,EAAA,KACF,CACD,KAAK,qBACF,KAAA,oBAAoB,KAAK,OAAO,EAGjC,QAAA5lE,EAAI,EAAG6mE,EAAmB,KAAK,eAAe,OAClD7mE,EAAI6mE,EACJ7mE,IAIA,KAAK,eAAeA,CAAC,EAAE,MAAM,KAAK,WAAa,KAAK,aAAa,EAEnE,YAAK,WAAa,GACX,EACT,CAEK,MAAA,EACT,CAEQ,kBACNkmE,EACAG,EACAC,EACA/jC,EACM,CACN,UAAW6jC,KAAYE,EAAY,CAC7B,GAAAD,EAAaD,CAAQ,IAAM,OAC7B,SAEI,MAAApnC,EAAQqnC,EAAaD,CAAQ,GAAK,EACpC,IAAA1qC,EAAM4qC,EAAWF,CAAQ,EAC7B,MAAMkB,EAAe,MAAM,QAAQpB,EAAQE,CAAQ,CAAC,EAC9CmB,EAAa,MAAM,QAAQ7rC,CAAG,EACR,CAAC4rC,GAAgBC,EAEnCrB,EAAAE,CAAQ,EAAI,KAAK,uBACvB1qC,EACA6G,CAAA,EAEO,OAAO7G,GAAQ,UAAYA,EACpC,KAAK,kBAAkBwqC,EAAQE,CAAQ,EAAGpnC,EAAOtD,EAAK6G,CAAK,GAE3D7G,EAAM,KAAK,qBACTsD,EACAtD,CAAA,EAEE,OAAOA,GAAQ,WACjBwqC,EAAQE,CAAQ,EAAIpnC,GAAStD,EAAMsD,GAASuD,GAGlD,CACF,CAGQ,qBAAqBvD,EAAetD,EAA8B,CACpE,OAAA,OAAOA,GAAQ,SACVA,EAELA,EAAI,OAAO,CAAC,IAAM,KAAOA,EAAI,OAAO,CAAC,IAAM,IACtCsD,EAAQ,WAAWtD,CAAG,EAEtB,WAAWA,CAAG,CAEzB,CAEQ,0BAA0B0qC,EAAwB,CAClD,MAAAlrC,EAAM,KAAK,mBAAmBkrC,CAAQ,EACtCoB,EAAW,KAAK,WAAWpB,CAAQ,EACrC,OAAOoB,GAAa,SACjB,KAAA,mBAAmBpB,CAAQ,EAC9B,KAAK,mBAAmBA,CAAQ,EAAI,WAAWoB,CAAQ,EAEpD,KAAA,mBAAmBpB,CAAQ,EAAIoB,EAEjC,KAAA,WAAWpB,CAAQ,EAAIlrC,CAC9B,CACF,CC9bA,MAAMusC,GAAStF,GAAS,OAMlBuF,GAAS1B,GAAU,OAAO,KAAKA,EAAS,EACxC2B,GAAY3B,GAAU,UAAU,KAAKA,EAAS,EAC9CnwB,GAAMmwB,GAAU,IAAI,KAAKA,EAAS,EAClClwB,GAASkwB,GAAU,OAAO,KAAKA,EAAS,EACxC4B,GAAS5B,GAAU,OAAO,KAAKA,EAAS,EAEjC6B,GAAQ,CAAA,IACnBh6B,GACA,SAAAs0B,GACA,OAAAC,GACA,cAAAgD,GACA,MAAAK,GACA,MAAAQ,GACA,OAAAwB,GACA,OAAAC,GACA,UAAAC,GACA,IAAA9xB,GAAA,OACAC,GACA,OAAA8xB,EACF,ECzCO,MAAME,EAAM,CACjB,UACA,UACA,QACA,YACA,QAEA,YAAY/B,EAAY,GAAM,CAC5B,KAAK,UAAYA,EACjB,KAAK,UAAY,EACjB,KAAK,QAAU,EACf,KAAK,YAAc,EACnB,KAAK,QAAU,EACjB,CAEA,OAAQ,CACN,KAAK,UAAYl4B,KACjB,KAAK,QAAU,KAAK,UACpB,KAAK,YAAc,EACnB,KAAK,QAAU,EACjB,CAEA,MAAO,CACL,KAAK,eAAe,EACpB,KAAK,QAAU,GACf,KAAK,UAAY,EACnB,CAGA,gBAAiB,CACf,YAAK,SAAS,EACP,KAAK,WACd,CAGA,UAAW,CACT,IAAIgmB,EAAO,EACX,GAAI,KAAK,WAAa,CAAC,KAAK,QAC1B,YAAK,MAAM,EACJ,EAET,GAAI,KAAK,QAAS,CAChB,MAAMkU,EAAUl6B,KAChBgmB,EAAOkU,EAAU,KAAK,QACtB,KAAK,QAAUA,EACf,KAAK,aAAelU,CACtB,CACO,OAAAA,CACT,CACF,CCZO,MAAMmU,EAAS,CACb,OAAgC,CAAA,EAGhC,cACA,aACA,gBAEP,YAAYtqC,EAIT,CACI,KAAA,cAAgBA,GAAS,eAAiB,IAC/C,KAAK,aAAeA,GAAS,aAC7B,KAAK,gBAAkBA,GAAS,eAClC,CAEA,IAAW,OAAgB,CACzB,OAAO,KAAK,OAAO,MACrB,CAEO,OAAc,CACnB,KAAK,OAAS,EAChB,CAEQ,KAAKuqC,EAAU,GAAO,CAC5BC,GACE,KAAK,OACL,CAAC5iE,EAAwB8Z,IACtB6oD,EAA+B3iE,EAAE,MAAQ8Z,EAAE,MAAjC9Z,EAAE,OAAS8Z,EAAE,KAAoB,CAElD,CAEQ,YACN8nD,EAAgC,KAAK,OACd,CACvB,MAAMiB,EAAgC,CAAA,EAC/B,OAAAjB,EAAA,QAASvB,GAAU,CAClB,MAAA/mE,EAAI,CAAE,GAAG+mE,GACf,OAAO/mE,EAAE,MACTA,EAAE,WAAa,CAAE,GAAGA,EAAE,UAAW,EACjCA,EAAE,SAAW,CAAE,GAAGA,EAAE,QAAS,EAC7BupE,EAAO,KAAKvpE,CAAC,CAAA,CACd,EACMupE,CACT,CAEO,SACLC,EACAC,EACA3qC,EACM,CACN,MAAM4qC,EAAc,CAClB,WAAAF,EACA,SAAAC,EACA,OAAQ,OAAO3qC,GAAS,QAAW,SAAWA,EAAQ,OAAS,EAE/D,MACE,OAAOA,GAAS,OAAU,SAAWA,EAAQ,MAAQ,KAAK,OAAO,OACnE,aAAcA,GAAS,cAAgB0kC,GAAO,OAAO,KACrD,sBACE1kC,GAAS,uBAAyB0nC,GAAc,OAClD,OAAQ,OAAO1nC,GAAS,QAAW,SAAWA,EAAQ,OAAS,EAC/D,KAAMA,GAAS,MAAQ,GACvB,QAASA,GAAS,UAAY,IAAM,CAAA,GACpC,SAAUA,GAAS,WAAa,IAAM,CAAA,GACtC,WAAYA,GAAS,aAAe,IAAM,CAAA,EAAC,EAExC,YAAA,OAAO,KAAK4qC,CAAW,EAErB,IACT,CAEQ,4BAA8B,IAAM,CAAA,EACpC,UAAUpB,EAA8C,CAC9D,KAAK,4BAA4B,EAC3B,MAAAqB,EAAQ,IAAIT,GACZU,EAAgB,KAAK,cACpB,OAAA,IAAI,QAAerqC,GAAY,CACpC,KAAK,eAAe,EACpB,KAAK,4BAA8BsqC,GAChC7pE,GAAc,CACb,GAAI,MAAK,SAMF,CACL,MAAMgnE,EAAO,KAAK,IAAI,EAAGhnE,EAAI,KAAK,cAAc,EAC1C47C,EAAW,KAAK,IACpB,EACA+tB,EAAM,iBAAmB,KAAK,cAAA,EAG7BrB,EAAA,OAAQtoE,GAAMA,EAAE,MAAQ4pE,GAAiBhuB,CAAQ,EACjD,QAAS57C,GAAM,CAETA,EAAE,QACLA,EAAE,MAAQ,IAAIqnE,GAAM,CAAE,GAAGrnE,EAAE,WAAY,EACpC,GAAG,CAAE,GAAGA,EAAE,QAAS,EAAGA,EAAE,OAAS4pE,CAAa,EAE9C,OAAO5pE,EAAE,YAAY,EACrB,cAAcA,EAAE,qBAAqB,EACrC,OAAOA,EAAE,MAAM,EACf,KAAKA,EAAE,IAAI,EACX,QAAQA,EAAE,OAAO,EACjB,SAASA,EAAE,QAAQ,EACnB,WAAWA,EAAE,UAAU,EAC1BA,EAAE,MAAM,MAAMgnE,CAAI,IAajBhnE,EAAE,MAAQA,EAAE,QAAUA,EAAE,OAAS,IAAM4pE,EACxChuB,EAEA57C,EAAE,MAAM,OAAOgnE,CAAI,GAGfhnE,EAAE,MAAM,aACVA,EAAE,MAAM,MAEV8pE,GAAgBxB,EAAQtoE,CAAC,EAC3B,CACD,CACL,CACM,MAAA+pE,EAAa,CAAC,CAACzB,EAAO,OAC5B,OAAKyB,IACH,KAAK,kBAAkB,EACfxqC,KAEHwqC,CACT,CAAA,CACF,CACD,CACH,CAEO,SAAW,GACV,YAAc,IAAIb,GAClB,eAAiB,EAGzB,KAAKZ,EAAgC,KAAK,YAAY,KAAK,MAAM,EAAG,CAClE,KAAK,SAAW,GAChB,KAAK,eAAiB,EACtB,KAAK,UAAUA,CAAM,CACvB,CAEA,SAAU,CACR,MAAM0B,EAAgB,KAAK,YAAY,KAAK,MAAM,EAClD,IAAIC,EAAY,EACFD,EAAA,QAAShqE,GAAM,CAC3BiqE,EAAY,KAAK,IAAIA,EAAWjqE,EAAE,MAAQA,EAAE,MAAM,EAChDA,EAAA,aAAe8jE,GAAc9jE,EAAE,YAAY,EAC7C,MAAMkqE,EAAO,CAAE,GAAGlqE,EAAE,QAAS,EAC7BA,EAAE,SAAW,CAAE,GAAGA,EAAE,UAAW,EAC7BA,EAAA,WAAa,CAAE,GAAGkqE,EAAK,CAC1B,EAEaF,EAAA,QAAShqE,GAAM,CACzBA,EAAA,MAAQiqE,EAAYjqE,EAAE,MAAA,CACzB,EAED,KAAK,KAAKgqE,CAAa,CACzB,CAEA,OAAQ,CACN,KAAK,YAAY,QACjB,KAAK,SAAW,EAClB,CAEA,QAAS,CACF,KAAA,gBAAkB,KAAK,YAAY,eAAe,EACvD,KAAK,YAAY,OACjB,KAAK,SAAW,EAClB,CACF,QCxHO,cAAoBG,EAAiC,CAGnD,GACA,QACA,aAEA,4BAEA,SAAW,GAGX,GACA,GAEA,EACA,EAEA,OAEA,QACA,QAEA,aACA,aACA,kBACA,mBACA,mBAEA,GACA,GACA,GACA,GACA,KAEC,MAED,WACA,UAEA,WAAa,GACb,UAAY,GAEZ,sBAMA,YAEA,eACA,qBAAuB,EACvB,sBAAwB,EAExB,OAAS,GACT,GAEA,MACA,wBAA0B,GAE1B,OACA,OAAkB,CAAA,EAElB,MAEP,YAAYrrC,EAAyB,CAuEnC,GAtEM,QAEN,KAAK,GAAKsrC,KACNtrC,GAAS,IACX,KAAK,QAAUA,GAAS,GAEtBA,GAAS,eACX,KAAK,aAAeA,EAAQ,cAG9B,KAAK,4BACH,OAAOA,GAAS,6BAA+B,UAC3CA,EAAQ,4BACR,GAED,KAAA,EAAIA,GAAS,GAAK,EAClB,KAAA,EAAIA,GAAS,GAAK,EAEvB,KAAK,GAAK,EACV,KAAK,GAAK,EAER,OAAOA,GAAS,SAAW,UAC3B,OAAOA,GAAS,SAAW,UAEtB,KAAA,YAAYA,EAAQ,QAAU,KAAK,EAAGA,EAAQ,QAAU,KAAK,CAAC,EAGhE,KAAA,OAASA,GAAS,QAAU,EAEjC,KAAK,QAAU,EACf,KAAK,QAAU,EACXA,GAAS,SAAW,SACtB,KAAK,QAAUA,EAAQ,OACvB,KAAK,QAAUA,EAAQ,QAErBA,GAAS,UAAY,SACvB,KAAK,QAAUA,EAAQ,SAErBA,GAAS,UAAY,SACvB,KAAK,QAAUA,EAAQ,SAGpB,KAAA,aAAeA,GAAS,cAAgB,EACxC,KAAA,aAAeA,GAAS,cAAgB,EACxC,KAAA,kBAAoBA,GAAS,mBAAqB,EAClD,KAAA,mBAAqBA,GAAS,oBAAsB,EACpD,KAAA,mBAAqBA,GAAS,oBAAsB,EAEpD,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,KAAOA,GAAS,MAAQ,EAC7B,KAAK,MAAQ,CAGX,OAAQ,OACR,KAAM,MAAA,EAGJA,GAAS,OACN,KAAA,QAAQA,GAAS,KAAK,EAExB,KAAA,WAAaA,GAAS,YAAc,GACzC,KAAK,UAAYA,GAAS,UAC1B,KAAK,sBAAwBA,GAAS,sBACjC,KAAA,YAAcA,GAAS,aAAe,GAC3C,KAAK,OAAS,OAAOA,GAAS,QAAU,UAAYA,GAAS,OAAS,GACjE,KAAA,eAAiBA,GAAS,gBAAkB,GAE7C,KAAK,eAAgB,CACvB,MAAMurC,EAAkB,KAAK,QAAQ,mBAAoB,KAAK,EACzD,KAAA,QAAQ,mBAAoBA,CAAe,EAChD,KAAK,sBAAwBtL,GAC3BsL,CAAA,EACA,OAAO,CAAC5I,EAAKzoD,IAAMyoD,EAAMzoD,EAAG,CAAC,CACjC,CAWK,KAAA,MAAQsxD,GAAS,IAAI,CAC5B,CAGO,YAAYC,EAAYC,EAAY,CACzC,KAAK,GAAKD,EACV,KAAK,GAAKC,EACV,KAAK,SAAW,EAClB,CAGO,WAAY,CAEnB,CAGO,WAAmB,CACpB,GAAA,CAAC,KAAK,MAAO,CAWf,GATK,KAAA,MAAQ,IAAInK,GAGZ,KAAA,MAAM,UAAU,IAAM,CACzB,KAAK,OAAO,MACV,KAAK,SAAW,KAAK,cAAc,EACnC,KAAK,YAAA,CACP,CACD,EACG,KAAK,OAAS,CAAC,KAAK,SAAU,CAE1B,MAAAnM,EACJ,KAAK,OAAO,QAAU,EAClB,KAAK,MAAM,sBAAA,EACX,KAAK,sBAAsB,EAE7BA,IACG,KAAA,MAAM,GAAK,KAAK,GAAKA,EAAK,EAAIA,EAAK,MAAQ,EAAI,KAAK,MAAM,EAC1D,KAAA,MAAM,GAAK,KAAK,GAAKA,EAAK,EAAIA,EAAK,OAAS,EAAI,KAAK,MAAM,EAGpE,CACA,KAAK,UAAU,CACjB,CACA,OAAO,KAAK,KACd,CAEO,WAAWuW,EAAwC,CAE1D,CAEO,YACLA,EACAlkC,EACM,CAED,KAAA,MAAQ,KAAK,YACb,KAAA,MAAM,OAAO,IAAI,EAElB,KAAK,iBACF,KAAK,YACR,KAAK,QAAQ,oBAAqB,OAAO,KAAK,sBAAsB,CAAC,EACjE,KAAK,qBAAuB,KAAK,wBACnC,KAAK,qBAAuB,IAIpC,CAEO,SAASkkC,EAAwC,CAExD,CAOO,eAAqC,CAE1C,MAAO,EACT,CAIO,YAAqB,CACnB,OAAA,KAAK,OAAO,WAAA,GAAgB,EACrC,CAWO,gBACLlkC,EAMM,CACN,KAAK,wBAA0B,GAC1B,KAAA,OAAO,gBAAgBA,CAAG,CACjC,CAKO,uBAKE,CACA,OAAA,KAAK,OAAO,sBAAA,GAA2B,IAChD,CAGA,IAAW,QAAmC,CACtC,MAAA2tB,EAAO,KAAK,wBACZpqD,EAAI,CAAE,EAAG,KAAK,EAAG,EAAG,KAAK,GAC/B,OAAIoqD,IACFpqD,EAAE,EAAIoqD,EAAK,EAAIA,EAAK,MAAQ,EAC5BpqD,EAAE,EAAIoqD,EAAK,EAAIA,EAAK,OAAS,GAExBpqD,CACT,CAEO,MAAO,CACZ,GAAI,KAAK,OACP,OAEI,MAAAoqD,EAAO,KAAK,wBAClB,GAAI,CAACA,EACH,OAEG,KAAA,OAAO,QAAShyD,GAAM,CACnBo+D,MAAAA,EAAep+D,EAAE,aACnBA,EAAE,aAAa,MAAM,EACrB,IAAIo/D,GACRhB,EAAa,UAAU,CAACpM,EAAK,EAAIhyD,EAAE,EAAG,CAACgyD,EAAK,EAAIhyD,EAAE,CAAC,EACnDA,EAAE,aAAeo+D,CAAA,CAClB,EACK,MAAAA,EAAe,KAAK,aACtB,KAAK,aAAa,MAAM,EACxB,IAAIgB,GACKhB,EAAA,UAAU,CAACpM,EAAK,EAAI,KAAK,EAAG,CAACA,EAAK,EAAI,KAAK,CAAC,EACzD,KAAK,aAAeoM,CACtB,CAEO,cACLl/C,EACAhX,EACAm8B,EACS,CACT,GAAIA,aAAemkC,GACV,OAAAnkC,EAAI,cAAc,IAAI,OAAO,KAAK,YAAY,EAAGnlB,EAAGhX,CAAC,EAG1D,IAAAw3D,EACA,GAAA,CACMA,EAAA,IAAI,SAASxgD,EAAGhX,CAAC,OACf,CAEVw3D,EAAQr7B,EAAI,iBACZq7B,EAAM,EAAIxgD,EACVwgD,EAAM,EAAIx3D,CACZ,CACI,GAAA,KAAK,cAAc,mBACd,OAAA,KAAK,GAAG,cAAcw3D,CAAK,EAC7B,CACC,MAAA1N,EAAO,KAAK,wBAClB,GAAIA,EACF,OACE9yC,GAAK8yC,EAAK,GACV9yC,GAAK8yC,EAAK,EAAIA,EAAK,OACnB9pD,GAAK8pD,EAAK,GACV9pD,GAAK8pD,EAAK,EAAIA,EAAK,MAczB,CACO,MAAA,EACT,CAEO,gBACL9yC,EACAhX,EACAm8B,EACS,CACT,GAAIA,aAAemkC,GACV,OAAAnkC,EAAI,gBAAgB,IAAI,OAAO,KAAK,YAAY,EAAGnlB,EAAGhX,CAAC,EAG5D,IAAAw3D,EACA,GAAA,CACMA,EAAA,IAAI,SAASxgD,EAAGhX,CAAC,OACf,CAEVw3D,EAAQr7B,EAAI,iBACZq7B,EAAM,EAAIxgD,EACVwgD,EAAM,EAAIx3D,CACZ,CACI,OAAA,KAAK,cAAc,mBACd,KAAK,GAAG,gBAAgBw3D,CAAK,EAE/B,EAET,CAEO,OAAQ,CAEb,OAAO+I,GAAe,IAAI,EAAE,KAAK,IAAI,CAEvC,CAEO,KAAKC,EAAc,CACxB,YAAK,GAAKA,EAAM,GAChB,KAAK,QAAUA,EAAM,QACrB,KAAK,aAAeA,EAAM,aAC1B,KAAK,4BAA8BA,EAAM,4BACzC,KAAK,EAAIA,EAAM,EACf,KAAK,EAAIA,EAAM,EACf,KAAK,GAAKA,EAAM,GAChB,KAAK,GAAKA,EAAM,GAChB,KAAK,OAASA,EAAM,OACpB,KAAK,QAAUA,EAAM,QACrB,KAAK,QAAUA,EAAM,QACrB,KAAK,aAAeA,EAAM,aAC1B,KAAK,aAAeA,EAAM,aAC1B,KAAK,kBAAoBA,EAAM,kBAC/B,KAAK,mBAAqBA,EAAM,mBAChC,KAAK,mBAAqBA,EAAM,mBAChC,KAAK,GAAKA,EAAM,GAChB,KAAK,GAAKA,EAAM,GAChB,KAAK,GAAKA,EAAM,GAChB,KAAK,GAAKA,EAAM,GAChB,KAAK,KAAOA,EAAM,KAClB,KAAK,MAAQ,CACX,GAAGA,EAAM,KAAA,EAEX,KAAK,WAAaA,EAAM,WACxB,KAAK,UAAYA,EAAM,UACvB,KAAK,sBAAwBA,EAAM,sBACnC,KAAK,YAAcA,EAAM,YACzB,KAAK,OAASA,EAAM,OACpB,KAAK,eAAiBA,EAAM,eAC5B,KAAK,sBAAwBA,EAAM,sBAC5B,IACT,CAEO,MAAO,CAId,CAEO,SAAU,CAIjB,CAIO,QACLC,EACAlnC,EACM,CACF,OAAOknC,GAAc,SAChB,OAAA,OACL,KAAK,MACL,OAAO,YACL,OAAO,QAAQA,CAAS,EAAE,IAAI,CAAC,CAACngE,EAAGqO,CAAC,IAC3B,CAACmpB,GAAQx3B,CAAC,EAAGqO,CAAC,CACtB,CACH,CAAA,EAGE4qB,IACF,KAAK,MAAMzB,GAAQ2oC,CAAS,CAAC,EAAIlnC,EAGvC,CAOO,QACLR,EACAwN,EACqC,CAC9B,OAAA,KAAK,MAAMxN,CAAI,GAAK,KAAK,MAAMjB,GAAQiB,CAAI,CAAC,GAAKwN,CAC1D,CAEO,UAAoD,CACzD,OAAO,KAAK,KACd,CAEO,QAAQxN,EAAuB,CACpC,MAAO,CAAC,CAAC,KAAK,MAAMA,CAAI,GAAK,CAAC,CAAC,KAAK,MAAMjB,GAAQiB,CAAI,CAAC,CACzD,CAEO,SAASnG,EAA0C,CACjD,OAAAulC,GAAS,KAAK,EAAG,KAAK,EAAGvlC,EAAO,EAAGA,EAAO,CAAC,CACpD,CAEO,SAASA,EAAkC,CAC3C,KAAA,OAAS8tC,GAASzc,GAAM,KAAK,EAAG,KAAK,EAAGrxB,EAAO,EAAGA,EAAO,CAAC,CAAC,CAClE,CAEO,SAASA,EAAkCZ,EAAS,EAAG,CAC5D,KAAK,SAASY,CAAM,EACd,KAAA,CAAE,GAAIw8B,EAAI,GAAIC,CAAO,EAAAsR,GAAMC,GAAS,KAAK,MAAM,EAAG5uC,CAAM,EAC9D,KAAK,GAAKo9B,EACV,KAAK,GAAKC,EACV,KAAK,IAAI,CACX,CAEO,qBAAqBz8B,EAAkCZ,EAAS,IAAM,CAC3E,KAAK,SAASY,CAAM,EACd,KAAA,CAAE,GAAIuxB,EAAI,GAAIC,CAAO,EAAAuc,GAAMC,GAAS,KAAK,MAAM,EAAG5uC,CAAM,EAC9D,KAAK,GAAKmyB,EACV,KAAK,GAAKC,EACV,KAAK,IAAI,CACX,CAGO,eAAexxB,EAAe,CAErC,CAGO,UAAU8B,EAGd,CAEH,CAGO,YAAY9B,EAAe,CAC1B,MAAAixB,EAAKjxB,EAAO,EAAI,KAAK,EACrBkxB,EAAKlxB,EAAO,EAAI,KAAK,EACrBiuC,EAAShd,EAAKA,EAAKC,EAAKA,EACxB8X,EAAO,KAAK,KAAKiF,CAAM,EACvBC,EAAS,KAAK,KAAOluC,EAAO,KAAQiuC,EACpC1c,EAAM2c,EAAQjd,EAAM+X,EACpBxX,EAAM0c,EAAQhd,EAAM8X,EACrB,KAAA,IAAMzX,EAAK,KAAK,KAChB,KAAA,IAAMC,EAAK,KAAK,KACdxxB,EAAA,IAAMuxB,EAAKvxB,EAAO,KAClBA,EAAA,IAAMwxB,EAAKxxB,EAAO,IAC3B,CAEO,IAAI8B,EAA4B,CAErC,KAAK,IAAM,KAAK,GAChB,KAAK,IAAM,KAAK,GAGhB,MAAMqsC,EAAUC,GAAYtsC,GAAS,QAAS,CAAC,EAC/C,KAAK,IAAMqsC,EAiBX,MAAME,EAAWD,GAAYtsC,GAAS,SAAU,CAAC,EACjD,KAAK,IAAMusC,EACX,KAAK,IAAMA,EAEX,KAAK,GAAK,KAAK,GACf,KAAK,GAAK,KAAK,EACjB,CAEO,UACLruC,EACA8B,EACA,CACA,MAAMilC,EAASqH,GAAYtsC,GAAS,OAAQ,GAAI,EAC1CmvB,EAAKjxB,EAAO,EAAI,KAAK,GAAK,KAAK,EAC/BkxB,EAAKlxB,EAAO,EAAI,KAAK,GAAK,KAAK,EACrC,KAAK,GAAKixB,EAAK8V,EACf,KAAK,GAAK7V,EAAK6V,EACf,KAAK,IAAIjlC,CAAO,CAClB,CAEO,YACL9B,EACA8B,EACA,CACA,MAAMwsC,EAASF,GAAYtsC,GAAS,OAAQ,GAAI,GAC/C,MAAM,QAAQ9B,CAAM,EAAIA,EAAS,CAACA,CAAM,GAAG,QAASh9B,GAAM,CACzD,MAAMiuD,EAAKjuD,EAAE,EAAI,KAAK,GAAK,KAAK,EAC1BkuD,EAAKluD,EAAE,EAAI,KAAK,GAAK,KAAK,EAC1BuuD,EAAKN,EAAKqd,EACV9c,EAAKN,EAAKod,EAChB,KAAK,IAAM/c,EACX,KAAK,IAAMC,CAAA,CACZ,EACD,KAAK,IAAI,CAAE,SAAU,GAAK,GAAG1vB,EAAS,CACxC,CAEO,aACL9B,EACA8B,EAIQ,CACR,MAAMysC,EAAeH,GAAYtsC,GAAS,aAAc,GAAG,EACrDwsC,EAASF,GAAYtsC,GAAS,OAAQ,IAAM,EAC5CmvB,EAAKjxB,EAAO,EAAI,KAAK,EACrBkxB,EAAKlxB,EAAO,EAAI,KAAK,EACrBgpC,EAAO,KAAK,KAAK/X,EAAKA,EAAKC,EAAKA,CAAE,EACxC,GAAI8X,EAAOuF,EAAc,CACvB,MAAMhd,EAAKN,EAAKqd,EACV9c,EAAKN,EAAKod,EACX,YAAA,IAAM/c,EAAK,KAAK,KAChB,KAAA,IAAMC,EAAK,KAAK,KACdxxB,EAAA,IAAMuxB,EAAKvxB,EAAO,KAClBA,EAAA,IAAMwxB,EAAKxxB,EAAO,KAClB,EAAIgpC,EAAOuF,CACpB,CACO,MAAA,EACT,CAEA,gBAAyB,CAChB,OAAA,KAAK,YAAY,gBAC1B,CAEA,YAAYvrE,EAAqC,CAC/C,OAAO,KAAK,UAAA,EAAY,YAAYA,CAAC,CACvC,CAEA,iBAAiBo8B,EAIf,CACA,OAAO,KAAK,UAAA,EAAY,iBAAiBA,CAAM,CACjD,CAEO,UACLovC,EACAC,EAAW,EAKX,CACM,MAAA1I,EAAc,KAAK,iBACzB,OAAAyI,EAAM,QAAU,KAAK,UAAA,EAAY,WAAW,EAAGC,EAAW1I,CAAW,EAC9D,KAAK,iBAAiB0I,EAAW1I,CAAW,CACrD,CAEO,gBAAgB6G,EAAgB,IAAM9qC,EAA2B,CAChE,MAAA4sC,EAAQ,KAAK,YACb3I,EAAcM,GAAaqI,EAAM,iBAAkB,CAAC,EAC1D,KAAK,QAAQ,CACX,gBAAiB,GAAG3I,CAAW,IAAIA,CAAW,GAC9C,iBAAkB,GAAGA,CAAW,EAAA,CACjC,EACD,MAAM4I,EAAe7sC,GAAS,SACxB8sC,EAAK,IAAIxC,GAAS,CAAE,cAAAQ,CAAe,CAAA,EACtCgC,EAAA,SACD,CAAE,OAAQ7I,CAAY,EACtB,CAAE,OAAQ,CAAE,EACZ,OAAO,OAAOjkC,GAAW,GAAI,CAC3B,SAAU,CAAC+sC,EAAoBrD,IAAoB,CACjD,KAAK,QAAQ,mBAAoB,GAAKnF,GAAawI,EAAO,OAAQ,CAAC,CAAC,EACpEF,IAAeE,EAAQrD,CAAO,CAChC,CAAA,CACD,CAAA,EAEHoD,EAAG,KAAK,CACV,CACF,ECzuBO,MAAME,WAAgBC,EAAM,CAC1B,EACA,EACA,EAEA,GACA,IACA,IACA,GACA,GACA,GACA,OAEP,YAAYjtC,EAA2B,CACrC,MAAMA,CAAO,EACR,KAAA,EAAIA,GAAS,GAAK,EAClB,KAAA,EAAIA,GAAS,GAAK,EAClB,KAAA,EAAIA,GAAS,GAAK,EAClB,KAAA,GAAKA,GAAS,IAAM,IACpB,KAAA,IAAMA,GAAS,KAAO,EACtB,KAAA,IAAMA,GAAS,KAAO,EACtB,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,OAASA,GAAS,QAAU,CACnC,CAEA,eAAqC,CACnC,OAAI,KAAK,OACA,CACL,CAAC,IAAK,KAAK,aAAc,KAAK,WAAe,EAAA,KAAK,MAAM,EACxD,CAAC,IAAK,KAAK,OAAQ,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAI,KAAK,MAAM,EAC3D,CAAC,IAAK,KAAK,OAAQ,KAAK,OAAQ,EAAG,EAAG,EAAG,EAAG,GAAK,KAAK,MAAM,EAC5D,CAAC,GAAG,CAAA,EAGC,CAAC,CAAC,IAAK,KAAK,WAAc,EAAA,KAAK,WAAY,CAAA,CAAC,CAEvD,CAEA,gBAAgByH,EAAsB,CACpCA,EAAI,UAAU,EACVA,EAAA,IAAI,EAAG,EAAG,KAAK,OAAQ,EAAG,KAAK,GAAK,EAAG,EAAI,EAC/CA,EAAI,UAAU,CAChB,CAEA,kBAAkBylC,EAAaC,EAAa,CAC1C,KAAK,IAAMD,EACX,KAAK,IAAMC,CACb,CAEA,UAAU1B,EAAYC,EAAY0B,EAAY,CAC5C,KAAK,GAAK3B,EACV,KAAK,GAAKC,EACV,KAAK,GAAK0B,CACZ,CAEA,QAAQC,EAAc,EACnB,CAAE,EAAG,KAAK,EAAG,EAAG,KAAK,CAAM,EAAAC,GAAYpB,GAASmB,CAAI,EAAG,KAAK,EAAG,KAAK,CAAC,EACxE,CAEA,QAAQE,EAAc,EACnB,CAAE,EAAG,KAAK,EAAG,EAAG,KAAK,CAAM,EAAAD,GAAYpB,GAASqB,CAAI,EAAG,KAAK,EAAG,KAAK,CAAC,EACxE,CAEA,QAAQC,EAAc,EACnB,CAAE,EAAG,KAAK,EAAG,EAAG,KAAK,CAAM,EAAAF,GAAYpB,GAASsB,CAAI,EAAG,KAAK,EAAG,KAAK,CAAC,EACxE,CAEA,YAAa,CACX,MAAMC,EAAQ,KAAK,IAAM,KAAK,GAAK,KAAK,EAAI,KAAK,IACjD,OAAO,KAAK,KAAO,KAAK,GAAK,KAAK,GAAKA,CACzC,CAEA,YAAa,CACX,MAAMA,EAAQ,KAAK,IAAM,KAAK,GAAK,KAAK,EAAI,KAAK,IACjD,OAAO,KAAK,KAAO,KAAK,GAAK,KAAK,GAAKA,CACzC,CAEA,GAAG3K,EAAyB,CAC1B,OACE,KAAK,IAAMA,EAAM,GACjB,KAAK,IAAMA,EAAM,GACjB,KAAK,IAAMA,EAAM,GACjB,KAAK,SAAWA,EAAM,QACtB,KAAK,OAASA,EAAM,IAExB,CAEA,QAAS,CACP,OAAOxlC,GAAO,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,CACtC,CAEA,SAASvc,EAAqB,CACtB,MAAAouC,EAAKpuC,EAAG,EAAI,KAAK,EACjBquC,EAAKruC,EAAG,EAAI,KAAK,EACjBmvC,EAAKnvC,EAAG,EAAI,KAAK,EACvB,OAAO,KAAK,KAAKouC,EAAKA,EAAKC,EAAKA,EAAKc,EAAKA,CAAE,CAC9C,CAEA,OAAOud,EAAe,CACpB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CAEA,UAAU3rB,EAAM,EAAY,CACpB,MAAAmiB,EAAc,KAAK,SACzB,GAAIA,EAAa,CACf,MAAMwJ,EAAQ3rB,EAAMmiB,EACpB,KAAK,OAAOwJ,CAAK,CACnB,CACO,OAAA,IACT,CAEA,MAAM3rB,EAAa,CACX,MAAAmiB,EAAc,KAAK,SACrB,OAAAA,GAAeA,EAAcniB,GAC1B,KAAA,OAAOA,EAAMmiB,CAAW,EAExB,IACT,CAEA,MAAMljD,EAAa,CACjB,MAAMuB,EAAI,KAAK,EACThX,EAAI,KAAK,EACT6I,EAAI,KAAK,EACR,MAAA,CACL,EAAG7I,EAAIyV,EAAG,EAAI5M,EAAI4M,EAAG,EACrB,EAAG5M,EAAI4M,EAAG,EAAIuB,EAAIvB,EAAG,EACrB,EAAGuB,EAAIvB,EAAG,EAAIzV,EAAIyV,EAAG,CAAA,CAEzB,CAEA,SAASA,EAAa,CACb,MAAA,CACL,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,CAAA,CAEnB,CAEA,IAAIA,EAAa,CACR,MAAA,CACL,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,CAAA,CAEnB,CAEA,IAAIA,EAAa,CACR,MAAA,CACL,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,CAAA,CAEnB,CAEA,IAAIA,EAAa,CACR,MAAA,CACL,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,CAAA,CAEnB,CAEA,IAAIA,EAAqB,CAChB,OAAA,KAAK,EAAIA,EAAG,EAAI,KAAK,EAAIA,EAAG,EAAI,KAAK,EAAIA,EAAG,CACrD,CAEA,QAAQA,EAAa,CACb,MAAAgE,EAAK,KAAK,IAAIhE,CAAE,EACf,MAAA,CACL,EAAG,KAAK,EAAI,EAAIgE,EAAKhE,EAAG,EACxB,EAAG,KAAK,EAAI,EAAIgE,EAAKhE,EAAG,EACxB,EAAG,KAAK,EAAI,EAAIgE,EAAKhE,EAAG,CAAA,CAE5B,CACF,CAEA,MAAA2sD,GAAeV,GC3LFW,GAAwB,IACxBC,GAAyB,KAIhCC,GAAuC,CAAC,EAAG,EAAG,EAAG,CAAC,EAIlDC,GAAqC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EActDC,GAAuC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAqBjEC,GAAuC,CAC3C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,EAEO,MAAMC,EAAQ,CAEnB,MAEA,YAAYppC,EAAuBgpC,GAAuB,CACnD,KAAA,MAAQ,MAAM,KAAKhpC,CAAK,CAC/B,CAEA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CAEA,IAAI,IAAI5qB,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CAGA,IAAIi0D,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAG,CACtC,YAAK,IAAMH,EACX,KAAK,IAAMC,EACX,KAAK,IAAMC,EACX,KAAK,IAAMC,EACJ,IACT,CAEA,UAAW,CACJ,YAAA,MAAQ,MAAM,KAAKR,EAAqB,EACtC,IACT,CAEA,IAAI,YAAsB,CACjB,OAAA,KAAK,KAAO,GAAK,KAAK,KAAO,GAAK,KAAK,KAAO,GAAK,KAAK,KAAO,CACxE,CAEA,KAAKziE,EAAY,CACf,YAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACN,IACT,CAEA,OAAiB,CACR,OAAA,IAAI6iE,GAAQ,KAAK,KAAK,CAC/B,CAEA,UAAU96B,EAAiB4W,EAAS,EAAG,CACrC,QAASznD,EAAI,EAAGA,EAAI,EAAGA,IACrB,KAAK,MAAMA,CAAC,EAAI6wC,EAAM7wC,EAAIynD,CAAM,EAE3B,OAAA,IACT,CAEA,QAAQ5W,EAAkB,GAAI4W,EAAS,EAAG,CAClC,OAAA5W,EAAA4W,CAAM,EAAI,KAAK,IACf5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,IACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,IACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,IAClB5W,CACT,CAEA,iBAAiBvrC,EAAY8Z,EAAY,CACvC,MAAMqS,EAAKnsB,EAAE,MACP7F,EAAK2f,EAAE,MACP2F,EAAK,KAAK,MAEVinD,EAAMv6C,EAAG,CAAC,EACVw6C,EAAMx6C,EAAG,CAAC,EACVy6C,EAAMz6C,EAAG,CAAC,EACV06C,EAAM16C,EAAG,CAAC,EAEV26C,EAAM3sE,EAAG,CAAC,EACV4sE,EAAM5sE,EAAG,CAAC,EACV6sE,EAAM7sE,EAAG,CAAC,EACV8sE,EAAM9sE,EAAG,CAAC,EAEhB,OAAAslB,EAAG,CAAC,EAAIinD,EAAMI,EAAMH,EAAMK,EAC1BvnD,EAAG,CAAC,EAAIinD,EAAMK,EAAMJ,EAAMM,EAE1BxnD,EAAG,CAAC,EAAImnD,EAAME,EAAMD,EAAMG,EAC1BvnD,EAAG,CAAC,EAAImnD,EAAMG,EAAMF,EAAMI,EAEnB,IACT,CAEA,SAASzjE,EAAY,CACZ,OAAA,KAAK,iBAAiB,KAAMA,CAAC,CACtC,CAEA,YAAYA,EAAY,CACf,OAAA,KAAK,iBAAiBA,EAAG,IAAI,CACtC,CAEA,eAAehI,EAAW,CACxB,YAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACL,IACT,CAGA,aAAsB,CACpB,OAAO,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,GAC/C,CACF,CAEO,MAAM0rE,EAAQ,CAEnB,MAEA,YAAYjqC,EAAuBkpC,GAAuB,CACnD,KAAA,MAAQ,MAAM,KAAKlpC,CAAK,CAC/B,CAEA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CAEA,IAAI,IAAI5qB,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CAGA,IACEi0D,EAAM,EACNC,EAAM,EACNY,EAAM,EACNX,EAAM,EACNC,EAAM,EACNW,EAAM,EACNC,EAAM,EACNC,EAAM,EACNC,EAAM,EACN,CACA,MAAM9nD,EAAK,KAAK,MAChB,OAAAA,EAAG,CAAC,EAAI6mD,EACR7mD,EAAG,CAAC,EAAI+mD,EACR/mD,EAAG,CAAC,EAAI4nD,EACR5nD,EAAG,CAAC,EAAI8mD,EACR9mD,EAAG,CAAC,EAAIgnD,EACRhnD,EAAG,CAAC,EAAI6nD,EACR7nD,EAAG,CAAC,EAAI0nD,EACR1nD,EAAG,CAAC,EAAI2nD,EACR3nD,EAAG,CAAC,EAAI8nD,EACD,IACT,CAEA,UAAW,CACJ,YAAA,MAAQ,MAAM,KAAKpB,EAAqB,EACtC,IACT,CAEA,IAAI,YAAsB,CAEtB,OAAA,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,CAEhB,CAEA,KAAK3iE,EAAY,CACf,YAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACN,IACT,CAEA,OAAiB,CACR,OAAA,IAAI0jE,GAAQ,KAAK,KAAK,CAC/B,CAEA,UAAU37B,EAAiB4W,EAAS,EAAG,CACrC,QAASznD,EAAI,EAAGA,EAAI,EAAGA,IACrB,KAAK,MAAMA,CAAC,EAAI6wC,EAAM7wC,EAAIynD,CAAM,EAE3B,OAAA,IACT,CAEA,QAAQ5W,EAAkB,GAAI4W,EAAS,EAAG,CAClC,OAAA5W,EAAA4W,CAAM,EAAI,KAAK,IACf5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,IACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,IACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,IACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,IACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,IACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,IACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,IACnB5W,EAAA4W,EAAS,CAAC,EAAI,KAAK,IAClB5W,CACT,CAEA,aAAai8B,EAAgBC,EAAgBC,EAAgB,CACrD,OAAAF,EAAA,qBAAqB,KAAM,CAAC,EAC5BC,EAAA,qBAAqB,KAAM,CAAC,EAC5BC,EAAA,qBAAqB,KAAM,CAAC,EAC3B,IACT,CAEA,eAAelkE,EAAY,CACzB,YAAK,IAAIA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,GAAG,EAC/D,IACT,CAEA,iBAAiBxD,EAAY8Z,EAAY,CACvC,MAAMqS,EAAKnsB,EAAE,MACP7F,EAAK2f,EAAE,MACP2F,EAAK,KAAK,MAEVinD,EAAMv6C,EAAG,CAAC,EACVw6C,EAAMx6C,EAAG,CAAC,EACVw7C,EAAMx7C,EAAG,CAAC,EACVy6C,EAAMz6C,EAAG,CAAC,EACV06C,EAAM16C,EAAG,CAAC,EACVy7C,EAAMz7C,EAAG,CAAC,EACV07C,EAAM17C,EAAG,CAAC,EACV27C,EAAM37C,EAAG,CAAC,EACV47C,EAAM57C,EAAG,CAAC,EAEV26C,EAAM3sE,EAAG,CAAC,EACV4sE,EAAM5sE,EAAG,CAAC,EACV6tE,EAAM7tE,EAAG,CAAC,EACV6sE,EAAM7sE,EAAG,CAAC,EACV8sE,EAAM9sE,EAAG,CAAC,EACV8tE,EAAM9tE,EAAG,CAAC,EACV+tE,EAAM/tE,EAAG,CAAC,EACVguE,EAAMhuE,EAAG,CAAC,EACViuE,EAAMjuE,EAAG,CAAC,EAEhB,OAAAslB,EAAG,CAAC,EAAIinD,EAAMI,EAAMH,EAAMK,EAAMW,EAAMO,EACtCzoD,EAAG,CAAC,EAAIinD,EAAMK,EAAMJ,EAAMM,EAAMU,EAAMQ,EACtC1oD,EAAG,CAAC,EAAIinD,EAAMsB,EAAMrB,EAAMsB,EAAMN,EAAMS,EAEtC3oD,EAAG,CAAC,EAAImnD,EAAME,EAAMD,EAAMG,EAAMY,EAAMM,EACtCzoD,EAAG,CAAC,EAAImnD,EAAMG,EAAMF,EAAMI,EAAMW,EAAMO,EACtC1oD,EAAG,CAAC,EAAImnD,EAAMoB,EAAMnB,EAAMoB,EAAML,EAAMQ,EAEtC3oD,EAAG,CAAC,EAAIooD,EAAMf,EAAMgB,EAAMd,EAAMe,EAAMG,EACtCzoD,EAAG,CAAC,EAAIooD,EAAMd,EAAMe,EAAMb,EAAMc,EAAMI,EACtC1oD,EAAG,CAAC,EAAIooD,EAAMG,EAAMF,EAAMG,EAAMF,EAAMK,EAE/B,IACT,CAEA,SAAS5kE,EAAY,CACZ,OAAA,KAAK,iBAAiB,KAAMA,CAAC,CACtC,CAEA,YAAYA,EAAY,CACf,OAAA,KAAK,iBAAiBA,EAAG,IAAI,CACtC,CAEA,eAAehI,EAAW,CACxB,YAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACL,IACT,CAGA,aAAsB,CACpB,MAAMikB,EAAK,KAAK,MACVzf,EAAIyf,EAAG,CAAC,EACR3F,EAAI2F,EAAG,CAAC,EACRrc,EAAIqc,EAAG,CAAC,EACRnN,EAAImN,EAAG,CAAC,EACRpmB,EAAIomB,EAAG,CAAC,EACRnc,EAAImc,EAAG,CAAC,EACRhO,EAAIgO,EAAG,CAAC,EACRlc,EAAIkc,EAAG,CAAC,EACR/kB,EAAI+kB,EAAG,CAAC,EACd,OACEzf,EAAI3G,EAAIqB,EAAIsF,EAAIsD,EAAIC,EAAIuW,EAAIxH,EAAI5X,EAAIof,EAAIxW,EAAImO,EAAIrO,EAAIkP,EAAI/O,EAAIH,EAAI/J,EAAIoY,CAExE,CAEA,SAAU,CACR,MAAMgO,EAAK,KAAK,MACV6mD,EAAM7mD,EAAG,CAAC,EACV+mD,EAAM/mD,EAAG,CAAC,EACV4nD,EAAM5nD,EAAG,CAAC,EACV8mD,EAAM9mD,EAAG,CAAC,EACVgnD,EAAMhnD,EAAG,CAAC,EACV6nD,EAAM7nD,EAAG,CAAC,EACV0nD,EAAM1nD,EAAG,CAAC,EACV2nD,EAAM3nD,EAAG,CAAC,EACV8nD,EAAM9nD,EAAG,CAAC,EACV4oD,EAAMd,EAAMd,EAAMa,EAAMF,EACxBjT,EAAMmT,EAAMH,EAAMI,EAAMhB,EACxBrS,EAAMkT,EAAMb,EAAME,EAAMU,EACxBmB,EAAMhC,EAAM+B,EAAM7B,EAAMrS,EAAMkT,EAAMnT,EAE1C,GAAIoU,IAAQ,EACH,OAAA,KAAK,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAG3C,MAAMC,EAAS,EAAID,EAEhB,OAAA7oD,EAAA,CAAC,EAAI4oD,EAAME,EACd9oD,EAAG,CAAC,GAAK4nD,EAAMD,EAAMG,EAAMf,GAAO+B,EAClC9oD,EAAG,CAAC,GAAK6nD,EAAMd,EAAMa,EAAMZ,GAAO8B,EAE/B9oD,EAAA,CAAC,EAAI00C,EAAMoU,EACd9oD,EAAG,CAAC,GAAK8nD,EAAMjB,EAAMe,EAAMF,GAAOoB,EAClC9oD,EAAG,CAAC,GAAK4nD,EAAMd,EAAMe,EAAMhB,GAAOiC,EAE/B9oD,EAAA,CAAC,EAAIy0C,EAAMqU,EACd9oD,EAAG,CAAC,GAAK+mD,EAAMW,EAAMC,EAAMd,GAAOiC,EAClC9oD,EAAG,CAAC,GAAKgnD,EAAMH,EAAME,EAAMD,GAAOgC,EAE3B,IACT,CAEA,WAAY,CACN,IAAA3yC,EACJ,MAAMpyB,EAAI,KAAK,MAEf,OAAAoyB,EAAMpyB,EAAE,CAAC,EACPA,EAAA,CAAC,EAAIA,EAAE,CAAC,EACVA,EAAE,CAAC,EAAIoyB,EACPA,EAAMpyB,EAAE,CAAC,EACPA,EAAA,CAAC,EAAIA,EAAE,CAAC,EACVA,EAAE,CAAC,EAAIoyB,EACPA,EAAMpyB,EAAE,CAAC,EACPA,EAAA,CAAC,EAAIA,EAAE,CAAC,EACVA,EAAE,CAAC,EAAIoyB,EAEA,IACT,CAEA,gBAAgB4yC,EAAkB,CAChC,OAAO,KAAK,eAAeA,CAAO,EAAE,QAAA,EAAU,WAChD,CAEA,mBAAmB3nE,EAAa,CAC9B,MAAM2C,EAAI,KAAK,MACb,OAAA3C,EAAA,CAAC,EAAI2C,EAAE,CAAC,EACR3C,EAAA,CAAC,EAAI2C,EAAE,CAAC,EACR3C,EAAA,CAAC,EAAI2C,EAAE,CAAC,EACR3C,EAAA,CAAC,EAAI2C,EAAE,CAAC,EACR3C,EAAA,CAAC,EAAI2C,EAAE,CAAC,EACR3C,EAAA,CAAC,EAAI2C,EAAE,CAAC,EACR3C,EAAA,CAAC,EAAI2C,EAAE,CAAC,EACR3C,EAAA,CAAC,EAAI2C,EAAE,CAAC,EACR3C,EAAA,CAAC,EAAI2C,EAAE,CAAC,EACH,IACT,CAEA,eACEilE,EACAvtE,EACAqtD,EACAC,EACA2H,EACAuB,EACAC,EACA,CACM,MAAA,EAAI,KAAK,IAAIxB,CAAQ,EACrB30D,EAAI,KAAK,IAAI20D,CAAQ,EACtB,YAAA,IACH5H,EAAK,EACLA,EAAK/sD,EACL,CAAC+sD,GAAM,EAAImJ,EAAKl2D,EAAIm2D,GAAMD,EAAK+W,EAC/B,CAACjgB,EAAKhtD,EACNgtD,EAAK,EACL,CAACA,GAAM,CAAChtD,EAAIk2D,EAAK,EAAIC,GAAMA,EAAKz2D,EAChC,EACA,EACA,CAAA,EAEK,IACT,CAEA,MAAMqtD,EAAYC,EAAY,CAC5B,YAAK,YAAYkgB,GAAI,UAAUngB,EAAIC,CAAE,CAAC,EAC/B,IACT,CAEA,OAAOlB,EAAe,CACpB,YAAK,YAAYohB,GAAI,aAAa,CAACphB,CAAK,CAAC,EAClC,IACT,CAEA,UAAUmhB,EAAYvtE,EAAY,CAChC,YAAK,YAAYwtE,GAAI,gBAAgBD,EAAIvtE,CAAE,CAAC,EACrC,IACT,CAEA,gBAAgBwf,EAAqBhX,EAAY,CAC3C,OAAA,OAAOgX,GAAM,SACV,KAAA,IAAI,EAAG,EAAGA,EAAG,EAAG,EAAGhX,EAAG,EAAG,EAAG,CAAC,EAE7B,KAAA,IAAI,EAAG,EAAGgX,EAAE,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,CAAC,EAEjC,IACT,CAGA,aAAa4sC,EAAe,CACpB,MAAAlkD,EAAI,KAAK,IAAIkkD,CAAK,EAClB9rD,EAAI,KAAK,IAAI8rD,CAAK,EACnB,YAAA,IAAIlkD,EAAG,CAAC5H,EAAG,EAAGA,EAAG4H,EAAG,EAAG,EAAG,EAAG,CAAC,EAC5B,IACT,CAEA,UAAUsX,EAAWhX,EAAW,CACzB,YAAA,IAAIgX,EAAG,EAAG,EAAG,EAAGhX,EAAG,EAAG,EAAG,EAAG,CAAC,EAC3B,IACT,CAEA,OAAOilE,EAAiB,CACtB,QAASjuE,EAAI,EAAGA,EAAI,EAAGA,IACrB,GAAI,KAAK,MAAMA,CAAC,IAAMiuE,EAAO,MAAMjuE,CAAC,EAC3B,MAAA,GAGJ,MAAA,EACT,CACF,CAEO,MAAMkuE,EAAQ,CAEnB,MACA,YAAc,GAEd,YAAY3rC,EAAuBmpC,GAAuB,CACnD,KAAA,MAAQ,MAAM,KAAKnpC,CAAK,CAC/B,CAEA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,EAAE,CACtB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,EAAE,CACtB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,EAAE,CACtB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,EAAE,CACtB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,EAAE,CACtB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,EAAE,CACtB,CAEA,IAAI,IAAI5qB,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,EAAE,EAAIA,CACnB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,EAAE,EAAIA,CACnB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,EAAE,EAAIA,CACnB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,EAAE,EAAIA,CACnB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,EAAE,EAAIA,CACnB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,EAAE,EAAIA,CACnB,CAGA,IACEi0D,EAAM,EACNC,EAAM,EACNY,EAAM,EACN0B,EAAM,EACNrC,EAAM,EACNC,EAAM,EACNW,EAAM,EACN0B,EAAM,EACNzB,EAAM,EACNC,EAAM,EACNC,EAAM,EACNwB,EAAM,EACNC,EAAM,EACNC,EAAM,EACNC,EAAM,EACNC,EAAM,EACN,CACA,MAAM1pD,EAAK,KAAK,MAChB,OAAAA,EAAG,CAAC,EAAI6mD,EACR7mD,EAAG,CAAC,EAAI8mD,EACR9mD,EAAG,CAAC,EAAI0nD,EACR1nD,EAAG,EAAE,EAAIopD,EACTppD,EAAG,CAAC,EAAI+mD,EACR/mD,EAAG,CAAC,EAAIgnD,EACRhnD,EAAG,CAAC,EAAI2nD,EACR3nD,EAAG,EAAE,EAAIqpD,EACTrpD,EAAG,CAAC,EAAI4nD,EACR5nD,EAAG,CAAC,EAAI6nD,EACR7nD,EAAG,EAAE,EAAI8nD,EACT9nD,EAAG,EAAE,EAAIspD,EACTtpD,EAAG,CAAC,EAAIupD,EACRvpD,EAAG,CAAC,EAAIwpD,EACRxpD,EAAG,EAAE,EAAIypD,EACTzpD,EAAG,EAAE,EAAI0pD,EACF,IACT,CAEA,MAAgB,CACd,MACE,CAAC,KAAK,aACN,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,CAEhB,CAEA,MAAgB,CACP,MAAA,CAAC,KAAK,MACf,CAEA,UAAW,CACJ,YAAA,MAAQ,MAAM,KAAK/C,EAAqB,EACtC,IACT,CAEA,IAAI,YAAsB,CAEtB,OAAA,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,CAEhB,CAEA,KAAK5iE,EAAY,CACf,YAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACb,KAAK,IAAMA,EAAE,IACN,IACT,CAEA,OAAiB,CACR,OAAA,IAAIolE,GAAQ,KAAK,KAAK,CAC/B,CAGA,OAAO,WAAWptE,EAAW,CACrB,MAAAgI,EAAI,IAAIolE,GACRlM,EAAU0M,GAAY,SAAU5tE,CAAC,EACnC,OAAAkhE,EAAQ,SAAW,IACbA,EAAA,QAAQ,CAACvlC,EAAQgL,IAAU,CAC7BhL,EAAO,YACT3zB,EAAE,MAAM2+B,CAAK,EAAI,WAAWhL,EAAO,SAAS,EAC9C,CACD,EAEI3zB,CACT,CAEA,UAAU+nC,EAAiB4W,EAAS,EAAG,CACrC,QAASznD,EAAI,EAAGA,EAAI,GAAIA,IACtB,KAAK,MAAMA,CAAC,EAAI6wC,EAAM7wC,EAAIynD,CAAM,EAE3B,OAAA,IACT,CAEA,QAAQ5W,EAAkB,GAAI4W,EAAS,EAAG,CACxC,MAAM1iC,EAAK,KAAK,MAEV,OAAA8rB,EAAA4W,CAAM,EAAI1iC,EAAG,CAAC,EACpB8rB,EAAM4W,EAAS,CAAC,EAAI1iC,EAAG,CAAC,EACxB8rB,EAAM4W,EAAS,CAAC,EAAI1iC,EAAG,CAAC,EACxB8rB,EAAM4W,EAAS,CAAC,EAAI1iC,EAAG,CAAC,EAExB8rB,EAAM4W,EAAS,CAAC,EAAI1iC,EAAG,CAAC,EACxB8rB,EAAM4W,EAAS,CAAC,EAAI1iC,EAAG,CAAC,EACxB8rB,EAAM4W,EAAS,CAAC,EAAI1iC,EAAG,CAAC,EACxB8rB,EAAM4W,EAAS,CAAC,EAAI1iC,EAAG,CAAC,EAExB8rB,EAAM4W,EAAS,CAAC,EAAI1iC,EAAG,CAAC,EACxB8rB,EAAM4W,EAAS,CAAC,EAAI1iC,EAAG,CAAC,EACxB8rB,EAAM4W,EAAS,EAAE,EAAI1iC,EAAG,EAAE,EAC1B8rB,EAAM4W,EAAS,EAAE,EAAI1iC,EAAG,EAAE,EAE1B8rB,EAAM4W,EAAS,EAAE,EAAI1iC,EAAG,EAAE,EAC1B8rB,EAAM4W,EAAS,EAAE,EAAI1iC,EAAG,EAAE,EAC1B8rB,EAAM4W,EAAS,EAAE,EAAI1iC,EAAG,EAAE,EAC1B8rB,EAAM4W,EAAS,EAAE,EAAI1iC,EAAG,EAAE,EAEnB8rB,CACT,CAEA,aAAa/nC,EAAY,CACvB,MAAMic,EAAK,KAAK,MACV4pD,EAAK7lE,EAAE,MACV,OAAAic,EAAA,EAAE,EAAI4pD,EAAG,EAAE,EACX5pD,EAAA,EAAE,EAAI4pD,EAAG,EAAE,EACX5pD,EAAA,EAAE,EAAI4pD,EAAG,EAAE,EACP,IACT,CAEA,eAAe7lE,EAAY,CACzB,MAAM6lE,EAAK7lE,EAAE,MACR,YAAA,IACH6lE,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJ,EACAA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJ,EACAA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJ,EACA,EACA,EACA,EACA,CAAA,EAEK,IACT,CAEA,aAAa7B,EAAgBC,EAAgBC,EAAgB,CACrD,OAAAF,EAAA,qBAAqB,KAAM,CAAC,EAC5BC,EAAA,qBAAqB,KAAM,CAAC,EAC5BC,EAAA,qBAAqB,KAAM,CAAC,EAC3B,IACT,CAEA,UAAUF,EAAgBC,EAAgBC,EAAgB,CACnD,YAAA,IACHF,EAAM,EACNC,EAAM,EACNC,EAAM,EACN,EACAF,EAAM,EACNC,EAAM,EACNC,EAAM,EACN,EACAF,EAAM,EACNC,EAAM,EACNC,EAAM,EACN,EACA,EACA,EACA,EACA,CAAA,EAEK,IACT,CAEA,WAAY,CACV,OAAO,KAAK,eAAe,GAAK,KAAK,KAAO,KAAO,CACrD,CAGA,eAAexM,EAKb,CACM,MAAA3uD,EAAI2uD,EAAM,GAAK,EACfj3D,EAAIi3D,EAAM,GAAK,EACd,MAAA,CACL,EAAGA,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM3uD,EAAI,KAAK,IAAMtI,EAAI,KAAK,IACrE,EAAGi3D,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM3uD,EAAI,KAAK,IAAMtI,EAAI,KAAK,IACrE,EAAGi3D,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM3uD,EAAI,KAAK,IAAMtI,EAAI,KAAK,IACrE,EAAGi3D,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM3uD,EAAI,KAAK,IAAMtI,EAAI,KAAK,GAAA,CAEzE,CAEA,SAAS0kE,EAAiB,CAClB,KAAA,CAAE,QAAAW,EAAS,QAAAC,EAAS,MAAAC,EAAO,MAAAC,EAAO,EAAA/uD,EAAG,EAAAhX,CAAM,EAAA,KAAK,QAChDu5B,EAAsB,CAACqsC,EAASG,EAAOD,EAAOD,EAAS7uD,EAAGhX,CAAC,EACjE,OAAIilE,GACFA,EAAO,MAAQ1rC,EACR0rC,GAEA,IAAI/N,GAAO39B,CAAK,CAe3B,CAEA,SAAmB,CACjB,YAAK,IAAM,EACX,KAAK,IAAM,EACX,KAAK,IAAM,EACX,KAAK,IAAM,EACX,KAAK,IAAM,EACX,KAAK,IAAM,EACX,KAAK,IAAM,EACX,KAAK,IAAM,EACJ,IACT,CAEA,SAASysC,EAAmB,EAAG,CAC7B,MAAO,YAAY,KAAK,MACrB,IAAKr3D,GAAMsqD,GAAatqD,EAAGq3D,CAAgB,CAAC,EAC5C,KAAK,GAAG,CAAC,GACd,CAEA,OAAQ,CACN,MAAMJ,EAAU,KAAK,KACnB,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,GAAA,EAExDC,EAAU,KAAK,KACnB,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,GAAA,EAExDI,EAAU,KAAK,KACnB,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,GAAA,EAExDC,EAAUxF,GAASpuC,GAAM,KAAK,KAAK,CAAC,KAAK,GAAG,EAAG,GAAI,CAAC,CAAC,EACvD,IAAA6zC,EAAUzF,GAAS,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,CAAC,EACjD,KAAK,IAAIE,GAASsF,CAAO,CAAC,IAAM,IACxBC,EAAAzF,GAAS,KAAK,MAAM,CAAC,KAAK,IAAK,KAAK,GAAG,CAAC,GAGhD,IAAA0F,EAAU1F,GAAS,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,CAAC,EACrD,OAAI,KAAK,IAAM,GAAK,KAAK,KAAO,IACnB0F,GAAA,KAEN,CACL,EAAG,KAAK,IACR,EAAG,KAAK,IACR,EAAG,KAAK,IACR,QAAAR,EACA,QAAAC,EACA,QAAAI,EACA,QAAAE,EACA,QAAAD,EACA,QAAAE,EACA,MAAO1F,GAAS,KAAK,GAAG,EACxB,MAAOA,GAAS,KAAK,GAAG,EACxB,MAAOA,GAAS,KAAK,GAAG,EACxB,MAAO,KAAK,IACZ,YAAa,KAAK,IAAM,EAAE,EAAI,KAAK,KAAO,CAAA,CAE9C,CAEA,gBAAgB5gE,EAAY,CAE1B,MAAMic,EAAK,KAAK,MACV4pD,EAAK7lE,EAAE,MAEPumE,EAAS,EAAI5hB,GAAI,qBAAqB3kD,EAAG,CAAC,EAAE,SAC5CwmE,EAAS,EAAI7hB,GAAI,qBAAqB3kD,EAAG,CAAC,EAAE,SAC5CymE,EAAS,EAAI9hB,GAAI,qBAAqB3kD,EAAG,CAAC,EAAE,SAElD,OAAAic,EAAG,CAAC,EAAI4pD,EAAG,CAAC,EAAIU,EAChBtqD,EAAG,CAAC,EAAI4pD,EAAG,CAAC,EAAIU,EAChBtqD,EAAG,CAAC,EAAI4pD,EAAG,CAAC,EAAIU,EAChBtqD,EAAG,CAAC,EAAI,EAERA,EAAG,CAAC,EAAI4pD,EAAG,CAAC,EAAIW,EAChBvqD,EAAG,CAAC,EAAI4pD,EAAG,CAAC,EAAIW,EAChBvqD,EAAG,CAAC,EAAI4pD,EAAG,CAAC,EAAIW,EAChBvqD,EAAG,CAAC,EAAI,EAERA,EAAG,CAAC,EAAI4pD,EAAG,CAAC,EAAIY,EAChBxqD,EAAG,CAAC,EAAI4pD,EAAG,CAAC,EAAIY,EAChBxqD,EAAG,EAAE,EAAI4pD,EAAG,EAAE,EAAIY,EAClBxqD,EAAG,EAAE,EAAI,EAETA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EAEF,IACT,CAyIA,OAAOyqD,EAAc5zC,EAAiBta,EAAa,CACjD,MAAMyD,EAAK,KAAK,MAEb,OAAA0qD,GAAA,WAAWD,EAAK5zC,CAAM,EAErB6zC,GAAG,SAAS,IAAM,IAEpBA,GAAG,EAAI,GAGTA,GAAG,UAAU,EACVC,GAAA,aAAapuD,EAAImuD,EAAE,EAElBC,GAAG,SAAS,IAAM,IAGhB,KAAK,IAAIpuD,EAAG,CAAC,IAAM,EACrBmuD,GAAG,GAAK,KAERA,GAAG,GAAK,KAGVA,GAAG,UAAU,EACVC,GAAA,aAAapuD,EAAImuD,EAAE,GAGxBC,GAAG,UAAU,EACVC,GAAA,aAAaF,GAAIC,EAAE,EAEnB3qD,EAAA,CAAC,EAAI2qD,GAAG,EACR3qD,EAAA,CAAC,EAAI4qD,GAAG,EACR5qD,EAAA,CAAC,EAAI0qD,GAAG,EACR1qD,EAAA,CAAC,EAAI2qD,GAAG,EACR3qD,EAAA,CAAC,EAAI4qD,GAAG,EACR5qD,EAAA,CAAC,EAAI0qD,GAAG,EACR1qD,EAAA,CAAC,EAAI2qD,GAAG,EACR3qD,EAAA,CAAC,EAAI4qD,GAAG,EACR5qD,EAAA,EAAE,EAAI0qD,GAAG,EAEL,IACT,CAEA,iBAAiBnqE,EAAY8Z,EAAY,CACvC,MAAMqS,EAAKnsB,EAAE,MACP7F,EAAK2f,EAAE,MACP2F,EAAK,KAAK,MAEVinD,EAAMv6C,EAAG,CAAC,EACVw6C,EAAMx6C,EAAG,CAAC,EACVw7C,EAAMx7C,EAAG,CAAC,EACVm+C,EAAMn+C,EAAG,EAAE,EACXy6C,EAAMz6C,EAAG,CAAC,EACV06C,EAAM16C,EAAG,CAAC,EACVy7C,EAAMz7C,EAAG,CAAC,EACVo+C,EAAMp+C,EAAG,EAAE,EACX07C,EAAM17C,EAAG,CAAC,EACV27C,EAAM37C,EAAG,CAAC,EACV47C,EAAM57C,EAAG,EAAE,EACXq+C,EAAMr+C,EAAG,EAAE,EACXs+C,EAAMt+C,EAAG,CAAC,EACVu+C,EAAMv+C,EAAG,CAAC,EACVw+C,EAAMx+C,EAAG,EAAE,EACXy+C,EAAMz+C,EAAG,EAAE,EAEX26C,EAAM3sE,EAAG,CAAC,EACV4sE,EAAM5sE,EAAG,CAAC,EACV6tE,EAAM7tE,EAAG,CAAC,EACV0wE,EAAM1wE,EAAG,EAAE,EACX6sE,EAAM7sE,EAAG,CAAC,EACV8sE,EAAM9sE,EAAG,CAAC,EACV8tE,EAAM9tE,EAAG,CAAC,EACV2wE,EAAM3wE,EAAG,EAAE,EACX+tE,GAAM/tE,EAAG,CAAC,EACVguE,GAAMhuE,EAAG,CAAC,EACViuE,GAAMjuE,EAAG,EAAE,EACX4wE,GAAM5wE,EAAG,EAAE,EACX6wE,GAAM7wE,EAAG,CAAC,EACV8wE,EAAM9wE,EAAG,CAAC,EACV+wE,EAAM/wE,EAAG,EAAE,EACXgxE,EAAMhxE,EAAG,EAAE,EAEd,OAAAslB,EAAA,CAAC,EAAIinD,EAAMI,EAAMH,EAAMK,EAAMW,EAAMO,GAAMoC,EAAMU,GAC/CvrD,EAAA,CAAC,EAAIinD,EAAMK,EAAMJ,EAAMM,EAAMU,EAAMQ,GAAMmC,EAAMW,EAC/CxrD,EAAA,CAAC,EAAIinD,EAAMsB,EAAMrB,EAAMsB,EAAMN,EAAMS,GAAMkC,EAAMY,EAC/CzrD,EAAA,EAAE,EAAIinD,EAAMmE,EAAMlE,EAAMmE,EAAMnD,EAAMoD,GAAMT,EAAMa,EAEhD1rD,EAAA,CAAC,EAAImnD,EAAME,EAAMD,EAAMG,EAAMY,EAAMM,GAAMqC,EAAMS,GAC/CvrD,EAAA,CAAC,EAAImnD,EAAMG,EAAMF,EAAMI,EAAMW,EAAMO,GAAMoC,EAAMU,EAC/CxrD,EAAA,CAAC,EAAImnD,EAAMoB,EAAMnB,EAAMoB,EAAML,EAAMQ,GAAMmC,EAAMW,EAC/CzrD,EAAA,EAAE,EAAImnD,EAAMiE,EAAMhE,EAAMiE,EAAMlD,EAAMmD,GAAMR,EAAMY,EAEhD1rD,EAAA,CAAC,EAAIooD,EAAMf,EAAMgB,EAAMd,EAAMe,EAAMG,GAAMsC,EAAMQ,GAC/CvrD,EAAA,CAAC,EAAIooD,EAAMd,EAAMe,EAAMb,EAAMc,EAAMI,GAAMqC,EAAMS,EAC/CxrD,EAAA,EAAE,EAAIooD,EAAMG,EAAMF,EAAMG,EAAMF,EAAMK,GAAMoC,EAAMU,EAChDzrD,EAAA,EAAE,EAAIooD,EAAMgD,EAAM/C,EAAMgD,EAAM/C,EAAMgD,GAAMP,EAAMW,EAEhD1rD,EAAA,CAAC,EAAIgrD,EAAM3D,EAAM4D,EAAM1D,EAAM2D,EAAMzC,GAAM0C,EAAMI,GAC/CvrD,EAAA,CAAC,EAAIgrD,EAAM1D,EAAM2D,EAAMzD,EAAM0D,EAAMxC,GAAMyC,EAAMK,EAC/CxrD,EAAA,EAAE,EAAIgrD,EAAMzC,EAAM0C,EAAMzC,EAAM0C,EAAMvC,GAAMwC,EAAMM,EAChDzrD,EAAA,EAAE,EAAIgrD,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,GAAMH,EAAMO,EAE5C,IACT,CAEA,SAAS3nE,EAAY,CACZ,OAAA,KAAK,iBAAiB,KAAMA,CAAC,CACtC,CAEA,YAAYA,EAAY,CACf,OAAA,KAAK,iBAAiBA,EAAG,IAAI,CACtC,CAEA,eAAehI,EAAW,CACxB,YAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACL,IACT,CAGA,aAAc,CACZ,MAAMikB,EAAK,KAAK,MAEV6mD,EAAM7mD,EAAG,CAAC,EACV8mD,EAAM9mD,EAAG,CAAC,EACV0nD,EAAM1nD,EAAG,CAAC,EACVopD,EAAMppD,EAAG,EAAE,EACX+mD,EAAM/mD,EAAG,CAAC,EACVgnD,EAAMhnD,EAAG,CAAC,EACV2nD,EAAM3nD,EAAG,CAAC,EACVqpD,EAAMrpD,EAAG,EAAE,EACX4nD,EAAM5nD,EAAG,CAAC,EACV6nD,EAAM7nD,EAAG,CAAC,EACV8nD,EAAM9nD,EAAG,EAAE,EACXspD,EAAMtpD,EAAG,EAAE,EACXupD,EAAMvpD,EAAG,CAAC,EACVwpD,EAAMxpD,EAAG,CAAC,EACVypD,EAAMzpD,EAAG,EAAE,EACX0pD,EAAM1pD,EAAG,EAAE,EAKjB,OACEupD,GACG,CAACH,EAAMzB,EAAME,EACZH,EAAM2B,EAAMxB,EACZuB,EAAMpC,EAAMc,EACZhB,EAAMuC,EAAMvB,EACZJ,EAAMV,EAAMsC,EACZxC,EAAMa,EAAM2B,GAChBE,GACG,CAAC3C,EAAMc,EAAM2B,EACZzC,EAAMwC,EAAMvB,EACZsB,EAAMrC,EAAMe,EACZJ,EAAMX,EAAMuC,EACZ5B,EAAM2B,EAAMzB,EACZwB,EAAMzB,EAAMC,GAChB6B,GACG,CAAC5C,EAAMwC,EAAMxB,EACZhB,EAAMG,EAAMsC,EACZF,EAAMrC,EAAMc,EACZf,EAAMC,EAAMuC,EACZF,EAAMpC,EAAMY,EACZd,EAAMuC,EAAMzB,GAChB8B,GACG,CAAChC,EAAMV,EAAMY,EACZf,EAAMc,EAAME,EACZhB,EAAMG,EAAMc,EACZJ,EAAMX,EAAMc,EACZf,EAAMC,EAAMe,EACZhB,EAAMa,EAAMC,EAEpB,CAEA,WAAY,CACV,MAAM5nD,EAAK,KAAK,MACZ,IAAAmW,EAEJ,OAAAA,EAAMnW,EAAG,CAAC,EACPA,EAAA,CAAC,EAAIA,EAAG,CAAC,EACZA,EAAG,CAAC,EAAImW,EACRA,EAAMnW,EAAG,CAAC,EACPA,EAAA,CAAC,EAAIA,EAAG,CAAC,EACZA,EAAG,CAAC,EAAImW,EACRA,EAAMnW,EAAG,CAAC,EACPA,EAAA,CAAC,EAAIA,EAAG,CAAC,EACZA,EAAG,CAAC,EAAImW,EAERA,EAAMnW,EAAG,CAAC,EACPA,EAAA,CAAC,EAAIA,EAAG,EAAE,EACbA,EAAG,EAAE,EAAImW,EACTA,EAAMnW,EAAG,CAAC,EACPA,EAAA,CAAC,EAAIA,EAAG,EAAE,EACbA,EAAG,EAAE,EAAImW,EACTA,EAAMnW,EAAG,EAAE,EACRA,EAAA,EAAE,EAAIA,EAAG,EAAE,EACdA,EAAG,EAAE,EAAImW,EAEF,IACT,CAIA,YAAYlb,EAAqBhX,EAAY6I,EAAkB,CAC7D,MAAMkT,EAAK,KAAK,MAChB,OAAI/E,aAAaktC,IACZnoC,EAAA,EAAE,EAAI/E,EAAE,EACR+E,EAAA,EAAE,EAAI/E,EAAE,EACR+E,EAAA,EAAE,EAAI/E,EAAE,GAEX,OAAOA,GAAK,UACZ,OAAOhX,GAAK,UACZ,OAAO6I,GAAK,WAEZkT,EAAG,EAAE,EAAI/E,EACT+E,EAAG,EAAE,EAAI/b,EACT+b,EAAG,EAAE,EAAIlT,GAEJ,IACT,CAEA,SAAU,CACR,MAAMkT,EAAK,KAAK,MACV6mD,EAAM7mD,EAAG,CAAC,EACV+mD,EAAM/mD,EAAG,CAAC,EACV4nD,EAAM5nD,EAAG,CAAC,EACVupD,EAAMvpD,EAAG,CAAC,EACV8mD,EAAM9mD,EAAG,CAAC,EACVgnD,EAAMhnD,EAAG,CAAC,EACV6nD,EAAM7nD,EAAG,CAAC,EACVwpD,EAAMxpD,EAAG,CAAC,EACV0nD,EAAM1nD,EAAG,CAAC,EACV2nD,EAAM3nD,EAAG,CAAC,EACV8nD,EAAM9nD,EAAG,EAAE,EACXypD,EAAMzpD,EAAG,EAAE,EACXopD,EAAMppD,EAAG,EAAE,EACXqpD,EAAMrpD,EAAG,EAAE,EACXspD,EAAMtpD,EAAG,EAAE,EACX0pD,EAAM1pD,EAAG,EAAE,EACX4oD,EACJjB,EAAM2B,EAAME,EACZH,EAAMvB,EAAM0B,EACZH,EAAMxB,EAAM4B,EACZzC,EAAMsC,EAAMG,EACZ9B,EAAME,EAAM6B,EACZ1C,EAAMc,EAAM4B,EACRhV,EACJ0U,EAAMtB,EAAM0B,EACZ9B,EAAM4B,EAAME,EACZJ,EAAMvB,EAAM4B,EACZ3C,EAAMwC,EAAMG,EACZ/B,EAAMG,EAAM6B,EACZ5C,EAAMgB,EAAM4B,EACRjV,EACJiT,EAAM2B,EAAMG,EACZJ,EAAMzB,EAAM6B,EACZJ,EAAMpC,EAAMyC,EACZ3C,EAAMuC,EAAMI,EACZ/B,EAAMV,EAAM0C,EACZ5C,EAAMa,EAAM+B,EACRiC,EACJvC,EAAMzB,EAAME,EACZH,EAAM2B,EAAMxB,EACZuB,EAAMpC,EAAMc,EACZhB,EAAMuC,EAAMvB,EACZJ,EAAMV,EAAMsC,EACZxC,EAAMa,EAAM2B,EAERT,EAAMhC,EAAM+B,EAAM7B,EAAMrS,EAAMkT,EAAMnT,EAAM8U,EAAMoC,EAEtD,GAAI9C,IAAQ,EACV,OAAO,KAAK,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAGhE,MAAMC,EAAS,EAAID,EAEhB,OAAA7oD,EAAA,CAAC,EAAI4oD,EAAME,EACd9oD,EAAG,CAAC,GACDqpD,EAAMvB,EAAMyB,EACX5B,EAAM2B,EAAMC,EACZF,EAAMzB,EAAM6B,EACZ1C,EAAMuC,EAAMG,EACZ9B,EAAMC,EAAM8B,EACZ3C,EAAMe,EAAM4B,GACdZ,EACF9oD,EAAG,CAAC,GACDgnD,EAAMsC,EAAMC,EACXF,EAAMxB,EAAM0B,EACZF,EAAMzB,EAAM4B,EACZzC,EAAMuC,EAAME,EACZxC,EAAMY,EAAM8B,EACZ3C,EAAMc,EAAM6B,GACdZ,EACF9oD,EAAG,CAAC,GACD2nD,EAAME,EAAM0B,EACXvC,EAAMc,EAAMyB,EACZ5B,EAAMC,EAAM4B,EACZzC,EAAMe,EAAM0B,EACZxC,EAAMY,EAAM6B,EACZ1C,EAAMc,EAAM4B,GACdX,EAEC9oD,EAAA,CAAC,EAAI00C,EAAMoU,EACd9oD,EAAG,CAAC,GACD0nD,EAAM4B,EAAMC,EACXH,EAAMtB,EAAMyB,EACZH,EAAMxB,EAAM6B,EACZ5C,EAAMyC,EAAMG,EACZ/B,EAAME,EAAM8B,EACZ7C,EAAMiB,EAAM4B,GACdZ,EACF9oD,EAAG,CAAC,GACDopD,EAAMvB,EAAM0B,EACXzC,EAAMwC,EAAMC,EACZH,EAAMxB,EAAM4B,EACZ3C,EAAMyC,EAAME,EACZ1C,EAAMc,EAAM8B,EACZ7C,EAAMgB,EAAM6B,GACdZ,EACF9oD,EAAG,CAAC,GACD8mD,EAAMgB,EAAMyB,EACX7B,EAAMG,EAAM0B,EACZ7B,EAAME,EAAM4B,EACZ3C,EAAMiB,EAAM0B,EACZ1C,EAAMc,EAAM6B,EACZ5C,EAAMgB,EAAM4B,GACdX,EAEC9oD,EAAA,CAAC,EAAIy0C,EAAMqU,EACd9oD,EAAG,CAAC,GACDopD,EAAMzB,EAAM4B,EACX7B,EAAM2B,EAAME,EACZH,EAAMrC,EAAM0C,EACZ5C,EAAMwC,EAAMI,EACZ/B,EAAMX,EAAM2C,EACZ7C,EAAMc,EAAM+B,GACdZ,EACF9oD,EAAG,EAAE,GACF8mD,EAAMuC,EAAME,EACXH,EAAMpC,EAAMuC,EACZH,EAAMrC,EAAMyC,EACZ3C,EAAMwC,EAAMG,EACZ1C,EAAMC,EAAM2C,EACZ7C,EAAMG,EAAM0C,GACdZ,EACF9oD,EAAG,EAAE,GACF0nD,EAAMV,EAAMuC,EACXzC,EAAMa,EAAM4B,EACZ7B,EAAMX,EAAMyC,EACZ3C,EAAMc,EAAM6B,EACZ1C,EAAMC,EAAM0C,EACZ5C,EAAMG,EAAMyC,GACdX,EAEC9oD,EAAA,EAAE,EAAI2rD,EAAM7C,EACf9oD,EAAG,EAAE,GACF0nD,EAAM2B,EAAMzB,EACXwB,EAAMzB,EAAMC,EACZwB,EAAMrC,EAAMe,EACZjB,EAAMwC,EAAMvB,EACZJ,EAAMX,EAAMuC,EACZzC,EAAMc,EAAM2B,GACdR,EACF9oD,EAAG,EAAE,GACFopD,EAAMpC,EAAMY,EACXd,EAAMuC,EAAMzB,EACZwB,EAAMrC,EAAMc,EACZhB,EAAMwC,EAAMxB,EACZf,EAAMC,EAAMuC,EACZzC,EAAMG,EAAMsC,GACdR,EACF9oD,EAAG,EAAE,GACF8mD,EAAMa,EAAMC,EACXF,EAAMV,EAAMY,EACZF,EAAMX,EAAMc,EACZhB,EAAMc,EAAME,EACZf,EAAMC,EAAMe,EACZjB,EAAMG,EAAMc,GACdgB,EACK,IACT,CAEA,mBAAoB,CAClB,MAAM9oD,EAAK,KAAK,MACV4rD,EAAW5rD,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EACvD6rD,EAAW7rD,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EACvD8rD,EAAW9rD,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,EAAE,EAAIA,EAAG,EAAE,EAC/D,OAAO,KAAK,KAAK,KAAK,IAAI4rD,EAAUC,EAAUC,CAAQ,CAAC,CACzD,CAEA,gBAAgB7wD,EAAqBhX,EAAY6I,EAAY,CAC3D,OAAImO,aAAaktC,GACf,KAAK,IAAI,EAAG,EAAG,EAAGltC,EAAE,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAG,CAAC,EAE7D,KAAK,IAAI,EAAG,EAAG,EAAGA,EAAG,EAAG,EAAG,EAAGhX,EAAG,EAAG,EAAG,EAAG6I,EAAG,EAAG,EAAG,EAAG,CAAC,EAElD,IACT,CAEA,cAAc+6C,EAAe,CACrB,MAAAlkD,EAAI,KAAK,IAAIkkD,CAAK,EAClB9rD,EAAI,KAAK,IAAI8rD,CAAK,EACxB,YAAK,IAAI,EAAG,EAAG,EAAG,EAAG,EAAGlkD,EAAG,CAAC5H,EAAG,EAAG,EAAGA,EAAG4H,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACjD,IACT,CAEA,cAAckkD,EAAe,CACrB,MAAAlkD,EAAI,KAAK,IAAIkkD,CAAK,EAClB9rD,EAAI,KAAK,IAAI8rD,CAAK,EACxB,YAAK,IAAIlkD,EAAG,EAAG5H,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAACA,EAAG,EAAG4H,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACjD,IACT,CAEA,cAAckkD,EAAe,CACrB,MAAAlkD,EAAI,KAAK,IAAIkkD,CAAK,EAClB9rD,EAAI,KAAK,IAAI8rD,CAAK,EACxB,YAAK,IAAIlkD,EAAG,CAAC5H,EAAG,EAAG,EAAGA,EAAG4H,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACjD,IACT,CAEA,iBAAiBooE,EAAe7jB,EAAe,CAGvC,MAAAvkD,EAAI,KAAK,IAAIukD,CAAK,EAClB,EAAI,KAAK,IAAIA,CAAK,EAClBruD,EAAI,EAAI8J,EACRsX,EAAI8wD,EAAK,EACT9nE,EAAI8nE,EAAK,EACTj/D,EAAIi/D,EAAK,EACT/C,EAAKnvE,EAAIohB,EACTxf,EAAK5B,EAAIoK,EAEV,YAAA,IACH+kE,EAAK/tD,EAAItX,EACTqlE,EAAK/kE,EAAI,EAAI6I,EACbk8D,EAAKl8D,EAAI,EAAI7I,EACb,EACA+kE,EAAK/kE,EAAI,EAAI6I,EACbrR,EAAKwI,EAAIN,EACTlI,EAAKqR,EAAI,EAAImO,EACb,EACA+tD,EAAKl8D,EAAI,EAAI7I,EACbxI,EAAKqR,EAAI,EAAImO,EACbphB,EAAIiT,EAAIA,EAAInJ,EACZ,EACA,EACA,EACA,EACA,CAAA,EAGK,IACT,CAEA,UAAUsX,EAAWhX,EAAW6I,EAAW,CACzC,YAAK,IAAImO,EAAG,EAAG,EAAG,EAAG,EAAGhX,EAAG,EAAG,EAAG,EAAG,EAAG6I,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAChD,IACT,CAEA,UACEg9C,EACAC,EACAiiB,EACAhiB,EACAiiB,EACAC,EACA,CACA,YAAK,IAAI,EAAGF,EAAIC,EAAI,EAAGniB,EAAI,EAAGoiB,EAAI,EAAGniB,EAAIC,EAAI,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACtD,IACT,CAEA,gBACE/M,EACAkgB,EACAngB,EACAmvB,EACAC,EACAC,EACAC,EAAmBhG,GACnB,CACA,MAAMtmD,EAAK,KAAK,MACV/E,EAAK,EAAImxD,GAASjP,EAAQlgB,GAC1Bh5C,EAAK,EAAImoE,GAASpvB,EAAMmvB,GAExB5rE,GAAK48D,EAAQlgB,IAASkgB,EAAQlgB,GAC9B5iC,GAAK2iC,EAAMmvB,IAAWnvB,EAAMmvB,GAElC,IAAIxoE,EAAGkP,EAEP,GAAIy5D,IAAqBhG,GACnB3iE,EAAA,EAAE0oE,EAAMD,IAASC,EAAMD,GACtBv5D,EAAA,GAAKw5D,EAAMD,GAASC,EAAMD,WACtBE,IAAqB/F,GAC1B5iE,EAAA,CAAC0oE,GAAOA,EAAMD,GACbv5D,EAAA,CAACw5D,EAAMD,GAASC,EAAMD,OAE3B,OAAM,IAAI,MACR,yDACEE,CAAA,EAIN,OAAAtsD,EAAG,CAAC,EAAI/E,EACR+E,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAIzf,EACRyf,EAAG,EAAE,EAAI,EACTA,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI/b,EACR+b,EAAG,CAAC,EAAI3F,EACR2F,EAAG,EAAE,EAAI,EACTA,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EACRA,EAAG,EAAE,EAAIrc,EACTqc,EAAG,EAAE,EAAInN,EACTmN,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EACRA,EAAG,EAAE,EAAI,GACTA,EAAG,EAAE,EAAI,EAEF,IACT,CAEA,iBACEi9B,EACAkgB,EACAngB,EACAmvB,EACAC,EACAC,EACAC,EAAmBhG,GACnB,CACA,MAAMtmD,EAAK,KAAK,MACVxb,EAAI,GAAO24D,EAAQlgB,GACnBn5C,EAAI,GAAOk5C,EAAMmvB,GACjBx5D,EAAI,GAAO05D,EAAMD,GAEjBnxD,GAAKkiD,EAAQlgB,GAAQz4C,EACrBP,GAAK+4C,EAAMmvB,GAAUroE,EAE3B,IAAIgJ,EAAGy/D,EAEP,GAAID,IAAqBhG,GACvBx5D,GAAKu/D,EAAMD,GAAQz5D,EACnB45D,EAAO,GAAK55D,UACH25D,IAAqB/F,GAC9Bz5D,EAAIs/D,EAAOz5D,EACX45D,EAAO,GAAK55D,MAEZ,OAAM,IAAI,MACR,0DACE25D,CAAA,EAIH,OAAAtsD,EAAA,CAAC,EAAI,EAAIxb,EACZwb,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EACLA,EAAA,EAAE,EAAI,CAAC/E,EACV+E,EAAG,CAAC,EAAI,EACLA,EAAA,CAAC,EAAI,EAAIlc,EACZkc,EAAG,CAAC,EAAI,EACLA,EAAA,EAAE,EAAI,CAAC/b,EACV+b,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EACRA,EAAG,EAAE,EAAIusD,EACNvsD,EAAA,EAAE,EAAI,CAAClT,EACVkT,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EACRA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EAEF,IACT,CA4FA,OAAOkpD,EAAiB,CACtB,QAASjuE,EAAI,EAAGA,EAAI,GAAIA,IACtB,GAAI,KAAK,MAAMA,CAAC,IAAMiuE,EAAO,MAAMjuE,CAAC,EAC3B,MAAA,GAGJ,MAAA,EACT,CAEA,UAAUggB,EAAI,EAAGhX,EAAI,EAAG6I,EAAI,EAAG,CAC7B,OAAO,KAAK,SACV,IAAIq8D,GAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGluD,EAAGhX,EAAG6I,EAAG,CAAC,CAAC,CAAA,CAEhE,CAEA,MAAMmO,EAAI,EAAGhX,EAAI,EAAG6I,EAAI,EAAG,CACzB,OAAO,KAAK,SACV,IAAIq8D,GAAQ,CAACluD,EAAG,EAAG,EAAG,EAAG,EAAGhX,EAAG,EAAG,EAAG,EAAG,EAAG6I,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,CAAA,CAEhE,CAEA,aAAa8F,EAAY,CACvB,MAAMoN,EAAK,KAAK,MACV/E,EAAIrI,EAAE,EACN3O,EAAI2O,EAAE,EACN9F,EAAI8F,EAAE,EAEZ,OAAAoN,EAAG,CAAC,GAAK/E,EACT+E,EAAG,CAAC,GAAK/b,EACT+b,EAAG,CAAC,GAAKlT,EACTkT,EAAG,CAAC,GAAK/E,EACT+E,EAAG,CAAC,GAAK/b,EACT+b,EAAG,CAAC,GAAKlT,EACTkT,EAAG,CAAC,GAAK/E,EACT+E,EAAG,CAAC,GAAK/b,EACT+b,EAAG,EAAE,GAAKlT,EACVkT,EAAG,CAAC,GAAK/E,EACT+E,EAAG,CAAC,GAAK/b,EACT+b,EAAG,EAAE,GAAKlT,EAEH,IACT,CA+BA,QAAQ0/D,EAAgB,CAChB,MAAAjsE,EAAIskE,GAAS2H,CAAM,EACnB7oE,EAAI,KAAK,IAAIpD,CAAC,EACd,EAAI,KAAK,IAAIA,CAAC,EACpB,OAAO,KAAK,SAEV,IAAI4oE,GAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAGxlE,EAAG,EAAG,EAAG,EAAG,CAAC,EAAGA,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,CAAA,CAEjE,CAEA,QAAQ6oE,EAAgB,CAChB,MAAAjsE,EAAIskE,GAAS2H,CAAM,EACnB7oE,EAAI,KAAK,IAAIpD,CAAC,EACd,EAAI,KAAK,IAAIA,CAAC,EACpB,OAAO,KAAK,SAEV,IAAI4oE,GAAQ,CAACxlE,EAAG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,CAAA,CAEjE,CAGA,QAAQ6oE,EAAgB,CACtB,KAAK,YAAc,GACb,MAAAjsE,EAAIskE,GAAS2H,CAAM,EACnB7oE,EAAI,KAAK,IAAIpD,CAAC,EACd,EAAI,KAAK,IAAIA,CAAC,EACpB,OAAO,KAAK,SAEV,IAAI4oE,GAAQ,CAACxlE,EAAG,EAAG,EAAG,EAAG,CAAC,EAAGA,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,CAAA,CAEjE,CAEA,KAAKqiE,EAAO,EAAGE,EAAO,EAAGC,EAAO,EAAG,CACjC,OAAO,KAAK,SACV,IAAIgD,GAAQ,CACV,EACA,EACA,EACAtE,GAASmB,CAAI,EACb,EACA,EACA,EACAnB,GAASqB,CAAI,EACb,EACA,EACA,EACArB,GAASsB,CAAI,EACb,EACA,EACA,EACA,CAAA,CACD,CAAA,CAEL,CAEA,YAAYsG,EAAqB,CAC/B,OAAO,KAAK,SACV,IAAItD,GAAQ,CACV,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACAsD,EAAc,EAAE,EAAIA,GAAe,EACnC,EACA,EACA,EACA,CAAA,CACD,CAAA,CAEL,CAGA,UAAUhR,EAAiC,CACrC,IAAAxgD,EAAIwgD,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM,KAAK,IACnDx3D,EAAIw3D,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM,KAAK,IACnD3uD,EAAI2uD,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM,KAAK,IACnDj3D,EAAIi3D,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM,KAAK,IAEnDiR,EAAKzxD,EAAI,KAAK,IACd0xD,EAAK1oE,EAAI,KAAK,IACd2oE,EAAK9/D,EAAI,KAAK,IACd+/D,EAAKroE,EAAI,KAAK,IAEdA,GAAK,IAAOA,EAAA,MACXyW,GAAAzW,EACAP,GAAAO,EACAsI,GAAAtI,EAEDqoE,GAAM,IAAQA,EAAA,MACZH,GAAAG,EACAF,GAAAE,EACAD,GAAAC,EAGN,MAAMC,EAAKF,EAAK9/D,EAChB,GAAIggE,GAAM,EACR,MAAO,CAAE,EAAA7xD,EAAG,EAAAhX,EAAG,EAAA6I,EAAG,KAAMtI,CAAE,EAGtB,MAAA3K,EAAI,CAACiT,EAAIggE,EACf,OAAA7xD,GAAKphB,GAAK6yE,EAAKzxD,GACfhX,GAAKpK,GAAK8yE,EAAK1oE,GAER,CAAE,EAAAgX,EAAG,EAAAhX,EAAG,EAAA6I,EAAG,KAAMtI,CAAE,CAC5B,CAGA,QAAQi3D,EAAgB,CACtB,MAAM3uD,EAAI2uD,EAAM,EAChB,IAAIxgD,EAAIwgD,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM3uD,EAAI,KAAK,IAAM,KAAK,IAClE7I,EAAIw3D,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM3uD,EAAI,KAAK,IAAM,KAAK,IAClEtI,EAAIi3D,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM3uD,EAAI,KAAK,IAAM,KAAK,IAEtE,OAAItI,GAAK,IAAOA,EAAA,MACXyW,GAAAzW,EACAP,GAAAO,EAQDA,EAAI,IACNyW,GAAK,KAAK,IACVhX,GAAK,KAAK,IACVgX,GAAK,EAAIzW,EACTP,GAAK,EAAIO,EACTyW,GAAK,KAAK,IACVhX,GAAK,KAAK,KAEL,CAAE,EAAAgX,EAAG,EAAAhX,EAAG,EAAA6I,EAAG,KAAMtI,CAAE,CAC5B,CAEA,OACEyW,EACAhX,EACA81C,EACAC,EACyD,CACzD,MAAM+yB,EAAM,IAAIpH,GAAQ,CAAE,EAAA1qD,EAAG,EAAAhX,CAAG,CAAA,EAC1B+oE,EAAM,IAAIrH,GAAQ,CAAE,EAAG1qD,EAAI8+B,EAAO,EAAA91C,EAAG,EACrCgpE,EAAM,IAAItH,GAAQ,CAAE,EAAG1qD,EAAI8+B,EAAO,EAAG91C,EAAI+1C,CAAA,CAAQ,EACjDkzB,EAAM,IAAIvH,GAAQ,CAAE,EAAA1qD,EAAG,EAAGhX,EAAI+1C,EAAQ,GAE3C,CAAE,EAAG+yB,EAAI,EAAG,EAAGA,EAAI,EAAG,EAAGA,EAAI,EAAG,KAAMA,EAAI,IAAS,EAAA,KAAK,QAAQA,CAAG,GACnE,CAAE,EAAGC,EAAI,EAAG,EAAGA,EAAI,EAAG,EAAGA,EAAI,EAAG,KAAMA,EAAI,IAAS,EAAA,KAAK,QAAQA,CAAG,EACnE,CAAE,EAAGC,EAAI,EAAG,EAAGA,EAAI,EAAG,EAAGA,EAAI,EAAG,KAAMA,EAAI,IAAS,EAAA,KAAK,QAAQA,CAAG,EACnE,CAAE,EAAGC,EAAI,EAAG,EAAGA,EAAI,EAAG,EAAGA,EAAI,EAAG,KAAMA,EAAI,IAAS,EAAA,KAAK,QAAQA,CAAG,EAE9D,MAAAz2D,EAAK,KAAK,IAAIs2D,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EACxCp4D,EAAK,KAAK,IAAIi4D,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EACxCC,EAAS,KAAK,IAAIJ,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAIz2D,EAChD22D,EAAU,KAAK,IAAIL,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAIp4D,EAEhD,MAAA,CAAE,EAAG2B,EAAI,EAAG3B,EAAI,MAAOq4D,EAAQ,OAAQC,EAChD,CACF,CAEO,IAAAC,GAAA,MAAMlS,EAAO,CAElB,MACQ,KAAO,EACP,KAAO,EACP,KAAO,EAEf,QAEA,YAAY39B,EAAsBipC,GAAsB,CACjD,KAAA,MAAQ,MAAM,KAAKjpC,CAAK,EACxB,KAAA,QAAU,KAAK,WACtB,CAEA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACR,OAAO,KAAK,IACd,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACR,OAAO,KAAK,IACd,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACD,OAAA,KAAK,MAAM,CAAC,CACrB,CACA,IAAI,KAAM,CACR,OAAO,KAAK,IACd,CAEA,IAAI,IAAI5qB,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACjB,KAAK,KAAOA,CACd,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACjB,KAAK,KAAOA,CACd,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACZ,KAAA,MAAM,CAAC,EAAIA,CAClB,CACA,IAAI,IAAIA,EAAW,CACjB,KAAK,KAAOA,CACd,CAGA,OAAO,WAAW7W,EAAW,CACrB,MAAAgI,EAAI,IAAIo3D,GACR8B,EAAU0M,GAAY,SAAU5tE,CAAC,EACnC,OAAAkhE,EAAQ,SAAW,GACbA,EAAA,QAAQ,CAACvlC,EAAQgL,IAAU,CAC7BhL,EAAO,YACT3zB,EAAE,MAAM2+B,CAAK,EAAI,WAAWhL,EAAO,SAAS,EAC9C,CACD,EAEI3zB,CACT,CAEA,UAAUglE,EAAU,KAAK,QAAS,CAChC,MAAMvrC,EAAuB,CAC3B,KAAK,IACL,KAAK,IACL,EACA,KAAK,IACL,KAAK,IACL,KAAK,IACL,EACA,KAAK,IACL,EACA,EACA,EACA,EACA,KAAK,IACL,KAAK,IACL,EACA,KAAK,GAAA,EAEP,OAAIurC,GACFA,EAAQ,MAAQvrC,EACTurC,GAEF,IAAII,GAAQ3rC,CAAK,CAC1B,CAEA,UAAW,CACJ,YAAA,MAAQ,MAAM,KAAKipC,EAAoB,EAC5C,KAAK,IAAM,EACX,KAAK,IAAM,EACX,KAAK,IAAM,EACN,KAAA,QAAU,KAAK,YACb,IACT,CAEA,IAAI,YAAsB,CAEtB,OAAA,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,GACZ,KAAK,KAAO,CAEhB,CAEA,eAAe1qE,EAAW,CACxB,YAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACZ,KAAK,KAAOA,EACL,IACT,CAEA,WAAY,CACJ,MAAA2tD,EAAM,KAAK,KAAO,KACjB,OAAA,KAAK,eAAe,EAAIA,CAAG,CACpC,CAEA,eAAe+R,EAIb,CACM,MAAA3uD,EAAI2uD,EAAM,GAAK,EACd,MAAA,CACL,EAAGA,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM3uD,EAAI,KAAK,IACtD,EAAG2uD,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM3uD,EAAI,KAAK,IACtD,EAAG2uD,EAAM,EAAI,KAAK,IAAMA,EAAM,EAAI,KAAK,IAAM3uD,EAAI,KAAK,GAAA,CAE1D,CAEA,OAAgB,CACP,OAAA,IAAIquD,GAAO,KAAK,KAAK,CAC9B,CAEA,SAAS+N,EAA+B,CAChC,MAAA3oE,EAAI,KAAK,QACT8Z,EAAI6uD,aAAkB/N,GAAS+N,EAAS,IAAI/N,GAAO+N,CAAM,EAC1D,YAAA,IAAM7uD,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAChD,KAAA,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAChD,KAAA,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAChD,KAAA,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAChD,KAAA,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAChD,KAAA,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAChD,KAAA,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAChD,KAAA,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAChD,KAAA,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAAM8Z,EAAE,IAAM9Z,EAAE,IAC9C,IACT,CAEA,OAAO2oE,EAAgB,CACd,OAAA,KAAK,SAASA,CAAM,CAC7B,CAEA,QAAQA,EAAgB,CACtB,OAAAA,EAAO,SAAS,IAAI,EACb,IACT,CAEA,SAAU,CAiBR,MAAMoE,EAAM,KAAK,IACXC,EAAM,KAAK,IACXC,EAAM,KAAK,IACXC,EAAM,KAAK,IACXxG,EAAM,KAAK,IACXC,EAAM,KAAK,IACXwG,EAAM,KAAK,IACXvG,EAAM,KAAK,IACXC,EAAM,KAAK,IAEXuG,EAAMvG,EAAMH,EAAMC,EAAMC,EACxBE,EAAM,CAACD,EAAMqG,EAAMvG,EAAMwG,EACzBnG,EAAMJ,EAAMsG,EAAMxG,EAAMyG,EAG9B,IAAI7E,EAAMyE,EAAMK,EAAMJ,EAAMlG,EAAMmG,EAAMjG,EAExC,OAAKsB,GAGLA,EAAM,EAAMA,EAEZ,KAAK,IAAM8E,EAAM9E,EACjB,KAAK,KAAO,CAACzB,EAAMmG,EAAMC,EAAMrG,GAAO0B,EACtC,KAAK,KAAO3B,EAAMqG,EAAMC,EAAMvG,GAAO4B,EACrC,KAAK,IAAMxB,EAAMwB,EACjB,KAAK,KAAOzB,EAAMkG,EAAME,EAAME,GAAO7E,EACrC,KAAK,KAAO,CAAC3B,EAAMoG,EAAME,EAAMC,GAAO5E,EACtC,KAAK,IAAMtB,EAAMsB,EACjB,KAAK,KAAO,CAAC1B,EAAMmG,EAAMC,EAAMG,GAAO7E,EACtC,KAAK,KAAO5B,EAAMqG,EAAMC,EAAME,GAAO5E,EAC9B,MAbE,IAcX,CAEA,UAAmB,CACX,MAAAK,EAAS,IAAI/N,GACnB,OAAA+N,EAAO,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IACnDA,EAAO,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IACnDA,EAAO,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IACnDA,EAAO,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IACnDA,EAAO,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IACnDA,EAAO,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IACnDA,EAAO,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IACnDA,EAAO,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IACnDA,EAAO,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAC5CA,CACT,CAEA,OAAQ,CACF,IAAAsD,EAAS7H,GAAS,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,CAAC,EACpD,OAAI,KAAK,IAAM,GAAK,KAAK,KAAO,IACpB6H,GAAA,KAEL,CACL,EAAG,KAAK,IACR,EAAG,KAAK,IACR,OAAAA,EACA,OAAQ,KAAK,KAAK,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,GAAG,EAC3D,OAAQ,KAAK,KAAK,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,GAAG,EAC3D,MAAO7H,GAAS,KAAK,MAAM,CAAC,KAAK,IAAK,KAAK,GAAG,CAAC,EAC/C,MAAOA,GAAS,KAAK,MAAM,KAAK,IAAK,KAAK,GAAG,CAAC,CAAA,CAElD,CAEA,eAAenY,EAAe,CAEtB,MAAAzsD,EAAI,KAAK,MAAM,CAAC,EACpBnB,EAAI,KAAK,MAAM,CAAC,EAChBkd,EAAI,KAAK,MAAM,CAAC,EAChBvU,EAAI,KAAK,MAAM,CAAC,EAChBlD,EAAI,KAAK,MAAM,CAAC,EAChBF,EAAI,KAAK,MAAM,CAAC,EAChBG,EAAIkoD,EAAM,MAAM,CAAC,EACjBnrC,EAAImrC,EAAM,MAAM,CAAC,EACjBv6C,EAAIu6C,EAAM,MAAM,CAAC,EACjBxoD,EAAIwoD,EAAM,MAAM,CAAC,EACjBpoD,EAAIooD,EAAM,MAAM,CAAC,EACjBtoD,EAAIsoD,EAAM,MAAM,CAAC,EACjBz/B,EAAKzoB,EAAIN,EACT4pE,EAAKvsD,EAAIpP,EACT0oC,GAAK1oC,EAAIrT,EAAImB,EAAIiE,IAAM4pE,EAAK7gD,GAC5B/D,GAAK1kB,EAAI1F,EAAImB,EAAIshB,IAAM0L,EAAK6gD,GAC5B7kD,GAAK9W,EAAI1K,EAAIuU,EAAI9X,IAAM4pE,EAAK7gD,GAC5B/Y,GAAK1P,EAAIiD,EAAIuU,EAAIuF,IAAM0L,EAAK6gD,GAC5BC,GAAK57D,GAAK9N,EAAID,GAAKF,GAAKI,EAAIC,KAAOupE,EAAK7gD,GACxCf,GAAK1nB,GAAKH,EAAID,GAAKmd,GAAKjd,EAAIC,KAAO0oB,EAAK6gD,GACpC1E,EAAS,CAACvuB,EAAG3xB,EAAGD,EAAG/U,EAAG65D,EAAG7hD,CAAC,EACzB,OAAA,IAAImvC,GAAO+N,CAAsB,CAC1C,CAEA,SAASe,EAAmB,EAAG,CACzB,OAAA,KAAK,QAAQ,OACR,UAAU,KAAK,MACnB,IAAKr3D,GAAMsqD,GAAatqD,EAAGq3D,CAAgB,CAAC,EAC5C,KAAK,GAAG,CAAC,IAEL,KAAK,QAAQ,UAExB,CAqBA,UAAUhvD,EAAWhX,EAAW,CACzB,YAAA,SAAS,CAAC,EAAG,EAAG,EAAG,EAAGgX,EAAGhX,CAAC,CAAC,EAChC,KAAK,UAAU,EACR,IACT,CAEA,YAAYgX,EAAWhX,EAAW,CAChC,OAAO,KAAK,UAAUgX,EAAI,KAAK,IAAKhX,EAAI,KAAK,GAAG,CAClD,CACA,WAAWgX,EAAW,CACb,OAAA,KAAK,UAAUA,EAAG,CAAC,CAC5B,CACA,aAAaA,EAAW,CACtB,OAAO,KAAK,YAAYA,EAAG,KAAK,GAAG,CACrC,CACA,WAAWhX,EAAW,CACb,OAAA,KAAK,UAAU,EAAGA,CAAC,CAC5B,CACA,aAAaA,EAAW,CACtB,OAAO,KAAK,YAAY,KAAK,IAAKA,CAAC,CACrC,CACA,WAAW6I,EAAW,CACpB,YAAK,QAAQ,UAAU,EAAG,EAAGA,CAAC,EACzB,KAAA,QAAQ,SAAS,IAAI,EACnB,IACT,CACA,aAAaA,EAAW,CACtB,YAAK,WAAWA,EAAI,KAAK,QAAQ,GAAG,EAC7B,IACT,CACA,YAAYmO,EAAWhX,EAAW6I,EAAW,CAC3C,YAAK,QAAQ,UAAUmO,EAAGhX,EAAG6I,CAAC,EACzB,KAAA,QAAQ,SAAS,IAAI,EACnB,IACT,CACA,cAAcmO,EAAWhX,EAAW6I,EAAW,CACxC,YAAA,YACHmO,EAAI,KAAK,QAAQ,IACjBhX,EAAI,KAAK,QAAQ,IACjB6I,EAAI,KAAK,QAAQ,GAAA,EAEZ,IACT,CAEA,OAAOghE,EAAaxd,EAAU,EAAGC,EAAU,EAAG,CACtC,MAAAoG,EAAMkO,GAASiJ,CAAG,EAClBnqE,EAAI,KAAK,IAAIgzD,CAAG,EAChB56D,EAAI,KAAK,IAAI46D,CAAG,EACjB,YAAA,UAAUrG,EAASC,CAAO,EAC1B,KAAA,SAAS,CAAC5sD,EAAG5H,EAAG,CAACA,EAAG4H,EAAG,EAAG,CAAC,CAAC,EACjC,KAAK,UAAU,CAAC2sD,EAAS,CAACC,CAAO,EACjC,KAAK,UAAU,EACR,IACT,CACA,SAASwd,EAAmBzd,EAAU,EAAGC,EAAU,EAAG,CACpD,KAAM,CAAE,OAAAic,CAAA,EAAW,KAAK,MAAM,EAC9B,YAAK,OAAOuB,EAAYvB,EAAQlc,EAASC,CAAO,EACzC,IACT,CACA,QAAQud,EAAa,CACd,YAAA,QAAQ,QAAQA,CAAG,EACnB,KAAA,QAAQ,SAAS,IAAI,EACnB,IACT,CACA,UAAUC,EAAmB,CAC3B,KAAM,CAAE,QAAA3D,CAAY,EAAA,KAAK,QAAQ,MAAM,EAClC,YAAA,QAAQ2D,EAAY3D,CAAO,EACzB,IACT,CACA,QAAQ0D,EAAa,CACd,YAAA,QAAQ,QAAQA,CAAG,EACnB,KAAA,QAAQ,SAAS,IAAI,EACnB,IACT,CACA,UAAUC,EAAmB,CAC3B,KAAM,CAAE,QAAA5D,CAAY,EAAA,KAAK,QAAQ,MAAM,EAClC,YAAA,QAAQ4D,EAAY5D,CAAO,EACzB,IACT,CAEA,QAAQ2D,EAAa,CACd,YAAA,QAAQ,QAAQA,CAAG,EAEnB,KAAA,QAAQ,SAAS,IAAI,EACnB,IACT,CACA,UAAUC,EAAmB,CAC3B,KAAM,CAAE,QAAA1D,CAAY,EAAA,KAAK,QAAQ,MAAM,EAClC,YAAA,QAAQ0D,EAAY1D,CAAO,EACzB,IACT,CACA,SAASpvD,EAAWhX,EAAW6I,EAAW,CAEnC,YAAA,QAAQ,QAAQmO,CAAC,EAAE,QAAQhX,CAAC,EAAE,QAAQ6I,CAAC,EACvC,KAAA,QAAQ,SAAS,IAAI,EACnB,IACT,CACA,WAAWkhE,EAAiBC,EAAiBC,EAAiB,CAC5D,KAAM,CAAE,QAAA9D,EAAS,QAAAD,EAAS,QAAAE,CAAY,EAAA,KAAK,QAAQ,QACnD,YAAK,SAAS2D,EAAU5D,EAAS6D,EAAU9D,EAAS+D,EAAU7D,CAAO,EAC9D,IACT,CAEA,MAAMvhB,EAAYC,EAAKD,EAAIwH,EAAU,EAAGC,EAAU,EAAG,CAC9C,YAAA,UAAUD,EAASC,CAAO,EAC1B,KAAA,SAAS,CAACzH,EAAI,EAAG,EAAGC,EAAI,EAAG,CAAC,CAAC,EAClC,KAAK,UAAU,CAACuH,EAAS,CAACC,CAAO,EACjC,KAAK,UAAU,EACR,IACT,CACA,QAAQ4d,EAAkBC,EAAWD,EAAU7d,EAAU,EAAGC,EAAU,EAAG,CACvE,OAAO,KAAK,MACV4d,EAAW,KAAK,IAChBC,EAAW,KAAK,IAChB9d,EACAC,CAAA,CAEJ,CACA,OAAOzH,EAAY,CACV,OAAA,KAAK,MAAMA,EAAI,CAAC,CACzB,CACA,SAASA,EAAY,CACnB,OAAO,KAAK,MAAMA,EAAK,KAAK,IAAK,CAAC,CACpC,CACA,OAAOC,EAAY,CACV,OAAA,KAAK,MAAM,EAAGA,CAAE,CACzB,CACA,SAASA,EAAY,CACnB,OAAO,KAAK,MAAM,EAAGA,EAAK,KAAK,GAAG,CACpC,CACA,OAAOC,EAAY,CACjB,YAAK,QAAQ,MAAM,EAAG,EAAGA,CAAE,EACtB,KAAA,QAAQ,SAAS,IAAI,EACnB,IACT,CACA,SAASA,EAAY,CACnB,KAAM,CAAE,QAAAkhB,CAAY,EAAA,KAAK,QAAQ,MAAM,EAClC,YAAA,OAAOlhB,EAAKkhB,CAAO,EACjB,IACT,CACA,QAAQphB,EAAYC,EAAKD,EAAIE,EAAKF,EAAI,CACpC,YAAK,QAAQ,MAAMA,EAAIC,EAAIC,CAAE,EACxB,KAAA,QAAQ,SAAS,IAAI,EACnB,IACT,CACA,UAAUF,EAAYC,EAAKD,EAAIE,EAAKF,EAAI,CACtC,KAAM,CAAE,QAAA+gB,EAAS,QAAAC,EAAS,QAAAI,CAAY,EAAA,KAAK,QAAQ,QACnD,YAAK,QAAQphB,EAAK+gB,EAAS9gB,EAAK+gB,EAAS9gB,EAAKkhB,CAAO,EAC9C,IACT,CAEA,KAAKlE,EAAcE,EAAOF,EAAM,CAI9B,YAAK,SAAS,CACZ,KAAK,IAAInB,GAASqB,CAAI,CAAC,EACvB,KAAK,IAAIrB,GAASqB,CAAI,CAAC,EACvB,CAAC,KAAK,IAAIrB,GAASmB,CAAI,CAAC,EACxB,KAAK,IAAInB,GAASmB,CAAI,CAAC,EACvB,EACA,CAAA,CACD,EACD,KAAK,UAAU,EACR,IACT,CACA,OAAOA,EAAcE,EAAOF,EAAM,CAChC,KAAM,CAAE,MAAA+D,EAAO,MAAAC,CAAM,EAAI,KAAK,MAAM,EACpC,OAAO,KAAK,KAAKhE,EAAO+D,EAAO7D,EAAO8D,CAAK,CAC7C,CACA,MAAM8D,EAAa,CACjB,KAAM,CAAE,MAAA9D,CAAA,EAAU,KAAK,MAAM,EACtB,OAAA,KAAK,KAAK8D,EAAK9D,CAAK,CAC7B,CACA,QAAQ8D,EAAa,CACnB,KAAM,CAAE,MAAA9D,CAAA,EAAU,KAAK,MAAM,EACtB,OAAA,KAAK,OAAO8D,EAAK9D,CAAK,CAC/B,CACA,MAAM8D,EAAa,CACjB,KAAM,CAAE,MAAA/D,CAAA,EAAU,KAAK,MAAM,EACtB,OAAA,KAAK,KAAKA,EAAO+D,CAAG,CAC7B,CACA,QAAQA,EAAa,CACnB,KAAM,CAAE,MAAA/D,CAAA,EAAU,KAAK,MAAM,EACtB,OAAA,KAAK,OAAOA,EAAO+D,CAAG,CAC/B,CACA,MAAMA,EAAa,CAEV,OAAA,IACT,CACA,QAAQA,EAAa,CAEZ,OAAA,IACT,CACA,OAAOO,EAAcC,EAAcC,EAAc,CAExC,OAAA,IACT,CACA,SAASF,EAAcC,EAAcC,EAAc,CAE1C,OAAA,IACT,CAEA,YAAY9B,EAAqB,CAC1B,YAAA,QAAQ,YAAYA,CAAW,EAC/B,KAAA,QAAQ,SAAS,IAAI,EACnB,IACT,CACF,EAMA,MAAM9B,GAAK,IAAIxiB,GACTyiB,GAAK,IAAIziB,GACTuiB,GAAK,IAAIviB,GACTO,GAAM,IAAIP,GACV8gB,GAAM,IAAIxB,GACJ,IAAI0B,GAQT,SAASqF,GAAuB,EAAW,CAC1C,MAAAtF,EAAS,IAAI/N,GACjB,SAAA,QAEA,+EACA,SAAUsT,EAAK7hB,EAAS8hB,EAAa,CAC/BA,EAAY,QAAQ,GAAG,GAAK,EAChBA,EAAAA,EAAY,MAAM,SAAS,EAE3BA,EAAAA,EAAY,MAAM,KAAK,EAEvC,MAAMpgC,EAAmB,CAAA,EACzB,QAASrzC,EAAI,EAAG+oD,EAAQ0qB,EAAY,OAAQzzE,EAAI+oD,EAAO/oD,IACjDyzE,EAAYzzE,CAAC,EAAE,QACjBqzC,EAAO,KAAK,WAAW,GAAKogC,EAAYzzE,CAAC,CAAC,CAAC,EAGvC,OAAA2xD,EAAQ,YAAe,EAAA,CAC7B,IAAK,IACL,IAAK,YACHsc,EAAO,UAAU56B,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EACrC,MACF,IAAK,aACI46B,EAAA,WAAW56B,EAAO,CAAC,CAAC,EAC3B,MACF,IAAK,aACI46B,EAAA,WAAW56B,EAAO,CAAC,CAAC,EAC3B,MACF,IAAK,aACI46B,EAAA,WAAW56B,EAAO,CAAC,CAAC,EAC3B,MACF,IAAK,cACI46B,EAAA,YAAY56B,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAClD,MACF,IAAK,IACL,IAAK,SACI46B,EAAA,OAAO56B,EAAO,CAAC,EAAGA,EAAO,CAAC,GAAK,EAAGA,EAAO,CAAC,GAAK,CAAC,EACvD,MACF,IAAK,UACI46B,EAAA,QAAQ56B,EAAO,CAAC,CAAC,EACxB,MACF,IAAK,UACI46B,EAAA,QAAQ56B,EAAO,CAAC,CAAC,EACxB,MACF,IAAK,UACI46B,EAAA,QAAQ56B,EAAO,CAAC,CAAC,EACxB,MACF,IAAK,WACI46B,EAAA,SAAS56B,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAC/C,MACF,IAAK,IACL,IAAK,QACI46B,EAAA,MAAM56B,EAAO,CAAC,EAAGA,EAAO,CAAC,GAAKA,EAAO,CAAC,CAAC,EAC9C,MACF,IAAK,SACI46B,EAAA,OAAO56B,EAAO,CAAC,CAAC,EACvB,MACF,IAAK,SACI46B,EAAA,OAAO56B,EAAO,CAAC,CAAC,EACvB,MACF,IAAK,SACI46B,EAAA,OAAO56B,EAAO,CAAC,CAAC,EACvB,MACF,IAAK,UACI46B,EAAA,QAAQ56B,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAC9C,MACF,IAAK,OACH46B,EAAO,KAAK56B,EAAO,CAAC,EAAGA,EAAO,CAAC,GAAK,CAAC,EACrC,MACF,IAAK,QACI46B,EAAA,MAAM56B,EAAO,CAAC,CAAC,EACtB,MACF,IAAK,QACI46B,EAAA,MAAM56B,EAAO,CAAC,CAAC,EACtB,MACF,IAAK,QACI46B,EAAA,MAAM56B,EAAO,CAAC,CAAC,EACtB,MACF,IAAK,SACI46B,EAAA,OAAO56B,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAC7C,MACF,IAAK,IACL,IAAK,SACH46B,EAAO,SAAS,CACd56B,EAAO,CAAC,EACRA,EAAO,CAAC,EACRA,EAAO,CAAC,EACRA,EAAO,CAAC,EACRA,EAAO,CAAC,EACRA,EAAO,CAAC,CAAA,CACT,EACD46B,EAAO,UAAU,EACjB,MACF,IAAK,WACHA,EAAO,QAAQ,SAAS,IAAIC,GAAQ76B,CAAuB,CAAC,EACrD46B,EAAA,QAAQ,SAASA,CAAM,EAC9B,KACJ,CACO,MAAA,EACT,CAAA,EAEKA,CACT,CAEgB,SAAAjD,GACd5V,EACAqL,EACAC,EAC0B,CACpB,MAAA53D,EAAI,IAAIo3D,GACZ,OAAAp3D,EAAA,OAAO4gE,GAAStU,CAAM,CAAC,EAClBtsD,EAAE,eAAe,CAAE,EAAG23D,EAAQ,EAAGC,EAAQ,CAClD,CAGO,SAASgT,GAAah2C,EAOf,CACZ,MAAM1d,EAAI,OAAO0d,GAAS,GAAK,SAAWA,GAAS,EAAI,EACjD10B,EAAI,OAAO00B,GAAS,GAAK,SAAWA,GAAS,EAAI,EACjD6zC,EAAS,OAAO7zC,GAAS,QAAU,SAAWA,GAAS,OAAS,EAChEkxC,EAAU,OAAOlxC,GAAS,SAAW,SAAWA,GAAS,QAAU,EACnEmxC,EAAU,OAAOnxC,GAAS,SAAW,SAAWA,GAAS,QAAU,EACnE03B,EAASwU,GAAS2H,CAAM,EACxB7oE,EAAI,KAAK,IAAI0sD,CAAM,EACnBt0D,EAAI,KAAK,IAAIs0D,CAAM,EACnB6Y,EAAS,IAAI,UAAU,CAC3BvlE,EAAIkmE,EACJ9tE,EAAI8tE,EACJ,CAAC9tE,EAAI+tE,EACLnmE,EAAImmE,EACJ7uD,EACAhX,CAAA,CACD,EACD,OAAAilE,EAAO,aAAa,IAAI,UAAUvwC,GAAS,cAAgB,EAAE,CAAC,EACvDuwC,CACT,CAIgB,SAAA0F,GACdC,EACAl2C,EAQQ,CAwBF,MAAAm2C,EAAS,IAAI,OAAOD,CAAU,EAC9Bh1E,EAAI,IAAI,OACd,OAAAA,EAAE,QAAQi1E,EAAQH,GAAah2C,CAAO,CAAC,EAChC9+B,CACT,CChvFO,MAAMk1E,GAAe,CAC1B,QAAS,IAOT,UAAW,SAAUC,EAAoD,CACvE,GAAIC,GACK,OAAAD,EAET,GAAI,KAAK,IAAI,IAAIA,CAAM,EACd,OAAA,KAAK,IAAI,IAAIA,CAAM,EAE5B,MAAMp2B,EAAS,IAAI,gBAAgBo2B,EAAO,MAAOA,EAAO,MAAM,EAEzD,OADOp2B,EAAO,WAAW,IAAI,GAC7B,UAAUo2B,EAAQ,EAAG,CAAC,EACtB,KAAA,IAAI,IAAIA,EAAQp2B,CAAM,EACpBA,CACT,EAEA,MAAO,UAAY,CACjB,KAAK,IAAI,OACX,CACF,EAEgB,SAAAs2B,GACdn1B,EACAC,EACArV,EACyB,CACzB,MAAMiU,EAAS,IAAI,gBAAgBmB,EAAOC,CAAM,EAC1C5Z,EAAMwY,EAAO,WAAW,IAAI,EAClC,GAAIxY,EACF,OAAAuE,EAAGvE,CAAG,EACCwY,EAAO,uBAElB,CAEgB,SAAAu2B,GACd/uC,EACA4uC,EACAr2C,EAQA,CACA,MAAMysB,EAAUhlB,EAAI,cAClB2uC,GAAa,UAAUC,CAAM,EAC7B,WAAA,EAEF,GAAI5pB,EAAS,CACL,MAAA8jB,EAASyF,GAAah2C,CAAO,EACnCysB,EAAQ,aAAa8jB,CAAM,EAC3B9oC,EAAI,UAAYglB,CAClB,CAQF,CCdO,MAAMroB,GAAc,CAAC,GAAI,WAAY,QAAS,MAAO,MAAM,EAElD,SAAA0vB,GACdl0B,EACAI,EAKA,CACM,MAAA1d,EAAI0d,EAAQ,GAAK,EACjB10B,EAAI00B,EAAQ,GAAK,EACjB7rB,EAAI6rB,EAAQ,GAAK,EACvB0F,GACE9F,EACA,YACA,aAAatd,CAAC,OAAOhX,CAAC,kBAAkB6I,CAAC,KAAA,CAE7C,CAEgB,SAAAsiE,GACd72C,EACAI,EAOA,CACA,MAAM02C,EAAW12C,GAAS,UAAY0kC,GAAO,OAAO,KAC9C5nB,EAAW9c,GAAS,UAAY,EAChCwQ,EAAQxQ,GAAS,OAAS,EAC1B22C,EAAYC,KACZC,EAAWF,EAAY75B,EAC7B,IAAIx6B,EAAI,EACJhX,EAAI,EACR,MAAMwrE,EAAS92C,EAAQ,OACjB+2C,EAAS/2C,EAAQ,OACvB,SAASmI,GAAO,CACd,MAAMgI,EAAMymC,KACZ,GAAIzmC,GAAO0mC,EAAU,CACT/iB,GAAAl0B,EAAI,CAAE,EAAGk3C,EAASx0D,EAAG,EAAGy0D,EAASzrE,EAAG,EAC9C,MACF,CACM,MAAApK,GAAKivC,EAAMwmC,GAAa75B,EACxBmoB,EAASyR,EAASx1E,CAAC,EACnB81E,EAAOF,EAAS7R,EAChBgS,EAAOF,EAAS9R,EACZnR,GAAAl0B,EAAI,CAAE,EAAGo3C,EAAO10D,EAAG,EAAG20D,EAAO3rE,EAAG,EACtCgX,EAAA00D,EACA1rE,EAAA2rE,EACJC,GAAI/uC,CAAI,CACV,CACA,WAAW,IAAM,CACVA,KACJqI,CAAK,CACV,CAGa2mC,MAAAA,GACX,OAAO,aAAgB,SACnB,SAAuBhwC,EAAU,CAC/B,OAAOA,aAAe,WACxB,EACA,SAAyBA,EAAU,CAE/B,OAAAA,GACA,OAAOA,GAAQ,UACfA,EAAI,WAAa,GACjB,OAAOA,EAAI,UAAa,QAE5B,EAEC,SAASiwC,GAAgBx1C,EAAiC,CACxD,OAAA,OAAO,IAAI,gBAAgBA,CAAI,CACxC,CAEO,SAASy1C,GAAgBj1C,EAAa,CACpC,OAAA,OAAO,IAAI,gBAAgBA,CAAG,CACvC,CAKO,SAASk1C,GAAgBtrC,EAAgB,CAC9C,IAAIurC,EAAW,GACf,SAASC,GAAQ,CAGX,kBAAkB,KAAK,SAAS,UAAU,GAAK,CAACD,IAClDn/B,IACGpM,IACQurC,EAAA,GAEf,CACA,MAAME,EAAU15B,GAAoB,SAAU,mBAAoBy5B,CAAK,EACjEE,EAAU35B,GAAoB,OAAQ,OAAQy5B,CAAK,EACnD9+B,EAAQ,YAAY8+B,EAAO,GAAG,EAC9Bp/B,EAAS,IAAM,CACfM,GACF,cAAcA,CAAK,EAEX++B,MACAC,KAAA,EAELt/B,OAAAA,CACT,CAEsB,eAAAu/B,GACpBv1C,EACAxoB,EAAK,IASL,CACA,OAAO,IAAI,QAAQ,CAAC6mB,EAASC,IAAW,CAChC,MAAAk3C,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,KAAO,kBAEdA,EAAO,MAAQ,GACRA,EAAA,OAAU32E,GAAM,CACrB,aAAa2hC,CAAO,EAEpBnC,EAAQx/B,CAAC,EAEF22E,EAAA,QAAUA,EAAO,OAAS,IAAA,EAE5BA,EAAA,QAAW32E,GAAM,CACtB,aAAa2hC,CAAO,EAEpBlC,EAAOz/B,CAAC,CAAA,EAEV22E,EAAO,IAAMx1C,EACP,MAAAQ,EAAyC,WAAW,IAAM,CAC9DlC,EAAO,UAAU,GAChB9mB,CAAE,EACI,SAAA,KAAK,YAAYg+D,CAAM,CAAA,CACjC,CACH,CAEgB,SAAApY,GAAOqY,EAA0BC,EAAkB,CAC3D,MAAAlwE,EAAI,SAAS,cAAc,GAAG,EACpCA,EAAE,MAAM,WAAa,SACrBA,EAAE,SAAWkwE,EACT,OAAOD,GAAc,SACvBjwE,EAAE,KAAOiwE,EAETjwE,EAAE,KAAO,OAAO,IAAI,gBAAgBiwE,CAAS,EAG/CjwE,EAAE,MAAM,CAGV,CAIsB,eAAAmwE,GACpB31C,EACA+I,EAAS,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAChDvxB,EAAK,IASL,CACA,OAAO,IAAI,QAAQ,CAAC6mB,EAASC,IAAW,CAChC,MAAAs3C,EAAO,SAAS,cAAc,MAAM,EAErCA,EAAA,aAAa,OAAQ,UAAU,EAE/BA,EAAA,aAAa,MAAO,YAAY,EAChCA,EAAA,OAAU/2E,GAAM,CACnB,aAAa2hC,CAAO,EAEpBnC,EAAQx/B,CAAC,EAEJ+2E,EAAA,QAAUA,EAAK,OAAS,IAAA,EAE1BA,EAAA,QAAW/2E,GAAM,CACpB,aAAa2hC,CAAO,EAEpBlC,EAAOz/B,CAAC,CAAA,EAGL+2E,EAAA,aAAa,OAAQ51C,CAAG,EACvB,MAAAQ,EAAyC,WAAW,IAAM,CAC9DlC,EAAO,UAAU,GAChB9mB,CAAE,EACLuxB,EAAO,YAAY6sC,CAAI,CAAA,CACxB,CACH,CAGO,SAASC,IAA2B,CAClC,OAAA,IAAI,QAAex3C,GAAY,CACpC,MAAMy3C,EAAQ,MAAM,KAClB,SAAS,iBAAiB,sBAAsB,CAAA,EAE9C,IAAAC,EAAc,SAAS,YAAY,QAAU,EACjD,MAAMX,EAAQ,IACRW,GAAeD,EAAM,QACfz3C,IACD,IAEF,GAEJ+2C,KACGU,EAAA,QAASE,GAAe,CAC5BA,EAAW,OAAS,IAAM,CACTD,GAAA,EACTX,GAAA,CACR,CACD,CACH,CACD,CACH,CAmBA,MAAMa,GAAS,IAAIC,GAA+B,CAAE,IAAK,GAAM,CAAA,EAKzC,eAAAC,GAAUn2C,EAA2BxoB,EAAK,IAAO,CACrE,OAAO,IAAI,QAAsB,CAAC6mB,EAASC,IAAW,CACpD,MAAM83C,EAAW,OAAOp2C,GAAQ,SAAWA,EAAMg1C,GAAgBh1C,CAAG,EAC9Dq2C,EAASJ,GAAO,IAAIG,CAAQ,EAClC,GAAIC,EACF,OAAOh4C,EAAQg4C,CAAM,EAEjB,MAAA71C,EAAyC,WAAW,IAAM,CAC9DlC,EAAO,UAAU,GAChB9mB,CAAE,EAEComC,EAAQ,SAAS,cAAc,KAAK,EAI1CA,EAAM,OAAS,IAAM,CACnB,aAAapd,CAAO,EAEdod,EAAA,QAAUA,EAAM,OAAS,KACzB,MAAAoB,EAAQpB,EAAM,cAAgBA,EAAM,MACpCqB,EAASrB,EAAM,eAAiBA,EAAM,OACtC04B,EAAe,CACnB,MAAAt3B,EACA,OAAAC,EACA,YAAaD,EAAQC,EACrB,QAASrB,EACT,UAAWD,GAAaC,CAAK,CAAA,EAExBq4B,GAAA,IAAIG,EAAUE,CAAY,EACjCj4C,EAAQi4C,CAAY,CAAA,EAEhB14B,EAAA,QAAW/+C,GAAM,CACrB,aAAa2hC,CAAO,EACpBlC,EAAOz/B,CAAC,CAAA,EAEV++C,EAAM,IAAMw4B,CAAA,CAGb,CACH,CAEA,eAAsBG,GACpBC,EAA4C/3C,GAAgC,KAC5ER,EAAoB,CAAC,GAAG,EACxB,CAEM,MAAAO,GADQ,MAAMR,GAAoBC,CAAO,GAC5B,CAAC,EACdiC,EAAO,MAAM3B,GAAqBC,EAAMg4C,CAAQ,EAC/C,MAAA,CACL,KAAMh4C,EAAK,KACX,KAAMA,EAAK,KACX,KAAMA,EAAK,KACX,KAAA0B,CAAA,CAEJ,CAEA,eAAsBu2C,GAAgBx4C,EAAoB,CAAC,SAAS,EAAG,CAE/D,MAAAO,GADQ,MAAMR,GAAoBC,CAAO,GAC5B,CAAC,EACpB,GAAI,CAACO,EAAK,KAAK,MAAM,UAAU,EACtB,OAAA,IAAI,MAAM,iBAAiB,EAEpC,MAAMinB,EAAK,MAAMlnB,GACfC,EACAC,GAAgC,WAAA,EAE5Be,EAAOzB,GAAO0nB,CAAE,EAChB6wB,EAAe,MAAMH,GAAU32C,CAAI,EAClC,MAAA,CACL,KAAMhB,EAAK,KACX,KAAMA,EAAK,KACX,KAAMA,EAAK,KACX,KAAMinB,EACN,MAAO6wB,EAAa,MACpB,OAAQA,EAAa,OACrB,YAAaA,EAAa,YAC1B,UAAWA,EAAa,SAAA,CAE5B,CAEO,SAASI,IAA0B,CACxC,OAAO,OAAO,aAAA,GAAgB,SAAA,GAAc,EAC9C,CAEO,SAASC,GAAeC,EAAe,CAC5C,SAAS,qBAAqB,OAAO,EAAE,CAAC,EAAE,UAAYA,EACtD,SAAS,MAAQA,CACnB,CAEgB,SAAAC,GAAQr/D,EAAK,IAAK,CAC5B,YAAa,UACR,OAAA,UAAU,QAAQA,CAAE,EAE3B,QAAQ,MAAM,qDAAqD,CAEvE,CAEA,eAAsBs/D,GAAU9qB,EAAc,CAC5C,GAAI,UAAU,UACZ,OAAO,MAAM,UAAU,UAAU,UAAUA,CAAI,EAC1C,CACC,MAAA+qB,EAAW,SAAS,cAAc,UAAU,EAClD,OAAAA,EAAS,MAAQ/qB,EACjB+qB,EAAS,MAAM,QAAU,IAEzBA,EAAS,MAAM,SAAW,QAC1BA,EAAS,MAAM,IAAM,IACrBA,EAAS,MAAM,KAAO,IAEtBA,EAAS,MAAM,EACfA,EAAS,OAAO,EAET,SAAS,YAAY,MAAM,CACpC,CACF,CAQO,SAASC,GAAS92D,EAAI,EAAGhX,EAAI,EAAG,CAC9B,OAAA,SAASgX,EAAGhX,CAAC,CACtB,CAwBO,SAAS+tE,GAASz5C,EAAgB,CACvC,MAAO,eAAe,KAAKA,EAAG,OAAO,GAAKA,IAAO,SAAS,eAC5D,CAEa,MAAA05C,GAAc15C,GAGvBA,IAAO,SAAS,gBAAmBA,EAAW,MAASA,EAAW,MAI/D,SAAS25C,IAAqB,CACnC,OAAO,WAAW,iBAAiB,SAAS,eAAe,EAAE,QAAQ,CACvE,CAEO,SAASC,GAAOC,EAAqB,CAC1C,OAAOA,EAAMF,IACf,CAEO,SAASG,GAAU95C,EAAwB,CACzC,OAAAA,EAAG,cACN,WAAW,iBAAiBA,EAAG,aAAa,EAAE,QAAQ,EACtD25C,IACN,CAEa,MAAAI,GAAkB/5C,GAAmB,CAChD,IAAIg6C,EAA+Bh6C,EAC5B,KAAAg6C,GAAOA,EAAI,WAAa,GAAiB,CACxCzuC,MAAAA,EAASyuC,EAAI,eAAiBh6C,EAAG,WACvC,GAAI,CAACuL,EACH,MAEIA,EAAAA,CACR,CACO,OAAAyuC,CACT,EAEazuC,GAAUvL,GACdA,EAAG,cAICi6C,GAAU,CACrBrzC,EACAhuB,EAAmB,KAEf,CAACguB,GAASA,EAAK,gBAAkB,MAAQA,EAAK,aAAe,KACxDhuB,EAGFqhE,GAAQrzC,EAAK,cAAehuB,EAAG,OAAO,CAACguB,CAAI,CAAC,CAAC,EAG/C,SAASszC,GAAal6C,EAAgB,CACrC,MAAApnB,EAAKqhE,GAAQj6C,CAAE,EACrB,QAASt9B,EAAI,EAAG2N,EAAIuI,EAAG,OAAQlW,EAAI2N,EAAG3N,IACpC,GACE,gBAAgB,KACdgiC,GAAS9rB,EAAGlW,CAAC,EAAG,UAAU,EACxBgiC,GAAS9rB,EAAGlW,CAAC,EAAG,YAAY,EAC5BgiC,GAAS9rB,EAAGlW,CAAC,EAAG,YAAY,CAAA,EAGhC,OAAOkW,EAAGlW,CAAC,EAGR,OAAA,SAAS,kBAAoB,SAAS,eAC/C,CAEa,MAAAy3E,GAAgB,CAACn6C,EAAgBo6C,IACxCp6C,EAAG,SACEA,GAAMo6C,GAASp6C,EAAG,SAASo6C,CAAK,EAEhC,CAAC,EAAEp6C,EAAG,wBAAwBo6C,CAAK,EAAI,IAIrCC,GAAYr6C,GAChB,MAAM,UAAU,MACpB,KAAKA,EAAG,eAAe,QAAQ,EAC/B,OAAQo6C,GAAUA,IAAUp6C,CAAE,EAGtBs6C,GAAsBt6C,GAC1BA,EAAG,mBAGCu6C,GAA0Bv6C,GAC9BA,EAAG,uBAGCw6C,GAAU,CAACx6C,EAAgBsG,IAC/BtG,EAAG,QAAQsG,CAAQ,EAGfH,GAAcnG,GAClBA,EAAG,WAGCy6C,GAAWz6C,GACfA,EAAG,UAAY,SAAWA,aAAc,iBAGpC06C,GAAY16C,GAChBA,EAAG,UAAY,UAAYA,aAAc,kBAGrC26C,GAAc36C,GAClBA,EAAG,UAAY,YAAcA,aAAc,oBAGvC46C,GAAmB56C,GACvBy6C,GAAQz6C,CAAE,GAAKA,EAAG,aAAa,MAAM,IAAM,WAGvC66C,GAAgB76C,GACpBy6C,GAAQz6C,CAAE,GAAKA,EAAG,aAAa,MAAM,IAAM,QAGvC86C,GAAe96C,GACnBy6C,GAAQz6C,CAAE,GAAKA,EAAG,aAAa,MAAM,IAAM,OAGvC+6C,GAAiB/6C,GACrBy6C,GAAQz6C,CAAE,GAAKA,EAAG,aAAa,MAAM,IAAM,SAGpC,SAAAg7C,GAAeh7C,EAAgBi7C,EAAuB,CAChE,GAAAP,GAAS16C,CAAE,EAAG,CAChB,MAAMI,EAAWJ,EAAyB,QAC1C,QAASt9B,EAAI,EAAGw/C,EAAM9hB,EAAQ,OAAQ19B,EAAIw/C,EAAKx/C,IAC7C09B,EAAQ19B,CAAC,EAAE,SAAW09B,EAAQ19B,CAAC,EAAE,OAASu4E,CAE9C,CACF,CAEgB,SAAAC,GAAmBl7C,EAAgBm7C,EAAsB,CACnE,GAAAN,GAAa76C,CAAE,EAAG,CACpB,MAAMI,EAAU,SAAS,kBAAmBJ,EAAwB,IAAI,EACxE,QAASt9B,EAAI,EAAGw/C,EAAM9hB,EAAQ,OAAQ19B,EAAIw/C,EAAKx/C,IAAK,CAC5C,MAAA04E,EAASh7C,EAAQ19B,CAAC,EACjB04E,EAAA,QAAUA,EAAO,OAASD,CACnC,CACF,CACF,CAEgB,SAAAE,GAAsBr7C,EAAgBs7C,EAAkB,CAClEV,GAAgB56C,CAAE,IACnBA,EAAwB,QAAUs7C,EAEvC,CAEO,SAASC,GACdv7C,EACAw7C,EACA/4C,EAMoB,SACpB,CACI,OAAO+4C,GAAQ,SACjBx7C,EAAGyC,CAAM,EAAEg5C,GAAeD,CAAI,CAAC,EAE5Bx7C,EAAAyC,CAAM,EAAE+4C,CAAI,CAEnB,CAEgB,SAAAA,GAAKx7C,EAAgBw7C,EAA2B,CAC1D,GAAA,OAAOA,GAAQ,SAAU,CAC3Bx7C,EAAG,UAAYw7C,EACT,MAAAE,EAAQC,GAAc37C,CAAE,EAC1B07C,GAAS17C,IACNA,EAAA07C,EACP,MAEAH,GAAOC,EAAM,aAAa,CAE9B,CAEa,MAAAhwC,GAAQ,SAAUxL,EAAgB,CAC7Cw7C,GAAKx7C,EAAI,EAAE,CACb,EAEawuB,GAAO,CAACxuB,EAAgBwuB,IAAiB,CACpDxuB,EAAG,YAAcwuB,CACnB,EAEaotB,GAAgB57C,GAAmB,CAC9C,GAAIA,aAAc,WACT,MAAA,GAET,IAAI67C,EAAW77C,EAAG,UAClB,GAAI,CAAC67C,EAAU,CACb,MAAMC,EAAQ97C,EAAG,cAAc,MAAM,GAAG,iBAAmB,GAC3D,IAAImK,EAAQ,EACZ,KAAO,CAAC0xC,GAAY1xC,GAAS2xC,EAAM,OAAS,GACtC,cAAeA,EAAM3xC,CAAK,IAChB0xC,EAAAC,EAAM3xC,CAAK,EAAkB,WAE3CA,GAEJ,CACO,OAAA0xC,CACT,EAEarjC,GAAUxY,GACdA,EAAG,SAKI,SAAA+7C,GAAgB/7C,EAAgBwsC,EAAiB,CAE5D9nC,GAAS1E,EAAI,SAAS,GAAK,QAAUwsC,IAAU,QAChDA,IAAU,GAEVwP,GAAOh8C,CAAE,EAETi8C,GAAOj8C,CAAE,CAEb,CAEO,SAASg8C,GAAOh8C,EAAgB,CACrCgF,GACEhF,EACA,UACAA,aAAc,oBACV,YACAA,aAAc,qBACd,aACA,OAAA,CAER,CAEO,SAASi8C,GAAOj8C,EAAgB,CAC5BgF,GAAAhF,EAAI,UAAW,MAAM,CAChC,CAEO,SAASk8C,GACdl8C,EACAm8C,EACAC,EAAmC,SACnC,CACM,MAAAC,EAAaF,EAAU,MAAM,QAAQ,EAC3C,GAAIn8C,EAAG,UACMq8C,EAAA,QAASC,GAAoB,CAChC,MAAA73C,EAAO63C,EAAgB,OACzB73C,IAAS,IACRzE,EAAA,UAAUo8C,CAAG,EAAE33C,CAAI,CACxB,CACD,MACI,CACL,MAAM83C,EAASv8C,EAAG,UAAU,MAAM,IAAI,EACtC,IAAIw8C,EAAW,GACJH,EAAA,QAASC,GAAoB,CAChC,MAAA73C,EAAO63C,EAAgB,OAC7B,GAAI73C,IAAS,GAAI,CACT,MAAA0F,EAAQoyC,EAAO,QAAQ93C,CAAI,EACjC,OAAQ23C,EAAK,CACX,IAAK,MACCjyC,IAAU,KACZoyC,EAAO,KAAK93C,CAAI,EACL+3C,EAAA,IAEb,MACF,IAAK,SACCryC,IAAU,KACLoyC,EAAA,OAAOpyC,EAAO,CAAC,EACXqyC,EAAA,IAEb,MACF,IAAK,SACCryC,IAAU,GACZoyC,EAAO,KAAK93C,CAAI,EAET83C,EAAA,OAAOpyC,EAAO,CAAC,EAEbqyC,EAAA,GACX,KACJ,CACF,CAAA,CACD,EACGA,GACF90C,GACE1H,EACA,QACAu8C,EAAO,KAAK,GAAG,EAAE,QAAQ,OAAQ,EAAE,EAAE,QAAQ,OAAQ,EAAE,CAAA,CAG7D,CACF,CAEgB,SAAAE,GAASz8C,EAAgBm8C,EAAmB,CAC9CD,GAAAl8C,EAAIm8C,EAAW,KAAK,CAClC,CAEgB,SAAAO,GAAY18C,EAAgBm8C,EAAmB,CACjDD,GAAAl8C,EAAIm8C,EAAW,QAAQ,CACrC,CAEgB,SAAAQ,GAAS38C,EAAgBm8C,EAA4B,CAC5D,OAAA,IAAI,OAAO,aAAeA,EAAY,YAAY,EAAE,KAAKn8C,EAAG,SAAS,CAC9E,CAKgB,SAAAy7C,GACdD,EACA/Z,EAAU,GACQ,CACZ,MAAAmb,EAAO,SAAS,cAAc,UAAU,EAC9C,OAAAA,EAAK,UAAYpB,EACb/Z,GACFmb,EAAK,QAAQ,WAAW,QAASh2C,GAAS,CAClC,MAAAi2C,EAAUlB,GAAc/0C,CAAkB,EAC5Ci2C,GAAWj2C,GACRg2C,EAAA,QAAQ,aAAaC,EAASj2C,CAAI,CACzC,CACD,EAEIg2C,EAAK,OACd,CAEO,SAASE,GAAcvd,EAAiB,CAC7C,OAAO,SAAS,cAAc,KAAK,SAAUA,CAAO,CACtD,CAEO,SAASwd,GAAgBt4C,EAAc,CACrC,OAAA,SAAS,gBAAgB,+BAAgCA,CAAI,CACtE,CAEO,SAASu4C,GAAet6C,EAAc,CAC3C,OAAO,SAAS,eAAe,KAAK,SAAUA,CAAI,CACpD,CAEA,SAASi5C,GAAc37C,EAAgB,CACjC,OAAAA,EAAG,SAAW,WAChBA,EAAKyhC,GAAQzhC,CAAuB,GAElCA,EAAG,kBACLA,EAAG,iBAAiB,QAAQ,EAAE,QAAS,GAAM,CAC3C,EAAE,YAAY,aAAayhC,GAAQ,CAAC,EAAG,CAAC,CAAA,CACzC,EAEIzhC,CACT,CAGA,SAASyhC,GAAQzhC,EAAuB,CACtC,MAAMg4C,EAASh4C,EAAG,cAAc,cAAc,QAAQ,EACtDg4C,EAAO,KAAOh4C,EAAG,KACjB,MAAMwH,EAAQxH,EAAG,WACjB,QAASt9B,EAAI,EAAG2N,EAAIm3B,EAAM,OAAQ9kC,EAAI2N,EAAG3N,IAChCs1E,EAAA,aAAaxwC,EAAM9kC,CAAC,EAAE,KAAM8kC,EAAM9kC,CAAC,EAAE,KAAK,EAE5C,OAAAs1E,CACT,CAWgB,SAAAiF,GACdC,EACAC,EAAe,oCACf,CAEM,MAAAC,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,IAAMD,EACJ,SAAA,KAAK,OAAOC,CAAM,EAC3B,WAAW,UAAY,CACdA,EAAA,eAAe,YAAYF,EAASC,CAAY,GACtD,GAAI,EACP,WAAW,UAAY,CACrBC,EAAO,OAAO,GACb,GAAI,CACT,CAGO,SAASC,GAAaC,EAAc,CACnC,MAAAC,EAAsB,IAAI,MAAc,OAAQ,CACpD,IAAIj/C,EAAQ6G,EAAKq4C,EAAU,CAEvB,GAAA,OAAOr4C,GAAO,UACd,CAAC,OAAQ,WAAY,UAAU,EAAE,SAASA,CAAG,EAE7C,MAAM,IAAI,MAAM,aAAaA,CAAG,EAAE,EAEpC,OAAIA,IAAQ,SACHo4C,EAEF,QAAQ,IAAIj/C,EAAQ6G,EAAKq4C,CAAQ,CAC1C,EACA,IAAIl/C,EAAQ6G,EAAKF,EAAOu4C,EAAU,CAChC,OAAO,QAAQ,IAAIl/C,EAAQ6G,EAAKF,EAAOu4C,CAAQ,CACjD,CAAA,CACD,EACD,IAAI,SAAS,SAAU,kBAAkBF,CAAI,IAAI,EAAEC,EAAa,IAAI,CACtE,CAeO,SAASE,GAAgBC,EAAkB,CAChD,OAAAA,EAAWA,EACR,QAAQ,cAAe,gCAAgC,EACvD,QAAQ,kBAAmB,sBAAsB,EACpDA,EAAW,SAAWA,EAAW,MAClB;AAAA;AAAA;AAAA;AAAA;AAAA,QAKTA,CAAQ;AAAA;AAAA,OAIhB,CC33BO,MAAMC,EAAS,CACpB,MAEA,YAAYC,EAA4C,CACtD,KAAK,MAAQA,CACf,CAEA,aAAaC,EAA0B,CACrC,KAAK,MAAM,iBAAiB,iBAAmBx8E,GAAM,CACrCA,EAAE,MAOhB,CACD,EACD,KAAK,MAAM,UAAYw8E,CACzB,CAEA,kBAAmB,CACjB,UAAU,aACP,aAAa,CACZ,MAAO,EAAA,CACR,EACA,KAAMC,GAAW,CAChB,KAAK,aAAaA,CAAM,CAAA,CACzB,CACL,CAGA,aAAa,yBAA0B,CAC9B,OAAA,IAAI,QAAkBj9C,GAAY,CACjC,MAAAu8C,EAAS,SAAS,cAAc,QAAQ,EACxCQ,EAAQ,SAAS,cAAc,OAAO,EACtC7vC,EAAS,SAAS,cAAc,QAAQ,EACxCgwC,EAAc,IAAI,YACxBA,EAAY,iBAAiB,aAAc,IAAMl9C,EAAQ,EAAI,CAAC,EACvDkN,EAAA,IAAM,IAAI,gBAAgBgwC,CAAW,EAC5ChwC,EAAO,MAAQ,mBACf6vC,EAAM,OAAO7vC,CAAM,EACnBqvC,EAAO,MAAQ,IACfA,EAAO,MAAM,QAAU,0CACd,SAAA,gBAAgB,OAAOA,CAAM,EAC/BA,EAAA,iBAAiB,KAAK,OAAOQ,CAAK,EACzC,WAAW,IAAM,CACfR,EAAO,MAAQ,IAAA,CAChB,EACD,WAAW,IAAM,CACfA,EAAO,OAAO,EACdv8C,EAAQ,EAAK,GACZ,GAAI,CAAA,CACR,CACH,CAEA,OAAO,gCACL+8C,EACA,CACO,OAAA,IAAI,QAAkB/8C,GAAY,CAEpC+8C,EAAA,OACA,KAAK,IAAM,CACVA,EAAM,SAAW,GACjB/8C,EAAQ,EAAI,CAAA,CACb,EACA,MAAM,IAAM,CACX88C,GAAS,qBAAqBC,CAAK,EACnC/8C,EAAQ,EAAK,CAAA,CACd,CAAA,CACJ,CACH,CAGA,OAAO,qBAAqB+8C,EAA4C,CACtE,SAASI,GAAc,CACrBJ,EAAM,SAAW,GACjBA,EAAM,KAAK,EACF,SAAA,oBAAoB,QAASI,CAAW,EACxC,SAAA,oBAAoB,WAAYA,CAAW,CACtD,CACS,SAAA,iBAAiB,QAASA,CAAW,EACrC,SAAA,iBAAiB,WAAYA,CAAW,CACnD,CACF,CC7DO,MAAMC,WAAiBxS,EAA4B,CACxD,OAEA,IAAM,GACN,KAAO,OACP,QAAU,GACV,SAAW,GACX,UAAY,GACZ,OAAS,GACT,MAAQ,GACR,MAAgC,CAAA,EAEhC,YAAYyS,EAAsB,CAC1B,QACN,KAAK,OAASA,CAChB,CAEA,OAAQ,CACA,MAAAxgD,EAASygD,GAAa,KAAK,MAAM,EACvC,GAAIzgD,IAAW,EAAG,CAChB,KAAK,KAAK,QAAQ,EAClB,MACF,CACI,IAAA+P,EACA2wC,EACA3xC,EAAO4xC,GAAO,KAAK,OAAQ,CAAC,EAChC,QAAS,EAAI,EAAG,EAAI3gD,EAAQ,IACnB+P,EAAA2wC,EACGA,EAAA3xC,EACHA,EAAA4xC,GAAO,KAAK,OAAQ,CAAC,EAC5B,KAAK,KAAOD,EACRA,GACG,KAAA,KAAKA,EAAS3xC,EAAMgB,CAAI,EAG7BhB,GACG,KAAA,KAAKA,EAAM,OAAW2xC,CAAO,EAEpC,KAAK,KAAK,QAAQ,CACpB,CAEA,KAAKhzE,EAAW,EAAYgP,EAAY,CACjChP,GAAA;AAAA,GAAQ,KAAK,KAAK,SAAS,EAC3B,KAAA,IAAIA,EAAG,EAAGgP,CAAC,CAClB,CAEA,IAAIhP,EAAW,EAAYgP,EAAY,CACrC,OAAQ,KAAK,KAAM,CACjB,IAAK,OACH,OAAQhP,EAAG,CACT,IAAK,IACL,IAAK,MACH,KAAK,SAAW,GAChB,KAAK,MAAQ,GACb,KAAK,KAAO,iBACZ,KAAK,IAAM,KAAK,IAAI,MAAM,EAAG,EAAE,EAC/B,KAAK,WAAa,KAAK,KAAK,OAAQ,KAAK,SAAS,EAClD,KAAK,KAAOA,EACZ,KAAK,UAAY,GACjB,MACF,IAAK,IACH,KAAK,KAAO,SACZ,KAAK,OAAS,GACd,MACF,QACE,KAAK,WAAaA,EAClB,KACJ,CACA,MAEF,IAAK,SACCkzE,GAAQ,aAAclzE,CAAC,GACpB,KAAA,WAAamzE,GAAY,KAAK,MAAM,EACzC,KAAK,KAAO,QACHnzE,GAAK,KACd,KAAK,WAAamzE,GAAY,KAAK,OAASnzE,CAAC,EAC7C,KAAK,KAAO,QAEZ,KAAK,QAAUA,EAEjB,MAEF,IAAK,UACH,GAAIgP,GAAK,KAAOhP,GAAK,KAAO,GAAK,IAAK,CACpC,KAAK,KAAO,gBACZ,KACF,CACA,GAAI,KAAK,WAAa,UAAYA,GAAK,IAAK,CAC1C,KAAK,KAAO,QACZ,KAAK,UAAY,GACjB,KACF,CACI,GAAAA,GAAK,KAAOA,GAAK,MAAO,CACrB,KAAA,KAAK,UAAW,KAAK,SAAS,EACnC,KAAK,KAAO,OACZ,KAAK,UAAY,GACjB,KACF,CACA,KAAK,WAAaA,EAClB,MAEF,IAAK,QACH,GAAIgP,GAAK,KAAOhP,GAAK,KAAO,GAAK,IAAK,CACpC,KAAK,KAAO,YACZ,KAAK,UAAY,KAAK,UAAU,MAAM,EAAG,EAAE,EAC3C,KACF,CACIA,GAAK,QACP,KAAK,KAAO,YACP,KAAA,IAAIA,EAAG,EAAGgP,CAAC,GAElB,KAAK,WAAahP,EAClB,MAEF,IAAK,YACE,KAAA,KAAK,QAAS,KAAK,SAAS,EACjC,KAAK,UAAY,GACjB,KAAK,KAAO,OACZ,MAEF,IAAK,gBACC,GAAK,KAAOA,GAAK,OACd,KAAA,KAAK,UAAW,EAAE,EACvB,KAAK,KAAO,QAEZ,KAAK,KAAO,UAEd,MAEF,IAAK,OACH,KAAK,KAAO,OACZ,MAEF,IAAK,UACCA,GAAK,KAAOgP,GAAK,KAAO,GAAK,KAC/B,KAAK,KAAO,cACZ,KAAK,UAAY,KAAK,UAAU,MAAM,EAAG,EAAE,GAClChP,GAAK,MACT,KAAA,KAAK,UAAW,KAAK,SAAS,EAEnC,KAAK,WAAaA,EAEpB,MAEF,IAAK,cACE,KAAA,KAAK,UAAW,KAAK,SAAS,EACnC,KAAK,UAAY,GACjB,KAAK,KAAO,OACZ,MAEF,IAAK,cACC,GAAAA,GAAK,KAAO,GAAK,IAAK,CACxB,KAAK,KAAO,kBACZ,KACF,CACIA,GAAK,OACF,KAAA,KAAK,UAAW,KAAK,SAAS,EAErC,KAAK,WAAaA,EAClB,MAEF,IAAK,kBACE,KAAA,KAAK,UAAW,KAAK,SAAS,EACnC,KAAK,UAAY,GACjB,KAAK,KAAO,OACZ,MAEF,IAAK,iBACH,GAAIA,GAAK,MAAO,CACT,KAAA,KAAK,OAAQ,GAAG,EACrB,KACF,CACA,GAAI,CAACkzE,GAAQ,aAAclzE,CAAC,EAAG,CAE7B,GADA,KAAK,KAAO,WACRA,GAAK,IAAK,CACZ,KAAK,KAAO,uBACZ,KAAA,SACSA,GAAK,IAAK,CACnB,KAAK,KAAO,UACZ,KAAK,UAAY,GACjB,KAAA,SACSA,GAAK,IAAK,CACnB,KAAK,KAAO,cACZ,KACF,CACK,KAAA,IAAIA,EAAG,EAAGgP,CAAC,CAClB,CACA,MAEF,IAAK,uBACEkkE,GAAQ,aAAclzE,CAAC,IAC1B,KAAK,KAAO,iBACZ,KAAK,QAAU,GACf,KAAK,SAAW,GACX,KAAA,IAAIA,EAAG,EAAGgP,CAAC,GAElB,MAEF,IAAK,iBACC,GAAAkkE,GAAQ,aAAclzE,CAAC,EACzB,KAAK,QAAU,KAAK,aAEpB,QAAQA,EAAG,CACT,IAAK,IACH,KAAK,KAAK,OAAQ,KAAK,SAAW,KAAK,SAAU,KAAK,KAAK,EAC3D,KAAK,KAAO,OACZ,MACF,QACG,CAAA,KAAK,UAAY,KAAK,UAAYA,GACnC,KACJ,CACF,MAEF,IAAK,WACC,GAAAkzE,GAAQ,aAAclzE,CAAC,EACzB,KAAK,QAAU,KAAK,SACpB,KAAK,SAAW,GAChB,KAAK,KAAO,iBAEZ,QAAQA,EAAG,CACT,IAAK,IACH,KAAK,KAAK,MAAO,KAAK,SAAU,KAAK,KAAK,EAC1C,KAAK,KAAO,OACZ,MACF,IAAK,IACH,KAAK,KAAO,EACZ,KAAK,KAAK,MAAO,KAAK,SAAU,KAAK,KAAK,EAC1C,KAAK,KAAK,OAAQ,KAAK,SAAU,KAAK,KAAK,EAC3C,KAAK,KAAO,OACZ,MACF,QACE,KAAK,UAAYA,EACjB,KACJ,CACF,MAEF,IAAK,aACEkzE,GAAQ,aAAclzE,CAAC,IAC1B,KAAK,KAAO,OACZ,KAAK,SAAW,GACX,KAAA,IAAIA,EAAG,EAAGgP,CAAC,GAElB,MAEF,IAAK,OACH,GAAIkkE,GAAQ,aAAclzE,CAAC,GAAKA,GAAK,IAC9B,KAAA,MAAM,KAAK,QAAQ,EAAI,GAC5B,KAAK,KAAO,uBAEZ,QAAQA,EAAG,CACT,IAAK,IACC,KAAK,UAAY,KACZ,OAAA,KAAK,MAAM,GAAG,EACrB,KAAK,KAAK,MAAO,KAAK,QAAS,KAAK,KAAK,EACzC,KAAK,KAAK,OAAQ,KAAK,QAAS,KAAK,KAAK,IAE1C,KAAK,WAAa,KAAK,MAAM,KAAK,QAAQ,EAAI,IAC9C,KAAK,KAAK,MAAO,KAAK,QAAS,KAAK,KAAK,GAE3C,KAAK,KAAO,OACZ,MACF,QACE,KAAK,UAAYA,EACjB,KACJ,CACF,MAEF,IAAK,mBACH,GAAI,CAACkzE,GAAQ,aAAclzE,CAAC,EAAG,CAGzB,GAFJ,KAAK,KAAO,aACZ,KAAK,MAAQ,GACTA,GAAK,KAAOA,GAAK,IAAK,CACxB,KAAK,MAAQA,EACb,MACF,CACK,KAAA,IAAIA,EAAG,EAAGgP,CAAC,CAClB,CACA,MAEF,IAAK,aACH,GAAIkkE,GAAQ,aAAclzE,CAAC,GAAK,CAAC,KAAK,MACpC,KAAK,KAAO,qBACHA,GAAK,KAAO,CAAC,KAAK,MAC3B,KAAK,KAAK,MAAO,KAAK,QAAS,KAAK,KAAK,EACzC,KAAK,KAAO,WAEZ,QAAQA,EAAG,CACT,IAAK,IACL,IAAK,IACC,KAAK,OAASA,GAAKgP,GAAK,OAC1B,KAAK,KAAO,cAEd,MACF,QACO,KAAA,MAAM,KAAK,QAAQ,GAAKhP,EAC7B,KACJ,CACF,KACJ,CACF,CACF,CAKA,SAASmzE,GAAYvsB,EAAgB,CACnC,MAAMwsB,EAAmC,CACvC,GAAI,GACJ,MAAO,GACP,OAAQ,GACR,IAAK,GACL,MAAO,GACP,GAAI,GACJ,QAAS,GACT,KAAM,GACN,QAAS,GACT,QAAS,KACT,UAAW,KACX,QAAS,IACT,KAAM,IACN,OAAQ,IACR,IAAK,GAAA,EAEH,IAAAlB,EACJ,OAAItrB,EAAO,OAAO,CAAC,GAAK,IAClBA,EAAO,OAAO,CAAC,EAAE,YAAA,GAAiB,IACpCsrB,EAAO,SAAStrB,EAAO,UAAU,CAAC,EAAG,EAAE,EAEvCsrB,EAAO,SAAStrB,EAAO,UAAU,CAAC,EAAG,EAAE,EAGzCsrB,EAAOkB,EAASxsB,CAAM,EAEjBsrB,EAAO,OAAO,aAAaA,CAAI,EAAI,IAAMtrB,CAClD,CClWA,IAAIysB,GAAY,kCAET,SAASC,GAASC,EAAKv+C,EAAU,GAAI,CAK1C,IAAIw+C,EAAS,EACTC,EAAS,EAMb,SAASC,EAAepgD,EAAK,CAC3B,IAAIsjC,EAAQtjC,EAAI,MAAM,KAAK,EACvBsjC,IAAO4c,GAAU5c,EAAM,QAC3B,IAAIt/D,EAAIg8B,EAAI,YAAY;AAAA,CAAI,EAC5BmgD,EAAS,CAACn8E,EAAIg8B,EAAI,OAASh8B,EAAIm8E,EAASngD,EAAI,MAC7C,CAMD,SAAS0H,GAAW,CAClB,IAAI1E,EAAQ,CAAE,KAAMk9C,EAAQ,OAAQC,CAAM,EAC1C,OAAO,SAAUj4C,EAAM,CACrB,OAAAA,EAAK,SAAW,IAAIm4C,EAASr9C,CAAK,EAClCs9C,IACOp4C,CACb,CACG,CAMD,SAASm4C,EAASr9C,EAAO,CACvB,KAAK,MAAQA,EACb,KAAK,IAAM,CAAE,KAAMk9C,EAAQ,OAAQC,GACnC,KAAK,OAASz+C,EAAQ,MACvB,CAMD2+C,EAAS,UAAU,QAAUJ,EAM7B,IAAIM,EAAa,CAAA,EAEjB,SAASn2C,EAAMo2C,EAAK,CAClB,IAAIl1C,EAAM,IAAI,MACZ5J,EAAQ,OAAS,IAAMw+C,EAAS,IAAMC,EAAS,KAAOK,CAC5D,EAOI,GANAl1C,EAAI,OAASk1C,EACbl1C,EAAI,SAAW5J,EAAQ,OACvB4J,EAAI,KAAO40C,EACX50C,EAAI,OAAS60C,EACb70C,EAAI,OAAS20C,EAETv+C,EAAQ,OACV6+C,EAAW,KAAKj1C,CAAG,MAEnB,OAAMA,CAET,CAMD,SAASwuC,GAAa,CACpB,IAAI2G,EAAYn4C,IAEhB,MAAO,CACL,KAAM,aACN,WAAY,CACV,OAAQ5G,EAAQ,OAChB,MAAO++C,EACP,cAAeF,CAChB,CACP,CACG,CAMD,SAASG,GAAO,CACd,OAAOC,EAAM,OAAO,CACrB,CAMD,SAASC,GAAQ,CACf,OAAOD,EAAM,IAAI,CAClB,CAMD,SAASr4C,GAAQ,CACf,IAAIJ,EACAI,EAAQ,CAAA,EAGZ,IAFAg4C,IACAO,EAASv4C,CAAK,EACP23C,EAAI,QAAUA,EAAI,OAAO,CAAC,GAAK,MAAQ/3C,EAAO44C,MAAYC,GAAM,IACjE74C,IAAS,KACXI,EAAM,KAAKJ,CAAI,EACf24C,EAASv4C,CAAK,GAGlB,OAAOA,CACR,CAMD,SAASq4C,EAAMK,EAAI,CACjB,IAAIl0E,EAAIk0E,EAAG,KAAKf,CAAG,EACnB,GAAKnzE,EACL,KAAIkzB,EAAMlzB,EAAE,CAAC,EACb,OAAAszE,EAAepgD,CAAG,EAClBigD,EAAMA,EAAI,MAAMjgD,EAAI,MAAM,EACnBlzB,EACR,CAMD,SAASwzE,GAAa,CACpBK,EAAM,MAAM,CACb,CAMD,SAASE,EAASv4C,EAAO,CACvB,IAAI57B,EAEJ,IADA47B,EAAQA,GAAS,GACT57B,EAAIu0E,KACNv0E,IAAM,IACR47B,EAAM,KAAK57B,CAAC,EAGhB,OAAO47B,CACR,CAMD,SAAS24C,GAAU,CACjB,IAAIxyB,EAAM/mB,IACV,GAAI,EAAOu4C,EAAI,OAAO,CAAC,GAAnB,KAA+BA,EAAI,OAAO,CAAC,GAAnB,KAG5B,SADIj8E,EAAI,EAEAi8E,EAAI,OAAOj8E,CAAC,GAAlB,KACQi8E,EAAI,OAAOj8E,CAAC,GAAnB,KAA+Bi8E,EAAI,OAAOj8E,EAAI,CAAC,GAAvB,MAEzB,EAAEA,EAGJ,GAFAA,GAAK,EAEMi8E,EAAI,OAAOj8E,EAAI,CAAC,IAAvB,GACF,OAAOomC,EAAM,wBAAwB,EAGvC,IAAIpK,EAAMigD,EAAI,MAAM,EAAGj8E,EAAI,CAAC,EAC5B,OAAAm8E,GAAU,EACVC,EAAepgD,CAAG,EAClBigD,EAAMA,EAAI,MAAMj8E,CAAC,EACjBm8E,GAAU,EAEH1xB,EAAI,CACT,KAAM,UACN,QAASzuB,CACf,CAAK,EACF,CAMD,SAAS4H,GAAW,CAClB,IAAI96B,EAAI6zE,EAAM,UAAU,EACxB,GAAK7zE,EAGL,OAAOo0E,GAAKp0E,EAAE,CAAC,CAAC,EACb,QAAQ,+CAAgD,EAAE,EAC1D,QAAQ,mCAAoC,SAAUA,EAAG,CACxD,OAAOA,EAAE,QAAQ,KAAM,GAAQ,CACvC,CAAO,EACA,MAAM,oBAAoB,EAC1B,IAAI,SAAUhI,EAAG,CAChB,OAAOA,EAAE,QAAQ,UAAW,GAAG,CACvC,CAAO,CACJ,CAMD,SAASq8E,GAAc,CACrB,IAAI1yB,EAAM/mB,IAGNzB,EAAO06C,EAAM,wCAAwC,EACzD,GAAK16C,EAIL,IAHAA,EAAOi7C,GAAKj7C,EAAK,CAAC,CAAC,EAGf,CAAC06C,EAAM,OAAO,EAAG,OAAOv2C,EAAM,sBAAsB,EAGxD,IAAI7K,EAAMohD,EAAM,sDAAsD,EAElE5/C,EAAM0tB,EAAI,CACZ,KAAM,cACN,SAAUxoB,EAAK,QAAQ85C,GAAW,EAAE,EACpC,MAAOxgD,EAAM2hD,GAAK3hD,EAAI,CAAC,CAAC,EAAE,QAAQwgD,GAAW,EAAE,EAAI,EACzD,CAAK,EAGD,OAAAY,EAAM,SAAS,EAER5/C,EACR,CAMD,SAASqgD,GAAe,CACtB,IAAIC,EAAQ,CAAA,EAEZ,GAAI,CAACX,EAAM,EAAE,OAAOt2C,EAAM,aAAa,EACvCy2C,EAASQ,CAAK,EAId,QADIC,EACIA,EAAOH,KACTG,IAAS,KACXD,EAAM,KAAKC,CAAI,EACfT,EAASQ,CAAK,GAIlB,OAAKT,EAAO,EACLS,EADcj3C,EAAM,aAAa,CAEzC,CAMD,SAASm3C,GAAW,CAKlB,QAJIz0E,EACA00E,EAAO,CAAA,EACP/yB,EAAM/mB,IAEF56B,EAAI6zE,EAAM,qCAAqC,GACrDa,EAAK,KAAK10E,EAAE,CAAC,CAAC,EACd6zE,EAAM,OAAO,EAGf,GAAKa,EAAK,OAEV,OAAO/yB,EAAI,CACT,KAAM,WACN,OAAQ+yB,EACR,aAAcJ,EAAc,CAClC,CAAK,CACF,CAMD,SAASK,GAAc,CACrB,IAAIhzB,EAAM/mB,IACN56B,EAAI6zE,EAAM,yBAAyB,EAEvC,GAAK7zE,EACL,KAAI40E,EAAS50E,EAAE,CAAC,EAIhB,GADAA,EAAI6zE,EAAM,cAAc,EACpB,CAAC7zE,EAAG,OAAOs9B,EAAM,yBAAyB,EAC9C,IAAIrE,EAAOj5B,EAAE,CAAC,EAEd,GAAI,CAAC4zE,EAAM,EAAE,OAAOt2C,EAAM,wBAAwB,EAIlD,QAFIu3C,EACAC,EAASf,IACLc,EAAQJ,KACdK,EAAO,KAAKD,CAAK,EACjBC,EAASA,EAAO,OAAOf,EAAU,CAAA,EAGnC,OAAKD,EAAO,EAELnyB,EAAI,CACT,KAAM,YACN,KAAM1oB,EACN,OAAQ27C,EACR,UAAWE,CACjB,CAAK,EAPoBx3C,EAAM,wBAAwB,EAQpD,CAMD,SAASy3C,GAAa,CACpB,IAAIpzB,EAAM/mB,IACN56B,EAAI6zE,EAAM,qBAAqB,EAEnC,GAAK7zE,EACL,KAAIg1E,EAAWZ,GAAKp0E,EAAE,CAAC,CAAC,EAExB,GAAI,CAAC4zE,EAAM,EAAE,OAAOt2C,EAAM,uBAAuB,EAEjD,IAAIjD,EAAQ05C,EAAQ,EAAG,OAAOv4C,EAAO,CAAA,EAErC,OAAKs4C,EAAO,EAELnyB,EAAI,CACT,KAAM,WACN,SAAUqzB,EACV,MAAO36C,CACb,CAAK,EANoBiD,EAAM,uBAAuB,EAOnD,CAMD,SAAS23C,GAAS,CAChB,IAAItzB,EAAM/mB,IACN56B,EAAI6zE,EAAM,WAAW,EAEzB,GAAK7zE,EAEL,IAAI,CAAC4zE,EAAM,EAAE,OAAOt2C,EAAM,mBAAmB,EAE7C,IAAIjD,EAAQ05C,EAAQ,EAAG,OAAOv4C,EAAO,CAAA,EAErC,OAAKs4C,EAAO,EAELnyB,EAAI,CACT,KAAM,OACN,MAAOtnB,CACb,CAAK,EALoBiD,EAAM,mBAAmB,EAM/C,CAMD,SAAS43C,GAAU,CACjB,IAAIvzB,EAAM/mB,IACN56B,EAAI6zE,EAAM,kBAAkB,EAEhC,GAAK7zE,EACL,KAAIm1E,EAAQf,GAAKp0E,EAAE,CAAC,CAAC,EAErB,GAAI,CAAC4zE,EAAM,EAAE,OAAOt2C,EAAM,oBAAoB,EAE9C,IAAIjD,EAAQ05C,EAAQ,EAAG,OAAOv4C,EAAO,CAAA,EAErC,OAAKs4C,EAAO,EAELnyB,EAAI,CACT,KAAM,QACN,MAAOwzB,EACP,MAAO96C,CACb,CAAK,EANoBiD,EAAM,oBAAoB,EAOhD,CAMD,SAAS83C,GAAgB,CACvB,IAAIzzB,EAAM/mB,IACN56B,EAAI6zE,EAAM,yCAAyC,EACvD,GAAK7zE,EAEL,OAAO2hD,EAAI,CACT,KAAM,eACN,KAAMyyB,GAAKp0E,EAAE,CAAC,CAAC,EACf,MAAOo0E,GAAKp0E,EAAE,CAAC,CAAC,CACtB,CAAK,CACF,CAMD,SAASq1E,GAAS,CAChB,IAAI1zB,EAAM/mB,IACN56B,EAAI6zE,EAAM,UAAU,EACxB,GAAK7zE,EAEL,KAAIs1E,EAAMx6C,EAAU,GAAI,GAExB,GAAI,CAAC84C,EAAM,EAAE,OAAOt2C,EAAM,mBAAmB,EAK7C,QAJIi3C,EAAQR,IAGRS,EACIA,EAAOH,KACbE,EAAM,KAAKC,CAAI,EACfD,EAAQA,EAAM,OAAOR,EAAU,CAAA,EAGjC,OAAKD,EAAO,EAELnyB,EAAI,CACT,KAAM,OACN,UAAW2zB,EACX,aAAcf,CACpB,CAAK,EANoBj3C,EAAM,mBAAmB,EAO/C,CAMD,SAASi4C,GAAa,CACpB,IAAI5zB,EAAM/mB,IACN56B,EAAI6zE,EAAM,8BAA8B,EAC5C,GAAK7zE,EAEL,KAAI40E,EAASR,GAAKp0E,EAAE,CAAC,CAAC,EAClBw1E,EAAMpB,GAAKp0E,EAAE,CAAC,CAAC,EAEnB,GAAI,CAAC4zE,EAAM,EAAE,OAAOt2C,EAAM,uBAAuB,EAEjD,IAAIjD,EAAQ05C,EAAQ,EAAG,OAAOv4C,EAAO,CAAA,EAErC,OAAKs4C,EAAO,EAELnyB,EAAI,CACT,KAAM,WACN,SAAU6zB,EACV,OAAQZ,EACR,MAAOv6C,CACb,CAAK,EAPoBiD,EAAM,uBAAuB,EAQnD,CAMD,SAASm4C,GAAa,CACpB,IAAI9zB,EAAM/mB,IACN56B,EAAI6zE,EAAM,gBAAgB,EAC9B,GAAK7zE,EAEL,IAAI,CAAC4zE,EAAM,EAAE,OAAOt2C,EAAM,wBAAwB,EAKlD,QAJIi3C,EAAQR,IAGRS,EACIA,EAAOH,KACbE,EAAM,KAAKC,CAAI,EACfD,EAAQA,EAAM,OAAOR,EAAU,CAAA,EAGjC,OAAKD,EAAO,EAELnyB,EAAI,CACT,KAAM,YACN,aAAc4yB,CACpB,CAAK,EALoBj3C,EAAM,wBAAwB,EAMpD,CAMD,IAAIo4C,EAAWC,GAAe,QAAQ,EAMlCC,GAAYD,GAAe,SAAS,EAMpCE,GAAcF,GAAe,WAAW,EAM5C,SAASA,GAAe18C,EAAM,CAC5B,IAAIi7C,EAAK,IAAI,OAAO,KAAOj7C,EAAO,cAAc,EAChD,OAAO,UAAY,CACjB,IAAI0oB,EAAM/mB,IACN56B,EAAI6zE,EAAMK,CAAE,EAChB,GAAKl0E,EACL,KAAIi0B,EAAM,CAAE,KAAMgF,GAClB,OAAAhF,EAAIgF,CAAI,EAAIj5B,EAAE,CAAC,EAAE,KAAI,EACd2hD,EAAI1tB,CAAG,EACpB,CACG,CAMD,SAAS+/C,IAAS,CAChB,GAAIb,EAAI,CAAC,GAAK,IAEd,OACEwB,EAAa,GACbO,EAAS,GACTE,EAAe,GACfL,EAAY,GACZW,EAAU,GACVE,GAAW,GACXC,GAAa,GACbN,EAAY,GACZF,EAAQ,GACRJ,EAAQ,GACRQ,EAAY,CAEf,CAMD,SAASxB,IAAO,CACd,IAAItyB,EAAM/mB,IACN06C,EAAMx6C,IAEV,OAAKw6C,GACLvB,IAEOpyB,EAAI,CACT,KAAM,OACN,UAAW2zB,EACX,aAAchB,EAAc,CAClC,CAAK,GAPgBh3C,EAAM,kBAAkB,CAQ1C,CAED,OAAOw4C,GAAU9I,EAAU,CAAE,CAC/B,CAIA,SAASoH,GAAKlhD,EAAK,CACjB,OAAOA,EAAMA,EAAI,QAAQ,aAAc,EAAE,EAAI,EAC/C,CAKA,SAAS4iD,GAAU/5C,EAAKgE,EAAQ,CAC9B,IAAIg2C,EAASh6C,GAAO,OAAOA,EAAI,MAAS,SACpCi6C,EAAcD,EAASh6C,EAAMgE,EAEjC,QAASv/B,KAAKu7B,EAAK,CACjB,IAAItC,EAAQsC,EAAIv7B,CAAC,EACb,MAAM,QAAQi5B,CAAK,EACrBA,EAAM,QAAQ,SAAU5qB,EAAG,CACzBinE,GAAUjnE,EAAGmnE,CAAW,CAChC,CAAO,EACQv8C,GAAS,OAAOA,GAAU,UACnCq8C,GAAUr8C,EAAOu8C,CAAW,CAE/B,CAED,OAAID,GACF,OAAO,eAAeh6C,EAAK,SAAU,CACnC,aAAc,GACd,SAAU,GACV,WAAY,GACZ,MAAOgE,GAAU,IACvB,CAAK,EAGIhE,CACT,CCzlBsB,eAAAk6C,GAAOzhD,EAAgBoM,EAA0B,CAC9D,OAAA,IAAI,QAAqBvL,GAAY,CAC1C,MAAMyO,EAAW,IAAI,eAAgBoyC,GAAmC,CAGhE,MAAAlsB,EAAOx1B,EAAG,wBAChBoM,EAAGopB,CAAI,EACP30B,EAAQ,IAAM,CACZyO,EAAS,UAAUtP,CAAE,CAAA,CACtB,CAAA,CACF,EACDsP,EAAS,QAAQtP,CAAE,CAAA,CACpB,CACH,CAGO,SAAS2hD,GACd3hD,EAAiB,SAAS,gBAC1BI,EACqB,CACd,OAAA,IAAIsN,GAAY4B,GAAa,CAE5B,MAAAkmB,EAAOx1B,EAAG,wBAChB,IAAI4hD,EAAQpsB,EAAK,EACbqsB,EAAQrsB,EAAK,EACbssB,EAAYtsB,EAAK,MACjBusB,EAAavsB,EAAK,OACtBlmB,EAAS,KAAKkmB,CAAI,EAClB,MAAMrmC,EAAK,IAAI,eAAgBuyD,GAAmC,CAG1DlsB,MAAAA,EAAOx1B,EAAG,yBAEd4hD,GAASpsB,EAAK,GACdqsB,GAASrsB,EAAK,GACdssB,GAAatsB,EAAK,OAClBusB,GAAcvsB,EAAK,UAEnBosB,EAAQpsB,EAAK,EACbqsB,EAAQrsB,EAAK,EACbssB,EAAYtsB,EAAK,MACjBusB,EAAavsB,EAAK,OAClBlmB,EAAS,KAAKkmB,CAAI,EACpB,CACD,EACE,OAAArmC,EAAA,QAAQ6Q,EAAII,CAAO,EACf,IAAM,CACXjR,EAAG,UAAU6Q,CAAE,EACf7Q,EAAG,WAAW,CAAA,CAChB,CACD,CACH,CAEO,SAAS6yD,IAGb,CACM,OAAAxjC,GACL,OACA,sBAAuB,OAAS,oBAAsB,QAAA,EACtD,KACAtJ,GAAK7zC,IACI,CACL,MAAQA,EAAE,OAAkB,WAC5B,OAASA,EAAE,OAAkB,WAAA,EAEhC,EACDs6C,GAAU,CACR,MAAO,OAAO,WACd,OAAQ,OAAO,WAAA,CAChB,CAAA,CAEL,CC3EA,IAAIsmC,GAA2C,KAE3CC,GAA2D,KAE/D,SAASC,IAAa,CACpB,OAAIF,GACK,QAAQ,QAAQA,EAAM,GAE1BC,KACHA,GAAgB,QAAmB,QAAA,EAAA,KAAA,IAAAE,GAAA,EAAA,KAAM/0B,IACvC40B,GAAS50B,EAAI,SAAWA,EACjB40B,GACR,GAEIC,GACT,CAEO,SAASG,GAAcriD,EAAiB,CACtC,OAAA,IAAIsiD,GAAQtiD,CAAE,CACvB,CAEA,MAAMsiD,EAAQ,CAIZ,YAAoBtiD,EAAiB,CAAjB,KAAA,GAAAA,EAClB,KAAK,KAAK,CACZ,CALQ,SAAgB,KAChB,QAAiB,CAAA,EAMzB,MAAc,MAAO,CACbiiD,MAAAA,EAAS,MAAME,KACrB,KAAK,SAAW,IAAIF,EAAO,KAAK,EAAE,EAClC,KAAK,QAAQ,QAAQ,CAAC,CAAC9iC,EAAO/S,CAAE,IAAM,CAC/B,KAAA,SAAS,GAAG+S,EAAO/S,CAAE,CAAA,CAC3B,EACD,KAAK,QAAU,EACjB,CAEA,GAAG+S,EAAe/S,EAAsB,CAClC,KAAK,SACF,KAAA,SAAS,GAAG+S,EAAO/S,CAAE,EAE1B,KAAK,QAAQ,KAAK,CAAC+S,EAAO/S,CAAE,CAAC,CAEjC,CAEA,IAAI+S,EAAe/S,EAAsB,CAClC,KAAA,UAAU,IAAI+S,EAAO/S,CAAE,CAC9B,CAEA,SAAU,CACR,KAAK,QAAU,GACf,KAAK,UAAU,UACf,KAAK,SAAW,IAClB,CACF,CCRO,SAASm2C,IAA0B,CACxC,MACE,iBAAkB,QAClB,eAAgB,UAChB,UAAU,eAAiB,CAE/B,CAEO,SAASC,IAA4B,CAEnC,MAAA,CAAC,CAAC,OAAO,YAClB,CAOgB,SAAAC,GAAeC,EAAezqC,EAA4B,CACpE,IAAAjY,EAAK,SAAS,cAAc0iD,CAAQ,EACxCzqC,EAAY,KAAOA,EACnB,IAAI0qC,EAAc1qC,KAAajY,EAC/B,OAAK2iD,IACA3iD,EAAA,aAAaiY,EAAW,SAAS,EACtB0qC,EAAA,OAAO3iD,EAAGiY,CAAS,GAAK,YAEnCjY,EAAA,KACE2iD,CACT,CAaO,SAASC,IAA0B,CACjC,MAAA,CACL,EAAG,EACH,EAAG,EACH,OAAQ,EAAA,CAEZ,CAEO,SAASC,IAAmB,CACjC,MAAMC,EAA8BF,KAC9BG,EAAgCH,KAE/B,MAAA,CACL,MAAOE,EACP,QAASC,EAET,SAAU,SACR3oE,EACA4oE,EACA,CACAF,EAAgB,EAAI1oE,EAAE,EACtB0oE,EAAgB,EAAI1oE,EAAE,EACN0oE,EAAA,OACd,OAAOE,GAAU,UACbA,EACA,OAAO5oE,EAAE,QAAU,UACnBA,EAAE,OACF,GACD,KAAA,WAAWA,EAAG4oE,CAAM,CAC3B,EAEA,WAAY,CACV5oE,EACA4oE,IACG,CACHD,EAAkB,EAAI3oE,EAAE,EACxB2oE,EAAkB,EAAI3oE,EAAE,EACN2oE,EAAA,OAChB,OAAOC,GAAU,UACbA,EACA,OAAO5oE,EAAE,QAAU,UACnBA,EAAE,OACF,EACR,CAAA,CAEJ,CAKO,SAAS6oE,GACdjjD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,YAAaoe,CAAU,CACzD,CACO,SAAS8kC,GACdljD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,YAAaoe,CAAU,CACzD,CACO,SAAS+kC,GACdnjD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,UAAWoe,CAAU,CACvD,CACO,SAASglC,GACdpjD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,YAAaoe,CAAU,CACzD,CACO,SAASilC,GACdrjD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,WAAYoe,CAAU,CACxD,CACO,SAASklC,GACdtjD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,aAAcoe,CAAU,CAC1D,CACO,SAASmlC,GACdvjD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,aAAcoe,CAAU,CAC1D,CACO,SAASolC,GACdxjD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,QAASoe,CAAU,CACrD,CACO,SAASqlC,GACdzjD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,WAAYoe,CAAU,CACxD,CACO,SAASslC,GACd1jD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GACLxe,EACA,YAAa,SAAS,cAAc,KAAK,EACrC,QACA,SAAS,eAAiB,OAC1B,aACA,iBACJoe,CAAA,CAEJ,CACO,SAASulC,GACd3jD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,cAAeoe,CAAU,CAC3D,CAGO,SAASwlC,GACd5jD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,YAAaoe,CAAU,CACzD,CACO,SAASylC,GACd7jD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,aAAcoe,CAAU,CAC1D,CACO,SAAS0lC,GACd9jD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,WAAYoe,CAAU,CACxD,CACO,SAAS2lC,GACd/jD,EAA0B,SAAS,gBACnCoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,cAAeoe,CAAU,CAC3D,CAGO,SAAS4lC,GACdhkD,EAA0B,SAAS,gBACnCoe,EAAa,GACa,CACnB,OAAAI,GAAqBxe,EAAI,cAAeoe,CAAU,CAC3D,CACO,SAAS6lC,GACdjkD,EAA0B,SAAS,gBACnCoe,EAAa,GACa,CACnB,OAAAI,GAAqBxe,EAAI,cAAeoe,CAAU,CAC3D,CACO,SAAS8lC,GACdlkD,EAA0B,SAAS,gBACnCoe,EAAa,GACa,CACnB,OAAAI,GAAqBxe,EAAI,YAAaoe,CAAU,CACzD,CACO,SAAS+lC,GACdnkD,EAA0B,SAAS,gBACnCoe,EAAa,GACa,CACnB,OAAAI,GAAqBxe,EAAI,gBAAiBoe,CAAU,CAC7D,CAIgB,SAAAgmC,GACdpkD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,MAAO53C,CAAI,CACxB,EACCA,GAAS,CACA43C,EAAA,IAAI,MAAO53C,CAAI,CACzB,CAAA,CAWJ,CACgB,SAAA63C,GACdtkD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,UAAW53C,CAAI,CAC5B,EACCA,GAAS,CACA43C,EAAA,IAAI,UAAW53C,CAAI,EAC3B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAE,GACdvkD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,WAAY53C,CAAI,CAC7B,EACCA,GAAS,CACA43C,EAAA,IAAI,WAAY53C,CAAI,EAC5B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAG,GACdxkD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,SAAU53C,CAAI,CAC3B,EACCA,GAAS,CACA43C,EAAA,IAAI,SAAU53C,CAAI,EAC1B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAI,GACdzkD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,YAAa53C,CAAI,CAC9B,EACCA,GAAS,CACA43C,EAAA,IAAI,YAAa53C,CAAI,EAC7B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAK,GACd1kD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,UAAW53C,CAAI,CAC5B,EACCA,GAAS,CACA43C,EAAA,IAAI,UAAW53C,CAAI,EAC3B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAM,GACd3kD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,WAAY53C,CAAI,CAC7B,EACCA,GAAS,CACA43C,EAAA,IAAI,WAAY53C,CAAI,EAC5B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAO,GACd5kD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,QAAS53C,CAAI,CAC1B,EACCA,GAAS,CACA43C,EAAA,IAAI,QAAS53C,CAAI,EACzB43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAQ,GACd7kD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,UAAW53C,CAAI,CAC5B,EACCA,GAAS,CACA43C,EAAA,IAAI,UAAW53C,CAAI,EAC3B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CAEgB,SAAAS,GACd9kD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,QAAS53C,CAAI,CAC1B,EACCA,GAAS,CACA43C,EAAA,IAAI,QAAS53C,CAAI,EACzB43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAU,GACd/kD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,UAAW53C,CAAI,CAC5B,EACCA,GAAS,CACA43C,EAAA,IAAI,UAAW53C,CAAI,EAC3B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAW,GACdhlD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,WAAY53C,CAAI,CAC7B,EACCA,GAAS,CACA43C,EAAA,IAAI,WAAY53C,CAAI,EAC5B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CAEgB,SAAAY,GACdjlD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,QAAS53C,CAAI,CAC1B,EACCA,GAAS,CACA43C,EAAA,IAAI,QAAS53C,CAAI,EACzB43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CAEgB,SAAAa,GACdllD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,SAAU53C,CAAI,CAC3B,EACCA,GAAS,CACA43C,EAAA,IAAI,SAAU53C,CAAI,EAC1B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CAEgB,SAAAc,GACdnlD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,QAAS53C,CAAI,CAC1B,EACCA,GAAS,CACA43C,EAAA,IAAI,QAAS53C,CAAI,EACzB43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAe,GACdplD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,YAAa53C,CAAI,CAC9B,EACCA,GAAS,CACA43C,EAAA,IAAI,YAAa53C,CAAI,EAC7B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAgB,GACdrlD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,aAAc53C,CAAI,CAC/B,EACCA,GAAS,CACA43C,EAAA,IAAI,aAAc53C,CAAI,EAC9B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAiB,GACdtlD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,UAAW53C,CAAI,CAC5B,EACCA,GAAS,CACA43C,EAAA,IAAI,UAAW53C,CAAI,EAC3B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CACgB,SAAAkB,GACdvlD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,YAAa53C,CAAI,CAC9B,EACCA,GAAS,CACA43C,EAAA,IAAI,YAAa53C,CAAI,EAC7B43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CAEgB,SAAAmB,GACdxlD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAcriD,CAAE,EACzB,OAAA0Y,GACJjM,GAAS,CACA43C,EAAA,GAAG,MAAO53C,CAAI,CACxB,EACCA,GAAS,CACA43C,EAAA,IAAI,MAAO53C,CAAI,EACvB43C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CAEgB,SAAAoB,GACdzlD,EAA0B,SAAS,gBACV,CACnB,MAAAqkD,EAAUhC,GAAc,SAAS,eAAe,EAC/C,OAAA3pC,GACJjM,GAAS,CACF,MAAAZ,EAAWxqC,GAAmB,CAC9B,CAACA,EAAE,QAAU2+B,GAAM3+B,EAAE,QAAU2+B,EAAG,SAAS3+B,EAAE,MAAc,GAG/DorC,EAAKprC,CAAC,CAAA,EAEA,OAAAgjF,EAAA,GAAG,MAAOx4C,CAAO,EAClBA,CACT,EACA,CAACY,EAAMZ,IAAY,CACTw4C,EAAA,IAAI,MAAOx4C,CAAO,EAC1Bw4C,EAAQ,QAAQ,CAClB,CAAA,CAEJ,CAGO,SAASqB,GACd1lD,EAA0B,SAAS,gBACnCoe,EAAa,GACgB,CACtB,OAAAI,GAAqBxe,EAAI,kBAAmBoe,CAAU,CAC/D,CACO,SAASunC,GACd3lD,EAA0B,SAAS,gBACnCoe,EAAa,GACgB,CACtB,OAAAjF,GACLqF,GACExe,EACA,gBACAoe,CACF,EACAI,GACExe,EACA,sBACAoe,CACF,EACAI,GACExe,EACA,iBACAoe,CACF,EACAI,GACExe,EACA,kBACAoe,CACF,CAAA,CAEJ,CACO,SAASwnC,GACd5lD,EAA0B,SAAS,gBACnCoe,EAAa,GACgB,CACtB,OAAAI,GAAqBxe,EAAI,mBAAoBoe,CAAU,CAChE,CAGO,SAASynC,GACd7lD,EAA0B,SAAS,gBACnCoe,EAAa,GACe,CACrB,OAAAI,GAAqBxe,EAAI,iBAAkBoe,CAAU,CAC9D,CACO,SAAS0nC,GACd9lD,EAA0B,SAAS,gBACnCoe,EAAa,GACe,CACrB,OAAAI,GAAqBxe,EAAI,eAAgBoe,CAAU,CAC5D,CACO,SAAS2nC,GACd/lD,EAA0B,SAAS,gBACnCoe,EAAa,GACe,CACrB,OAAAI,GAAqBxe,EAAI,kBAAmBoe,CAAU,CAC/D,CAGO,SAAS4nC,GACdhmD,EAA0B,SAAS,gBACnCoe,EAAa,GACU,CAChB,OAAAI,GAAqBxe,EAAI,OAAQoe,CAAU,CACpD,CACO,SAAS6nC,GACdjmD,EAA0B,SAAS,gBACnCoe,EAAa,GACU,CAChB,OAAAI,GAAqBxe,EAAI,YAAaoe,CAAU,CACzD,CACO,SAAS8nC,GACdlmD,EAA0B,SAAS,gBACnCoe,EAAa,GACU,CAChB,OAAAI,GAAqBxe,EAAI,UAAWoe,CAAU,CACvD,CACO,SAAS+nC,GACdnmD,EAA0B,SAAS,gBACnCoe,EAAa,GACU,CAChB,OAAAI,GAAqBxe,EAAI,OAAQoe,CAAU,CACpD,CACO,SAASgoC,GACdpmD,EAA0B,SAAS,gBACnCoe,EAAa,GACU,CAChB,OAAAI,GAAqBxe,EAAI,YAAaoe,CAAU,CACzD,CACO,SAASioC,GACdrmD,EAA0B,SAAS,gBACnCoe,EAAa,GACU,CAChB,OAAAI,GAAqBxe,EAAI,YAAaoe,CAAU,CACzD,CACO,SAASkoC,GACdtmD,EAA0B,SAAS,gBACnCoe,EAAa,GACU,CAChB,OAAAI,GAAqBxe,EAAI,WAAYoe,CAAU,CACxD,CAGO,SAASmoC,GACdvmD,EAA0B,SAAS,gBACnCoe,EAAa,GACc,CACpB,OAAAI,GAAqBxe,EAAI,UAAWoe,CAAU,CACvD,CACO,SAASooC,GACdxmD,EAA0B,SAAS,gBACnCoe,EAAa,GACc,CACpB,OAAAI,GAAqBxe,EAAI,QAASoe,CAAU,CACrD,CACO,SAASqoC,GACdzmD,EAA0B,SAAS,gBACnCoe,EAAa,GACc,CACpB,OAAAI,GAAqBxe,EAAI,WAAYoe,CAAU,CACxD,CAkBgB,SAAAsoC,GACd1mD,EACAoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,SAAUoe,CAAU,CACtD,CAEgB,SAAAuoC,GACd3mD,EACAoe,EAAa,GACW,CACjB,OAAAI,GAAqBxe,EAAI,SAAUoe,CAAU,CACtD,CAKgB,SAAAwoC,GAAQte,EAAO,GAAuB,CAG7C,OAAA9pB,GAAqB,OAAQ,SAAU,EAAI,EAAE,KAAKvB,GAAaqrB,CAAI,CAAC,CAC7E,CAEO,SAASue,IAAwC,CACtD,OAAOroC,GAAqB,SAAU,mBAAoB,EAAI,EAAE,KAC9DtJ,GAAI,IAEK,SAAS,kBAAoB,SACrC,EACDyE,GAAqB,CAAA,CAYzB,CAGO,SAASmtC,IAA0C,CACjD,OAAAtoC,GAAmC,OAAQ,UAAW,EAAK,CACpE,CAEO,SAASuoC,IAA2C,CAClD,OAAA5tC,GACLqF,GAA4B,OAAQ,SAAU,EAAK,EACnDA,GAA4B,OAAQ,UAAW,EAAK,CAAA,EACpD,KACAtJ,GAAI,IAAM,UAAU,MAAM,EAC1ByG,GAAU,UAAU,MAAM,EAC1BhC,GAAqB,EACrB4B,GAAY,CACV,WAAY,EACZ,SAAU,EAAA,CACX,CAAA,CAEL,CAEO,SAASyrC,IAA+C,CACtD,OAAAxoC,GAAwC,OAAQ,eAAgB,EAAK,CAC9E,CAUO,SAASyoC,GACdjnD,EAAkB,SAAS,gBAC3BI,EAC6B,CACvB,MAAA8mD,EAAM9mD,GAAS,kBAAoByiD,GAAiB,EACnD,OAAAI,GAAWjjD,CAAE,EAAE,KACpBkV,GAAK7zC,IACH6lF,EAAI,WAAWC,GAA0B9lF,EAAG2+B,CAAE,CAAC,EACxCknD,EACR,CAAA,CAEL,CAEO,SAASE,GACdpnD,EAAkB,SAAS,gBAC3BI,EAC6B,CACvB,MAAA8mD,EAAM9mD,GAAS,kBAAoByiD,GAAiB,EACnD,OAAAI,GAAWjjD,CAAE,EAAE,KACpBod,GACE8lC,GAAWljD,CAAE,EAAE,KACbmc,GAAK96C,GAAM,CACT6lF,EAAI,SAASC,GAA0B9lF,EAAG2+B,CAAE,EAAG,EAAI,EAC1CI,GAAA,QAAQ/+B,EAAG6lF,CAAG,CAAA,CACxB,CACH,EACA,IACE/D,GAASnjD,CAAE,EAAE,KACXmc,GAAK96C,GAAM,CACT6lF,EAAI,WAAWC,GAA0B9lF,EAAG2+B,CAAE,EAAG,EAAK,EAC7CI,GAAA,MAAM/+B,EAAG6lF,CAAG,CAAA,CACtB,CACH,CACJ,EACAlrC,GAAU,EACV9G,GAAK7zC,IACH6lF,EAAI,WAAWC,GAA0B9lF,EAAG2+B,CAAE,EAAG,EAAI,EAC9CknD,EACR,CAAA,CAEL,CAEO,SAASG,GACdrnD,EAAkB,SAAS,gBAC3BI,EAC6B,CACvB,MAAA8mD,EAAM9mD,GAAS,kBAAoByiD,GAAiB,EACnD,OAAAgB,GAAY7jD,CAAE,EAAE,KACrBmc,GAAK96C,GAAM,CACH,MAAAo+C,EAAQp+C,EAAE,eAAe,CAAC,EAChC6lF,EAAI,SAASC,GAA0B1nC,EAAOzf,CAAE,EAAG,EAAI,EAC9CI,GAAA,QAAQqf,EAAOynC,CAAG,CAAA,CAC5B,EACDtrC,GAAU,IACRgoC,GAAW5jD,CAAE,EAAE,KACbic,GACEzC,GAAKsqC,GAAU9jD,CAAE,EAAG+jD,GAAa/jD,CAAE,CAAC,EAAE,KACpCmc,GAAK96C,GAAM,CACH,MAAAo+C,EAAQp+C,EAAE,eAAe,CAAC,EAChC6lF,EAAI,WAAWC,GAA0B1nC,EAAOzf,CAAE,EAAG,EAAK,EACjDI,GAAA,MAAMqf,EAAOynC,CAAG,CAAA,CAC1B,CACH,CACF,CACF,CACF,EACAhyC,GAAK7zC,GAAM,CACH,MAAAo+C,EAAQp+C,EAAE,eAAe,CAAC,EAChC,OAAA6lF,EAAI,WAAWC,GAA0B1nC,EAAOzf,CAAE,EAAG,EAAI,EAClDknD,CAAA,CACR,CAAA,CAEL,CAGO,SAASI,GACdtnD,EAAkB,SAAS,gBAC3BI,EAC6B,CACvB,MAAA8mD,EAAM9mD,GAAS,kBAAoByiD,GAAiB,EACnD,OAAAoB,GAAajkD,CAAE,EAAE,KACtBmc,GAAK96C,GAAM,CACT6lF,EAAI,SAASC,GAA0B9lF,EAAG2+B,CAAE,EAAG,EAAI,EAC1CI,GAAA,QAAQ/+B,EAAG6lF,CAAG,CAAA,CACxB,EACDtrC,GAAU,IACRooC,GAAahkD,CAAE,EAAE,KACfic,GACEzC,GAAK0qC,GAAWlkD,CAAE,EAAGmkD,GAAenkD,CAAE,CAAC,EAAE,KACvCmc,GAAK96C,GAAM,CACT6lF,EAAI,WAAWC,GAA0B9lF,EAAG2+B,CAAE,EAAG,EAAK,EAC7CI,GAAA,MAAM/+B,EAAG6lF,CAAG,CAAA,CACtB,CACH,CACF,CACF,CACF,EACAhyC,GAAK7zC,IACH6lF,EAAI,WAAWC,GAA0B9lF,EAAG2+B,CAAE,EAAG,EAAI,EAC9CknD,EACR,CAAA,CAEL,CAGO,SAASK,GACdvnD,EAAkB,SAAS,gBAC3BI,EAC6B,CACtB,OAAAoZ,GACL4tC,GAAoBpnD,EAAII,CAAO,EAC/BinD,GAAoBrnD,EAAII,CAAO,CAAA,CAGnC,CAEO,SAASonD,GACdxnD,EAAkB,SAAS,gBAC3BI,EAC6B,CACvB,MAAA8mD,EAAM9mD,GAAS,kBAAoByiD,GAAiB,EAC1D,OAAO1pC,GAAM8pC,GAAWjjD,CAAE,EAAGikD,GAAajkD,CAAE,CAAC,EAAE,KAC7Cia,GAAY54C,GACNA,aAAa,cAEf6lF,EAAI,SAASC,GAA0B9lF,EAAG2+B,CAAE,EAAG,EAAI,EAC1CI,GAAA,QAAQ/+B,EAAG6lF,CAAG,EAChBlD,GAAahkD,CAAE,EAAE,KACtBic,GACEzC,GAAK0qC,GAAWlkD,CAAE,EAAGmkD,GAAenkD,CAAE,CAAC,EAAE,KACvCmc,GAAK96C,GAAM,CACT6lF,EAAI,WAAWC,GAA0B9lF,EAAG2+B,CAAE,EAAG,EAAK,EAC7CI,GAAA,MAAM/+B,EAAG6lF,CAAG,CAAA,CACtB,CACH,CACF,CAAA,GAEO7lF,aAAa,WAEfwzC,GAAGxzC,CAAC,EAEJuwC,EAEV,EACDsD,GAAK7zC,IACC6lF,EAAA,WACFC,GAA0B9lF,EAAG2+B,CAAE,EAC/B3+B,aAAa,YAAA,EAER6lF,EACR,CAAA,CAEL,CAMO,SAASO,GAAMznD,EAAqC,CAClD,OAAA,IAAI0N,GAAoB4B,GACRg4C,GAAsBtnD,EAAI,CAC7C,MAAO,IAAM,CACXsP,EAAS,KAAK,CAAC,CACjB,CAAA,CACD,EAAE,UAAW43C,GAAQ,CACpB53C,EAAS,KAAK43C,EAAI,QAAQ,EAAIA,EAAI,MAAM,CAAC,CAAA,CAC1C,EACmB,WACrB,EAAE,KAAKvtC,GAAA,CAAsB,CAChC,CAGgB,SAAA+tC,GACd1nD,EACAI,EAKY,CACOsH,GAAA1H,EAAI,YAAa,MAAM,EAE1C,MAAM2nD,EAAwB1B,GAAWjmD,EAAI,EAAI,EAAE,UAChD3+B,GAAiB,CAChBs9C,GAAet9C,CAAC,EAChBq9C,GAAgBr9C,CAAC,EACjB,MAAM0b,EAAK1b,EAAE,aACT0b,IACFA,EAAG,cAAgB,OAEhBA,EAAA,QAAQ,aAAc,WAAW,GAMtCqjB,GAAS,UAAU/+B,CAAC,CACtB,CAAA,EAGIumF,EAAmB5B,GAAMhmD,CAAE,EAAE,UAAW3+B,GAAiB,CAC7Ds9C,GAAet9C,CAAC,EAChB++B,GAAS,SAAS/+B,CAAC,CAAA,CACpB,EAEKwmF,EAAsB3B,GAASlmD,CAAE,EAAE,UAAW3+B,GAAiB,CACnEs9C,GAAet9C,CAAC,EAChB++B,GAAS,QAAQ/+B,CAAC,CAAA,CACnB,EAED,MAAO,IAAM,CACXsmF,EAAsB,YAAY,EAClCC,EAAiB,YAAY,EAC7BC,EAAoB,YAAY,CAAA,CAEpC,CAGgB,SAAAC,GACd9nD,EACAI,EAMY,CACZ,MAAM2nD,EAAwB3B,GAAWpmD,CAAE,EAAE,UAAW3+B,GAAiB,CACvEs9C,GAAet9C,CAAC,EAChB++B,GAAS,UAAU/+B,CAAC,CAAA,CACrB,EAEK2mF,EAAuB1B,GAAUtmD,CAAE,EAAE,UAAW3+B,GAAiB,CACrEs9C,GAAet9C,CAAC,EAChB,MAAM0b,EAAK1b,EAAE,aACT0b,IACFA,EAAG,WAAa,QAElBqjB,GAAS,SAAS/+B,CAAC,CAAA,CACpB,EAEK4mF,EAAwB5B,GAAWrmD,CAAE,EAAE,UAAW3+B,GAAiB,CACvEs9C,GAAet9C,CAAC,EAChB++B,GAAS,UAAU/+B,CAAC,CAAA,CACrB,EAEK6mF,EAAmB/B,GAAMnmD,CAAE,EAAE,UAAW3+B,GAAiB,CAC7Ds9C,GAAet9C,CAAC,EAChB,MAAM0b,EAAK1b,EAAE,aACb,GAAI,CAAC0b,EAAI,CACEqjB,GAAA,SAAS/+B,EAAG,CAAA,CAAE,EACvB,MACF,CACA++B,GAAS,SAAS/+B,EAAG,CAAC,GAAG0b,EAAG,KAAK,CAAC,CAAA,CAqBnC,EAED,MAAO,IAAM,CACXgrE,EAAsB,YAAY,EAClCC,EAAqB,YAAY,EACjCC,EAAsB,YAAY,EAClCC,EAAiB,YAAY,CAAA,CAEjC,CAIO,SAASC,IAAY,CACnB,MAAA,CACL,YAAa,OAAO,OAAO,MAC3B,aAAc,OAAO,OAAO,OAC5B,WAAY,OAAO,WACnB,YAAa,OAAO,YACpB,QAAS,OAAO,QAChB,QAAS,OAAO,QAChB,YAAa,OAAO,YACpB,YAAa,OAAO,WAAA,CAExB,CAKO,SAASC,IAAqB,CAC7B,MAAApoD,EAAK,SAAS,iBAAmB,SAAS,KAOzC,MAAA,CACL,GAAAA,EAGA,YAAaA,EAAG,YAChB,aAAcA,EAAG,aACjB,UAAWA,EAAG,UACd,WAAYA,EAAG,WAWf,YAAaA,EAAG,YAChB,aAAcA,EAAG,aACjB,UAAWA,EAAG,UACd,WAAYA,EAAG,WAGf,YAAaA,EAAG,YAChB,aAAcA,EAAG,aACjB,UAAWA,EAAG,UACd,WAAYA,EAAG,WAEf,aAAcA,EAAG,YAAA,CAErB,CAGO,SAASqoD,IAAc,CAC5B,KAAM,CAAE,YAAAC,EAAa,aAAAC,EAAc,WAAAC,EAAY,UAAAC,CAAA,EAC7CL,KACK,MAAA,CACL,MAAO,OAAO,YAAcE,EAC5B,OAAQ,OAAO,aAAeC,EAC9B,EAAG,OAAO,aAAeC,EACzB,EAAG,OAAO,aAAeC,CAAA,CAE7B,CAGO,SAASC,IAAU,CACxB,KAAM,CAAE,YAAAC,EAAa,aAAAC,EAAc,WAAAJ,EAAY,UAAAC,CAAA,EAC7CL,KACK,MAAA,CACL,MAAOO,EACP,OAAQC,EACR,QAAS,OAAO,aAAeJ,EAC/B,QAAS,OAAO,aAAeC,CAAA,CAEnC,CAEO,SAASI,GAA6B7oD,EAAiB,CAC5D,OAAOA,EAAG,uBACZ,CAEO,SAAS8oD,GAA8B1O,EAAoB,CACzD,MAAA,CACL,EAAGA,EAAM,WACT,EAAGA,EAAM,UACT,MAAOA,EAAM,YACb,OAAQA,EAAM,YAAA,CAElB,CAEO,SAAS2O,GACd/oD,EACA,CACA,KAAM,CAAE,IAAAykB,EAAK,KAAAC,EAAM,MAAAlD,EAAO,OAAAC,GAAWzhB,EAAG,wBAClC,CAAE,WAAAwoD,EAAY,UAAAC,CAAU,EAAIL,GAAmB,EAC9C,MAAA,CACL,EAAG1jC,EAAO8jC,EACV,EAAG/jC,EAAMgkC,EACT,MAAAjnC,EACA,OAAAC,CAAA,CAEJ,CAEO,SAASunC,GAA0BhpD,EAAiB,CACzD,IAAIipD,EAA2BjpD,EAC3BkpD,EAAa,EACbC,EAAY,EAChB,KAAOF,IAAS,MACdC,GAAcD,EAAK,WACnBE,GAAaF,EAAK,UACdA,EAAK,wBAAwB,YAC/BA,EAAOA,EAAK,aAELA,EAAA,KAGJ,MAAA,CACL,EAAGC,EACH,EAAGC,EACH,MAAOnpD,EAAG,YACV,OAAQA,EAAG,YAAA,CAEf,CAEO,SAASopD,IAAoC,CAClD,KAAM,CAAE,aAAAb,EAAc,UAAAE,EAAW,aAAAG,GAAiBR,GAAmB,EAC/D3mC,EAASmnC,EAAeL,EAEvB,OADS9mC,GAAU,EAAI,EAAKgnC,EAAYhnC,EAAU,GAE3D,CAGO,SAAS4nC,GAAarpD,EAA0B,CACrD,MAAMspD,EAAWjB,KACX7yB,EAAOqzB,GAA6B7oD,CAAE,EAC5C,OACEw1B,EAAK,QAAU,GACfA,EAAK,KAAO8zB,EAAS,QACrB9zB,EAAK,OAAS,GACdA,EAAK,MAAQ8zB,EAAS,KAE1B,CAoDO,SAASC,GAA2BC,EAAqB,CAC9D,GAAI,WAAYA,EAAI,CAClB,MAAM95B,EAAU85B,EAAmB,OAC7Bh0B,EAAOqzB,GAA6BW,EAAG,MAAM,EAC5C,MAAA,CACL,EAAG95B,EAAO,EAAI8F,EAAK,EACnB,EAAG9F,EAAO,EAAI8F,EAAK,CAAA,CAEvB,CACO,MAAA,CACL,EAAGg0B,EAAG,QACN,EAAGA,EAAG,OAAA,CAEV,CAEO,SAASC,GAAuBD,EAAqB,CAC1D,GAAI,WAAYA,EACd,OAAQA,EAAmB,OAE7B,GAAI,OAAOA,EAAG,OAAS,UAAY,OAAOA,EAAG,OAAS,SAC7C,MAAA,CACL,EAAGA,EAAG,MACN,EAAGA,EAAG,KAAA,EAGV,KAAM,CAAE,WAAAhB,EAAY,UAAAC,CAAU,EAAIL,GAAmB,EAC9C,MAAA,CACL,EAAGoB,EAAG,QAAUhB,EAChB,EAAGgB,EAAG,QAAUf,CAAA,CAEpB,CAEgB,SAAAtB,GACdqC,EACAxlD,EACA,CACA,MAAMn7B,EAAI,CACR,EAAG,EACH,EAAG,CAAA,EAEL,GAAKm7B,EA4BE,CACC,MAAA+nC,EAAQ0d,GAAuBD,CAAE,EACjCpvE,EAAI2uE,GAAyB/kD,CAAO,EACxCn7B,EAAA,EAAIm1B,GAAM+tC,EAAM,EAAI3xD,EAAE,EAAG,EAAGA,EAAE,KAAK,EACnCvR,EAAA,EAAIm1B,GAAM+tC,EAAM,EAAI3xD,EAAE,EAAG,EAAGA,EAAE,MAAM,CACxC,KAjCc,CAEZ,IAAIsvE,EAAe,EACfC,EAAe,EAEjB,GAAA,kBAAmBH,GACnBA,EAAG,eACHA,EAAG,QACHA,EAAG,eAAiBA,EAAG,OAGvB,CACM,MAAAI,EACJJ,EAAG,cACH,sBAAsB,EAClBK,EAAcL,EAAG,OAAsB,sBAAsB,EACpDE,EAAAG,EAAW,KAAOD,EAAkB,KACpCD,EAAAE,EAAW,IAAMD,EAAkB,GACpD,CACA,GAAI,YAAaJ,EACb3gF,EAAA,EAAI2gF,EAAG,QAAUE,EACjB7gF,EAAA,EAAI2gF,EAAG,QAAUG,MACd,CACC,MAAA5d,EAAQ0d,GAAuBD,CAAE,EACjCpvE,EAAI2uE,GAAyBS,EAAG,MAAoB,EACxD3gF,EAAA,EAAIm1B,GAAM+tC,EAAM,EAAI3xD,EAAE,EAAIsvE,EAAc,EAAGtvE,EAAE,KAAK,EAClDvR,EAAA,EAAIm1B,GAAM+tC,EAAM,EAAI3xD,EAAE,EAAIuvE,EAAc,EAAGvvE,EAAE,MAAM,CACvD,CAAA,CAOK,OAAAvR,CACT,CAQO,SAASihF,GAAoBzoF,EAAQ,CAC1C,IAAI0oF,EAAQ,EACZ,OAAK1oF,IAAiBA,EAAI,OAAO,OAC7BA,EAAE,YAEJ0oF,EAAQ1oF,EAAE,WAAa,IAGlB,OAAe,QAClB0oF,EAAQ,CAACA,IAEF1oF,EAAE,SAKH0oF,EAAA,CAAC1oF,EAAE,OAAS,GAEf0oF,CACT,CAOO,SAASC,GAAe7qC,EAAmB,CAChD,GAAI,SAAS,eAAe,WAAW,cAAe,KAAK,EACzD,OAAOA,EAAM,OAEb,OAAQA,EAAM,OAAQ,CACpB,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACI,MAAA,GACT,IAAK,GACL,IAAK,GACI,MAAA,GACT,IAAK,GACI,MAAA,EACX,CAEJ,CAIO,MAAM8qC,GAAgB,CAC3B,UAAW,EACX,IAAK,EACL,MAAO,IACP,OAAQ,GACR,IAAK,GACL,MAAO,GACP,OAAQ,GACR,KAAM,GACN,KAAM,GACN,GAAI,GACJ,KAAM,GACN,UAAW,GACX,QAAS,GACT,OAAQ,IACR,MAAO,GACP,MAAO,EACT,EAmFO,SAASC,GAAW7oF,EAAkB,CAC3C,GAAIA,EAAE,IACJ,OAAOA,EAAE,IACX,GAAWA,EAAE,QACX,OAAOA,EAAE,QACX,GAAWA,EAAE,MACX,OAAOA,EAAE,KAEb,CAYA,SAAS8oF,GACPhrC,EACA/e,EACS,CACH,MAAAgqD,EAAUhqD,EAAQ,MAAQ,GAC1BiqD,EAAWjqD,EAAQ,OAAS,GAC5BkqD,EAASlqD,EAAQ,KAAO,GAE3B,OAAAgqD,IAAYjrC,EAAM,SAAWirC,IAAYjrC,EAAM,UAChDkrC,IAAalrC,EAAM,UACnBmrC,IAAWnrC,EAAM,QACjB/e,EAAQ,KAAK,IAAKp0B,GAAMA,EAAE,aAAa,EAAE,SAASmzC,EAAM,IAAI,YAAa,CAAA,CAE7E,CAMO,SAASorC,GAAYnqD,EAA0C,CACpE,OAAOmmD,GAASnmD,EAAQ,QAAU,UAAY,MAAM,EAAE,KACpDkZ,GAAQ,GAAqB6wC,GAAkB,EAAG/pD,CAAO,CAAC,EAC1D8U,GAAK,GAAqB,CACxB,EAAE,gBAAgB,EAClB,EAAE,eAAe,CACjB,CACD,CAAA,CAEL,CAGO,SAASs1C,GAAUpqD,EAA0C,CAClE,OAAOomD,GAAOpmD,EAAQ,QAAU,UAAY,MAAM,EAAE,KAClDkZ,GAAQ,GAAqB6wC,GAAkB,EAAG/pD,CAAO,CAAC,EAC1D8U,GAAK,GAAqB,CACxB,EAAE,gBAAgB,EAClB,EAAE,eAAe,CACjB,CACD,CAAA,CAEL,CAGgB,SAAAu1C,GACdC,EAA+B,CAAE,KAAM,CAAC,GAAG,GAC3CxqD,EAAwCe,GAAgC,KACxE,CACO,OAAAspD,GAAYG,CAAa,EAAE,KAEhC9uC,GAAU,SACD,MAAMm9B,GAAW74C,CAAI,CAC7B,CAAA,CAML,CAGsB,eAAAyqD,GACpBD,EAA+B,CAAE,KAAM,CAAC,GAAG,GAC3CxqD,EAAwCe,GAAgC,KACxE,CACA,OAAO8T,GAAe01C,GAAYC,EAAexqD,CAAI,CAAC,CACxD,CCpiDA,SAAS2iD,IAAmB,CAC1B,MAAMC,EAA8B,CAClC,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,QAAS,EACT,QAAS,EACT,OAAQ,EAAA,EAGJC,EAAgC,CACpC,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,QAAS,EACT,QAAS,EACT,OAAQ,EAAA,EAGH,MAAA,CACL,WAAYA,EAEZ,mBAAoB,SAClB3oE,EACA4oE,EACA,CACAF,EAAgB,EAAI1oE,EAAE,EACtB0oE,EAAgB,EAAI1oE,EAAE,EACtB0oE,EAAgB,OAAS,OAAOE,GAAU,UAAYA,EAAS,GAC1D,KAAA,qBAAqB5oE,EAAG4oE,CAAM,CACrC,EAEA,qBAAsB,CAAC5oE,EAA6B4oE,IAAqB,CACvE,MAAMpB,EAAQmB,EAAkB,EAC1BlB,EAAQkB,EAAkB,EAChCA,EAAkB,EAAI3oE,EAAE,EACxB2oE,EAAkB,EAAI3oE,EAAE,EACN2oE,EAAA,GAAKA,EAAkB,EAAInB,EAC3BmB,EAAA,GAAKA,EAAkB,EAAIlB,EAC3BkB,EAAA,QAAUA,EAAkB,EAAID,EAAgB,EAChDC,EAAA,QAAUA,EAAkB,EAAID,EAAgB,EAClEC,EAAkB,OAAS,OAAOC,GAAU,UAAYA,EAAS,EACnE,CAAA,CAEJ,CA2EgB,SAAA4H,GACd5qD,EAAkB,SAAS,gBAC3B,CACM,MAAA6qD,EAAK,IAAIpf,GACT4Y,EAAUhC,GAAcriD,CAAE,EAChC,IAAI8qD,EAA0B,CAAA,EAE9B,MAAMC,EAAMlI,KACNmI,EAAaD,EAAI,WAEjBE,EAAa5pF,GAAkB,CAGhCwpF,EAAA,KAAK,YAAaxpF,CAAC,CAAA,EAElB6pF,EAAW7pF,GAAkB,CAG9BwpF,EAAA,KAAK,UAAWxpF,CAAC,CAAA,EAEhB8pF,EAAa9pF,GAAkB,CAC9B2pF,EAAW,QACdD,EAAI,qBAAqB5D,GAA0B9lF,EAAG2+B,CAAE,CAAC,EAExD6qD,EAAA,KAAK,YAAaxpF,CAAC,CAAA,EAIlB+pF,EAAa/pF,GAAkB,CAChCwpF,EAAA,KAAK,YAAaxpF,CAAC,CAAA,EAElBgqF,EAAYhqF,GAAkB,CAC/BwpF,EAAA,KAAK,WAAYxpF,CAAC,CAAA,EAEjBiqF,EAAcjqF,GAAkB,CACjCwpF,EAAA,KAAK,aAAcxpF,CAAC,CAAA,EAEnBkqF,EAAclqF,GAAkB,CACjCwpF,EAAA,KAAK,aAAcxpF,CAAC,CAAA,EAEnBmqF,EAAcnqF,GAAkB,CACjCwpF,EAAA,KAAK,aAAcxpF,CAAC,CAAA,EAEnBoqF,EAAoBpqF,GAAkB,CACvCwpF,EAAA,KAAK,mBAAoBxpF,CAAC,CAAA,EAEzBqqF,EAAcrqF,GAAkB,CAEjCwpF,EAAA,KAAK,aAAcxpF,CAAC,CAAA,EAEnBsqF,EAAoBtqF,GAAkB,CACvCwpF,EAAA,KAAK,mBAAoBxpF,CAAC,CAAA,EAGzBuqF,EAAcvqF,GAAkB,CAEjCwpF,EAAA,KAAK,aAAcxpF,CAAC,CAAA,EAEnBwqF,EAAYxqF,GAAkB,CAE/BwpF,EAAA,KAAK,WAAYxpF,CAAC,CAAA,EAEjByqF,EAAezqF,GAAkB,CAElCwpF,EAAA,KAAK,cAAexpF,CAAC,CAAA,EAEpB0qF,EAAa1qF,GAAkB,CAE7B,MAAAo+C,GAAQp+C,EAAE,eAAe,CAAC,EAC3B2pF,EAAW,QACdD,EAAI,qBAAqB5D,GAA0B1nC,GAAOzf,CAAE,CAAC,EAE5D6qD,EAAA,KAAK,YAAaxpF,CAAC,CAAA,EAGlB2qF,EAAe3qF,GAAoB,CAEpCwpF,EAAA,KAAK,cAAexpF,CAAC,CAAA,EAEpB4qF,EAAa5qF,GAAoB,CAElCwpF,EAAA,KAAK,YAAaxpF,CAAC,CAAA,EAElB6qF,EAAiB7qF,GAAoB,CAEtCwpF,EAAA,KAAK,gBAAiBxpF,CAAC,CAAA,EAEtB8qF,EAAe9qF,GAAoB,CACpCwpF,EAAA,KAAK,cAAexpF,CAAC,CAAA,EAGpB+qF,EAAO/qF,GAAmB,CAC3BwpF,EAAA,KAAK,MAAOxpF,CAAC,CAAA,EAEZgrF,EAAYhrF,GAAmB,CAChCwpF,EAAA,KAAK,WAAYxpF,CAAC,CAAA,EAEjBirF,EAAWjrF,GAAmB,CAC/BwpF,EAAA,KAAK,UAAWxpF,CAAC,CAAA,EAEhBkrF,EAAUlrF,GAAmB,CAC9BwpF,EAAA,KAAK,SAAUxpF,CAAC,CAAA,EAEfmrF,EAAanrF,GAAmB,CACjCwpF,EAAA,KAAK,YAAaxpF,CAAC,CAAA,EAElBorF,GAAWprF,GAAmB,CAC/BwpF,EAAA,KAAK,UAAWxpF,CAAC,CAAA,EAEhBqrF,GAAYrrF,GAAmB,CAChCwpF,EAAA,KAAK,WAAYxpF,CAAC,CAAA,EAEjBsrF,GAAStrF,GAAmB,CAC7BwpF,EAAA,KAAK,QAASxpF,CAAC,CAAA,EAEdurF,GAAWvrF,GAAmB,CAC/BwpF,EAAA,KAAK,UAAWxpF,CAAC,CAAA,EAGhBwrF,GAASxrF,GAAmB,CAC7BwpF,EAAA,KAAK,QAASxpF,CAAC,CAAA,EAEdyrF,EAAWzrF,GAAmB,CAC/BwpF,EAAA,KAAK,UAAWxpF,CAAC,CAAA,EAEhB0rF,EAAY1rF,GAAmB,CAChCwpF,EAAA,KAAK,WAAYxpF,CAAC,CAAA,EAGjB2rF,EAAS3rF,GAAmB,CAC7BwpF,EAAA,KAAK,QAASxpF,CAAC,CAAA,EAGdi9D,EAAUj9D,GAAmB,CAC9BwpF,EAAA,KAAK,SAAUxpF,CAAC,CAAA,EAGf4rF,EAAS5rF,GAAmB,CAC7BwpF,EAAA,KAAK,QAASxpF,CAAC,CAAA,EAEd6rF,EAAa7rF,GAAmB,CACjCwpF,EAAA,KAAK,YAAaxpF,CAAC,CAAA,EAElB8rF,GAAc9rF,GAAmB,CAClCwpF,EAAA,KAAK,aAAcxpF,CAAC,CAAA,EAEnB+rF,GAAW/rF,GAAmB,CAC/BwpF,EAAA,KAAK,UAAWxpF,CAAC,CAAA,EAEhBgsF,GAAahsF,GAAmB,CACjCwpF,EAAA,KAAK,YAAaxpF,CAAC,CAAA,EAGlB86C,GAAO96C,GAAmB,CAC3BwpF,EAAA,KAAK,MAAOxpF,CAAC,CAAA,EAGZisF,GAAcjsF,GAAa,CAC3B,CAACA,EAAE,QAAU2+B,GAAM3+B,EAAE,QAAU2+B,EAAG,SAAS3+B,EAAE,MAAc,GAG5DwpF,EAAA,KAAK,aAAcxpF,CAAC,CAAA,EAGnBksF,GAAmBlsF,GAAuB,CAC3CwpF,EAAA,KAAK,kBAAmBxpF,CAAC,CAAA,EAExBmsF,GAAiBnsF,GAAuB,CACzCwpF,EAAA,KAAK,gBAAiBxpF,CAAC,CAAA,EAEtBosF,GAAkBpsF,GAAsB,CACzCwpF,EAAA,KAAK,iBAAkBxpF,CAAC,CAAA,EAEvBqsF,GAAgBrsF,GAAsB,CACvCwpF,EAAA,KAAK,eAAgBxpF,CAAC,CAAA,EAG3B,IAAIssF,GAAQ,CACV,GAAG3tD,EAAG,sBAAsB,EAC5B,MAAOA,EAAG,YACV,OAAQA,EAAG,YAAA,EAGN,MAAA,CACL,GAAAA,EACA,IAAI,MAAO,CACF,OAAA2tD,EACT,EACA,WAAA3C,EACA,GAAAH,EACA,MAAO,gBAAkB,CACvBC,EAAQ,KAAK3sC,GAAoBne,EAAI,YAAairD,CAAS,CAAC,EAC5DH,EAAQ,KAAK3sC,GAAoBne,EAAI,UAAWkrD,CAAO,CAAC,EACxDJ,EAAQ,KAAK3sC,GAAoBne,EAAI,YAAamrD,CAAS,CAAC,EAC5DL,EAAQ,KAAK3sC,GAAoBne,EAAI,YAAaorD,CAAS,CAAC,EAC5DN,EAAQ,KAAK3sC,GAAoBne,EAAI,WAAYqrD,CAAQ,CAAC,EAC1DP,EAAQ,KAAK3sC,GAAoBne,EAAI,aAAcsrD,CAAU,CAAC,EAC9DR,EAAQ,KAAK3sC,GAAoBne,EAAI,aAAcurD,CAAU,CAAC,EAC9DT,EAAQ,KAAK3sC,GAAoBne,EAAI,QAASwrD,CAAU,CAAC,EACzDV,EAAQ,KAAK3sC,GAAoBne,EAAI,WAAYyrD,CAAgB,CAAC,EAC1DX,EAAA,KACN3sC,GACEne,EACA,YAAa,SAAS,cAAc,KAAK,EACrC,QACA,SAAS,eAAiB,OAC1B,aACA,iBACJ0rD,CACF,CAAA,EAEFZ,EAAQ,KAAK3sC,GAAoBne,EAAI,cAAe2rD,CAAgB,CAAC,EAErEb,EAAQ,KAAK3sC,GAAoBne,EAAI,aAAc4rD,CAAU,CAAC,EAC9Dd,EAAQ,KAAK3sC,GAAoBne,EAAI,WAAY6rD,CAAQ,CAAC,EAC1Df,EAAQ,KAAK3sC,GAAoBne,EAAI,cAAe8rD,CAAW,CAAC,EAChEhB,EAAQ,KAAK3sC,GAAoBne,EAAI,YAAa+rD,CAAS,CAAC,EAE5DjB,EAAQ,KAAK3sC,GAAoBne,EAAI,cAAegsD,CAAW,CAAC,EAChElB,EAAQ,KAAK3sC,GAAoBne,EAAI,YAAaisD,CAAS,CAAC,EAC5DnB,EAAQ,KAAK3sC,GAAoBne,EAAI,gBAAiBksD,CAAa,CAAC,EACpEpB,EAAQ,KAAK3sC,GAAoBne,EAAI,cAAemsD,CAAW,CAAC,EAExD9H,EAAA,GAAG,MAAO+H,CAAG,EACb/H,EAAA,GAAG,WAAYgI,CAAQ,EACvBhI,EAAA,GAAG,UAAWiI,CAAO,EACrBjI,EAAA,GAAG,SAAUkI,CAAM,EACnBlI,EAAA,GAAG,YAAamI,CAAS,EACzBnI,EAAA,GAAG,UAAWoI,EAAO,EACrBpI,EAAA,GAAG,WAAYqI,EAAQ,EACvBrI,EAAA,GAAG,QAASsI,EAAK,EACjBtI,EAAA,GAAG,UAAWuI,EAAO,EAErBvI,EAAA,GAAG,QAASwI,EAAK,EACjBxI,EAAA,GAAG,UAAWyI,CAAO,EACrBzI,EAAA,GAAG,WAAY0I,CAAQ,EAEvB1I,EAAA,GAAG,QAAS2I,CAAK,EAEjB3I,EAAA,GAAG,SAAU/lB,CAAM,EAEnB+lB,EAAA,GAAG,QAAS4I,CAAK,EACjB5I,EAAA,GAAG,YAAa6I,CAAS,EACzB7I,EAAA,GAAG,aAAc8I,EAAU,EAC3B9I,EAAA,GAAG,UAAW+I,EAAO,EACrB/I,EAAA,GAAG,YAAagJ,EAAS,EAEzBhJ,EAAA,GAAG,MAAOloC,EAAG,EAGrB2uC,EAAQ,KAAK3sC,GAAoB,SAAU,cAAemvC,EAAU,CAAC,EAQrExC,EAAQ,KAAK3sC,GAAoBne,EAAI,kBAAmButD,EAAe,CAAC,EACxEzC,EAAQ,KAAK3sC,GAAoBne,EAAI,gBAAiBwtD,EAAa,CAAC,EACpE1C,EAAQ,KAAK3sC,GAAoBne,EAAI,iBAAkBytD,EAAc,CAAC,EACtE3C,EAAQ,KAAK3sC,GAAoBne,EAAI,eAAgB0tD,EAAY,CAAC,EAGlE,MAAMtvD,EAAM,MAAMqjD,GAAOzhD,EAAKw1B,IAAS,CAC7Bm4B,GAAAn4B,GACLq1B,EAAA,KAAK,SAAUr1B,EAAI,CAAA,CACvB,EACDs1B,EAAQ,KAAK1sD,CAAG,EAGR0sD,EAAA,KACN8C,GAAc,KAAM,CAClB,MAAQvsF,IAAM,CACZ0pF,EAAI,mBAAmB5D,GAA0B9lF,GAAG2+B,CAAE,EAAG,EAAI,CAC/D,EACA,KAAO3+B,IAAM,CACX0pF,EAAI,qBAAqB5D,GAA0B9lF,GAAG2+B,CAAE,CAAC,CAC3D,EACA,IAAM3+B,IAAM,CACV0pF,EAAI,qBAAqB5D,GAA0B9lF,GAAG2+B,CAAE,EAAG,EAAK,CAClE,CAAA,CACD,CAAA,CAEL,EACA,IAAK,IAAM,CACT6qD,EAAG,mBAAmB,EAEtBC,EAAQ,QAASjiF,GAAMA,EAAG,CAAA,EAC1BiiF,EAAU,CAAA,EAEFzG,EAAA,IAAI,MAAO+H,CAAG,EACd/H,EAAA,IAAI,WAAYgI,CAAQ,EACxBhI,EAAA,IAAI,UAAWiI,CAAO,EACtBjI,EAAA,IAAI,SAAUkI,CAAM,EACpBlI,EAAA,IAAI,YAAamI,CAAS,EAC1BnI,EAAA,IAAI,UAAWoI,EAAO,EACtBpI,EAAA,IAAI,WAAYqI,EAAQ,EACxBrI,EAAA,IAAI,QAASsI,EAAK,EAClBtI,EAAA,IAAI,UAAWuI,EAAO,EAEtBvI,EAAA,IAAI,QAASwI,EAAK,EAClBxI,EAAA,IAAI,UAAWyI,CAAO,EACtBzI,EAAA,IAAI,WAAY0I,CAAQ,EAExB1I,EAAA,IAAI,QAAS2I,CAAK,EAElB3I,EAAA,IAAI,SAAU/lB,CAAM,EAEpB+lB,EAAA,IAAI,QAAS4I,CAAK,EAClB5I,EAAA,IAAI,YAAa6I,CAAS,EAC1B7I,EAAA,IAAI,aAAc8I,EAAU,EAC5B9I,EAAA,IAAI,UAAW+I,EAAO,EACtB/I,EAAA,IAAI,YAAagJ,EAAS,EAE1BhJ,EAAA,IAAI,MAAOloC,EAAG,CACxB,CAAA,CAEJ,CAQgB,SAAAyxC,GACdC,EACAztD,EACY,CACL,OAAA0tD,GAAyBD,EAAYztD,CAAO,CAMrD,CAEgB,SAAA0tD,GACdD,EACAztD,EACY,CACZ,MAAMyqD,EAAKgD,EAAW,GAEhBnsD,EAASrgC,GAAoB,CAG9BwpF,EAAA,GAAG,cAAekD,CAAI,EACtBlD,EAAA,GAAG,YAAazsD,CAAG,EACnBysD,EAAA,GAAG,gBAAiBzsD,CAAG,EAC1BgC,GAAS,QAAQ/+B,CAAC,CAAA,EAGd+8B,EAAO/8B,GAAoB,CAG5BwpF,EAAA,IAAI,cAAekD,CAAI,EACvBlD,EAAA,IAAI,YAAazsD,CAAG,EACpBysD,EAAA,IAAI,gBAAiBzsD,CAAG,EAC3BgC,GAAS,MAAM/+B,CAAC,CAAA,EAGZ0sF,EAAQ1sF,GAAoB,CAGhC++B,GAAS,OAAO/+B,CAAC,CAAA,EAGhB,OAAAwpF,EAAA,GAAG,cAAenpD,CAAK,EAEnB,IAAMmpD,EAAG,IAAI,cAAenpD,CAAK,CAC1C,CAEgB,SAAAssD,GACdH,EACAztD,EACY,CACZ,MAAMyqD,EAAKgD,EAAW,GAEhBnsD,EAASrgC,GAAkB,CAGtB,SAAA,iBAAiB,YAAa0sF,EAAM,EAAK,EACzC,SAAA,iBAAiB,UAAW3vD,EAAK,EAAK,EAC/CgC,GAAS,QAAQ/+B,CAAC,CAAA,EAGd+8B,EAAO/8B,GAAkB,CAGpB,SAAA,oBAAoB,YAAa0sF,EAAM,EAAK,EAC5C,SAAA,oBAAoB,UAAW3vD,EAAK,EAAK,EAClDgC,GAAS,MAAM/+B,CAAC,CAAA,EAGZ0sF,EAAQ1sF,GAAkB,CAG9B++B,GAAS,OAAO/+B,CAAC,CAAA,EAGhB,OAAAwpF,EAAA,GAAG,YAAanpD,CAAK,EAEjB,IAAMmpD,EAAG,IAAI,YAAanpD,CAAK,CACxC,CAEgB,SAAAusD,GACdJ,EACAztD,EACY,CACZ,MAAMyqD,EAAKgD,EAAW,GAEhBnsD,EAASrgC,GAAkB,CAG5BwpF,EAAA,GAAG,YAAakD,CAAI,EACpBlD,EAAA,GAAG,WAAYzsD,CAAG,EAClBysD,EAAA,GAAG,cAAezsD,CAAG,EAClB,MAAAqhB,EAAQp+C,EAAE,eAAe,CAAC,EAChC++B,GAAS,QAAQqf,CAAK,CAAA,EAGlBrhB,EAAO/8B,GAAkB,CAG1BwpF,EAAA,IAAI,YAAakD,CAAI,EACrBlD,EAAA,IAAI,WAAYzsD,CAAG,EACnBysD,EAAA,IAAI,cAAezsD,CAAG,EACnB,MAAAqhB,EAAQp+C,EAAE,eAAe,CAAC,EAChC++B,GAAS,MAAMqf,CAAK,CAAA,EAGhBsuC,EAAQ1sF,GAAkB,CAGxB,MAAAo+C,EAAQp+C,EAAE,eAAe,CAAC,EAChC++B,GAAS,OAAOqf,CAAK,CAAA,EAGpB,OAAAorC,EAAA,GAAG,aAAcnpD,CAAK,EAElB,IAAMmpD,EAAG,IAAI,aAAcnpD,CAAK,CACzC,CCzkBgB,SAAAwsD,GACdluD,EACAmF,EACAF,EACA,CAIA,GAHI,OAAOE,GAAQ,WACjBA,EAAMJ,GAAQI,CAAG,IAEd,OAAOA,GAAQ,UAAYA,IAAQ,SAAcF,IAAU,OAAW,CAEzE,MAAMvC,EAAO,OAAO,OAAO,CAAA,EAAI1C,EAAG,OAAO,EACzC,cAAO,KAAK0C,CAAI,EAAE,QAASyC,GAAQ,CAC7B,GAAAzC,EAAKyC,CAAG,GAAG,WAAW,GAAG,GAAKzC,EAAKyC,CAAG,GAAG,WAAW,GAAG,EACrD,GAAA,CACFzC,EAAKyC,CAAG,EAAI,KAAK,MAAMzC,EAAKyC,CAAG,GAAK,EAAE,OAC5B,CAEZ,CACF,CACD,EACM,OAAOA,GAAQ,SAAWzC,EAAKyC,CAAG,EAAIzC,CAAA,KACxC,CAEL,IAAI6E,EAA2B,CAAA,EAC3B,OAAOpC,GAAO,SACVoC,EAAApC,EACG,OAAOA,GAAO,WACvBoC,EAAIpC,CAAG,EAAIF,GAEN,OAAA,QAAQsC,CAAG,EAAE,QAAQ,CAAC,CAAC9C,EAAMxG,CAAG,IAAM,CACvCA,EACC+B,EAAA,QAAQyE,CAAI,EAAIxG,aAAe,OAAS,KAAK,UAAUA,CAAG,EAAIA,EAE1D,OAAA+B,EAAG,QAAQyE,CAAI,CACxB,CACD,CACH,CACF,CAEgB,SAAA0pD,GAAkBnuD,EAAgBmF,EAAa,CAC7DA,EAAI,MAAM,QAAQ,EAAE,QAASn5B,GAAM,CAC7BA,EAAE,KAAK,GAAK,IACd,OAAOg0B,EAAG,QAAQh0B,EAAE,KAAM,CAAA,CAC5B,CACD,CACH,CC/CgB,SAAAoiF,GACdpuD,EACAI,EAAgC,CAC9B,WAAY,GACZ,UAAW,GACX,QAAS,EACX,EAC8B,CACvB,OAAA,IAAIsN,GAAY4B,GAAa,CAClC,MAAM7tC,EAAK,IAAI,iBACb,CAAC4sF,EAA2B9sF,IAAwB,CAWlD+tC,EAAS,KAAK++C,CAAO,CACvB,CAAA,EAEC,OAAA5sF,EAAA,QAAQu+B,EAAII,CAAO,EACf,IAAM,CACX3+B,EAAG,WAAW,CAAA,CAChB,CACD,CACH,CAGgB,SAAA6sF,GACd/iD,EACA6uC,EACkB,CACX,OAAA,IAAI,QAASv5C,GAAY,CACb,IAAI,iBAAiB,CAAC0tD,EAAej/C,IAAa,CACjE,UAAWk/C,KAAYD,EACjBC,EAAS,OAAS,aACXA,EAAA,WAAW,QAAS5nD,GAAS,CAChCA,EAAK,YAAYwzC,CAAK,IACxB9qC,EAAS,WAAW,EACpBzO,EAAQ,EAAI,EACd,CACD,CAEL,CACD,EACQ,QAAQ0K,EAAQ,CAAE,UAAW,EAAM,CAAA,CAAA,CAC7C,CACH,CCnDgB,SAAAkjD,GACdzuD,EACAI,EAAoC,CAClC,KAAM,IAER,EACuC,CAChC,OAAA,IAAIsN,GAAY4B,GAAa,CAClC,MAAMhc,EAAK,IAAI,qBACb,CAACouD,EAAsCngF,IAA4B,CAOjE,GAAImgF,EAAQ,OAAQ,CAYlB,MAAMgN,EAAQhN,EAAQA,EAAQ,OAAS,CAAC,EACpCgN,GACFp/C,EAAS,KAAKo/C,CAAK,CAEvB,CACF,EACAtuD,CAAA,EAEF,OAAA9M,EAAG,QAAQ0M,CAAE,EACN,IAAM,CACX1M,EAAG,UAAU0M,CAAE,EACf1M,EAAG,WAAW,CAAA,CAChB,CACD,CACH,CCtBgB,SAAAq7D,GACd3uD,EACAI,EAIqB,CACf,MAAAwuD,EAAYxuD,GAAS,WAAa,GACxC,OAAOquD,GAAczuD,EAAI,CACvB,UAAA4uD,EACA,KAAMxuD,GAAS,IAChB,CAAA,EAAE,KACD8U,GAAKw5C,GAEIA,EAAM,gBAAkBA,EAAM,mBAAqBE,CAC3D,EACDj1C,GAAqB,CAAA,CAEzB,CCDgB,SAAAk1C,GACd1pD,EACA/E,EACA,CACA,MAAMp0B,EAAI,OAAOm5B,GAAO,SAAWA,EAAMA,EAAI,WAGvC2pD,EAAW,IAAM,CACjB,GAAA,CACF,MAAMC,EAAY,OAAO,eAAe,QAAQ/iF,CAAC,EACjD,GAAI+iF,EACK,OAAA,KAAK,MAAMA,CAAS,OAEnB,CAEZ,CACO,EAIHC,EAAYC,GAAmC,CAC/C,GAAA,CACE,OAAOA,EAAe,MAAS,IACjC,OAAO,eAAe,QAAQjjF,EAAG,KAAK,UAAUijF,CAAc,CAAC,EAExD,OAAA,eAAe,WAAWjjF,CAAC,OAE1B,CAEZ,CAAA,EAGK,MAAA,CACL,IAAK,IAAMkjF,GAAqBJ,EAAA,EAAY1uD,CAAO,EAAE,MAAM,MAC3D,IAAM/lB,GAAW20E,EAASE,GAAqBJ,EAAS,EAAG1uD,CAAO,EAAE,IAAI/lB,CAAC,CAAC,CAAA,CAE9E,CAEO,SAAS80E,IAAsB,CACpC,OAAO,eAAe,OACxB,CAWO,SAASC,GAAgCjqD,EAAa,CACrD,MAAA3N,EAAK,IAAI,iBAAiB2N,CAAG,EAE7B0K,EAAem3C,KAAgB,UAAU,IAAM,CACnDxvD,EAAG,MAAM,EACTqY,EAAa,YAAY,CAAA,CAC1B,EAEKw/C,EAASC,KAGZ,OAAA93D,EAAA,UAAagyD,GAAwB,CAC/B6F,EAAA,KAAK7F,EAAG,IAAI,CAAA,EAGd,CACL,YAAc/3C,GAAgB,CAC5Bja,EAAG,YAAYia,CAAM,CACvB,EACA,UAAW49C,EAAO,SAAA,CAEtB,CC1GO,SAASE,IAAkC,CACzC,OAAAnB,GAAU,QAAQ,EAAE,KACzBl5C,GAAI,IAAM,QAAQ,EAClByG,GAAU,QAAQ,CAAA,CAEtB,CAEO,SAAS6zC,IAAiC,CAC/C,OAAOD,GAAY,EAAA,KACjBr6C,GAAKu6C,GAAaA,EAAS,IAAI,EAC/B9zC,GAAU,SAAS,IAAI,EACvBhC,GAAqB,CAAA,CAEzB,CAEO,SAAS+1C,IAAkC,CACzC,OAAAlxC,GAAqB,OAAQ,YAAY,EAAE,KAChDtJ,GAAKy6C,GACFA,EAAU,OAAkB,SAAS,KAAK,QAAQ,IAAK,EAAE,CAC5D,EACAh0C,GAAU,OAAO,SAAS,KAAK,QAAQ,IAAK,EAAE,CAAC,EAC/ChC,GAAqB,CAAA,CAEzB,CAsDgB,SAAAi2C,GAAgBC,EAAc,UAA4B,CACjE,OAAArxC,GAAqB,OAAQ,UAAU,EAAE,KAI9CtJ,GAAK46C,GAAiCA,EAAc,OAAS,CAAA,CAAE,EAC/D56C,GAAKzX,IAAW,CACd,GAAGA,EAEH,CAACoyD,CAAW,EACVpyD,EAAMoyD,CAAW,GACjB,OAAO,SAAS,SAAW,OAAO,SAAS,OAAS,OAAO,SAAS,IAAA,EACtE,EACFl2C,GAAqB,CAAC3xC,EAAG8Z,IAAM9Z,EAAE6nF,CAAW,IAAM/tE,EAAE+tE,CAAW,CAAC,CAAA,CAGpE,CAkBO,SAASE,GACd3vD,EAA+D,CAC7D,YAAa,UACb,iBAAkB,EACpB,EACA,CACA,MAAMyvD,EAAczvD,EAAQ,YACtB4vD,EACJ,OAAO5vD,EAAQ,kBAAoB,UAC/BA,EAAQ,iBACR,GAKA,CAAE,IAAK6vD,EAAqB,IAAKC,GACrCrB,GAAqB,kBAAkB,EACnCsB,EAA0BF,EAAoB,GAAK,GAGnD,CAAE,IAAKG,EAA0B,IAAKC,GAC1CxB,GAAqB,wBAAwB,EACzCyB,EAAYF,IAClB,IAAIG,EACF,OAAOD,GAAa,SAAWA,EAAYH,EAAQ,OAAS,EAE9D,SAASK,EAAmB/yD,EAAqB,CAIxC,OAHO0yD,EAAQ,UACnB3sF,GAAMA,EAAEqsF,CAAW,IAAMpyD,EAAMoyD,CAAW,CAAA,CAG/C,CAGM,MAAAY,EAMF,CAAE,aAAAF,GAEN,SAASG,EAAWvmD,EAAe,CAEjCA,EAAQnM,GAAMmM,EAAO,GAAIgmD,EAAQ,OAAS,CAAC,EACvCI,EAAe,GAEjBE,EAAM,UAAY,OAClBA,EAAM,MAAQ,IAEVtmD,EAAQomD,EACVE,EAAM,UAAY,WACTtmD,EAAQomD,EACjBE,EAAM,UAAY,UAElBA,EAAM,UAAY,OAEpBA,EAAM,MAAQtmD,EAAQomD,GAExBE,EAAM,KAAOA,EAAM,GACnBA,EAAM,GAAKN,EAAQhmD,CAAK,IAAI0lD,CAAW,EACxBU,EAAApmD,EACfsmD,EAAM,aAAeF,EACrBF,EAAyBE,CAAY,CAEvC,CAGAG,EAAWH,CAAY,EAEvB,SAASI,EAAYlzD,EAAqB,CACxC0yD,EAAQ,KAAK1yD,CAAK,EAClByyD,EAAoBC,CAAO,EAChBO,EAAAP,EAAQ,OAAS,CAAC,CAC/B,CAUS,SAAAS,EAAUpuD,EAAaquD,EAAe,CAC7C,MAAMpzD,EAAQ,CAAE,GAAGozD,EAAQ,CAAChB,CAAW,EAAGrtD,CAAI,EAC9C,OAAO,QAAQ,UAAU/E,EAAO,GAAI+E,CAAG,EACvCmuD,EAAYlzD,CAAK,CACnB,CAQS,SAAAqzD,EAAYrzD,EAAqBszD,EAAgBf,EAAkB,CACpE,MAAA7lD,EAAQqmD,EAAmB/yD,CAAK,EACtC,GAAI0M,EAAQ,EAAG,CAETomD,GAAgB,IAEVJ,EAAA,OAAOI,EAAe,CAAC,EAC/BL,EAAoBC,CAAO,GAE7BY,EAAgBJ,EAAYlzD,CAAK,EAAImzD,EAAUnzD,EAAMoyD,CAAW,EAAGpyD,CAAK,EACxE,MACF,CACI0M,GAASomD,GAMbG,EAAWvmD,CAAK,CAClB,CAEA,MAAM6mD,EAAYpB,GAAA,EAAkB,UAAWnyD,GAAU,CAGvDqzD,EAAYrzD,EAAO,EAAI,CAAA,CACxB,EAEM,MAAA,CACL,QAAA0yD,EACA,MAAAM,EAGA,SAAU,CAACjuD,EAAaquD,IAAkB,CAC5BC,EAAA,CAAE,GAAGD,EAAQ,CAAChB,CAAW,EAAGrtD,CAAA,EAAOwtD,CAAgB,CACjE,EACA,GAAGjG,EAAe,CACT,OAAA,QAAQ,GAAGA,CAAK,CACzB,EACA,MAAO,CACL,OAAO,QAAQ,MACjB,EACA,SAAU,CACR,OAAO,QAAQ,SACjB,EACA,QAAS,IAAM,CACbiH,EAAU,YAAY,CACxB,CAAA,CAEJ,CC9PgB,SAAAC,GACdpxD,EAAQ,+BACa,CACf,MAAAqxD,EAAiB,OAAO,WAAWrxD,CAAK,EACvC,OAAA2e,GAAqB0yC,EAAgB,QAAQ,EAAE,KACpDh8C,GAAK7zC,GAA2BA,EAAE,OAAO,EACzCs6C,GAAUu1C,EAAe,OAAO,EAChCv3C,GAAqB,CAAA,CAEzB,CCXA,IAAIw3C,GAAa,GACjB,SAASC,IAAS,CACZD,KAGSA,GAAA,GAsBDnrD,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAaX,EAEH,CAIO,SAASqrD,IAKb,CACMD,OAAAA,KACAzP,GAAQ,SAAS,eAAe,EAAE,KACvCttC,GAAY3C,EAAc,EAC1BwD,GAAI,IAAM,CACF,MAAA2qC,EAAc,iBAAiB,SAAS,eAAe,EACtD,MAAA,CACL,OAAQA,EAAY,iBAAiB,OAAO,EAC5C,IAAKA,EAAY,iBAAiB,OAAO,EACzC,MAAOA,EAAY,iBAAiB,OAAO,EAC3C,KAAMA,EAAY,iBAAiB,OAAO,CAAA,CAC5C,CACD,CAAA,CAEL,CCrEO,SAASyR,GACdlxD,EAA2B,CACzB,mBAAoB,GACpB,QAAS,IACT,WAAY,CACd,EAIC,CACM,OAAA,IAAIsN,GAAY4B,GAAa,CAC9B,GAAA,EAAE,gBAAiB,WACd,OAAAA,EAAS,MAAM,yCAAyC,EAE7D,IAAAiiD,EACA,WAAA,QAAc,CAAC1wD,EAASC,IAAW,CACrC,UAAU,YAAY,mBACnBsF,GAAa,CACZkJ,EAAS,KAAK,CACZ,UAAWlJ,EAAS,OAAO,UAC3B,SAAUA,EAAS,OAAO,QAAA,CAC3B,EACOvF,GACV,EACCiI,GAAU,CACThI,EAAOgI,CAAK,CACd,CAAA,CACF,CACD,EACE,KAAK,IAAM,CACVyoD,EAAU,UAAU,YAAY,cAC7BnrD,GAAa,CACZkJ,EAAS,KAAK,CACZ,UAAWlJ,EAAS,OAAO,UAC3B,SAAUA,EAAS,OAAO,QAAA,CAC3B,CACH,EACC0C,GAAU,CACTwG,EAAS,MAAMxG,CAAK,CACtB,EACA1I,CAAA,CACF,CACD,EACA,MAAO0I,GAAU,CAChBwG,EAAS,MAAMxG,CAAK,CAAA,CACrB,EACI,IAAM,CACP,OAAOyoD,GAAW,UACV,UAAA,YAAY,WAAWA,CAAO,CAC1C,CACF,CACD,CACH,CC7CO,MAAMC,WAAiBvT,EAAS,CACrC,YAAsC,CAAA,EACtC,MAAkC,CAAA,EAElC,OAAmC,CAAA,EAEnC,aAAyC,CAAA,EAEzC,KAA4B,CAAA,EAC5B,OAAiC,CAAA,EACjC,KAAO,GAEP,YAAYC,EAAsB,CAChC,MAAMA,CAAY,EAElB,KAAK,GAAG,MAAO,CAACuT,EAAiBjqD,IAAkC,CAGjE,OAFA,KAAK,KAAO,GACP,KAAA,YAAc,CAAE,KAAMiqD,CAAQ,EAC3BA,EAAS,CACf,IAAK,IACE,KAAA,OAAO,KAAK,KAAK,WAAW,EACjC,KACJ,CACK,KAAA,aAAaA,EAASjqD,CAAK,CAAA,CACjC,EAEI,KAAA,GAAG,OAASgnB,GAAiB,CAC5B,GAAA,KAAK,YAAY,MAAQ,QAAS,CAChC,GAAA,CACI,MAAAkjC,EAAYhT,GAASlwB,CAAI,EACpB,UAAAixB,KAAQiS,EAAU,WAAW,MAC3B,UAAA7R,KAAeJ,EAAK,aAClB,UAAAn5C,KAAYm5C,EAAK,UAC1B,KAAK,aAAan5C,CAAQ,EAAI,KAAK,aAAaA,CAAQ,GAAK,GACxD,KAAA,aAAaA,CAAQ,EAAE,KAC1B,GAAGu5C,EAAY,QAAQ,IAAIA,EAAY,KAAK,EAAA,OAM1C,CACF,QAAA,MAAM,yBAA2BrxB,CAAI,CAC/C,CACA,MACF,CACA,KAAK,MAAQA,CAAA,CACd,EAED,KAAK,GAAG,OAAQ,CAACijC,EAAiBjqD,IAAkC,CAE9D,IAAA9kC,EAAI,KAAK,OAAO,OACpB,KAAOA,KACL,GAAI,KAAK,OAAOA,CAAC,GAAK,KAAK,YAAa,CACtC,IAAIivF,EAAiB,GACjBC,EAAa,GACjB,UAAWzsD,KAAO,KAAK,OAAOziC,CAAC,EACzByiC,GAAO,YACQwsD,EAAA,KAAK,OAAOjvF,CAAC,EAAE,UAEhCyiC,GAAO,SACP,KAAK,aAAa,IAAM,KAAK,OAAOziC,CAAC,EAAEyiC,CAAG,CAAC,EAE3CysD,EACE,KAAK,aAAa,IAAM,KAAK,OAAOlvF,CAAC,EAAEyiC,CAAG,CAAC,EAAE,KAAK,GAAG,EACrD,IACAysD,EAEFzsD,GAAO,MACP,KAAK,aAAa,IAAM,KAAK,OAAOziC,CAAC,EAAEyiC,CAAG,CAAC,EAE3CysD,EACE,KAAK,aAAa,IAAM,KAAK,OAAOlvF,CAAC,EAAEyiC,CAAG,CAAC,EAAE,KAAK,GAAG,EACrD,IACAysD,EACO,OAAO,KAAK,YAAYzsD,CAAG,EAAM,MAE1C,KAAK,YAAYA,CAAG,EAAI,KAAK,OAAOziC,CAAC,EAAEyiC,CAAG,GAG1C,OAAO,KAAK,YAAY,UAAc,IACxC,KAAK,YAAY,UAAYwsD,EAExB,KAAA,YAAY,WAAa,IAAMA,EAGlC,OAAO,KAAK,YAAY,MAAU,IACpC,KAAK,YAAY,MAAQC,EAEzB,KAAK,YAAY,MAAQA,EAAa,KAAK,YAAY,MAIvD,KAAK,YAAY,OACjB,KAAK,aAAa,IAAM,KAAK,YAAY,KAAK,EAE9C,KAAK,YAAY,MACf,KAAK,aAAa,IAAM,KAAK,YAAY,KAAK,EAAE,KAAK,GAAG,EACxD,IACA,KAAK,YAAY,MAEnB,KAAK,YAAY,IACjB,KAAK,aAAa,IAAM,KAAK,YAAY,EAAE,IAE3C,KAAK,YAAY,MACf,KAAK,aAAa,IAAM,KAAK,YAAY,EAAE,EAAE,KAAK,GAAG,EACrD,IACA,KAAK,YAAY,OAErBC,GACE,KAAK,YAAY,MACjB,KAAK,YACLC,EAAA,CAEJ,CAKF,OAFK,KAAA,aAAaL,EAASjqD,CAAK,EAExBiqD,EAAS,CACf,IAAK,IACH,KAAK,OAAO,MACZ,MACF,IAAK,SACH,KAAK,WAAW,EAChB,MACF,IAAK,UACH,KAAK,WAAW,EAChB,MACF,IAAK,UACH,KAAK,WAAW,EAChB,MACF,IAAK,OACH,KAAK,WAAW,EAChB,MACF,IAAK,OACH,KAAK,WAAW,EAChB,MACF,IAAK,OACH,KAAK,WAAW,EAChB,MACF,IAAK,QACH,KAAK,WAAW,EAChB,MACF,IAAK,OACE,KAAA,YAAY,KAAO,KAAK,KAC7B,KAAK,YAAY,aAAa,EAC5B,KAAK,YAAY,aAAa,GAAK,QACrC,KAAK,WAAW,EAChB,KACJ,CAAA,CACD,EAEI,KAAA,GAAG,SAAU,IAAM,CACjB,KAAA,KAAK,SAAU,KAAK,KAAK,CAAA,CAC/B,CACH,CAEA,OAAQ,CACN,aAAM,MAAM,EACL,KAAK,KACd,CAEA,aAAaA,EAAiBjqD,EAA+B,CAC3D,IAAIhkC,EAAW,CAAA,EACXwvD,EAEJ,OAAQy+B,EAAS,CACf,IAAK,MACH,IAAIjwC,EAAQ,GACRC,EAAS,GACT,GAAAja,EAAM,OAASA,EAAM,OACvBga,EAAQha,EAAM,MACdia,EAASja,EAAM,eACNA,EAAM,QAAS,CACxB,MAAMuqD,EAAWvqD,EAAM,QAAQ,MAAM,OAAO,EACxCuqD,EAAS,QAAU,IACbvwC,EAAA,OAAO,WAAWuwC,EAAS,CAAC,CAAC,EAAI,WAAWA,EAAS,CAAC,CAAC,CAAC,EACvDtwC,EAAA,OAAO,WAAWswC,EAAS,CAAC,CAAC,EAAI,WAAWA,EAAS,CAAC,CAAC,CAAC,EAErE,CACIvwC,GAASC,GACX,KAAK,MAAM,KAAK,CACd,KAAM,UACN,MAAAD,EACA,OAAAC,CAAA,CACD,EAEH,MACF,IAAK,OAED,OAAOja,EAAM,IAAM,UACnB,OAAOA,EAAM,IAAM,UACnB,OAAOA,EAAM,IAAM,UACnB,OAAOA,EAAM,IAAM,WAEd,KAAA,YAAY,KACf,IAAM,CAACA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,EAAE,GAEjD,MACF,IAAK,OACHwrB,EAAO,CAAA,EACHxrB,EAAM,OACGqqD,GAAArqD,EAAM,MAAOwrB,CAAI,EAEzBA,EAAA,OAASA,EAAK,QAAUxrB,EAAM,OACnCwrB,EAAK,MAAQA,EAAK,YAAY,GAAKxrB,EAAM,YAAY,EACrDwrB,EAAK,QAAUA,EAAK,cAAc,GAAKxrB,EAAM,cAAc,EACvD,EAAEwrB,EAAK,OAAS,IAAI,QAAQ,GAAG,EAC5BA,EAAA,OAAS,WAAWA,EAAK,MAAM,EAEpCA,EAAK,OAAS,WAAWA,EAAK,MAAM,EAAI,IAE1CA,EAAK,OAAS,CAACA,EAAK,OAAO,QAAQ,CAAC,EAC/B,KAAA,KAAK,MAAM,KAAKA,CAAI,EACzB,MACF,IAAK,iBACE,KAAA,KAAK,OACR,IACArD,GACE,WAAWnoB,EAAM,EAAE,EACnB,WAAWA,EAAM,EAAE,EACnB,WAAWA,EAAM,EAAE,EACnB,WAAWA,EAAM,EAAE,EACnB,WAAWA,EAAM,EAAE,EAAI,IACvB,WAAWA,EAAM,EAAE,CAAA,GAErB,QAAQ,CAAC,EACPhkC,EAAA,CAAC,KAAK,KAAK,KAAK,EACX,QAAAd,EAAI,EAAGwC,EAAK,KAAK,KAAK,MAAM,OAAQxC,EAAIwC,EAAIxC,IAC5CswD,EAAA,KAAK,KAAK,MAAMtwD,CAAC,EACpBA,GAAKA,GAAKwC,EAAK,EACjB1B,EAAE,KAAKwvD,EAAK,MAAQ,IAAMA,EAAK,MAAM,EAEnCxvD,EAAA,KAAKwvD,EAAK,KAAK,EAGrB,KAAK,OAAO,KAAK,KAAK,EAAE,EAAIxvD,EAAE,KAAK,GAAG,EACjC,KAAA,MAAM,QAAS0mC,GAAS,CACvBA,EAAK,QAAU,KAAK,KAAK,KAC3BA,EAAK,KAAO,KAAK,OAAO,KAAK,KAAK,EAAE,EACtC,CACD,EACD,MACF,IAAK,iBACH1mC,EAAI,CAAA,EACK,QAAAd,EAAI,EAAGwC,EAAK,KAAK,KAAK,MAAM,OAAQxC,EAAIwC,EAAIxC,IAC5CswD,EAAA,KAAK,KAAK,MAAMtwD,CAAC,EACpBA,GAAKA,GAAKwC,EAAK,EACjB1B,EAAE,KAAKwvD,EAAK,MAAQ,IAAMA,EAAK,MAAM,EAEnCxvD,EAAA,KAAKwvD,EAAK,KAAK,EAGrB,KAAK,OAAO,KAAK,KAAK,EAAE,EAAIxvD,EAAE,KAAK,GAAG,EACjC,KAAA,MAAM,QAAS0mC,GAAS,CACvBA,EAAK,QAAU,KAAK,KAAK,KAC3BA,EAAK,KAAO,KAAK,OAAO,KAAK,KAAK,EAAE,EACtC,CACD,EACD,KACJ,CAEA,UAAW/E,KAAOqC,EAAO,CACjB,MAAAvC,EAAQuC,EAAMrC,CAAG,EA2BvB,GAzBI2sD,GAAkB,SAAS3sD,CAAG,IAC3B,KAAA,YAAYA,CAAG,EAAIF,GAEtBE,IAAQ,OACN,KAAK,YAAY,OAAS,mBAC5B,KAAK,KAAO,CACV,GAAIA,EACJ,MAAO,CAAC,CAAA,GAGR,KAAK,YAAY,OAAS,mBAC5B,KAAK,KAAO,CACV,GAAIA,EACJ,MAAO,CAAC,CAAA,IAIVA,IAAQ,SAEC0sD,GAAA5sD,EAAO,KAAK,YAAa6sD,EAAiB,EAEnD3sD,IAAQ,cACV,KAAK,YAAY,UACfF,GAAS,KAAK,YAAY,WAAa,MAEvCE,IAAQ,OAAQ,CACZ,MAAAhG,EAAS8F,EAAM,MAAM,iBAAiB,EAC5C,GAAI9F,EAAQ,CACJ,MAAA/d,EAAK+d,EAAO,CAAC,EACnB,KAAK,YAAY,OAAS/d,EACtB,KAAK,OAAOA,CAAE,IAChB,KAAK,YAAY,KAAO,KAAK,OAAOA,CAAE,EAE1C,CACF,CACI+jB,IAAQ,UACN,KAAK,YAAY,MAAQ,YACtB,KAAA,YAAY,KAAO,IAAMF,EAAQ,KAGtCE,IAAQ,KACN,KAAK,YAAY,MAAQ,SAC3B,KAAK,YAAY,KAAOF,GAGxBE,IAAQ,cACN,KAAK,YAAY,MAAQ,UAC3B,KAAK,YAAY,IAAMF,EAG7B,CACF,CAEA,YAAa,CACN,KAAA,MAAM,KAAK,KAAK,WAAW,CAClC,CACF,CAIA,SAAS0qB,GACP13C,EACAnB,EACAoH,EACA3B,EACAiO,EACAd,EACQ,CACR,GAAI,OAAOc,EAAM,KAAe,OAAOd,EAAM,IAAa,CACxD,MAAMhH,EAAIzK,EAAKiG,EACTxS,EAAIoL,EAAKyF,EACX,MAAA,CAACmG,GAAK,CAAChX,EACF,GAED,IAAO,KAAK,MAAM,CAACA,EAAG,CAACgX,CAAC,EAAI,IAAO,KAAK,GAAK,KAAO,GAAA,KAErD,QAAAitC,GAAM13C,EAAInB,EAAI0T,EAAId,CAAE,EAAIimC,GAAMzxC,EAAI3B,EAAIiO,EAAId,CAAE,CAEvD,CAEA,SAASmoE,GACPlT,EACA3+C,EACA8xD,EACA,CACA,MAAM9qD,GAAS23C,EAAM,IAAI,MAAM,GAAG,EAC5BiB,EAAO,aACb,QAAS,EAAI,EAAG16E,EAAK8hC,EAAM,OAAQ,EAAI9hC,EAAI,IAAK,CAC9C,MAAM8sF,EAAOhrD,EAAM,CAAC,EAAE,MAAM,GAAG,EACzB7B,EAAM6sD,EAAK,CAAC,EAAE,QAAQpS,EAAM,EAAE,EAAE,QAAQ,SAAU,SAAUqS,EAAQ,CACjE,MAAA,IAAMA,EAAO,aAAY,CACjC,GACG,CAACH,GAAqBA,EAAkB,SAAS3sD,CAAG,KACtDnF,EAAGmF,CAAG,EAAI6sD,EAAK,CAAC,EAAE,QAAQpS,EAAM,EAAE,EAEtC,CACF,CAEA,MAAMkS,GAA8B,CAClC,KACA,QACA,UACA,QACA,SACA,IACA,IACA,KACA,KACA,IACA,KACA,KAEA,SACA,UACA,MAEA,OACA,eAEA,SACA,mBACA,iBACA,kBACA,oBACA,iBACA,eAEA,cAEA,OACA,cACA,YACA,aACA,cACA,gBACF,EC9XO,SAASvmF,GACd2mF,EACAC,EAAe,CAAA,EACfC,EAAyC,CAAA,EAClC,CACH,OAAA,OAAOF,GAAO,SAET,CACL,IAAAA,EACA,MAAAC,EACA,SACE,OAAOC,GAAY,SACfA,EACAA,EAAS,OAAQhY,GAAU,OAAOA,GAAS,SAAS,CAAA,EAIrD8X,EAAIC,CAAK,CAEpB,CAGO,SAASE,GAAQryD,EAA+B,CACrD,MAAM6E,EAAQt5B,GACZy0B,EAAG,QACHqH,GAAmBrH,CAAE,EACrB,MAAM,KAAKA,EAAG,QAAQ,EAAE,IAAKo6C,GAAUiY,GAAQjY,CAA2B,CAAC,CAAA,EAE7E,OAAAv1C,EAAM,GAAK7E,EACJ6E,CACT,CAGO,SAASytD,GACdztD,EACA0G,EAA6B,SAAS,gBAClB,CAChB,GAAA,OAAO1G,GAAU,SAAU,CACvB7E,MAAAA,EAAK,SAAS,eAAe6E,CAAK,EACxC,OAAA0G,EAAO,YAAYvL,CAAE,EAGdA,CACT,CACA,GAAI6E,EAAM,GACR,OAAOA,EAAM,GAGT,MAAA7E,EACJ6E,EAAM,KAAO,OAAS26B,KAAkB,SAAS,cAAc36B,EAAM,GAAG,EAG1E,GAAIA,EAAM,MACG,SAAA,CAAC74B,EAAGqO,CAAC,IAAK,OAAO,QAAQwqB,EAAM,KAAK,EACzC74B,EAAE,WAAW,IAAI,EACnBg0B,EAAG,iBAAiBh0B,EAAE,MAAM,CAAC,EAAE,YAAA,EAAeqO,CAAC,EACtCrO,IAAM,QACf85B,GAAe9F,EAAI3lB,CAAC,EAEDqtB,GAAA1H,EAAIh0B,EAAGqO,CAAC,EAIjC,OAAAkxB,EAAO,YAAYvL,CAAE,EACrB6E,EAAM,GAAK7E,EAEP6E,EAAM,WACJ,OAAOA,EAAM,UAAY,SAChBytD,GAAAztD,EAAM,SAAU7E,CAAE,EAEvB6E,EAAA,SAAS,QAASu1C,GAAU,CAChCkY,GAAWlY,EAAOp6C,CAAE,CAAA,CACrB,GAGEA,CACT,CAEgB,SAAAuyD,GACd1tD,EACA0G,EACM,CACF,OAAO1G,GAAU,UAAY,CAACA,EAAM,KAGpC,MAAM,QAAQA,EAAM,QAAQ,GACxBA,EAAA,SAAS,QAASu1C,GAAU,CAC3Bv1C,EAAM,IAGE0tD,GAAAnY,EAAOv1C,EAAM,EAAE,CAAA,CAC7B,EAEI0G,EAAA,YAAY1G,EAAM,EAAE,EAC7B,CAGgB,SAAA2tD,GACdC,EACAC,EACAnnD,EACM,CACN,GAAI,CAACknD,EAAS,IAAM,CAACC,EAAS,GAC5B,OAEFnnD,EACEA,GACAknD,EAAS,GAAG,eACZ,SAAS,MACT,SAAS,gBACL,MAAAE,EAASF,EAAS,MAAM,IACxBG,EAASF,EAAS,MAAM,IAG5B,GAAAD,EAAS,MAAQC,EAAS,KAC1BD,EAAS,KAAOC,EAAS,KACvBE,GAAUD,IAAWC,IAAWD,EAClC,CAIApnD,EAAO,aAAa+mD,GAAWI,EAAUnnD,CAAM,EAAGknD,EAAS,EAAE,EAC7D,MACF,CAEM,MAAAzyD,EAAM0yD,EAAS,GAAKD,EAAS,GAC7BI,EAAWJ,EAAS,MACpBK,EAAWJ,EAAS,MAE1B,UAAW1mF,KAAK6mF,EACR7mF,KAAK8mF,IACL9mF,EAAE,WAAW,IAAI,EAChBg0B,EAAA,oBAAoBh0B,EAAE,MAAM,CAAC,EAAE,cAAe6mF,EAAS7mF,CAAC,CAAC,EAE5Dg0B,EAAG,gBAAgBh0B,CAAC,GAK1B,UAAWA,KAAK8mF,EAAU,CAClB,MAAAC,EAAWF,EAAS7mF,CAAC,EACrBgnF,EAAWF,EAAS9mF,CAAC,EAC3B,GAAIgnF,GAAYD,EACV,GAAA/mF,EAAE,WAAW,IAAI,EAAG,CACtB,MAAMy4B,EAAOz4B,EAAE,MAAM,CAAC,EAAE,YAAY,EACjCg0B,EAAA,oBAAoByE,EAAMsuD,CAAQ,EAClC/yD,EAAA,iBAAiByE,EAAMuuD,CAAQ,CAAA,SACzBhnF,IAAM,QAAS,CACxB,UAAWinF,KAAMF,EACTE,KAAMD,GACVjtD,GAAgB/F,EAAIizD,CAAE,EAG1BntD,GAAe9F,EAAIgzD,CAAQ,CAAA,MAERtrD,GAAA1H,EAAIh0B,EAAGgnF,CAAQ,CAGxC,CAEM,MAAAE,EAAcT,EAAS,UAAY,GACnCU,EAAcT,EAAS,UAAY,GACrC,GAAA,OAAOS,GAAe,SACxBnzD,EAAG,UAAY,GACfsyD,GAAWa,EAAanzD,CAAE,UAEtB,OAAOkzD,GAAe,SACxBlzD,EAAG,UAAY,GACHmzD,EAAA,QAASjpD,GAAS,CAC5BooD,GAAWpoD,EAAMlK,CAAE,CAAA,CACpB,MACI,CACL,MAAMozD,EAAkB,KAAK,IAAIF,EAAY,OAAQC,EAAY,MAAM,EACvE,QAASzwF,EAAI,EAAGA,EAAI0wF,EAAiB1wF,IACnC8vF,GAAWU,EAAYxwF,CAAC,EAAGywF,EAAYzwF,CAAC,EAAGs9B,CAAE,EAE3CmzD,EAAY,OAASD,EAAY,OACnCC,EAAY,MAAMD,EAAY,MAAM,EAAE,QAAShpD,GAAS,CACtDooD,GAAWpoD,EAAMlK,CAAE,CAAA,CACpB,EACQmzD,EAAY,OAASD,EAAY,QAC1CA,EAAY,MAAMC,EAAY,MAAM,EAAE,QAASjpD,GAAS,CACtDqoD,GAAaroD,EAAMlK,CAAE,CAAA,CACtB,CAEL,CAEJ,CAGO,SAASqzD,GACd9nD,EAA6B,SAAS,gBACtCmnD,EACAD,EACM,CACDC,EAAS,GAKH,CAACD,GAAY,CAACA,EAAS,IAChCF,GAAaG,EAAUnnD,CAAM,EAC7B+mD,GAAWI,EAAUnnD,CAAM,GAEhBinD,GAAAC,EAAUC,EAAUnnD,CAAM,GARjCknD,GACFF,GAAaE,EAAUlnD,CAAM,EAE/B+mD,GAAWI,EAAUnnD,CAAM,EAO/B,CAIA,MAAM+nD,OAAuB,IAGb,SAAAxuD,GACd9E,EACAuzD,EAAyBD,GAClB,CAEH,IAAAzuD,EAAQ0uD,EAAM,IAAIvzD,CAAE,EACxB,OAAI6E,IAGJA,EAAQwtD,GAAQryD,CAAE,EACZuzD,EAAA,IAAIvzD,EAAI6E,CAAK,EACZA,EACT,CAGO,SAASK,GACdlF,EACAsqC,EACAipB,EAAyBD,GACzB,CACM,MAAAzuD,EAAQC,GAAS9E,EAAIuzD,CAAK,EAC3B1uD,EAAM,YACHA,EAAA,UAAYwtD,GAAQryD,CAAE,EAC5BwzD,GAAgB3uD,EAAM,UAAU,MAAOA,EAAM,MAAO,EAAI,GAE1DylC,EAAOzlC,EAAM,SAAS,CACxB,CAIgB,SAAA4uD,GAAyBF,EAAQD,GAAkB,CACjE,MAAM5R,EAAU,MAAM,KAAK6R,EAAM,QAAS,CAAA,EAC1C,SAAW,CAACvzD,EAAI6E,CAAK,IAAK68C,EAAS,CACjC,MAAMgS,EAAY7uD,EAAM,UACpB6uD,IACFlB,GAAW3tD,EAAO6uD,CAAS,EAE3B7uD,EAAM,MAAQ6uD,EAAU,MACxB7uD,EAAM,UAAY,OAEtB,CACF,CAEgB,SAAAO,GAAkBmuD,EAAQD,GAAkB,CAC1DK,GAAa,IAAMF,GAAyBF,CAAK,EAAG,EAAE,CACxD,CCjOO,SAASK,IAAkB,CAE1B,MAAAC,MAAyB,IAC/B,IAAIC,EAAqD,KAGnD,MAAAC,MAAqB,IAC3B,IAAIC,EAAc,GAGlB,SAASC,EAAkBC,EAAuC,CAChE,MAAMtqD,EAAWkqD,EACXK,EAAMvqD,EAAS,WACfuqD,KAAOvqD,EAAS,SACXA,EAAA,OAAOuqD,CAAG,EAAID,GAEzB,SAASE,EAASpB,EAAsC,CAClD,IAAAqB,EACA,OAAOrB,GAAY,WACrBqB,EAAiBrB,EAAyBppD,EAAS,OAAOuqD,CAAG,CAAC,EAE9CE,EAAArB,EA6BdppD,EAAS,OAAOuqD,CAAG,IAAME,IAClBzqD,EAAA,OAAOuqD,CAAG,EAAIE,EACvBC,EAAe1qD,CAAQ,EAE3B,CACS,OAAAA,EAAA,aACF,CAACA,EAAS,OAAOuqD,CAAG,EAAGC,CAA2B,CAC3D,CAGA,SAASG,EAAgBL,EAAiB,CAClC,KAAA,CAACM,EAAKC,CAAM,EAAIR,EAAS,CAAE,QAASC,EAAc,EACjD,OAAAM,CACT,CAWS,SAAAE,EAAUC,EAAgBC,EAAoB,CACrD,MAAMhrD,EAAWkqD,EACXK,EAAMvqD,EAAS,YAChBA,EAAS,iBACZA,EAAS,eAAiB,IAE5BA,EAAS,eAAe,KAAK,CAAE,OAAA+qD,EAAQ,KAAAC,EAAM,IAAAT,EAAK,EACzCvqD,EAAA,aACX,CAEA,SAASirD,EAAajrD,EAA6B,CAC5CA,EAAS,iBAGdA,EAAS,eAAe,QAAQ,CAAC,CAAE,OAAA+qD,EAAQ,KAAAC,EAAM,IAAAT,KAAU,CACnD,MAAAW,EAAalrD,EAAS,QAAQuqD,CAAG,EAOvC,GALE,CAACS,GACD,CAACE,GACD,CAACA,EAAW,MACZF,EAAK,SAAWE,EAAW,KAAK,QAChCF,EAAK,KAAK,CAACt6E,EAAG5X,IAAM4X,IAAMw6E,EAAW,KAAMpyF,CAAC,CAAC,EAC/B,CACdoyF,EAAW,UAAU,EACrB,MAAMC,EAAUJ,IAChB,GAAII,aAAmB,QACf,MAAA,IAAI,MAAM,4CAA4C,EAErDnrD,EAAA,QAAQuqD,CAAG,EAAI,CAAE,KAAMS,EAAO,CAAC,GAAGA,CAAI,EAAI,OAAW,QAAAG,CAAQ,CACxE,CAAA,CACD,EACDnrD,EAAS,eAAiB,GAC5B,CAEA,SAASorD,EAAeloD,EAA8B,CAC9C,MAAA0nD,EAAMD,EAAOznD,CAAE,EACrB,OAAA0nD,EAAI,QAAU1nD,EACPmoD,EAAY,IAAInpD,IAAS0oD,EAAI,QAAQ,GAAG1oD,CAAI,EAAG,CAAA,CAAE,CAC1D,CAGS,SAAAmpD,EAAYnoD,EAAc8nD,EAAwB,CACzD,MAAMhrD,EAAWkqD,EACXK,EAAMvqD,EAAS,cACf2pD,EAAQ3pD,EAAS,UAAUuqD,CAAG,GAAK,CAAE,GAAArnD,EAAQ,KAAM,QAMzD,OAJE,CAAC8nD,GACD,CAACrB,EAAM,MACPqB,EAAK,SAAWrB,EAAM,KAAK,QAC3BqB,EAAK,KAAK,CAACM,EAAKxyF,IAAMwyF,IAAQ3B,EAAM,KAAM7wF,CAAC,CAAC,KAE5C6wF,EAAM,GAAKzmD,EACXymD,EAAM,KAAOqB,EAAO,CAAC,GAAGA,CAAI,EAAI,QAEzBhrD,EAAA,UAAUuqD,CAAG,EAAIZ,EACjB3pD,EAAA,gBACF2pD,EAAM,EACf,CAGA,SAASe,EAAe1qD,EAAmC,CACzDmqD,EAAe,IAAInqD,CAAQ,EACtBoqD,IACWA,EAAA,GACd,WAAWmB,EAAc,CAAC,EAE9B,CAEA,SAASA,GAAe,CACtB,KAAOpB,EAAe,MAAM,CACpB,MAAAqB,EAAU,CAAC,GAAGrB,CAAc,EAClCA,EAAe,MAAM,EACbqB,EAAA,QAASxrD,GAAa,CAC5ByrD,EAAOzrD,EAAS,UAAWA,EAAS,UAAWA,EAAS,KAAK,CAAA,CAC9D,CACH,CACcoqD,EAAA,EAChB,CAGA,SAASqB,EACPC,EACAC,EACApD,EAAe,CAAA,EACI,CACf,IAAAvoD,EAAWiqD,EAAmB,IAAI0B,CAAS,EAC3C,CAAC3rD,GAAYA,EAAS,YAAc0rD,GAC3B1rD,EAAA,CACT,UAAA0rD,EACA,MAAAnD,EACA,OAAQ,CAAC,EACT,WAAY,EACZ,QAAS,CAAC,EACV,YAAa,EACb,eAAgB,CAAC,EACjB,UAAW,CAAC,EACZ,cAAe,EACf,SAAU,CAAC,EACX,QAAS,GACT,UAAAoD,EACA,MAAO,MAAA,EAEU1B,EAAA,IAAI0B,EAAW3rD,CAAQ,GAE1CA,EAAS,MAAQuoD,EAGQ2B,EAAAlqD,EAG3BA,EAAS,WAAa,EACtBA,EAAS,YAAc,EACvBA,EAAS,cAAgB,EAOnB,MAAA8oD,EAAW4C,EAAUnD,CAAK,EACpB,OAAAkB,GAAAkC,EAAW7C,EAAU9oD,EAAS,KAAK,EAC/CA,EAAS,MAAQ8oD,EAEjB9oD,EAAS,QAAU,GAEQkqD,EAAA,KAI3Be,EAAajrD,CAAQ,EAEdA,CACT,CAGA,SAAS4rD,EAAQ5rD,EAA6B,CAC5CA,EAAS,QAAQ,QAASvoC,GAAMA,EAAE,WAAW,EACzCuoC,EAAS,UACFA,EAAA,SAAS,QAAQ4rD,CAAO,EAE/B5rD,EAAS,WAAa,cAAeA,EAAS,YAChDA,EAAS,UAAU,UAAY,IAEdiqD,EAAA,OAAOjqD,EAAS,SAAS,CAC9C,CAEO,MAAA,CACL,SAAAqqD,EACA,OAAAM,EACA,UAAAG,EACA,eAAAM,EACA,YAAAC,EACA,OAAAI,EACA,QAAAG,EACA,eAAAlB,CAAA,CAEJ,CAmDO,SAASmB,IAAgB,CAM1B,IAAAC,EAGJ,SAASC,EAAYhB,EAAgB,CACpBe,EAAAf,EAGRA,IACQe,EAAA,IACjB,CAGA,MAAME,CAAI,CACR,gBAA+B,IAC/B,KAAM,CACAF,GAAgB,CAAC,KAAK,YAAY,IAAIA,CAAY,GAC/C,KAAA,YAAY,IAAIA,CAAY,CAErC,CACA,QAAS,CACP,KAAK,YAAY,QAASf,GAAWA,EAAQ,CAAA,CAC/C,CACF,CAEM,MAAAkB,MAAsB,QAGnB,SAAAC,EAAOx3D,EAAuB6G,EAAkB,CACnD,IAAA4wD,EAAYF,EAAgB,IAAIv3D,CAAM,EACrCy3D,IACHA,MAAgB,IACAF,EAAA,IAAIv3D,EAAQy3D,CAAS,GAEnC,IAAAb,EAAMa,EAAU,IAAI5wD,CAAG,EAC3B,OAAK+vD,IACHA,EAAM,IAAIU,EACAG,EAAA,IAAI5wD,EAAK+vD,CAAG,GAEjBA,CACT,CAEA,SAASc,EAAcl3D,EAAYo2D,EAAUe,EAAeC,EAAc,CACxE,GAAI,CAAC,MAAM,QAAQp3D,CAAG,EACpB,OAEF,MAAMq3D,EAAc,MAAM,UACpBC,EAAa,OAAO,OAAOD,CAAW,EAE5C,CAAC,OAAQ,MAAO,QAAS,UAAW,SAAU,OAAQ,SAAS,EAAE,QAC9D1zD,GAAW,CACC2zD,EAAA3zD,CAAM,EAAI,YAAaqJ,EAAa,CAG7C,MAAI,CAAC,OAAQ,UAAW,QAAQ,EAAE,SAASrJ,CAAM,IAC9CA,IAAW,SAAWqJ,EAAK,MAAM,CAAC,EAAIA,GAAM,QAC3C,CAAC5B,EAAMC,IAAU,CACXksD,GAAansD,CAAI,IACd4B,EAAA3B,CAAK,EAAI8rD,EAAa/rD,CAAI,GAEjCgrD,EAAI,IAAI,CACV,CAAA,EAGHiB,EAAoB1zD,CAAM,EAAE,MAAM,KAAMqJ,CAAI,EAC5B,KAAK,OACf,CAEX,CAAA,EAGK,OAAA,eAAehN,EAAKs3D,CAAU,EAqBjCt3D,EAAA,QAAQ,CAACoL,EAAWC,IAAkB,CACpCksD,GAAansD,CAAI,IACfpL,EAAAqL,CAAK,EAAI8rD,EAAa/rD,CAAI,GAEhCgrD,EAAI,IAAI,CAAA,CACT,CACH,CAeA,SAASgB,EAAsC12D,EAAW,CACvD,cAAO,KAAKA,CAAG,EAAqB,QAAS2F,GAAQ,CAC9C,MAAA+vD,EAAMY,EAAOt2D,EAAK2F,CAAG,EAEvB,IAAAF,EAAQzF,EAAI2F,CAAG,EAEZ,OAAA,eAAe3F,EAAK2F,EAAK,CAC9B,aAAc,GACd,WAAY,GAOZ,KAAM,CACA,OAAAkxD,GAAapxD,CAAK,IAChB,MAAM,QAAQA,CAAK,EAEP+wD,EAAA/wD,EAAOiwD,EAAKgB,CAAY,EAGtCA,EAAajxD,CAAK,GAItBiwD,EAAI,IAAI,EACDjwD,CACT,EAEA,IAAI+tD,EAAU,CACR/tD,IAAU+tD,IAEJ/tD,EAAA+tD,EACRkC,EAAI,OAAO,EAEf,CAAA,CACD,CAAA,CACF,EAEM11D,CACT,CAEA,SAASg1D,EAAavvD,EAAU,CACvB,OAAAixD,EAAa,CAAE,MAAAjxD,CAAA,CAAO,CAC/B,CAEA,MAAMqxD,EAAWC,EAejB,SAASA,EAAsC/2D,EAAW,CACpD,GAAA,CAAC62D,GAAa72D,CAAG,EACZ,OAAAA,EAGT,MAAMqM,EAA2B,CAG/B,IAAIvN,EAAQ6G,EAAKq4C,EAAU,CAKzB,IAAIr+C,EAAS,QAAQ,IAAIb,EAAQ6G,EAAKq4C,CAAQ,EAGxC,MAAA0X,EAAMY,EAAOx3D,EAAQ6G,CAAG,EAG9B,GAAIkxD,GAAal3D,CAAM,GAAK,EAAE,cAAeA,GAAS,CAgB9C,MAAAq3D,EAAYD,EAAap3D,CAAM,EAEjC,MAAM,QAAQA,CAAM,IACtBq3D,EAAU,gBAAqBtB,GASxB/1D,EAAAq3D,CACX,CAEA,OAAAtB,EAAI,IAAI,EAED/1D,CACT,EAIA,IAAIb,EAAQ6G,EAAKF,EAAOu4C,EAAU,CAGhC,MAAMuV,EAAW,QAAQ,IAAIz0D,EAAQ6G,EAAKq4C,CAAQ,EAC5Cr+C,EAAS,QAAQ,IAAIb,EAAQ6G,EAAKF,EAAOu4C,CAAQ,EAEvD,GAAIr4C,GAAO,kBACF,OAAAhG,EAGT,GAAI4zD,IAAa9tD,EAAO,CAKlB,IAAAiwD,EACA,MAAM,QAAQ52D,CAAM,EACtB42D,EAAM52D,EAAO,gBAGP42D,EAAAY,EAAOx3D,EAAQ6G,CAAG,EAG1B+vD,EAAI,OAAO,CACb,CAEO,OAAA/1D,CACT,EAGA,eAAeb,EAAQ6G,EAAK,CAI1B,GAAI,EADWA,KAAO7G,GAEb,MAAA,GAGT,IAAIy0D,EAAW,OAAO5tD,GAAQ,SAAW,OAAY7G,EAAO6G,CAAG,EAC3DkxD,GAAatD,CAAQ,IACZA,EAAA,MAAM,QAAQA,CAAQ,EAAI,CAAC,GAAGA,CAAQ,EAAI,CAAE,GAAGA,IAG5D,MAAM5zD,EAAS,QAAQ,eAAeb,EAAQ6G,CAAG,EAGjD,GAAIhG,EAAQ,CACN,IAAA+1D,EACA,MAAM,QAAQ52D,CAAM,EACtB42D,EAAM52D,EAAO,gBAGP42D,EAAAY,EAAOx3D,EAAQ6G,CAAG,EAG1B+vD,EAAI,OAAO,CACb,CAEO,OAAA/1D,CACT,EAGA,IAAIb,EAAQ6G,EAAK,CAER,OAAAA,IAAQ,aAAeA,KAAO7G,CACvC,CAAA,EAmDK,OAHO,IAAI,MAAMkB,EAAKqM,CAAO,CAItC,CAGS,SAAA4qD,EAAKh5D,EAAcuC,EAAwB,CAC5C,MAAA02D,EAAgBH,EAAa94D,CAAK,EACxC,OAAAk5D,EAAQD,EAAe12D,CAAE,EAClB02D,CACT,CAGS,SAAAC,EAAQl5D,EAAcuC,EAAiB,CAC3CA,EAAA,WAAW,QAAS4G,GAAS,CAC9B,OAAQA,EAAK,SAAU,CACrB,IAAK,GACH,MAAMgwD,EAAchwD,EACpB,CAAC,GAAGgwD,EAAY,UAAU,EAAE,QAASnvD,GAAS,CAC5C,MAAMovD,EAAWpvD,EAAK,KAChBqvD,EAAYrvD,EAAK,MACvB,GAAIovD,IAAa,UAEX,GAAAhc,GAAa+b,CAAW,EAAG,CAE7B,MAAMG,EAAYH,EAElBjB,EAAY,IAAM,CAChBoB,EAAU,QACRC,GAAev5D,EAAOq5D,CAAS,GAAKC,EAAU,KAAA,CACjD,EAESA,EAAA,iBAAiB,SAAW11F,GAAM,CAC1C41F,GACEx5D,EACAq5D,EACCz1F,EAAE,OAA4B,KAAA,CACjC,CACD,CAAA,SACQu5E,GAAgBgc,CAAW,EAAG,CAEvC,MAAMG,EAAYH,EAElBjB,EAAY,IAAM,CAChBoB,EAAU,QAAUC,GAAev5D,EAAOq5D,CAAS,EAAE,SACnDC,EAAU,KAAA,CACZ,CACD,EAESA,EAAA,iBAAiB,SAAW11F,GAAM,CAC1C,MAAMi9B,EAASj9B,EAAE,OACX4jC,EAAQ3G,EAAO,MACjBA,EAAO,QACT44D,GAAkBF,GAAev5D,EAAOq5D,CAAS,EAAG7xD,CAAK,EAEzDmmC,GAAgB4rB,GAAev5D,EAAOq5D,CAAS,EAAG7xD,CAAK,CACzD,CACD,CAAA,SACQy1C,GAASkc,CAAW,EAAG,CAEhC,MAAMG,EAAYH,EAElBjB,EAAY,IAAM,CACNoB,EAAA,MAAQC,GAAev5D,EAAOq5D,CAAS,CAAA,CAClD,EAESC,EAAA,iBAAiB,SAAW11F,GAAM,CAC1C41F,GACEx5D,EACAq5D,EACCz1F,EAAE,OAA4B,KAAA,CACjC,CACD,CAAA,KACI,CAEL,MAAM01F,EAAYH,EAIlBjB,EAAY,IAAM,CACNoB,EAAA,MAAQC,GAAev5D,EAAOq5D,CAAS,CAAA,CAClD,EAEK,MAAA1qD,EAAM/qC,GAAa,CACvB41F,GACEx5D,EACAq5D,EACCz1F,EAAE,OAA4B,KAAA,CACjC,EAEQ01F,EAAA,iBAAiB,QAAS3qD,CAAE,CAExC,MACSyqD,IAAa,SAEtBlB,EAAY,IAAM,CACJiB,EAAA,UAAYI,GAAev5D,EAAOq5D,CAAS,CAAA,CACxD,EACQD,IAAa,UAEtBlB,EAAY,IAAM,CACJiB,EAAA,UAAYI,GAAev5D,EAAOq5D,CAAS,CAAA,CACxD,CACH,CACD,EAEGF,EAAY,WAAW,OAAS,GAClCD,EAAQl5D,EAAOm5D,CAAW,EAE5B,MACF,IAAK,GACG,MAAAO,EAAcvwD,EAAK,aAAe,GAClCwwD,EAAM,4BACNnkC,EAAUmkC,EAAI,KAAKD,CAAW,EAChClkC,GAAWA,EAAQ,CAAC,GAEtB0iC,EAAY,IAAM,CAChB/uD,EAAK,YAAcuwD,EAAY,QAC7BC,EACAJ,GAAev5D,EAAOw1B,EAAQ,CAAC,CAAC,CAAA,CAClC,CACD,EAEH,KACJ,CAAA,CACD,CACH,CAEA,MAAO,CAAE,YAAA0iC,EAAa,aAAAO,EAAc,IAAA1B,EAAK,aAAA+B,EAAc,SAAAD,EAAU,KAAAG,EACnE,CAEa,MAAAY,GAAU5B,GAAc;;;;;;;;6CC7yBrC,IAAI6B,EAAqB,OAAO,IAAI,4BAA4B,EAC9DC,EAAsB,OAAO,IAAI,gBAAgB,EACnD,SAASC,EAAQt3D,EAAMyL,EAAQ8rD,EAAU,CACvC,IAAItyD,EAAM,KAGV,GAFWsyD,IAAX,SAAwBtyD,EAAM,GAAKsyD,GACxB9rD,EAAO,MAAlB,SAA0BxG,EAAM,GAAKwG,EAAO,KACxC,QAASA,EAAQ,CACnB8rD,EAAW,CAAA,EACX,QAASC,KAAY/rD,EACT+rD,IAAV,QAAuBD,EAASC,CAAQ,EAAI/rD,EAAO+rD,CAAQ,EACjE,MAASD,EAAW9rD,EAClB,OAAAA,EAAS8rD,EAAS,IACX,CACL,SAAUH,EACV,KAAMp3D,EACN,IAAKiF,EACL,IAAgBwG,IAAX,OAAoBA,EAAS,KAClC,MAAO8rD,CACX,CACC,CACe,OAAAE,GAAA,SAAGJ,EACRI,GAAA,IAAGH,EACdG,GAAA,KAAeH;;;;;;;;6CCtBf,IAAIF,EAAqB,OAAO,IAAI,4BAA4B,EAC9DM,EAAoB,OAAO,IAAI,cAAc,EAC7CL,EAAsB,OAAO,IAAI,gBAAgB,EACjDM,EAAyB,OAAO,IAAI,mBAAmB,EACvDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAqB,OAAO,IAAI,eAAe,EAC/CC,EAAyB,OAAO,IAAI,mBAAmB,EACvDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAkB,OAAO,IAAI,YAAY,EACzCC,EAAkB,OAAO,IAAI,YAAY,EACzCC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAwB,OAAO,SACjC,SAASC,EAAcC,EAAe,CACpC,OAAaA,IAAT,MAAuC,OAAOA,GAApB,SAA0C,MACxEA,EACGF,GAAyBE,EAAcF,CAAqB,GAC7DE,EAAc,YAAY,EACN,OAAOA,GAAtB,WAAsCA,EAAgB,KAC9D,CACD,IAAIC,EAAuB,CACvB,UAAW,UAAY,CACrB,MAAO,EACR,EACD,mBAAoB,UAAY,CAAE,EAClC,oBAAqB,UAAY,CAAE,EACnC,gBAAiB,UAAY,CAAE,CAChC,EACDC,EAAS,OAAO,OAChBC,EAAc,CAAA,EAChB,SAASC,EAAUzG,EAAO0G,EAASC,EAAS,CAC1C,KAAK,MAAQ3G,EACb,KAAK,QAAU0G,EACf,KAAK,KAAOF,EACZ,KAAK,QAAUG,GAAWL,CAC3B,CACDG,EAAU,UAAU,iBAAmB,GACvCA,EAAU,UAAU,SAAW,SAAUG,EAAclvB,EAAU,CAC/D,GACe,OAAOkvB,GAApB,UACe,OAAOA,GAAtB,YACQA,GAAR,KAEA,MAAM,MACJ,wGACN,EACE,KAAK,QAAQ,gBAAgB,KAAMA,EAAclvB,EAAU,UAAU,CACvE,EACA+uB,EAAU,UAAU,YAAc,SAAU/uB,EAAU,CACpD,KAAK,QAAQ,mBAAmB,KAAMA,EAAU,aAAa,CAC/D,EACA,SAASmvB,GAAiB,CAAE,CAC5BA,EAAe,UAAYJ,EAAU,UACrC,SAASK,EAAc9G,EAAO0G,EAASC,EAAS,CAC9C,KAAK,MAAQ3G,EACb,KAAK,QAAU0G,EACf,KAAK,KAAOF,EACZ,KAAK,QAAUG,GAAWL,CAC3B,CACD,IAAIS,EAA0BD,EAAc,UAAY,IAAID,EAC5DE,EAAuB,YAAcD,EACrCP,EAAOQ,EAAwBN,EAAU,SAAS,EAClDM,EAAuB,qBAAuB,GAC9C,IAAIC,EAAc,MAAM,QACxB,SAASjtD,GAAO,CAAE,CAClB,IAAIktD,EAAuB,CAAE,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,IAAM,EAC/DC,EAAiB,OAAO,UAAU,eACpC,SAASC,EAAap5D,EAAMiF,EAAKgtD,EAAO,CACtC,IAAIoH,EAAUpH,EAAM,IACpB,MAAO,CACL,SAAUmF,EACV,KAAMp3D,EACN,IAAKiF,EACL,IAAgBo0D,IAAX,OAAqBA,EAAU,KACpC,MAAOpH,CACX,CACC,CACD,SAASqH,EAAmBC,EAAY7G,EAAQ,CAC9C,OAAO0G,EAAaG,EAAW,KAAM7G,EAAQ6G,EAAW,KAAK,CAC9D,CACD,SAASC,EAAeC,EAAQ,CAC9B,OACe,OAAOA,GAApB,UACSA,IAAT,MACAA,EAAO,WAAarC,CAEvB,CACD,SAASsC,EAAOz0D,EAAK,CACnB,IAAI00D,EAAgB,CAAE,IAAK,KAAM,IAAK,IAAI,EAC1C,MACE,IACA10D,EAAI,QAAQ,QAAS,SAAUk6C,EAAO,CACpC,OAAOwa,EAAcxa,CAAK,CAChC,CAAK,CAEJ,CACD,IAAIya,EAA6B,OACjC,SAASC,GAAc/1D,EAASmG,EAAO,CACrC,OAAoB,OAAOnG,GAApB,UAAwCA,IAAT,MAA4BA,EAAQ,KAAhB,KACtD41D,EAAO,GAAK51D,EAAQ,GAAG,EACvBmG,EAAM,SAAS,EAAE,CACtB,CACD,SAAS6vD,GAAgBC,EAAU,CACjC,OAAQA,EAAS,OAAM,CACrB,IAAK,YACH,OAAOA,EAAS,MAClB,IAAK,WACH,MAAMA,EAAS,OACjB,QACE,OACgB,OAAOA,EAAS,QAA7B,SACGA,EAAS,KAAK/tD,EAAMA,CAAI,GACtB+tD,EAAS,OAAS,UACpBA,EAAS,KACP,SAAUC,EAAgB,CACVD,EAAS,SAAvB,YACIA,EAAS,OAAS,YACnBA,EAAS,MAAQC,EACrB,EACD,SAAUpxD,EAAO,CACDmxD,EAAS,SAAvB,YACIA,EAAS,OAAS,WAAcA,EAAS,OAASnxD,EACvD,CACf,GACQmxD,EAAS,OACjB,CACQ,IAAK,YACH,OAAOA,EAAS,MAClB,IAAK,WACH,MAAMA,EAAS,MAClB,CACJ,CACD,MAAMA,CACP,CACD,SAASE,GAAa/H,EAAU7+C,EAAO6mD,EAAeC,EAAWxwB,GAAU,CACzE,IAAI3pC,GAAO,OAAOkyD,GACElyD,KAAhB,aAAsCA,KAAd,aAAoBkyD,EAAW,MAC3D,IAAIkI,GAAiB,GACrB,GAAalI,IAAT,KAAmBkI,GAAiB,OAEtC,QAAQp6D,GAAI,CACV,IAAK,SACL,IAAK,SACL,IAAK,SACHo6D,GAAiB,GACjB,MACF,IAAK,SACH,OAAQlI,EAAS,SAAQ,CACvB,KAAKkF,EACL,KAAKM,EACH0C,GAAiB,GACjB,MACF,KAAKlC,EACH,OACGkC,GAAiBlI,EAAS,MAC3B+H,GACEG,GAAelI,EAAS,QAAQ,EAChC7+C,EACA6mD,EACAC,EACAxwB,EACD,CAEN,CACJ,CACH,GAAIywB,GACF,OACGzwB,GAAWA,GAASuoB,CAAQ,EAC5BkI,GACQD,IAAP,GAAmB,IAAMN,GAAc3H,EAAU,CAAC,EAAIiI,EACxDlB,EAAYtvB,EAAQ,GACduwB,EAAgB,GACVE,IAAR,OACGF,EACCE,GAAe,QAAQR,EAA4B,KAAK,EAAI,KAChEK,GAAatwB,GAAUt2B,EAAO6mD,EAAe,GAAI,SAAUhvF,GAAG,CAC5D,OAAOA,EACnB,CAAW,GACOy+D,IAAR,OACC6vB,EAAe7vB,EAAQ,IACrBA,GAAW2vB,EACV3vB,GACAuwB,GACWvwB,GAAS,KAAjB,MACAuoB,GAAYA,EAAS,MAAQvoB,GAAS,IACnC,IACC,GAAKA,GAAS,KAAK,QAClBiwB,EACA,KACD,EAAG,KACRQ,EAChB,GACU/mD,EAAM,KAAKs2B,EAAQ,GACvB,EAEJywB,GAAiB,EACjB,IAAIC,GAAwBF,IAAP,GAAmB,IAAMA,EAAY,IAC1D,GAAIlB,EAAY/G,CAAQ,EACtB,QAAS1vF,GAAI,EAAGA,GAAI0vF,EAAS,OAAQ1vF,KAClC23F,EAAYjI,EAAS1vF,EAAC,EACpBw9B,GAAOq6D,GAAiBR,GAAcM,EAAW33F,EAAC,EAClD43F,IAAkBH,GACjBE,EACA9mD,EACA6mD,EACAl6D,GACA2pC,EACV,UACannE,GAAI61F,EAAcnG,CAAQ,EAAmB,OAAO1vF,IAAtB,WACvC,IACE0vF,EAAW1vF,GAAE,KAAK0vF,CAAQ,EAAG1vF,GAAI,EACjC,EAAE23F,EAAYjI,EAAS,KAAM,GAAE,MAG9BiI,EAAYA,EAAU,MACpBn6D,GAAOq6D,GAAiBR,GAAcM,EAAW33F,IAAG,EACpD43F,IAAkBH,GACjBE,EACA9mD,EACA6mD,EACAl6D,GACA2pC,EACV,UACwB3pC,KAAb,SAAmB,CAC1B,GAAmB,OAAOkyD,EAAS,MAA/B,WACF,OAAO+H,GACLH,GAAgB5H,CAAQ,EACxB7+C,EACA6mD,EACAC,EACAxwB,EACR,EACI,MAAAt2B,EAAQ,OAAO6+C,CAAQ,EACjB,MACJ,mDACyB7+C,IAAtB,kBACG,qBAAuB,OAAO,KAAK6+C,CAAQ,EAAE,KAAK,IAAI,EAAI,IAC1D7+C,GACJ,2EACR,CACG,CACD,OAAO+mD,EACR,CACD,SAASE,GAAYpI,EAAUqI,EAAM5B,EAAS,CAC5C,GAAYzG,GAAR,KAAkB,OAAOA,EAC7B,IAAIjzD,EAAS,CAAE,EACbssB,GAAQ,EACV,OAAA0uC,GAAa/H,EAAUjzD,EAAQ,GAAI,GAAI,SAAUi7C,GAAO,CACtD,OAAOqgB,EAAK,KAAK5B,EAASze,GAAO3uB,IAAO,CAC5C,CAAG,EACMtsB,CACR,CACD,SAASu7D,GAAgBC,EAAS,CAChC,GAAWA,EAAQ,UAAf,GAAwB,CAC1B,IAAIC,EAAOD,EAAQ,QACnBC,EAAOA,EAAI,EACXA,EAAK,KACH,SAAUC,EAAc,EACZF,EAAQ,UAAd,GAAgCA,EAAQ,UAAf,MAC1BA,EAAQ,QAAU,EAAKA,EAAQ,QAAUE,EAC7C,EACD,SAAU/xD,EAAO,EACL6xD,EAAQ,UAAd,GAAgCA,EAAQ,UAAf,MAC1BA,EAAQ,QAAU,EAAKA,EAAQ,QAAU7xD,EAC7C,CACP,EACW6xD,EAAQ,UAAf,KAA4BA,EAAQ,QAAU,EAAKA,EAAQ,QAAUC,EACtE,CACD,GAAUD,EAAQ,UAAd,EAAuB,OAAOA,EAAQ,QAAQ,QAClD,MAAMA,EAAQ,OACf,CACD,IAAIG,EACe,OAAO,aAAtB,WACI,YACA,SAAUhyD,EAAO,CACf,GACe,OAAO,QAApB,UACe,OAAO,OAAO,YAA7B,WACA,CACA,IAAIqW,EAAQ,IAAI,OAAO,WAAW,QAAS,CACzC,QAAS,GACT,WAAY,GACZ,QACe,OAAOrW,GAApB,UACSA,IAAT,MACa,OAAOA,EAAM,SAA1B,SACI,OAAOA,EAAM,OAAO,EACpB,OAAOA,CAAK,EAClB,MAAOA,CACrB,CAAa,EACD,GAAI,CAAC,OAAO,cAAcqW,CAAK,EAAG,MAC9C,SACyB,OAAO,SAApB,UACe,OAAO,QAAQ,MAA9B,WACA,CACA,QAAQ,KAAK,oBAAqBrW,CAAK,EACvC,MACD,CACD,QAAQ,MAAMA,CAAK,CACpB,EACPiyD,EAAW,CACT,IAAKP,GACL,QAAS,SAAUpI,EAAU4I,EAAaC,EAAgB,CACxDT,GACEpI,EACA,UAAY,CACV4I,EAAY,MAAM,KAAM,SAAS,CAClC,EACDC,CACR,CACK,EACD,MAAO,SAAU7I,EAAU,CACzB,IAAI/hF,EAAI,EACR,OAAAmqF,GAAYpI,EAAU,UAAY,CAChC/hF,GACR,CAAO,EACMA,CACR,EACD,QAAS,SAAU+hF,EAAU,CAC3B,OACEoI,GAAYpI,EAAU,SAAUhY,EAAO,CACrC,OAAOA,CACR,CAAA,GAAK,CAAE,CAEX,EACD,KAAM,SAAUgY,EAAU,CACxB,GAAI,CAACsH,EAAetH,CAAQ,EAC1B,MAAM,MACJ,uEACV,EACM,OAAOA,CACR,CACL,EACgB,OAAA8I,GAAA,SAAG7C,EACH6C,GAAA,SAAGH,EACFG,GAAA,UAAGtC,EACJsC,GAAA,SAAG3D,EACH2D,GAAA,SAAGpD,EACEoD,GAAA,cAAGjC,EACNiC,GAAA,WAAGrD,EACLqD,GAAA,SAAGhD,EACoDgD,GAAA,gEACrE9B,EACF8B,GAAA,mBAA6B,CAC3B,UAAW,KACX,EAAG,SAAUvyC,EAAM,CACjB,OAAOywC,EAAqB,EAAE,aAAazwC,CAAI,CAChD,CACH,EACauyC,GAAA,MAAG,SAAUpuD,EAAI,CAC5B,OAAO,UAAY,CACjB,OAAOA,EAAG,MAAM,KAAM,SAAS,CACnC,CACA,EACAouD,GAAA,YAAsB,UAAY,CAChC,OAAO,IACT,EACAA,GAAA,aAAuB,SAAUl3D,EAAS2H,EAAQymD,EAAU,CAC1D,GAAapuD,GAAT,KACF,MAAM,MACJ,wDAA0DA,EAAU,GAC1E,EACE,IAAImuD,EAAQuG,EAAO,GAAI10D,EAAQ,KAAK,EAClCmB,GAAMnB,EAAQ,IAChB,GAAY2H,GAAR,KACF,IAAK+rD,MAAwB/rD,EAAO,MAAlB,SAA0BxG,GAAM,GAAKwG,EAAO,KAAMA,EAClE,CAAC0tD,EAAe,KAAK1tD,EAAQ+rD,EAAQ,GACzBA,KAAV,OACaA,KAAb,UACeA,KAAf,YACWA,KAAV,OAAiC/rD,EAAO,MAAlB,SACtBwmD,EAAMuF,EAAQ,EAAI/rD,EAAO+rD,EAAQ,GACxC,IAAIA,GAAW,UAAU,OAAS,EAClC,GAAUA,KAAN,EAAgBvF,EAAM,SAAWC,UAC5B,EAAIsF,GAAU,CACrB,QAASyD,GAAa,MAAMzD,EAAQ,EAAGh1F,GAAI,EAAGA,GAAIg1F,GAAUh1F,KAC1Dy4F,GAAWz4F,EAAC,EAAI,UAAUA,GAAI,CAAC,EACjCyvF,EAAM,SAAWgJ,EAClB,CACD,OAAO7B,EAAat1D,EAAQ,KAAMmB,GAAKgtD,CAAK,CAC9C,EACqB+I,GAAA,cAAG,SAAUjpD,EAAc,CAC9C,OAAAA,EAAe,CACb,SAAU+lD,EACV,cAAe/lD,EACf,eAAgBA,EAChB,aAAc,EACd,SAAU,KACV,SAAU,IACd,EACEA,EAAa,SAAWA,EACxBA,EAAa,SAAW,CACtB,SAAU8lD,EACV,SAAU9lD,CACd,EACSA,CACT,EACAipD,GAAA,cAAwB,SAAUh7D,EAAMyL,EAAQymD,EAAU,CACxD,IAAIsF,EACFvF,GAAQ,CAAE,EACVhtD,GAAM,KACR,GAAYwG,GAAR,KACF,IAAK+rD,KAAwB/rD,EAAO,MAAlB,SAA0BxG,GAAM,GAAKwG,EAAO,KAAMA,EAClE0tD,EAAe,KAAK1tD,EAAQ+rD,CAAQ,GACxBA,IAAV,OACaA,IAAb,UACeA,IAAf,aACCvF,GAAMuF,CAAQ,EAAI/rD,EAAO+rD,CAAQ,GACxC,IAAI0D,GAAiB,UAAU,OAAS,EACxC,GAAUA,KAAN,EAAsBjJ,GAAM,SAAWC,UAClC,EAAIgJ,GAAgB,CAC3B,QAASD,GAAa,MAAMC,EAAc,EAAG14F,GAAI,EAAGA,GAAI04F,GAAgB14F,KACtEy4F,GAAWz4F,EAAC,EAAI,UAAUA,GAAI,CAAC,EACjCyvF,GAAM,SAAWgJ,EAClB,CACD,GAAIj7D,GAAQA,EAAK,aACf,IAAKw3D,KAAc0D,GAAiBl7D,EAAK,aAAek7D,GAC3CjJ,GAAMuF,CAAQ,IAAzB,SACGvF,GAAMuF,CAAQ,EAAI0D,GAAe1D,CAAQ,GAChD,OAAO4B,EAAap5D,EAAMiF,GAAKgtD,EAAK,CACtC,EACA+I,GAAA,UAAoB,UAAY,CAC9B,MAAO,CAAE,QAAS,KACpB,EACkBA,GAAA,WAAG,SAAU7F,EAAQ,CACrC,MAAO,CAAE,SAAU4C,EAAwB,OAAQ5C,CAAM,CAC3D,EACsB6F,GAAA,eAAGxB,EACbwB,GAAA,KAAG,SAAUN,EAAM,CAC7B,MAAO,CACL,SAAUxC,EACV,SAAU,CAAE,QAAS,GAAI,QAASwC,CAAM,EACxC,MAAOF,EACX,CACA,EACAQ,GAAA,KAAe,SAAUh7D,EAAMm7D,EAAS,CACtC,MAAO,CACL,SAAUlD,EACV,KAAMj4D,EACN,QAAoBm7D,IAAX,OAAqB,KAAOA,CACzC,CACA,EACuBH,GAAA,gBAAG,SAAUI,EAAO,CACzC,IAAIC,EAAiBnC,EAAqB,EACxCoC,EAAoB,CAAA,EACtBpC,EAAqB,EAAIoC,EACzB,GAAI,CACF,IAAIC,EAAcH,EAAO,EACvBI,GAA0BtC,EAAqB,EACxCsC,KAAT,MACEA,GAAwBF,EAAmBC,CAAW,EAC3C,OAAOA,GAApB,UACWA,IAAT,MACe,OAAOA,EAAY,MAAlC,YACAA,EAAY,KAAKvvD,EAAM4uD,CAAiB,CAC3C,OAAQhyD,GAAO,CACdgyD,EAAkBhyD,EAAK,CAC3B,QAAY,CACCyyD,IAAT,MACWC,EAAkB,QAA3B,OACCD,EAAe,MAAQC,EAAkB,OACzCpC,EAAqB,EAAImC,CAC7B,CACH,EACAL,GAAA,yBAAmC,UAAY,CAC7C,OAAO9B,EAAqB,EAAE,iBAChC,EACW8B,GAAA,IAAG,SAAUS,EAAQ,CAC9B,OAAOvC,EAAqB,EAAE,IAAIuC,CAAM,CAC1C,EACAT,GAAA,eAAyB,SAAUzpD,EAAQmqD,EAAcC,EAAW,CAClE,OAAOzC,EAAqB,EAAE,eAAe3nD,EAAQmqD,EAAcC,CAAS,CAC9E,EACAX,GAAA,YAAsB,SAAUrxB,EAAU+qB,EAAM,CAC9C,OAAOwE,EAAqB,EAAE,YAAYvvB,EAAU+qB,CAAI,CAC1D,EACkBsG,GAAA,WAAG,SAAUY,EAAS,CACtC,OAAO1C,EAAqB,EAAE,WAAW0C,CAAO,CAClD,EACqBZ,GAAA,cAAG,UAAY,GACpCA,GAAA,iBAA2B,SAAUj2D,EAAOivD,EAAc,CACxD,OAAOkF,EAAqB,EAAE,iBAAiBn0D,EAAOivD,CAAY,CACpE,EACAgH,GAAA,UAAoB,SAAUa,EAAQnH,EAAM,CAC1C,OAAOwE,EAAqB,EAAE,UAAU2C,EAAQnH,CAAI,CACtD,EACsBsG,GAAA,eAAG,SAAUrxB,EAAU,CAC3C,OAAOuvB,EAAqB,EAAE,eAAevvB,CAAQ,CACvD,EACAqxB,GAAA,MAAgB,UAAY,CAC1B,OAAO9B,EAAqB,EAAE,OAChC,EACA8B,GAAA,oBAA8B,SAAU1G,EAAKuH,EAAQnH,EAAM,CACzD,OAAOwE,EAAqB,EAAE,oBAAoB5E,EAAKuH,EAAQnH,CAAI,CACrE,EACAsG,GAAA,mBAA6B,SAAUa,EAAQnH,EAAM,CACnD,OAAOwE,EAAqB,EAAE,mBAAmB2C,EAAQnH,CAAI,CAC/D,EACAsG,GAAA,gBAA0B,SAAUa,EAAQnH,EAAM,CAChD,OAAOwE,EAAqB,EAAE,gBAAgB2C,EAAQnH,CAAI,CAC5D,EACAsG,GAAA,QAAkB,SAAUa,EAAQnH,EAAM,CACxC,OAAOwE,EAAqB,EAAE,QAAQ2C,EAAQnH,CAAI,CACpD,EACAsG,GAAA,cAAwB,SAAUc,EAAaC,EAAS,CACtD,OAAO7C,EAAqB,EAAE,cAAc4C,EAAaC,CAAO,CAClE,EACAf,GAAA,WAAqB,SAAUe,EAASC,EAAY1tD,EAAM,CACxD,OAAO4qD,EAAqB,EAAE,WAAW6C,EAASC,EAAY1tD,CAAI,CACpE,EACc0sD,GAAA,OAAG,SAAUhH,EAAc,CACvC,OAAOkF,EAAqB,EAAE,OAAOlF,CAAY,CACnD,EACgBgH,GAAA,SAAG,SAAUU,EAAc,CACzC,OAAOxC,EAAqB,EAAE,SAASwC,CAAY,CACrD,EACAV,GAAA,qBAA+B,SAC7BvtD,EACAwuD,EACAC,EACA,CACA,OAAOhD,EAAqB,EAAE,qBAC5BzrD,EACAwuD,EACAC,CACJ,CACA,EACAlB,GAAA,cAAwB,UAAY,CAClC,OAAO9B,EAAqB,EAAE,eAChC,EACA8B,GAAA,QAAkB;;;;;;;;mEClhBD,CAAW,GAAC,WAA7B,cACG,UAAY,CACX,SAASmB,EAAyBlkD,EAAYmkD,EAAM,CAClD,OAAO,eAAe1D,EAAU,UAAWzgD,EAAY,CACrD,IAAK,UAAY,CACf,QAAQ,KACN,8DACAmkD,EAAK,CAAC,EACNA,EAAK,CAAC,CAClB,CACS,CACT,CAAO,CACF,CACD,SAAS/D,EAAcC,EAAe,CACpC,OAAaA,IAAT,MAAuC,OAAOA,GAApB,SACrB,MACTA,EACGF,IAAyBE,EAAcF,EAAqB,GAC7DE,EAAc,YAAY,EACN,OAAOA,GAAtB,WAAsCA,EAAgB,KAC9D,CACD,SAAS+D,EAASC,EAAgBC,EAAY,CAC5CD,GACIA,EAAiBA,EAAe,eAC/BA,EAAe,aAAeA,EAAe,OAChD,aACF,IAAIE,EAAaF,EAAiB,IAAMC,EACxCE,GAAwCD,CAAU,IAC/C,QAAQ,MACP,wPACAD,EACAD,CACD,EACAG,GAAwCD,CAAU,EAAI,GAC1D,CACD,SAAS9D,EAAUzG,EAAO0G,EAASC,EAAS,CAC1C,KAAK,MAAQ3G,EACb,KAAK,QAAU0G,EACf,KAAK,KAAOF,GACZ,KAAK,QAAUG,GAAWL,EAC3B,CACD,SAASO,GAAiB,CAAE,CAC5B,SAASC,EAAc9G,EAAO0G,EAASC,EAAS,CAC9C,KAAK,MAAQ3G,EACb,KAAK,QAAU0G,EACf,KAAK,KAAOF,GACZ,KAAK,QAAUG,GAAWL,EAC3B,CACD,SAASvsD,GAAO,CAAE,CAClB,SAAS0wD,EAAmB33D,EAAO,CACjC,MAAO,GAAKA,CACb,CACD,SAAS43D,EAAuB53D,EAAO,CACrC,GAAI,CACF23D,EAAmB33D,CAAK,EACxB,IAAI63D,EAA2B,EAChC,MAAW,CACVA,EAA2B,EAC5B,CACD,GAAIA,EAA0B,CAC5BA,EAA2B,QAC3B,IAAIC,EAAwBD,EAAyB,MACjDE,GACc,OAAO,QAAtB,YACC,OAAO,aACP/3D,EAAM,OAAO,WAAW,GAC1BA,EAAM,YAAY,MAClB,SACF,OAAA83D,EAAsB,KACpBD,EACA,2GACAE,EACV,EACeJ,EAAmB33D,CAAK,CAChC,CACF,CACD,SAASg4D,EAAyB/8D,EAAM,CACtC,GAAYA,GAAR,KAAc,OAAO,KACzB,GAAmB,OAAOA,GAAtB,WACF,OAAOA,EAAK,WAAag9D,GACrB,KACAh9D,EAAK,aAAeA,EAAK,MAAQ,KACvC,GAAiB,OAAOA,GAApB,SAA0B,OAAOA,EACrC,OAAQA,EAAI,CACV,KAAKq3D,EACH,MAAO,WACT,KAAKO,EACH,MAAO,WACT,KAAKD,EACH,MAAO,aACT,KAAKK,GACH,MAAO,WACT,KAAKiF,GACH,MAAO,eACT,KAAK9E,GACH,MAAO,UACV,CACD,GAAiB,OAAOn4D,GAApB,SACF,OACgB,OAAOA,EAAK,KAAzB,UACC,QAAQ,MACN,mHACD,EACHA,EAAK,SACf,CACU,KAAK03D,EACH,MAAO,SACT,KAAKI,GACH,OAAO93D,EAAK,aAAe,UAC7B,KAAK63D,EACH,OAAQ73D,EAAK,SAAS,aAAe,WAAa,YACpD,KAAK+3D,GACH,IAAImF,EAAYl9D,EAAK,OACrB,OAAAA,EAAOA,EAAK,YACZA,IACIA,EAAOk9D,EAAU,aAAeA,EAAU,MAAQ,GACnDl9D,EAAcA,IAAP,GAAc,cAAgBA,EAAO,IAAM,cAC9CA,EACT,KAAKi4D,GACH,OACGiF,EAAYl9D,EAAK,aAAe,KACxBk9D,IAAT,KACIA,EACAH,EAAyB/8D,EAAK,IAAI,GAAK,OAE/C,KAAKk4D,GACHgF,EAAYl9D,EAAK,SACjBA,EAAOA,EAAK,MACZ,GAAI,CACF,OAAO+8D,EAAyB/8D,EAAKk9D,CAAS,CAAC,CAC7D,MAAwB,CAAE,CACjB,CACH,OAAO,IACR,CACD,SAASC,EAAYn9D,EAAM,CACzB,GAAIA,IAASq3D,EAAqB,MAAO,KACzC,GACe,OAAOr3D,GAApB,UACSA,IAAT,MACAA,EAAK,WAAak4D,GAElB,MAAO,QACT,GAAI,CACF,IAAI3zD,EAAOw4D,EAAyB/8D,CAAI,EACxC,OAAOuE,EAAO,IAAMA,EAAO,IAAM,OAClC,MAAW,CACV,MAAO,OACR,CACF,CACD,SAAS64D,GAAW,CAClB,IAAIC,EAAanE,GAAqB,EACtC,OAAgBmE,IAAT,KAAsB,KAAOA,EAAW,SAAQ,CACxD,CACD,SAASC,GAAe,CACtB,OAAO,MAAM,uBAAuB,CACrC,CACD,SAASC,EAAY9xD,EAAQ,CAC3B,GAAI0tD,GAAe,KAAK1tD,EAAQ,KAAK,EAAG,CACtC,IAAI+xD,EAAS,OAAO,yBAAyB/xD,EAAQ,KAAK,EAAE,IAC5D,GAAI+xD,GAAUA,EAAO,eAAgB,MAAO,EAC7C,CACD,OAAkB/xD,EAAO,MAAlB,MACR,CACD,SAASgyD,EAA2BxL,EAAOyL,EAAa,CACtD,SAASC,GAAwB,CAC/BC,KACIA,GAA6B,GAC/B,QAAQ,MACN,0OACAF,CACZ,EACO,CACDC,EAAsB,eAAiB,GACvC,OAAO,eAAe1L,EAAO,MAAO,CAClC,IAAK0L,EACL,aAAc,EACtB,CAAO,CACF,CACD,SAASE,GAAyC,CAChD,IAAIC,EAAgBf,EAAyB,KAAK,IAAI,EACtD,OAAAgB,GAAuBD,CAAa,IAChCC,GAAuBD,CAAa,EAAI,GAC1C,QAAQ,MACN,6IACV,GACMA,EAAgB,KAAK,MAAM,IACTA,IAAX,OAA2BA,EAAgB,IACnD,CACD,SAAS1E,EAAap5D,EAAMiF,EAAKgtD,EAAO+L,GAAOC,GAAYC,GAAW,CACpE,IAAI7E,GAAUpH,EAAM,IACpB,OAAAjyD,EAAO,CACL,SAAUo3D,EACV,KAAMp3D,EACN,IAAKiF,EACL,MAAOgtD,EACP,OAAQ+L,EAChB,GAC2B3E,KAAX,OAAqBA,GAAU,QAAzC,KACI,OAAO,eAAer5D,EAAM,MAAO,CACjC,WAAY,GACZ,IAAK69D,CACjB,CAAW,EACD,OAAO,eAAe79D,EAAM,MAAO,CAAE,WAAY,GAAI,MAAO,IAAI,CAAE,EACtEA,EAAK,OAAS,GACd,OAAO,eAAeA,EAAK,OAAQ,YAAa,CAC9C,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO,CACf,CAAO,EACD,OAAO,eAAeA,EAAM,aAAc,CACxC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO,IACf,CAAO,EACD,OAAO,eAAeA,EAAM,cAAe,CACzC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAOi+D,EACf,CAAO,EACD,OAAO,eAAej+D,EAAM,aAAc,CACxC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAOk+D,EACf,CAAO,EACD,OAAO,SAAW,OAAO,OAAOl+D,EAAK,KAAK,EAAG,OAAO,OAAOA,CAAI,GACxDA,CACR,CACD,SAASs5D,EAAmBC,EAAY7G,EAAQ,CAC9C,OAAAA,EAAS0G,EACPG,EAAW,KACX7G,EACA6G,EAAW,MACXA,EAAW,OACXA,EAAW,YACXA,EAAW,UACnB,EACMA,EAAW,SACR7G,EAAO,OAAO,UAAY6G,EAAW,OAAO,WACxC7G,CACR,CACD,SAASyL,EAAkBz3D,EAAM,CAC/B8yD,EAAe9yD,CAAI,EACfA,EAAK,SAAWA,EAAK,OAAO,UAAY,GAC3B,OAAOA,GAApB,UACSA,IAAT,MACAA,EAAK,WAAawxD,KACDxxD,EAAK,SAAS,SAA9B,YACG8yD,EAAe9yD,EAAK,SAAS,KAAK,GAClCA,EAAK,SAAS,MAAM,SACnBA,EAAK,SAAS,MAAM,OAAO,UAAY,GACxCA,EAAK,SAAWA,EAAK,OAAO,UAAY,GACjD,CACD,SAAS8yD,EAAeC,EAAQ,CAC9B,OACe,OAAOA,GAApB,UACSA,IAAT,MACAA,EAAO,WAAarC,CAEvB,CACD,SAASsC,EAAOz0D,EAAK,CACnB,IAAI00D,EAAgB,CAAE,IAAK,KAAM,IAAK,IAAI,EAC1C,MACE,IACA10D,EAAI,QAAQ,QAAS,SAAUk6C,EAAO,CACpC,OAAOwa,EAAcxa,CAAK,CACpC,CAAS,CAEJ,CACD,SAAS0a,EAAc/1D,EAASmG,EAAO,CACrC,OAAoB,OAAOnG,GAApB,UACIA,IAAT,MACQA,EAAQ,KAAhB,MACG64D,EAAuB74D,EAAQ,GAAG,EAAG41D,EAAO,GAAK51D,EAAQ,GAAG,GAC7DmG,EAAM,SAAS,EAAE,CACtB,CACD,SAAS6vD,EAAgBC,EAAU,CACjC,OAAQA,EAAS,OAAM,CACrB,IAAK,YACH,OAAOA,EAAS,MAClB,IAAK,WACH,MAAMA,EAAS,OACjB,QACE,OACgB,OAAOA,EAAS,QAA7B,SACGA,EAAS,KAAK/tD,EAAMA,CAAI,GACtB+tD,EAAS,OAAS,UACpBA,EAAS,KACP,SAAUC,EAAgB,CACVD,EAAS,SAAvB,YACIA,EAAS,OAAS,YACnBA,EAAS,MAAQC,EACrB,EACD,SAAUpxD,EAAO,CACDmxD,EAAS,SAAvB,YACIA,EAAS,OAAS,WACnBA,EAAS,OAASnxD,EACtB,CACnB,GACYmxD,EAAS,OACrB,CACY,IAAK,YACH,OAAOA,EAAS,MAClB,IAAK,WACH,MAAMA,EAAS,MAClB,CACJ,CACD,MAAMA,CACP,CACD,SAASE,EAAa/H,EAAU7+C,EAAO6mD,EAAeC,GAAWxwB,GAAU,CACzE,IAAI3pC,GAAO,OAAOkyD,GACElyD,KAAhB,aAAsCA,KAAd,aAAoBkyD,EAAW,MAC3D,IAAIkI,GAAiB,GACrB,GAAalI,IAAT,KAAmBkI,GAAiB,OAEtC,QAAQp6D,GAAI,CACV,IAAK,SACL,IAAK,SACL,IAAK,SACHo6D,GAAiB,GACjB,MACF,IAAK,SACH,OAAQlI,EAAS,SAAQ,CACvB,KAAKkF,EACL,KAAKM,EACH0C,GAAiB,GACjB,MACF,KAAKlC,GACH,OACGkC,GAAiBlI,EAAS,MAC3B+H,EACEG,GAAelI,EAAS,QAAQ,EAChC7+C,EACA6mD,EACAC,GACAxwB,EACD,CAEN,CACJ,CACH,GAAIywB,GAAgB,CAClBA,GAAiBlI,EACjBvoB,GAAWA,GAASywB,EAAc,EAClC,IAAIgE,GACKjE,KAAP,GAAmB,IAAMN,EAAcO,GAAgB,CAAC,EAAID,GAC9D,OAAAlB,GAAYtvB,EAAQ,GACduwB,EAAgB,GACVkE,IAAR,OACGlE,EACCkE,GAAS,QAAQxE,GAA4B,KAAK,EAAI,KAC1DK,EAAatwB,GAAUt2B,EAAO6mD,EAAe,GAAI,SAAUhvF,GAAG,CAC5D,OAAOA,EACrB,CAAa,GACOy+D,IAAR,OACC6vB,EAAe7vB,EAAQ,IACbA,GAAS,KAAjB,OACGywB,IAAkBA,GAAe,MAAQzwB,GAAS,KAClDgzB,EAAuBhzB,GAAS,GAAG,GACtCuwB,EAAgBZ,EACf3vB,GACAuwB,GACWvwB,GAAS,KAAjB,MACAywB,IAAkBA,GAAe,MAAQzwB,GAAS,IAC/C,IACC,GAAKA,GAAS,KAAK,QAClBiwB,GACA,KACD,EAAG,KACRwE,EACH,EACMjE,KAAP,IACUC,IAAR,MACAZ,EAAeY,EAAc,GACrBA,GAAe,KAAvB,MACAA,GAAe,QACf,CAACA,GAAe,OAAO,YACtBF,EAAc,OAAO,UAAY,GACnCvwB,GAAWuwB,GACd7mD,EAAM,KAAKs2B,EAAQ,GAChB,CACR,CAGD,GAFAywB,GAAiB,EACjBgE,GAAkBjE,KAAP,GAAmB,IAAMA,GAAY,IAC5ClB,GAAY/G,CAAQ,EACtB,QAAS1vF,GAAI,EAAGA,GAAI0vF,EAAS,OAAQ1vF,KAClC23F,GAAYjI,EAAS1vF,EAAC,EACpBw9B,GAAOo+D,GAAWvE,EAAcM,GAAW33F,EAAC,EAC5C43F,IAAkBH,EACjBE,GACA9mD,EACA6mD,EACAl6D,GACA2pC,EACd,UACiBnnE,GAAI61F,EAAcnG,CAAQ,EAAmB,OAAO1vF,IAAtB,WACvC,IACEA,KAAM0vF,EAAS,UACZmM,IACC,QAAQ,KACN,uFACD,EACFA,GAAmB,IACpBnM,EAAW1vF,GAAE,KAAK0vF,CAAQ,EAC1B1vF,GAAI,EACN,EAAE23F,GAAYjI,EAAS,KAAM,GAAE,MAG9BiI,GAAYA,GAAU,MACpBn6D,GAAOo+D,GAAWvE,EAAcM,GAAW33F,IAAG,EAC9C43F,IAAkBH,EACjBE,GACA9mD,EACA6mD,EACAl6D,GACA2pC,EACd,UAC4B3pC,KAAb,SAAmB,CAC1B,GAAmB,OAAOkyD,EAAS,MAA/B,WACF,OAAO+H,EACLH,EAAgB5H,CAAQ,EACxB7+C,EACA6mD,EACAC,GACAxwB,EACZ,EACQ,MAAAt2B,EAAQ,OAAO6+C,CAAQ,EACjB,MACJ,mDACyB7+C,IAAtB,kBACG,qBAAuB,OAAO,KAAK6+C,CAAQ,EAAE,KAAK,IAAI,EAAI,IAC1D7+C,GACJ,2EACZ,CACO,CACD,OAAO+mD,EACR,CACD,SAASE,EAAYpI,EAAUqI,EAAM5B,EAAS,CAC5C,GAAYzG,GAAR,KAAkB,OAAOA,EAC7B,IAAIjzD,GAAS,CAAE,EACbssB,GAAQ,EACV,OAAA0uC,EAAa/H,EAAUjzD,GAAQ,GAAI,GAAI,SAAUi7C,GAAO,CACtD,OAAOqgB,EAAK,KAAK5B,EAASze,GAAO3uB,IAAO,CAChD,CAAO,EACMtsB,EACR,CACD,SAASu7D,EAAgBC,EAAS,CAChC,GAAWA,EAAQ,UAAf,GAAwB,CAC1B,IAAI6D,EAAS7D,EAAQ,QACb6D,GAAR,OAAmBA,EAAO,MAAQA,EAAO,IAAM,YAAY,IAAG,GAC9DA,EAAS7D,EAAQ,QACjB,IAAIV,EAAWuE,IAyBf,GAxBAvE,EAAS,KACP,SAAUY,GAAc,CACtB,GAAUF,EAAQ,UAAd,GAAgCA,EAAQ,UAAf,GAAwB,CACnDA,EAAQ,QAAU,EAClBA,EAAQ,QAAUE,GAClB,IAAI4D,GAAU9D,EAAQ,QACd8D,IAAR,OAAoBA,GAAQ,IAAM,YAAY,IAAG,GACtCxE,EAAS,SAApB,SACIA,EAAS,OAAS,YACnBA,EAAS,MAAQY,GACrB,CACF,EACD,SAAU/xD,GAAO,CACf,GAAU6xD,EAAQ,UAAd,GAAgCA,EAAQ,UAAf,GAAwB,CACnDA,EAAQ,QAAU,EAClBA,EAAQ,QAAU7xD,GAClB,IAAI41D,GAAW/D,EAAQ,QACf+D,IAAR,OAAqBA,GAAS,IAAM,YAAY,IAAG,GACxCzE,EAAS,SAApB,SACIA,EAAS,OAAS,WAAcA,EAAS,OAASnxD,GACvD,CACF,CACX,EACQ01D,EAAS7D,EAAQ,QACL6D,GAAR,KAAgB,CAClBA,EAAO,MAAQvE,EACf,IAAI2D,GAAc3D,EAAS,YACd,OAAO2D,IAApB,WAAoCY,EAAO,KAAOZ,GACnD,CACMjD,EAAQ,UAAf,KACIA,EAAQ,QAAU,EAAKA,EAAQ,QAAUV,EAC9C,CACD,GAAUU,EAAQ,UAAd,EACF,OACG6D,EAAS7D,EAAQ,QACP6D,IAAX,QACE,QAAQ,MACN;AAAA;AAAA;AAAA;AAAA;AAAA,0DACAA,CACD,EACH,YAAaA,GACX,QAAQ,MACN;AAAA;AAAA;AAAA,2DACAA,CACD,EACHA,EAAO,QAEX,MAAM7D,EAAQ,OACf,CACD,SAASgE,GAAoB,CAC3B,IAAIpB,EAAanE,GAAqB,EACtC,OAASmE,IAAT,MACE,QAAQ,MACN;AAAA;AAAA;AAAA;AAAA,+FACV,EACaA,CACR,CACD,SAASqB,GAAyB,CAChCxF,GAAqB,kBACtB,CACD,SAASyF,GAAYC,EAAM,CACzB,GAAaC,KAAT,KACF,GAAI,CACF,IAAIC,GAAiB,UAAY,KAAK,OAAM,GAAI,MAAM,EAAG,CAAC,EAC1DD,IAAmB9hE,GAAUA,EAAO+hE,CAAa,GAAG,KAClD/hE,EACA,QACD,EAAC,YACH,MAAc,CACb8hE,GAAkB,SAAUl1B,GAAU,CAC7Bo1B,KAAP,KACIA,GAA6B,GACf,OAAO,eAAvB,KACE,QAAQ,MACN,0NAClB,GACY,IAAIC,GAAU,IAAI,eAClBA,GAAQ,MAAM,UAAYr1B,GAC1Bq1B,GAAQ,MAAM,YAAY,MAAM,CAC5C,CACS,CACH,OAAOH,GAAgBD,CAAI,CAC5B,CACD,SAASK,GAAgBp1D,EAAQ,CAC/B,MAAO,GAAIA,EAAO,QAAyB,OAAO,gBAAtB,WACxB,IAAI,eAAeA,CAAM,EACzBA,EAAO,CAAC,CACb,CACD,SAASq1D,GAAYC,EAAcC,EAAmB,CACpDA,IAAsBC,GAAgB,GACpC,QAAQ,MACN,kIACV,EACMA,GAAgBD,CACjB,CACD,SAASE,GAA6B/D,EAAa56D,EAASC,EAAQ,CAClE,IAAI2+D,GAAQrG,GAAqB,SACjC,GAAaqG,KAAT,KACF,GAAUA,GAAM,SAAZ,EACF,GAAI,CACFC,GAAcD,EAAK,EACnBZ,GAAY,UAAY,CACtB,OAAOW,GAA6B/D,EAAa56D,EAASC,CAAM,CAC9E,CAAa,EACD,MACD,OAAQgI,GAAO,CACdswD,GAAqB,aAAa,KAAKtwD,EAAK,CAC7C,MACEswD,GAAqB,SAAW,KACvC,EAAIA,GAAqB,aAAa,QAChCqG,GAAQN,GAAgB/F,GAAqB,YAAY,EAC1DA,GAAqB,aAAa,OAAS,EAC5Ct4D,EAAO2+D,EAAK,GACZ5+D,EAAQ46D,CAAW,CACxB,CACD,SAASiE,GAAcD,EAAO,CAC5B,GAAI,CAACE,GAAY,CACfA,GAAa,GACb,IAAIj9F,EAAI,EACR,GAAI,CACF,KAAOA,EAAI+8F,EAAM,OAAQ/8F,IAAK,CAC5B,IAAImnE,EAAW41B,EAAM/8F,CAAC,EACtB,EAAG,CACD02F,GAAqB,cAAgB,GACrC,IAAIwG,GAAe/1B,EAAS,EAAE,EAC9B,GAAa+1B,KAAT,KAAuB,CACzB,GAAIxG,GAAqB,cAAe,CACtCqG,EAAM/8F,CAAC,EAAImnE,EACX41B,EAAM,OAAO,EAAG/8F,CAAC,EACjB,MACD,CACDmnE,EAAW+1B,EAC3B,KAAqB,MACR,OAAQ,EACV,CACDH,EAAM,OAAS,CAChB,OAAQ32D,GAAO,CACd22D,EAAM,OAAO,EAAG/8F,EAAI,CAAC,EAAG02F,GAAqB,aAAa,KAAKtwD,EAAK,CAC9E,QAAkB,CACR62D,GAAa,EACd,CACF,CACF,CACe,OAAO,+BAAvB,KAEI,OAAO,+BAA+B,6BADxC,YAEA,+BAA+B,4BAA4B,MAAK,CAAE,EACpE,IAAIrI,EAAqB,OAAO,IAAI,4BAA4B,EAC9DM,EAAoB,OAAO,IAAI,cAAc,EAC7CL,EAAsB,OAAO,IAAI,gBAAgB,EACjDM,EAAyB,OAAO,IAAI,mBAAmB,EACvDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,GAAqB,OAAO,IAAI,eAAe,EAC/CC,GAAyB,OAAO,IAAI,mBAAmB,EACvDC,GAAsB,OAAO,IAAI,gBAAgB,EACjDiF,GAA2B,OAAO,IAAI,qBAAqB,EAC3DhF,GAAkB,OAAO,IAAI,YAAY,EACzCC,GAAkB,OAAO,IAAI,YAAY,EACzCC,GAAsB,OAAO,IAAI,gBAAgB,EACjDC,GAAwB,OAAO,SAC/BqE,GAA0C,CAAE,EAC5ClE,GAAuB,CACrB,UAAW,UAAY,CACrB,MAAO,EACR,EACD,mBAAoB,SAAU+D,EAAgB,CAC5CD,EAASC,EAAgB,aAAa,CACvC,EACD,oBAAqB,SAAUA,EAAgB,CAC7CD,EAASC,EAAgB,cAAc,CACxC,EACD,gBAAiB,SAAUA,EAAgB,CACzCD,EAASC,EAAgB,UAAU,CACpC,CACF,EACD9D,EAAS,OAAO,OAChBC,GAAc,CAAA,EAChB,OAAO,OAAOA,EAAW,EACzBC,EAAU,UAAU,iBAAmB,GACvCA,EAAU,UAAU,SAAW,SAAUG,EAAclvB,EAAU,CAC/D,GACe,OAAOkvB,GAApB,UACe,OAAOA,GAAtB,YACQA,GAAR,KAEA,MAAM,MACJ,wGACV,EACM,KAAK,QAAQ,gBAAgB,KAAMA,EAAclvB,EAAU,UAAU,CAC3E,EACI+uB,EAAU,UAAU,YAAc,SAAU/uB,EAAU,CACpD,KAAK,QAAQ,mBAAmB,KAAMA,EAAU,aAAa,CACnE,EACI,IAAIg2B,GAAiB,CACnB,UAAW,CACT,YACA,oHACD,EACD,aAAc,CACZ,eACA,iGACD,CACP,EACI,IAAKC,MAAUD,GACbA,GAAe,eAAeC,EAAM,GAClCzD,EAAyByD,GAAQD,GAAeC,EAAM,CAAC,EAC3D9G,EAAe,UAAYJ,EAAU,UACrCiH,GAAiB5G,EAAc,UAAY,IAAID,EAC/C6G,GAAe,YAAc5G,EAC7BP,EAAOmH,GAAgBjH,EAAU,SAAS,EAC1CiH,GAAe,qBAAuB,GACtC,IAAI1G,GAAc,MAAM,QACtB+D,GAAyB,OAAO,IAAI,wBAAwB,EAC5D9D,GAAuB,CACrB,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,SAAU,KACV,iBAAkB,EAClB,iBAAkB,GAClB,wBAAyB,GACzB,cAAe,GACf,aAAc,CAAE,EAChB,gBAAiB,KACjB,2BAA4B,CAC7B,EACDC,GAAiB,OAAO,UAAU,eAClC0G,GAAa,QAAQ,WACjB,QAAQ,WACR,UAAY,CACV,OAAO,IACnB,EACIF,GAAiB,CACf,yBAA0B,SAAUG,EAAmB,CACrD,OAAOA,EAAiB,CACzB,CACP,EACI,IAAIlC,GAA4BmC,GAC5BhC,GAAyB,CAAA,EACzBiC,GAAyBL,GAAe,yBAAyB,KACnEA,GACArC,CACN,IACQ2C,GAAwBJ,GAAW1C,EAAYG,CAAY,CAAC,EAC5De,GAAmB,GACrBzE,GAA6B,OAC7BgB,GACiB,OAAO,aAAtB,WACI,YACA,SAAUhyD,EAAO,CACf,GACe,OAAO,QAApB,UACe,OAAO,OAAO,YAA7B,WACA,CACA,IAAIqW,EAAQ,IAAI,OAAO,WAAW,QAAS,CACzC,QAAS,GACT,WAAY,GACZ,QACe,OAAOrW,GAApB,UACSA,IAAT,MACa,OAAOA,EAAM,SAA1B,SACI,OAAOA,EAAM,OAAO,EACpB,OAAOA,CAAK,EAClB,MAAOA,CACzB,CAAiB,EACD,GAAI,CAAC,OAAO,cAAcqW,CAAK,EAAG,MAClD,SAC6B,OAAO,SAApB,UACe,OAAO,QAAQ,MAA9B,WACA,CACA,QAAQ,KAAK,oBAAqBrW,CAAK,EACvC,MACD,CACD,QAAQ,MAAMA,CAAK,CACpB,EACPm2D,GAA6B,GAC7BF,GAAkB,KAClBQ,GAAgB,EAChBa,GAAoB,GACpBT,GAAa,GACbU,GACiB,OAAO,gBAAtB,WACI,SAAUx2B,EAAU,CAClB,eAAe,UAAY,CACzB,OAAO,eAAeA,CAAQ,CAC9C,CAAe,CACF,EACDg1B,GACRgB,GAAiB,OAAO,OAAO,CAC7B,UAAW,KACX,EAAG,SAAUl3C,EAAM,CACjB,OAAOg2C,EAAmB,EAAC,aAAah2C,CAAI,CAC7C,CACP,CAAK,EACD,IAAIm3C,GAAS,CACX,IAAKtF,EACL,QAAS,SAAUpI,EAAU4I,EAAaC,EAAgB,CACxDT,EACEpI,EACA,UAAY,CACV4I,EAAY,MAAM,KAAM,SAAS,CAClC,EACDC,CACV,CACO,EACD,MAAO,SAAU7I,EAAU,CACzB,IAAI/hF,EAAI,EACR,OAAAmqF,EAAYpI,EAAU,UAAY,CAChC/hF,GACV,CAAS,EACMA,CACR,EACD,QAAS,SAAU+hF,EAAU,CAC3B,OACEoI,EAAYpI,EAAU,SAAUhY,EAAO,CACrC,OAAOA,CACR,CAAA,GAAK,CAAE,CAEX,EACD,KAAM,SAAUgY,EAAU,CACxB,GAAI,CAACsH,EAAetH,CAAQ,EAC1B,MAAM,MACJ,uEACZ,EACQ,OAAOA,CACR,CACP,EACIkO,EAAA,SAAmBjI,GACnBiI,EAAA,SAAmBR,GACnBQ,EAAA,UAAoB1H,EACpB0H,EAAA,SAAmB/I,EACnB+I,EAAA,SAAmBxI,EACnBwI,EAAA,cAAwBrH,EACxBqH,EAAA,WAAqBzI,EACrByI,EAAA,SAAmBpI,GACnBoI,EAAA,gEACElH,GACFkH,EAAA,mBAA6BT,GAC7BS,EAAA,IAAc,SAAUz2B,EAAU,CAChC,IAAIw1B,EAAejG,GAAqB,SACtCkG,EAAoBC,GACtBA,KACA,IAAIE,GAASrG,GAAqB,SACrBiG,IAAT,KAAwBA,EAAe,GACzCkB,GAAkB,GACpB,GAAI,CACF,IAAIphE,GAAS0qC,GACd,OAAQ/gC,GAAO,CACdswD,GAAqB,aAAa,KAAKtwD,EAAK,CAC7C,CACD,GAAI,EAAIswD,GAAqB,aAAa,OACxC,MACGgG,GAAYC,EAAcC,CAAiB,EAC3Cz1B,EAAWs1B,GAAgB/F,GAAqB,YAAY,EAC5DA,GAAqB,aAAa,OAAS,EAC5CvvB,EAEJ,GACW1qC,KAAT,MACa,OAAOA,IAApB,UACe,OAAOA,GAAO,MAA7B,WACA,CACA,IAAI86D,GAAW96D,GACf,OAAAkhE,GAAuB,UAAY,CACjCE,IACEH,KACEA,GAAoB,GACtB,QAAQ,MACN,mMACd,EACA,CAAS,EACM,CACL,KAAM,SAAUv/D,GAASC,GAAQ,CAC/By/D,GAAkB,GAClBtG,GAAS,KACP,SAAUwB,GAAa,CAErB,GADA2D,GAAYC,EAAcC,CAAiB,EACjCA,IAAN,EAAyB,CAC3B,GAAI,CACFI,GAAcD,EAAK,EACjBZ,GAAY,UAAY,CACtB,OAAOW,GACL/D,GACA56D,GACAC,EAC1B,CACA,CAAuB,CACJ,OAAQ0/D,GAAS,CAChBpH,GAAqB,aAAa,KAAKoH,EAAO,CAC/C,CACD,GAAI,EAAIpH,GAAqB,aAAa,OAAQ,CAChD,IAAIqH,GAAetB,GACjB/F,GAAqB,YAC3C,EACoBA,GAAqB,aAAa,OAAS,EAC3Ct4D,GAAO2/D,EAAY,CACpB,CACnB,MAAuB5/D,GAAQ46D,EAAW,CAC3B,EACD,SAAU3yD,GAAO,CACfs2D,GAAYC,EAAcC,CAAiB,EAC3C,EAAIlG,GAAqB,aAAa,SAChCtwD,GAAQq2D,GACR/F,GAAqB,YACtB,EACAA,GAAqB,aAAa,OAAS,GAC5Ct4D,GAAOgI,EAAK,CAEjB,CACf,CACW,CACX,CACO,CACD,IAAI43D,GAAuBvhE,GAc3B,GAbAigE,GAAYC,EAAcC,CAAiB,EACrCA,IAAN,IACGI,GAAcD,EAAK,EACdA,GAAM,SAAZ,GACEY,GAAuB,UAAY,CACjCE,IACEH,KACEA,GAAoB,GACtB,QAAQ,MACN,qMAChB,EACA,CAAW,EACFhH,GAAqB,SAAW,MAC/B,EAAIA,GAAqB,aAAa,OACxC,MACIvvB,EAAWs1B,GAAgB/F,GAAqB,YAAY,EAC7DA,GAAqB,aAAa,OAAS,EAC5CvvB,EAEJ,MAAO,CACL,KAAM,SAAUhpC,GAASC,GAAQ,CAC/By/D,GAAkB,GACZjB,IAAN,GACMlG,GAAqB,SAAWqG,GAClCZ,GAAY,UAAY,CACtB,OAAOW,GACLkB,GACA7/D,GACAC,EAClB,CACA,CAAe,GACDD,GAAQ6/D,EAAoB,CACjC,CACT,CACA,EACIJ,EAAA,MAAgB,SAAUxzD,EAAI,CAC5B,OAAO,UAAY,CACjB,OAAOA,EAAG,MAAM,KAAM,SAAS,CACvC,CACA,EACIwzD,cAAsB,UAAY,CAChC,OAAO,IACb,EACIA,oBAA4B,UAAY,CACtC,IAAIK,EAAkBvH,GAAqB,gBAC3C,OAAgBuH,IAAT,KAA2B,KAAOA,EAAe,CAC9D,EACIL,eAAuB,SAAUt8D,EAAS2H,EAAQymD,EAAU,CAC1D,GAAapuD,GAAT,KACF,MAAM,MACJ,wDACEA,EACA,GACZ,EACM,IAAImuD,GAAQuG,EAAO,GAAI10D,EAAQ,KAAK,EAClCmB,GAAMnB,EAAQ,IACdk6D,GAAQl6D,EAAQ,OAClB,GAAY2H,GAAR,KAAgB,CAClB,IAAImxD,GACJ90F,EAAG,CACD,GACEqxF,GAAe,KAAK1tD,EAAQ,KAAK,IAChCmxD,GAA2B,OAAO,yBACjCnxD,EACA,KACD,EAAC,MACFmxD,GAAyB,eACzB,CACAA,GAA2B,GAC3B,MAAM90F,CACP,CACD80F,GAAsCnxD,EAAO,MAAlB,MAC5B,CACDmxD,KAA6BoB,GAAQZ,EAAQ,GAC7CG,EAAY9xD,CAAM,IACfkxD,EAAuBlxD,EAAO,GAAG,EAAIxG,GAAM,GAAKwG,EAAO,KAC1D,IAAK+rD,MAAY/rD,EACf,CAAC0tD,GAAe,KAAK1tD,EAAQ+rD,EAAQ,GACzBA,KAAV,OACaA,KAAb,UACeA,KAAf,YACWA,KAAV,OAAiC/rD,EAAO,MAAlB,SACtBwmD,GAAMuF,EAAQ,EAAI/rD,EAAO+rD,EAAQ,EACvC,CACD,IAAIA,GAAW,UAAU,OAAS,EAClC,GAAUA,KAAN,EAAgBvF,GAAM,SAAWC,UAC5B,EAAIsF,GAAU,CACrBoF,GAA2B,MAAMpF,EAAQ,EACzC,QAASh1F,GAAI,EAAGA,GAAIg1F,GAAUh1F,KAC5Bo6F,GAAyBp6F,EAAC,EAAI,UAAUA,GAAI,CAAC,EAC/CyvF,GAAM,SAAW2K,EAClB,CASD,IARA3K,GAAQmH,EACNt1D,EAAQ,KACRmB,GACAgtD,GACA+L,GACAl6D,EAAQ,YACRA,EAAQ,UAChB,EACWmB,GAAM,EAAGA,GAAM,UAAU,OAAQA,KACpCk5D,EAAkB,UAAUl5D,EAAG,CAAC,EAClC,OAAOgtD,EACb,EACImO,EAAA,cAAwB,SAAUruD,EAAc,CAC9C,OAAAA,EAAe,CACb,SAAU+lD,GACV,cAAe/lD,EACf,eAAgBA,EAChB,aAAc,EACd,SAAU,KACV,SAAU,IAClB,EACMA,EAAa,SAAWA,EACxBA,EAAa,SAAW,CACtB,SAAU8lD,EACV,SAAU9lD,CAClB,EACMA,EAAa,iBAAmB,KAChCA,EAAa,kBAAoB,KAC1BA,CACb,EACIquD,gBAAwB,SAAUpgE,EAAMyL,EAAQymD,EAAU,CACxD,QAAS1vF,GAAI,EAAGA,GAAI,UAAU,OAAQA,KACpC27F,EAAkB,UAAU37F,EAAC,CAAC,EAChCA,GAAI,CAAA,EACJ,IAAIyiC,GAAM,KACV,GAAYwG,GAAR,KACF,IAAK+rD,MAAauI,IAChB,EAAE,WAAYt0D,IACd,QAASA,IACPs0D,GAA4B,GAC9B,QAAQ,KACN,+KACZ,GACQxC,EAAY9xD,CAAM,IACfkxD,EAAuBlxD,EAAO,GAAG,EAAIxG,GAAM,GAAKwG,EAAO,KAC1DA,EACE0tD,GAAe,KAAK1tD,EAAQ+rD,EAAQ,GACxBA,KAAV,OACaA,KAAb,UACeA,KAAf,aACCh1F,GAAEg1F,EAAQ,EAAI/rD,EAAO+rD,EAAQ,GACpC,IAAI0D,GAAiB,UAAU,OAAS,EACxC,GAAUA,KAAN,EAAsB14F,GAAE,SAAW0vF,UAC9B,EAAIgJ,GAAgB,CAC3B,QACMD,GAAa,MAAMC,EAAc,EAAGr/E,GAAK,EAC7CA,GAAKq/E,GACLr/E,KAEAo/E,GAAWp/E,EAAE,EAAI,UAAUA,GAAK,CAAC,EACnC,OAAO,QAAU,OAAO,OAAOo/E,EAAU,EACzCz4F,GAAE,SAAWy4F,EACd,CACD,GAAIj7D,GAAQA,EAAK,aACf,IAAKw3D,MAAc0D,GAAiBl7D,EAAK,aAAek7D,GAC3C14F,GAAEg1F,EAAQ,IAArB,SAA2Bh1F,GAAEg1F,EAAQ,EAAI0D,GAAe1D,EAAQ,GACpEvyD,IACEw4D,EACEj7F,GACe,OAAOw9B,GAAtB,WACIA,EAAK,aAAeA,EAAK,MAAQ,UACjCA,CACd,EACM,IAAIw3D,GAAW,IAAM0B,GAAqB,6BAC1C,OAAOE,EACLp5D,EACAiF,GACAziC,GACA46F,EAAU,EACV5F,GAAW,MAAM,uBAAuB,EAAIwI,GAC5CxI,GAAWqI,GAAW1C,EAAYn9D,CAAI,CAAC,EAAIigE,EACnD,CACA,EACIG,YAAoB,UAAY,CAC9B,IAAIM,EAAY,CAAE,QAAS,MAC3B,cAAO,KAAKA,CAAS,EACdA,CACb,EACIN,EAAA,WAAqB,SAAUjL,EAAQ,CAC7BA,GAAR,MAAkBA,EAAO,WAAa8C,GAClC,QAAQ,MACN,qIACD,EACc,OAAO9C,GAAtB,WACE,QAAQ,MACN,0DACSA,IAAT,KAAkB,OAAS,OAAOA,CACnC,EACKA,EAAO,SAAb,GACMA,EAAO,SAAb,GACA,QAAQ,MACN,+EACMA,EAAO,SAAb,EACI,2CACA,6CAClB,EACcA,GAAR,MACUA,EAAO,cAAf,MACA,QAAQ,MACN,uGACV,EACM,IAAIpxD,EAAc,CAAE,SAAUg0D,GAAwB,OAAQ5C,CAAQ,EACpEwL,EACF,cAAO,eAAe58D,EAAa,cAAe,CAChD,WAAY,GACZ,aAAc,GACd,IAAK,UAAY,CACf,OAAO48D,CACR,EACD,IAAK,SAAUp8D,GAAM,CACnBo8D,EAAUp8D,GACV4wD,EAAO,MACLA,EAAO,cACN,OAAO,eAAeA,EAAQ,OAAQ,CAAE,MAAO5wD,GAAM,EACrD4wD,EAAO,YAAc5wD,GACzB,CACT,CAAO,EACMR,CACb,EACIq8D,EAAA,eAAyB5G,EACzB4G,EAAA,KAAe,SAAU1F,EAAM,CAC7BA,EAAO,CAAE,QAAS,GAAI,QAASA,CAAI,EACnC,IAAIkG,EAAW,CACX,SAAU1I,GACV,SAAUwC,EACV,MAAOF,CACR,EACD8D,EAAS,CACP,KAAM,OACN,MAAO,GACP,IAAK,GACL,MAAO,KACP,MAAO,KACP,WAAY,MAAM,uBAAuB,EACzC,UAAW,QAAQ,WAAa,QAAQ,WAAW,QAAQ,EAAI,IACzE,EACM,OAAA5D,EAAK,QAAU4D,EACfsC,EAAS,WAAa,CAAC,CAAE,QAAStC,CAAQ,CAAA,EACnCsC,CACb,EACIR,EAAe,KAAA,SAAUpgE,EAAMm7D,EAAS,CAC9Bn7D,GAAR,MACE,QAAQ,MACN,qEACSA,IAAT,KAAgB,OAAS,OAAOA,CAC1C,EACMm7D,EAAU,CACR,SAAUlD,GACV,KAAMj4D,EACN,QAAoBm7D,IAAX,OAAqB,KAAOA,CAC7C,EACM,IAAIwF,EACJ,cAAO,eAAexF,EAAS,cAAe,CAC5C,WAAY,GACZ,aAAc,GACd,IAAK,UAAY,CACf,OAAOwF,CACR,EACD,IAAK,SAAUp8D,GAAM,CACnBo8D,EAAUp8D,GACVvE,EAAK,MACHA,EAAK,cACJ,OAAO,eAAeA,EAAM,OAAQ,CAAE,MAAOuE,GAAM,EACnDvE,EAAK,YAAcuE,GACvB,CACT,CAAO,EACM42D,CACb,EACIiF,EAAA,gBAA0B,SAAUhF,EAAO,CACzC,IAAIC,EAAiBnC,GAAqB,EACxCoC,EAAoB,CAAA,EACtBA,EAAkB,eAAiB,IAAI,IACvCpC,GAAqB,EAAIoC,EACzB,GAAI,CACF,IAAIC,GAAcH,EAAO,EACvBI,GAA0BtC,GAAqB,EACxCsC,KAAT,MACEA,GAAwBF,EAAmBC,EAAW,EAC3C,OAAOA,IAApB,UACWA,KAAT,MACe,OAAOA,GAAY,MAAlC,aACCrC,GAAqB,mBACtBqC,GAAY,KAAKmD,EAAwBA,CAAsB,EAC/DnD,GAAY,KAAKvvD,EAAM4uD,EAAiB,EAC3C,OAAQhyD,GAAO,CACdgyD,GAAkBhyD,EAAK,CAC/B,QAAgB,CACCyyD,IAAT,MACEC,EAAkB,iBAChBF,EAAQE,EAAkB,eAAe,KAC3CA,EAAkB,eAAe,MAAO,EACxC,GAAKF,GACH,QAAQ,KACN,qMACd,GACmBC,IAAT,MACWC,EAAkB,QAA3B,OACUD,EAAe,QAAxB,MACCA,EAAe,QAAUC,EAAkB,OAC3C,QAAQ,MACN,sKACD,EACFD,EAAe,MAAQC,EAAkB,OAC3CpC,GAAqB,EAAImC,CAC7B,CACP,EACI+E,2BAAmC,UAAY,CAC7C,OAAO3B,EAAiB,EAAG,iBACjC,EACI2B,EAAA,IAAc,SAAU3E,EAAQ,CAC9B,OAAOgD,EAAmB,EAAC,IAAIhD,CAAM,CAC3C,EACI2E,iBAAyB,SAAU7uD,EAAQmqD,EAAcC,EAAW,CAClE,OAAO8C,EAAmB,EAAC,eACzBltD,EACAmqD,EACAC,CACR,CACA,EACIyE,EAAsB,YAAA,SAAUz2B,EAAU+qB,EAAM,CAC9C,OAAO+J,EAAiB,EAAG,YAAY90B,EAAU+qB,CAAI,CAC3D,EACI0L,EAAA,WAAqB,SAAUxE,EAAS,CACtC,IAAIyB,EAAaoB,IACjB,OAAA7C,EAAQ,WAAa/D,GACnB,QAAQ,MACN,8HACV,EACawF,EAAW,WAAWzB,CAAO,CAC1C,EACIwE,EAAwB,cAAA,SAAUr7D,EAAO87D,EAAa,CACpD,OAAOpC,EAAiB,EAAG,cAAc15D,EAAO87D,CAAW,CACjE,EACIT,EAA2B,iBAAA,SAAUr7D,EAAOivD,EAAc,CACxD,OAAOyK,EAAiB,EAAG,iBAAiB15D,EAAOivD,CAAY,CACrE,EACIoM,EAAoB,UAAA,SAAUvE,EAAQnH,EAAM,CAC1C,OAAQmH,GAAR,MACE,QAAQ,KACN,kGACV,EACa4C,EAAiB,EAAG,UAAU5C,EAAQnH,CAAI,CACvD,EACI0L,EAAA,eAAyB,SAAUz2B,EAAU,CAC3C,OAAO80B,EAAmB,EAAC,eAAe90B,CAAQ,CACxD,EACIy2B,QAAgB,UAAY,CAC1B,OAAO3B,EAAiB,EAAG,OACjC,EACI2B,sBAA8B,SAAU9L,EAAKuH,EAAQnH,EAAM,CACzD,OAAO+J,EAAmB,EAAC,oBAAoBnK,EAAKuH,EAAQnH,CAAI,CACtE,EACI0L,EAA6B,mBAAA,SAAUvE,EAAQnH,EAAM,CACnD,OAAQmH,GAAR,MACE,QAAQ,KACN,2GACV,EACa4C,EAAiB,EAAG,mBAAmB5C,EAAQnH,CAAI,CAChE,EACI0L,EAA0B,gBAAA,SAAUvE,EAAQnH,EAAM,CAChD,OAAQmH,GAAR,MACE,QAAQ,KACN,wGACV,EACa4C,EAAiB,EAAG,gBAAgB5C,EAAQnH,CAAI,CAC7D,EACI0L,EAAkB,QAAA,SAAUvE,EAAQnH,EAAM,CACxC,OAAO+J,EAAiB,EAAG,QAAQ5C,EAAQnH,CAAI,CACrD,EACI0L,EAAwB,cAAA,SAAUtE,EAAaC,EAAS,CACtD,OAAO0C,EAAiB,EAAG,cAAc3C,EAAaC,CAAO,CACnE,EACIqE,aAAqB,SAAUrE,EAASC,EAAY1tD,EAAM,CACxD,OAAOmwD,EAAmB,EAAC,WAAW1C,EAASC,EAAY1tD,CAAI,CACrE,EACI8xD,EAAA,OAAiB,SAAUpM,EAAc,CACvC,OAAOyK,EAAmB,EAAC,OAAOzK,CAAY,CACpD,EACIoM,EAAA,SAAmB,SAAU1E,EAAc,CACzC,OAAO+C,EAAmB,EAAC,SAAS/C,CAAY,CACtD,EACI0E,EAA+B,qBAAA,SAC7B3yD,EACAwuD,EACAC,EACA,CACA,OAAOuC,EAAmB,EAAC,qBACzBhxD,EACAwuD,EACAC,CACR,CACA,EACIkE,gBAAwB,UAAY,CAClC,OAAO3B,EAAiB,EAAG,eACjC,EACI2B,EAAA,QAAkB,SACF,OAAO,+BAAvB,KAEI,OAAO,+BAA+B,4BADxC,YAEA,+BAA+B,2BAA2B,MAAK,CAAE,CACvE,iCCjwCI,CAAW,GAAC,WAAa,aAC3BU,GAAA,QAAiBC,KAEjBD,GAAA,QAAiBE;;;;;;;;yCCMF,CAAW,EAAC,WAA7B,cACG,UAAY,CACX,SAASjE,EAAyB/8D,EAAM,CACtC,GAAYA,GAAR,KAAc,OAAO,KACzB,GAAmB,OAAOA,GAAtB,WACF,OAAOA,EAAK,WAAag9D,EACrB,KACAh9D,EAAK,aAAeA,EAAK,MAAQ,KACvC,GAAiB,OAAOA,GAApB,SAA0B,OAAOA,EACrC,OAAQA,EAAI,CACV,KAAKq3D,EACH,MAAO,WACT,KAAKO,EACH,MAAO,WACT,KAAKD,EACH,MAAO,aACT,KAAKK,EACH,MAAO,WACT,KAAKiF,EACH,MAAO,eACT,KAAK9E,EACH,MAAO,UACV,CACD,GAAiB,OAAOn4D,GAApB,SACF,OACgB,OAAOA,EAAK,KAAzB,UACC,QAAQ,MACN,mHACD,EACHA,EAAK,SACf,CACU,KAAK03D,EACH,MAAO,SACT,KAAKI,EACH,OAAO93D,EAAK,aAAe,UAC7B,KAAK63D,EACH,OAAQ73D,EAAK,SAAS,aAAe,WAAa,YACpD,KAAK+3D,EACH,IAAImF,EAAYl9D,EAAK,OACrB,OAAAA,EAAOA,EAAK,YACZA,IACIA,EAAOk9D,EAAU,aAAeA,EAAU,MAAQ,GACnDl9D,EAAcA,IAAP,GAAc,cAAgBA,EAAO,IAAM,cAC9CA,EACT,KAAKi4D,EACH,OACGiF,EAAYl9D,EAAK,aAAe,KACxBk9D,IAAT,KACIA,EACAH,EAAyB/8D,EAAK,IAAI,GAAK,OAE/C,KAAKk4D,EACHgF,EAAYl9D,EAAK,SACjBA,EAAOA,EAAK,MACZ,GAAI,CACF,OAAO+8D,EAAyB/8D,EAAKk9D,CAAS,CAAC,CAC7D,MAAwB,CAAE,CACjB,CACH,OAAO,IACR,CACD,SAASR,EAAmB33D,EAAO,CACjC,MAAO,GAAKA,CACb,CACD,SAAS43D,EAAuB53D,EAAO,CACrC,GAAI,CACF23D,EAAmB33D,CAAK,EACxB,IAAI63D,EAA2B,EAChC,MAAW,CACVA,EAA2B,EAC5B,CACD,GAAIA,EAA0B,CAC5BA,EAA2B,QAC3B,IAAIC,EAAwBD,EAAyB,MACjDE,EACc,OAAO,QAAtB,YACC,OAAO,aACP/3D,EAAM,OAAO,WAAW,GAC1BA,EAAM,YAAY,MAClB,SACF,OAAA83D,EAAsB,KACpBD,EACA,2GACAE,CACV,EACeJ,EAAmB33D,CAAK,CAChC,CACF,CACD,SAASo4D,EAAYn9D,EAAM,CACzB,GAAIA,IAASq3D,EAAqB,MAAO,KACzC,GACe,OAAOr3D,GAApB,UACSA,IAAT,MACAA,EAAK,WAAak4D,EAElB,MAAO,QACT,GAAI,CACF,IAAI3zD,EAAOw4D,EAAyB/8D,CAAI,EACxC,OAAOuE,EAAO,IAAMA,EAAO,IAAM,OAClC,MAAW,CACV,MAAO,OACR,CACF,CACD,SAAS64D,GAAW,CAClB,IAAIC,EAAanE,EAAqB,EACtC,OAAgBmE,IAAT,KAAsB,KAAOA,EAAW,SAAQ,CACxD,CACD,SAASC,GAAe,CACtB,OAAO,MAAM,uBAAuB,CACrC,CACD,SAASC,EAAY9xD,EAAQ,CAC3B,GAAI0tD,EAAe,KAAK1tD,EAAQ,KAAK,EAAG,CACtC,IAAI+xD,EAAS,OAAO,yBAAyB/xD,EAAQ,KAAK,EAAE,IAC5D,GAAI+xD,GAAUA,EAAO,eAAgB,MAAO,EAC7C,CACD,OAAkB/xD,EAAO,MAAlB,MACR,CACD,SAASgyD,EAA2BxL,EAAOyL,EAAa,CACtD,SAASC,GAAwB,CAC/BC,KACIA,GAA6B,GAC/B,QAAQ,MACN,0OACAF,CACZ,EACO,CACDC,EAAsB,eAAiB,GACvC,OAAO,eAAe1L,EAAO,MAAO,CAClC,IAAK0L,EACL,aAAc,EACtB,CAAO,CACF,CACD,SAASE,GAAyC,CAChD,IAAIC,EAAgBf,EAAyB,KAAK,IAAI,EACtD,OAAAgB,GAAuBD,CAAa,IAChCC,GAAuBD,CAAa,EAAI,GAC1C,QAAQ,MACN,6IACV,GACMA,EAAgB,KAAK,MAAM,IACTA,IAAX,OAA2BA,EAAgB,IACnD,CACD,SAAS1E,EAAap5D,EAAMiF,EAAKgtD,EAAO+L,EAAOC,GAAYC,GAAW,CACpE,IAAI7E,GAAUpH,EAAM,IACpB,OAAAjyD,EAAO,CACL,SAAUo3D,EACV,KAAMp3D,EACN,IAAKiF,EACL,MAAOgtD,EACP,OAAQ+L,CAChB,GAC2B3E,KAAX,OAAqBA,GAAU,QAAzC,KACI,OAAO,eAAer5D,EAAM,MAAO,CACjC,WAAY,GACZ,IAAK69D,CACjB,CAAW,EACD,OAAO,eAAe79D,EAAM,MAAO,CAAE,WAAY,GAAI,MAAO,IAAI,CAAE,EACtEA,EAAK,OAAS,GACd,OAAO,eAAeA,EAAK,OAAQ,YAAa,CAC9C,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO,CACf,CAAO,EACD,OAAO,eAAeA,EAAM,aAAc,CACxC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO,IACf,CAAO,EACD,OAAO,eAAeA,EAAM,cAAe,CACzC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAOi+D,EACf,CAAO,EACD,OAAO,eAAej+D,EAAM,aAAc,CACxC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAOk+D,EACf,CAAO,EACD,OAAO,SAAW,OAAO,OAAOl+D,EAAK,KAAK,EAAG,OAAO,OAAOA,CAAI,GACxDA,CACR,CACD,SAASihE,EACPjhE,EACAyL,EACA8rD,EACA2J,EACAjD,GACAC,GACA,CACA,IAAIhM,GAAWzmD,EAAO,SACtB,GAAeymD,KAAX,OACF,GAAIgP,EACF,GAAIjI,GAAY/G,EAAQ,EAAG,CACzB,IACEgP,EAAmB,EACnBA,EAAmBhP,GAAS,OAC5BgP,IAEA/C,EAAkBjM,GAASgP,CAAgB,CAAC,EAC9C,OAAO,QAAU,OAAO,OAAOhP,EAAQ,CACxC,MACC,QAAQ,MACN,sJACd,OACaiM,EAAkBjM,EAAQ,EACjC,GAAIiH,EAAe,KAAK1tD,EAAQ,KAAK,EAAG,CACtCymD,GAAW6K,EAAyB/8D,CAAI,EACxC,IAAI2V,GAAO,OAAO,KAAKlK,CAAM,EAAE,OAAO,SAAU3/B,GAAG,CACjD,OAAiBA,KAAV,KACjB,CAAS,EACDo1F,EACE,EAAIvrD,GAAK,OACL,kBAAoBA,GAAK,KAAK,SAAS,EAAI,SAC3C,iBACNwrD,EAAsBjP,GAAWgP,CAAgB,IAC7CvrD,GACA,EAAIA,GAAK,OAAS,IAAMA,GAAK,KAAK,SAAS,EAAI,SAAW,KAC5D,QAAQ,MACN;AAAA;AAAA;AAAA;AAAA;AAAA,mCACAurD,EACAhP,GACAv8C,GACAu8C,EACD,EACAiP,EAAsBjP,GAAWgP,CAAgB,EAAI,GACzD,CAMD,GALAhP,GAAW,KACAqF,IAAX,SACGoF,EAAuBpF,CAAQ,EAAIrF,GAAW,GAAKqF,GACtDgG,EAAY9xD,CAAM,IACfkxD,EAAuBlxD,EAAO,GAAG,EAAIymD,GAAW,GAAKzmD,EAAO,KAC3D,QAASA,EAAQ,CACnB8rD,EAAW,CAAA,EACX,QAASC,MAAY/rD,EACT+rD,KAAV,QAAuBD,EAASC,EAAQ,EAAI/rD,EAAO+rD,EAAQ,EACrE,MAAaD,EAAW9rD,EAClB,OAAAymD,IACEuL,EACElG,EACe,OAAOv3D,GAAtB,WACIA,EAAK,aAAeA,EAAK,MAAQ,UACjCA,CACd,EACao5D,EACLp5D,EACAkyD,GACAqF,EACA6F,EAAU,EACVa,GACAC,EACR,CACK,CACD,SAASC,EAAkBz3D,EAAM,CAC/B8yD,EAAe9yD,CAAI,EACfA,EAAK,SAAWA,EAAK,OAAO,UAAY,GAC3B,OAAOA,GAApB,UACSA,IAAT,MACAA,EAAK,WAAawxD,IACDxxD,EAAK,SAAS,SAA9B,YACG8yD,EAAe9yD,EAAK,SAAS,KAAK,GAClCA,EAAK,SAAS,MAAM,SACnBA,EAAK,SAAS,MAAM,OAAO,UAAY,GACxCA,EAAK,SAAWA,EAAK,OAAO,UAAY,GACjD,CACD,SAAS8yD,EAAeC,EAAQ,CAC9B,OACe,OAAOA,GAApB,UACSA,IAAT,MACAA,EAAO,WAAarC,CAEvB,CACD,IAAIgK,EAAQL,GACV3J,EAAqB,OAAO,IAAI,4BAA4B,EAC5DM,EAAoB,OAAO,IAAI,cAAc,EAC7CL,EAAsB,OAAO,IAAI,gBAAgB,EACjDM,EAAyB,OAAO,IAAI,mBAAmB,EACvDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAqB,OAAO,IAAI,eAAe,EAC/CC,EAAyB,OAAO,IAAI,mBAAmB,EACvDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDiF,EAA2B,OAAO,IAAI,qBAAqB,EAC3DhF,EAAkB,OAAO,IAAI,YAAY,EACzCC,EAAkB,OAAO,IAAI,YAAY,EACzCC,EAAsB,OAAO,IAAI,gBAAgB,EACjD6E,EAAyB,OAAO,IAAI,wBAAwB,EAC5D9D,EACEkI,EAAM,gEACRjI,EAAiB,OAAO,UAAU,eAClCF,GAAc,MAAM,QACpB4G,GAAa,QAAQ,WACjB,QAAQ,WACR,UAAY,CACV,OAAO,IACnB,EACIuB,EAAQ,CACN,yBAA0B,SAAUtB,EAAmB,CACrD,OAAOA,EAAiB,CACzB,CACP,EACI,IAAIlC,GACAG,GAAyB,CAAA,EACzBiC,GAAyBoB,EAAM,yBAAyB,KAC1DA,EACA9D,CACN,IACQ2C,EAAwBJ,GAAW1C,EAAYG,CAAY,CAAC,EAC5D6D,EAAwB,CAAA,EAC5BE,GAAA,SAAmBhK,EACnBgK,GAAA,IAAc,SAAUrhE,EAAMyL,EAAQ8rD,EAAU,CAC9C,IAAI+J,EACF,IAAMpI,EAAqB,6BAC7B,OAAO+H,EACLjhE,EACAyL,EACA8rD,EACA,GACA+J,EACI,MAAM,uBAAuB,EAC7BtB,GACJsB,EAAmBzB,GAAW1C,EAAYn9D,CAAI,CAAC,EAAIigE,CAC3D,CACA,EACIoB,GAAA,KAAe,SAAUrhE,EAAMyL,EAAQ8rD,EAAU,CAC/C,IAAI+J,EACF,IAAMpI,EAAqB,6BAC7B,OAAO+H,EACLjhE,EACAyL,EACA8rD,EACA,GACA+J,EACI,MAAM,uBAAuB,EAC7BtB,GACJsB,EAAmBzB,GAAW1C,EAAYn9D,CAAI,CAAC,EAAIigE,CAC3D,CACA,CACA,SC7VI,CAAW,GAAC,WAAa,aAC3BsB,GAAA,QAAiBR,KAEjBQ,GAAA,QAAiBP,uBCLnB,SAASQ,GAAc5iE,EAAKoL,EAAM,CAC1BpL,EAAI,QAAQoL,CAAI,IAAM,IACtBpL,EAAI,KAAKoL,CAAI,CACrB,CACA,SAASy3D,GAAW7iE,EAAKoL,EAAM,CAC3B,MAAMC,EAAQrL,EAAI,QAAQoL,CAAI,EAC1BC,EAAQ,IACRrL,EAAI,OAAOqL,EAAO,CAAC,CAC3B,CCRA,MAAMnM,GAAQ,CAAC8wB,EAAKtM,EAAKnoC,IACjBA,EAAImoC,EACGA,EACPnoC,EAAIy0C,EACGA,EACJz0C,ECLX,SAASunF,GAAmB1kB,EAAS2kB,EAAW,CAC5C,OAAOA,EACD,GAAG3kB,CAAO,0FAA0F2kB,CAAS,GAC7G3kB,CACV,CCFA,IAAI4kB,GAAU,IAAM,CAAA,EAChBC,GAAY,IAAM,CAAA,EAClB,OAAO,QAAY,KACnB,CAAW,EAAE,WAAa,eAC1BD,GAAU,CAAClqB,EAAOsF,EAAS2kB,IAAc,CACjC,CAACjqB,GAAS,OAAO,QAAY,KAC7B,QAAQ,KAAKgqB,GAAmB1kB,EAAS2kB,CAAS,CAAC,CAE/D,EACIE,GAAY,CAACnqB,EAAOsF,EAAS2kB,IAAc,CACvC,GAAI,CAACjqB,EACD,MAAM,IAAI,MAAMgqB,GAAmB1kB,EAAS2kB,CAAS,CAAC,CAElE,GCfA,MAAMG,GAAqB,CAAE,ECGvBC,GAAqB5nF,GAAM,+BAA+B,KAAKA,CAAC,ECHhE6nF,GAAYj9D,GAAU,OAAOA,GAAU,UAAYA,IAAU,KCG7Dk9D,GAAqB9nF,GAAM,cAAc,KAAKA,CAAC,ECFrD,SAAS+nF,GAAKv4B,EAAU,CACpB,IAAI1qC,EACJ,MAAO,KACCA,IAAW,SACXA,EAAS0qC,EAAQ,GACd1qC,EAEf,CCPA,MAAM+M,GAAQm2D,GAAQA,ECMhBC,GAAO,IAAIC,IAAiBA,EAAa,OAAO,CAACv6F,EAAG8Z,IAAOzH,GAAMyH,EAAE9Z,EAAEqS,CAAC,CAAC,CAAC,ECCxE0yD,GAAW,CAAC7uC,EAAMnP,EAAIkW,IAAU,CAClC,MAAMu9D,EAAQzzE,EAAKmP,EACnB,OAAOskE,GAASv9D,EAAQ/G,GAAQskE,EAAQ,CAC5C,ECTA,MAAMC,EAAoB,CACtB,aAAc,CACV,KAAK,cAAgB,EACxB,CACD,IAAI52D,EAAS,CACT,OAAA61D,GAAc,KAAK,cAAe71D,CAAO,EAClC,IAAM81D,GAAW,KAAK,cAAe91D,CAAO,CACtD,CACD,OAAO7jC,EAAG8Z,EAAG1W,EAAG,CACZ,MAAMs3F,EAAmB,KAAK,cAAc,OAC5C,GAAKA,EAEL,GAAIA,IAAqB,EAIrB,KAAK,cAAc,CAAC,EAAE16F,EAAG8Z,EAAG1W,CAAC,MAG7B,SAAS,EAAI,EAAG,EAAIs3F,EAAkB,IAAK,CAKvC,MAAM72D,EAAU,KAAK,cAAc,CAAC,EACpCA,GAAWA,EAAQ7jC,EAAG8Z,EAAG1W,CAAC,CAC7B,CAER,CACD,SAAU,CACN,OAAO,KAAK,cAAc,MAC7B,CACD,OAAQ,CACJ,KAAK,cAAc,OAAS,CAC/B,CACL,CC9BA,MAAMu3F,GAAyBC,GAAYA,EAAU,IAE/CC,GAAyB7rB,GAAiBA,EAAe,ICLzD8rB,GAAoB,CAACC,EAAU73B,IAAkBA,EAAgB63B,GAAY,IAAO73B,GAAiB,ECFrG83B,GAAS,IAAI,IAInB,SAASC,GAASC,EAAWhmB,EAAS2kB,EAAW,CACzCqB,GAAaF,GAAO,IAAI9lB,CAAO,IAEnC,QAAQ,KAAK0kB,GAAmB1kB,EAAS2kB,CAAS,CAAC,EACnDmB,GAAO,IAAI9lB,CAAO,EACtB,CCXA,MAAMimB,GAAO,CAACr0C,EAAKtM,EAAKnoC,IAAM,CAC1B,MAAM+oF,EAAY5gD,EAAMsM,EACxB,QAAWz0C,EAAIy0C,GAAOs0C,EAAaA,GAAaA,EAAat0C,CACjE,ECiBMiX,GAAa,CAAC,EAAGs9B,EAAI/nF,OAAU,EAAM,EAAMA,EAAK,EAAM+nF,GAAM,GAAK,EAAM/nF,EAAK,EAAM+nF,IAAO,EAAI,EAAMA,GACrG,EACEC,GAAuB,KACvBC,GAA2B,GACjC,SAASr9B,GAAgBxjD,EAAG8gF,EAAYC,EAAYn9B,EAAKC,EAAK,CAC1D,IAAIC,EACAC,EACA/jE,EAAI,EACR,GACI+jE,EAAW+8B,GAAcC,EAAaD,GAAc,EACpDh9B,EAAWT,GAAWU,EAAUH,EAAKC,CAAG,EAAI7jD,EACxC8jD,EAAW,EACXi9B,EAAah9B,EAGb+8B,EAAa/8B,QAEZ,KAAK,IAAID,CAAQ,EAAI88B,IAC1B,EAAE5gG,EAAI6gG,IACV,OAAO98B,CACX,CAEA,SAASi9B,GAAYp9B,EAAKS,EAAKR,EAAKS,EAAK,CAErC,GAAIV,IAAQS,GAAOR,IAAQS,EACvB,OAAO96B,GACX,MAAMg7B,EAAYf,GAAOD,GAAgBC,EAAI,EAAG,EAAGG,EAAKC,CAAG,EAE3D,OAAQjlE,GAAMA,IAAM,GAAKA,IAAM,EAAIA,EAAIykE,GAAWmB,EAAS5lE,CAAC,EAAGylE,EAAKC,CAAG,CAC3E,CC9CA,MAAM28B,GAAgBt+B,GAAYjrD,GAAMA,GAAK,GAAMirD,EAAO,EAAIjrD,CAAC,EAAI,GAAK,EAAIirD,EAAO,GAAK,EAAIjrD,EAAE,GAAK,ECA7FgrD,GAAiBC,GAAYjrD,GAAM,EAAIirD,EAAO,EAAIjrD,CAAC,ECCnDwpF,GAAwBF,GAAY,IAAM,KAAM,IAAM,GAAI,EAC1DG,GAAuBz+B,GAAcw+B,EAAO,EAC5CE,GAA0BH,GAAaE,EAAM,ECJ7CE,GAAc3pF,GAAMA,GAAK,EACzB,GACCA,GAAK,GAAK,EACP,GAAMypF,GAAOzpF,CAAC,EACd,IAAO,EAAI,KAAK,IAAI,EAAG,KAAOA,EAAI,EAAE,GCHxC4pF,GAAU5pF,GAAM,EAAI,KAAK,IAAI,KAAK,KAAKA,CAAC,CAAC,EACzC6pF,GAAU7+B,GAAc4+B,EAAM,EAC9BE,GAAYP,GAAaK,EAAM,ECH/BG,GAAuBT,GAAY,IAAM,EAAG,EAAG,CAAC,EAChDU,GAAwBV,GAAY,EAAG,EAAG,IAAM,CAAC,EACjDW,GAA0BX,GAAY,IAAM,EAAG,IAAM,CAAC,ECHtDY,GAAiBC,GACZ,MAAM,QAAQA,CAAI,GAAK,OAAOA,EAAK,CAAC,GAAM,SCErD,SAASC,GAAoBn/B,EAAQ3iE,EAAG,CACpC,OAAO4hG,GAAcj/B,CAAM,EAAIA,EAAO89B,GAAK,EAAG99B,EAAO,OAAQ3iE,CAAC,CAAC,EAAI2iE,CACvE,CCLA,MAAMo/B,GAAsBp/B,GAAW,MAAM,QAAQA,CAAM,GAAK,OAAOA,EAAO,CAAC,GAAM,SCQ/Eq/B,GAAe,CACjB,OAAQx4D,GACR,OAAAi4D,GACA,UAAAE,GACA,QAAAD,GACA,OAAAJ,GACA,UAAAE,GACA,QAAAD,GACA,OAAAJ,GACA,UAAAC,GACA,QAAAF,GACA,WAAAG,EACJ,EACMY,GAAiBt/B,GACZ,OAAOA,GAAW,SAEvBu/B,GAA8BC,GAAe,CAC/C,GAAIJ,GAAmBI,CAAU,EAAG,CAEhC9C,GAAU8C,EAAW,SAAW,EAAG,0DAA2D,qBAAqB,EACnH,KAAM,CAAC5sF,EAAInB,EAAIoH,EAAI3B,CAAE,EAAIsoF,EACzB,OAAOnB,GAAYzrF,EAAInB,EAAIoH,EAAI3B,CAAE,CACpC,SACQooF,GAAcE,CAAU,EAE7B9C,OAAAA,GAAU2C,GAAaG,CAAU,IAAM,OAAW,wBAAwBA,CAAU,IAAK,qBAAqB,EACvGH,GAAaG,CAAU,EAElC,OAAOA,CACX,ECnCMC,GAAqBC,EAAa,cAAC,EAAE,ECArCC,GAAcD,EAAa,cAAC,CAAE,OAAQ,EAAK,CAAE,ECG7CE,GAAsBF,EAAAA,cAAc,CACtC,mBAAqB3qF,GAAMA,EAC3B,SAAU,GACV,cAAe,OACnB,CAAC,ECPK8qF,GAAgCH,EAAa,cAAC,EAAE,ECHhDI,GAAa,CACf,QACA,OACA,mBACA,YACA,SACA,YACA,SACA,YACJ,ECTA,SAASC,GAAiBC,EAAc,CAKpC,IAAIC,EAAY,IAAI,IAChBC,EAAY,IAAI,IAKhBC,EAAe,GACfC,EAAiB,GAIrB,MAAMC,EAAc,IAAI,QACxB,IAAIC,EAAkB,CAClB,MAAO,EACP,UAAW,EACX,aAAc,EACtB,EACI,SAASC,EAAgB/7B,EAAU,CAC3B67B,EAAY,IAAI77B,CAAQ,IACxBthC,EAAK,SAASshC,CAAQ,EACtBw7B,KAEJx7B,EAAS87B,CAAe,CAC3B,CACD,MAAMp9D,EAAO,CAIT,SAAU,CAACshC,EAAUg8B,EAAY,GAAOC,EAAY,KAAU,CAE1D,MAAMrG,EADoBqG,GAAaN,EACLF,EAAYC,EAC9C,OAAIM,GACAH,EAAY,IAAI77B,CAAQ,EAC5B41B,EAAM,IAAI51B,CAAQ,EACXA,CACV,EAID,OAASA,GAAa,CAClB07B,EAAU,OAAO17B,CAAQ,EACzB67B,EAAY,OAAO77B,CAAQ,CAC9B,EAID,QAAUk8B,GAAc,CAOpB,GANAJ,EAAkBI,EAMdP,EAAc,CACdC,EAAiB,GACjB,MACH,CACDD,EAAe,GAEf,MAAMQ,EAAYV,EAClBA,EAAYC,EACZA,EAAYS,EAEZV,EAAU,QAAQM,CAAe,EAGjCN,EAAU,MAAK,EACfE,EAAe,GACXC,IACAA,EAAiB,GACjBl9D,EAAK,QAAQw9D,CAAS,EAE7B,CACT,EACI,OAAOx9D,CACX,CC5EA,MAAM09D,GAAa,GACnB,SAASC,GAAoBC,EAAmBC,EAAgB,CAC5D,IAAIf,EAAe,GACfgB,EAAoB,GACxB,MAAM5oE,EAAQ,CACV,MAAO,EACP,UAAW,EACX,aAAc,EACtB,EACU6oE,EAAmB,IAAOjB,EAAe,GACzCkB,EAAQpB,GAAW,OAAO,CAACpiC,EAAK59B,KAClC49B,EAAI59B,CAAG,EAAIigE,GAAiBkB,CAAgB,EACrCvjC,GACR,CAAE,CAAA,EACC,CAAE,MAAAyjC,EAAO,KAAAC,EAAM,iBAAAC,EAAkB,UAAAC,EAAW,OAAAr8B,EAAQ,UAAAs8B,EAAW,OAAAvR,EAAQ,WAAAwR,CAAa,EAAGN,EACvFO,EAAe,IAAM,CACvB,MAAMC,EAAkB/E,GAAmB,gBACrCgF,EAAYD,EACZtpE,EAAM,UACN,YAAY,IAAG,EACrB4nE,EAAe,GACV0B,IACDtpE,EAAM,MAAQ4oE,EACR,IAAO,GACP,KAAK,IAAI,KAAK,IAAIW,EAAYvpE,EAAM,UAAWwoE,EAAU,EAAG,CAAC,GAEvExoE,EAAM,UAAYupE,EAClBvpE,EAAM,aAAe,GAErB+oE,EAAM,QAAQ/oE,CAAK,EACnBgpE,EAAK,QAAQhpE,CAAK,EAClBipE,EAAiB,QAAQjpE,CAAK,EAC9BkpE,EAAU,QAAQlpE,CAAK,EACvB6sC,EAAO,QAAQ7sC,CAAK,EACpBmpE,EAAU,QAAQnpE,CAAK,EACvB43D,EAAO,QAAQ53D,CAAK,EACpBopE,EAAW,QAAQppE,CAAK,EACxBA,EAAM,aAAe,GACjB4nE,GAAgBe,IAChBC,EAAoB,GACpBF,EAAkBW,CAAY,EAE1C,EACUG,EAAO,IAAM,CACf5B,EAAe,GACfgB,EAAoB,GACf5oE,EAAM,cACP0oE,EAAkBW,CAAY,CAE1C,EAeI,MAAO,CAAE,SAdQ3B,GAAW,OAAO,CAACpiC,EAAK59B,IAAQ,CAC7C,MAAMoD,EAAOg+D,EAAMphE,CAAG,EACtB,OAAA49B,EAAI59B,CAAG,EAAI,CAAC0O,EAASgyD,EAAY,GAAOC,EAAY,MAC3CT,GACD4B,IACG1+D,EAAK,SAASsL,EAASgyD,EAAWC,CAAS,GAE/C/iC,CACV,EAAE,CAAE,CAAA,EAMc,OALHlvB,GAAY,CACxB,QAASnxC,EAAI,EAAGA,EAAIyiG,GAAW,OAAQziG,IACnC6jG,EAAMpB,GAAWziG,CAAC,CAAC,EAAE,OAAOmxC,CAAO,CAE/C,EAC+B,MAAApW,EAAO,MAAA8oE,CAAK,CAC3C,CClEA,KAAM,CAAE,SAAUlmB,GAAO,OAAQ6mB,GAAa,MAAOnB,GAAW,MAAOoB,EAAU,EAAsBjB,GAAoB,OAAO,sBAA0B,IAAc,sBAAwBh6D,GAAM,EAAI,ECA5M,IAAIqE,GACJ,SAAS62D,IAAY,CACjB72D,GAAM,MACV,CASA,MAAM+3B,GAAO,CACT,IAAK,KACG/3B,KAAQ,QACR+3B,GAAK,IAAIy9B,GAAU,cAAgB/D,GAAmB,gBAChD+D,GAAU,UACV,YAAY,IAAG,CAAE,EAEpBx1D,IAEX,IAAMk6B,GAAY,CACdl6B,GAAMk6B,EACN,eAAe28B,EAAS,CAC3B,CACL,EC5BMC,GAAyBC,GAAWniE,GAAQ,OAAOA,GAAQ,UAAYA,EAAI,WAAWmiE,CAAK,EAC3FC,GACQF,GAAsB,IAAI,EAClCG,GACQH,GAAsB,QAAQ,EACtCI,GAAsBxiE,GACAuiE,GAAsBviE,CAAK,EAI5CyiE,GAAuB,KAAKziE,EAAM,MAAM,IAAI,EAAE,CAAC,EAAE,KAAI,CAAE,EAFnD,GAITyiE,GAAyB,sFAM/B,SAASC,GAAoB1iE,EAAO,CAChC,OAAI,OAAOA,GAAU,SACV,GAEJA,EAAM,MAAM,IAAI,EAAE,CAAC,EAAE,SAAS,QAAQ,CACjD,CCrBA,MAAM2iE,GAAS,CACX,KAAOvtF,GAAM,OAAOA,GAAM,SAC1B,MAAO,WACP,UAAYA,GAAMA,CACtB,EACMo1C,GAAQ,CACV,GAAGm4C,GACH,UAAYvtF,GAAM2jB,GAAM,EAAG,EAAG3jB,CAAC,CACnC,EACMwzD,GAAQ,CACV,GAAG+5B,GACH,QAAS,CACb,ECZMC,GAAYxtF,GAAM,KAAK,MAAMA,EAAI,GAAM,EAAI,ICF3CytF,GAAa,8BCAnB,SAASC,GAAU1tF,EAAG,CAClB,OAAOA,GAAK,IAChB,CCFA,MAAM2tF,GAAmB,sHCQnBC,GAAgB,CAAC/nE,EAAMgoE,IAAc7tF,GAChC,GAAS,OAAOA,GAAM,UACzB2tF,GAAiB,KAAK3tF,CAAC,GACvBA,EAAE,WAAW6lB,CAAI,GAChBgoE,GACG,CAACH,GAAU1tF,CAAC,GACZ,OAAO,UAAU,eAAe,KAAKA,EAAG6tF,CAAQ,GAEtDC,GAAa,CAACC,EAAOC,EAAOC,IAAWjuF,GAAM,CAC/C,GAAI,OAAOA,GAAM,SACb,OAAOA,EACX,KAAM,CAACrS,EAAG8Z,EAAG1W,EAAGqkD,CAAK,EAAIp1C,EAAE,MAAMytF,EAAU,EAC3C,MAAO,CACH,CAACM,CAAK,EAAG,WAAWpgG,CAAC,EACrB,CAACqgG,CAAK,EAAG,WAAWvmF,CAAC,EACrB,CAACwmF,CAAK,EAAG,WAAWl9F,CAAC,EACrB,MAAOqkD,IAAU,OAAY,WAAWA,CAAK,EAAI,CACzD,CACA,ECrBM84C,GAAgBluF,GAAM2jB,GAAM,EAAG,IAAK3jB,CAAC,EACrCmuF,GAAU,CACZ,GAAGZ,GACH,UAAYvtF,GAAM,KAAK,MAAMkuF,GAAaluF,CAAC,CAAC,CAChD,EACMouF,GAAO,CACT,KAAoBR,GAAc,MAAO,KAAK,EAC9C,MAAqBE,GAAW,MAAO,QAAS,MAAM,EACtD,UAAW,CAAC,CAAE,IAAAO,EAAK,MAAAC,EAAO,KAAAC,EAAM,MAAOC,EAAU,CAAC,IAAO,QACrDL,GAAQ,UAAUE,CAAG,EACrB,KACAF,GAAQ,UAAUG,CAAK,EACvB,KACAH,GAAQ,UAAUI,CAAI,EACtB,KACAf,GAASp4C,GAAM,UAAUo5C,CAAO,CAAC,EACjC,GACR,ECnBA,SAASC,GAASzuF,EAAG,CACjB,IAAIxR,EAAI,GACJ4Q,EAAI,GACJqI,EAAI,GACJ9Z,EAAI,GAER,OAAIqS,EAAE,OAAS,GACXxR,EAAIwR,EAAE,UAAU,EAAG,CAAC,EACpBZ,EAAIY,EAAE,UAAU,EAAG,CAAC,EACpByH,EAAIzH,EAAE,UAAU,EAAG,CAAC,EACpBrS,EAAIqS,EAAE,UAAU,EAAG,CAAC,IAIpBxR,EAAIwR,EAAE,UAAU,EAAG,CAAC,EACpBZ,EAAIY,EAAE,UAAU,EAAG,CAAC,EACpByH,EAAIzH,EAAE,UAAU,EAAG,CAAC,EACpBrS,EAAIqS,EAAE,UAAU,EAAG,CAAC,EACpBxR,GAAKA,EACL4Q,GAAKA,EACLqI,GAAKA,EACL9Z,GAAKA,GAEF,CACH,IAAK,SAASa,EAAG,EAAE,EACnB,MAAO,SAAS4Q,EAAG,EAAE,EACrB,KAAM,SAASqI,EAAG,EAAE,EACpB,MAAO9Z,EAAI,SAASA,EAAG,EAAE,EAAI,IAAM,CAC3C,CACA,CACA,MAAM+1B,GAAM,CACR,KAAoBkqE,GAAc,GAAG,EACrC,MAAOa,GACP,UAAWL,GAAK,SACpB,ECpCMM,GAAkBC,IAAU,CAC9B,KAAO3uF,GAAM,OAAOA,GAAM,UAAYA,EAAE,SAAS2uF,CAAI,GAAK3uF,EAAE,MAAM,GAAG,EAAE,SAAW,EAClF,MAAO,WACP,UAAYA,GAAM,GAAGA,CAAC,GAAG2uF,CAAI,EACjC,GACM70C,GAAwB40C,GAAe,KAAK,EAC5CE,GAAwBF,GAAe,GAAG,EAC1CG,GAAmBH,GAAe,IAAI,EACtCI,GAAmBJ,GAAe,IAAI,EACtCK,GAAmBL,GAAe,IAAI,EACtCM,IAAoC,KAAO,CAC7C,GAAGJ,GACH,MAAQ5uF,GAAM4uF,GAAQ,MAAM5uF,CAAC,EAAI,IACjC,UAAYA,GAAM4uF,GAAQ,UAAU5uF,EAAI,GAAG,CAC/C,IAAK,ECVCivF,GAAO,CACT,KAAoBrB,GAAc,MAAO,KAAK,EAC9C,MAAqBE,GAAW,MAAO,aAAc,WAAW,EAChE,UAAW,CAAC,CAAE,IAAAoB,EAAK,WAAAC,EAAY,UAAAC,EAAW,MAAOZ,EAAU,KAC/C,QACJ,KAAK,MAAMU,CAAG,EACd,KACAN,GAAQ,UAAUpB,GAAS2B,CAAU,CAAC,EACtC,KACAP,GAAQ,UAAUpB,GAAS4B,CAAS,CAAC,EACrC,KACA5B,GAASp4C,GAAM,UAAUo5C,CAAO,CAAC,EACjC,GAEZ,ECfM91C,GAAQ,CACV,KAAO14C,GAAMouF,GAAK,KAAKpuF,CAAC,GAAK0jB,GAAI,KAAK1jB,CAAC,GAAKivF,GAAK,KAAKjvF,CAAC,EACvD,MAAQA,GACAouF,GAAK,KAAKpuF,CAAC,EACJouF,GAAK,MAAMpuF,CAAC,EAEdivF,GAAK,KAAKjvF,CAAC,EACTivF,GAAK,MAAMjvF,CAAC,EAGZ0jB,GAAI,MAAM1jB,CAAC,EAG1B,UAAYA,GACD,OAAOA,GAAM,SACdA,EACAA,EAAE,eAAe,KAAK,EAClBouF,GAAK,UAAUpuF,CAAC,EAChBivF,GAAK,UAAUjvF,CAAC,EAE9B,kBAAoBA,GAAM,CACtB,MAAMqvF,EAAS32C,GAAM,MAAM14C,CAAC,EAC5B,OAAAqvF,EAAO,MAAQ,EACR32C,GAAM,UAAU22C,CAAM,CAChC,CACL,EC7BMC,GAAa,qHCKnB,SAASh9C,GAAKtyC,EAAG,CACb,OAAQ,MAAMA,CAAC,GACX,OAAOA,GAAM,WACZA,EAAE,MAAMytF,EAAU,GAAG,QAAU,IAC3BztF,EAAE,MAAMsvF,EAAU,GAAG,QAAU,GAChC,CACZ,CACA,MAAMC,GAAe,SACfC,GAAc,QACdC,GAAY,MACZC,GAAqB,OACrBC,GAAc,MAEdC,GAAe,kOACrB,SAASC,GAAoBjlE,EAAO,CAChC,MAAMklE,EAAgBllE,EAAM,WACtB8Q,EAAS,CAAA,EACTq0D,EAAU,CACZ,MAAO,CAAE,EACT,OAAQ,CAAE,EACV,IAAK,CAAE,CACf,EACUC,EAAQ,CAAA,EACd,IAAI,EAAI,EAoBR,MAAMC,EAnBYH,EAAc,QAAQF,GAAeM,IAC/Cx3C,GAAM,KAAKw3C,CAAW,GACtBH,EAAQ,MAAM,KAAK,CAAC,EACpBC,EAAM,KAAKR,EAAW,EACtB9zD,EAAO,KAAKgd,GAAM,MAAMw3C,CAAW,CAAC,GAE/BA,EAAY,WAAWR,EAAkB,GAC9CK,EAAQ,IAAI,KAAK,CAAC,EAClBC,EAAM,KAAKP,EAAS,EACpB/zD,EAAO,KAAKw0D,CAAW,IAGvBH,EAAQ,OAAO,KAAK,CAAC,EACrBC,EAAM,KAAKT,EAAY,EACvB7zD,EAAO,KAAK,WAAWw0D,CAAW,CAAC,GAEvC,EAAE,EACKP,GACV,EACuB,MAAMA,EAAW,EACzC,MAAO,CAAE,OAAAj0D,EAAQ,MAAAu0D,EAAO,QAAAF,EAAS,MAAAC,CAAK,CAC1C,CACA,SAASG,GAAkBnwF,EAAG,CAC1B,OAAO6vF,GAAoB7vF,CAAC,EAAE,MAClC,CACA,SAASowF,GAAiB,CAAE,MAAAH,EAAO,MAAAD,GAAS,CACxC,MAAMK,EAAcJ,EAAM,OAC1B,OAAQjwF,GAAM,CACV,IAAIswF,EAAS,GACb,QAAS,EAAI,EAAG,EAAID,EAAa,IAE7B,GADAC,GAAUL,EAAM,CAAC,EACbjwF,EAAE,CAAC,IAAM,OAAW,CACpB,MAAM6lB,EAAOmqE,EAAM,CAAC,EAChBnqE,IAAS0pE,GACTe,GAAU9C,GAASxtF,EAAE,CAAC,CAAC,EAElB6lB,IAAS2pE,GACdc,GAAU53C,GAAM,UAAU14C,EAAE,CAAC,CAAC,EAG9BswF,GAAUtwF,EAAE,CAAC,CAEpB,CAEL,OAAOswF,CACf,CACA,CACA,SAASC,GAAkB78D,EAAQ,CAC/B,OAAO08D,GAAiBP,GAAoBn8D,CAAM,CAAC,CACvD,CACA,MAAM88D,GAAwBxwF,GAAM,OAAOA,GAAM,SAAW,EAAI04C,GAAM,KAAK14C,CAAC,EAAI04C,GAAM,kBAAkB14C,CAAC,EAAIA,EAevGywF,GAAgB,CAAC7lE,EAAO8lE,IACtB,OAAO9lE,GAAU,SACV8lE,GAAa,OAAO,SAAS,GAAG,EAAI9lE,EAAQ,EAEhD4lE,GAAqB5lE,CAAK,EAErC,SAAS+lE,GAAkB3wF,EAAG,CAC1B,MAAMiiF,EAAO4N,GAAoB7vF,CAAC,EAElC,OADoBowF,GAAiBnO,CAAI,EACtBA,EAAK,OAAO,IAAI,CAACr3D,EAAOviC,IAAMooG,GAAc7lE,EAAOq3D,EAAK,MAAM55F,CAAC,CAAC,CAAC,CAAC,CACzF,CACA,MAAMuoG,GAAU,CACZ,KAAAt+C,GACA,MAAO69C,GACP,kBAAAI,GACJ,kBAAII,EACJ,EC7GA,SAASE,GAAS9wF,EAAGmG,EAAGjf,EAAG,CAKvB,OAJIA,EAAI,IACJA,GAAK,GACLA,EAAI,IACJA,GAAK,GACLA,EAAI,EAAI,EACD8Y,GAAKmG,EAAInG,GAAK,EAAI9Y,EACzBA,EAAI,EAAI,EACDif,EACPjf,EAAI,EAAI,EACD8Y,GAAKmG,EAAInG,IAAM,EAAI,EAAI9Y,GAAK,EAChC8Y,CACX,CACA,SAAS+wF,GAAW,CAAE,IAAA5B,EAAK,WAAAC,EAAY,UAAAC,EAAW,MAAAh6C,CAAK,EAAI,CACvD85C,GAAO,IACPC,GAAc,IACdC,GAAa,IACb,IAAIf,EAAM,EACNC,EAAQ,EACRC,EAAO,EACX,GAAI,CAACY,EACDd,EAAMC,EAAQC,EAAOa,MAEpB,CACD,MAAMlpF,EAAIkpF,EAAY,GAChBA,GAAa,EAAID,GACjBC,EAAYD,EAAaC,EAAYD,EACrCpvF,EAAI,EAAIqvF,EAAYlpF,EAC1BmoF,EAAMwC,GAAS9wF,EAAGmG,EAAGgpF,EAAM,EAAI,CAAC,EAChCZ,EAAQuC,GAAS9wF,EAAGmG,EAAGgpF,CAAG,EAC1BX,EAAOsC,GAAS9wF,EAAGmG,EAAGgpF,EAAM,EAAI,CAAC,CACpC,CACD,MAAO,CACH,IAAK,KAAK,MAAMb,EAAM,GAAG,EACzB,MAAO,KAAK,MAAMC,EAAQ,GAAG,EAC7B,KAAM,KAAK,MAAMC,EAAO,GAAG,EAC3B,MAAAn5C,CACR,CACA,CCvCA,SAAS27C,GAAapjG,EAAG8Z,EAAG,CACxB,OAAQ1H,GAAOA,EAAI,EAAI0H,EAAI9Z,CAC/B,CCmBA,MAAMqjG,GAAY,CAACntE,EAAMnP,EAAIg+C,IAClB7uC,GAAQnP,EAAKmP,GAAQ6uC,ECX1Bu+B,GAAiB,CAACptE,EAAMnP,EAAI1U,IAAM,CACpC,MAAMkxF,EAAWrtE,EAAOA,EAClBstE,EAAOnxF,GAAK0U,EAAKA,EAAKw8E,GAAYA,EACxC,OAAOC,EAAO,EAAI,EAAI,KAAK,KAAKA,CAAI,CACxC,EACMC,GAAa,CAAC1tE,GAAK0qE,GAAMa,EAAI,EAC7BoC,GAAgBrxF,GAAMoxF,GAAW,KAAMvrE,GAASA,EAAK,KAAK7lB,CAAC,CAAC,EAClE,SAASsxF,GAAO54C,EAAO,CACnB,MAAM7yB,EAAOwrE,GAAa34C,CAAK,EAE/B,GADA+uC,GAAQ,EAAQ5hE,EAAO,IAAI6yB,CAAK,uEAAwE,sBAAsB,EAC1H,CAAS7yB,EACT,MAAO,GACX,IAAI0rE,EAAQ1rE,EAAK,MAAM6yB,CAAK,EAC5B,OAAI7yB,IAASopE,KAETsC,EAAQT,GAAWS,CAAK,GAErBA,CACX,CACA,MAAMC,GAAW,CAAC3tE,EAAMnP,IAAO,CAC3B,MAAM+8E,EAAWH,GAAOztE,CAAI,EACtB6tE,EAASJ,GAAO58E,CAAE,EACxB,GAAI,CAAC+8E,GAAY,CAACC,EACd,OAAOX,GAAaltE,EAAMnP,CAAE,EAEhC,MAAMi9E,EAAU,CAAE,GAAGF,GACrB,OAAQzxF,IACJ2xF,EAAQ,IAAMV,GAAeQ,EAAS,IAAKC,EAAO,IAAK1xF,CAAC,EACxD2xF,EAAQ,MAAQV,GAAeQ,EAAS,MAAOC,EAAO,MAAO1xF,CAAC,EAC9D2xF,EAAQ,KAAOV,GAAeQ,EAAS,KAAMC,EAAO,KAAM1xF,CAAC,EAC3D2xF,EAAQ,MAAQX,GAAUS,EAAS,MAAOC,EAAO,MAAO1xF,CAAC,EAClDouF,GAAK,UAAUuD,CAAO,EAErC,EC5CMC,GAAkB,IAAI,IAAI,CAAC,OAAQ,QAAQ,CAAC,EAMlD,SAASC,GAAcrb,EAAQvyD,EAAQ,CACnC,OAAI2tE,GAAgB,IAAIpb,CAAM,EAClBz2E,GAAOA,GAAK,EAAIy2E,EAASvyD,EAGzBlkB,GAAOA,GAAK,EAAIkkB,EAASuyD,CAEzC,CCJA,SAASwa,GAAUrjG,EAAG8Z,EAAG,CACrB,OAAQ1H,GAAM+xF,GAAYnkG,EAAG8Z,EAAG1H,CAAC,CACrC,CACA,SAASgyF,GAASpkG,EAAG,CACjB,OAAI,OAAOA,GAAM,SACNqjG,GAEF,OAAOrjG,GAAM,SACXy/F,GAAmBz/F,CAAC,EACrBojG,GACAr4C,GAAM,KAAK/qD,CAAC,EACR6jG,GACAQ,GAEL,MAAM,QAAQrkG,CAAC,EACbskG,GAEF,OAAOtkG,GAAM,SACX+qD,GAAM,KAAK/qD,CAAC,EAAI6jG,GAAWU,GAE/BnB,EACX,CACA,SAASkB,GAAStkG,EAAG8Z,EAAG,CACpB,MAAM6oF,EAAS,CAAC,GAAG3iG,CAAC,EACdwkG,EAAY7B,EAAO,OACnB8B,EAAazkG,EAAE,IAAI,CAACqS,EAAG3X,IAAM0pG,GAAS/xF,CAAC,EAAEA,EAAGyH,EAAEpf,CAAC,CAAC,CAAC,EACvD,OAAQ0X,GAAM,CACV,QAAS1X,EAAI,EAAGA,EAAI8pG,EAAW9pG,IAC3BioG,EAAOjoG,CAAC,EAAI+pG,EAAW/pG,CAAC,EAAE0X,CAAC,EAE/B,OAAOuwF,CACf,CACA,CACA,SAAS4B,GAAUvkG,EAAG8Z,EAAG,CACrB,MAAM6oF,EAAS,CAAE,GAAG3iG,EAAG,GAAG8Z,CAAC,EACrB2qF,EAAa,CAAA,EACnB,UAAWtnE,KAAOwlE,EACV3iG,EAAEm9B,CAAG,IAAM,QAAarjB,EAAEqjB,CAAG,IAAM,SACnCsnE,EAAWtnE,CAAG,EAAIinE,GAASpkG,EAAEm9B,CAAG,CAAC,EAAEn9B,EAAEm9B,CAAG,EAAGrjB,EAAEqjB,CAAG,CAAC,GAGzD,OAAQ9qB,GAAM,CACV,UAAW8qB,KAAOsnE,EACd9B,EAAOxlE,CAAG,EAAIsnE,EAAWtnE,CAAG,EAAE9qB,CAAC,EAEnC,OAAOswF,CACf,CACA,CACA,SAAS+B,GAAW7b,EAAQvyD,EAAQ,CAChC,MAAMquE,EAAgB,CAAA,EAChBC,EAAW,CAAE,MAAO,EAAG,IAAK,EAAG,OAAQ,GAC7C,QAASlqG,EAAI,EAAGA,EAAI47B,EAAO,OAAO,OAAQ57B,IAAK,CAC3C,MAAMw9B,EAAO5B,EAAO,MAAM57B,CAAC,EACrBmqG,EAAchc,EAAO,QAAQ3wD,CAAI,EAAE0sE,EAAS1sE,CAAI,CAAC,EACjD4sE,EAAcjc,EAAO,OAAOgc,CAAW,GAAK,EAClDF,EAAcjqG,CAAC,EAAIoqG,EACnBF,EAAS1sE,CAAI,GAChB,CACD,OAAOysE,CACX,CACA,MAAMN,GAAa,CAACxb,EAAQvyD,IAAW,CACnC,MAAMo/C,EAAWutB,GAAQ,kBAAkB3sE,CAAM,EAC3CyuE,EAAc7C,GAAoBrZ,CAAM,EACxCmc,EAAc9C,GAAoB5rE,CAAM,EAI9C,OAHuByuE,EAAY,QAAQ,IAAI,SAAWC,EAAY,QAAQ,IAAI,QAC9ED,EAAY,QAAQ,MAAM,SAAWC,EAAY,QAAQ,MAAM,QAC/DD,EAAY,QAAQ,OAAO,QAAUC,EAAY,QAAQ,OAAO,OAE3Df,GAAgB,IAAIpb,CAAM,GAC3B,CAACmc,EAAY,OAAO,QACnBf,GAAgB,IAAI3tE,CAAM,GACvB,CAACyuE,EAAY,OAAO,OACjBb,GAAcrb,EAAQvyD,CAAM,EAEhCgkE,GAAKgK,GAASI,GAAWK,EAAaC,CAAW,EAAGA,EAAY,MAAM,EAAGtvB,CAAQ,GAGxFokB,GAAQ,GAAM,mBAAmBjR,CAAM,UAAUvyD,CAAM,2KAA4K,0BAA0B,EACtP8sE,GAAava,EAAQvyD,CAAM,EAE1C,ECtFA,SAAS2uE,GAAI/uE,EAAMnP,EAAI3U,EAAG,CACtB,OAAI,OAAO8jB,GAAS,UAChB,OAAOnP,GAAO,UACd,OAAO3U,GAAM,SACNixF,GAAUntE,EAAMnP,EAAI3U,CAAC,EAElBgyF,GAASluE,CAAI,EACdA,EAAMnP,CAAE,CACzB,CCRA,MAAMm+E,GAAmB5iC,GAAW,CAChC,MAAM6iC,EAAgB,CAAC,CAAE,UAAAnG,CAAW,IAAK18B,EAAO08B,CAAS,EACzD,MAAO,CACH,MAAO,CAACnB,EAAY,KAASxlB,GAAM,OAAO8sB,EAAetH,CAAS,EAClE,KAAM,IAAMqB,GAAYiG,CAAa,EAKrC,IAAK,IAAOpH,GAAU,aAAeA,GAAU,UAAYz9B,GAAK,KACxE,CACA,ECdM8kC,GAAuB,CAAC/nC,EAAQnoB,EACtCmwD,EAAa,KACR,CACD,IAAItrC,EAAS,GACb,MAAMurC,EAAY,KAAK,IAAI,KAAK,MAAMpwD,EAAWmwD,CAAU,EAAG,CAAC,EAC/D,QAAS,EAAI,EAAG,EAAIC,EAAW,IAC3BvrC,GAAU,KAAK,MAAMsD,EAAO,GAAKioC,EAAY,EAAE,EAAI,GAAK,EAAI,IAAQ,KAExE,MAAO,UAAUvrC,EAAO,UAAU,EAAGA,EAAO,OAAS,CAAC,CAAC,GAC3D,ECLMwrC,GAAuB,IAC7B,SAASC,GAAsBplE,EAAW,CACtC,IAAI8U,EAAW,EACf,MAAMuwD,EAAW,GACjB,IAAIhwE,EAAQ2K,EAAU,KAAK8U,CAAQ,EACnC,KAAO,CAACzf,EAAM,MAAQyf,EAAWqwD,IAC7BrwD,GAAYuwD,EACZhwE,EAAQ2K,EAAU,KAAK8U,CAAQ,EAEnC,OAAOA,GAAYqwD,GAAuB,IAAWrwD,CACzD,CCRA,SAASwwD,GAAsBttE,EAASytC,EAAQ,IAAK8/B,EAAiB,CAClE,MAAMvlE,EAAYulE,EAAgB,CAAE,GAAGvtE,EAAS,UAAW,CAAC,EAAGytC,CAAK,CAAC,CAAE,EACjE3wB,EAAW,KAAK,IAAIswD,GAAsBplE,CAAS,EAAGmlE,EAAoB,EAChF,MAAO,CACH,KAAM,YACN,KAAOxgC,GACI3kC,EAAU,KAAK8U,EAAW6vB,CAAQ,EAAE,MAAQc,EAEvD,SAAUg1B,GAAsB3lD,CAAQ,CAChD,CACA,CCXA,MAAM0wD,GAAiB,CAEnB,UAAW,IACX,QAAS,GACT,KAAM,EACN,SAAU,EAEV,SAAU,IACV,OAAQ,GACR,eAAgB,GAEhB,UAAW,CACP,SAAU,IACV,QAAS,CACZ,EACD,UAAW,CACP,SAAU,KACV,QAAS,EACZ,EAED,YAAa,IACb,YAAa,GACb,WAAY,IACZ,WAAY,CAChB,EACA,SAASC,GAAgBC,EAAcC,EAAc,CACjD,OAAOD,EAAe,KAAK,KAAK,EAAIC,EAAeA,CAAY,CACnE,CACA,MAAMC,GAAiB,GACvB,SAASC,GAAgBC,EAAUC,EAAYC,EAAc,CACzD,IAAIjvE,EAASivE,EACb,QAAS1rG,EAAI,EAAGA,EAAIsrG,GAAgBtrG,IAChCy8B,EAASA,EAAS+uE,EAAS/uE,CAAM,EAAIgvE,EAAWhvE,CAAM,EAE1D,OAAOA,CACX,CAIA,MAAMkvE,GAAU,KAChB,SAASC,GAAW,CAAE,SAAApxD,EAAW0wD,GAAe,SAAU,OAAAW,EAASX,GAAe,OAAQ,SAAA7K,EAAW6K,GAAe,SAAU,KAAAY,EAAOZ,GAAe,IAAI,EAAK,CACzJ,IAAIM,EACAC,EACJrM,GAAQ5kD,GAAYylD,GAAsBiL,GAAe,WAAW,EAAG,6CAA8C,uBAAuB,EAC5I,IAAIG,EAAe,EAAIQ,EAIvBR,EAAe/vE,GAAM4vE,GAAe,WAAYA,GAAe,WAAYG,CAAY,EACvF7wD,EAAWlf,GAAM4vE,GAAe,YAAaA,GAAe,YAAa/K,GAAsB3lD,CAAQ,CAAC,EACpG6wD,EAAe,GAIfG,EAAYJ,GAAiB,CACzB,MAAMW,EAAmBX,EAAeC,EAClChkB,EAAQ0kB,EAAmBvxD,EAC3Bl1C,EAAIymG,EAAmB1L,EACvBjhF,EAAI+rF,GAAgBC,EAAcC,CAAY,EAC9C3iG,EAAI,KAAK,IAAI,CAAC2+E,CAAK,EACzB,OAAOskB,GAAWrmG,EAAI8Z,EAAK1W,CACvC,EACQ+iG,EAAcL,GAAiB,CAE3B,MAAM/jB,EADmB+jB,EAAeC,EACP7wD,EAC3B,EAAI6sC,EAAQgZ,EAAWA,EACvB1hG,EAAI,KAAK,IAAI0sG,EAAc,CAAC,EAAI,KAAK,IAAID,EAAc,CAAC,EAAI5wD,EAC5D5xC,EAAI,KAAK,IAAI,CAACy+E,CAAK,EACnB,EAAI8jB,GAAgB,KAAK,IAAIC,EAAc,CAAC,EAAGC,CAAY,EAEjE,OADe,CAACG,EAASJ,CAAY,EAAIO,GAAU,EAAI,GAAK,KACzC,EAAIhtG,GAAKiK,GAAM,CAC9C,IAMQ4iG,EAAYJ,GAAiB,CACzB,MAAM9lG,EAAI,KAAK,IAAI,CAAC8lG,EAAe5wD,CAAQ,EACrCp7B,GAAKgsF,EAAe/K,GAAY7lD,EAAW,EACjD,MAAO,CAACmxD,GAAUrmG,EAAI8Z,CAClC,EACQqsF,EAAcL,GAAiB,CAC3B,MAAM9lG,EAAI,KAAK,IAAI,CAAC8lG,EAAe5wD,CAAQ,EACrCp7B,GAAKihF,EAAW+K,IAAiB5wD,EAAWA,GAClD,OAAOl1C,EAAI8Z,CACvB,GAEI,MAAMssF,EAAe,EAAIlxD,EACnB4wD,EAAeG,GAAgBC,EAAUC,EAAYC,CAAY,EAEvE,GADAlxD,EAAWylD,GAAsBzlD,CAAQ,EACrC,MAAM4wD,CAAY,EAClB,MAAO,CACH,UAAWF,GAAe,UAC1B,QAASA,GAAe,QACxB,SAAA1wD,CACZ,EAES,CACD,MAAMwxD,EAAY,KAAK,IAAIZ,EAAc,CAAC,EAAIU,EAC9C,MAAO,CACH,UAAAE,EACA,QAASX,EAAe,EAAI,KAAK,KAAKS,EAAOE,CAAS,EACtD,SAAAxxD,CACZ,CACK,CACL,CACA,MAAMyxD,GAAe,CAAC,WAAY,QAAQ,EACpCC,GAAc,CAAC,YAAa,UAAW,MAAM,EACnD,SAASC,GAAazuE,EAASyV,EAAM,CACjC,OAAOA,EAAK,KAAM1Q,GAAQ/E,EAAQ+E,CAAG,IAAM,MAAS,CACxD,CACA,SAAS2pE,GAAiB1uE,EAAS,CAC/B,IAAI2uE,EAAgB,CAChB,SAAUnB,GAAe,SACzB,UAAWA,GAAe,UAC1B,QAASA,GAAe,QACxB,KAAMA,GAAe,KACrB,uBAAwB,GACxB,GAAGxtE,CACX,EAEI,GAAI,CAACyuE,GAAazuE,EAASwuE,EAAW,GAClCC,GAAazuE,EAASuuE,EAAY,EAMlC,GADAI,EAAc,SAAW,EACrB3uE,EAAQ,eAAgB,CACxB,MAAM4uE,EAAiB5uE,EAAQ,eACzB6uE,EAAQ,EAAI,KAAK,IAAOD,EAAiB,KACzCN,EAAYO,EAAOA,EACnBC,EAAU,EACZlxE,GAAM,IAAM,EAAG,GAAKoC,EAAQ,QAAU,EAAE,EACxC,KAAK,KAAKsuE,CAAS,EACvBK,EAAgB,CACZ,GAAGA,EACH,KAAMnB,GAAe,KACrB,UAAAc,EACA,QAAAQ,CAChB,CACS,KACI,CACD,MAAMC,EAAUb,GAAW,CAAE,GAAGluE,EAAS,SAAU,CAAC,CAAE,EACtD2uE,EAAgB,CACZ,GAAGA,EACH,GAAGI,EACH,KAAMvB,GAAe,IACrC,EACYmB,EAAc,uBAAyB,EAC1C,CAEL,OAAOA,CACX,CACA,SAASniC,GAAOwiC,EAA0BxB,GAAe,eAAgBW,EAASX,GAAe,OAAQ,CACrG,MAAMxtE,EAAU,OAAOgvE,GAA4B,SAC7C,CACE,eAAgBA,EAChB,UAAW,CAAC,EAAG,CAAC,EAChB,OAAAb,CACH,EACCa,EACN,GAAI,CAAE,UAAAC,EAAW,UAAAC,CAAW,EAAGlvE,EAC/B,MAAMywD,EAASzwD,EAAQ,UAAU,CAAC,EAC5B9B,EAAS8B,EAAQ,UAAUA,EAAQ,UAAU,OAAS,CAAC,EAKvD3C,EAAQ,CAAE,KAAM,GAAO,MAAOozD,CAAM,EACpC,CAAE,UAAA6d,EAAW,QAAAQ,EAAS,KAAAV,EAAM,SAAAtxD,EAAU,SAAA6lD,EAAU,uBAAAwM,CAAyB,EAAGT,GAAiB,CAC/F,GAAG1uE,EACH,SAAU,CAACyiE,GAAsBziE,EAAQ,UAAY,CAAC,CAC9D,CAAK,EACKovE,EAAkBzM,GAAY,EAC9BgL,EAAemB,GAAW,EAAI,KAAK,KAAKR,EAAYF,CAAI,GACxDiB,EAAenxE,EAASuyD,EACxB6e,EAAsB7M,GAAsB,KAAK,KAAK6L,EAAYF,CAAI,CAAC,EAQvEmB,EAAkB,KAAK,IAAIF,CAAY,EAAI,EACjDJ,IAAcA,EAAYM,EACpB/B,GAAe,UAAU,SACzBA,GAAe,UAAU,SAC/B0B,IAAcA,EAAYK,EACpB/B,GAAe,UAAU,SACzBA,GAAe,UAAU,SAC/B,IAAIgC,EACAC,EAEAC,EACA/jG,EACAgkG,EACAC,EACJ,GAAIjC,EAAe,EACf+B,EAAcjC,GAAgB6B,EAAqB3B,CAAY,EAC/DhiG,GACKyjG,EACGzB,EAAe2B,EAAsBD,GACrCK,EAERF,EAAiBtuG,GAAM,CACnB,MAAM4sG,EAAW,KAAK,IAAI,CAACH,EAAe2B,EAAsBpuG,CAAC,EACjE,OAAQg9B,EACJ4vE,GACKniG,EAAI,KAAK,IAAI+jG,EAAcxuG,CAAC,EACzBmuG,EAAe,KAAK,IAAIK,EAAcxuG,CAAC,EAC/D,EAEQyuG,EACIhC,EAAe2B,EAAsB3jG,EAAI0jG,EAAeK,EAC5DE,EACIjC,EAAe2B,EAAsBD,EAAe1jG,EAAI+jG,EAC5DD,EAAmBvuG,GACE,KAAK,IAAI,CAACysG,EAAe2B,EAAsBpuG,CAAC,GAE5DyuG,EAAW,KAAK,IAAID,EAAcxuG,CAAC,EAChC0uG,EAAW,KAAK,IAAIF,EAAcxuG,CAAC,WAG1CysG,IAAiB,EAAG,CAEzB6B,EAAiBtuG,GAAMg9B,EACnB,KAAK,IAAI,CAACoxE,EAAsBpuG,CAAC,GAC5BmuG,GACID,EAAkBE,EAAsBD,GAAgBnuG,GAErE,MAAMoY,EAAI81F,EAAkBE,EAAsBD,EAClDI,EAAmBvuG,GAAM,KAAK,IAAI,CAACouG,EAAsBpuG,CAAC,GACrDouG,EAAsBh2F,EAAIpY,EAAIkuG,EACtC,KACI,CAED,MAAMS,EAAoBP,EAAsB,KAAK,KAAK3B,EAAeA,EAAe,CAAC,EACzF6B,EAAiBtuG,IAAM,CACnB,MAAM4sG,GAAW,KAAK,IAAI,CAACH,EAAe2B,EAAsBpuG,EAAC,EAE3D4uG,GAAW,KAAK,IAAID,EAAoB3uG,GAAG,GAAG,EACpD,OAAQg9B,EACH4vE,KACKsB,EACEzB,EAAe2B,EAAsBD,GACrC,KAAK,KAAKS,EAAQ,EAClBD,EACIR,EACA,KAAK,KAAKS,EAAQ,GAC1BD,CACpB,EAEQ,MAAMjhG,GAAKwgG,EACPzB,EAAe2B,EAAsBD,GACrCQ,EACEE,EAAYpC,EAAe2B,EAAsB1gG,EAAIygG,EAAeQ,EACpEG,EAAYrC,EAAe2B,EAAsBD,EAAezgG,EAAIihG,EAC1EJ,EAAmBvuG,IAAM,CACrB,MAAM4sG,GAAW,KAAK,IAAI,CAACH,EAAe2B,EAAsBpuG,EAAC,EAC3D4uG,GAAW,KAAK,IAAID,EAAoB3uG,GAAG,GAAG,EACpD,OAAO4sG,IACFiC,EAAY,KAAK,KAAKD,EAAQ,EAC3BE,EAAY,KAAK,KAAKF,EAAQ,EAClD,CACK,CACD,MAAM9nE,EAAY,CACd,mBAAoBmnE,GAAyBryD,GAAY,KACzD,SAAW57C,GAAMqhG,GAAsBkN,EAAgBvuG,CAAC,CAAC,EACzD,KAAOA,GAAM,CAMT,GAAI,CAACiuG,GAA0BxB,EAAe,EAAG,CAC7C,MAAMG,EAAW,KAAK,IAAI,CAACH,EAAe2B,EAAsBpuG,CAAC,EAC3Dy3D,EAAM,KAAK,IAAI+2C,EAAcxuG,CAAC,EAC9B0zD,GAAM,KAAK,IAAI86C,EAAcxuG,CAAC,EAC9B88E,GAAU9/C,EACZ4vE,GACKniG,EAAIgtD,EAAM02C,EAAez6C,IAC5Bq7C,GAAkB1N,GAAsBuL,GACzC6B,EAAWh3C,EAAMi3C,EAAWh7C,GAAI,EACrC,OAAAv3B,EAAM,KACF,KAAK,IAAI4yE,EAAe,GAAKhB,GACzB,KAAK,IAAI/wE,EAAS8/C,EAAO,GAAKkxB,EACtC7xE,EAAM,MAAQA,EAAM,KAAOa,EAAS8/C,GAC7B3gD,CACV,CACD,MAAM2gD,EAAUwxB,EAActuG,CAAC,EAC/B,GAAKiuG,EAOD9xE,EAAM,KAAOn8B,GAAK47C,MAPO,CACzB,MAAMmzD,EAAkB1N,GAAsBkN,EAAgBvuG,CAAC,CAAC,EAChEm8B,EAAM,KACF,KAAK,IAAI4yE,CAAe,GAAKhB,GACzB,KAAK,IAAI/wE,EAAS8/C,CAAO,GAAKkxB,CACzC,CAID,OAAA7xE,EAAM,MAAQA,EAAM,KAAOa,EAAS8/C,EAC7B3gD,CACV,EACD,SAAU,IAAM,CACZ,MAAM6yE,EAAqB,KAAK,IAAI9C,GAAsBplE,CAAS,EAAGmlE,EAAoB,EACpFloC,EAAS+nC,GAAsBrgC,GAAa3kC,EAAU,KAAKkoE,EAAqBvjC,CAAQ,EAAE,MAAOujC,EAAoB,EAAE,EAC7H,OAAOA,EAAqB,MAAQjrC,CACvC,EACD,aAAc,IAAM,CAAG,CAC/B,EACI,OAAOj9B,CACX,CACAwkC,GAAO,eAAkBxsC,GAAY,CACjC,MAAMmwE,EAAmB7C,GAAsBttE,EAAS,IAAKwsC,EAAM,EACnE,OAAAxsC,EAAQ,KAAOmwE,EAAiB,KAChCnwE,EAAQ,SAAWuiE,GAAsB4N,EAAiB,QAAQ,EAClEnwE,EAAQ,KAAO,YACRA,CACX,ECnUA,MAAMowE,GAAyB,EAC/B,SAASC,GAAqBC,EAAcpvG,EAAG88E,EAAS,CACpD,MAAMuyB,EAAQ,KAAK,IAAIrvG,EAAIkvG,GAAwB,CAAC,EACpD,OAAO1N,GAAkB1kB,EAAUsyB,EAAaC,CAAK,EAAGrvG,EAAIqvG,CAAK,CACrE,CCHA,SAASC,GAAQ,CAAE,UAAAC,EAAW,SAAA9N,EAAW,EAAK,MAAAh+B,EAAQ,GAAK,aAAA+rC,EAAe,IAAK,cAAAC,EAAgB,GAAI,gBAAAC,EAAkB,IAAK,aAAAC,EAAc,IAAAniD,EAAK,IAAAtM,EAAK,UAAA8sD,EAAY,GAAK,UAAAD,GAAc,CAC7K,MAAMxe,EAASggB,EAAU,CAAC,EACpBpzE,EAAQ,CACV,KAAM,GACN,MAAOozD,CACf,EACUqgB,EAAiB72F,GAAOy0C,IAAQ,QAAaz0C,EAAIy0C,GAAStM,IAAQ,QAAanoC,EAAImoC,EACnF2uD,EAAmB92F,GACjBy0C,IAAQ,OACDtM,EACPA,IAAQ,QAEL,KAAK,IAAIsM,EAAMz0C,CAAC,EAAI,KAAK,IAAImoC,EAAMnoC,CAAC,EADhCy0C,EAC0CtM,EAEzD,IAAI4uD,EAAYrsC,EAAQg+B,EACxB,MAAMsO,EAAQxgB,EAASugB,EACjB9yE,EAAS2yE,IAAiB,OAAYI,EAAQJ,EAAaI,CAAK,EAKlE/yE,IAAW+yE,IACXD,EAAY9yE,EAASuyD,GACzB,MAAMygB,EAAahwG,GAAM,CAAC8vG,EAAY,KAAK,IAAI,CAAC9vG,EAAIwvG,CAAY,EAC1DS,EAAcjwG,GAAMg9B,EAASgzE,EAAUhwG,CAAC,EACxCkwG,EAAiBlwG,GAAM,CACzB,MAAMyoF,EAAQunB,EAAUhwG,CAAC,EACnBmwG,EAASF,EAAWjwG,CAAC,EAC3Bm8B,EAAM,KAAO,KAAK,IAAIssD,CAAK,GAAKulB,EAChC7xE,EAAM,MAAQA,EAAM,KAAOa,EAASmzE,CAC5C,EAOI,IAAIC,EACAC,EACJ,MAAMC,EAAsBtwG,GAAM,CACzB4vG,EAAczzE,EAAM,KAAK,IAE9Bi0E,EAAsBpwG,EACtBqwG,EAAW/kC,GAAO,CACd,UAAW,CAACnvC,EAAM,MAAO0zE,EAAgB1zE,EAAM,KAAK,CAAC,EACrD,SAAUgzE,GAAqBc,EAAYjwG,EAAGm8B,EAAM,KAAK,EACzD,QAASszE,EACT,UAAWC,EACX,UAAA1B,EACA,UAAAD,CACZ,CAAS,EACT,EACI,OAAAuC,EAAmB,CAAC,EACb,CACH,mBAAoB,KACpB,KAAOtwG,GAAM,CAOT,IAAIuwG,EAAkB,GAUtB,MATI,CAACF,GAAYD,IAAwB,SACrCG,EAAkB,GAClBL,EAAclwG,CAAC,EACfswG,EAAmBtwG,CAAC,GAMpBowG,IAAwB,QAAapwG,GAAKowG,EACnCC,EAAS,KAAKrwG,EAAIowG,CAAmB,GAG5C,CAACG,GAAmBL,EAAclwG,CAAC,EAC5Bm8B,EAEd,CACT,CACA,CCjFA,SAASq0E,GAAanH,EAAQpG,EAAMwN,EAAa,CAC7C,MAAMC,EAAS,CAAA,EACTC,EAAeF,GAAe/P,GAAmB,KAAOiL,GACxDiF,EAAYvH,EAAO,OAAS,EAClC,QAASjoG,EAAI,EAAGA,EAAIwvG,EAAWxvG,IAAK,CAChC,IAAIyvG,EAAQF,EAAatH,EAAOjoG,CAAC,EAAGioG,EAAOjoG,EAAI,CAAC,CAAC,EACjD,GAAI6hG,EAAM,CACN,MAAMt/B,EAAiB,MAAM,QAAQs/B,CAAI,EAAIA,EAAK7hG,CAAC,GAAKwpC,GAAOq4D,EAC/D4N,EAAQ7P,GAAKr9B,EAAgBktC,CAAK,CACrC,CACDH,EAAO,KAAKG,CAAK,CACpB,CACD,OAAOH,CACX,CAoBA,SAASI,GAAYxxE,EAAO+pE,EAAQ,CAAE,MAAO0H,EAAU,GAAM,KAAA9N,EAAM,MAAA4N,CAAO,EAAG,GAAI,CAC7E,MAAMG,EAAc1xE,EAAM,OAM1B,GALAmhE,GAAUuQ,IAAgB3H,EAAO,OAAQ,uDAAwD,cAAc,EAK3G2H,IAAgB,EAChB,MAAO,IAAM3H,EAAO,CAAC,EACzB,GAAI2H,IAAgB,GAAK3H,EAAO,CAAC,IAAMA,EAAO,CAAC,EAC3C,MAAO,IAAMA,EAAO,CAAC,EACzB,MAAM4H,EAAmB3xE,EAAM,CAAC,IAAMA,EAAM,CAAC,EAEzCA,EAAM,CAAC,EAAIA,EAAM0xE,EAAc,CAAC,IAChC1xE,EAAQ,CAAC,GAAGA,CAAK,EAAE,QAAO,EAC1B+pE,EAAS,CAAC,GAAGA,CAAM,EAAE,QAAO,GAEhC,MAAMqH,EAASF,GAAanH,EAAQpG,EAAM4N,CAAK,EACzCD,EAAYF,EAAO,OACnBQ,EAAgBn4F,GAAM,CACxB,GAAIk4F,GAAoBl4F,EAAIumB,EAAM,CAAC,EAC/B,OAAO+pE,EAAO,CAAC,EACnB,IAAIjoG,EAAI,EACR,GAAIwvG,EAAY,EACZ,KAAOxvG,EAAIk+B,EAAM,OAAS,GAClB,EAAAvmB,EAAIumB,EAAMl+B,EAAI,CAAC,GADMA,IACzB,CAIR,MAAM+vG,EAAkB1lC,GAASnsC,EAAMl+B,CAAC,EAAGk+B,EAAMl+B,EAAI,CAAC,EAAG2X,CAAC,EAC1D,OAAO23F,EAAOtvG,CAAC,EAAE+vG,CAAe,CACxC,EACI,OAAOJ,EACAh4F,GAAMm4F,EAAax0E,GAAM4C,EAAM,CAAC,EAAGA,EAAM0xE,EAAc,CAAC,EAAGj4F,CAAC,CAAC,EAC9Dm4F,CACV,CCpEA,SAASE,GAAWvoD,EAAQwoD,EAAW,CACnC,MAAM7jD,EAAM3E,EAAOA,EAAO,OAAS,CAAC,EACpC,QAASznD,EAAI,EAAGA,GAAKiwG,EAAWjwG,IAAK,CACjC,MAAMkwG,EAAiB7lC,GAAS,EAAG4lC,EAAWjwG,CAAC,EAC/CynD,EAAO,KAAKkhD,GAAUv8C,EAAK,EAAG8jD,CAAc,CAAC,CAChD,CACL,CCPA,SAASC,GAAc/zE,EAAK,CACxB,MAAMqrB,EAAS,CAAC,CAAC,EACjB,OAAAuoD,GAAWvoD,EAAQrrB,EAAI,OAAS,CAAC,EAC1BqrB,CACX,CCNA,SAAS2oD,GAAqB3oD,EAAQjN,EAAU,CAC5C,OAAOiN,EAAO,IAAKn3C,GAAMA,EAAIkqC,CAAQ,CACzC,CCGA,SAAS61D,GAAch9D,EAAQsvB,EAAQ,CACnC,OAAOtvB,EAAO,IAAI,IAAMsvB,GAAUg/B,EAAS,EAAE,OAAO,EAAGtuD,EAAO,OAAS,CAAC,CAC5E,CACA,SAAS86D,GAAU,CAAE,SAAA3zD,EAAW,IAAK,UAAW81D,EAAgB,MAAAvpC,EAAO,KAAA86B,EAAO,aAAgB,CAK1F,MAAM0O,EAAkB3O,GAAcC,CAAI,EACpCA,EAAK,IAAIK,EAA0B,EACnCA,GAA2BL,CAAI,EAK/B9mE,EAAQ,CACV,KAAM,GACN,MAAOu1E,EAAe,CAAC,CAC/B,EAIUE,EAAgBJ,GAGtBrpC,GAASA,EAAM,SAAWupC,EAAe,OACnCvpC,EACAopC,GAAcG,CAAc,EAAG91D,CAAQ,EACvCi2D,EAAoBf,GAAYc,EAAeF,EAAgB,CACjE,KAAM,MAAM,QAAQC,CAAe,EAC7BA,EACAF,GAAcC,EAAgBC,CAAe,CAC3D,CAAK,EACD,MAAO,CACH,mBAAoB/1D,EACpB,KAAO57C,IACHm8B,EAAM,MAAQ01E,EAAkB7xG,CAAC,EACjCm8B,EAAM,KAAOn8B,GAAK47C,EACXzf,EAEnB,CACA,CC9CA,MAAM21E,GAAanuE,GAAUA,IAAU,KACvC,SAASouE,GAAiBxC,EAAW,CAAE,OAAA38D,EAAQ,WAAAo/D,EAAa,QAAUC,EAAeC,EAAQ,EAAG,CAC5F,MAAMC,EAAoB5C,EAAU,OAAOuC,EAAS,EAE9CjpE,EADmBqpE,EAAQ,GAAMt/D,GAAUo/D,IAAe,QAAUp/D,EAAS,IAAM,EACxD,EAAIu/D,EAAkB,OAAS,EAChE,MAAO,CAACtpE,GAASopE,IAAkB,OAC7BE,EAAkBtpE,CAAK,EACvBopE,CACV,CCJA,MAAMG,GAAoB,CACtB,MAAO9C,GACP,QAAAA,GACA,MAAOC,GACP,UAAWA,GACf,OAAIjkC,EACJ,EACA,SAAS+mC,GAAsBC,EAAY,CACnC,OAAOA,EAAW,MAAS,WAC3BA,EAAW,KAAOF,GAAkBE,EAAW,IAAI,EAE3D,CCfA,MAAMC,EAAY,CACd,aAAc,CACV,KAAK,eAAc,CACtB,CACD,IAAI,UAAW,CACX,OAAO,KAAK,SACf,CACD,gBAAiB,CACb,KAAK,UAAY,IAAI,QAAShzE,GAAY,CACtC,KAAK,QAAUA,CAC3B,CAAS,CACJ,CACD,gBAAiB,CACb,KAAK,QAAO,CACf,CAMD,KAAKizE,EAAWC,EAAU,CACtB,OAAO,KAAK,SAAS,KAAKD,EAAWC,CAAQ,CAChD,CACL,CCXA,MAAMC,GAAqB/K,GAAYA,EAAU,IACjD,MAAMgL,WAAoBJ,EAAY,CAClC,YAAYzzE,EAAS,CACjB,QACA,KAAK,MAAQ,OACb,KAAK,UAAY,KACjB,KAAK,UAAY,GAIjB,KAAK,YAAc,EAInB,KAAK,SAAW,KAIhB,KAAK,cAAgB,EAKrB,KAAK,WAAa,CACd,KAAM,GACN,MAAO,MACnB,EAKQ,KAAK,KAAO,IAAM,CACd,KAAM,CAAE,YAAA8zE,CAAW,EAAK,KAAK,QACzBA,GAAeA,EAAY,YAAc5rC,GAAK,IAAG,GACjD,KAAK,KAAKA,GAAK,IAAK,CAAA,EAExB,KAAK,UAAY,GACb,KAAK,QAAU,SAEnB,KAAK,SAAQ,EACb,KAAK,QAAQ,WACzB,EACQ,KAAK,QAAUloC,EACf,KAAK,cAAa,EAClB,KAAK,KAAI,EACLA,EAAQ,WAAa,IACrB,KAAK,MAAK,CACjB,CACD,eAAgB,CACZ,KAAM,CAAE,QAAAA,CAAS,EAAG,KACpBuzE,GAAsBvzE,CAAO,EAC7B,KAAM,CAAE,KAAAF,EAAO2wE,GAAW,OAAA38D,EAAS,EAAG,YAAAigE,EAAc,EAAG,WAAAb,EAAY,SAAAvQ,EAAW,CAAC,EAAM3iE,EACrF,GAAI,CAAE,UAAWg0E,CAAa,EAAGh0E,EACjC,MAAMi0E,EAAmBn0E,GAAQ2wE,IAC7B,CAAA,GAAY,WAAa,cACzBwD,IAAqBxD,IACrB9O,GAAUqS,EAAY,QAAU,EAAG,gGAAgGA,CAAW,GAAI,mBAAmB,EAErKC,IAAqBxD,IACrB,OAAOuD,EAAY,CAAC,GAAM,WAC1B,KAAK,aAAe9R,GAAK0R,GAAmB/G,GAAImH,EAAY,CAAC,EAAGA,EAAY,CAAC,CAAC,CAAC,EAC/EA,EAAc,CAAC,EAAG,GAAG,GAEzB,MAAMhsE,EAAYisE,EAAiB,CAAE,GAAGj0E,EAAS,UAAWg0E,CAAW,CAAE,EAKrEd,IAAe,WACf,KAAK,kBAAoBe,EAAiB,CACtC,GAAGj0E,EACH,UAAW,CAAC,GAAGg0E,CAAW,EAAE,QAAS,EACrC,SAAU,CAACrR,CAC3B,CAAa,GAUD36D,EAAU,qBAAuB,OACjCA,EAAU,mBAAqBolE,GAAsBplE,CAAS,GAElE,KAAM,CAAE,mBAAAkoE,CAAoB,EAAGloE,EAC/B,KAAK,mBAAqBkoE,EAC1B,KAAK,iBAAmBA,EAAqB6D,EAC7C,KAAK,cAAgB,KAAK,kBAAoBjgE,EAAS,GAAKigE,EAC5D,KAAK,UAAY/rE,CACpB,CACD,WAAW4+D,EAAW,CAClB,MAAMsN,EAAgB,KAAK,MAAMtN,EAAY,KAAK,SAAS,EAAI,KAAK,cAEhE,KAAK,WAAa,KAClB,KAAK,YAAc,KAAK,SAMxB,KAAK,YAAcsN,CAE1B,CACD,KAAKtN,EAAWuN,EAAS,GAAO,CAC5B,KAAM,CAAE,UAAAnsE,EAAW,cAAAosE,EAAe,aAAAC,EAAc,kBAAAC,EAAmB,iBAAAC,EAAkB,mBAAArE,CAAqB,EAAG,KAC7G,GAAI,KAAK,YAAc,KACnB,OAAOloE,EAAU,KAAK,CAAC,EAC3B,KAAM,CAAE,MAAAwI,EAAQ,EAAG,UAAAigE,EAAW,OAAA38D,EAAQ,WAAAo/D,EAAY,YAAAa,EAAa,KAAAj0E,EAAM,SAAA00E,EAAU,cAAArB,GAAmB,KAAK,QAOnG,KAAK,MAAQ,EACb,KAAK,UAAY,KAAK,IAAI,KAAK,UAAWvM,CAAS,EAE9C,KAAK,MAAQ,IAClB,KAAK,UAAY,KAAK,IAAIA,EAAYwN,EAAgB,KAAK,MAAO,KAAK,SAAS,GAEhFD,EACA,KAAK,YAAcvN,EAGnB,KAAK,WAAWA,CAAS,EAG7B,MAAM6N,EAAmB,KAAK,YAAcjkE,GAAS,KAAK,eAAiB,EAAI,EAAI,IAC7EkkE,EAAiB,KAAK,eAAiB,EACvCD,EAAmB,EACnBA,EAAmBL,EACzB,KAAK,YAAc,KAAK,IAAIK,EAAkB,CAAC,EAE3C,KAAK,QAAU,YAAc,KAAK,WAAa,OAC/C,KAAK,YAAcL,GAEvB,IAAI1qC,EAAU,KAAK,YACfirC,EAAiB3sE,EACrB,GAAI8L,EAAQ,CAMR,MAAM64B,EAAW,KAAK,IAAI,KAAK,YAAaynC,CAAa,EAAIG,EAK7D,IAAIK,EAAmB,KAAK,MAAMjoC,CAAQ,EAKtCkoC,EAAoBloC,EAAW,EAK/B,CAACkoC,GAAqBloC,GAAY,IAClCkoC,EAAoB,GAExBA,IAAsB,GAAKD,IAC3BA,EAAmB,KAAK,IAAIA,EAAkB9gE,EAAS,CAAC,EAIjC,GAAQ8gE,EAAmB,KAE1C1B,IAAe,WACf2B,EAAoB,EAAIA,EACpBd,IACAc,GAAqBd,EAAcQ,IAGlCrB,IAAe,WACpByB,EAAiBL,IAGzB5qC,EAAU9rC,GAAM,EAAG,EAAGi3E,CAAiB,EAAIN,CAC9C,CAMD,IAAIl3E,EACAq3E,GACA,KAAK,WAAW,MAAQjE,EAAU,CAAC,EACnCpzE,EAAQ,KAAK,YAGbA,EAAQs3E,EAAe,KAAKjrC,CAAO,EAEnC2qC,GAAgB,CAACK,IACjBr3E,EAAM,MAAQg3E,EAAah3E,EAAM,KAAK,GAE1C,GAAI,CAAE,KAAAoV,CAAM,EAAGpV,EACX,CAACq3E,GAAkBxE,IAAuB,OAC1Cz9D,EACI,KAAK,eAAiB,EAChB,KAAK,aAAe2hE,EACpB,KAAK,aAAe,GAElC,MAAMU,EAAsB,KAAK,WAAa,OACzC,KAAK,QAAU,YAAe,KAAK,QAAU,WAAariE,GAE/D,OAAIqiE,GAAuBh1E,IAAS0wE,KAChCnzE,EAAM,MAAQ41E,GAAiBxC,EAAW,KAAK,QAAS0C,EAAe,KAAK,KAAK,GAEjFqB,GACAA,EAASn3E,EAAM,KAAK,EAEpBy3E,GACA,KAAK,OAAM,EAERz3E,CACV,CAMD,KAAKoD,EAASC,EAAQ,CAClB,OAAO,KAAK,SAAS,KAAKD,EAASC,CAAM,CAC5C,CACD,IAAI,UAAW,CACX,OAAO+hE,GAAsB,KAAK,kBAAkB,CACvD,CACD,IAAI,mBAAoB,CACpB,KAAM,CAAE,MAAAjyD,EAAQ,CAAC,EAAK,KAAK,SAAW,CAAA,EACtC,OAAO,KAAK,SAAWiyD,GAAsBjyD,CAAK,CACrD,CACD,IAAI,MAAO,CACP,OAAOiyD,GAAsB,KAAK,WAAW,CAChD,CACD,IAAI,KAAKp4B,EAAS,CACdA,EAAUk4B,GAAsBl4B,CAAO,EACvC,KAAK,YAAcA,EACf,KAAK,YAAc,MACnB,KAAK,WAAa,MAClB,KAAK,gBAAkB,EACvB,KAAK,SAAWA,EAEX,KAAK,SACV,KAAK,UAAY,KAAK,OAAO,IAAG,EAAKA,EAAU,KAAK,eAEpD,KAAK,OACL,KAAK,OAAO,MAAM,EAAK,GAGvB,KAAK,UAAY,EACjB,KAAK,MAAQ,SACb,KAAK,SAAWA,EAChB,KAAK,KAAKA,CAAO,EAExB,CAMD,sBAAuB,CACnB,MAAMnpE,EAAI,KAAK,YACf,GAAIA,GAAK,EACL,OAAO,KAAK,QAAQ,UAAY,EACpC,GAAI,KAAK,UAAU,SACf,OAAO,KAAK,UAAU,SAASA,CAAC,EAGpC,MAAM88E,EAAU,KAAK,UAAU,KAAK98E,CAAC,EAAE,MACvC,OAAOmvG,GAAsBjtG,GAAM,KAAK,UAAU,KAAKA,CAAC,EAAE,MAAOlC,EAAG88E,CAAO,CAC9E,CACD,IAAI,OAAQ,CACR,OAAO,KAAK,aACf,CACD,IAAI,MAAM+2B,EAAU,CAChB,MAAMC,EAAa,KAAK,gBAAkBD,EACtCC,GAAc,KAAK,QACnB,KAAK,WAAW9sC,GAAK,IAAK,CAAA,EAE9B,KAAK,cAAgB6sC,EACjBC,GAAc,KAAK,SACnB,KAAK,KAAOvS,GAAsB,KAAK,WAAW,EAEzD,CACD,MAAO,CACH,GAAI,KAAK,UACL,OACJ,KAAM,CAAE,OAAAwS,EAASnI,GAAiB,UAAAn2B,CAAS,EAAK,KAAK,QAChD,KAAK,SACN,KAAK,OAASs+B,EAAQrO,GAAc,KAAK,KAAKA,CAAS,CAAC,GAE5D,KAAK,QAAQ,WACb,MAAMz2D,EAAM,KAAK,OAAO,IAAG,EACvB,KAAK,QAAU,YACf,KAAK,eAAc,EACnB,KAAK,UAAYA,GAEZ,KAAK,WAAa,KACvB,KAAK,UAAYA,EAAM,KAAK,SAEtB,KAAK,YACX,KAAK,UAAYwmC,GAAaxmC,GAE9B,KAAK,QAAU,YAAc,KAAK,MAAQ,IAC1C,KAAK,WAAa,KAAK,oBAE3B,KAAK,SAAW,KAKhB,KAAK,MAAQ,UACb,KAAK,OAAO,OACf,CACD,OAAQ,CACJ,KAAK,MAAQ,SACb,KAAK,WAAW+3B,GAAK,IAAK,CAAA,EAC1B,KAAK,SAAW,KAAK,WACxB,CACD,UAAW,CACH,KAAK,QAAU,WACf,KAAK,KAAI,EAEb,KAAK,MAAQ,WACb,KAAK,SAAW,IACnB,CACD,QAAS,CACL,KAAK,eAAc,EACnB,KAAK,SAAQ,EACb,KAAK,MAAQ,WACb,KAAK,QAAQ,cAChB,CACD,QAAS,CACL,KAAK,SAAW,KAChB,KAAK,UAAY,EACjB,KAAK,KAAK,CAAC,EACX,KAAK,SAAQ,EACb,KAAK,QAAQ,YAChB,CACD,UAAW,CACP,KAAK,MAAQ,OACb,KAAK,WAAU,EACf,KAAK,UAAY,KAAK,SAAW,IACpC,CACD,YAAa,CACJ,KAAK,SAEV,KAAK,OAAO,OACZ,KAAK,OAAS,OACjB,CACD,OAAOgtC,EAAY,CACf,YAAK,UAAY,EACV,KAAK,KAAKA,EAAY,EAAI,CACpC,CACD,eAAeC,EAAU,CACrB,OAAI,KAAK,QAAQ,eACb,KAAK,QAAQ,KAAO,YACpB,KAAK,QAAQ,KAAO,SACpB,KAAK,cAAa,GAEtB,KAAK,QAAQ,OACNA,EAAS,QAAQ,IAAI,CAC/B,CACL,CC3XA,SAASC,GAAc3E,EAAW,CAC9B,QAASnuG,EAAI,EAAGA,EAAImuG,EAAU,OAAQnuG,IAClCmuG,EAAUnuG,CAAC,IAAMmuG,EAAUnuG,CAAC,EAAImuG,EAAUnuG,EAAI,CAAC,EAEvD,CCJA,MAAM+yG,GAAYr3C,GAASA,EAAM,IAAO,KAAK,GACvCE,GAAUjkD,GAAM,CAClB,MAAMs1C,EAAQ8lD,GAAS,KAAK,MAAMp7F,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAAC,EAC7C,OAAOq7F,GAAY/lD,CAAK,CAC5B,EACMgmD,GAAkB,CACpB,EAAG,EACH,EAAG,EACH,WAAY,EACZ,WAAY,EACZ,OAAQ,EACR,OAAQ,EACR,MAAQt7F,IAAO,KAAK,IAAIA,EAAE,CAAC,CAAC,EAAI,KAAK,IAAIA,EAAE,CAAC,CAAC,GAAK,EACtD,OAAIikD,GACA,QAASA,GACT,MAAQjkD,GAAMo7F,GAAS,KAAK,KAAKp7F,EAAE,CAAC,CAAC,CAAC,EACtC,MAAQA,GAAMo7F,GAAS,KAAK,KAAKp7F,EAAE,CAAC,CAAC,CAAC,EACtC,KAAOA,IAAO,KAAK,IAAIA,EAAE,CAAC,CAAC,EAAI,KAAK,IAAIA,EAAE,CAAC,CAAC,GAAK,CACrD,EACMq7F,GAAe/lD,IACjBA,EAAQA,EAAQ,IACZA,EAAQ,IACRA,GAAS,KACNA,GAELimD,GAAUt3C,GACVyT,GAAU13D,GAAM,KAAK,KAAKA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,CAAC,EACnD23D,GAAU33D,GAAM,KAAK,KAAKA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,CAAC,EACnDw7F,GAAkB,CACpB,EAAG,GACH,EAAG,GACH,EAAG,GACH,WAAY,GACZ,WAAY,GACZ,WAAY,GACZ,OAAA9jC,GACA,OAAAC,GACA,MAAQ33D,IAAO03D,GAAO13D,CAAC,EAAI23D,GAAO33D,CAAC,GAAK,EACxC,QAAUA,GAAMq7F,GAAYD,GAAS,KAAK,MAAMp7F,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAAC,CAAC,EAC5D,QAAUA,GAAMq7F,GAAYD,GAAS,KAAK,MAAM,CAACp7F,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAAC,CAAC,EAC7D,QAAAu7F,GACA,OAAQA,GACR,MAAQv7F,GAAMo7F,GAAS,KAAK,KAAKp7F,EAAE,CAAC,CAAC,CAAC,EACtC,MAAQA,GAAMo7F,GAAS,KAAK,KAAKp7F,EAAE,CAAC,CAAC,CAAC,EACtC,KAAOA,IAAO,KAAK,IAAIA,EAAE,CAAC,CAAC,EAAI,KAAK,IAAIA,EAAE,CAAC,CAAC,GAAK,CACrD,EACA,SAASy7F,GAAsBrxE,EAAM,CACjC,OAAOA,EAAK,SAAS,OAAO,EAAI,EAAI,CACxC,CACA,SAASsxE,GAAwB7hD,EAAWzvB,EAAM,CAC9C,GAAI,CAACyvB,GAAaA,IAAc,OAC5B,OAAO4hD,GAAsBrxE,CAAI,EAErC,MAAMuxE,EAAgB9hD,EAAU,MAAM,8BAA8B,EACpE,IAAI+hD,EACA52B,EACJ,GAAI22B,EACAC,EAAUJ,GACVx2B,EAAQ22B,MAEP,CACD,MAAME,EAAgBhiD,EAAU,MAAM,4BAA4B,EAClE+hD,EAAUN,GACVt2B,EAAQ62B,CACX,CACD,GAAI,CAAC72B,EACD,OAAOy2B,GAAsBrxE,CAAI,EAErC,MAAM0xE,EAAcF,EAAQxxE,CAAI,EAC1BsR,EAASspC,EAAM,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI+2B,EAAwB,EAC/D,OAAO,OAAOD,GAAgB,WACxBA,EAAYpgE,CAAM,EAClBA,EAAOogE,CAAW,CAC5B,CACA,MAAME,GAAqB,CAACzsE,EAAUnF,IAAS,CAC3C,KAAM,CAAE,UAAAyvB,EAAY,MAAQ,EAAG,iBAAiBtqB,CAAQ,EACxD,OAAOmsE,GAAwB7hD,EAAWzvB,CAAI,CAClD,EACA,SAAS2xE,GAAyBnxE,EAAO,CACrC,OAAO,WAAWA,EAAM,KAAI,CAAE,CAClC,CC7EA,MAAMqxE,GAAqB,CACvB,uBACA,IACA,IACA,IACA,aACA,aACA,aACA,QACA,SACA,SACA,SACA,UACA,UACA,UACA,OACA,QACA,OACJ,EAWMC,IAAgC,IAAM,IAAI,IAAI,CAAC,GAAGD,GAAoB,cAAc,CAAC,GAAI,EC3BzFE,GAAiBn8F,GAAMA,IAAMutF,IAAUvtF,IAAM6uF,GAC7CuN,GAAgB,IAAI,IAAI,CAAC,IAAK,IAAK,GAAG,CAAC,EACvCC,GAAgCJ,GAAmB,OAAQnxE,GAAQ,CAACsxE,GAAc,IAAItxE,CAAG,CAAC,EAChG,SAASwxE,GAAgCC,EAAe,CACpD,MAAMC,EAAoB,CAAA,EAC1B,OAAAH,GAA8B,QAASvxE,GAAQ,CAC3C,MAAMF,EAAQ2xE,EAAc,SAASzxE,CAAG,EACpCF,IAAU,SACV4xE,EAAkB,KAAK,CAAC1xE,EAAKF,EAAM,IAAK,CAAA,CAAC,EACzCA,EAAM,IAAIE,EAAI,WAAW,OAAO,EAAI,EAAI,CAAC,EAErD,CAAK,EACM0xE,CACX,CACA,MAAMC,GAAmB,CAErB,MAAO,CAAC,CAAE,EAAAp0F,CAAC,EAAI,CAAE,YAAAq0F,EAAc,IAAK,aAAAC,EAAe,IAAK,UAAAC,KAAgB,CACpE,MAAMz1D,EAAQ9+B,EAAE,IAAMA,EAAE,IACxB,OAAOu0F,IAAc,aACfz1D,EACAA,EAAQ,WAAWu1D,CAAW,EAAI,WAAWC,CAAY,CAClE,EACD,OAAQ,CAAC,CAAE,EAAAtrG,CAAC,EAAI,CAAE,WAAAwrG,EAAa,IAAK,cAAAC,EAAgB,IAAK,UAAAF,KAAgB,CACrE,MAAMx1D,EAAS/1C,EAAE,IAAMA,EAAE,IACzB,OAAOurG,IAAc,aACfx1D,EACAA,EAAS,WAAWy1D,CAAU,EAAI,WAAWC,CAAa,CACnE,EACD,IAAK,CAACC,EAAO,CAAE,IAAA3yD,CAAG,IAAO,WAAWA,CAAG,EACvC,KAAM,CAAC2yD,EAAO,CAAE,KAAA1yD,CAAI,IAAO,WAAWA,CAAI,EAC1C,OAAQ,CAAC,CAAE,EAAAh5C,CAAG,EAAE,CAAE,IAAA+4C,CAAK,IAAK,WAAWA,CAAG,GAAK/4C,EAAE,IAAMA,EAAE,KACzD,MAAO,CAAC,CAAE,EAAAgX,CAAG,EAAE,CAAE,KAAAgiC,CAAM,IAAK,WAAWA,CAAI,GAAKhiC,EAAE,IAAMA,EAAE,KAE1D,EAAG,CAAC00F,EAAO,CAAE,UAAAljD,CAAW,IAAK6hD,GAAwB7hD,EAAW,GAAG,EACnE,EAAG,CAACkjD,EAAO,CAAE,UAAAljD,CAAW,IAAK6hD,GAAwB7hD,EAAW,GAAG,CACvE,EAEA4iD,GAAiB,WAAaA,GAAiB,EAC/CA,GAAiB,WAAaA,GAAiB,ECvC/C,MAAMO,GAAY,IAAI,IACtB,IAAIC,GAAc,GACdC,GAAsB,GACtBC,GAAW,GACf,SAASC,IAAsB,CAC3B,GAAIF,GAAqB,CACrB,MAAMG,EAAqB,MAAM,KAAKL,EAAS,EAAE,OAAQM,GAAaA,EAAS,gBAAgB,EACzFC,EAAoB,IAAI,IAAIF,EAAmB,IAAKC,GAAaA,EAAS,OAAO,CAAC,EAClFE,EAAsB,IAAI,IAKhCD,EAAkB,QAAS5zE,GAAY,CACnC,MAAM6yE,EAAoBF,GAAgC3yE,CAAO,EAC5D6yE,EAAkB,SAEvBgB,EAAoB,IAAI7zE,EAAS6yE,CAAiB,EAClD7yE,EAAQ,OAAM,EAC1B,CAAS,EAED0zE,EAAmB,QAASC,GAAaA,EAAS,oBAAqB,CAAA,EAEvEC,EAAkB,QAAS5zE,GAAY,CACnCA,EAAQ,OAAM,EACd,MAAM8zE,EAAUD,EAAoB,IAAI7zE,CAAO,EAC3C8zE,GACAA,EAAQ,QAAQ,CAAC,CAAC3yE,EAAKF,CAAK,IAAM,CAC9BjB,EAAQ,SAASmB,CAAG,GAAG,IAAIF,CAAK,CACpD,CAAiB,CAEjB,CAAS,EAEDyyE,EAAmB,QAASC,GAAaA,EAAS,gBAAiB,CAAA,EAEnED,EAAmB,QAASC,GAAa,CACjCA,EAAS,mBAAqB,QAC9B,OAAO,SAAS,EAAGA,EAAS,gBAAgB,CAE5D,CAAS,CACJ,CACDJ,GAAsB,GACtBD,GAAc,GACdD,GAAU,QAASM,GAAaA,EAAS,SAASH,EAAQ,CAAC,EAC3DH,GAAU,MAAK,CACnB,CACA,SAASU,IAAmB,CACxBV,GAAU,QAASM,GAAa,CAC5BA,EAAS,cAAa,EAClBA,EAAS,mBACTJ,GAAsB,GAElC,CAAK,CACL,CACA,SAASS,IAAyB,CAC9BR,GAAW,GACXO,KACAN,KACAD,GAAW,EACf,CACA,MAAMS,EAAiB,CACnB,YAAYC,EAAqBtpE,EAAYnK,EAAMyvE,EAAalwE,EAASm0E,EAAU,GAAO,CACtF,KAAK,MAAQ,UAMb,KAAK,QAAU,GAKf,KAAK,iBAAmB,GACxB,KAAK,oBAAsB,CAAC,GAAGD,CAAmB,EAClD,KAAK,WAAatpE,EAClB,KAAK,KAAOnK,EACZ,KAAK,YAAcyvE,EACnB,KAAK,QAAUlwE,EACf,KAAK,QAAUm0E,CAClB,CACD,iBAAkB,CACd,KAAK,MAAQ,YACT,KAAK,SACLd,GAAU,IAAI,IAAI,EACbC,KACDA,GAAc,GACdj3B,GAAM,KAAK03B,EAAgB,EAC3B13B,GAAM,iBAAiBo3B,EAAmB,KAI9C,KAAK,cAAa,EAClB,KAAK,SAAQ,EAEpB,CACD,eAAgB,CACZ,KAAM,CAAE,oBAAAS,EAAqB,KAAAzzE,EAAM,QAAAT,EAAS,YAAAkwE,CAAW,EAAK,KAE5D,GAAIgE,EAAoB,CAAC,IAAM,KAAM,CACjC,MAAME,EAAelE,GAAa,MAE5BX,EAAgB2E,EAAoBA,EAAoB,OAAS,CAAC,EACxE,GAAIE,IAAiB,OACjBF,EAAoB,CAAC,EAAIE,UAEpBp0E,GAAWS,EAAM,CACtB,MAAM4zE,EAAcr0E,EAAQ,UAAUS,EAAM8uE,CAAa,EACxB8E,GAAgB,OAC7CH,EAAoB,CAAC,EAAIG,EAEhC,CACGH,EAAoB,CAAC,IAAM,SAC3BA,EAAoB,CAAC,EAAI3E,GAEzBW,GAAekE,IAAiB,QAChClE,EAAY,IAAIgE,EAAoB,CAAC,CAAC,CAE7C,CACD1C,GAAc0C,CAAmB,CACpC,CACD,kBAAmB,CAAG,CACtB,qBAAsB,CAAG,CACzB,iBAAkB,CAAG,CACrB,iBAAkB,CAAG,CACrB,SAASI,EAAmB,GAAO,CAC/B,KAAK,MAAQ,WACb,KAAK,WAAW,KAAK,oBAAqB,KAAK,cAAeA,CAAgB,EAC9EjB,GAAU,OAAO,IAAI,CACxB,CACD,QAAS,CACD,KAAK,QAAU,cACfA,GAAU,OAAO,IAAI,EACrB,KAAK,MAAQ,UAEpB,CACD,QAAS,CACD,KAAK,QAAU,WACf,KAAK,gBAAe,CAC3B,CACL,CChJA,MAAMkB,GAAY9zE,GAASA,EAAK,WAAW,IAAI,ECE/C,SAASO,GAAShB,EAASS,EAAMQ,EAAO,CACpCszE,GAAS9zE,CAAI,EACPT,EAAQ,MAAM,YAAYS,EAAMQ,CAAK,EACpCjB,EAAQ,MAAMS,CAAI,EAAIQ,CACjC,CCFA,MAAMuzE,GAAgB,CAAE,ECDxB,SAASC,GAAa5uC,EAAU6uC,EAAc,CAC1C,MAAMC,EAAWvW,GAAKv4B,CAAQ,EAC9B,MAAO,IAAM2uC,GAAcE,CAAY,GAAKC,EAAQ,CACxD,CCJA,MAAMC,GAAyCH,GAAa,IAAM,OAAO,iBAAmB,OAAW,gBAAgB,EACjHI,GAAuCJ,GAAa,IAAM,OAAO,eAAiB,OAAW,cAAc,ECD3GK,GAAqCL,GAAa,IAAM,CAC1D,GAAI,CACA,SACK,cAAc,KAAK,EACnB,QAAQ,CAAE,QAAS,CAAC,EAAI,CAAE,OAAQ,cAAc,CAAE,CAC1D,MACS,CACN,MAAO,EACV,CACD,MAAO,EACX,EAAG,cAAc,ECZXM,GAAsB,CAAC,CAAC/wG,EAAG8Z,EAAG1W,EAAGkP,CAAC,IAAM,gBAAgBtS,CAAC,KAAK8Z,CAAC,KAAK1W,CAAC,KAAKkP,CAAC,ICE3E0+F,GAAuB,CACzB,OAAQ,SACR,KAAM,OACN,OAAQ,UACR,QAAS,WACT,UAAW,cACX,OAAsBD,GAAoB,CAAC,EAAG,IAAM,IAAM,CAAC,CAAC,EAC5D,QAAuBA,GAAoB,CAAC,IAAM,EAAG,EAAG,GAAI,CAAC,EAC7D,OAAsBA,GAAoB,CAAC,IAAM,IAAM,IAAM,IAAK,CAAC,EACnE,QAAuBA,GAAoB,CAAC,IAAM,KAAM,IAAM,GAAI,CAAC,CACvE,ECNA,SAASE,GAAwB5zC,EAAQnoB,EAAU,CAC/C,GAAKmoB,EAGA,OAAI,OAAOA,GAAW,WAChByzC,GAAsB,EACvB1L,GAAqB/nC,EAAQnoB,CAAQ,EACrC,WAEDunD,GAAmBp/B,CAAM,EACvB0zC,GAAoB1zC,CAAM,EAE5B,MAAM,QAAQA,CAAM,EAClBA,EAAO,IAAK6zC,GAAkBD,GAAwBC,EAAeh8D,CAAQ,GAChF87D,GAAqB,OAAO,EAGzBA,GAAqB3zC,CAAM,CAE1C,CCvBA,SAAS8zC,GAAoBn1E,EAASo1E,EAAWvI,EAAW,CAAE,MAAAjgE,EAAQ,EAAG,SAAAsM,EAAW,IAAK,OAAAhJ,EAAS,EAAG,WAAAo/D,EAAa,OAAQ,KAAA/O,EAAO,UAAW,MAAA96B,GAAW,CAAA,EAAI4vC,EAAgB,OAAW,CAClL,MAAMC,EAAkB,CACpB,CAACF,CAAS,EAAGvI,CACrB,EACQpnC,IACA6vC,EAAgB,OAAS7vC,GAC7B,MAAMpE,EAAS4zC,GAAwB1U,EAAMrnD,CAAQ,EAIjD,MAAM,QAAQmoB,CAAM,IACpBi0C,EAAgB,OAASj0C,GAC7B,MAAMjlC,EAAU,CACZ,MAAAwQ,EACA,SAAAsM,EACA,OAAS,MAAM,QAAQmoB,CAAM,EAAa,SAATA,EACjC,KAAM,OACN,WAAYnxB,EAAS,EACrB,UAAWo/D,IAAe,UAAY,YAAc,QAC5D,EACI,OAAI+F,IACAj5E,EAAQ,cAAgBi5E,GACrBr1E,EAAQ,QAAQs1E,EAAiBl5E,CAAO,CACnD,CCzBA,SAASm5E,GAAYr5E,EAAM,CACvB,OAAO,OAAOA,GAAS,YAAc,mBAAoBA,CAC7D,CCCA,SAASs5E,GAAsB,CAAE,KAAAt5E,EAAM,GAAGE,GAAW,CACjD,OAAIm5E,GAAYr5E,CAAI,GAAK44E,KACd54E,EAAK,eAAeE,CAAO,GAGlCA,EAAQ,WAAaA,EAAQ,SAAW,KACxCA,EAAQ,OAASA,EAAQ,KAAO,WAE7BA,EACX,CCDA,MAAMq5E,WAAwB5F,EAAY,CACtC,YAAYzzE,EAAS,CAUjB,GATA,QACA,KAAK,aAAe,KACpB,KAAK,UAAY,GAMjB,KAAK,gBAAkB,KACnB,CAACA,EACD,OACJ,KAAM,CAAE,QAAA4D,EAAS,KAAAS,EAAM,UAAAosE,EAAW,cAAAwI,EAAe,aAAAK,EAAe,GAAO,cAAAnG,EAAe,WAAA3kE,CAAa,EAAGxO,EACtG,KAAK,gBAAkB,EAAQi5E,EAC/B,KAAK,aAAeK,EACpB,KAAK,QAAUt5E,EACf2hE,GAAU,OAAO3hE,EAAQ,MAAS,SAAU,qDAAsD,aAAa,EAC/G,MAAMwzE,EAAa4F,GAAsBp5E,CAAO,EAChD,KAAK,UAAY+4E,GAAoBn1E,EAASS,EAAMosE,EAAW+C,EAAYyF,CAAa,EACpFzF,EAAW,WAAa,IACxB,KAAK,UAAU,QAEnB,KAAK,UAAU,SAAW,IAAM,CAE5B,GADA,KAAK,aAAe,KAAK,KACrB,CAACyF,EAAe,CAChB,MAAMp5B,EAAWozB,GAAiBxC,EAAW,KAAK,QAAS0C,EAAe,KAAK,KAAK,EAChF,KAAK,mBACL,KAAK,kBAAkBtzB,CAAQ,EASnCj7C,GAAShB,EAASS,EAAMw7C,CAAQ,EAChC,KAAK,UAAU,QAClB,CACDrxC,MACA,KAAK,eAAc,CAC/B,CACK,CACD,MAAO,CACC,KAAK,YAET,KAAK,gBAAkB,KACvB,KAAK,UAAU,OACX,KAAK,QAAU,YACf,KAAK,eAAc,EAE1B,CACD,OAAQ,CACJ,KAAK,UAAU,OAClB,CACD,UAAW,CACP,KAAK,UAAU,UAClB,CACD,QAAS,CACL,GAAI,CACA,KAAK,UAAU,QAClB,MACS,CAAG,CAChB,CACD,MAAO,CACH,GAAI,KAAK,UACL,OACJ,KAAK,UAAY,GACjB,KAAM,CAAE,MAAAnR,CAAO,EAAG,KACdA,IAAU,QAAUA,IAAU,aAG9B,KAAK,kBACL,KAAK,kBAAiB,EAGtB,KAAK,aAAY,EAEhB,KAAK,iBACN,KAAK,OAAM,EAClB,CAaD,cAAe,CACX,MAAMuG,EAAU,KAAK,SAAS,QAC1B,CAAC,KAAK,iBAAmBA,GAAS,aAClC,KAAK,UAAU,gBAEtB,CACD,IAAI,UAAW,CACX,MAAMkZ,EAAW,KAAK,UAAU,QAAQ,oBAAqB,EAAC,UAAY,EAC1E,OAAO2lD,GAAsB,OAAO3lD,CAAQ,CAAC,CAChD,CACD,IAAI,mBAAoB,CACpB,KAAM,CAAE,MAAAtM,EAAQ,CAAC,EAAK,KAAK,SAAW,CAAA,EACtC,OAAO,KAAK,SAAWiyD,GAAsBjyD,CAAK,CACrD,CACD,IAAI,MAAO,CACP,OAAOiyD,GAAsB,OAAO,KAAK,UAAU,WAAW,GAAK,CAAC,CACvE,CACD,IAAI,KAAKp4B,EAAS,CACd,MAAMkvC,EAAc,KAAK,eAAiB,KAC1C,KAAK,gBAAkB,KACvB,KAAK,aAAe,KACpB,KAAK,UAAU,YAAchX,GAAsBl4B,CAAO,EACtDkvC,GACA,KAAK,UAAU,OAEtB,CAKD,IAAI,OAAQ,CACR,OAAO,KAAK,UAAU,YACzB,CACD,IAAI,MAAMxE,EAAU,CAEZA,EAAW,IACX,KAAK,aAAe,MACxB,KAAK,UAAU,aAAeA,CACjC,CACD,IAAI,OAAQ,CACR,OAAO,KAAK,eAAiB,KACvB,WACA,KAAK,UAAU,SACxB,CACD,IAAI,WAAY,CACZ,OAAO,KAAK,iBAAmB,OAAO,KAAK,UAAU,SAAS,CACjE,CACD,IAAI,UAAUyE,EAAc,CACxB,KAAK,gBAAkB,KAAK,UAAU,UAAYA,CACrD,CAID,eAAe,CAAE,SAAArE,EAAU,WAAAsE,EAAY,SAAAC,EAAU,QAAAC,CAAO,EAAK,CAKzD,OAJI,KAAK,cACL,KAAK,UAAU,QAAQ,aAAa,CAAE,OAAQ,QAAQ,CAAE,EAE5D,KAAK,UAAU,SAAW,KACtBxE,GAAYqD,MACZ,KAAK,UAAU,SAAWrD,EACtBsE,IACA,KAAK,UAAU,WAAaA,GAC5BC,IACA,KAAK,UAAU,SAAWA,GACvB5tE,IAGA6tE,EAAQ,IAAI,CAE1B,CACL,CC7KA,MAAMC,GAA6B,CAC/B,WAAAjW,GACA,UAAAD,GACA,UAAAI,EACJ,EACA,SAAS+V,GAAkB90E,EAAK,CAC5B,OAAOA,KAAO60E,EAClB,CACA,SAASE,GAAoBtG,EAAY,CACjC,OAAOA,EAAW,MAAS,UAC3BqG,GAAkBrG,EAAW,IAAI,IACjCA,EAAW,KAAOoG,GAA2BpG,EAAW,IAAI,EAEpE,CCFA,MAAMuG,GAAc,GACpB,MAAMC,WAAgCX,EAAgB,CAClD,YAAYr5E,EAAS,CAUjB85E,GAAoB95E,CAAO,EAQ3BuzE,GAAsBvzE,CAAO,EAC7B,MAAMA,CAAO,EAMTA,EAAQ,YAAc,QAAaA,EAAQ,WAAa,KACxD,KAAK,UAAYA,EAAQ,WAE7B,KAAK,QAAUA,CAClB,CASD,kBAAkB6E,EAAO,CACrB,KAAM,CAAE,YAAAivE,EAAa,SAAAU,EAAU,WAAAhmE,EAAY,QAAA5K,EAAS,GAAG5D,CAAO,EAAK,KAAK,QACxE,GAAI,CAAC8zE,EACD,OACJ,GAAIjvE,IAAU,OAAW,CACrBivE,EAAY,IAAIjvE,CAAK,EACrB,MACH,CACD,MAAMo1E,EAAkB,IAAIpG,GAAY,CACpC,GAAG7zE,EACH,SAAU,EACtB,CAAS,EAMKk1E,EAAa,KAAK,IAAI6E,GAAa7xC,GAAK,IAAK,EAAG,KAAK,SAAS,EAC9DyhB,EAAQ/rD,GAAM,EAAGm8E,GAAa7E,EAAa6E,EAAW,EACtD/7B,EAAUi8B,EAAgB,OAAO/E,CAAU,EAAE,MAM7C,CAAE,KAAA7wE,CAAI,EAAK,KAAK,QAClBT,GAAWS,GACXO,GAAShB,EAASS,EAAM25C,CAAO,EACnC81B,EAAY,gBAAgBmG,EAAgB,OAAO,KAAK,IAAI,EAAG/E,EAAavrB,CAAK,CAAC,EAAE,MAAO3L,EAAS2L,CAAK,EACzGswB,EAAgB,KAAI,CACvB,CACL,CCzEA,MAAMC,GAAe,CAACr1E,EAAOR,IAErBA,IAAS,SACF,GAIP,UAAOQ,GAAU,UAAY,MAAM,QAAQA,CAAK,GAEhD,OAAOA,GAAU,WAChBgmE,GAAQ,KAAKhmE,CAAK,GAAKA,IAAU,MAClC,CAACA,EAAM,WAAW,MAAM,GClBhC,SAASs1E,GAAoB1J,EAAW,CACpC,MAAMzyB,EAAUyyB,EAAU,CAAC,EAC3B,GAAIA,EAAU,SAAW,EACrB,MAAO,GACX,QAASnuG,EAAI,EAAGA,EAAImuG,EAAU,OAAQnuG,IAClC,GAAImuG,EAAUnuG,CAAC,IAAM07E,EACjB,MAAO,EAEnB,CACA,SAASo8B,GAAW3J,EAAWpsE,EAAMvE,EAAM6iE,EAAU,CAMjD,MAAM0X,EAAiB5J,EAAU,CAAC,EAClC,GAAI4J,IAAmB,KACnB,MAAO,GAOX,GAAIh2E,IAAS,WAAaA,IAAS,aAC/B,MAAO,GACX,MAAMi2E,EAAiB7J,EAAUA,EAAU,OAAS,CAAC,EAC/C8J,EAAqBL,GAAaG,EAAgBh2E,CAAI,EACtDm2E,EAAqBN,GAAaI,EAAgBj2E,CAAI,EAG5D,OAFAq9D,GAAQ6Y,IAAuBC,EAAoB,6BAA6Bn2E,CAAI,UAAUg2E,CAAc,SAASC,CAAc,OAAOC,EAAqBD,EAAiBD,CAAc,gCAAiC,sBAAsB,EAEjP,CAACE,GAAsB,CAACC,EACjB,GAEHL,GAAoB1J,CAAS,IAC/B3wE,IAAS,UAAYq5E,GAAYr5E,CAAI,IAAM6iE,CACrD,CCxCA,SAAS8X,GAAqBz6E,EAAS,CACnCA,EAAQ,SAAW,EACnBA,EAAQ,KAAO,WACnB,CCAA,MAAM06E,GAAoB,IAAI,IAAI,CAC9B,UACA,WACA,SACA,WAIJ,CAAC,ECXKC,GAAwB,wDAC9B,SAASC,GAAqBnK,EAAW,CACrC,QAASnuG,EAAI,EAAGA,EAAImuG,EAAU,OAAQnuG,IAClC,GAAI,OAAOmuG,EAAUnuG,CAAC,GAAM,UACxBq4G,GAAsB,KAAKlK,EAAUnuG,CAAC,CAAC,EACvC,MAAO,GAGf,MAAO,EACX,CCLA,MAAMu4G,GAAkB,IAAI,IAAI,CAC5B,QACA,kBACA,eACA,OACA,SACA,cACA,iBACA,mBACA,oBACA,iBACJ,CAAC,EACKC,GAA8B9Y,GAAK,IAAM,OAAO,eAAe,KAAK,QAAQ,UAAW,SAAS,CAAC,EACvG,SAAS+Y,GAAyB/6E,EAAS,CACvC,KAAM,CAAE,YAAA8zE,EAAa,KAAAzvE,EAAM,YAAA0vE,EAAa,WAAAb,EAAY,QAAApE,EAAS,KAAAhvE,EAAM,UAAA2wE,CAAY,EAAGzwE,EAQlF,GAAI,EAPY8zE,GAAa,OAAO,mBAOX,aACrB,MAAO,GAEX,KAAM,CAAE,SAAAU,EAAU,kBAAAwG,CAAiB,EAAKlH,EAAY,MAAM,WAC1D,OAAQgH,GAAe,GACnBz2E,IAKCq2E,GAAkB,IAAIr2E,CAAI,GACtBw2E,GAAgB,IAAIx2E,CAAI,GACrBu2E,GAAqBnK,CAAS,KACrCpsE,IAAS,aAAe,CAAC22E,IAK1B,CAACxG,GACD,CAACT,GACDb,IAAe,UACfpE,IAAY,GACZhvE,IAAS,SACjB,CC9BA,MAAMm7E,GAAoB,GAC1B,MAAMC,WAAkCzH,EAAY,CAChD,YAAY,CAAE,SAAA0H,EAAW,GAAM,MAAA3qE,EAAQ,EAAG,KAAA1Q,EAAO,YAAa,OAAAgU,EAAS,EAAG,YAAAigE,EAAc,EAAG,WAAAb,EAAa,OAAQ,UAAAzC,EAAW,KAAApsE,EAAM,YAAAyvE,EAAa,QAAAlwE,EAAS,GAAG5D,GAAW,CACjK,QAIA,KAAK,KAAO,IAAM,CACV,KAAK,aACL,KAAK,WAAW,OAChB,KAAK,eAAY,GAErB,KAAK,kBAAkB,QACnC,EACQ,KAAK,UAAYkoC,GAAK,MACtB,MAAMkzC,EAAsB,CACxB,SAAAD,EACA,MAAA3qE,EACA,KAAA1Q,EACA,OAAAgU,EACA,YAAAigE,EACA,WAAAb,EACA,KAAA7uE,EACA,YAAAyvE,EACA,QAAAlwE,EACA,GAAG5D,CACf,EACcq7E,EAAqBz3E,GAAS,kBAAoBi0E,GACxD,KAAK,iBAAmB,IAAIwD,EAAmB5K,EAAW,CAAC4C,EAAmBF,EAAemI,IAAW,KAAK,oBAAoBjI,EAAmBF,EAAeiI,EAAqB,CAACE,CAAM,EAAGj3E,EAAMyvE,EAAalwE,CAAO,EAC5N,KAAK,kBAAkB,iBAC1B,CACD,oBAAoB6sE,EAAW0C,EAAenzE,EAASu7E,EAAM,CACzD,KAAK,iBAAmB,OACxB,KAAM,CAAE,KAAAl3E,EAAM,KAAAvE,EAAM,SAAA6iE,EAAU,MAAAnyD,EAAO,UAAAgrE,EAAW,SAAAhH,CAAU,EAAGx0E,EAC7D,KAAK,WAAakoC,GAAK,MAKvB,IAAIuzC,EAAkB,GACjBrB,GAAW3J,EAAWpsE,EAAMvE,EAAM6iE,CAAQ,IAC3C8Y,EAAkB,IACd7Z,GAAmB,mBAAqB,CAACpxD,IACzCgkE,IAAWvB,GAAiBxC,EAAWzwE,EAASmzE,CAAa,CAAC,EAElE1C,EAAU,CAAC,EAAIA,EAAUA,EAAU,OAAS,CAAC,EAC7CgK,GAAqBz6E,CAAO,EAC5BA,EAAQ,OAAS,GAqBrB,MAAM07E,EAAkB,CACpB,UARcH,EACX,KAAK,WAEF,KAAK,WAAa,KAAK,UAAYN,GAC/B,KAAK,WACL,KAAK,UAHT,KAAK,UAIT,OAGF,cAAA9H,EACA,GAAGnzE,EACH,UAAAywE,CACZ,EASckL,EAAWF,GACb,CAACD,GACDT,GAAyBW,CAAe,EACtC93E,EAAU83E,EAAgB,aAAa,OAAO,QACpD,IAAIE,EACJ,GAAID,EACA,GAAI,CACAC,EAAY,IAAI5B,GAAwB,CACpC,GAAG0B,EACH,QAAA93E,CACpB,CAAiB,CACJ,MACK,CACFg4E,EAAY,IAAI/H,GAAY6H,CAAe,CAC9C,MAGDE,EAAY,IAAI/H,GAAY6H,CAAe,EAE/CE,EAAU,SAAS,KAAK,IAAM,CAC1B,KAAK,eAAc,CAC/B,CAAS,EAAE,MAAM9vE,EAAI,EACT,KAAK,kBACL,KAAK,aAAe8vE,EAAU,eAAe,KAAK,eAAe,EACjE,KAAK,gBAAkB,QAE3B,KAAK,WAAaA,CACrB,CACD,IAAI,UAAW,CACX,OAAK,KAAK,WAIC,KAAK,UAAU,SAHf,KAAK,SAKnB,CACD,KAAKlI,EAAWmI,EAAW,CACvB,OAAO,KAAK,SAAS,QAAQnI,CAAS,EAAE,KAAK,IAAM,CAAA,CAAG,CACzD,CACD,IAAI,WAAY,CACZ,OAAK,KAAK,aACN,KAAK,kBAAkB,SACvBkE,MAEG,KAAK,UACf,CACD,IAAI,UAAW,CACX,OAAO,KAAK,UAAU,QACzB,CACD,IAAI,mBAAoB,CACpB,OAAO,KAAK,UAAU,iBACzB,CACD,IAAI,MAAO,CACP,OAAO,KAAK,UAAU,IACzB,CACD,IAAI,KAAKvtC,EAAS,CACd,KAAK,UAAU,KAAOA,CACzB,CACD,IAAI,OAAQ,CACR,OAAO,KAAK,UAAU,KACzB,CACD,IAAI,OAAQ,CACR,OAAO,KAAK,UAAU,KACzB,CACD,IAAI,MAAM0qC,EAAU,CAChB,KAAK,UAAU,MAAQA,CAC1B,CACD,IAAI,WAAY,CACZ,OAAO,KAAK,UAAU,SACzB,CACD,eAAeI,EAAU,CACrB,OAAI,KAAK,WACL,KAAK,aAAe,KAAK,UAAU,eAAeA,CAAQ,EAG1D,KAAK,gBAAkBA,EAEpB,IAAM,KAAK,MACrB,CACD,MAAO,CACH,KAAK,UAAU,MAClB,CACD,OAAQ,CACJ,KAAK,UAAU,OAClB,CACD,UAAW,CACP,KAAK,UAAU,UAClB,CACD,QAAS,CACD,KAAK,YACL,KAAK,UAAU,SAEnB,KAAK,kBAAkB,QAC1B,CACL,CCnMA,MAAM2G,EAAe,CACjB,YAAYC,EAAY,CAEpB,KAAK,KAAO,IAAM,KAAK,OAAO,MAAM,EACpC,KAAK,WAAaA,EAAW,OAAO,OAAO,CAC9C,CACD,IAAI,UAAW,CACX,OAAO,QAAQ,IAAI,KAAK,WAAW,IAAKH,GAAcA,EAAU,QAAQ,CAAC,CAC5E,CAID,OAAOtkB,EAAU,CACb,OAAO,KAAK,WAAW,CAAC,EAAEA,CAAQ,CACrC,CACD,OAAOA,EAAU1E,EAAU,CACvB,QAAStwF,EAAI,EAAGA,EAAI,KAAK,WAAW,OAAQA,IACxC,KAAK,WAAWA,CAAC,EAAEg1F,CAAQ,EAAI1E,CAEtC,CACD,eAAeuiB,EAAU,CACrB,MAAM77D,EAAgB,KAAK,WAAW,IAAKsiE,GAAcA,EAAU,eAAezG,CAAQ,CAAC,EAC3F,MAAO,IAAM,CACT77D,EAAc,QAAQ,CAAC0iE,EAAQ15G,IAAM,CACjC05G,GAAUA,EAAM,EAChB,KAAK,WAAW15G,CAAC,EAAE,KAAI,CACvC,CAAa,CACb,CACK,CACD,IAAI,MAAO,CACP,OAAO,KAAK,OAAO,MAAM,CAC5B,CACD,IAAI,KAAK4lE,EAAM,CACX,KAAK,OAAO,OAAQA,CAAI,CAC3B,CACD,IAAI,OAAQ,CACR,OAAO,KAAK,OAAO,OAAO,CAC7B,CACD,IAAI,MAAMkrC,EAAO,CACb,KAAK,OAAO,QAASA,CAAK,CAC7B,CACD,IAAI,OAAQ,CACR,OAAO,KAAK,OAAO,OAAO,CAC7B,CACD,IAAI,WAAY,CACZ,OAAO,KAAK,OAAO,WAAW,CACjC,CACD,IAAI,UAAW,CACX,OAAO6I,GAAO,KAAK,WAAY,UAAU,CAC5C,CACD,IAAI,mBAAoB,CACpB,OAAOA,GAAO,KAAK,WAAY,mBAAmB,CACrD,CACD,OAAOlkE,EAAY,CACf,KAAK,WAAW,QAASmkE,GAAaA,EAASnkE,CAAU,EAAC,CAAE,CAC/D,CACD,MAAO,CACH,KAAK,OAAO,MAAM,CACrB,CACD,OAAQ,CACJ,KAAK,OAAO,OAAO,CACtB,CACD,QAAS,CACL,KAAK,OAAO,QAAQ,CACvB,CACD,UAAW,CACP,KAAK,OAAO,UAAU,CACzB,CACL,CACA,SAASkkE,GAAOF,EAAYzkB,EAAU,CAClC,IAAIl1C,EAAM,EACV,QAAS9/C,EAAI,EAAGA,EAAIy5G,EAAW,OAAQz5G,IAAK,CACxC,MAAMuiC,EAAQk3E,EAAWz5G,CAAC,EAAEg1F,CAAQ,EAChCzyD,IAAU,MAAQA,EAAQud,IAC1BA,EAAMvd,EAEb,CACD,OAAOud,CACX,CC5EA,MAAM+5D,WAA+BL,EAAe,CAChD,KAAKpI,EAAWmI,EAAW,CACvB,OAAO,KAAK,SAAS,QAAQnI,CAAS,EAAE,KAAK,IAAM,CAAA,CAAG,CACzD,CACL,CCNA,SAAS0I,GAAiBpqB,EAAUhY,EAAOqiC,EAAeC,EAAkB,EAAGC,EAAmB,EAAG,CACjG,MAAMxyE,EAAQ,MAAM,KAAKioD,CAAQ,EAC5B,KAAK,CAACpqF,EAAG8Z,IAAM9Z,EAAE,iBAAiB8Z,CAAC,CAAC,EACpC,QAAQs4D,CAAK,EACZwiC,EAAcxqB,EAAS,KACvByqB,GAAsBD,EAAc,GAAKF,EAE/C,OADwB,OAAOD,GAAkB,WAE3CA,EAActyE,EAAOyyE,CAAW,EAChCD,IAAqB,EACjBxyE,EAAQuyE,EACRG,EAAqB1yE,EAAQuyE,CAC3C,CCJA,MAAMI,GAAqB,GACrBC,GAAW93E,GACN,CAAC,MAAM,WAAWA,CAAK,CAAC,EAE7B+3E,GAAsB,CACxB,QAAS,MACb,EAMA,MAAMC,EAAY,CAOd,YAAYzuE,EAAMpO,EAAU,GAAI,CAQ5B,KAAK,iBAAmB,KAIxB,KAAK,OAAS,GACd,KAAK,gBAAmB/lB,GAAM,CAC1B,MAAM6iG,EAAc50C,GAAK,MAYzB,GANI,KAAK,YAAc40C,GACnB,KAAK,kBAAiB,EAE1B,KAAK,KAAO,KAAK,QACjB,KAAK,WAAW7iG,CAAC,EAEb,KAAK,UAAY,KAAK,OACtB,KAAK,OAAO,QAAQ,OAAO,KAAK,OAAO,EACnC,KAAK,YACL,UAAW8iG,KAAa,KAAK,WACzBA,EAAU,MAAK,CAIvC,EACQ,KAAK,YAAc,GACnB,KAAK,WAAW3uE,CAAI,EACpB,KAAK,MAAQpO,EAAQ,KACxB,CACD,WAAWg+C,EAAS,CAChB,KAAK,QAAUA,EACf,KAAK,UAAY9V,GAAK,MAClB,KAAK,mBAAqB,MAAQ8V,IAAY,SAC9C,KAAK,iBAAmB2+B,GAAQ,KAAK,OAAO,EAEnD,CACD,kBAAkBK,EAAiB,KAAK,QAAS,CAC7C,KAAK,eAAiBA,EACtB,KAAK,cAAgB,KAAK,SAC7B,CAyCD,SAASvtE,EAAc,CACnB,MAAI,CAAW,EAAC,WAAa,cACzBozD,GAAS,GAAO,iFAAiF,EAE9F,KAAK,GAAG,SAAUpzD,CAAY,CACxC,CACD,GAAGoI,EAAW4xB,EAAU,CACf,KAAK,OAAO5xB,CAAS,IACtB,KAAK,OAAOA,CAAS,EAAI,IAAIwqD,IAEjC,MAAM4a,EAAc,KAAK,OAAOplE,CAAS,EAAE,IAAI4xB,CAAQ,EACvD,OAAI5xB,IAAc,SACP,IAAM,CACTolE,IAKAh9B,GAAM,KAAK,IAAM,CACR,KAAK,OAAO,OAAO,QAAO,GAC3B,KAAK,KAAI,CAEjC,CAAiB,CACjB,EAEeg9B,CACV,CACD,gBAAiB,CACb,UAAWC,KAAiB,KAAK,OAC7B,KAAK,OAAOA,CAAa,EAAE,MAAK,CAEvC,CAID,OAAOC,EAAeC,EAAmB,CACrC,KAAK,cAAgBD,EACrB,KAAK,kBAAoBC,CAC5B,CAgBD,IAAInjG,EAAG,CACE,KAAK,cAIN,KAAK,cAAcA,EAAG,KAAK,eAAe,EAH1C,KAAK,gBAAgBA,CAAC,CAK7B,CACD,gBAAgBozB,EAAM2wC,EAAS2L,EAAO,CAClC,KAAK,IAAI3L,CAAO,EAChB,KAAK,KAAO,OACZ,KAAK,eAAiB3wC,EACtB,KAAK,cAAgB,KAAK,UAAYs8C,CACzC,CAKD,KAAK1vE,EAAGojG,EAAe,GAAM,CACzB,KAAK,gBAAgBpjG,CAAC,EACtB,KAAK,KAAOA,EACZ,KAAK,cAAgB,KAAK,eAAiB,OAC3CojG,GAAgB,KAAK,OACjB,KAAK,mBACL,KAAK,kBAAiB,CAC7B,CACD,OAAQ,CACJ,KAAK,OAAO,QAAQ,OAAO,KAAK,OAAO,CAC1C,CACD,aAAaN,EAAW,CACf,KAAK,aACN,KAAK,WAAa,IAAI,KAE1B,KAAK,WAAW,IAAIA,CAAS,CAChC,CACD,gBAAgBA,EAAW,CACnB,KAAK,YACL,KAAK,WAAW,OAAOA,CAAS,CAEvC,CAQD,KAAM,CACF,OAAIH,GAAoB,SACpBA,GAAoB,QAAQ,KAAK,IAAI,EAElC,KAAK,OACf,CAID,aAAc,CACV,OAAO,KAAK,IACf,CAQD,aAAc,CACV,MAAME,EAAc50C,GAAK,MACzB,GAAI,CAAC,KAAK,kBACN,KAAK,iBAAmB,QACxB40C,EAAc,KAAK,UAAYJ,GAC/B,MAAO,GAEX,MAAM/yB,EAAQ,KAAK,IAAI,KAAK,UAAY,KAAK,cAAe+yB,EAAkB,EAE9E,OAAOha,GAAkB,WAAW,KAAK,OAAO,EAC5C,WAAW,KAAK,cAAc,EAAG/Y,CAAK,CAC7C,CAWD,MAAM2zB,EAAgB,CAClB,YAAK,KAAI,EACF,IAAI,QAAS78E,GAAY,CAC5B,KAAK,YAAc,GACnB,KAAK,UAAY68E,EAAe78E,CAAO,EACnC,KAAK,OAAO,gBACZ,KAAK,OAAO,eAAe,QAE3C,CAAS,EAAE,KAAK,IAAM,CACN,KAAK,OAAO,mBACZ,KAAK,OAAO,kBAAkB,SAElC,KAAK,eAAc,CAC/B,CAAS,CACJ,CAMD,MAAO,CACC,KAAK,YACL,KAAK,UAAU,OACX,KAAK,OAAO,iBACZ,KAAK,OAAO,gBAAgB,UAGpC,KAAK,eAAc,CACtB,CAMD,aAAc,CACV,MAAO,CAAC,CAAC,KAAK,SACjB,CACD,gBAAiB,CACb,OAAO,KAAK,SACf,CAUD,SAAU,CACN,KAAK,YAAY,QACjB,KAAK,OAAO,SAAS,SACrB,KAAK,eAAc,EACnB,KAAK,KAAI,EACL,KAAK,mBACL,KAAK,kBAAiB,CAE7B,CACL,CACA,SAASqzE,GAAY1lE,EAAMpO,EAAS,CAChC,OAAO,IAAI68E,GAAYzuE,EAAMpO,CAAO,CACxC,CC3TA,SAASu9E,GAAkB/J,EAAYgK,EAAkB,CACrD,GAAIhK,GAAY,SAAWgK,EAAkB,CACzC,KAAM,CAAE,QAASr8G,EAAG,GAAGs8G,CAAI,EAAKjK,EAChC,MAAO,CAAE,GAAGgK,EAAkB,GAAGC,EACpC,CACD,OAAOjK,CACX,CCTA,SAASkK,GAAmBlK,EAAYzuE,EAAK,CACzC,MAAM44E,EAAkBnK,IAAazuE,CAAG,GACpCyuE,GAAa,SACbA,EACJ,OAAImK,IAAoBnK,EACb+J,GAAkBI,EAAiBnK,CAAU,EAEjDmK,CACX,CCRA,MAAMC,GAAoB,CACtB,KAAM,SACN,UAAW,IACX,QAAS,GACT,UAAW,EACf,EACMC,GAA0B3/E,IAAY,CACxC,KAAM,SACN,UAAW,IACX,QAASA,IAAW,EAAI,EAAI,KAAK,KAAK,GAAG,EAAI,GAC7C,UAAW,EACf,GACM4/E,GAAsB,CACxB,KAAM,YACN,SAAU,EACd,EAKM3Z,GAAO,CACT,KAAM,YACN,KAAM,CAAC,IAAM,GAAK,IAAM,CAAC,EACzB,SAAU,EACd,EACM4Z,GAAuB,CAACC,EAAU,CAAE,UAAAvN,KAClCA,EAAU,OAAS,EACZqN,GAEF3H,GAAe,IAAI6H,CAAQ,EACzBA,EAAS,WAAW,OAAO,EAC5BH,GAAuBpN,EAAU,CAAC,CAAC,EACnCmN,GAEHzZ,GCpCL8Z,GAAoB,IAAI,IAAI,CAC9B,OACA,QACA,gBACA,kBACA,mBACA,SACA,aACA,cACA,OACA,SACJ,CAAC,EAMD,SAASC,GAAoB1K,EAAY,CACrC,UAAWzuE,KAAOyuE,EACd,GAAI,CAACyK,GAAkB,IAAIl5E,CAAG,EAC1B,MAAO,GAEf,MAAO,EACX,CCbA,MAAMo5E,GAAqB,CAAC95E,EAAMQ,EAAO3G,EAAQs1E,EAAa,CAAA,EAAI5vE,EAAS43E,IAAehtE,GAAe,CACrG,MAAMmvE,EAAkBD,GAAmBlK,EAAYnvE,CAAI,GAAK,CAAA,EAM1DmM,EAAQmtE,EAAgB,OAASnK,EAAW,OAAS,EAK3D,GAAI,CAAE,QAAA9pC,EAAU,CAAG,EAAG8pC,EACtB9pC,EAAUA,EAAU64B,GAAsB/xD,CAAK,EAC/C,MAAMxQ,EAAU,CACZ,UAAW,MAAM,QAAQ9B,CAAM,EAAIA,EAAS,CAAC,KAAMA,CAAM,EACzD,KAAM,UACN,SAAU2G,EAAM,YAAa,EAC7B,GAAG84E,EACH,MAAO,CAACj0C,EACR,SAAWzvD,GAAM,CACb4qB,EAAM,IAAI5qB,CAAC,EACX0jG,EAAgB,UAAYA,EAAgB,SAAS1jG,CAAC,CACzD,EACD,WAAY,IAAM,CACdu0B,IACAmvE,EAAgB,YAAcA,EAAgB,YACjD,EACD,KAAAt5E,EACA,YAAaQ,EACb,QAAS22E,EAAY,OAAY53E,CACzC,EAKSs6E,GAAoBP,CAAe,GACpC,OAAO,OAAO39E,EAAS+9E,GAAqB15E,EAAMrE,CAAO,CAAC,EAO9DA,EAAQ,WAAaA,EAAQ,SAAWuiE,GAAsBviE,EAAQ,QAAQ,GAC9EA,EAAQ,cAAgBA,EAAQ,YAAcuiE,GAAsBviE,EAAQ,WAAW,GAInFA,EAAQ,OAAS,SACjBA,EAAQ,UAAU,CAAC,EAAIA,EAAQ,MAEnC,IAAIo+E,EAAa,GA0BjB,IAzBIp+E,EAAQ,OAAS,IAChBA,EAAQ,WAAa,GAAK,CAACA,EAAQ,eACpCy6E,GAAqBz6E,CAAO,EACxBA,EAAQ,QAAU,IAClBo+E,EAAa,MAGjBxc,GAAmB,mBACnBA,GAAmB,gBACnBh+D,GAAS,sBACT+5E,EAAgB,kBAChBS,EAAa,GACb3D,GAAqBz6E,CAAO,EAC5BA,EAAQ,MAAQ,GAMpBA,EAAQ,aAAe,CAAC29E,EAAgB,MAAQ,CAACA,EAAgB,KAM7DS,GAAc,CAAC5C,GAAa32E,EAAM,IAAG,IAAO,OAAW,CACvD,MAAMsuE,EAAgBF,GAAiBjzE,EAAQ,UAAW29E,CAAe,EACzE,GAAIxK,IAAkB,OAAW,CAC7BlzB,GAAM,OAAO,IAAM,CACfjgD,EAAQ,SAASmzE,CAAa,EAC9BnzE,EAAQ,WAAU,CAClC,CAAa,EACD,MACH,CACJ,CACD,OAAO29E,EAAgB,OACjB,IAAI9J,GAAY7zE,CAAO,EACvB,IAAIk7E,GAA0Bl7E,CAAO,CAC/C,ECzFMq+E,GAEN,2DACA,SAASC,GAAiBtgC,EAAS,CAC/B,MAAMiB,EAAQo/B,GAAsB,KAAKrgC,CAAO,EAChD,GAAI,CAACiB,EACD,MAAO,IACX,KAAM,CAAG,CAAAs/B,EAAQC,EAAQC,CAAQ,EAAIx/B,EACrC,MAAO,CAAC,KAAKs/B,GAAUC,CAAM,GAAIC,CAAQ,CAC7C,CACA,MAAMC,GAAW,EACjB,SAASC,GAAiB3gC,EAASp6C,EAASgpB,EAAQ,EAAG,CACnD+0C,GAAU/0C,GAAS8xD,GAAU,yDAAyD1gC,CAAO,uDAAwD,mBAAmB,EACxK,KAAM,CAACkpB,EAAOuX,CAAQ,EAAIH,GAAiBtgC,CAAO,EAElD,GAAI,CAACkpB,EACD,OAEJ,MAAM0X,EAAW,OAAO,iBAAiBh7E,CAAO,EAAE,iBAAiBsjE,CAAK,EACxE,GAAI0X,EAAU,CACV,MAAMC,EAAUD,EAAS,OACzB,OAAO/c,GAAkBgd,CAAO,EAAI,WAAWA,CAAO,EAAIA,CAC7D,CACD,OAAOxX,GAAmBoX,CAAQ,EAC5BE,GAAiBF,EAAU76E,EAASgpB,EAAQ,CAAC,EAC7C6xD,CACV,CCtCA,SAASK,GAActI,EAAe,CAClC,MAAMn5E,EAAQ,CAAC,GAAI,CAAA,CAAE,EACrB,OAAAm5E,GAAe,OAAO,QAAQ,CAAC3xE,EAAOE,IAAQ,CAC1C1H,EAAM,CAAC,EAAE0H,CAAG,EAAIF,EAAM,IAAG,EACzBxH,EAAM,CAAC,EAAE0H,CAAG,EAAIF,EAAM,YAAW,CACzC,CAAK,EACMxH,CACX,CACA,SAAS0hF,GAAwBhtB,EAAO0S,EAAYua,EAAQxI,EAAe,CAIvE,GAAI,OAAO/R,GAAe,WAAY,CAClC,KAAM,CAACzmB,EAAS2kB,CAAQ,EAAImc,GAActI,CAAa,EACvD/R,EAAaA,EAAWua,IAAW,OAAYA,EAASjtB,EAAM,OAAQ/T,EAAS2kB,CAAQ,CAC1F,CAaD,GARI,OAAO8B,GAAe,WACtBA,EAAa1S,EAAM,UAAYA,EAAM,SAAS0S,CAAU,GAOxD,OAAOA,GAAe,WAAY,CAClC,KAAM,CAACzmB,EAAS2kB,CAAQ,EAAImc,GAActI,CAAa,EACvD/R,EAAaA,EAAWua,IAAW,OAAYA,EAASjtB,EAAM,OAAQ/T,EAAS2kB,CAAQ,CAC1F,CACD,OAAO8B,CACX,CC/BA,SAASwa,GAAezI,EAAe/R,EAAYua,EAAQ,CACvD,MAAMjtB,EAAQykB,EAAc,WAC5B,OAAOuI,GAAwBhtB,EAAO0S,EAAYua,IAAW,OAAYA,EAASjtB,EAAM,OAAQykB,CAAa,CACjH,CCHA,MAAM0I,GAAiB,IAAI,IAAI,CAC3B,QACA,SACA,MACA,OACA,QACA,SACA,GAAGhJ,EACP,CAAC,ECVKiJ,GAAqBllG,GAChB,MAAM,QAAQA,CAAC,ECO1B,SAASmlG,GAAe5I,EAAezxE,EAAKF,EAAO,CAC3C2xE,EAAc,SAASzxE,CAAG,EAC1ByxE,EAAc,SAASzxE,CAAG,EAAE,IAAIF,CAAK,EAGrC2xE,EAAc,SAASzxE,EAAK+uE,GAAYjvE,CAAK,CAAC,CAEtD,CACA,SAASw6E,GAA6BplG,EAAG,CAErC,OAAOklG,GAAkBllG,CAAC,EAAIA,EAAEA,EAAE,OAAS,CAAC,GAAK,EAAIA,CACzD,CACA,SAASqlG,GAAU9I,EAAe/R,EAAY,CAC1C,MAAMma,EAAWK,GAAezI,EAAe/R,CAAU,EACzD,GAAI,CAAE,cAAA8a,EAAgB,CAAA,EAAI,WAAA/L,EAAa,CAAE,EAAE,GAAGt1E,CAAM,EAAK0gF,GAAY,GACrE1gF,EAAS,CAAE,GAAGA,EAAQ,GAAGqhF,CAAa,EACtC,UAAWx6E,KAAO7G,EAAQ,CACtB,MAAM2G,EAAQw6E,GAA6BnhF,EAAO6G,CAAG,CAAC,EACtDq6E,GAAe5I,EAAezxE,EAAKF,CAAK,CAC3C,CACL,CC5BA,MAAM26E,GAAiB36E,GAAU,GAAQA,GAASA,EAAM,aCExD,SAAS46E,GAAwB56E,EAAO,CACpC,MAAO,GAAQ26E,GAAc36E,CAAK,GAAKA,EAAM,IACjD,CCDA,SAAS66E,GAAqBlJ,EAAezxE,EAAK,CAC9C,MAAM46E,EAAanJ,EAAc,SAAS,YAAY,EAKtD,GAAIiJ,GAAwBE,CAAU,EAClC,OAAOA,EAAW,IAAI56E,CAAG,EAExB,GAAI,CAAC46E,GAAc/d,GAAmB,WAAY,CACnD,MAAMge,EAAgB,IAAIhe,GAAmB,WAAW,MAAM,EAC9D4U,EAAc,SAAS,aAAcoJ,CAAa,EAClDA,EAAc,IAAI76E,CAAG,CACxB,CACL,CCjBA,SAAS86E,GAAYvhF,EAAK,CACtB,OAAOA,EAAI,QAAQ,WAAa2gD,GAAU,IAAIA,EAAM,aAAa,EAAE,CACvE,CCCA,MAAM6gC,GAA+B,QAAUD,GADjB,gBACkD,ECDhF,SAASE,GAAqBvJ,EAAe,CACzC,OAAOA,EAAc,MAAMsJ,EAA4B,CAC3D,CCWA,SAASE,GAAqB,CAAE,cAAAC,EAAe,eAAAC,CAAc,EAAIn7E,EAAK,CAClE,MAAMo7E,EAAcF,EAAc,eAAel7E,CAAG,GAAKm7E,EAAen7E,CAAG,IAAM,GACjF,OAAAm7E,EAAen7E,CAAG,EAAI,GACfo7E,CACX,CACA,SAASC,GAAc5J,EAAe6J,EAAqB,CAAE,MAAA7vE,EAAQ,EAAG,mBAAA8vE,EAAoB,KAAAxgF,CAAM,EAAG,GAAI,CACrG,GAAI,CAAE,WAAA0zE,EAAY,cAAA+L,EAAe,GAAGrhF,CAAM,EAAKmiF,EAC/C,MAAME,EAAoB/J,EAAc,uBACxChD,EAAaA,EACP+J,GAAkB/J,EAAY+M,CAAiB,EAC/CA,EACN,MAAMC,EAAehN,GAAY,aAC3BiN,EAAiBjN,GAAY,eAC/B8M,IACA9M,EAAa8M,GACjB,MAAMvE,EAAa,CAAA,EACb2E,EAAqB5gF,GACvB02E,EAAc,gBACdA,EAAc,eAAe,SAAU,EAAC12E,CAAI,EAC1Ck0B,EAAOw/C,GAAY,KACrBx/C,GAEAA,EAAK,qBAAqBwiD,EAAet4E,EAAQs1E,EAAYhjE,EAAOurE,CAAU,EAElF,UAAWh3E,KAAO7G,EAAQ,CACtB,MAAM2G,EAAQ2xE,EAAc,SAASzxE,EAAKyxE,EAAc,aAAazxE,CAAG,GAAK,IAAI,EAC3E47E,EAAcziF,EAAO6G,CAAG,EAC9B,GAAI47E,IAAgB,QACfD,GACGV,GAAqBU,EAAoB37E,CAAG,EAChD,SAEJ,MAAM44E,EAAkB,CACpB,MAAAntE,EACA,GAAGktE,GAAmBlK,GAAc,CAAE,EAAEzuE,CAAG,CACvD,EACY07E,IACA9C,EAAgB,eAAiB,IAMrC,MAAM3F,EAAenzE,EAAM,MAC3B,GAAImzE,IAAiB,QACjB,CAACnzE,EAAM,YAAa,GACpB,CAAC,MAAM,QAAQ87E,CAAW,GAC1BA,IAAgB3I,GAChB,CAAC2F,EAAgB,SAAU,CAC3B19B,GAAM,OAAO,IAAMp7C,EAAM,IAAI87E,CAAW,CAAC,EACzC,QACH,CAKD,IAAInF,EAAY,GAChB,GAAI,OAAO,uBAAwB,CAC/B,MAAMoF,EAAWb,GAAqBvJ,CAAa,EACnD,GAAIoK,EAAU,CACV,MAAMjqC,EAAY,OAAO,uBAAuBiqC,EAAU77E,EAAKk7C,EAAK,EAChEtJ,IAAc,OACdgnC,EAAgB,UAAYhnC,EAC5B6kC,EAAY,GAEnB,CACJ,CACDkE,GAAqBlJ,EAAezxE,CAAG,EACvC,MAAM87E,EAAqBL,GAAgBhK,EAAc,mBACzD3xE,EAAM,MAAMs5E,GAAmBp5E,EAAKF,EAAO87E,EAAaE,GAAsB3B,GAAe,IAAIn6E,CAAG,EAC9F,CAAE,KAAM,EAAO,EACf44E,EAAiBnH,EAAegF,CAAS,CAAC,EAChD,MAAMI,EAAY/2E,EAAM,UACpB+2E,GACAG,EAAW,KAAKH,CAAS,CAEhC,CACD,GAAI2D,EAAe,CACf,MAAMuB,EAAqB,IAAM7gC,GAAM,OAAO,IAAM,CAChDs/B,GAAiBD,GAAU9I,EAAe+I,CAAa,CACnE,CAAS,EACGxD,EAAW,OACX,QAAQ,IAAIA,CAAU,EAAE,KAAK+E,CAAkB,EAG/CA,GAEP,CACD,OAAO/E,CACX,CCpGA,SAASgF,GAAevK,EAAewK,EAAShhF,EAAU,CAAA,EAAI,CAC1D,MAAM4+E,EAAWK,GAAezI,EAAewK,EAAShhF,EAAQ,OAAS,OACnEw2E,EAAc,iBAAiB,OAC/B,MAAS,EACf,GAAI,CAAE,WAAAhD,EAAagD,EAAc,qBAAsB,GAAI,EAAI,EAAGoI,GAAY,GAC1E5+E,EAAQ,qBACRwzE,EAAaxzE,EAAQ,oBAMzB,MAAMihF,EAAerC,EACf,IAAM,QAAQ,IAAIwB,GAAc5J,EAAeoI,EAAU5+E,CAAO,CAAC,EACjE,IAAM,QAAQ,UAKdkhF,EAAqB1K,EAAc,iBAAmBA,EAAc,gBAAgB,KACpF,CAAC2K,EAAe,IAAM,CACpB,KAAM,CAAE,cAAA9E,EAAgB,EAAG,gBAAAC,EAAiB,iBAAAC,CAAgB,EAAM/I,EAClE,OAAO4N,GAAgB5K,EAAewK,EAASG,EAAc9E,EAAeC,EAAiBC,EAAkBv8E,CAAO,CACzH,EACC,IAAM,QAAQ,UAKd,CAAE,KAAAqhF,CAAM,EAAG7N,EACjB,GAAI6N,EAAM,CACN,KAAM,CAACxiF,EAAOuR,CAAI,EAAIixE,IAAS,iBACzB,CAACJ,EAAcC,CAAkB,EACjC,CAACA,EAAoBD,CAAY,EACvC,OAAOpiF,EAAK,EAAG,KAAK,IAAMuR,EAAM,CAAA,CACnC,KAEG,QAAO,QAAQ,IAAI,CAAC6wE,EAAY,EAAIC,EAAmBlhF,EAAQ,KAAK,CAAC,CAAC,CAE9E,CACA,SAASohF,GAAgB5K,EAAewK,EAASxwE,EAAQ,EAAG6rE,EAAgB,EAAGC,EAAkB,EAAGC,EAAmB,EAAGv8E,EAAS,CAC/H,MAAM+7E,EAAa,CAAA,EACnB,UAAW/hC,KAASw8B,EAAc,gBAC9Bx8B,EAAM,OAAO,iBAAkBgnC,CAAO,EACtCjF,EAAW,KAAKgF,GAAe/mC,EAAOgnC,EAAS,CAC3C,GAAGhhF,EACH,MAAOwQ,GACF,OAAO6rE,GAAkB,WAAa,EAAIA,GAC3CD,GAAiB5F,EAAc,gBAAiBx8B,EAAOqiC,EAAeC,EAAiBC,CAAgB,CACvH,CAAS,EAAE,KAAK,IAAMviC,EAAM,OAAO,oBAAqBgnC,CAAO,CAAC,CAAC,EAE7D,OAAO,QAAQ,IAAIjF,CAAU,CACjC,CCpDA,SAASuF,GAAqB9K,EAAe/R,EAAYzkE,EAAU,CAAA,EAAI,CACnEw2E,EAAc,OAAO,iBAAkB/R,CAAU,EACjD,IAAImX,EACJ,GAAI,MAAM,QAAQnX,CAAU,EAAG,CAC3B,MAAMsX,EAAatX,EAAW,IAAKuc,GAAYD,GAAevK,EAAewK,EAAShhF,CAAO,CAAC,EAC9F47E,EAAY,QAAQ,IAAIG,CAAU,CACrC,SACQ,OAAOtX,GAAe,SAC3BmX,EAAYmF,GAAevK,EAAe/R,EAAYzkE,CAAO,MAE5D,CACD,MAAMuhF,EAAqB,OAAO9c,GAAe,WAC3Cwa,GAAezI,EAAe/R,EAAYzkE,EAAQ,MAAM,EACxDykE,EACNmX,EAAY,QAAQ,IAAIwE,GAAc5J,EAAe+K,EAAoBvhF,CAAO,CAAC,CACpF,CACD,OAAO47E,EAAU,KAAK,IAAM,CACxBpF,EAAc,OAAO,oBAAqB/R,CAAU,CAC5D,CAAK,CACL,CCpBA,MAAM+c,GAAO,CACT,KAAOvnG,GAAMA,IAAM,OACnB,MAAQA,GAAMA,CAClB,ECHMwnG,GAAiBxnG,GAAO6lB,GAASA,EAAK,KAAK7lB,CAAC,ECK5CynG,GAAsB,CAACla,GAAQsB,GAAID,GAAS90C,GAASi1C,GAAID,GAAIyY,EAAI,EAIjEG,GAA0B1nG,GAAMynG,GAAoB,KAAKD,GAAcxnG,CAAC,CAAC,ECV/E,SAAS2nG,GAAO/8E,EAAO,CACnB,OAAI,OAAOA,GAAU,SACVA,IAAU,EAEZA,IAAU,KACRA,IAAU,QAAUA,IAAU,KAAOk9D,GAAkBl9D,CAAK,EAG5D,EAEf,CCNA,MAAMg9E,GAAc,IAAI,IAAI,CAAC,aAAc,WAAY,WAAY,SAAS,CAAC,EAC7E,SAASC,GAAmB7nG,EAAG,CAC3B,KAAM,CAACoqB,EAAMQ,CAAK,EAAI5qB,EAAE,MAAM,EAAG,EAAE,EAAE,MAAM,GAAG,EAC9C,GAAIoqB,IAAS,cACT,OAAOpqB,EACX,KAAM,CAACutF,CAAM,EAAI3iE,EAAM,MAAM6iE,EAAU,GAAK,GAC5C,GAAI,CAACF,EACD,OAAOvtF,EACX,MAAM2uF,EAAO/jE,EAAM,QAAQ2iE,EAAQ,EAAE,EACrC,IAAI31D,EAAegwE,GAAY,IAAIx9E,CAAI,EAAI,EAAI,EAC/C,OAAImjE,IAAW3iE,IACXgN,GAAgB,KACbxN,EAAO,IAAMwN,EAAe+2D,EAAO,GAC9C,CACA,MAAMmZ,GAAgB,uBAChB7oE,GAAS,CACX,GAAG2xD,GACH,kBAAoB5wF,GAAM,CACtB,MAAM+nG,EAAY/nG,EAAE,MAAM8nG,EAAa,EACvC,OAAOC,EAAYA,EAAU,IAAIF,EAAkB,EAAE,KAAK,GAAG,EAAI7nG,CACpE,CACL,ECzBMgoG,GAAO,CACT,GAAGpX,GACH,kBAAoB5wF,GAAM,CACtB,MAAMqvF,EAASuB,GAAQ,MAAM5wF,CAAC,EAE9B,OADoB4wF,GAAQ,kBAAkB5wF,CAAC,EAC5BqvF,EAAO,IAAKrvF,GAAM,OAAOA,GAAM,SAAW,EAAI,OAAOA,GAAM,SAAW,CAAE,GAAGA,EAAG,MAAO,CAAG,EAAGA,CAAC,CAAC,CACnH,CACL,ECPMioG,GAAM,CACR,GAAG1a,GACH,UAAW,KAAK,KACpB,ECAM2a,GAAmB,CAErB,YAAarZ,GACb,eAAgBA,GAChB,iBAAkBA,GAClB,kBAAmBA,GACnB,gBAAiBA,GACjB,aAAcA,GACd,oBAAqBA,GACrB,qBAAsBA,GACtB,wBAAyBA,GACzB,uBAAwBA,GAExB,MAAOA,GACP,SAAUA,GACV,OAAQA,GACR,UAAWA,GACX,IAAKA,GACL,MAAOA,GACP,OAAQA,GACR,KAAMA,GACN,MAAOA,GACP,WAAYA,GACZ,gBAAiBA,GACjB,cAAeA,GACf,YAAaA,GACb,iBAAkBA,GAClB,eAAgBA,GAEhB,QAASA,GACT,WAAYA,GACZ,aAAcA,GACd,cAAeA,GACf,YAAaA,GACb,aAAcA,GACd,kBAAmBA,GACnB,gBAAiBA,GACjB,cAAeA,GACf,mBAAoBA,GACpB,iBAAkBA,GAClB,OAAQA,GACR,UAAWA,GACX,YAAaA,GACb,aAAcA,GACd,WAAYA,GACZ,YAAaA,GACb,iBAAkBA,GAClB,eAAgBA,GAChB,aAAcA,GACd,kBAAmBA,GACnB,gBAAiBA,GAEjB,SAAUA,GAEV,oBAAqBA,GACrB,oBAAqBA,GACrB,GC1DwB,CACxB,OAAQ/0C,GAMR,aAAcA,GACd,QAASA,GACT,QAASA,GACT,QAASA,GACT,MAAA0Z,GACA,OAAQA,GACR,OAAQA,GACR,OAAQA,GACR,KAAM1Z,GACN,MAAOA,GACP,MAAOA,GACP,SAAU+0C,GACV,WAAYA,GACZ,WAAYA,GACZ,WAAYA,GACZ,EAAGA,GACH,EAAGA,GACH,EAAGA,GACH,YAAaA,GACb,qBAAsBA,GACtB,QAASz5C,GACT,QAAS45C,GACT,QAASA,GACT,QAASH,EACb,ED4BI,OAAQoZ,GAER,YAAa7yD,GACb,cAAeA,GACf,WAAY6yD,EAChB,EE3DME,GAAoB,CACtB,GAAGD,GAEH,MAAAxvD,GACA,gBAAiBA,GACjB,aAAcA,GACd,KAAMA,GACN,OAAQA,GAER,YAAaA,GACb,eAAgBA,GAChB,iBAAkBA,GAClB,kBAAmBA,GACnB,gBAAiBA,GACjB,OAAAzZ,GACA,aAAcA,GACd,KAAA+oE,GACA,WAAYA,EAChB,EAIMI,GAAuBt9E,GAAQq9E,GAAkBr9E,CAAG,ECzBpDu9E,GAA4B,IAAI,IAAI,CAACppE,GAAQ+oE,EAAI,CAAC,EACxD,SAASrX,GAAkB7lE,EAAKF,EAAO,CACnC,IAAI09E,EAAmBF,GAAoBt9E,CAAG,EAC9C,OAAKu9E,GAAY,IAAIC,CAAgB,IACjCA,EAAmB1X,IAEhB0X,EAAiB,kBAClBA,EAAiB,kBAAkB19E,CAAK,EACxC,MACV,CCLA,MAAM29E,GAAmB,IAAI,IAAI,CAAC,OAAQ,OAAQ,GAAG,CAAC,EACtD,SAASC,GAA4B3K,EAAqB4K,EAAqBr+E,EAAM,CACjF,IAAI/hC,EAAI,EACJqgH,EACJ,KAAOrgH,EAAIw1G,EAAoB,QAAU,CAAC6K,GAAoB,CAC1D,MAAM9iC,EAAWi4B,EAAoBx1G,CAAC,EAClC,OAAOu9E,GAAa,UACpB,CAAC2iC,GAAiB,IAAI3iC,CAAQ,GAC9BiqB,GAAoBjqB,CAAQ,EAAE,OAAO,SACrC8iC,EAAqB7K,EAAoBx1G,CAAC,GAE9CA,GACH,CACD,GAAIqgH,GAAsBt+E,EACtB,UAAWu+E,KAAaF,EACpB5K,EAAoB8K,CAAS,EAAIhY,GAAkBvmE,EAAMs+E,CAAkB,CAGvF,CClBA,MAAME,WAA6BhL,EAAiB,CAChD,YAAYC,EAAqBtpE,EAAYnK,EAAMyvE,EAAalwE,EAAS,CACrE,MAAMk0E,EAAqBtpE,EAAYnK,EAAMyvE,EAAalwE,EAAS,EAAI,CAC1E,CACD,eAAgB,CACZ,KAAM,CAAE,oBAAAk0E,EAAqB,QAAAl0E,EAAS,KAAAS,CAAI,EAAK,KAC/C,GAAI,CAACT,GAAW,CAACA,EAAQ,QACrB,OACJ,MAAM,cAAa,EAInB,QAASthC,EAAI,EAAGA,EAAIw1G,EAAoB,OAAQx1G,IAAK,CACjD,IAAIu9E,EAAWi4B,EAAoBx1G,CAAC,EACpC,GAAI,OAAOu9E,GAAa,WACpBA,EAAWA,EAAS,OAChBwnB,GAAmBxnB,CAAQ,GAAG,CAC9B,MAAM++B,EAAWD,GAAiB9+B,EAAUj8C,EAAQ,OAAO,EACvDg7E,IAAa,SACb9G,EAAoBx1G,CAAC,EAAIs8G,GAEzBt8G,IAAMw1G,EAAoB,OAAS,IACnC,KAAK,cAAgBj4B,EAE5B,CAER,CAaD,GAPA,KAAK,qBAAoB,EAOrB,CAACq/B,GAAe,IAAI76E,CAAI,GAAKyzE,EAAoB,SAAW,EAC5D,OAEJ,KAAM,CAACrnB,EAAQvyD,CAAM,EAAI45E,EACnBgL,EAAanB,GAAuBlxB,CAAM,EAC1CsyB,EAAapB,GAAuBzjF,CAAM,EAK1C8kF,EAAezb,GAAoB9W,CAAM,EACzCwyB,EAAe1b,GAAoBrpE,CAAM,EAC/C,GAAI8kF,IAAiBC,GAAgBvM,GAAiBryE,CAAI,EAAG,CACzD,KAAK,iBAAmB,GACxB,MACH,CAID,GAAIy+E,IAAeC,EAMnB,GAAI3M,GAAc0M,CAAU,GAAK1M,GAAc2M,CAAU,EACrD,QAASzgH,EAAI,EAAGA,EAAIw1G,EAAoB,OAAQx1G,IAAK,CACjD,MAAMuiC,EAAQizE,EAAoBx1G,CAAC,EAC/B,OAAOuiC,GAAU,WACjBizE,EAAoBx1G,CAAC,EAAI,WAAWuiC,CAAK,EAEhD,MAEI6xE,GAAiBryE,CAAI,IAI1B,KAAK,iBAAmB,GAE/B,CACD,sBAAuB,CACnB,KAAM,CAAE,oBAAAyzE,EAAqB,KAAAzzE,CAAM,EAAG,KAChCq+E,EAAsB,CAAA,EAC5B,QAASpgH,EAAI,EAAGA,EAAIw1G,EAAoB,OAAQx1G,KACxCw1G,EAAoBx1G,CAAC,IAAM,MAC3Bs/G,GAAO9J,EAAoBx1G,CAAC,CAAC,IAC7BogH,EAAoB,KAAKpgH,CAAC,EAG9BogH,EAAoB,QACpBD,GAA4B3K,EAAqB4K,EAAqBr+E,CAAI,CAEjF,CACD,qBAAsB,CAClB,KAAM,CAAE,QAAAT,EAAS,oBAAAk0E,EAAqB,KAAAzzE,CAAI,EAAK,KAC/C,GAAI,CAACT,GAAW,CAACA,EAAQ,QACrB,OACAS,IAAS,WACT,KAAK,iBAAmB,OAAO,aAEnC,KAAK,eAAiBqyE,GAAiBryE,CAAI,EAAET,EAAQ,mBAAoB,EAAE,OAAO,iBAAiBA,EAAQ,OAAO,CAAC,EACnHk0E,EAAoB,CAAC,EAAI,KAAK,eAE9B,MAAMoL,EAAkBpL,EAAoBA,EAAoB,OAAS,CAAC,EACtEoL,IAAoB,QACpBt/E,EAAQ,SAASS,EAAM6+E,CAAe,EAAE,KAAKA,EAAiB,EAAK,CAE1E,CACD,iBAAkB,CACd,KAAM,CAAE,QAAAt/E,EAAS,KAAAS,EAAM,oBAAAyzE,CAAmB,EAAK,KAC/C,GAAI,CAACl0E,GAAW,CAACA,EAAQ,QACrB,OACJ,MAAMiB,EAAQjB,EAAQ,SAASS,CAAI,EACnCQ,GAASA,EAAM,KAAK,KAAK,eAAgB,EAAK,EAC9C,MAAMs+E,EAAqBrL,EAAoB,OAAS,EAClD3E,EAAgB2E,EAAoBqL,CAAkB,EAC5DrL,EAAoBqL,CAAkB,EAAIzM,GAAiBryE,CAAI,EAAET,EAAQ,mBAAoB,EAAE,OAAO,iBAAiBA,EAAQ,OAAO,CAAC,EACnIuvE,IAAkB,MAAQ,KAAK,gBAAkB,SACjD,KAAK,cAAgBA,GAGrB,KAAK,mBAAmB,QACxB,KAAK,kBAAkB,QAAQ,CAAC,CAACiQ,EAAoBC,CAAmB,IAAM,CAC1Ez/E,EACK,SAASw/E,CAAkB,EAC3B,IAAIC,CAAmB,CAC5C,CAAa,EAEL,KAAK,qBAAoB,CAC5B,CACL,CC1IA,SAASC,GAAgBC,EAAmBroB,EAAOsoB,EAAe,CAC9D,GAAID,GAAqB,KACrB,MAAO,GAEX,GAAIA,aAA6B,YAC7B,MAAO,CAACA,CAAiB,EAExB,GAAI,OAAOA,GAAsB,SAAU,CAC5C,IAAI1U,EAAO,SACP3T,IACA2T,EAAO3T,EAAM,SAEjB,MAAMuoB,EAAWD,IAAgBD,CAAiB,GAC9C1U,EAAK,iBAAiB0U,CAAiB,EAC3C,OAAOE,EAAW,MAAM,KAAKA,CAAQ,EAAI,CAAA,CAC5C,CACD,OAAO,MAAM,KAAKF,CAAiB,EAAE,OAAQ3/E,GAAYA,GAAW,IAAI,CAC5E,CCdA,MAAM8/E,GAAiB,CAAC7+E,EAAO/E,IACpBA,GAAQ,OAAO+E,GAAU,SAC1B/E,EAAK,UAAU+E,CAAK,EACpBA,ECAV,SAAS8+E,GAAc//E,EAAS,CAC5B,OAAQk+D,GAASl+D,CAAO,GACpB,iBAAkBA,GAClB,EAAE,oBAAqBA,EAC/B,CCRA,KAAM,CAAE,SAAUggF,GAAW,OAAQC,EAAiB,EACtC/d,GAAoB,eAAgB,EAAK,ECHnDge,GAAa,CACf,EAAG,GACH,EAAG,EACP,EACA,SAASC,IAAe,CACpB,OAAOD,GAAW,GAAKA,GAAW,CACtC,CCJA,SAASE,GAAY5wC,EAAM,CACvB,OAAIA,IAAS,KAAOA,IAAS,IACrB0wC,GAAW1wC,CAAI,EACR,MAGP0wC,GAAW1wC,CAAI,EAAI,GACZ,IAAM,CACT0wC,GAAW1wC,CAAI,EAAI,EACnC,GAIY0wC,GAAW,GAAKA,GAAW,EACpB,MAGPA,GAAW,EAAIA,GAAW,EAAI,GACvB,IAAM,CACTA,GAAW,EAAIA,GAAW,EAAI,EAC9C,EAGA,CCvBA,SAASG,GAAaV,EAAmBvjF,EAAS,CAC9C,MAAMyjF,EAAWH,GAAgBC,CAAiB,EAC5CW,EAAyB,IAAI,gBAC7BC,EAAe,CACjB,QAAS,GACT,GAAGnkF,EACH,OAAQkkF,EAAuB,MACvC,EAEI,MAAO,CAACT,EAAUU,EADH,IAAMD,EAAuB,OACN,CAC1C,CCTA,SAASE,GAAarlE,EAAO,CACzB,MAAO,EAAEA,EAAM,cAAgB,SAAWglE,GAAc,EAC5D,CAQA,SAASM,GAAMd,EAAmBe,EAActkF,EAAU,CAAA,EAAI,CAC1D,KAAM,CAACyjF,EAAUU,EAAcnI,CAAM,EAAIiI,GAAaV,EAAmBvjF,CAAO,EAChF,OAAAyjF,EAAS,QAAS7/E,GAAY,CAC1B,IAAI2gF,EAAY,GACZC,EAAmB,GACnBC,EACJ,MAAMC,EAAqB,IAAM,CAC7B9gF,EAAQ,oBAAoB,eAAgB+gF,CAAc,CACtE,EACcC,EAAY7lE,GAAU,CACpB0lE,IACAA,EAAiB1lE,CAAK,EACtB0lE,EAAmB,QAEvBC,GACZ,EACcG,EAAe9lE,GAAU,CAC3BwlE,EAAY,GACZ,OAAO,oBAAoB,YAAaM,CAAW,EACnD,OAAO,oBAAoB,gBAAiBA,CAAW,EACnDL,IACAA,EAAmB,GACnBI,EAAS7lE,CAAK,EAE9B,EACc+lE,EAAgB,IAAM,CACxBP,EAAY,GACZ,OAAO,iBAAiB,YAAaM,EAAaV,CAAY,EAC9D,OAAO,iBAAiB,gBAAiBU,EAAaV,CAAY,CAC9E,EACcQ,EAAkBI,GAAe,CACnC,GAAIA,EAAW,cAAgB,QAE/B,IAAIR,EAAW,CACXC,EAAmB,GACnB,MACH,CACDI,EAASG,CAAU,EAC/B,EACcC,EAAkBC,GAAe,CACnC,GAAI,CAACb,GAAaa,CAAU,EACxB,OACJT,EAAmB,GACnB,MAAMU,EAAaZ,EAAa1gF,EAASqhF,CAAU,EAC/C,OAAOC,GAAe,aAE1BT,EAAmBS,EACnBthF,EAAQ,iBAAiB,eAAgB+gF,EAAgBR,CAAY,EACjF,EACQvgF,EAAQ,iBAAiB,eAAgBohF,EAAgBb,CAAY,EACrEvgF,EAAQ,iBAAiB,cAAekhF,EAAeX,CAAY,CAC3E,CAAK,EACMnI,CACX,CC3DA,MAAMmJ,GAAgB,CAACh6E,EAAQ6uC,IACtBA,EAGI7uC,IAAW6uC,EACT,GAGAmrC,GAAch6E,EAAQ6uC,EAAM,aAAa,EANzC,GCTTorC,GAAoBrmE,GAClBA,EAAM,cAAgB,QACf,OAAOA,EAAM,QAAW,UAAYA,EAAM,QAAU,EAWpDA,EAAM,YAAc,GCb7BsmE,GAA6B,IAAI,IAAI,CACvC,SACA,QACA,SACA,WACA,GACJ,CAAC,EAKD,SAASC,GAA4B1hF,EAAS,CAC1C,OAAQyhF,GAA2B,IAAIzhF,EAAQ,OAAO,GAClDA,EAAQ,oBAAsB,EACtC,CACA,MAAM2hF,GAAoB,IAAI,IAAI,CAAC,QAAS,SAAU,UAAU,CAAC,EAYjE,SAASC,GAAmB5hF,EAAS,CACjC,OAAQ2hF,GAAkB,IAAI3hF,EAAQ,OAAO,GACzCA,EAAQ,oBAAsB,EACtC,CC9BA,MAAM6hF,GAAa,IAAI,QCKvB,SAASC,GAAaj8C,EAAU,CAC5B,OAAQ1qB,GAAU,CACVA,EAAM,MAAQ,SAElB0qB,EAAS1qB,CAAK,CACtB,CACA,CACA,SAAS4mE,GAAiBznF,EAAQ4B,EAAM,CACpC5B,EAAO,cAAc,IAAI,aAAa,UAAY4B,EAAM,CAAE,UAAW,GAAM,QAAS,EAAI,CAAE,CAAC,CAC/F,CACA,MAAM8lF,GAAsB,CAACC,EAAY1B,IAAiB,CACtD,MAAMvgF,EAAUiiF,EAAW,cAC3B,GAAI,CAACjiF,EACD,OACJ,MAAMkiF,EAAgBJ,GAAa,IAAM,CACrC,GAAID,GAAW,IAAI7hF,CAAO,EACtB,OACJ+hF,GAAiB/hF,EAAS,MAAM,EAChC,MAAMmiF,EAAcL,GAAa,IAAM,CACnCC,GAAiB/hF,EAAS,IAAI,CAC1C,CAAS,EACKoiF,EAAa,IAAML,GAAiB/hF,EAAS,QAAQ,EAC3DA,EAAQ,iBAAiB,QAASmiF,EAAa5B,CAAY,EAC3DvgF,EAAQ,iBAAiB,OAAQoiF,EAAY7B,CAAY,CACjE,CAAK,EACDvgF,EAAQ,iBAAiB,UAAWkiF,EAAe3B,CAAY,EAI/DvgF,EAAQ,iBAAiB,OAAQ,IAAMA,EAAQ,oBAAoB,UAAWkiF,CAAa,EAAG3B,CAAY,CAC9G,ECtBA,SAAS8B,GAAkBlnE,EAAO,CAC9B,OAAOqmE,GAAiBrmE,CAAK,GAAK,CAACglE,GAAY,CACnD,CACA,MAAMmC,GAA2B,IAAI,QAoBrC,SAASt5B,GAAMu5B,EAAkBC,EAAcpmF,EAAU,CAAA,EAAI,CACzD,KAAM,CAACqmF,EAASlC,EAAcmC,CAAY,EAAIrC,GAAakC,EAAkBnmF,CAAO,EAC9EumF,EAAcC,GAAe,CAC/B,MAAMtoF,EAASsoF,EAAW,cAG1B,GAFI,CAACP,GAAkBO,CAAU,GAE7BN,GAAyB,IAAIM,CAAU,EACvC,OACJf,GAAW,IAAIvnF,CAAM,EACjB8B,EAAQ,iBACRkmF,GAAyB,IAAIM,CAAU,EAE3C,MAAMC,EAAaL,EAAaloF,EAAQsoF,CAAU,EAO5CE,EAAkB,CAAE,GAAGvC,EAAc,QAAS,EAAI,EAClDwC,EAAe,CAACC,EAAUC,IAAY,CACxC,OAAO,oBAAoB,YAAahC,EAAa6B,CAAe,EACpE,OAAO,oBAAoB,gBAAiBI,EAAiBJ,CAAe,EACxEjB,GAAW,IAAIvnF,CAAM,GACrBunF,GAAW,OAAOvnF,CAAM,EAEvB+nF,GAAkBW,CAAQ,GAG3B,OAAOH,GAAe,YACtBA,EAAWG,EAAU,CAAE,QAAAC,CAAO,CAAE,CAEhD,EACchC,EAAekC,GAAY,CAC7BJ,EAAaI,EAAS7oF,IAAW,QAC7BA,IAAW,UACX8B,EAAQ,iBACRmlF,GAAcjnF,EAAQ6oF,EAAQ,MAAM,CAAC,CACrD,EACcD,EAAmBE,GAAgB,CACrCL,EAAaK,EAAa,EAAK,CAC3C,EACQ,OAAO,iBAAiB,YAAanC,EAAa6B,CAAe,EACjE,OAAO,iBAAiB,gBAAiBI,EAAiBJ,CAAe,CACjF,EACI,OAAAL,EAAQ,QAASnoF,GAAW,EACE8B,EAAQ,gBAAkB,OAAS9B,GAC3C,iBAAiB,cAAeqoF,EAAYpC,CAAY,EACtER,GAAczlF,CAAM,IACpBA,EAAO,iBAAiB,QAAU6gB,GAAU6mE,GAAoB7mE,EAAOolE,CAAY,CAAC,EAChF,CAACmB,GAA4BpnF,CAAM,GACnC,CAACA,EAAO,aAAa,UAAU,IAC/BA,EAAO,SAAW,GAGlC,CAAK,EACMooF,CACX,CCvFA,SAASW,GAAarjF,EAAS,CAC3B,OAAOk+D,GAASl+D,CAAO,GAAK,oBAAqBA,CACrD,CCLA,MAAMsjF,GAAiB,IAAI,QAC3B,IAAIh4E,GACJ,MAAMi4E,GAAU,CAACC,EAAeC,EAASC,IAAa,CAACppF,EAAQqpF,IACvDA,GAAiBA,EAAc,CAAC,EACzBA,EAAc,CAAC,EAAGH,EAAgB,MAAM,EAE1CH,GAAa/oF,CAAM,GAAK,YAAaA,EACnCA,EAAO,UAAUmpF,CAAO,EAGxBnpF,EAAOopF,CAAQ,EAGxBE,GAAyBL,GAAQ,SAAU,QAAS,aAAa,EACjEM,GAA0BN,GAAQ,QAAS,SAAU,cAAc,EACzE,SAASO,GAAa,CAAE,OAAAxpF,EAAQ,cAAAqpF,GAAiB,CAC7CL,GAAe,IAAIhpF,CAAM,GAAG,QAASuN,GAAY,CAC7CA,EAAQvN,EAAQ,CACZ,IAAI,OAAQ,CACR,OAAOspF,GAAStpF,EAAQqpF,CAAa,CACxC,EACD,IAAI,QAAS,CACT,OAAOE,GAAUvpF,EAAQqpF,CAAa,CACzC,CACb,CAAS,CACT,CAAK,CACL,CACA,SAASI,GAAUrmC,EAAS,CACxBA,EAAQ,QAAQomC,EAAY,CAChC,CACA,SAASE,IAAuB,CACxB,OAAO,eAAmB,MAE9B14E,GAAW,IAAI,eAAey4E,EAAS,EAC3C,CACA,SAASE,GAAc3pF,EAAQuN,EAAS,CAC/ByD,IACD04E,KACJ,MAAMnE,EAAWH,GAAgBplF,CAAM,EACvC,OAAAulF,EAAS,QAAS7/E,GAAY,CAC1B,IAAIkkF,EAAkBZ,GAAe,IAAItjF,CAAO,EAC3CkkF,IACDA,EAAkB,IAAI,IACtBZ,GAAe,IAAItjF,EAASkkF,CAAe,GAE/CA,EAAgB,IAAIr8E,CAAO,EAC3ByD,IAAU,QAAQtL,CAAO,CACjC,CAAK,EACM,IAAM,CACT6/E,EAAS,QAAS7/E,GAAY,CAC1B,MAAMkkF,EAAkBZ,GAAe,IAAItjF,CAAO,EAClDkkF,GAAiB,OAAOr8E,CAAO,EAC1Bq8E,GAAiB,MAClB54E,IAAU,UAAUtL,CAAO,CAE3C,CAAS,CACT,CACA,CC5DA,MAAMmkF,GAAkB,IAAI,IAC5B,IAAIC,GACJ,SAASC,IAA4B,CACjCD,GAAsB,IAAM,CACxB,MAAM9rB,EAAO,CACT,IAAI,OAAQ,CACR,OAAO,OAAO,UACjB,EACD,IAAI,QAAS,CACT,OAAO,OAAO,WACjB,CACb,EACQ6rB,GAAgB,QAASt+C,GAAaA,EAASyyB,CAAI,CAAC,CAC5D,EACI,OAAO,iBAAiB,SAAU8rB,EAAmB,CACzD,CACA,SAASE,GAAaz+C,EAAU,CAC5B,OAAAs+C,GAAgB,IAAIt+C,CAAQ,EACvBu+C,IACDC,KACG,IAAM,CACTF,GAAgB,OAAOt+C,CAAQ,EAC3B,CAACs+C,GAAgB,MACjB,OAAOC,IAAwB,aAC/B,OAAO,oBAAoB,SAAUA,EAAmB,EACxDA,GAAsB,OAElC,CACA,CCzBA,SAAS3mC,GAAOz5E,EAAG8Z,EAAG,CAClB,OAAO,OAAO9Z,GAAM,WAAasgH,GAAatgH,CAAC,EAAIigH,GAAcjgH,EAAG8Z,CAAC,CACzE,CCHA,SAASymG,GAAgBj+C,EAAQirC,EAAU,CACvC,IAAIiT,EACJ,MAAMC,EAAU,IAAM,CAClB,KAAM,CAAE,YAAAvL,CAAa,EAAG3H,EAElBxoC,GADamwC,IAAgB,KAAO,EAAIA,EAAY,OAC5B,IAC1BsL,IAAiBz7C,GACjBzC,EAAOyC,CAAQ,EAEnBy7C,EAAez7C,CACvB,EACI,OAAAsT,GAAM,UAAUooC,EAAS,EAAI,EACtB,IAAMvhB,GAAYuhB,CAAO,CACpC,CCTA,SAASC,GAAgB1kF,EAAS,CAC9B,OAAOqjF,GAAarjF,CAAO,GAAKA,EAAQ,UAAY,KACxD,CCNA,SAASkwB,MAAapoB,EAAM,CACxB,MAAM68E,EAAe,CAAC,MAAM,QAAQ78E,EAAK,CAAC,CAAC,EACrC88E,EAAYD,EAAe,EAAI,GAC/BE,EAAa/8E,EAAK,EAAI88E,CAAS,EAC/BE,EAAah9E,EAAK,EAAI88E,CAAS,EAC/BG,EAAcj9E,EAAK,EAAI88E,CAAS,EAChCxoF,EAAU0L,EAAK,EAAI88E,CAAS,EAC5BpW,EAAeJ,GAAY0W,EAAYC,EAAa3oF,CAAO,EACjE,OAAOuoF,EAAenW,EAAaqW,CAAU,EAAIrW,CACrD,CC4BA,SAASwW,GAAa/jF,EAAO8I,EAAQ3N,EAAU,CAAA,EAAI,CAC/C,MAAM8zD,EAAejvD,EAAM,MAC3B,IAAIgkF,EAAkB,KAClBC,EAAch1B,EACdi1B,EACJ,MAAMngB,EAAO,OAAO9U,GAAiB,SAC/BA,EAAa,QAAQ,UAAW,EAAE,EAClC,OACAk1B,EAAgB,IAAM,CACpBH,IACAA,EAAgB,KAAI,EACpBA,EAAkB,MAEtBhkF,EAAM,UAAY,MAC1B,EACUy4E,EAAiB,IAAM,CACzB,MAAMtF,EAAeiR,GAASpkF,EAAM,IAAK,CAAA,EACnCqkF,EAAcD,GAASH,CAAW,EAExC,GAAI9Q,IAAiBkR,EAAa,CAC9BF,IACA,MACH,CAID,MAAMrmB,EAAWkmB,EACXA,EAAgB,qBAAsB,EACtChkF,EAAM,YAAW,EACvBmkF,IACAH,EAAkB,IAAIhV,GAAY,CAC9B,UAAW,CAACmE,EAAckR,CAAW,EACrC,SAAAvmB,EAEA,KAAM,SACN,UAAW,KACX,UAAW,IACX,GAAG3iE,EACH,SAAU+oF,CACtB,CAAS,CACT,EAGUI,EAAoB,IAAM,CAC5B7L,IACAz4E,EAAM,UAAYgkF,GAAmB,OACrChkF,EAAM,OAAU,gBAAgB,OAAM,EACtCgkF,GAAiB,KAAK,IAAM,CACxBhkF,EAAM,UAAY,OAClBA,EAAM,OAAU,mBAAmB,OAAM,CACrD,CAAS,CACT,EAMI,GALAA,EAAM,OAAO,CAAC5qB,EAAGmvG,IAAQ,CACrBN,EAAc7uG,EACd8uG,EAAgB1X,GAAW+X,EAAIC,GAAWhY,EAAQzI,CAAI,CAAC,EACvD3oB,GAAM,WAAWkpC,CAAiB,CACrC,EAAEH,CAAa,EACZxJ,GAAc7xE,CAAM,EAAG,CACvB,IAAI27E,EAAoBtpF,EAAQ,uBAAyB,GACzD,MAAMupF,EAAuB57E,EAAO,GAAG,SAAW1zB,GAAM,CAChDqvG,GACAA,EAAoB,GACpBzkF,EAAM,KAAKwkF,GAAWpvG,EAAG2uF,CAAI,EAAG,EAAK,GAGrC/jE,EAAM,IAAIwkF,GAAWpvG,EAAG2uF,CAAI,CAAC,CAE7C,CAAS,EACK4gB,EAAuB3kF,EAAM,GAAG,UAAW0kF,CAAoB,EACrE,MAAO,IAAM,CACTA,IACAC,GACZ,CACK,CACD,OAAOR,CACX,CACA,SAASK,GAAWpvG,EAAG2uF,EAAM,CACzB,OAAOA,EAAO3uF,EAAI2uF,EAAO3uF,CAC7B,CACA,SAASgvG,GAAShvG,EAAG,CACjB,OAAO,OAAOA,GAAM,SAAWA,EAAI,WAAWA,CAAC,CACnD,CChHA,MAAMwvG,GAAa,CAAC,GAAG/H,GAAqB/uD,GAAOk4C,EAAO,EAIpD6e,GAAiBzvG,GAAMwvG,GAAW,KAAKhI,GAAcxnG,CAAC,CAAC,ECZvD0vG,GAAkB,KAAO,CAC3B,UAAW,EACX,MAAO,EACP,OAAQ,EACR,YAAa,CACjB,GACMC,GAAc,KAAO,CACvB,EAAGD,GAAiB,EACpB,EAAGA,GAAiB,CACxB,GACME,GAAa,KAAO,CAAE,IAAK,EAAG,IAAK,CAAC,GACpCC,GAAY,KAAO,CACrB,EAAGD,GAAY,EACf,EAAGA,GAAY,CACnB,GCdME,GAAqB,IAAI,QCA/B,SAASC,GAAoB/vG,EAAG,CAC5B,OAAQA,IAAM,MACV,OAAOA,GAAM,UACb,OAAOA,EAAE,OAAU,UAC3B,CCDA,SAASgwG,GAAehwG,EAAG,CACvB,OAAO,OAAOA,GAAM,UAAY,MAAM,QAAQA,CAAC,CACnD,CCLA,MAAMiwG,GAAuB,CACzB,UACA,cACA,aACA,aACA,WACA,YACA,MACJ,EACMC,GAAe,CAAC,UAAW,GAAGD,EAAoB,ECLxD,SAASE,GAAsBr4B,EAAO,CAClC,OAAQi4B,GAAoBj4B,EAAM,OAAO,GACrCo4B,GAAa,KAAM9lF,GAAS4lF,GAAel4B,EAAM1tD,CAAI,CAAC,CAAC,CAC/D,CACA,SAASgmF,GAAct4B,EAAO,CAC1B,MAAO,GAAQq4B,GAAsBr4B,CAAK,GAAKA,EAAM,SACzD,CCHA,SAASu4B,GAA4B1mF,EAASyI,EAAMgB,EAAM,CACtD,UAAWtI,KAAOsH,EAAM,CACpB,MAAMk+E,EAAYl+E,EAAKtH,CAAG,EACpBylF,EAAYn9E,EAAKtI,CAAG,EAC1B,GAAIy6E,GAAc+K,CAAS,EAKvB3mF,EAAQ,SAASmB,EAAKwlF,CAAS,UAE1B/K,GAAcgL,CAAS,EAK5B5mF,EAAQ,SAASmB,EAAK+uE,GAAYyW,EAAW,CAAE,MAAO3mF,CAAS,CAAA,CAAC,UAE3D4mF,IAAcD,EAMnB,GAAI3mF,EAAQ,SAASmB,CAAG,EAAG,CACvB,MAAM0lF,EAAgB7mF,EAAQ,SAASmB,CAAG,EACtC0lF,EAAc,YAAc,GAC5BA,EAAc,KAAKF,CAAS,EAEtBE,EAAc,aACpBA,EAAc,IAAIF,CAAS,CAElC,KACI,CACD,MAAMzB,EAAcllF,EAAQ,eAAemB,CAAG,EAC9CnB,EAAQ,SAASmB,EAAK+uE,GAAYgV,IAAgB,OAAYA,EAAcyB,EAAW,CAAE,MAAO3mF,CAAO,CAAE,CAAC,CAC7G,CAER,CAED,UAAWmB,KAAOsI,EACVhB,EAAKtH,CAAG,IAAM,QACdnB,EAAQ,YAAYmB,CAAG,EAE/B,OAAOsH,CACX,CCnDA,MAAMq+E,GAAuB,CAAE,QAAS,MAClCC,GAA2B,CAAE,QAAS,EAAO,ECA7CC,GAAY,OAAO,OAAW,IACpC,SAASC,IAA2B,CAEhC,GADAF,GAAyB,QAAU,GAC/B,EAACC,GAEL,GAAI,OAAO,WAAY,CACnB,MAAME,EAAmB,OAAO,WAAW,0BAA0B,EAC/DC,EAA8B,IAAOL,GAAqB,QAAUI,EAAiB,QAC3FA,EAAiB,iBAAiB,SAAUC,CAA2B,EACvEA,GACH,MAEGL,GAAqB,QAAU,EAEvC,CCKA,MAAMM,GAAoB,CACtB,iBACA,oBACA,SACA,sBACA,gBACA,uBACA,yBACJ,EAIA,IAAIC,GAAqB,CAAA,EAKzB,SAASC,GAAsBC,EAAa,CACxCF,GAAqBE,CACzB,CAIA,SAASC,IAAwB,CAC7B,OAAOH,EACX,CAKA,MAAMI,EAAc,CAQhB,4BAA4BC,EAAQC,EAAYC,EAAgB,CAC5D,MAAO,EACV,CACD,YAAY,CAAE,OAAArgF,EAAQ,MAAA4mD,EAAO,gBAAA05B,EAAiB,oBAAAC,EAAqB,eAAAjL,EAAgB,sBAAAkL,EAAuB,YAAAC,GAAgB5rF,EAAU,CAAA,EAAI,CAKpI,KAAK,QAAU,KAIf,KAAK,SAAW,IAAI,IAIpB,KAAK,cAAgB,GACrB,KAAK,sBAAwB,GAQ7B,KAAK,mBAAqB,KAK1B,KAAK,qBAAuB,GAM5B,KAAK,OAAS,IAAI,IAClB,KAAK,iBAAmB63E,GAIxB,KAAK,SAAW,GAKhB,KAAK,mBAAqB,IAAI,IAM9B,KAAK,iBAAmB,GAKxB,KAAK,eAAiB,GAItB,KAAK,OAAS,GAMd,KAAK,uBAAyB,GAC9B,KAAK,aAAe,IAAM,KAAK,OAAO,SAAU,KAAK,YAAY,EACjE,KAAK,OAAS,IAAM,CACX,KAAK,UAEV,KAAK,aAAY,EACjB,KAAK,eAAe,KAAK,QAAS,KAAK,YAAa,KAAK,MAAM,MAAO,KAAK,UAAU,EACjG,EACQ,KAAK,kBAAoB,EACzB,KAAK,eAAiB,IAAM,CACxB,MAAM1nE,EAAM+3B,GAAK,MACb,KAAK,kBAAoB/3B,IACzB,KAAK,kBAAoBA,EACzB8vC,GAAM,OAAO,KAAK,OAAQ,GAAO,EAAI,EAErD,EACQ,KAAM,CAAE,aAAA4rC,EAAc,YAAAC,CAAa,EAAGF,EACtC,KAAK,aAAeC,EACpB,KAAK,WAAa,CAAE,GAAGA,GACvB,KAAK,cAAgB95B,EAAM,QAAU,CAAE,GAAG85B,CAAc,EAAG,GAC3D,KAAK,YAAcC,EACnB,KAAK,OAAS3gF,EACd,KAAK,MAAQ4mD,EACb,KAAK,gBAAkB05B,EACvB,KAAK,MAAQtgF,EAASA,EAAO,MAAQ,EAAI,EACzC,KAAK,oBAAsBugF,EAC3B,KAAK,qBAAuBjL,EAC5B,KAAK,QAAUzgF,EACf,KAAK,sBAAwB,EAAQ2rF,EACrC,KAAK,sBAAwBvB,GAAsBr4B,CAAK,EACxD,KAAK,cAAgBs4B,GAAct4B,CAAK,EACpC,KAAK,gBACL,KAAK,gBAAkB,IAAI,KAE/B,KAAK,uBAAyB,GAAQ5mD,GAAUA,EAAO,SAWvD,KAAM,CAAE,WAAAw0E,EAAY,GAAGoM,GAAwB,KAAK,4BAA4Bh6B,EAAO,GAAI,IAAI,EAC/F,UAAWhtD,KAAOgnF,EAAqB,CACnC,MAAMlnF,EAAQknF,EAAoBhnF,CAAG,EACjC8mF,EAAa9mF,CAAG,IAAM,QAAay6E,GAAc36E,CAAK,GACtDA,EAAM,IAAIgnF,EAAa9mF,CAAG,CAAC,CAElC,CACJ,CACD,MAAMyE,EAAU,CAMZ,GAAI,KAAK,eACL,UAAWzE,KAAO,KAAK,cACnB,KAAK,OAAO,IAAIA,CAAG,GAAG,KAAK,KAAK,cAAcA,CAAG,CAAC,EAClD,KAAK,aAAaA,CAAG,EAAI,KAAK,cAAcA,CAAG,EAGvD,KAAK,QAAUyE,EACfugF,GAAmB,IAAIvgF,EAAU,IAAI,EACjC,KAAK,YAAc,CAAC,KAAK,WAAW,UACpC,KAAK,WAAW,MAAMA,CAAQ,EAE9B,KAAK,QAAU,KAAK,eAAiB,CAAC,KAAK,wBAC3C,KAAK,sBAAwB,KAAK,OAAO,gBAAgB,IAAI,GAEjE,KAAK,OAAO,QAAQ,CAAC3E,EAAOE,IAAQ,KAAK,kBAAkBA,EAAKF,CAAK,CAAC,EAMlE,KAAK,sBAAwB,QAC7B,KAAK,mBAAqB,GAErB,KAAK,sBAAwB,SAClC,KAAK,mBAAqB,IAGrB8lF,GAAyB,SAC1BE,KAEJ,KAAK,mBAAqBH,GAAqB,SAE/C,CAAW,EAAC,WAAa,cACzB7nB,GAAS,KAAK,qBAAuB,GAAM,yFAA0F,yBAAyB,EAKlK,KAAK,qBAAuB,KAAK,sBAAwB,GACzD,KAAK,QAAQ,SAAS,IAAI,EAC1B,KAAK,OAAO,KAAK,MAAO,KAAK,eAAe,EAC5C,KAAK,eAAiB,EACzB,CACD,SAAU,CACN,KAAK,YAAc,KAAK,WAAW,QAAO,EAC1CiE,GAAY,KAAK,YAAY,EAC7BA,GAAY,KAAK,MAAM,EACvB,KAAK,mBAAmB,QAAS1uD,GAAWA,EAAQ,CAAA,EACpD,KAAK,mBAAmB,QACxB,KAAK,uBAAyB,KAAK,wBACnC,KAAK,QAAQ,YAAY,IAAI,EAC7B,UAAWrT,KAAO,KAAK,OACnB,KAAK,OAAOA,CAAG,EAAE,MAAK,EAE1B,UAAWA,KAAO,KAAK,SAAU,CAC7B,MAAMinF,EAAU,KAAK,SAASjnF,CAAG,EAC7BinF,IACAA,EAAQ,QAAO,EACfA,EAAQ,UAAY,GAE3B,CACD,KAAK,QAAU,IAClB,CACD,SAAShyC,EAAO,CACZ,KAAK,SAAS,IAAIA,CAAK,EACvB,KAAK,mBAAqB,KAAK,iBAAmB,IAAI,KACtD,KAAK,iBAAiB,IAAIA,CAAK,CAClC,CACD,YAAYA,EAAO,CACf,KAAK,SAAS,OAAOA,CAAK,EAC1B,KAAK,kBAAoB,KAAK,iBAAiB,OAAOA,CAAK,CAC9D,CACD,kBAAkBj1C,EAAKF,EAAO,CAI1B,GAHI,KAAK,mBAAmB,IAAIE,CAAG,GAC/B,KAAK,mBAAmB,IAAIA,CAAG,EAAC,EAEhCF,EAAM,YACN61E,GAAkB,IAAI31E,CAAG,GACzB,KAAK,mBAAmB,YAAa,CACrC,KAAM,CAAE,QAAAnI,EAAS,UAAA6zE,EAAW,MAAApnC,EAAO,KAAA86B,EAAM,SAAArnD,CAAU,EAAGjY,EAAM,WACtD+2E,EAAY,IAAIvC,GAAgB,CAClC,QAAS,KAAK,QACd,KAAMt0E,EACN,UAAA0rE,EACA,MAAApnC,EACA,KAAA86B,EACA,SAAU5B,GAAsBzlD,CAAQ,CACxD,CAAa,EACK63C,EAAU/3D,EAAQg/E,CAAS,EACjC,KAAK,mBAAmB,IAAI72E,EAAK,IAAM,CACnC4vD,IACAinB,EAAU,OAAM,CAChC,CAAa,EACD,MACH,CACD,MAAMqQ,EAAmB9V,GAAe,IAAIpxE,CAAG,EAC3CknF,GAAoB,KAAK,iBACzB,KAAK,gBAAe,EAExB,MAAMC,EAAiBrnF,EAAM,GAAG,SAAWikF,GAAgB,CACvD,KAAK,aAAa/jF,CAAG,EAAI+jF,EACzB,KAAK,MAAM,UAAY7oC,GAAM,UAAU,KAAK,YAAY,EACpDgsC,GAAoB,KAAK,aACzB,KAAK,WAAW,iBAAmB,IAEvC,KAAK,eAAc,CAC/B,CAAS,EACD,IAAIE,EACA,OAAO,OAAW,KAClB,OAAO,wBACPA,EAAkB,OAAO,sBAAsB,KAAMpnF,EAAKF,CAAK,GAEnE,KAAK,mBAAmB,IAAIE,EAAK,IAAM,CACnCmnF,IACIC,GACAA,GAGhB,CAAS,CACJ,CACD,iBAAiBC,EAAO,CAIpB,MAAI,CAAC,KAAK,SACN,CAAC,KAAK,0BACN,KAAK,OAASA,EAAM,KACb,EAEJ,KAAK,yBAAyB,KAAK,QAASA,EAAM,OAAO,CACnE,CACD,gBAAiB,CACb,IAAIrnF,EAAM,YACV,IAAKA,KAAOkmF,GAAoB,CAC5B,MAAMoB,EAAoBpB,GAAmBlmF,CAAG,EAChD,GAAI,CAACsnF,EACD,SACJ,KAAM,CAAE,UAAAC,EAAW,QAASC,CAAkB,EAAKF,EAYnD,GARI,CAAC,KAAK,SAAStnF,CAAG,GAClBwnF,GACAD,EAAU,KAAK,KAAK,IACpB,KAAK,SAASvnF,CAAG,EAAI,IAAIwnF,EAAmB,IAAI,GAKhD,KAAK,SAASxnF,CAAG,EAAG,CACpB,MAAMinF,EAAU,KAAK,SAASjnF,CAAG,EAC7BinF,EAAQ,UACRA,EAAQ,OAAM,GAGdA,EAAQ,MAAK,EACbA,EAAQ,UAAY,GAE3B,CACJ,CACJ,CACD,cAAe,CACX,KAAK,MAAM,KAAK,YAAa,KAAK,aAAc,KAAK,KAAK,CAC7D,CAMD,oBAAqB,CACjB,OAAO,KAAK,QACN,KAAK,2BAA2B,KAAK,QAAS,KAAK,KAAK,EACxDlC,IACT,CACD,eAAe/kF,EAAK,CAChB,OAAO,KAAK,aAAaA,CAAG,CAC/B,CACD,eAAeA,EAAKF,EAAO,CACvB,KAAK,aAAaE,CAAG,EAAIF,CAC5B,CAKD,OAAOktD,EAAO05B,EAAiB,EACvB15B,EAAM,mBAAqB,KAAK,MAAM,oBACtC,KAAK,eAAc,EAEvB,KAAK,UAAY,KAAK,MACtB,KAAK,MAAQA,EACb,KAAK,oBAAsB,KAAK,gBAChC,KAAK,gBAAkB05B,EAIvB,QAASnpH,EAAI,EAAGA,EAAI0oH,GAAkB,OAAQ1oH,IAAK,CAC/C,MAAMyiC,EAAMimF,GAAkB1oH,CAAC,EAC3B,KAAK,uBAAuByiC,CAAG,IAC/B,KAAK,uBAAuBA,CAAG,IAC/B,OAAO,KAAK,uBAAuBA,CAAG,GAE1C,MAAMynF,EAAgB,KAAOznF,EACvB0nF,EAAW16B,EAAMy6B,CAAY,EAC/BC,IACA,KAAK,uBAAuB1nF,CAAG,EAAI,KAAK,GAAGA,EAAK0nF,CAAQ,EAE/D,CACD,KAAK,iBAAmBnC,GAA4B,KAAM,KAAK,4BAA4Bv4B,EAAO,KAAK,WAAa,CAAA,EAAI,IAAI,EAAG,KAAK,gBAAgB,EAChJ,KAAK,wBACL,KAAK,uBAAsB,CAElC,CACD,UAAW,CACP,OAAO,KAAK,KACf,CAID,WAAW1tD,EAAM,CACb,OAAO,KAAK,MAAM,SAAW,KAAK,MAAM,SAASA,CAAI,EAAI,MAC5D,CAID,sBAAuB,CACnB,OAAO,KAAK,MAAM,UACrB,CACD,uBAAwB,CACpB,OAAO,KAAK,MAAM,kBACrB,CACD,uBAAwB,CACpB,OAAO,KAAK,cACN,KACA,KAAK,OACD,KAAK,OAAO,sBAAuB,EACnC,MACb,CAID,gBAAgB21C,EAAO,CACnB,MAAM0yC,EAAqB,KAAK,wBAChC,GAAIA,EACA,OAAAA,EAAmB,iBACfA,EAAmB,gBAAgB,IAAI1yC,CAAK,EACzC,IAAM0yC,EAAmB,gBAAgB,OAAO1yC,CAAK,CAEnE,CAID,SAASj1C,EAAKF,EAAO,CAEjB,MAAM4lF,EAAgB,KAAK,OAAO,IAAI1lF,CAAG,EACrCF,IAAU4lF,IACNA,GACA,KAAK,YAAY1lF,CAAG,EACxB,KAAK,kBAAkBA,EAAKF,CAAK,EACjC,KAAK,OAAO,IAAIE,EAAKF,CAAK,EAC1B,KAAK,aAAaE,CAAG,EAAIF,EAAM,IAAG,EAEzC,CAID,YAAYE,EAAK,CACb,KAAK,OAAO,OAAOA,CAAG,EACtB,MAAMk4E,EAAc,KAAK,mBAAmB,IAAIl4E,CAAG,EAC/Ck4E,IACAA,IACA,KAAK,mBAAmB,OAAOl4E,CAAG,GAEtC,OAAO,KAAK,aAAaA,CAAG,EAC5B,KAAK,2BAA2BA,EAAK,KAAK,WAAW,CACxD,CAID,SAASA,EAAK,CACV,OAAO,KAAK,OAAO,IAAIA,CAAG,CAC7B,CACD,SAASA,EAAK8M,EAAc,CACxB,GAAI,KAAK,MAAM,QAAU,KAAK,MAAM,OAAO9M,CAAG,EAC1C,OAAO,KAAK,MAAM,OAAOA,CAAG,EAEhC,IAAIF,EAAQ,KAAK,OAAO,IAAIE,CAAG,EAC/B,OAAIF,IAAU,QAAagN,IAAiB,SACxChN,EAAQivE,GAAYjiE,IAAiB,KAAO,OAAYA,EAAc,CAAE,MAAO,IAAI,CAAE,EACrF,KAAK,SAAS9M,EAAKF,CAAK,GAErBA,CACV,CAMD,UAAUE,EAAK7G,EAAQ,CACnB,IAAI2G,EAAQ,KAAK,aAAaE,CAAG,IAAM,QAAa,CAAC,KAAK,QACpD,KAAK,aAAaA,CAAG,EACrB,KAAK,uBAAuB,KAAK,MAAOA,CAAG,GACzC,KAAK,sBAAsB,KAAK,QAASA,EAAK,KAAK,OAAO,EAClE,OAA2BF,GAAU,OAC7B,OAAOA,GAAU,WAChBg9D,GAAkBh9D,CAAK,GAAKk9D,GAAkBl9D,CAAK,GAEpDA,EAAQ,WAAWA,CAAK,EAEnB,CAAC6kF,GAAc7kF,CAAK,GAAKgmE,GAAQ,KAAK3sE,CAAM,IACjD2G,EAAQ+lE,GAAkB7lE,EAAK7G,CAAM,GAEzC,KAAK,cAAc6G,EAAKy6E,GAAc36E,CAAK,EAAIA,EAAM,MAAQA,CAAK,GAE/D26E,GAAc36E,CAAK,EAAIA,EAAM,IAAG,EAAKA,CAC/C,CAKD,cAAcE,EAAKF,EAAO,CACtB,KAAK,WAAWE,CAAG,EAAIF,CAC1B,CAKD,cAAcE,EAAK,CACf,KAAM,CAAE,QAAA4nF,CAAO,EAAK,KAAK,MACzB,IAAIC,EACJ,GAAI,OAAOD,GAAY,UAAY,OAAOA,GAAY,SAAU,CAC5D,MAAM3L,EAAUjC,GAAwB,KAAK,MAAO4N,EAAS,KAAK,iBAAiB,MAAM,EACrF3L,IACA4L,EAAmB5L,EAAQj8E,CAAG,EAErC,CAID,GAAI4nF,GAAWC,IAAqB,OAChC,OAAOA,EAMX,MAAM1uF,EAAS,KAAK,uBAAuB,KAAK,MAAO6G,CAAG,EAC1D,OAAI7G,IAAW,QAAa,CAACshF,GAActhF,CAAM,EACtCA,EAKJ,KAAK,cAAc6G,CAAG,IAAM,QAC/B6nF,IAAqB,OACnB,OACA,KAAK,WAAW7nF,CAAG,CAC5B,CACD,GAAG8S,EAAW4xB,EAAU,CACpB,OAAK,KAAK,OAAO5xB,CAAS,IACtB,KAAK,OAAOA,CAAS,EAAI,IAAIwqD,IAE1B,KAAK,OAAOxqD,CAAS,EAAE,IAAI4xB,CAAQ,CAC7C,CACD,OAAO5xB,KAAcnM,EAAM,CACnB,KAAK,OAAOmM,CAAS,GACrB,KAAK,OAAOA,CAAS,EAAE,OAAO,GAAGnM,CAAI,CAE5C,CACD,yBAA0B,CACtBk4E,GAAU,OAAO,KAAK,MAAM,CAC/B,CACL,CCxiBA,MAAMiJ,WAAyBxB,EAAc,CACzC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,iBAAmBxI,EAC3B,CACD,yBAAyBj7G,EAAG8Z,EAAG,CAM3B,OAAO9Z,EAAE,wBAAwB8Z,CAAC,EAAI,EAAI,EAAI,EACjD,CACD,uBAAuBqwE,EAAOhtD,EAAK,CAC/B,MAAMU,EAAQssD,EAAM,MACpB,OAAOtsD,EAAQA,EAAMV,CAAG,EAAI,MAC/B,CACD,2BAA2BA,EAAK,CAAE,KAAA+nF,EAAM,MAAArnF,CAAK,EAAI,CAC7C,OAAOqnF,EAAK/nF,CAAG,EACf,OAAOU,EAAMV,CAAG,CACnB,CACD,wBAAyB,CACjB,KAAK,oBACL,KAAK,kBAAiB,EACtB,OAAO,KAAK,mBAEhB,KAAM,CAAE,SAAAitD,CAAQ,EAAK,KAAK,MACtBwtB,GAAcxtB,CAAQ,IACtB,KAAK,kBAAoBA,EAAS,GAAG,SAAWqf,GAAW,CACnD,KAAK,UACL,KAAK,QAAQ,YAAc,GAAGA,CAAM,GAExD,CAAa,EAER,CACL,CClCA,MAAM0b,EAAQ,CACV,YAAYvmF,EAAM,CACd,KAAK,UAAY,GACjB,KAAK,KAAOA,CACf,CACD,QAAS,CAAG,CAChB,CCNA,SAASwmF,GAAwB,CAAE,IAAA3oE,EAAK,KAAAC,EAAM,MAAAkgB,EAAO,OAAAgP,CAAM,EAAK,CAC5D,MAAO,CACH,EAAG,CAAE,IAAKlvB,EAAM,IAAKkgB,CAAO,EAC5B,EAAG,CAAE,IAAKngB,EAAK,IAAKmvB,CAAQ,CACpC,CACA,CACA,SAASy5C,GAAwB,CAAE,EAAA3qG,EAAG,EAAAhX,GAAK,CACvC,MAAO,CAAE,IAAKA,EAAE,IAAK,MAAOgX,EAAE,IAAK,OAAQhX,EAAE,IAAK,KAAMgX,EAAE,GAAG,CACjE,CAMA,SAAS4qG,GAAmBpqD,EAAOqqD,EAAgB,CAC/C,GAAI,CAACA,EACD,OAAOrqD,EACX,MAAMsqD,EAAUD,EAAe,CAAE,EAAGrqD,EAAM,KAAM,EAAGA,EAAM,GAAG,CAAE,EACxDuqD,EAAcF,EAAe,CAAE,EAAGrqD,EAAM,MAAO,EAAGA,EAAM,MAAM,CAAE,EACtE,MAAO,CACH,IAAKsqD,EAAQ,EACb,KAAMA,EAAQ,EACd,OAAQC,EAAY,EACpB,MAAOA,EAAY,CAC3B,CACA,CC9BA,SAASC,GAAgB7/C,EAAO,CAC5B,OAAOA,IAAU,QAAaA,IAAU,CAC5C,CACA,SAAS8/C,GAAS,CAAE,MAAA9/C,EAAO,OAAAkE,EAAQ,OAAAC,CAAM,EAAI,CACzC,MAAQ,CAAC07C,GAAgB7/C,CAAK,GAC1B,CAAC6/C,GAAgB37C,CAAM,GACvB,CAAC27C,GAAgB17C,CAAM,CAC/B,CACA,SAAS47C,GAAa73E,EAAQ,CAC1B,OAAQ43E,GAAS53E,CAAM,GACnB83E,GAAe93E,CAAM,GACrBA,EAAO,GACPA,EAAO,QACPA,EAAO,SACPA,EAAO,SACPA,EAAO,OACPA,EAAO,KACf,CACA,SAAS83E,GAAe93E,EAAQ,CAC5B,OAAO+3E,GAAc/3E,EAAO,CAAC,GAAK+3E,GAAc/3E,EAAO,CAAC,CAC5D,CACA,SAAS+3E,GAAc7oF,EAAO,CAC1B,OAAOA,GAASA,IAAU,IAC9B,CCjBA,SAAS8oF,GAAW7qD,EAAO2K,EAAOmgD,EAAa,CAC3C,MAAMC,EAAqB/qD,EAAQ8qD,EAC7BE,EAASrgD,EAAQogD,EACvB,OAAOD,EAAcE,CACzB,CAIA,SAASC,GAAgBjrD,EAAOkrD,EAAWvgD,EAAOmgD,EAAaK,EAAU,CACrE,OAAIA,IAAa,SACbnrD,EAAQ6qD,GAAW7qD,EAAOmrD,EAAUL,CAAW,GAE5CD,GAAW7qD,EAAO2K,EAAOmgD,CAAW,EAAII,CACnD,CAIA,SAASE,GAAe96C,EAAM46C,EAAY,EAAGvgD,EAAQ,EAAGmgD,EAAaK,EAAU,CAC3E76C,EAAK,IAAM26C,GAAgB36C,EAAK,IAAK46C,EAAWvgD,EAAOmgD,EAAaK,CAAQ,EAC5E76C,EAAK,IAAM26C,GAAgB36C,EAAK,IAAK46C,EAAWvgD,EAAOmgD,EAAaK,CAAQ,CAChF,CAIA,SAASE,GAAcC,EAAK,CAAE,EAAA9rG,EAAG,EAAAhX,CAAC,EAAI,CAClC4iH,GAAeE,EAAI,EAAG9rG,EAAE,UAAWA,EAAE,MAAOA,EAAE,WAAW,EACzD4rG,GAAeE,EAAI,EAAG9iH,EAAE,UAAWA,EAAE,MAAOA,EAAE,WAAW,CAC7D,CACA,MAAM+iH,GAAsB,cACtBC,GAAsB,gBAO5B,SAASC,GAAgBH,EAAKI,EAAWC,EAAUC,EAAqB,GAAO,CAC3E,MAAMC,EAAaF,EAAS,OAC5B,GAAI,CAACE,EACD,OAEJH,EAAU,EAAIA,EAAU,EAAI,EAC5B,IAAIhoF,EACAmjD,EACJ,QAASrnF,EAAI,EAAGA,EAAIqsH,EAAYrsH,IAAK,CACjCkkC,EAAOioF,EAASnsH,CAAC,EACjBqnF,EAAQnjD,EAAK,gBAKb,KAAM,CAAE,cAAAgwE,CAAa,EAAKhwE,EAAK,QAC3BgwE,GACAA,EAAc,MAAM,OACpBA,EAAc,MAAM,MAAM,UAAY,aAGtCkY,GACAloF,EAAK,QAAQ,cACbA,EAAK,QACLA,IAASA,EAAK,OACdooF,GAAcR,EAAI,EAAG,CAAC5nF,EAAK,OAAO,OAAO,CAAC,EAC1CooF,GAAcR,EAAI,EAAG,CAAC5nF,EAAK,OAAO,OAAO,CAAC,GAE1CmjD,IAEA6kC,EAAU,GAAK7kC,EAAM,EAAE,MACvB6kC,EAAU,GAAK7kC,EAAM,EAAE,MAEvBwkC,GAAcC,EAAKzkC,CAAK,GAExB+kC,GAAsBlB,GAAahnF,EAAK,YAAY,GACpDqoF,GAAaT,EAAK5nF,EAAK,aAAcA,EAAK,QAAQ,SAAS,EAElE,CAKGgoF,EAAU,EAAIF,IACdE,EAAU,EAAIH,KACdG,EAAU,EAAI,GAEdA,EAAU,EAAIF,IACdE,EAAU,EAAIH,KACdG,EAAU,EAAI,EAEtB,CACA,SAASI,GAAcx7C,EAAM3P,EAAU,CACnC2P,EAAK,KAAO3P,EACZ2P,EAAK,KAAO3P,CAChB,CAMA,SAASqrD,GAAc17C,EAAM27C,EAAeC,EAAWf,EAAUgB,EAAa,GAAK,CAC/E,MAAMrB,EAAc3iB,GAAU73B,EAAK,IAAKA,EAAK,IAAK67C,CAAU,EAE5Df,GAAe96C,EAAM27C,EAAeC,EAAWpB,EAAaK,CAAQ,CACxE,CACA,SAASiB,GAAqBrqF,EAAOuuC,EAAM,CACvC,OAAI,OAAOvuC,GAAU,SACT,WAAWA,CAAK,EAAI,KAAQuuC,EAAK,IAAMA,EAAK,KAEjDvuC,CACX,CAIA,SAASgqF,GAAaT,EAAKt6D,EAAWq7D,EAAW,CAC7C,MAAMC,EAAaD,GAAaf,EAChCU,GAAcV,EAAI,EAAGc,GAAqBp7D,EAAU,EAAGs7D,EAAW,CAAC,EAAGt7D,EAAU,OAAQA,EAAU,MAAOA,EAAU,OAAO,EAC1Hg7D,GAAcV,EAAI,EAAGc,GAAqBp7D,EAAU,EAAGs7D,EAAW,CAAC,EAAGt7D,EAAU,OAAQA,EAAU,MAAOA,EAAU,OAAO,CAC9H,CCtHA,SAASu7D,GAAmB7lF,EAAU2jF,EAAgB,CAClD,OAAOH,GAAwBE,GAAmB1jF,EAAS,sBAAuB,EAAE2jF,CAAc,CAAC,CACvG,CACA,SAASmC,GAAe1rF,EAAS2rF,EAAoBC,EAAoB,CACrE,MAAMC,EAAcJ,GAAmBzrF,EAAS4rF,CAAkB,EAC5D,CAAE,OAAAE,CAAQ,EAAGH,EACnB,OAAIG,IACAd,GAAca,EAAY,EAAGC,EAAO,OAAO,CAAC,EAC5Cd,GAAca,EAAY,EAAGC,EAAO,OAAO,CAAC,GAEzCD,CACX,CCVA,MAAME,GAAiB,CACnB,EAAG,aACH,EAAG,aACH,EAAG,aACH,qBAAsB,aAC1B,EACMC,GAAgB1Z,GAAmB,OAOzC,SAAS2Z,GAAehE,EAAc/3D,EAAWknD,EAAmB,CAEhE,IAAI8U,EAAkB,GAClBC,EAAqB,GAKzB,QAASztH,EAAI,EAAGA,EAAIstH,GAAettH,IAAK,CACpC,MAAMyiC,EAAMmxE,GAAmB5zG,CAAC,EAC1BuiC,EAAQgnF,EAAa9mF,CAAG,EAC9B,GAAIF,IAAU,OACV,SACJ,IAAImrF,EAAiB,GACrB,GAAI,OAAOnrF,GAAU,SACjBmrF,EAAiBnrF,KAAWE,EAAI,WAAW,OAAO,EAAI,EAAI,OAEzD,CACD,MAAMukE,EAAS,WAAWzkE,CAAK,EAC/BmrF,EAAiBjrF,EAAI,WAAW,OAAO,EAAIukE,IAAW,EAAIA,IAAW,CACxE,CACD,GAAI,CAAC0mB,GAAkBhV,EAAmB,CACtC,MAAMiV,EAAcvM,GAAe7+E,EAAOs9E,GAAiBp9E,CAAG,CAAC,EAC/D,GAAI,CAACirF,EAAgB,CACjBD,EAAqB,GACrB,MAAMG,EAAgBP,GAAe5qF,CAAG,GAAKA,EAC7C+qF,GAAmB,GAAGI,CAAa,IAAID,CAAW,IACrD,CACGjV,IACAlnD,EAAU/uB,CAAG,EAAIkrF,EAExB,CACJ,CAID,MAAME,EAAetE,EAAa,aAClC,OAAIsE,IACAJ,EAAqB,GACrBD,GAAmB,UAAUpM,GAAeyM,EAAchO,GAAiB,YAAY,CAAC,MAE5F2N,EAAkBA,EAAgB,OAG9B9U,EACA8U,EAAkB9U,EAAkBlnD,EAAWi8D,EAAqB,GAAKD,CAAe,EAEnFC,IACLD,EAAkB,QAEfA,CACX,CC9DA,SAASM,GAAgB/yF,EAAOwuF,EAAc7Q,EAAmB,CAC7D,KAAM,CAAE,MAAAv1E,EAAO,KAAAqnF,EAAM,gBAAAuD,CAAe,EAAKhzF,EAEzC,IAAImwF,EAAe,GACf8C,EAAqB,GAOzB,UAAWvrF,KAAO8mF,EAAc,CAC5B,MAAMhnF,EAAQgnF,EAAa9mF,CAAG,EAC9B,GAAIoxE,GAAe,IAAIpxE,CAAG,EAAG,CAEzByoF,EAAe,GACf,QACH,SACQrmB,GAAkBpiE,CAAG,EAAG,CAC7B+nF,EAAK/nF,CAAG,EAAIF,EACZ,QACH,KACI,CAED,MAAMorF,EAAcvM,GAAe7+E,EAAOs9E,GAAiBp9E,CAAG,CAAC,EAC3DA,EAAI,WAAW,QAAQ,GAEvBurF,EAAqB,GACrBD,EAAgBtrF,CAAG,EACfkrF,GAGJxqF,EAAMV,CAAG,EAAIkrF,CAEpB,CACJ,CAiBD,GAhBKpE,EAAa,YACV2B,GAAgBxS,EAChBv1E,EAAM,UAAYoqF,GAAehE,EAAcxuF,EAAM,UAAW29E,CAAiB,EAE5Ev1E,EAAM,YAKXA,EAAM,UAAY,SAOtB6qF,EAAoB,CACpB,KAAM,CAAE,QAAAC,EAAU,MAAO,QAAAC,EAAU,MAAO,QAAAC,EAAU,CAAI,EAAGJ,EAC3D5qF,EAAM,gBAAkB,GAAG8qF,CAAO,IAAIC,CAAO,IAAIC,CAAO,EAC3D,CACL,CC9DA,SAASC,GAAW9sF,EAAS,CAAE,MAAA6B,EAAO,KAAAqnF,CAAM,EAAE6D,EAAWC,EAAY,CACjE,MAAMC,EAAejtF,EAAQ,MAC7B,IAAImB,EACJ,IAAKA,KAAOU,EAERorF,EAAa9rF,CAAG,EAAIU,EAAMV,CAAG,EAGjC6rF,GAAY,sBAAsBC,EAAcF,CAAS,EACzD,IAAK5rF,KAAO+nF,EAGR+D,EAAa,YAAY9rF,EAAK+nF,EAAK/nF,CAAG,CAAC,CAE/C,CCZA,SAAS+rF,GAAgBC,EAAQ39C,EAAM,CACnC,OAAIA,EAAK,MAAQA,EAAK,IACX,EACH29C,GAAU39C,EAAK,IAAMA,EAAK,KAAQ,GAC9C,CAQA,MAAM49C,GAAsB,CACxB,QAAS,CAAC3f,EAAQ7qE,IAAS,CACvB,GAAI,CAACA,EAAK,OACN,OAAO6qE,EAKX,GAAI,OAAOA,GAAW,SAClB,GAAIvI,GAAG,KAAKuI,CAAM,EACdA,EAAS,WAAWA,CAAM,MAG1B,QAAOA,EAOf,MAAM/uF,EAAIwuG,GAAgBzf,EAAQ7qE,EAAK,OAAO,CAAC,EACzCl7B,EAAIwlH,GAAgBzf,EAAQ7qE,EAAK,OAAO,CAAC,EAC/C,MAAO,GAAGlkB,CAAC,KAAKhX,CAAC,GACpB,CACL,ECnCM2lH,GAAmB,CACrB,QAAS,CAAC5f,EAAQ,CAAE,UAAAmd,EAAW,gBAAA0C,CAAe,IAAO,CACjD,MAAMC,EAAW9f,EACX+f,EAASvmB,GAAQ,MAAMwG,CAAM,EAEnC,GAAI+f,EAAO,OAAS,EAChB,OAAOD,EACX,MAAM7zC,EAAWutB,GAAQ,kBAAkBwG,CAAM,EAC3CtnD,EAAS,OAAOqnE,EAAO,CAAC,GAAM,SAAW,EAAI,EAE7CC,EAASH,EAAgB,EAAE,MAAQ1C,EAAU,EAC7C8C,EAASJ,EAAgB,EAAE,MAAQ1C,EAAU,EACnD4C,EAAO,EAAIrnE,CAAM,GAAKsnE,EACtBD,EAAO,EAAIrnE,CAAM,GAAKunE,EAOtB,MAAMC,EAAetmB,GAAUomB,EAAQC,EAAQ,EAAG,EAElD,OAAI,OAAOF,EAAO,EAAIrnE,CAAM,GAAM,WAC9BqnE,EAAO,EAAIrnE,CAAM,GAAKwnE,GAEtB,OAAOH,EAAO,EAAIrnE,CAAM,GAAM,WAC9BqnE,EAAO,EAAIrnE,CAAM,GAAKwnE,GACnBj0C,EAAS8zC,CAAM,CACzB,CACL,EC5BMI,GAAkB,CACpB,aAAc,CACV,GAAGR,GACH,QAAS,CACL,sBACA,uBACA,yBACA,yBACH,CACJ,EACD,oBAAqBA,GACrB,qBAAsBA,GACtB,uBAAwBA,GACxB,wBAAyBA,GACzB,UAAWC,EACf,ECfA,SAASQ,GAAoB1sF,EAAK,CAAE,OAAA2sF,EAAQ,SAAAC,CAAQ,EAAI,CACpD,OAAQxb,GAAe,IAAIpxE,CAAG,GAC1BA,EAAI,WAAW,QAAQ,IACrB2sF,GAAUC,IAAa,UACpB,CAAC,CAACH,GAAgBzsF,CAAG,GAAKA,IAAQ,UAC/C,CCNA,SAAS6sF,GAA4B7/B,EAAO8/B,EAAWrb,EAAe,CAClE,MAAM/wE,EAAQssD,EAAM,MACd+/B,EAAYD,GAAW,MACvBE,EAAY,CAAA,EAClB,GAAI,CAACtsF,EACD,OAAOssF,EACX,UAAWhtF,KAAOU,GACV+5E,GAAc/5E,EAAMV,CAAG,CAAC,GACvB+sF,GAAatS,GAAcsS,EAAU/sF,CAAG,CAAC,GAC1C0sF,GAAoB1sF,EAAKgtD,CAAK,GAC9BykB,GAAe,SAASzxE,CAAG,GAAG,YAAc,UAC5CgtF,EAAUhtF,CAAG,EAAIU,EAAMV,CAAG,GAGlC,OAAOgtF,CACX,CCTA,SAASC,GAAiBpuF,EAAS,CAC/B,OAAO,OAAO,iBAAiBA,CAAO,CAC1C,CACA,MAAMquF,WAA0BpF,EAAiB,CAC7C,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,KAAO,OACZ,KAAK,eAAiB6D,EACzB,CACD,sBAAsBlnF,EAAUzE,EAAK,CACjC,GAAIoxE,GAAe,IAAIpxE,CAAG,EACtB,OAAO,KAAK,YAAY,aAClB2wE,GAAsB3wE,CAAG,EACzBkxE,GAAmBzsE,EAAUzE,CAAG,EAErC,CACD,MAAMmtF,EAAgBF,GAAiBxoF,CAAQ,EACzC3E,GAASsiE,GAAkBpiE,CAAG,EAC9BmtF,EAAc,iBAAiBntF,CAAG,EAClCmtF,EAAcntF,CAAG,IAAM,EAC7B,OAAO,OAAOF,GAAU,SAAWA,EAAM,KAAI,EAAKA,CACrD,CACJ,CACD,2BAA2B2E,EAAU,CAAE,mBAAAgmF,GAAsB,CACzD,OAAOH,GAAmB7lF,EAAUgmF,CAAkB,CACzD,CACD,MAAM1D,EAAaD,EAAc95B,EAAO,CACpCq+B,GAAgBtE,EAAaD,EAAc95B,EAAM,iBAAiB,CACrE,CACD,4BAA4BA,EAAO8/B,EAAWrb,EAAe,CACzD,OAAOob,GAA4B7/B,EAAO8/B,EAAWrb,CAAa,CACrE,CACL,CCtCA,SAAS2b,GAAYptF,EAAKw0D,EAAQ,CAC9B,OAAOx0D,KAAOw0D,CAClB,CACA,MAAM64B,WAA4B/G,EAAc,CAC5C,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,KAAO,QACf,CACD,sBAAsB7hF,EAAUzE,EAAK,CACjC,GAAIotF,GAAYptF,EAAKyE,CAAQ,EAAG,CAC5B,MAAM3E,EAAQ2E,EAASzE,CAAG,EAC1B,GAAI,OAAOF,GAAU,UAAY,OAAOA,GAAU,SAC9C,OAAOA,CAEd,CAEJ,CACD,wBAAyB,CAExB,CACD,2BAA2BE,EAAK+mF,EAAa,CACzC,OAAOA,EAAY,OAAO/mF,CAAG,CAChC,CACD,4BAA6B,CACzB,OAAO+kF,GAAS,CACnB,CACD,MAAMgC,EAAaD,EAAc,CAC7B,OAAO,OAAOC,EAAY,OAAQD,CAAY,CACjD,CACD,eAAeriF,EAAU,CAAE,OAAA+gE,GAAU,CACjC,OAAO,OAAO/gE,EAAU+gE,CAAM,CACjC,CACD,0BAA2B,CACvB,MAAO,EACV,CACL,CCtCA,MAAM8nB,GAAW,CACb,OAAQ,oBACR,MAAO,kBACX,EACMC,GAAY,CACd,OAAQ,mBACR,MAAO,iBACX,EAWA,SAASC,GAAanrF,EAAO9J,EAAQk1F,EAAU,EAAGzoE,EAAS,EAAG0oE,EAAc,GAAM,CAE9ErrF,EAAM,WAAa,EAGnB,MAAMqO,EAAOg9E,EAAcJ,GAAWC,GAEtClrF,EAAMqO,EAAK,MAAM,EAAI,GAAG,CAACsU,CAAM,GAE/B3iB,EAAMqO,EAAK,KAAK,EAAI,GAAGnY,CAAM,IAAIk1F,CAAO,EAC5C,CCtBA,MAAME,GAA0B,CAC5B,iBACA,aACA,eACA,cACJ,EAIA,SAASC,GAAct1F,EAAO,CAAE,MAAAu1F,EAAO,MAAAC,EAAO,UAAAC,EAAW,WAAA7vD,EAAY,YAAA8vD,EAAc,EAAG,WAAAC,EAAa,EAEnG,GAAG3hB,GAAU4hB,EAAUjY,EAAmB2V,EAAW,CAMjD,GALAP,GAAgB/yF,EAAOg0E,EAAQ2J,CAAiB,EAK5CiY,EAAU,CACN51F,EAAM,MAAM,UACZA,EAAM,MAAM,QAAUA,EAAM,MAAM,SAEtC,MACH,CACDA,EAAM,MAAQA,EAAM,MACpBA,EAAM,MAAQ,GACd,KAAM,CAAE,MAAA+J,EAAO,MAAA3B,CAAO,EAAGpI,EAKrB+J,EAAM,YACN3B,EAAM,UAAY2B,EAAM,UACxB,OAAOA,EAAM,YAEb3B,EAAM,WAAa2B,EAAM,mBACzB3B,EAAM,gBAAkB2B,EAAM,iBAAmB,UACjD,OAAOA,EAAM,iBAEb3B,EAAM,YAKNA,EAAM,aAAekrF,GAAW,cAAgB,WAChD,OAAOvpF,EAAM,cAEjB,UAAWrC,KAAO2tF,GACVtrF,EAAMrC,CAAG,IAAM,SACfU,EAAMV,CAAG,EAAIqC,EAAMrC,CAAG,EACtB,OAAOqC,EAAMrC,CAAG,GAIpB6tF,IAAU,SACVxrF,EAAM,EAAIwrF,GACVC,IAAU,SACVzrF,EAAM,EAAIyrF,GACVC,IAAc,SACd1rF,EAAM,MAAQ0rF,GAEd7vD,IAAe,QACfsvD,GAAanrF,EAAO67B,EAAY8vD,EAAaC,EAAY,EAAK,CAEtE,CClEA,MAAME,GAAsB,IAAI,IAAI,CAChC,gBACA,kBACA,eACA,mBACA,aACA,WACA,oBACA,eACA,cACA,aACA,UACA,UACA,eACA,mBACA,mBACA,eACA,cACA,UACA,oBACA,aACA,cACA,aACA,cACJ,CAAC,EC3BKD,GAAYnhC,GAAQ,OAAOA,GAAQ,UAAYA,EAAI,YAAW,IAAO,MCI3E,SAASqhC,GAAUvvF,EAASkoF,EAAasH,EAAYxC,EAAY,CAC7DF,GAAW9sF,EAASkoF,EAAa,OAAW8E,CAAU,EACtD,UAAW7rF,KAAO+mF,EAAY,MAC1BloF,EAAQ,aAAcsvF,GAAoB,IAAInuF,CAAG,EAAuBA,EAAnB86E,GAAY96E,CAAG,EAAS+mF,EAAY,MAAM/mF,CAAG,CAAC,CAE3G,CCLA,SAAS6sF,GAA4B7/B,EAAO8/B,EAAWrb,EAAe,CAClE,MAAMub,EAAYsB,GAA8BthC,EAAO8/B,EAAWrb,CAAa,EAC/E,UAAWzxE,KAAOgtD,EACd,GAAIytB,GAAcztB,EAAMhtD,CAAG,CAAC,GACxBy6E,GAAcqS,EAAU9sF,CAAG,CAAC,EAAG,CAC/B,MAAMuuF,EAAYpd,GAAmB,QAAQnxE,CAAG,IAAM,GAChD,OAASA,EAAI,OAAO,CAAC,EAAE,cAAgBA,EAAI,UAAU,CAAC,EACtDA,EACNgtF,EAAUuB,CAAS,EAAIvhC,EAAMhtD,CAAG,CACnC,CAEL,OAAOgtF,CACX,CCLA,MAAMwB,WAAyB1G,EAAiB,CAC5C,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,KAAO,MACZ,KAAK,SAAW,GAChB,KAAK,2BAA6B/C,EACrC,CACD,uBAAuB/3B,EAAOhtD,EAAK,CAC/B,OAAOgtD,EAAMhtD,CAAG,CACnB,CACD,sBAAsByE,EAAUzE,EAAK,CACjC,GAAIoxE,GAAe,IAAIpxE,CAAG,EAAG,CACzB,MAAMyuF,EAAcnR,GAAoBt9E,CAAG,EAC3C,OAAOyuF,GAAcA,EAAY,SAAW,CAC/C,CACD,OAAAzuF,EAAOmuF,GAAoB,IAAInuF,CAAG,EAAuBA,EAAnB86E,GAAY96E,CAAG,EAC9CyE,EAAS,aAAazE,CAAG,CACnC,CACD,4BAA4BgtD,EAAO8/B,EAAWrb,EAAe,CACzD,OAAOob,GAA4B7/B,EAAO8/B,EAAWrb,CAAa,CACrE,CACD,MAAMsV,EAAaD,EAAc95B,EAAO,CACpC4gC,GAAc7G,EAAaD,EAAc,KAAK,SAAU95B,EAAM,kBAAmBA,EAAM,KAAK,CAC/F,CACD,eAAevoD,EAAUsiF,EAAa6E,EAAWC,EAAY,CACzDuC,GAAU3pF,EAAUsiF,EAAa6E,EAAWC,CAAU,CACzD,CACD,MAAMpnF,EAAU,CACZ,KAAK,SAAWypF,GAASzpF,EAAS,OAAO,EACzC,MAAM,MAAMA,CAAQ,CACvB,CACL,CCvCA,MAAMiqF,GAAkBtJ,GAAa,OAKrC,SAASuJ,GAAkBld,EAAe,CACtC,GAAI,CAACA,EACD,OACJ,GAAI,CAACA,EAAc,sBAAuB,CACtC,MAAM/d,EAAU+d,EAAc,OACxBkd,GAAkBld,EAAc,MAAM,GAAK,CAAE,EAC7C,GACN,OAAIA,EAAc,MAAM,UAAY,SAChC/d,EAAQ,QAAU+d,EAAc,MAAM,SAEnC/d,CACV,CACD,MAAMA,EAAU,CAAA,EAChB,QAASn2F,EAAI,EAAGA,EAAImxH,GAAiBnxH,IAAK,CACtC,MAAM+hC,EAAO8lF,GAAa7nH,CAAC,EACrBiiC,EAAOiyE,EAAc,MAAMnyE,CAAI,GACjC4lF,GAAe1lF,CAAI,GAAKA,IAAS,MACjCk0D,EAAQp0D,CAAI,EAAIE,EAEvB,CACD,OAAOk0D,CACX,CC7BA,SAASk7B,GAAetnF,EAAMgB,EAAM,CAChC,GAAI,CAAC,MAAM,QAAQA,CAAI,EACnB,MAAO,GACX,MAAMumF,EAAavmF,EAAK,OACxB,GAAIumF,IAAevnF,EAAK,OACpB,MAAO,GACX,QAAS/pC,EAAI,EAAGA,EAAIsxH,EAAYtxH,IAC5B,GAAI+qC,EAAK/qC,CAAC,IAAM+pC,EAAK/pC,CAAC,EAClB,MAAO,GAEf,MAAO,EACX,CCDA,MAAMuxH,GAAuB,CAAC,GAAG3J,EAAoB,EAAE,QAAO,EACxD4J,GAAoB5J,GAAqB,OAC/C,SAAS6J,GAAsBvd,EAAe,CAC1C,OAAQuF,GACG,QAAQ,IAAIA,EAAW,IAAI,CAAC,CAAE,UAAAH,EAAW,QAAA57E,CAAS,IAAKshF,GAAqB9K,EAAeoF,EAAW57E,CAAO,CAAC,CAAC,CAE9H,CACA,SAASg0F,GAAqBxd,EAAe,CACzC,IAAI//B,EAAUs9C,GAAsBvd,CAAa,EAC7Cn5E,EAAQ42F,KACRC,EAAkB,GAQlBC,EAAW,GAKf,MAAMC,EAA2Bt0F,GAAS,CAAC6iC,EAAK8hC,IAAe,CAC3D,MAAMma,EAAWK,GAAezI,EAAe/R,EAAY3kE,IAAS,OAC9D02E,EAAc,iBAAiB,OAC/B,MAAS,EACf,GAAIoI,EAAU,CACV,KAAM,CAAE,WAAApL,EAAY,cAAA+L,EAAe,GAAGrhF,CAAM,EAAK0gF,EACjDj8C,EAAM,CAAE,GAAGA,EAAK,GAAGzkC,EAAQ,GAAGqhF,CAAa,CAC9C,CACD,OAAO58C,CACf,EAKI,SAAS0xD,EAAmBC,EAAc,CACtC79C,EAAU69C,EAAa9d,CAAa,CACvC,CAWD,SAAS+d,EAAeC,EAAmB,CACvC,KAAM,CAAE,MAAAziC,CAAO,EAAGykB,EACZ/d,EAAUi7B,GAAkBld,EAAc,MAAM,GAAK,CAAA,EAKrDuF,EAAa,CAAA,EAKb0Y,EAAc,IAAI,IAMxB,IAAIC,EAAkB,CAAA,EAKlBC,EAAsB,IAO1B,QAASryH,EAAI,EAAGA,EAAIwxH,GAAmBxxH,IAAK,CACxC,MAAMw9B,EAAO+zF,GAAqBvxH,CAAC,EAC7BsyH,EAAYv3F,EAAMyC,CAAI,EACtByE,EAAOwtD,EAAMjyD,CAAI,IAAM,OACvBiyD,EAAMjyD,CAAI,EACV24D,EAAQ34D,CAAI,EACZ+0F,EAAgB5K,GAAe1lF,CAAI,EAKnCuwF,EAAch1F,IAAS00F,EAAoBI,EAAU,SAAW,KAClEE,IAAgB,KAChBH,EAAsBryH,GAO1B,IAAIyyH,EAAcxwF,IAASk0D,EAAQ34D,CAAI,GACnCyE,IAASwtD,EAAMjyD,CAAI,GACnB+0F,EAYJ,GAXIE,IACCb,GAAmBC,IACpB3d,EAAc,yBACdue,EAAc,IAMlBH,EAAU,cAAgB,CAAE,GAAGF,GAI9B,CAACE,EAAU,UAAYE,IAAgB,MAEnC,CAACvwF,GAAQ,CAACqwF,EAAU,UAErB5K,GAAoBzlF,CAAI,GACxB,OAAOA,GAAS,UAChB,SASJ,GAAIzE,IAAS,QAAU80F,EAAU,UAAYE,IAAgB,GAAM,CAC3DF,EAAU,qBACVF,EAAkB,CACd,GAAGA,EACH,GAAGE,EAAU,kBACrC,GAEgB,QACH,CAMD,MAAMI,EAAmBC,GAAuBL,EAAU,SAAUrwF,CAAI,EACxE,IAAI2wF,EAAoBF,GAEnBl1F,IAAS00F,GACNI,EAAU,UACV,CAACG,GACDF,GAEHvyH,EAAIqyH,GAAuBE,EAC5BM,EAAuB,GAK3B,MAAMC,EAAiB,MAAM,QAAQ7wF,CAAI,EAAIA,EAAO,CAACA,CAAI,EAKzD,IAAI8wF,EAAiBD,EAAe,OAAOhB,EAAwBt0F,CAAI,EAAG,CAAA,CAAE,EACxEg1F,IAAgB,KAChBO,EAAiB,CAAA,GAUrB,KAAM,CAAE,mBAAAC,EAAqB,EAAI,EAAGV,EAC9BW,GAAU,CACZ,GAAGD,EACH,GAAGD,CACnB,EACkBG,GAAiBzwF,IAAQ,CAC3BmwF,EAAoB,GAChBT,EAAY,IAAI1vF,EAAG,IACnBowF,EAAuB,GACvBV,EAAY,OAAO1vF,EAAG,GAE1B6vF,EAAU,eAAe7vF,EAAG,EAAI,GAChC,MAAM+uE,EAAc0C,EAAc,SAASzxE,EAAG,EAC1C+uE,IACAA,EAAY,UAAY,GAC5C,EACY,UAAW/uE,MAAOwwF,GAAS,CACvB,MAAMlpF,EAAOgpF,EAAetwF,EAAG,EACzBsI,EAAOioF,EAAmBvwF,EAAG,EAEnC,GAAI2vF,EAAgB,eAAe3vF,EAAG,EAClC,SAIJ,IAAI0wF,EAAkB,GAClBtW,GAAkB9yE,CAAI,GAAK8yE,GAAkB9xE,CAAI,EACjDooF,EACI,CAAC9B,GAAetnF,EAAMgB,CAAI,GAAK2nF,EAGnCS,EAAkBppF,IAASgB,EAE3BooF,EAC0BppF,GAAS,KAE/BmpF,GAAczwF,EAAG,EAIjB0vF,EAAY,IAAI1vF,EAAG,EAGlBsH,IAAS,QAAaooF,EAAY,IAAI1vF,EAAG,EAK9CywF,GAAczwF,EAAG,EAOjB6vF,EAAU,cAAc7vF,EAAG,EAAI,EAEtC,CAKD6vF,EAAU,SAAWrwF,EACrBqwF,EAAU,mBAAqBS,EAC3BT,EAAU,WACVF,EAAkB,CAAE,GAAGA,EAAiB,GAAGW,CAAc,IAExDnB,GAAmBC,IACpB3d,EAAc,wBACd0e,EAAoB,IAMxB,MAAMQ,GAAuBX,GAAeC,EAExCE,IADmB,CAACQ,IAAwBP,IAE5CpZ,EAAW,KAAK,GAAGqZ,EAAe,IAAKxZ,IAAc,CACjD,MAAM57E,EAAU,CAAE,KAAAF,GAMlB,GAAI,OAAO87E,IAAc,WACpBsY,GAAmBC,IACpB,CAACuB,IACDlf,EAAc,wBACdA,EAAc,OAAQ,CACtB,KAAM,CAAE,OAAArrE,CAAQ,EAAGqrE,EACbmf,EAAgB1W,GAAe9zE,EAAQywE,EAAS,EACtD,GAAIzwE,EAAO,kBAAoBwqF,EAAe,CAC1C,KAAM,CAAE,cAAAtZ,CAAe,EAAGsZ,EAAc,YAAc,CAAA,EACtD31F,EAAQ,MAAQo8E,GAAiBjxE,EAAO,iBAAkBqrE,EAAe6F,CAAa,CACzF,CACJ,CACD,MAAO,CACH,UAAWT,GACX,QAAA57E,CACxB,CACiB,CAAA,CAAC,CAET,CAMD,GAAIy0F,EAAY,KAAM,CAClB,MAAMmB,EAAoB,CAAA,EAK1B,GAAI,OAAO7jC,EAAM,SAAY,UAAW,CACpC,MAAM8jC,EAAoB5W,GAAezI,EAAe,MAAM,QAAQzkB,EAAM,OAAO,EAC7EA,EAAM,QAAQ,CAAC,EACfA,EAAM,OAAO,EACf8jC,GAAqBA,EAAkB,aACvCD,EAAkB,WAAaC,EAAkB,WAExD,CACDpB,EAAY,QAAS1vF,GAAQ,CACzB,MAAM+wF,EAAiBtf,EAAc,cAAczxE,CAAG,EAChD+uE,EAAc0C,EAAc,SAASzxE,CAAG,EAC1C+uE,IACAA,EAAY,UAAY,IAE5B8hB,EAAkB7wF,CAAG,EAAI+wF,GAAkB,IAC3D,CAAa,EACD/Z,EAAW,KAAK,CAAE,UAAW6Z,CAAmB,CAAA,CACnD,CACD,IAAIG,EAAgB,EAAQha,EAAW,OACvC,OAAImY,IACCniC,EAAM,UAAY,IAASA,EAAM,UAAYA,EAAM,UACpD,CAACykB,EAAc,yBACfuf,EAAgB,IAEpB7B,EAAkB,GAClBC,EAAW,GACJ4B,EAAgBt/C,EAAQslC,CAAU,EAAI,QAAQ,QAAO,CAC/D,CAID,SAASia,EAAUl2F,EAAMm2F,EAAU,CAE/B,GAAI54F,EAAMyC,CAAI,EAAE,WAAam2F,EACzB,OAAO,QAAQ,UAEnBzf,EAAc,iBAAiB,QAASx8B,GAAUA,EAAM,gBAAgB,UAAUl6C,EAAMm2F,CAAQ,CAAC,EACjG54F,EAAMyC,CAAI,EAAE,SAAWm2F,EACvB,MAAMla,EAAawY,EAAez0F,CAAI,EACtC,UAAWiF,KAAO1H,EACdA,EAAM0H,CAAG,EAAE,cAAgB,GAE/B,OAAOg3E,CACV,CACD,MAAO,CACH,eAAAwY,EACA,UAAAyB,EACA,mBAAA3B,EACA,SAAU,IAAMh3F,EAChB,MAAO,IAAM,CACTA,EAAQ42F,GAAW,EACnBE,EAAW,EACd,CACT,CACA,CACA,SAASc,GAAuB5nF,EAAMhB,EAAM,CACxC,OAAI,OAAOA,GAAS,SACTA,IAASgB,EAEX,MAAM,QAAQhB,CAAI,EAChB,CAACsnF,GAAetnF,EAAMgB,CAAI,EAE9B,EACX,CACA,SAAS6oF,GAAgBD,EAAW,GAAO,CACvC,MAAO,CACH,SAAAA,EACA,cAAe,CAAE,EACjB,eAAgB,CAAE,EAClB,mBAAoB,CAAE,CAC9B,CACA,CACA,SAAShC,IAAc,CACnB,MAAO,CACH,QAASiC,GAAgB,EAAI,EAC7B,YAAaA,GAAiB,EAC9B,WAAYA,GAAiB,EAC7B,SAAUA,GAAiB,EAC3B,UAAWA,GAAiB,EAC5B,WAAYA,GAAiB,EAC7B,KAAMA,GAAiB,CAC/B,CACA,CC1XA,SAASC,GAAa/iD,EAAMgjD,EAAY,CACpChjD,EAAK,IAAMgjD,EAAW,IACtBhjD,EAAK,IAAMgjD,EAAW,GAC1B,CAMA,SAASC,GAAYjI,EAAKkI,EAAW,CACjCH,GAAa/H,EAAI,EAAGkI,EAAU,CAAC,EAC/BH,GAAa/H,EAAI,EAAGkI,EAAU,CAAC,CACnC,CAMA,SAASC,GAAkB5sC,EAAO6sC,EAAa,CAC3C7sC,EAAM,UAAY6sC,EAAY,UAC9B7sC,EAAM,MAAQ6sC,EAAY,MAC1B7sC,EAAM,YAAc6sC,EAAY,YAChC7sC,EAAM,OAAS6sC,EAAY,MAC/B,CC1BA,MAAMC,GAAkB,KAClBC,GAAY,EAAID,GAChBE,GAAY,EAAIF,GAChBG,GAAsB,IACtBC,GAAgB,EAAID,GACpBE,GAAgB,EAAIF,GAC1B,SAASG,GAAW3jD,EAAM,CACtB,OAAOA,EAAK,IAAMA,EAAK,GAC3B,CACA,SAAS4jD,GAAOnyF,EAAO3G,EAAQ+4F,EAAa,CACxC,OAAO,KAAK,IAAIpyF,EAAQ3G,CAAM,GAAK+4F,CACvC,CACA,SAASC,GAAcvtC,EAAOh8C,EAAQzP,EAAQuyD,EAAS,GAAK,CACxD9G,EAAM,OAAS8G,EACf9G,EAAM,YAAcshB,GAAUt9D,EAAO,IAAKA,EAAO,IAAKg8C,EAAM,MAAM,EAClEA,EAAM,MAAQotC,GAAW74F,CAAM,EAAI64F,GAAWppF,CAAM,EACpDg8C,EAAM,UACFshB,GAAU/sE,EAAO,IAAKA,EAAO,IAAKyrD,EAAM,MAAM,EAAIA,EAAM,aACvDA,EAAM,OAAS+sC,IAAa/sC,EAAM,OAASgtC,IAC5C,MAAMhtC,EAAM,KAAK,KACjBA,EAAM,MAAQ,IAEbA,EAAM,WAAaktC,IACpBltC,EAAM,WAAamtC,IACnB,MAAMntC,EAAM,SAAS,KACrBA,EAAM,UAAY,EAE1B,CACA,SAASwtC,GAAaxtC,EAAOh8C,EAAQzP,EAAQuyD,EAAQ,CACjDymC,GAAcvtC,EAAM,EAAGh8C,EAAO,EAAGzP,EAAO,EAAGuyD,EAASA,EAAO,QAAU,MAAS,EAC9EymC,GAAcvtC,EAAM,EAAGh8C,EAAO,EAAGzP,EAAO,EAAGuyD,EAASA,EAAO,QAAU,MAAS,CAClF,CACA,SAAS2mC,GAAiBl5F,EAAQm5F,EAAUlsF,EAAQmsF,EAAS,EAAG,CAC5D,MAAMC,EAAcD,EACdrsB,GAAU9/D,EAAO,IAAKA,EAAO,IAAKmsF,CAAM,EACxCnsF,EAAO,IACbjN,EAAO,IAAMq5F,EAAcF,EAAS,IACpCn5F,EAAO,IAAMA,EAAO,IAAM64F,GAAWM,CAAQ,CACjD,CACA,SAASG,GAAgBt5F,EAAQm5F,EAAUlsF,EAAQmsF,EAAQ,CACvDF,GAAiBl5F,EAAO,EAAGm5F,EAAS,EAAGlsF,EAAO,EAAGmsF,GAAQ,CAAC,EAC1DF,GAAiBl5F,EAAO,EAAGm5F,EAAS,EAAGlsF,EAAO,EAAGmsF,GAAQ,CAAC,CAC9D,CACA,SAASG,GAAyBv5F,EAAQwzF,EAAQvmF,EAAQmsF,EAAS,EAAG,CAClE,MAAMC,EAAcD,EACdrsB,GAAU9/D,EAAO,IAAKA,EAAO,IAAKmsF,CAAM,EACxCnsF,EAAO,IACbjN,EAAO,IAAMwzF,EAAO,IAAM6F,EAC1Br5F,EAAO,IAAMA,EAAO,IAAM64F,GAAWrF,CAAM,CAC/C,CACA,SAASgG,GAAqBx5F,EAAQwzF,EAAQvmF,EAAQmsF,EAAQ,CAC1DG,GAAyBv5F,EAAO,EAAGwzF,EAAO,EAAGvmF,EAAO,EAAGmsF,GAAQ,CAAC,EAChEG,GAAyBv5F,EAAO,EAAGwzF,EAAO,EAAGvmF,EAAO,EAAGmsF,GAAQ,CAAC,CACpE,CChDA,SAASK,GAAiB70D,EAAOkrD,EAAWvgD,EAAOmgD,EAAaK,EAAU,CACtE,OAAAnrD,GAASkrD,EACTlrD,EAAQ6qD,GAAW7qD,EAAO,EAAI2K,EAAOmgD,CAAW,EAC5CK,IAAa,SACbnrD,EAAQ6qD,GAAW7qD,EAAO,EAAImrD,EAAUL,CAAW,GAEhD9qD,CACX,CAIA,SAAS80D,GAAgBxkD,EAAM46C,EAAY,EAAGvgD,EAAQ,EAAGgjB,EAAS,GAAKw9B,EAAUmI,EAAahjD,EAAMykD,EAAazkD,EAAM,CAMnH,GALIy1B,GAAQ,KAAKmlB,CAAS,IACtBA,EAAY,WAAWA,CAAS,EAEhCA,EADyB/iB,GAAU4sB,EAAW,IAAKA,EAAW,IAAK7J,EAAY,GAAG,EACnD6J,EAAW,KAE1C,OAAO7J,GAAc,SACrB,OACJ,IAAIJ,EAAc3iB,GAAUmrB,EAAW,IAAKA,EAAW,IAAK3lC,CAAM,EAC9Drd,IAASgjD,IACTxI,GAAeI,GACnB56C,EAAK,IAAMukD,GAAiBvkD,EAAK,IAAK46C,EAAWvgD,EAAOmgD,EAAaK,CAAQ,EAC7E76C,EAAK,IAAMukD,GAAiBvkD,EAAK,IAAK46C,EAAWvgD,EAAOmgD,EAAaK,CAAQ,CACjF,CAKA,SAAS6J,GAAqB1kD,EAAM2kD,EAAY,CAAChzF,EAAKizF,EAAUC,CAAS,EAAGxnC,EAAQonC,EAAY,CAC5FD,GAAgBxkD,EAAM2kD,EAAWhzF,CAAG,EAAGgzF,EAAWC,CAAQ,EAAGD,EAAWE,CAAS,EAAGF,EAAW,MAAOtnC,EAAQonC,CAAU,CAC5H,CAIA,MAAMK,GAAQ,CAAC,IAAK,SAAU,SAAS,EACjCC,GAAQ,CAAC,IAAK,SAAU,SAAS,EAKvC,SAASC,GAAoBhK,EAAK2J,EAAYzB,EAAWnH,EAAW,CAChE2I,GAAqB1J,EAAI,EAAG2J,EAAYG,GAAO5B,EAAYA,EAAU,EAAI,OAAWnH,EAAYA,EAAU,EAAI,MAAS,EACvH2I,GAAqB1J,EAAI,EAAG2J,EAAYI,GAAO7B,EAAYA,EAAU,EAAI,OAAWnH,EAAYA,EAAU,EAAI,MAAS,CAC3H,CCjDA,SAASkJ,GAAgB1uC,EAAO,CAC5B,OAAOA,EAAM,YAAc,GAAKA,EAAM,QAAU,CACpD,CACA,SAAS2uC,GAAY3uC,EAAO,CACxB,OAAO0uC,GAAgB1uC,EAAM,CAAC,GAAK0uC,GAAgB1uC,EAAM,CAAC,CAC9D,CACA,SAAS4uC,GAAW3wH,EAAG8Z,EAAG,CACtB,OAAO9Z,EAAE,MAAQ8Z,EAAE,KAAO9Z,EAAE,MAAQ8Z,EAAE,GAC1C,CACA,SAAS82G,GAAU5wH,EAAG8Z,EAAG,CACrB,OAAO62G,GAAW3wH,EAAE,EAAG8Z,EAAE,CAAC,GAAK62G,GAAW3wH,EAAE,EAAG8Z,EAAE,CAAC,CACtD,CACA,SAAS+2G,GAAkB7wH,EAAG8Z,EAAG,CAC7B,OAAQ,KAAK,MAAM9Z,EAAE,GAAG,IAAM,KAAK,MAAM8Z,EAAE,GAAG,GAC1C,KAAK,MAAM9Z,EAAE,GAAG,IAAM,KAAK,MAAM8Z,EAAE,GAAG,CAC9C,CACA,SAASg3G,GAAiB9wH,EAAG8Z,EAAG,CAC5B,OAAO+2G,GAAkB7wH,EAAE,EAAG8Z,EAAE,CAAC,GAAK+2G,GAAkB7wH,EAAE,EAAG8Z,EAAE,CAAC,CACpE,CACA,SAASi3G,GAAYvK,EAAK,CACtB,OAAO2I,GAAW3I,EAAI,CAAC,EAAI2I,GAAW3I,EAAI,CAAC,CAC/C,CACA,SAASwK,GAAgBhxH,EAAG8Z,EAAG,CAC3B,OAAQ9Z,EAAE,YAAc8Z,EAAE,WACtB9Z,EAAE,QAAU8Z,EAAE,OACd9Z,EAAE,cAAgB8Z,EAAE,WAC5B,CC5BA,SAASm3G,GAASpvD,EAAU,CACxB,MAAO,CAACA,EAAS,GAAG,EAAGA,EAAS,GAAG,CAAC,CACxC,CCFA,SAASqvD,GAAyBnvC,EAAO6kC,EAAWuK,EAAiB,CACjE,IAAIjlE,EAAY,GAOhB,MAAMklE,EAAarvC,EAAM,EAAE,UAAY6kC,EAAU,EAC3CyK,EAAatvC,EAAM,EAAE,UAAY6kC,EAAU,EAC3C0K,EAAaH,GAAiB,GAAK,EAWzC,IAVIC,GAAcC,GAAcC,KAC5BplE,EAAY,eAAeklE,CAAU,OAAOC,CAAU,OAAOC,CAAU,SAMvE1K,EAAU,IAAM,GAAKA,EAAU,IAAM,KACrC16D,GAAa,SAAS,EAAI06D,EAAU,CAAC,KAAK,EAAIA,EAAU,CAAC,MAEzDuK,EAAiB,CACjB,KAAM,CAAE,qBAAAI,EAAsB,OAAAj7D,EAAQ,aAAAiyD,EAAc,QAAAiJ,EAAS,QAAAC,EAAS,MAAAjoD,EAAO,MAAAC,CAAQ,EAAG0nD,EACpFI,IACArlE,EAAY,eAAeqlE,CAAoB,OAAOrlE,CAAS,IAC/DoK,IACApK,GAAa,UAAUoK,CAAM,SAE7BiyD,IACAr8D,GAAa,UAAUq8D,CAAY,SACnCiJ,IACAtlE,GAAa,WAAWslE,CAAO,SAC/BC,IACAvlE,GAAa,WAAWulE,CAAO,SAC/BjoD,IACAtd,GAAa,SAASsd,CAAK,SAC3BC,IACAvd,GAAa,SAASud,CAAK,QAClC,CAKD,MAAMioD,EAAgB3vC,EAAM,EAAE,MAAQ6kC,EAAU,EAC1C+K,EAAgB5vC,EAAM,EAAE,MAAQ6kC,EAAU,EAChD,OAAI8K,IAAkB,GAAKC,IAAkB,KACzCzlE,GAAa,SAASwlE,CAAa,KAAKC,CAAa,KAElDzlE,GAAa,MACxB,CC7CA,MAAM0lE,GAAe,CACjB,sBACA,uBACA,yBACA,yBACJ,EACMC,GAAaD,GAAa,OAC1BvQ,GAAYpkF,GAAU,OAAOA,GAAU,SAAW,WAAWA,CAAK,EAAIA,EACtE60F,GAAQ70F,GAAU,OAAOA,GAAU,UAAYikE,GAAG,KAAKjkE,CAAK,EAClE,SAAS80F,GAAUz7F,EAAQ07F,EAAQC,EAAMltD,EAAUmtD,EAAwBC,EAAc,CACjFD,GACA57F,EAAO,QAAU+sE,GAAU,EAAG4uB,EAAK,SAAW,EAAGG,GAAgBrtD,CAAQ,CAAC,EAC1EzuC,EAAO,YAAc+sE,GAAU2uB,EAAO,SAAW,EAAG,EAAGK,GAAiBttD,CAAQ,CAAC,GAE5EotD,IACL77F,EAAO,QAAU+sE,GAAU2uB,EAAO,SAAW,EAAGC,EAAK,SAAW,EAAGltD,CAAQ,GAK/E,QAASrqE,EAAI,EAAGA,EAAIm3H,GAAYn3H,IAAK,CACjC,MAAM43H,EAAcV,GAAal3H,CAAC,EAClC,IAAI63H,EAAeC,GAAUR,EAAQM,CAAW,EAC5CG,EAAaD,GAAUP,EAAMK,CAAW,EAC5C,GAAIC,IAAiB,QAAaE,IAAe,OAC7C,SACJF,IAAiBA,EAAe,GAChCE,IAAeA,EAAa,GACbF,IAAiB,GAC5BE,IAAe,GACfX,GAAKS,CAAY,IAAMT,GAAKW,CAAU,GAEtCn8F,EAAOg8F,CAAW,EAAI,KAAK,IAAIjvB,GAAUge,GAASkR,CAAY,EAAGlR,GAASoR,CAAU,EAAG1tD,CAAQ,EAAG,CAAC,GAC/Fk8B,GAAQ,KAAKwxB,CAAU,GAAKxxB,GAAQ,KAAKsxB,CAAY,KACrDj8F,EAAOg8F,CAAW,GAAK,MAI3Bh8F,EAAOg8F,CAAW,EAAIG,CAE7B,EAIGT,EAAO,QAAUC,EAAK,UACtB37F,EAAO,OAAS+sE,GAAU2uB,EAAO,QAAU,EAAGC,EAAK,QAAU,EAAGltD,CAAQ,EAEhF,CACA,SAASytD,GAAUzkF,EAAQ2kF,EAAY,CACnC,OAAO3kF,EAAO2kF,CAAU,IAAM,OACxB3kF,EAAO2kF,CAAU,EACjB3kF,EAAO,YACjB,CACA,MAAMqkF,GAAgCO,GAAS,EAAG,GAAK12B,EAAO,EACxDo2B,GAAiCM,GAAS,GAAK,IAAMzuF,EAAI,EAC/D,SAASyuF,GAAS7rE,EAAKtM,EAAK6iB,EAAQ,CAChC,OAAQjrD,GAEAA,EAAI00C,EACG,EACP10C,EAAIooC,EACG,EACJ6iB,EAAO0H,GAASje,EAAKtM,EAAKpoC,CAAC,CAAC,CAE3C,CChEA,SAASwgH,GAAmB31F,EAAO4rE,EAAWzwE,EAAS,CACnD,MAAMy6F,EAAgBjb,GAAc36E,CAAK,EAAIA,EAAQivE,GAAYjvE,CAAK,EACtE,OAAA41F,EAAc,MAAMtc,GAAmB,GAAIsc,EAAehqB,EAAWzwE,CAAO,CAAC,EACtEy6F,EAAc,SACzB,CCRA,SAASC,GAAYx8F,EAAQ2Z,EAAWpM,EAASzL,EAAU,CAAE,QAAS,IAAQ,CAC1E,OAAA9B,EAAO,iBAAiB2Z,EAAWpM,EAASzL,CAAO,EAC5C,IAAM9B,EAAO,oBAAoB2Z,EAAWpM,EAASzL,CAAO,CACvE,CCHA,MAAM26F,GAAiB,CAAC/yH,EAAG8Z,IAAM9Z,EAAE,MAAQ8Z,EAAE,MCG7C,MAAMk5G,EAAS,CACX,aAAc,CACV,KAAK,SAAW,GAChB,KAAK,QAAU,EAClB,CACD,IAAI5gD,EAAO,CACPsnB,GAAc,KAAK,SAAUtnB,CAAK,EAClC,KAAK,QAAU,EAClB,CACD,OAAOA,EAAO,CACVunB,GAAW,KAAK,SAAUvnB,CAAK,EAC/B,KAAK,QAAU,EAClB,CACD,QAAQvQ,EAAU,CACd,KAAK,SAAW,KAAK,SAAS,KAAKkxD,EAAc,EACjD,KAAK,QAAU,GACf,KAAK,SAAS,QAAQlxD,CAAQ,CACjC,CACL,CCdA,SAASj5B,GAAMi5B,EAAU7mC,EAAS,CAC9B,MAAMtB,EAAQ4mC,GAAK,MACb2yD,EAAe,CAAC,CAAE,UAAAj0B,KAAgB,CACpC,MAAMl9B,EAAUk9B,EAAYtlE,EACxBooC,GAAW9mC,IACXkkE,GAAY+zB,CAAY,EACxBpxD,EAASC,EAAU9mC,CAAO,EAEtC,EACI,OAAAq9C,GAAM,MAAM46C,EAAc,EAAI,EACvB,IAAM/zB,GAAY+zB,CAAY,CACzC,CCbA,SAASC,GAAmBj2F,EAAO,CAC/B,OAAO26E,GAAc36E,CAAK,EAAIA,EAAM,IAAG,EAAKA,CAChD,CCLA,MAAMk2F,EAAU,CACZ,aAAc,CACV,KAAK,QAAU,EAClB,CACD,IAAIv0F,EAAM,CACN86D,GAAc,KAAK,QAAS96D,CAAI,EAChC,QAASlkC,EAAI,KAAK,QAAQ,OAAS,EAAGA,GAAK,EAAGA,IAAK,CAC/C,MAAM04H,EAAS,KAAK,QAAQ14H,CAAC,EAC7B,GAAI04H,IAAWx0F,GAAQw0F,IAAW,KAAK,MAAQA,IAAW,KAAK,SAC3D,SACJ,MAAMC,EAAOD,EAAO,UACf,CAACC,GAAQA,EAAK,cAAgB,KAAU,CAACD,EAAO,WACjDz5B,GAAW,KAAK,QAASy5B,CAAM,EAC/BA,EAAO,QAAO,EAErB,CACDx0F,EAAK,eAAc,CACtB,CACD,OAAOA,EAAM,CAIT,GAHA+6D,GAAW,KAAK,QAAS/6D,CAAI,EACzBA,IAAS,KAAK,WACd,KAAK,SAAW,QAChBA,IAAS,KAAK,KAAM,CACpB,MAAM00F,EAAW,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,EACjDA,GACA,KAAK,QAAQA,CAAQ,CAC5B,CACJ,CACD,SAAS10F,EAAM,CACX,QAASlkC,EAAI,KAAK,QAAQ,QAAQkkC,CAAI,EAAI,EAAGlkC,GAAK,EAAGA,IAAK,CACtD,MAAM04H,EAAS,KAAK,QAAQ14H,CAAC,EAC7B,GAAI04H,EAAO,YAAc,IAASA,EAAO,UAAU,cAAgB,GAC/D,YAAK,QAAQA,CAAM,EACZ,EAEd,CACD,MAAO,EACV,CACD,QAAQx0F,EAAM20F,EAAuB,CACjC,MAAMD,EAAW,KAAK,KACtB,GAAI10F,IAAS00F,IAEb,KAAK,SAAWA,EAChB,KAAK,KAAO10F,EACZA,EAAK,KAAI,EACL00F,GAAU,CACVA,EAAS,eAAc,EACvB10F,EAAK,eAAc,EACnB,KAAM,CAAE,iBAAkB40F,GAAYF,EAAS,QACzC,CAAE,iBAAkBG,GAAY70F,EAAK,SACvC40F,IAAY,QAAaA,IAAYC,KACrC70F,EAAK,WAAa00F,EACdC,IACAD,EAAS,gBAAkB,IAC3BA,EAAS,WACT10F,EAAK,SAAW00F,EAAS,SACzB10F,EAAK,SAAS,aACV00F,EAAS,iBAAmBA,EAAS,cAEzC10F,EAAK,MAAM,aACXA,EAAK,cAAgB,KAEzBA,EAAK,QAAQ,YAAc,IAC3B00F,EAAS,KAAI,CACpB,CACJ,CACD,uBAAwB,CACpB,KAAK,QAAQ,QAASF,GAAW,CAC7BA,EAAO,QAAQ,mBACfA,EAAO,cAAc,QAAQ,kBACzC,CAAS,CACJ,CACD,gBAAiB,CACb,KAAK,QAAQ,QAASA,GAAWA,EAAO,UAAYA,EAAO,eAAe,EAAK,CAAC,CACnF,CACD,oBAAqB,CACb,KAAK,MAAM,WACX,KAAK,KAAK,SAAW,OAC5B,CACL,CC5EA,MAAMM,GAAwB,CAK1B,uBAAwB,GAKxB,eAAgB,EACpB,ECkBMC,GAAgB,CAAC,GAAI,IAAK,IAAK,GAAG,EAKlCC,GAAkB,IACxB,IAAIx6G,GAAK,EACT,SAASy6G,GAAyB12F,EAAKyxE,EAAe7gE,EAAQ+lF,EAAuB,CACjF,KAAM,CAAE,aAAA7P,CAAc,EAAGrV,EAErBqV,EAAa9mF,CAAG,IAChB4Q,EAAO5Q,CAAG,EAAI8mF,EAAa9mF,CAAG,EAC9ByxE,EAAc,eAAezxE,EAAK,CAAC,EAC/B22F,IACAA,EAAsB32F,CAAG,EAAI,GAGzC,CACA,SAAS42F,GAAuCC,EAAgB,CAE5D,GADAA,EAAe,0BAA4B,GACvCA,EAAe,OAASA,EACxB,OACJ,KAAM,CAAE,cAAAplB,CAAa,EAAKolB,EAAe,QACzC,GAAI,CAACplB,EACD,OACJ,MAAMoK,EAAWb,GAAqBvJ,CAAa,EACnD,GAAI,OAAO,4BAA4BoK,EAAU,WAAW,EAAG,CAC3D,KAAM,CAAE,OAAA8Q,EAAQ,SAAAC,GAAaiK,EAAe,QAC5C,OAAO,+BAA+Bhb,EAAU,YAAa3gC,GAAO,EAAEyxC,GAAUC,EAAS,CAC5F,CACD,KAAM,CAAE,OAAAxmF,CAAQ,EAAGywF,EACfzwF,GAAU,CAACA,EAAO,2BAClBwwF,GAAuCxwF,CAAM,CAErD,CACA,SAAS0wF,GAAqB,CAAE,qBAAAC,EAAsB,cAAAC,EAAe,cAAAC,EAAe,kBAAAC,EAAmB,eAAAC,GAAmB,CACtH,OAAO,KAAqB,CACxB,YAAYrQ,EAAe,CAAA,EAAI1gF,EAAS4wF,IAAa,EAAM,CAIvD,KAAK,GAAK/6G,KAIV,KAAK,YAAc,EACnB,KAAK,kBAAoB,EAOzB,KAAK,SAAW,IAAI,IAKpB,KAAK,QAAU,GAMf,KAAK,gBAAkB,GACvB,KAAK,mBAAqB,GAO1B,KAAK,cAAgB,GAKrB,KAAK,kBAAoB,GAKzB,KAAK,wBAA0B,GAK/B,KAAK,iBAAmB,GAIxB,KAAK,sBAAwB,GAC7B,KAAK,sBAAwB,GAK7B,KAAK,WAAa,GAIlB,KAAK,MAAQ,GAKb,KAAK,WAAa,GAIlB,KAAK,qBAAuB,GAO5B,KAAK,0BAA4B,GASjC,KAAK,UAAY,CAAE,EAAG,EAAG,EAAG,GAI5B,KAAK,cAAgB,IAAI,IACzB,KAAK,gBAAkB,GACvB,KAAK,cAAgB,EAErB,KAAK,gBAAkB,GACvB,KAAK,eAAiB,IAAM,KAAK,OAAM,EACvC,KAAK,0BAA4B,GACjC,KAAK,kBAAoB,IAAM,CACvB,KAAK,aACL,KAAK,WAAa,GAClB,KAAK,kBAAiB,EAE1C,EAMY,KAAK,iBAAmB,IAAM,CAC1B,KAAK,0BAA4B,GAWjC,KAAK,MAAM,QAAQm7G,EAAmB,EACtC,KAAK,MAAM,QAAQC,EAAkB,EACrC,KAAK,MAAM,QAAQC,EAAc,EACjC,KAAK,MAAM,QAAQC,EAAe,CAIlD,EAIY,KAAK,yBAA2B,EAChC,KAAK,oBAAsB,EAC3B,KAAK,aAAe,GACpB,KAAK,UAAY,GACjB,KAAK,kBAAoB,EAKzB,KAAK,YAAc,IAAI,IACvB,KAAK,aAAezQ,EACpB,KAAK,KAAO1gF,EAASA,EAAO,MAAQA,EAAS,KAC7C,KAAK,KAAOA,EAAS,CAAC,GAAGA,EAAO,KAAMA,CAAM,EAAI,GAChD,KAAK,OAASA,EACd,KAAK,MAAQA,EAASA,EAAO,MAAQ,EAAI,EACzC,QAAS7oC,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAClC,KAAK,KAAKA,CAAC,EAAE,qBAAuB,GAEpC,KAAK,OAAS,OACd,KAAK,MAAQ,IAAIs4H,GACxB,CACD,iBAAiBv2F,EAAMoH,EAAS,CAC5B,OAAK,KAAK,cAAc,IAAIpH,CAAI,GAC5B,KAAK,cAAc,IAAIA,EAAM,IAAIg+D,EAAqB,EAEnD,KAAK,cAAc,IAAIh+D,CAAI,EAAE,IAAIoH,CAAO,CAClD,CACD,gBAAgBpH,KAASqH,EAAM,CAC3B,MAAM6wF,EAAsB,KAAK,cAAc,IAAIl4F,CAAI,EACvDk4F,GAAuBA,EAAoB,OAAO,GAAG7wF,CAAI,CAC5D,CACD,aAAarH,EAAM,CACf,OAAO,KAAK,cAAc,IAAIA,CAAI,CACrC,CAID,MAAMmF,EAAU,CACZ,GAAI,KAAK,SACL,OACJ,KAAK,MAAQy9E,GAAaz9E,CAAQ,GAAK,CAAC8+E,GAAgB9+E,CAAQ,EAChE,KAAK,SAAWA,EAChB,KAAM,CAAE,SAAAmoF,EAAU,OAAAD,EAAQ,cAAAlb,CAAa,EAAK,KAAK,QASjD,GARIA,GAAiB,CAACA,EAAc,SAChCA,EAAc,MAAMhtE,CAAQ,EAEhC,KAAK,KAAK,MAAM,IAAI,IAAI,EACxB,KAAK,QAAU,KAAK,OAAO,SAAS,IAAI,IAAI,EACxC,KAAK,KAAK,kBAAoBkoF,GAAUC,KACxC,KAAK,cAAgB,IAErBmK,EAAsB,CACtB,IAAIU,EACAC,EAAa,EACjB,MAAMC,EAAsB,IAAO,KAAK,KAAK,sBAAwB,GAErEz8C,GAAM,KAAK,IAAM,CACbw8C,EAAa,OAAO,UACxC,CAAiB,EACDX,EAAqBtyF,EAAU,IAAM,CACjC,MAAMmzF,EAAgB,OAAO,WACzBA,IAAkBF,IAEtBA,EAAaE,EACb,KAAK,KAAK,sBAAwB,GAClCH,GAAeA,EAAW,EAC1BA,EAAchsF,GAAMksF,EAAqB,GAAG,EACxCpB,GAAsB,yBACtBA,GAAsB,uBAAyB,GAC/C,KAAK,MAAM,QAAQsB,EAAe,GAE1D,CAAiB,CACJ,CACGjL,GACA,KAAK,KAAK,mBAAmBA,EAAU,IAAI,EAG3C,KAAK,QAAQ,UAAY,IACzBnb,IACCmb,GAAYD,IACb,KAAK,iBAAiB,YAAa,CAAC,CAAE,MAAA/nC,EAAO,iBAAAkzC,EAAkB,yBAAAC,EAA0B,OAAQC,KAAiB,CAC9G,GAAI,KAAK,yBAA0B,CAC/B,KAAK,OAAS,OACd,KAAK,eAAiB,OACtB,MACH,CAED,MAAMC,EAAmB,KAAK,QAAQ,YAClCxmB,EAAc,qBAAsB,GACpCymB,GACE,CAAE,uBAAAC,EAAwB,0BAAAC,CAA4B,EAAG3mB,EAAc,SAAQ,EAK/E4mB,EAAmB,CAAC,KAAK,cAC3B,CAAC1E,GAAiB,KAAK,aAAcqE,CAAS,EAY5CM,EAA+B,CAACR,GAAoBC,EAC1D,GAAI,KAAK,QAAQ,YACb,KAAK,YACLO,GACCR,IACIO,GAAoB,CAAC,KAAK,kBAAoB,CAC/C,KAAK,aACL,KAAK,aAAe,KAAK,WACzB,KAAK,aAAa,aAAe,QAErC,MAAME,EAAmB,CACrB,GAAG5f,GAAmBsf,EAAkB,QAAQ,EAChD,OAAQE,EACR,WAAYC,CACxC,GAC4B3mB,EAAc,oBACd,KAAK,QAAQ,cACb8mB,EAAiB,MAAQ,EACzBA,EAAiB,KAAO,IAE5B,KAAK,eAAeA,CAAgB,EAKpC,KAAK,mBAAmB3zC,EAAO0zC,EAA8BC,EACxD,IAAI,CACZ,MAOQT,GACDD,GAAgB,IAAI,EAEpB,KAAK,OAAM,GAAM,KAAK,QAAQ,gBAC9B,KAAK,QAAQ,iBAGrB,KAAK,aAAeG,CACxC,CAAiB,CAER,CACD,SAAU,CACN,KAAK,QAAQ,UAAY,KAAK,WAAU,EACxC,KAAK,KAAK,MAAM,OAAO,IAAI,EAC3B,MAAMQ,EAAQ,KAAK,WACnBA,GAASA,EAAM,OAAO,IAAI,EAC1B,KAAK,QAAU,KAAK,OAAO,SAAS,OAAO,IAAI,EAC/C,KAAK,SAAW,OAChB,KAAK,cAAc,QACnBz2B,GAAY,KAAK,gBAAgB,CACpC,CAED,aAAc,CACV,KAAK,sBAAwB,EAChC,CACD,eAAgB,CACZ,KAAK,sBAAwB,EAChC,CACD,iBAAkB,CACd,OAAO,KAAK,uBAAyB,KAAK,qBAC7C,CACD,wBAAyB,CACrB,OAAQ,KAAK,oBACR,KAAK,QAAU,KAAK,OAAO,uBAAsB,GAClD,EACP,CAED,aAAc,CACN,KAAK,gBAAiB,IAE1B,KAAK,WAAa,GAClB,KAAK,OAAS,KAAK,MAAM,QAAQ02B,EAAoB,EACrD,KAAK,cACR,CACD,sBAAuB,CACnB,KAAM,CAAE,cAAAhnB,CAAa,EAAK,KAAK,QAC/B,OAAOA,GAAiBA,EAAc,SAAQ,EAAG,iBACpD,CACD,WAAWinB,EAAwB,GAAM,CAErC,GADA,KAAK,KAAK,gBAAkB,GACxB,KAAK,KAAK,kBAAmB,CAC7B,KAAK,QAAQ,gBAAkB,KAAK,QAAQ,eAAc,EAC1D,MACH,CAkBD,GALI,OAAO,gCACP,CAAC,KAAK,2BACN9B,GAAuC,IAAI,EAE/C,CAAC,KAAK,KAAK,YAAc,KAAK,KAAK,cAC/B,KAAK,cACL,OACJ,KAAK,cAAgB,GACrB,QAASr5H,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAAK,CACvC,MAAMkkC,EAAO,KAAK,KAAKlkC,CAAC,EACxBkkC,EAAK,qBAAuB,IAKxB,OAAOA,EAAK,aAAa,GAAM,UAC/B,OAAOA,EAAK,aAAa,GAAM,YAC/BA,EAAK,cAAgB,IAEzBA,EAAK,aAAa,UAAU,EACxBA,EAAK,QAAQ,YACbA,EAAK,WAAW,EAAK,CAE5B,CACD,KAAM,CAAE,SAAAmrF,EAAU,OAAAD,GAAW,KAAK,QAClC,GAAIC,IAAa,QAAa,CAACD,EAC3B,OACJ,MAAM1W,EAAoB,KAAK,uBAC/B,KAAK,2BAA6BA,EAC5BA,EAAkB,KAAK,aAAc,EAAE,EACvC,OACN,KAAK,eAAc,EACnByiB,GAAyB,KAAK,gBAAgB,YAAY,CAC7D,CACD,QAAS,CAML,GALA,KAAK,gBAAkB,GACE,KAAK,kBAIR,CAClB,MAAMC,EAAqB,KAAK,sBAChC,KAAK,cAAa,EAClB,KAAK,sBAAwB,GAC7B,KAAK,kBAAiB,EAMlBA,GACA,KAAK,MAAM,QAAQC,EAAkB,EAEzC,KAAK,MAAM,QAAQC,EAAiB,EACpC,MACH,CAID,GAAI,KAAK,aAAe,KAAK,kBAAmB,CAC5C,KAAK,MAAM,QAAQC,EAAkB,EACrC,MACH,CACD,KAAK,kBAAoB,KAAK,YACzB,KAAK,YAIN,KAAK,WAAa,GAKlB,KAAK,MAAM,QAAQC,EAA6B,EAIhD,KAAK,MAAM,QAAQC,EAAmB,EAKtC,KAAK,MAAM,QAAQC,EAAY,EAK/B,KAAK,MAAM,QAAQC,EAAkB,GAtBrC,KAAK,MAAM,QAAQJ,EAAkB,EAwBzC,KAAK,kBAAiB,EAMtB,MAAM1tF,EAAM+3B,GAAK,MACjBy9B,GAAU,MAAQ/nE,GAAM,EAAG,IAAO,GAAIuS,EAAMw1D,GAAU,SAAS,EAC/DA,GAAU,UAAYx1D,EACtBw1D,GAAU,aAAe,GACzBoB,GAAW,OAAO,QAAQpB,EAAS,EACnCoB,GAAW,UAAU,QAAQpB,EAAS,EACtCoB,GAAW,OAAO,QAAQpB,EAAS,EACnCA,GAAU,aAAe,EAC5B,CACD,WAAY,CACH,KAAK,kBACN,KAAK,gBAAkB,GACvBie,GAAU,KAAK,KAAK,cAAc,EAEzC,CACD,mBAAoB,CAChB,KAAK,MAAM,QAAQsa,EAAa,EAChC,KAAK,YAAY,QAAQC,EAAmB,CAC/C,CACD,0BAA2B,CAClB,KAAK,4BACN,KAAK,0BAA4B,GACjCl+C,GAAM,UAAU,KAAK,iBAAkB,GAAO,EAAI,EAEzD,CACD,2BAA4B,CAMxBA,GAAM,WAAW,IAAM,CACf,KAAK,cACL,KAAK,KAAK,YAGV,KAAK,KAAK,mBAE9B,CAAa,CACJ,CAID,gBAAiB,CACT,KAAK,UAAY,CAAC,KAAK,WAE3B,KAAK,SAAW,KAAK,UACjB,KAAK,UACL,CAAC82C,GAAW,KAAK,SAAS,YAAY,CAAC,GACvC,CAACA,GAAW,KAAK,SAAS,YAAY,CAAC,IACvC,KAAK,SAAW,QAEvB,CACD,cAAe,CAIX,GAHI,CAAC,KAAK,WAEV,KAAK,aAAY,EACb,EAAE,KAAK,QAAQ,qBAAuB,KAAK,OAAM,IACjD,CAAC,KAAK,eACN,OASJ,GAAI,KAAK,YAAc,CAAC,KAAK,WAAW,SACpC,QAASz0H,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IACrB,KAAK,KAAKA,CAAC,EACnB,aAAY,EAGzB,MAAM87H,EAAa,KAAK,OACxB,KAAK,OAAS,KAAK,QAAQ,EAAK,EAChC,KAAK,gBACA,KAAK,kBACN,KAAK,gBAAkBtU,MAC3B,KAAK,cAAgB,GACrB,KAAK,gBAAkB,OACvB,KAAK,gBAAgB,UAAW,KAAK,OAAO,SAAS,EACrD,KAAM,CAAE,cAAAtT,CAAa,EAAK,KAAK,QAC/BA,GACIA,EAAc,OAAO,gBAAiB,KAAK,OAAO,UAAW4nB,EAAaA,EAAW,UAAY,MAAS,CACjH,CACD,aAAaC,EAAQ,UAAW,CAC5B,IAAIC,EAAmB,GAAQ,KAAK,QAAQ,cAAgB,KAAK,UAMjE,GALI,KAAK,QACL,KAAK,OAAO,cAAgB,KAAK,KAAK,aACtC,KAAK,OAAO,QAAUD,IACtBC,EAAmB,IAEnBA,GAAoB,KAAK,SAAU,CACnC,MAAMC,EAAStC,EAAkB,KAAK,QAAQ,EAC9C,KAAK,OAAS,CACV,YAAa,KAAK,KAAK,YACvB,MAAAoC,EACA,OAAAE,EACA,OAAQvC,EAAc,KAAK,QAAQ,EACnC,QAAS,KAAK,OAAS,KAAK,OAAO,OAASuC,CAChE,CACa,CACJ,CACD,gBAAiB,CACb,GAAI,CAACrC,EACD,OACJ,MAAMsC,EAAmB,KAAK,eAC1B,KAAK,sBACL,KAAK,QAAQ,oBACXC,EAAgB,KAAK,iBAAmB,CAACnG,GAAY,KAAK,eAAe,EACzEtd,EAAoB,KAAK,uBACzB0jB,EAAyB1jB,EACzBA,EAAkB,KAAK,aAAc,EAAE,EACvC,OACA2jB,EAA8BD,IAA2B,KAAK,2BAChEF,GACA,KAAK,WACJC,GACGjR,GAAa,KAAK,YAAY,GAC9BmR,KACJzC,EAAe,KAAK,SAAUwC,CAAsB,EACpD,KAAK,qBAAuB,GAC5B,KAAK,eAAc,EAE1B,CACD,QAAQE,EAAkB,GAAM,CAC5B,MAAMC,EAAU,KAAK,iBACrB,IAAIC,EAAY,KAAK,oBAAoBD,CAAO,EAMhD,OAAID,IACAE,EAAY,KAAK,gBAAgBA,CAAS,GAE9CC,GAASD,CAAS,EACX,CACH,YAAa,KAAK,KAAK,YACvB,YAAaD,EACb,UAAAC,EACA,aAAc,CAAE,EAChB,OAAQ,KAAK,EAC7B,CACS,CACD,gBAAiB,CACb,KAAM,CAAE,cAAAtoB,CAAa,EAAK,KAAK,QAC/B,GAAI,CAACA,EACD,OAAOsT,GAAS,EACpB,MAAMsE,EAAM5X,EAAc,qBAE1B,GAAI,EADoB,KAAK,QAAQ,SAAW,KAAK,KAAK,KAAKwoB,EAAsB,GAC/D,CAElB,KAAM,CAAE,OAAAtP,CAAM,EAAK,KAAK,KACpBA,IACAd,GAAcR,EAAI,EAAGsB,EAAO,OAAO,CAAC,EACpCd,GAAcR,EAAI,EAAGsB,EAAO,OAAO,CAAC,EAE3C,CACD,OAAOtB,CACV,CACD,oBAAoBA,EAAK,CACrB,MAAM6Q,EAAmBnV,KAEzB,GADAuM,GAAY4I,EAAkB7Q,CAAG,EAC7B,KAAK,QAAQ,QACb,OAAO6Q,EAMX,QAAS38H,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAAK,CACvC,MAAMkkC,EAAO,KAAK,KAAKlkC,CAAC,EAClB,CAAE,OAAAotH,EAAQ,QAAA1vF,CAAS,EAAGwG,EACxBA,IAAS,KAAK,MAAQkpF,GAAU1vF,EAAQ,eAKpC0vF,EAAO,SACP2G,GAAY4I,EAAkB7Q,CAAG,EAErCQ,GAAcqQ,EAAiB,EAAGvP,EAAO,OAAO,CAAC,EACjDd,GAAcqQ,EAAiB,EAAGvP,EAAO,OAAO,CAAC,EAExD,CACD,OAAOuP,CACV,CACD,eAAe7Q,EAAK8Q,EAAgB,GAAO30B,EAAQ,CAC/C,MAAM40B,EAAiB50B,GAAUuf,KACjCuM,GAAY8I,EAAgB/Q,CAAG,EAC/B,QAAS9rH,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAAK,CACvC,MAAMkkC,EAAO,KAAK,KAAKlkC,CAAC,EACpB,CAAC48H,GACD14F,EAAK,QAAQ,cACbA,EAAK,QACLA,IAASA,EAAK,OACdooF,GAAcuQ,EAAe,EAAG,CAAC34F,EAAK,OAAO,OAAO,CAAC,EACrDooF,GAAcuQ,EAAe,EAAG,CAAC34F,EAAK,OAAO,OAAO,CAAC,GAEpDgnF,GAAahnF,EAAK,YAAY,GAEnCqoF,GAAasQ,EAAgB34F,EAAK,aAAcA,EAAK,QAAQ,SAAS,CACzE,CACD,OAAIgnF,GAAa,KAAK,YAAY,GAC9BqB,GAAasQ,EAAgB,KAAK,aAAc,KAAK,QAAQ,SAAS,EAEnEA,CACV,CACD,gBAAgB/Q,EAAK,CACjB,MAAMgR,EAAsBtV,KAC5BuM,GAAY+I,EAAqBhR,CAAG,EACpC,QAAS9rH,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAAK,CACvC,MAAMkkC,EAAO,KAAK,KAAKlkC,CAAC,EACxB,GAAI,CAACkrH,GAAahnF,EAAK,YAAY,EAC/B,SACJ,IAAI2oF,EACA3oF,EAAK,WACL+mF,GAAS/mF,EAAK,YAAY,GAAKA,EAAK,eAAc,EAClD2oF,EAAYrF,GAAS,EACrBuM,GAAYlH,EAAW3oF,EAAK,eAAgB,CAAA,GAEhD4xF,GAAoBgH,EAAqB54F,EAAK,aAAcA,EAAK,UAAU,UAAW2oF,CAAS,CAClG,CACD,OAAI3B,GAAa,KAAK,YAAY,GAC9B4K,GAAoBgH,EAAqB,KAAK,YAAY,EAEvDA,CACV,CACD,eAAez1C,EAAO,CAClB,KAAK,YAAcA,EACnB,KAAK,KAAK,2BACV,KAAK,kBAAoB,EAC5B,CACD,WAAW3pD,EAAS,CAChB,KAAK,QAAU,CACX,GAAG,KAAK,QACR,GAAGA,EACH,UAAWA,EAAQ,YAAc,OAAYA,EAAQ,UAAY,EACjF,CACS,CACD,mBAAoB,CAChB,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,SAAW,OAChB,KAAK,2BAA6B,OAClC,KAAK,YAAc,OACnB,KAAK,OAAS,OACd,KAAK,cAAgB,EACxB,CACD,oCAAqC,CAC5B,KAAK,gBAQN,KAAK,eAAe,2BACpB2lE,GAAU,WACV,KAAK,eAAe,mBAAmB,EAAI,CAElD,CACD,mBAAmB05B,EAAqB,GAAO,CAM3C,MAAMxF,EAAO,KAAK,UAClB,KAAK,oBAAsB,KAAK,kBAAoBA,EAAK,mBACzD,KAAK,mBAAqB,KAAK,iBAAmBA,EAAK,kBACvD,KAAK,0BAA4B,KAAK,wBAA0BA,EAAK,yBACrE,MAAMyF,EAAW,EAAQ,KAAK,cAAiB,OAASzF,EAWxD,GANgB,EAAEwF,GACbC,GAAY,KAAK,yBAClB,KAAK,mBACL,KAAK,QAAQ,mBACb,KAAK,gCACL,KAAK,KAAK,uBAEV,OACJ,KAAM,CAAE,OAAA5N,EAAQ,SAAAC,GAAa,KAAK,QAIlC,GAAI,CAAC,KAAK,QAAU,EAAED,GAAUC,GAC5B,OACJ,KAAK,yBAA2BhsB,GAAU,UAC1C,MAAM45B,EAAiB,KAAK,6BACxBA,GACA,KAAK,sBAAwBA,EAAe,eAC5C,CAACA,EAAe,QAAQ,YACxB,KAAK,qBAAoB,EAOzB,CAAC,KAAK,aAAe,CAAC,KAAK,iBACvB,KAAK,QAAQ,eAAiB,IAC9BA,GACAA,EAAe,OACf,KAAK,qBAAqBA,EAAgB,KAAK,OAAO,UAAWA,EAAe,OAAO,SAAS,EAGhG,KAAK,qBAAoB,GAO7B,GAAC,KAAK,gBAAkB,CAAC,KAAK,eAK7B,KAAK,SACN,KAAK,OAASzV,KACd,KAAK,qBAAuBA,MAK5B,KAAK,gBACL,KAAK,sBACL,KAAK,gBACL,KAAK,eAAe,QACpB,KAAK,mCAAkC,EACvC0N,GAAgB,KAAK,OAAQ,KAAK,eAAgB,KAAK,eAAe,OAAQ,KAAK,QAAQ,cAAgB,MAAS,GAK/G,KAAK,aACE,KAAK,aACb,KAAK,eAAe,KAAK,OAAO,UAAW,GAAO,KAAK,MAAM,EAG7DnB,GAAY,KAAK,OAAQ,KAAK,OAAO,SAAS,EAElDlI,GAAc,KAAK,OAAQ,KAAK,WAAW,GAM3CkI,GAAY,KAAK,OAAQ,KAAK,OAAO,SAAS,EAK9C,KAAK,iCACL,KAAK,+BAAiC,GAClC,KAAK,QAAQ,eAAiB,IAC9BkJ,GACA,EAAQA,EAAe,cACnB,EAAQ,KAAK,cACjB,CAACA,EAAe,QAAQ,cACxBA,EAAe,QACf,KAAK,oBAAsB,EAC3B,KAAK,qBAAqBA,EAAgB,KAAK,OAAQA,EAAe,MAAM,EAG5E,KAAK,eAAiB,KAAK,eAAiB,QASvD,CACD,4BAA6B,CACzB,GAAI,GAAC,KAAK,QACNhS,GAAS,KAAK,OAAO,YAAY,GACjCE,GAAe,KAAK,OAAO,YAAY,GAG3C,OAAI,KAAK,OAAO,eACL,KAAK,OAGL,KAAK,OAAO,4BAE1B,CACD,cAAe,CACX,MAAO,IAAS,KAAK,gBACjB,KAAK,aACL,KAAK,QAAQ,aACb,KAAK,OACZ,CACD,qBAAqB8R,EAAgB7N,EAAQ8N,EAAc,CACvD,KAAK,eAAiBD,EACtB,KAAK,oBAAsBA,EAAe,cAC1C,KAAK,mCAAkC,EACvC,KAAK,eAAiBzV,KACtB,KAAK,qBAAuBA,KAC5B4N,GAAqB,KAAK,qBAAsBhG,EAAQ8N,EAAc,KAAK,QAAQ,cAAgB,MAAS,EAC5GnJ,GAAY,KAAK,eAAgB,KAAK,oBAAoB,CAC7D,CACD,sBAAuB,CACnB,KAAK,eAAiB,KAAK,eAAiB,MAC/C,CACD,gBAAiB,CACb,MAAMwD,EAAO,KAAK,UACZyF,EAAW,EAAQ,KAAK,cAAiB,OAASzF,EACxD,IAAI4F,EAAU,GAuBd,IAlBI,KAAK,mBAAqB,KAAK,QAAQ,qBACvCA,EAAU,IAMVH,IACC,KAAK,yBAA2B,KAAK,oBACtCG,EAAU,IAMV,KAAK,2BAA6B95B,GAAU,YAC5C85B,EAAU,IAEVA,EACA,OACJ,KAAM,CAAE,OAAA/N,EAAQ,SAAAC,GAAa,KAAK,QAWlC,GANA,KAAK,gBAAkB,GAAS,KAAK,QAAU,KAAK,OAAO,iBACvD,KAAK,kBACL,KAAK,kBACJ,KAAK,kBACN,KAAK,YAAc,KAAK,eAAiB,QAEzC,CAAC,KAAK,QAAU,EAAED,GAAUC,GAC5B,OAKJ0E,GAAY,KAAK,gBAAiB,KAAK,OAAO,SAAS,EAIvD,MAAMqJ,EAAiB,KAAK,UAAU,EAChCC,EAAiB,KAAK,UAAU,EAKtCpR,GAAgB,KAAK,gBAAiB,KAAK,UAAW,KAAK,KAAM+Q,CAAQ,EAKrEzF,EAAK,QACL,CAACA,EAAK,SACL,KAAK,UAAU,IAAM,GAAK,KAAK,UAAU,IAAM,KAChDA,EAAK,OAASA,EAAK,OAAO,UAC1BA,EAAK,qBAAuB/P,MAEhC,KAAM,CAAE,OAAA5rF,CAAQ,EAAG27F,EACnB,GAAI,CAAC37F,EAAQ,CAML,KAAK,sBACL,KAAK,uBAAsB,EAC3B,KAAK,eAAc,GAEvB,MACH,CACG,CAAC,KAAK,iBAAmB,CAAC,KAAK,oBAC/B,KAAK,uBAAsB,GAG3Bq4F,GAAkB,KAAK,oBAAoB,EAAG,KAAK,gBAAgB,CAAC,EACpEA,GAAkB,KAAK,oBAAoB,EAAG,KAAK,gBAAgB,CAAC,GAWxEY,GAAa,KAAK,gBAAiB,KAAK,gBAAiBj5F,EAAQ,KAAK,YAAY,GAC9E,KAAK,UAAU,IAAMwhG,GACrB,KAAK,UAAU,IAAMC,GACrB,CAAC/G,GAAgB,KAAK,gBAAgB,EAAG,KAAK,oBAAoB,CAAC,GACnE,CAACA,GAAgB,KAAK,gBAAgB,EAAG,KAAK,oBAAoB,CAAC,KACnE,KAAK,aAAe,GACpB,KAAK,eAAc,EACnB,KAAK,gBAAgB,mBAAoB16F,CAAM,EAQtD,CACD,MAAO,CACH,KAAK,UAAY,EAEpB,CACD,MAAO,CACH,KAAK,UAAY,EAEpB,CACD,eAAeypF,EAAY,GAAM,CAE7B,GADA,KAAK,QAAQ,eAAe,iBACxBA,EAAW,CACX,MAAM4V,EAAQ,KAAK,WACnBA,GAASA,EAAM,gBAClB,CACG,KAAK,cAAgB,CAAC,KAAK,aAAa,WACxC,KAAK,aAAe,OAE3B,CACD,wBAAyB,CACrB,KAAK,oBAAsB3T,KAC3B,KAAK,gBAAkBA,KACvB,KAAK,6BAA+BA,IACvC,CACD,mBAAmBjgC,EAAO0zC,EAA+B,GAAOuC,EAAQ,CACpE,MAAMC,EAAW,KAAK,SAChBC,EAAuBD,EAAWA,EAAS,aAAe,CAAA,EAC1DE,EAAc,CAAE,GAAG,KAAK,YAAY,EACpCC,EAAcpW,MAChB,CAAC,KAAK,gBACN,CAAC,KAAK,eAAe,QAAQ,cAC7B,KAAK,eAAiB,KAAK,qBAAuB,QAEtD,KAAK,+BAAiC,CAACyT,EACvC,MAAM4C,EAAiBnW,KACjBoW,EAAiBL,EAAWA,EAAS,OAAS,OAC9CM,EAAe,KAAK,OAAS,KAAK,OAAO,OAAS,OAClDC,EAA0BF,IAAmBC,EAC7C5C,EAAQ,KAAK,WACbxD,EAAe,CAACwD,GAASA,EAAM,QAAQ,QAAU,EACjDzD,EAAyB,GAAQsG,GACnC,CAACrG,GACD,KAAK,QAAQ,YAAc,IAC3B,CAAC,KAAK,KAAK,KAAKsG,EAAmB,GACvC,KAAK,kBAAoB,EACzB,IAAIC,EAGJ,MAAMtuB,EAAc4tB,GAAQ,sBAAsBj2C,CAAK,EACvD,KAAK,eAAkB0nB,GAAW,CAC9B,MAAM1kC,EAAW0kC,EAAS,IACpBvuC,EAAQkvC,IAAcrlC,CAAQ,EAChC7J,GACAk9D,EAAY,EAAE,UAAYl9D,EAAM,EAChCk9D,EAAY,EAAE,MAAQ/0B,GAAUthB,EAAM,EAAE,MAAO,EAAGhd,CAAQ,EAC1DqzD,EAAY,EAAE,OAASr2C,EAAM,EAAE,OAC/Bq2C,EAAY,EAAE,YAAcr2C,EAAM,EAAE,YACpCq2C,EAAY,EAAE,UAAYl9D,EAAM,EAChCk9D,EAAY,EAAE,MAAQ/0B,GAAUthB,EAAM,EAAE,MAAO,EAAGhd,CAAQ,EAC1DqzD,EAAY,EAAE,OAASr2C,EAAM,EAAE,OAC/Bq2C,EAAY,EAAE,YAAcr2C,EAAM,EAAE,cAGpC42C,GAAmBP,EAAY,EAAGr2C,EAAM,EAAGhd,CAAQ,EACnD4zD,GAAmBP,EAAY,EAAGr2C,EAAM,EAAGhd,CAAQ,GAEvD,KAAK,eAAeqzD,CAAW,EAC3B,KAAK,gBACL,KAAK,sBACL,KAAK,QACL,KAAK,gBACL,KAAK,eAAe,SACpBtI,GAAqBuI,EAAgB,KAAK,OAAO,UAAW,KAAK,eAAe,OAAO,UAAW,KAAK,QAAQ,cAAgB,MAAS,EACxIO,GAAO,KAAK,eAAgB,KAAK,qBAAsBP,EAAgBtzD,CAAQ,EAK3E2zD,GACA9H,GAAU,KAAK,eAAgB8H,CAAkB,IACjD,KAAK,kBAAoB,IAExBA,IACDA,EAAqBxW,GAAS,GAClCuM,GAAYiK,EAAoB,KAAK,cAAc,GAEnDF,IACA,KAAK,gBAAkBL,EACvBpG,GAAUoG,EAAaD,EAAsB,KAAK,aAAcnzD,EAAUmtD,EAAwBC,CAAY,GAE9Gj3D,GAASA,EAAM,SAAW,SAGrB,KAAK,kBACN,KAAK,gBAAkBi9D,GAC3B,KAAK,gBAAgB,aAAej9D,EAAM,QAE9C,KAAK,KAAK,2BACV,KAAK,eAAc,EACnB,KAAK,kBAAoB6J,CACzC,EACY,KAAK,eAAe,KAAK,QAAQ,WAAa,IAAO,CAAC,CACzD,CACD,eAAe3sC,EAAS,CACpB,KAAK,gBAAgB,gBAAgB,EACrC,KAAK,kBAAkB,OACvB,KAAK,cAAc,kBAAkB,OACjC,KAAK,mBACL8mE,GAAY,KAAK,gBAAgB,EACjC,KAAK,iBAAmB,QAO5B,KAAK,iBAAmB7mB,GAAM,OAAO,IAAM,CACvCq7C,GAAsB,uBAAyB,GAC/C,KAAK,cAAgB,KAAK,YAAcxnB,GAAY,CAAC,GACrD,KAAK,YAAY,KAAK,EAAG,EAAK,EAC9B,KAAK,iBAAmB0mB,GAAmB,KAAK,YAAa,CAAC,EAAG,GAAI,EAAG,CACpE,GAAGx6F,EACH,SAAU,EACV,OAAQ,GACR,SAAWqxE,GAAW,CAClB,KAAK,eAAeA,CAAM,EAC1BrxE,EAAQ,UAAYA,EAAQ,SAASqxE,CAAM,CAC9C,EACD,WAAY,IAAM,CACdrxE,EAAQ,YAAcA,EAAQ,aAC9B,KAAK,kBAAiB,CACzB,CACrB,CAAiB,EACG,KAAK,eACL,KAAK,aAAa,iBAAmB,KAAK,kBAE9C,KAAK,iBAAmB,MACxC,CAAa,CACJ,CACD,mBAAoB,CACZ,KAAK,eACL,KAAK,aAAa,iBAAmB,OACrC,KAAK,aAAa,gBAAkB,QAExC,MAAMu9F,EAAQ,KAAK,WACnBA,GAASA,EAAM,wBACf,KAAK,aACD,KAAK,iBACD,KAAK,gBACD,OACZ,KAAK,gBAAgB,mBAAmB,CAC3C,CACD,iBAAkB,CACV,KAAK,mBACL,KAAK,gBAAkB,KAAK,eAAe/B,EAAe,EAC1D,KAAK,iBAAiB,QAE1B,KAAK,kBAAiB,CACzB,CACD,yBAA0B,CACtB,MAAM3B,EAAO,KAAK,UAClB,GAAI,CAAE,qBAAA4G,EAAsB,OAAAviG,EAAQ,OAAAwzF,EAAQ,aAAA7F,CAAY,EAAKgO,EAC7D,GAAI,GAAC4G,GAAwB,CAACviG,GAAU,CAACwzF,GAOzC,IAAI,OAASmI,GACT,KAAK,QACLnI,GACAgP,GAA0B,KAAK,QAAQ,cAAe,KAAK,OAAO,UAAWhP,EAAO,SAAS,EAAG,CAChGxzF,EAAS,KAAK,QAAU4rF,KACxB,MAAM6W,EAAU5J,GAAW,KAAK,OAAO,UAAU,CAAC,EAClD74F,EAAO,EAAE,IAAM27F,EAAK,OAAO,EAAE,IAC7B37F,EAAO,EAAE,IAAMA,EAAO,EAAE,IAAMyiG,EAC9B,MAAMC,EAAU7J,GAAW,KAAK,OAAO,UAAU,CAAC,EAClD74F,EAAO,EAAE,IAAM27F,EAAK,OAAO,EAAE,IAC7B37F,EAAO,EAAE,IAAMA,EAAO,EAAE,IAAM0iG,CACjC,CACDvK,GAAYoK,EAAsBviG,CAAM,EAMxC2wF,GAAa4R,EAAsB5U,CAAY,EAO/CsL,GAAa,KAAK,6BAA8B,KAAK,gBAAiBsJ,EAAsB5U,CAAY,EAC3G,CACD,mBAAmB8F,EAAUnrF,EAAM,CAC1B,KAAK,YAAY,IAAImrF,CAAQ,GAC9B,KAAK,YAAY,IAAIA,EAAU,IAAIoJ,EAAW,EAEpC,KAAK,YAAY,IAAIpJ,CAAQ,EACrC,IAAInrF,CAAI,EACd,MAAM+E,EAAS/E,EAAK,QAAQ,uBAC5BA,EAAK,QAAQ,CACT,WAAY+E,EAASA,EAAO,WAAa,OACzC,sBAAuBA,GAAUA,EAAO,4BAClCA,EAAO,4BAA4B/E,CAAI,EACvC,MACtB,CAAa,CACJ,CACD,QAAS,CACL,MAAM+2F,EAAQ,KAAK,WACnB,OAAOA,EAAQA,EAAM,OAAS,KAAO,EACxC,CACD,SAAU,CACN,KAAM,CAAE,SAAA5L,CAAQ,EAAK,KAAK,QAC1B,OAAOA,EAAW,KAAK,SAAU,GAAE,MAAQ,KAAO,IACrD,CACD,aAAc,CACV,KAAM,CAAE,SAAAA,CAAQ,EAAK,KAAK,QAC1B,OAAOA,EAAW,KAAK,SAAQ,GAAI,SAAW,MACjD,CACD,UAAW,CACP,KAAM,CAAE,SAAAA,CAAQ,EAAK,KAAK,QAC1B,GAAIA,EACA,OAAO,KAAK,KAAK,YAAY,IAAIA,CAAQ,CAChD,CACD,QAAQ,CAAE,WAAAkP,EAAY,WAAArtB,EAAY,sBAAA2nB,CAAqB,EAAM,CAAA,EAAI,CAC7D,MAAMoC,EAAQ,KAAK,WACfA,GACAA,EAAM,QAAQ,KAAMpC,CAAqB,EACzC0F,IACA,KAAK,gBAAkB,OACvB,KAAK,WAAa,IAElBrtB,GACA,KAAK,WAAW,CAAE,WAAAA,CAAU,CAAE,CACrC,CACD,UAAW,CACP,MAAM+pB,EAAQ,KAAK,WACnB,OAAIA,EACOA,EAAM,SAAS,IAAI,EAGnB,EAEd,CACD,sBAAuB,CACnB,KAAM,CAAE,cAAA/mB,CAAa,EAAK,KAAK,QAC/B,GAAI,CAACA,EACD,OAEJ,IAAIsqB,EAAyB,GAK7B,KAAM,CAAE,aAAAjV,CAAc,EAAGrV,EAWzB,IAVIqV,EAAa,GACbA,EAAa,QACbA,EAAa,SACbA,EAAa,SACbA,EAAa,SACbA,EAAa,OACbA,EAAa,SACbiV,EAAyB,IAGzB,CAACA,EACD,OACJ,MAAMC,EAAc,CAAA,EAChBlV,EAAa,GACb4P,GAAyB,IAAKjlB,EAAeuqB,EAAa,KAAK,eAAe,EAGlF,QAASz+H,EAAI,EAAGA,EAAIi5H,GAAc,OAAQj5H,IACtCm5H,GAAyB,SAASF,GAAcj5H,CAAC,CAAC,GAAIk0G,EAAeuqB,EAAa,KAAK,eAAe,EACtGtF,GAAyB,OAAOF,GAAcj5H,CAAC,CAAC,GAAIk0G,EAAeuqB,EAAa,KAAK,eAAe,EAIxGvqB,EAAc,OAAM,EAEpB,UAAWzxE,KAAOg8F,EACdvqB,EAAc,eAAezxE,EAAKg8F,EAAYh8F,CAAG,CAAC,EAC9C,KAAK,kBACL,KAAK,gBAAgBA,CAAG,EAAIg8F,EAAYh8F,CAAG,GAKnDyxE,EAAc,eAAc,CAC/B,CACD,sBAAsBwqB,EACtBrQ,EAAW,CACP,GAAI,CAAC,KAAK,UAAY,KAAK,MACvB,OACJ,GAAI,CAAC,KAAK,UAAW,CACjBqQ,EAAY,WAAa,SACzB,MACH,CACD,MAAMhmB,EAAoB,KAAK,uBAC/B,GAAI,KAAK,WAAY,CACjB,KAAK,WAAa,GAClBgmB,EAAY,WAAa,GACzBA,EAAY,QAAU,GACtBA,EAAY,cACRlG,GAAmBnK,GAAW,aAAa,GAAK,GACpDqQ,EAAY,UAAYhmB,EAClBA,EAAkB,KAAK,aAAc,EAAE,EACvC,OACN,MACH,CACD,MAAM6e,EAAO,KAAK,UAClB,GAAI,CAAC,KAAK,iBAAmB,CAAC,KAAK,QAAU,CAACA,EAAK,OAAQ,CACnD,KAAK,QAAQ,WACbmH,EAAY,QACR,KAAK,aAAa,UAAY,OACxB,KAAK,aAAa,QAClB,EACVA,EAAY,cACRlG,GAAmBnK,GAAW,aAAa,GAAK,IAEpD,KAAK,cAAgB,CAACnD,GAAa,KAAK,YAAY,IACpDwT,EAAY,UAAYhmB,EAClBA,EAAkB,CAAE,EAAE,EAAE,EACxB,OACN,KAAK,aAAe,IAExB,MACH,CACDgmB,EAAY,WAAa,GACzB,MAAMC,EAAiBpH,EAAK,iBAAmBA,EAAK,aACpD,KAAK,wBAAuB,EAC5B,IAAI/lE,EAAYglE,GAAyB,KAAK,6BAA8B,KAAK,UAAWmI,CAAc,EACtGjmB,IACAlnD,EAAYknD,EAAkBimB,EAAgBntE,CAAS,GAE3DktE,EAAY,UAAYltE,EACxB,KAAM,CAAE,EAAAxxC,EAAG,EAAAhX,GAAM,KAAK,gBACtB01H,EAAY,gBAAkB,GAAG1+G,EAAE,OAAS,GAAG,KAAKhX,EAAE,OAAS,GAAG,MAC9DuuH,EAAK,gBAKLmH,EAAY,QACRnH,IAAS,KACHoH,EAAe,SACb,KAAK,aAAa,SAClB,EACF,KAAK,gBACD,KAAK,aAAa,QAClBA,EAAe,YAO7BD,EAAY,QACRnH,IAAS,KACHoH,EAAe,UAAY,OACvBA,EAAe,QACf,GACJA,EAAe,cAAgB,OAC3BA,EAAe,YACf,EAKlB,UAAWl8F,KAAOysF,GAAiB,CAC/B,GAAIyP,EAAel8F,CAAG,IAAM,OACxB,SACJ,KAAM,CAAE,QAAAm8F,EAAS,QAAAC,EAAS,cAAAC,CAAa,EAAK5P,GAAgBzsF,CAAG,EAOzDs8F,EAAYvtE,IAAc,OAC1BmtE,EAAel8F,CAAG,EAClBm8F,EAAQD,EAAel8F,CAAG,EAAG80F,CAAI,EACvC,GAAIsH,EAAS,CACT,MAAMljG,EAAMkjG,EAAQ,OACpB,QAAS7+H,EAAI,EAAGA,EAAI27B,EAAK37B,IACrB0+H,EAAYG,EAAQ7+H,CAAC,CAAC,EAAI++H,CAEjC,MAKOD,EACA,KAAK,QAAQ,cAAc,YAAY,KAAKr8F,CAAG,EAAIs8F,EAGnDL,EAAYj8F,CAAG,EAAIs8F,CAG9B,CAMG,KAAK,QAAQ,WACbL,EAAY,cACRnH,IAAS,KACHiB,GAAmBnK,GAAW,aAAa,GAAK,GAChD,OAEjB,CACD,eAAgB,CACZ,KAAK,WAAa,KAAK,SAAW,MACrC,CAED,WAAY,CACR,KAAK,KAAK,MAAM,QAASnqF,GAASA,EAAK,kBAAkB,KAAI,CAAE,EAC/D,KAAK,KAAK,MAAM,QAAQo3F,EAAiB,EACzC,KAAK,KAAK,YAAY,OACzB,CACT,CACA,CACA,SAASI,GAAax3F,EAAM,CACxBA,EAAK,aAAY,CACrB,CACA,SAASy3F,GAAmBz3F,EAAM,CAC9B,MAAMq5F,EAAWr5F,EAAK,YAAY,UAAYA,EAAK,SACnD,GAAIA,EAAK,OAAQ,GACbA,EAAK,QACLq5F,GACAr5F,EAAK,aAAa,WAAW,EAAG,CAChC,KAAM,CAAE,UAAWkrF,EAAQ,YAAa4P,CAAgB,EAAG96F,EAAK,OAC1D,CAAE,cAAA+6F,CAAa,EAAK/6F,EAAK,QACzB84F,EAAWO,EAAS,SAAWr5F,EAAK,OAAO,OAGjD,GAAI+6F,IAAkB,OAClB1I,GAAUzlD,GAAS,CACf,MAAMouD,EAAelC,EACfO,EAAS,YAAYzsD,CAAI,EACzBysD,EAAS,UAAUzsD,CAAI,EACvB91C,EAASy5F,GAAWyK,CAAY,EACtCA,EAAa,IAAM9P,EAAOt+C,CAAI,EAAE,IAChCouD,EAAa,IAAMA,EAAa,IAAMlkG,CACtD,CAAa,UAEIikG,IAAkB,KAAOA,IAAkB,IAAK,CACrD,MAAME,EAAWF,IAAkB,IAAM,IAAM,IAC/CpL,GAAamJ,EACPO,EAAS,YAAY4B,CAAQ,EAC7B5B,EAAS,UAAU4B,CAAQ,EAAG/P,EAAO+P,CAAQ,CAAC,CACvD,MACQf,GAA0Ba,EAAe1B,EAAS,UAAWnO,CAAM,GACxEmH,GAAUzlD,GAAS,CACf,MAAMouD,EAAelC,EACfO,EAAS,YAAYzsD,CAAI,EACzBysD,EAAS,UAAUzsD,CAAI,EACvB91C,EAASy5F,GAAWrF,EAAOt+C,CAAI,CAAC,EACtCouD,EAAa,IAAMA,EAAa,IAAMlkG,EAIlCkJ,EAAK,gBAAkB,CAACA,EAAK,mBAC7BA,EAAK,kBAAoB,GACzBA,EAAK,eAAe4sC,CAAI,EAAE,IACtB5sC,EAAK,eAAe4sC,CAAI,EAAE,IAAM91C,EAExD,CAAa,EAEL,MAAMokG,EAAc9X,KACpBuN,GAAauK,EAAahQ,EAAQmO,EAAS,SAAS,EACpD,MAAM8B,EAAc/X,KAChB0V,EACAnI,GAAawK,EAAan7F,EAAK,eAAe86F,EAAgB,EAAI,EAAGzB,EAAS,WAAW,EAGzF1I,GAAawK,EAAajQ,EAAQmO,EAAS,SAAS,EAExD,MAAMhD,EAAmB,CAACvE,GAAYoJ,CAAW,EACjD,IAAI5E,EAA2B,GAC/B,GAAI,CAACt2F,EAAK,WAAY,CAClB,MAAM+4F,EAAiB/4F,EAAK,6BAK5B,GAAI+4F,GAAkB,CAACA,EAAe,WAAY,CAC9C,KAAM,CAAE,SAAUqC,EAAgB,OAAQpC,CAAY,EAAKD,EAC3D,GAAIqC,GAAkBpC,EAAc,CAChC,MAAMlI,EAAS9wF,EAAK,QAAQ,cAAgB,OACtCq7F,EAAmB/X,KACzB4N,GAAqBmK,EAAkBhC,EAAS,UAAW+B,EAAe,UAAWtK,CAAM,EAC3F,MAAM2I,EAAiBnW,KACvB4N,GAAqBuI,EAAgBvO,EAAQ8N,EAAa,UAAWlI,CAAM,EACtEoB,GAAiBmJ,EAAkB5B,CAAc,IAClDnD,EAA2B,IAE3ByC,EAAe,QAAQ,aACvB/4F,EAAK,eAAiBy5F,EACtBz5F,EAAK,qBAAuBq7F,EAC5Br7F,EAAK,eAAiB+4F,EAE7B,CACJ,CACJ,CACD/4F,EAAK,gBAAgB,YAAa,CAC9B,OAAAkrF,EACA,SAAAmO,EACA,MAAO8B,EACP,YAAAD,EACA,iBAAA7E,EACA,yBAAAC,CACZ,CAAS,CACJ,SACQt2F,EAAK,SAAU,CACpB,KAAM,CAAE,eAAAs7F,CAAc,EAAKt7F,EAAK,QAChCs7F,GAAkBA,EAAc,CACnC,CAMDt7F,EAAK,QAAQ,WAAa,MAC9B,CACA,SAAS21F,GAAoB31F,EAAM,CAO1BA,EAAK,SAQLA,EAAK,iBACNA,EAAK,kBAAoBA,EAAK,OAAO,mBAOzCA,EAAK,0BAA4BA,EAAK,wBAA0B,GAAQA,EAAK,mBACzEA,EAAK,OAAO,mBACZA,EAAK,OAAO,0BAChBA,EAAK,mBAAqBA,EAAK,iBAAmBA,EAAK,OAAO,kBAClE,CACA,SAAS81F,GAAgB91F,EAAM,CAC3BA,EAAK,kBACDA,EAAK,wBACDA,EAAK,iBACD,EAChB,CACA,SAAS03F,GAAc13F,EAAM,CACzBA,EAAK,cAAa,CACtB,CACA,SAASo3F,GAAkBp3F,EAAM,CAC7BA,EAAK,kBAAiB,CAC1B,CACA,SAASm3F,GAAmBn3F,EAAM,CAC9BA,EAAK,cAAgB,GACrBA,EAAK,aAAY,CACrB,CACA,SAASq3F,GAAmBr3F,EAAM,CAC9BA,EAAK,cAAgB,EACzB,CAOA,SAASs3F,GAA8Bt3F,EAAM,CACrCA,EAAK,oBAAsBA,EAAK,QAAU,CAACA,EAAK,gBAChDA,EAAK,SAAWA,EAAK,OACrBA,EAAK,cAAgB,GAE7B,CACA,SAASu3F,GAAoBv3F,EAAM,CAC/B,KAAM,CAAE,cAAAgwE,CAAa,EAAKhwE,EAAK,QAC3BgwE,GAAiBA,EAAc,SAAQ,EAAG,uBAC1CA,EAAc,OAAO,qBAAqB,EAE9ChwE,EAAK,eAAc,CACvB,CACA,SAASo2F,GAAgBp2F,EAAM,CAC3BA,EAAK,gBAAe,EACpBA,EAAK,YAAcA,EAAK,eAAiBA,EAAK,OAAS,OACvDA,EAAK,kBAAoB,EAC7B,CACA,SAAS41F,GAAmB51F,EAAM,CAC9BA,EAAK,mBAAkB,CAC3B,CACA,SAAS61F,GAAe71F,EAAM,CAC1BA,EAAK,eAAc,CACvB,CACA,SAASg3F,GAAqBh3F,EAAM,CAChCA,EAAK,qBAAoB,CAC7B,CACA,SAAS23F,GAAoBZ,EAAO,CAChCA,EAAM,mBAAkB,CAC5B,CACA,SAASgD,GAAmBh2B,EAAQ5gB,EAAO3vE,EAAG,CAC1CuwF,EAAO,UAAYU,GAAUthB,EAAM,UAAW,EAAG3vE,CAAC,EAClDuwF,EAAO,MAAQU,GAAUthB,EAAM,MAAO,EAAG3vE,CAAC,EAC1CuwF,EAAO,OAAS5gB,EAAM,OACtB4gB,EAAO,YAAc5gB,EAAM,WAC/B,CACA,SAASo4C,GAAQx3B,EAAQzsE,EAAMnP,EAAI3U,EAAG,CAClCuwF,EAAO,IAAMU,GAAUntE,EAAK,IAAKnP,EAAG,IAAK3U,CAAC,EAC1CuwF,EAAO,IAAMU,GAAUntE,EAAK,IAAKnP,EAAG,IAAK3U,CAAC,CAC9C,CACA,SAASwmH,GAAOj2B,EAAQzsE,EAAMnP,EAAI3U,EAAG,CACjC+nH,GAAQx3B,EAAO,EAAGzsE,EAAK,EAAGnP,EAAG,EAAG3U,CAAC,EACjC+nH,GAAQx3B,EAAO,EAAGzsE,EAAK,EAAGnP,EAAG,EAAG3U,CAAC,CACrC,CACA,SAASqmH,GAAoB75F,EAAM,CAC/B,OAAQA,EAAK,iBAAmBA,EAAK,gBAAgB,cAAgB,MACzE,CACA,MAAMy2F,GAA0B,CAC5B,SAAU,IACV,KAAM,CAAC,GAAK,EAAG,GAAK,CAAC,CACzB,EACM+E,GAAqBC,GAAW,OAAO,UAAc,KACvD,UAAU,WACV,UAAU,UAAU,YAAa,EAAC,SAASA,CAAM,EAM/CC,GAAaF,GAAkB,cAAc,GAAK,CAACA,GAAkB,SAAS,EAC9E,KAAK,MACLl2F,GACN,SAASq2F,GAAU/uD,EAAM,CAErBA,EAAK,IAAM8uD,GAAW9uD,EAAK,GAAG,EAC9BA,EAAK,IAAM8uD,GAAW9uD,EAAK,GAAG,CAClC,CACA,SAAS2rD,GAAS3Q,EAAK,CACnB+T,GAAU/T,EAAI,CAAC,EACf+T,GAAU/T,EAAI,CAAC,CACnB,CACA,SAASsS,GAA0Ba,EAAe1B,EAAUnO,EAAQ,CAChE,OAAQ6P,IAAkB,YACrBA,IAAkB,mBACf,CAACvK,GAAO2B,GAAYkH,CAAQ,EAAGlH,GAAYjH,CAAM,EAAG,EAAG,CACnE,CACA,SAASsN,GAAuBx4F,EAAM,CAClC,OAAOA,IAASA,EAAK,MAAQA,EAAK,QAAQ,OAC9C,CCxpDA,MAAM47F,GAAyBvG,GAAqB,CAChD,qBAAsB,CAACznC,EAAKiuC,IAAW3H,GAAYtmC,EAAK,SAAUiuC,CAAM,EACxE,cAAe,KAAO,CAClB,EAAG,SAAS,gBAAgB,YAAc,SAAS,MAAM,YAAc,EACvE,EAAG,SAAS,gBAAgB,WAAa,SAAS,MAAM,WAAa,CAC7E,GACI,kBAAmB,IAAM,EAC7B,CAAC,ECPK9S,GAAqB,CACvB,QAAS,MACb,EACM+S,GAAqBzG,GAAqB,CAC5C,cAAgBryF,IAAc,CAC1B,EAAGA,EAAS,WACZ,EAAGA,EAAS,SACpB,GACI,cAAe,IAAM,CACjB,GAAI,CAAC+lF,GAAmB,QAAS,CAC7B,MAAMgT,EAAe,IAAIH,GAAuB,CAAA,CAAE,EAClDG,EAAa,MAAM,MAAM,EACzBA,EAAa,WAAW,CAAE,aAAc,EAAM,CAAA,EAC9ChT,GAAmB,QAAUgT,CAChC,CACD,OAAOhT,GAAmB,OAC7B,EACD,eAAgB,CAAC/lF,EAAU3E,IAAU,CACjC2E,EAAS,MAAM,UAAY3E,IAAU,OAAYA,EAAQ,MAC5D,EACD,kBAAoB2E,GAAqB,OAAO,iBAAiBA,CAAQ,EAAE,WAAa,OAC5F,CAAC,ECtBD,SAASg5F,GAAuBzwC,EAAO0G,EAAS,CAC5C,GAAI2xB,GAAsBr4B,CAAK,EAAG,CAC9B,KAAM,CAAE,QAAA46B,EAAS,QAAAl2C,CAAS,EAAGsb,EAC7B,MAAO,CACH,QAAS46B,IAAY,IAAS1C,GAAe0C,CAAO,EAC9CA,EACA,OACN,QAAS1C,GAAexzC,CAAO,EAAIA,EAAU,MACzD,CACK,CACD,OAAOsb,EAAM,UAAY,GAAQ0G,EAAU,CAAA,CAC/C,CCRA,SAASgqC,GAAuB1wC,EAAO,CACnC,KAAM,CAAE,QAAA46B,EAAS,QAAAl2C,GAAY+rD,GAAuBzwC,EAAO2wC,EAAU,WAAC59B,EAAa,CAAC,EACpF,OAAO69B,UAAQ,KAAO,CAAE,QAAAhW,EAAS,QAAAl2C,CAAO,GAAK,CAACmsD,GAA0BjW,CAAO,EAAGiW,GAA0BnsD,CAAO,CAAC,CAAC,CACzH,CACA,SAASmsD,GAA0Br+F,EAAM,CACrC,OAAO,MAAM,QAAQA,CAAI,EAAIA,EAAK,KAAK,GAAG,EAAIA,CAClD,CCXA,MAAMs+F,GAAwB,KAAO,CACjC,MAAO,CAAE,EACT,UAAW,CAAE,EACb,gBAAiB,CAAE,EACnB,KAAM,CAAE,CACZ,GCAA,SAASC,GAAkB5kG,EAAQyP,EAAQokD,EAAO,CAC9C,UAAWhtD,KAAO4I,EACV,CAAC6xE,GAAc7xE,EAAO5I,CAAG,CAAC,GAAK,CAAC0sF,GAAoB1sF,EAAKgtD,CAAK,IAC9D7zD,EAAO6G,CAAG,EAAI4I,EAAO5I,CAAG,EAGpC,CACA,SAASg+F,GAAuB,CAAE,kBAAA/nB,CAAmB,EAAE4Q,EAAa,CAChE,OAAO+W,EAAO,QAAC,IAAM,CACjB,MAAMtlG,EAAQwlG,KACd,OAAAzS,GAAgB/yF,EAAOuuF,EAAa5Q,CAAiB,EAC9C,OAAO,OAAO,CAAE,EAAE39E,EAAM,KAAMA,EAAM,KAAK,CACxD,EAAO,CAACuuF,CAAW,CAAC,CACpB,CACA,SAASoX,GAASjxC,EAAO65B,EAAa,CAClC,MAAM+E,EAAY5+B,EAAM,OAAS,GAC3BtsD,EAAQ,CAAA,EAId,OAAAq9F,GAAkBr9F,EAAOkrF,EAAW5+B,CAAK,EACzC,OAAO,OAAOtsD,EAAOs9F,GAAuBhxC,EAAO65B,CAAW,CAAC,EACxDnmF,CACX,CACA,SAASw9F,GAAalxC,EAAO65B,EAAa,CAEtC,MAAMsX,EAAY,CAAA,EACZz9F,EAAQu9F,GAASjxC,EAAO65B,CAAW,EACzC,OAAI75B,EAAM,MAAQA,EAAM,eAAiB,KAErCmxC,EAAU,UAAY,GAEtBz9F,EAAM,WACFA,EAAM,iBACFA,EAAM,mBACF,OAEZA,EAAM,YACFssD,EAAM,OAAS,GACT,OACA,OAAOA,EAAM,OAAS,IAAM,IAAM,GAAG,IAE/CA,EAAM,WAAa,SAClBA,EAAM,OAASA,EAAM,YAAcA,EAAM,YAC1CmxC,EAAU,SAAW,GAEzBA,EAAU,MAAQz9F,EACXy9F,CACX,CCnDA,MAAMC,GAAuB,KAAO,CAChC,GAAGN,GAAuB,EAC1B,MAAO,CAAE,CACb,GCCA,SAASO,GAAYrxC,EAAO65B,EAAayX,EAAW7qC,EAAW,CAC3D,MAAM8qC,EAAcX,EAAAA,QAAQ,IAAM,CAC9B,MAAMtlG,EAAQ8lG,KACd,OAAAxQ,GAAct1F,EAAOuuF,EAAaqH,GAASz6B,CAAS,EAAGzG,EAAM,kBAAmBA,EAAM,KAAK,EACpF,CACH,GAAG10D,EAAM,MACT,MAAO,CAAE,GAAGA,EAAM,KAAO,CACrC,CACA,EAAO,CAACuuF,CAAW,CAAC,EAChB,GAAI75B,EAAM,MAAO,CACb,MAAMwxC,EAAY,CAAA,EAClBT,GAAkBS,EAAWxxC,EAAM,MAAOA,CAAK,EAC/CuxC,EAAY,MAAQ,CAAE,GAAGC,EAAW,GAAGD,EAAY,MACtD,CACD,OAAOA,CACX,CCfA,MAAME,GAAmB,IAAI,IAAI,CAC7B,UACA,OACA,WACA,UACA,QACA,SACA,WACA,aACA,oBACA,SACA,UACA,wBACA,mBACA,sBACA,WACA,cACA,SACA,YACA,2BACA,kBACA,sBACA,SACA,SACA,eACA,aACA,kBACA,kBACA,kBACA,YACA,eACA,UACJ,CAAC,EASD,SAASC,GAAkB1+F,EAAK,CAC5B,OAAQA,EAAI,WAAW,OAAO,GACzBA,EAAI,WAAW,MAAM,GAAKA,IAAQ,aACnCA,EAAI,WAAW,QAAQ,GACvBA,EAAI,WAAW,OAAO,GACtBA,EAAI,WAAW,OAAO,GACtBA,EAAI,WAAW,UAAU,GACzBy+F,GAAiB,IAAIz+F,CAAG,CAChC,CCpDA,IAAI2+F,GAAiB3+F,GAAQ,CAAC0+F,GAAkB1+F,CAAG,EACnD,SAAS4+F,GAAwBC,EAAa,CACtC,OAAOA,GAAgB,aAG3BF,GAAiB3+F,GAAQA,EAAI,WAAW,IAAI,EAAI,CAAC0+F,GAAkB1+F,CAAG,EAAI6+F,EAAY7+F,CAAG,EAC7F,CAcA,GAAI,CASA,MAAM8+F,EAAa,yBACnBF,GAAwB,QAAQE,CAAU,EAAE,OAAO,CACvD,MACM,CAEN,CACA,SAASC,GAAY/xC,EAAOgyC,EAAOC,EAAoB,CACnD,MAAMC,EAAgB,CAAA,EACtB,UAAWl/F,KAAOgtD,EAQVhtD,IAAQ,UAAY,OAAOgtD,EAAM,QAAW,UAE5CytB,GAAcztB,EAAMhtD,CAAG,CAAC,IAExB2+F,GAAc3+F,CAAG,GAChBi/F,IAAuB,IAAQP,GAAkB1+F,CAAG,GACpD,CAACg/F,GAAS,CAACN,GAAkB1+F,CAAG,GAEhCgtD,EAAM,WACHhtD,EAAI,WAAW,QAAQ,KAC3Bk/F,EAAcl/F,CAAG,EACbgtD,EAAMhtD,CAAG,GAGrB,OAAOk/F,CACX,CC3DA,MAAMC,GAAuB,CACzB,UACA,SACA,OACA,OACA,UACA,IACA,QACA,OACA,SACA,SACA,OACA,WACA,OACA,UACA,UACA,WACA,OACA,OACA,SACA,SACA,MACA,OACA,QACA,MACA,MACJ,EC5BA,SAASC,GAAe3rC,EAAW,CAC/B,OAKA,OAAOA,GAAc,UAIjBA,EAAU,SAAS,GAAG,EACf,GAMX,GAAA0rC,GAAqB,QAAQ1rC,CAAS,EAAI,IAItC,SAAS,KAAKA,CAAS,EAI/B,CCnBA,SAAS4rC,GAAU5rC,EAAWzG,EAAOqC,EAAK,CAAE,aAAAy3B,CAAe,EAAEwY,EAAUL,EAAqB,GAAOM,EAAO,CAEtG,MAAMhB,GADkBgB,GAASH,GAAe3rC,CAAS,EAAK4qC,GAAcH,IACzClxC,EAAO85B,EAAcwY,EAAU7rC,CAAS,EACrEyrC,EAAgBH,GAAY/xC,EAAO,OAAOyG,GAAc,SAAUwrC,CAAkB,EACpFO,EAAe/rC,IAAcgsC,EAAAA,SAAW,CAAE,GAAGP,EAAe,GAAGX,EAAa,IAAAlvC,CAAK,EAAG,GAMpF,CAAE,SAAApC,CAAU,EAAGD,EACf0yC,EAAmB9B,EAAAA,QAAQ,IAAOnjB,GAAcxtB,CAAQ,EAAIA,EAAS,IAAK,EAAGA,EAAW,CAACA,CAAQ,CAAC,EACxG,OAAOtV,EAAAA,cAAc8b,EAAW,CAC5B,GAAG+rC,EACH,SAAUE,CAClB,CAAK,CACL,CClBA,MAAMC,GACU//B,EAAAA,cAAc,IAAI,ECGlC,SAASggC,GAAYv2F,EAAM,CACvB,MAAMgmD,EAAMD,SAAO,IAAI,EACvB,OAAIC,EAAI,UAAY,OAChBA,EAAI,QAAUhmD,KAEXgmD,EAAI,OACf,CCTA,SAASwwC,GAAU,CAAE,4BAAAhT,EAA6B,kBAAAiT,CAAoB,EAAE9yC,EAAO0G,EAASgzB,EAAiB,CAKrG,MAJc,CACV,aAAcqZ,GAAiB/yC,EAAO0G,EAASgzB,EAAiBmG,CAA2B,EAC3F,YAAaiT,EAAmB,CACxC,CAEA,CACA,SAASC,GAAiB/yC,EAAO0G,EAASgzB,EAAiBsZ,EAAoB,CAC3E,MAAMpvF,EAAS,CAAA,EACTqvF,EAAeD,EAAmBhzC,EAAO,CAAE,CAAA,EACjD,UAAWhtD,KAAOigG,EACdrvF,EAAO5Q,CAAG,EAAI+1F,GAAmBkK,EAAajgG,CAAG,CAAC,EAEtD,GAAI,CAAE,QAAA4nF,EAAS,QAAAl2C,CAAS,EAAGsb,EAC3B,MAAMkzC,EAA0B7a,GAAsBr4B,CAAK,EACrDmzC,EAAkB7a,GAAct4B,CAAK,EACvC0G,GACAysC,GACA,CAACD,GACDlzC,EAAM,UAAY,KACd46B,IAAY,SACZA,EAAUl0B,EAAQ,SAClBhiB,IAAY,SACZA,EAAUgiB,EAAQ,UAE1B,IAAI0sC,EAA4B1Z,EAC1BA,EAAgB,UAAY,GAC5B,GACN0Z,EAA4BA,GAA6BxY,IAAY,GACrE,MAAMyY,EAAeD,EAA4B1uD,EAAUk2C,EAC3D,GAAIyY,GACA,OAAOA,GAAiB,WACxB,CAACpb,GAAoBob,CAAY,EAAG,CACpC,MAAMt5E,EAAO,MAAM,QAAQs5E,CAAY,EAAIA,EAAe,CAACA,CAAY,EACvE,QAAS9iI,EAAI,EAAGA,EAAIwpD,EAAK,OAAQxpD,IAAK,CAClC,MAAMs8G,EAAWG,GAAwBhtB,EAAOjmC,EAAKxpD,CAAC,CAAC,EACvD,GAAIs8G,EAAU,CACV,KAAM,CAAE,cAAAW,EAAe,WAAA/L,EAAY,GAAGt1E,CAAM,EAAK0gF,EACjD,UAAW75E,KAAO7G,EAAQ,CACtB,IAAIyiF,EAAcziF,EAAO6G,CAAG,EAC5B,GAAI,MAAM,QAAQ47E,CAAW,EAAG,CAK5B,MAAM52E,EAAQo7F,EACRxkB,EAAY,OAAS,EACrB,EACNA,EAAcA,EAAY52E,CAAK,CAClC,CACG42E,IAAgB,OAChBhrE,EAAO5Q,CAAG,EAAI47E,EAErB,CACD,UAAW57E,KAAOw6E,EACd5pE,EAAO5Q,CAAG,EAAIw6E,EAAcx6E,CAAG,CAEtC,CACJ,CACJ,CACD,OAAO4Q,CACX,CACA,MAAM0vF,GAAsB95F,GAAW,CAACwmD,EAAOsyC,IAAa,CACxD,MAAM5rC,EAAUiqC,aAAW59B,EAAa,EAClC2mB,EAAkBiX,aAAWgC,EAAe,EAC5CY,EAAO,IAAMV,GAAUr5F,EAAQwmD,EAAO0G,EAASgzB,CAAe,EACpE,OAAO4Y,EAAWiB,EAAI,EAAKX,GAAYW,CAAI,CAC/C,ECrEMC,GAAmCF,GAAmB,CACxD,4BAA6BG,GAC7B,kBAAmB3C,EACvB,CAAC,ECHK4C,GAAkCJ,GAAmB,CACvD,4BAA6BK,GAC7B,kBAAmBvC,EACvB,CAAC,ECNKwC,GAAe,CACjB,UAAW,CACP,UACA,WACA,aACA,WACA,OACA,cACA,aACA,WACH,EACD,KAAM,CAAC,MAAM,EACb,KAAM,CAAC,OAAQ,cAAc,EAC7B,MAAO,CAAC,YAAY,EACpB,MAAO,CAAC,aAAc,eAAgB,YAAY,EAClD,IAAK,CAAC,WAAY,QAAS,aAAc,aAAa,EACtD,IAAK,CAAC,QAAS,aAAc,oBAAqB,UAAU,EAC5D,OAAQ,CAAC,cAAe,kBAAmB,iBAAiB,EAC5D,OAAQ,CAAC,SAAU,UAAU,CACjC,EACA,IAAIC,GAAgB,GAKpB,SAASC,IAAyB,CAC9B,GAAID,GACA,OACJ,MAAME,EAA4B,CAAA,EAClC,UAAW/gG,KAAO4gG,GACdG,EAA0B/gG,CAAG,EAAI,CAC7B,UAAYgtD,GAAU4zC,GAAa5gG,CAAG,EAAE,KAAMV,GAAS,CAAC,CAAC0tD,EAAM1tD,CAAI,CAAC,CAChF,EAEI6mF,GAAsB4a,CAAyB,EAC/CF,GAAgB,EACpB,CAIA,SAASG,IAAmC,CACxC,OAAAF,KACOza,GAAqB,CAChC,CC1CA,SAAS4a,GAAaC,EAAU,CAC5B,MAAMhb,EAAqB8a,KAC3B,UAAWhhG,KAAOkhG,EACdhb,EAAmBlmF,CAAG,EAAI,CACtB,GAAGkmF,EAAmBlmF,CAAG,EACzB,GAAGkhG,EAASlhG,CAAG,CAC3B,EAEImmF,GAAsBD,CAAkB,CAC5C,CCZA,MAAMib,GAAwB,OAAO,IAAI,uBAAuB,ECOhE,SAASC,GAAava,EAAapV,EAAe4vB,EAAa,CAQ3D,MAAMC,EAAuBlyC,SAAOiyC,CAAW,EAC/CE,EAAAA,mBAAmB,IAAM,CACrBD,EAAqB,QAAUD,CACvC,CAAK,EAED,MAAMG,EAAapyC,SAAO,IAAI,EAC9B,OAAOU,EAAAA,YAAarrD,GAAa,CACzBA,GACAoiF,EAAY,UAAUpiF,CAAQ,EAE9BgtE,IACAhtE,EAAWgtE,EAAc,MAAMhtE,CAAQ,EAAIgtE,EAAc,WAE7D,MAAMpiB,EAAMiyC,EAAqB,QACjC,GAAI,OAAOjyC,GAAQ,WACf,GAAI5qD,EAAU,CACV,MAAMmrD,EAAUP,EAAI5qD,CAAQ,EACxB,OAAOmrD,GAAY,aACnB4xC,EAAW,QAAU5xC,EAE5B,MACQ4xC,EAAW,SAChBA,EAAW,QAAO,EAClBA,EAAW,QAAU,MAGrBnyC,EAAI5qD,CAAQ,OAGX4qD,IACLA,EAAI,QAAU5qD,EAE1B,EAAO,CAACgtE,CAAa,CAAC,CACtB,CC1CA,MAAMgwB,GAA2B7hC,EAAa,cAAC,EAAE,ECNjD,SAAS8hC,GAAYryC,EAAK,CACtB,OAAQA,GACJ,OAAOA,GAAQ,UACf,OAAO,UAAU,eAAe,KAAKA,EAAK,SAAS,CAC3D,CCAA,MAAMsyC,GCJY,OAAO,OAAW,IDIUC,EAAAA,gBAAkBryC,EAAS,UEOzE,SAASsyC,GAAiBpuC,EAAWozB,EAAa75B,EAAO80C,EAAqBC,EAA2BxC,EAAO,CAC5G,KAAM,CAAE,cAAen5F,CAAQ,EAAGu3F,EAAU,WAAC59B,EAAa,EACpDiiC,EAAcrE,aAAW99B,EAAW,EACpC6mB,EAAkBiX,aAAWgC,EAAe,EAC5CsC,EAAetE,aAAW79B,EAAmB,EAC7C6mB,EAAsBsb,EAAa,cACnCvmB,EAAiBumB,EAAa,eAC9BC,EAAmB9yC,SAAO,IAAI,EAK9B+yC,EAAiB/yC,SAAO,EAAK,EAInC0yC,EACIA,GACIE,EAAY,SAChB,CAACE,EAAiB,SAAWJ,IAC7BI,EAAiB,QAAUJ,EAAoBruC,EAAW,CACtD,YAAAozB,EACA,OAAAzgF,EACA,MAAA4mD,EACA,gBAAA05B,EACA,sBAAuBA,EACjBA,EAAgB,UAAY,GAC5B,GACN,oBAAAC,EACA,eAAAjL,EACA,MAAA6jB,CACZ,CAAS,EAOG4C,EAAe,SAAWD,EAAiB,UAC3CA,EAAiB,QAAQ,uBAAyB,KAG1D,MAAMzwB,EAAgBywB,EAAiB,QAKjCE,EAA2BzE,aAAW8D,EAAwB,EAChEhwB,GACA,CAACA,EAAc,YACfswB,IACCtwB,EAAc,OAAS,QAAUA,EAAc,OAAS,QACzDqlB,GAAqBoL,EAAiB,QAASl1C,EAAO+0C,EAA2BK,CAAwB,EAE7G,MAAMC,EAAYjzC,SAAO,EAAK,EAC9BmyC,EAAAA,mBAAmB,IAAM,CAKjB9vB,GAAiB4wB,EAAU,SAC3B5wB,EAAc,OAAOzkB,EAAO05B,CAAe,CAEvD,CAAK,EAKD,MAAM4b,EAAoBt1C,EAAM+tB,EAA4B,EACtDwnB,EAAenzC,EAAAA,OAAO,EAAQkzC,GAChC,OAAO,OAAW,KAClB,CAAC,OAAO,0BAA0BA,CAAiB,GACnD,OAAO,8BAA8BA,CAAiB,CAAC,EAC3D,OAAAX,GAA0B,IAAM,CAK5BQ,EAAe,QAAU,GACpB1wB,IAEL4wB,EAAU,QAAU,GACpB,OAAO,gBAAkB,GACzB5wB,EAAc,eAAc,EAC5BA,EAAc,wBAAuB,EAWjC8wB,EAAa,SAAW9wB,EAAc,gBACtCA,EAAc,eAAe,iBAEzC,CAAK,EACDliB,EAAAA,UAAU,IAAM,CACPkiB,IAED,CAAC8wB,EAAa,SAAW9wB,EAAc,gBACvCA,EAAc,eAAe,iBAE7B8wB,EAAa,UAEb,eAAe,IAAM,CACjB,OAAO,8BAA8BD,CAAiB,CACtE,CAAa,EACDC,EAAa,QAAU,IAM3B9wB,EAAc,iBAAmB,OACzC,CAAK,EACMA,CACX,CACA,SAASqlB,GAAqBrlB,EAAezkB,EAAO+0C,EAA2BS,EAAwB,CACnG,KAAM,CAAE,SAAA5V,EAAU,OAAAD,EAAQ,KAAA8V,EAAM,gBAAAC,EAAiB,aAAAC,EAAc,WAAAC,EAAY,aAAAC,EAAc,gBAAAC,CAAkB,EAAG91C,EAC9GykB,EAAc,WAAa,IAAIswB,EAA0BtwB,EAAc,aAAczkB,EAAM,uBAAuB,EAC5G,OACA+1C,GAAyBtxB,EAAc,MAAM,CAAC,EACpDA,EAAc,WAAW,WAAW,CAChC,SAAAmb,EACA,OAAAD,EACA,oBAAqB,EAAQ8V,GAAUC,GAAmBhB,GAAYgB,CAAe,EACrF,cAAAjxB,EAQA,cAAe,OAAOkb,GAAW,SAAWA,EAAS,OACrD,uBAAA6V,EACA,UAAWM,EACX,aAAAH,EACA,WAAAC,EACA,aAAAC,CACR,CAAK,CACL,CACA,SAASE,GAAyBtxB,EAAe,CAC7C,GAAKA,EAEL,OAAOA,EAAc,QAAQ,kBAAoB,GAC3CA,EAAc,WACdsxB,GAAyBtxB,EAAc,MAAM,CACvD,CCtIA,SAASuxB,GAAsBvvC,EAAW,CAAE,mBAAAwrC,EAAqB,GAAO,KAAAlkG,GAAS,CAAA,EAAIkoG,EAAmBnB,EAAqB,CACzHmB,GAAqBhC,GAAagC,CAAiB,EAMnD,MAAM1D,EAAQxkG,EAAOA,IAAS,MAAQqkG,GAAe3rC,CAAS,EACxDyvC,EAAiB3D,EAAQmB,GAAoBF,GACnD,SAAS2C,EAAmBn2C,EAAOq0C,EAAa,CAK5C,IAAI+B,EACJ,MAAMC,EAAiB,CACnB,GAAG1F,EAAAA,WAAW79B,EAAmB,EACjC,GAAG9S,EACH,SAAUs2C,GAAYt2C,CAAK,CACvC,EACc,CAAE,SAAAsyC,CAAU,EAAG+D,EACf3vC,EAAUgqC,GAAuB1wC,CAAK,EACtC65B,EAAcqc,EAAel2C,EAAOsyC,CAAQ,EAClD,GAAI,CAACA,GAAY,OAAO,OAAW,IAAa,CAC5CiE,GAAcF,EAAgBJ,CAAiB,EAC/C,MAAMO,EAAmBC,GAA2BJ,CAAc,EAClED,EAAgBI,EAAiB,cAOjC9vC,EAAQ,cAAgBmuC,GAAiBpuC,EAAWozB,EAAawc,EAAgBvB,EAAqB0B,EAAiB,eAAgBjE,CAAK,CAC/I,CAKD,OAAQmE,GAAAA,KAAK3jC,GAAc,SAAU,CAAE,MAAOrM,EAAS,SAAU,CAAC0vC,GAAiB1vC,EAAQ,cAAiBiwC,OAAIP,EAAe,CAAE,cAAe1vC,EAAQ,cAAe,GAAG2vC,CAAc,CAAE,EAAK,KAAMhE,GAAU5rC,EAAWzG,EAAOo0C,GAAava,EAAanzB,EAAQ,cAAe2tC,CAAW,EAAGxa,EAAayY,EAAUL,EAAoBM,CAAK,CAAC,CAAC,CAAE,CACvV,CACD4D,EAAmB,YAAc,UAAU,OAAO1vC,GAAc,SAC1DA,EACA,UAAUA,EAAU,aAAeA,EAAU,MAAQ,EAAE,GAAG,GAChE,MAAMmwC,EAA4BC,aAAWV,CAAkB,EAC/D,OAAAS,EAA0BzC,EAAqB,EAAI1tC,EAC5CmwC,CACX,CACA,SAASN,GAAY,CAAE,SAAA1W,GAAY,CAC/B,MAAMkX,EAAgBnG,EAAAA,WAAWh+B,EAAkB,EAAE,GACrD,OAAOmkC,GAAiBlX,IAAa,OAC/BkX,EAAgB,IAAMlX,EACtBA,CACV,CACA,SAAS2W,GAAcF,EAAgBJ,EAAmB,CACtD,MAAMc,EAAWpG,EAAAA,WAAW99B,EAAW,EAAE,OAKzC,GAAI,CAAA,EAAY,WAAa,cACzBojC,GACAc,EAAU,CACV,MAAMC,EAAgB,mJACtBX,EAAe,aACT1mC,GAAQ,GAAOqnC,EAAe,kBAAkB,EAChDpnC,GAAU,GAAOonC,EAAe,kBAAkB,CAC3D,CACL,CACA,SAASP,GAA2Bz2C,EAAO,CACvC,MAAMk5B,EAAqB8a,KACrB,CAAE,KAAAyB,EAAM,OAAA9V,CAAQ,EAAGzG,EACzB,GAAI,CAACuc,GAAQ,CAAC9V,EACV,MAAO,GACX,MAAMsX,EAAW,CAAE,GAAGxB,EAAM,GAAG9V,CAAM,EACrC,MAAO,CACH,cAAe8V,GAAM,UAAUz1C,CAAK,GAAK2/B,GAAQ,UAAU3/B,CAAK,EAC1Di3C,EAAS,cACT,OACN,eAAgBA,EAAS,cACjC,CACA,CCzGA,MAAMC,GAAyB,CAACzwC,EAAWx4D,IAIzBA,EAAQ,OAASmkG,GAAe3rC,CAAS,EAEjD,IAAI+6B,GAAiBvzF,CAAO,EAC5B,IAAIiyF,GAAkBjyF,EAAS,CAC7B,gBAAiBw4D,IAAcgsC,EAAQ,QACnD,CAAS,ECXT,MAAM0E,WAAyBnc,EAAQ,CAMnC,YAAYvmF,EAAM,CACd,MAAMA,CAAI,EACVA,EAAK,iBAAmBA,EAAK,eAAiBwtF,GAAqBxtF,CAAI,EAC1E,CACD,qCAAsC,CAClC,KAAM,CAAE,QAAAiwC,CAAS,EAAG,KAAK,KAAK,SAAQ,EAClCuzC,GAAoBvzC,CAAO,IAC3B,KAAK,gBAAkBA,EAAQ,UAAU,KAAK,IAAI,EAEzD,CAID,OAAQ,CACJ,KAAK,oCAAmC,CAC3C,CACD,QAAS,CACL,KAAM,CAAE,QAAAA,CAAS,EAAG,KAAK,KAAK,SAAQ,EAChC,CAAE,QAAS0yD,CAAa,EAAG,KAAK,KAAK,WAAa,GACpD1yD,IAAY0yD,GACZ,KAAK,oCAAmC,CAE/C,CACD,SAAU,CACN,KAAK,KAAK,eAAe,QACzB,KAAK,kBAAe,CACvB,CACL,CCjCA,IAAInoH,GAAK,EACT,MAAMooH,WAA6Brc,EAAQ,CACvC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,GAAK/rG,KACV,KAAK,eAAiB,EACzB,CACD,QAAS,CACL,GAAI,CAAC,KAAK,KAAK,gBACX,OACJ,KAAM,CAAE,UAAAqoH,EAAW,eAAAvH,CAAc,EAAK,KAAK,KAAK,gBAC1C,CAAE,UAAWwH,CAAe,EAAG,KAAK,KAAK,qBAAuB,GACtE,GAAI,CAAC,KAAK,KAAK,gBAAkBD,IAAcC,EAC3C,OAEJ,GAAID,GAAaC,IAAkB,GAAO,CAMtC,GAAI,KAAK,eAAgB,CACrB,KAAM,CAAE,QAAA3c,EAAS,OAAA3N,CAAM,EAAK,KAAK,KAAK,WACtC,GAAI,OAAO2N,GAAY,UAClB,OAAOA,GAAY,UAChBA,IAAY,MACZ,CAAC,MAAM,QAAQA,CAAO,EAAI,CAC9B,MAAM/N,EAAWK,GAAe,KAAK,KAAM0N,EAAS3N,CAAM,EAC1D,GAAIJ,EAAU,CACV,KAAM,CAAE,WAAApL,EAAY,cAAA+L,EAAe,GAAGrhF,CAAM,EAAK0gF,EACjD,UAAW75E,KAAO7G,EACd,KAAK,KACA,SAAS6G,CAAG,GACX,KAAK7G,EAAO6G,CAAG,CAAC,CAE7B,CACJ,CACD,KAAK,KAAK,eAAe,QACzB,KAAK,KAAK,eAAe,gBAC5B,MAEG,KAAK,KAAK,eAAe,UAAU,OAAQ,EAAK,EAEpD,KAAK,eAAiB,GACtB,MACH,CACD,MAAMwkG,EAAgB,KAAK,KAAK,eAAe,UAAU,OAAQ,CAACF,CAAS,EACvEvH,GAAkB,CAACuH,GACnBE,EAAc,KAAK,IAAM,CACrB,KAAK,eAAiB,GACtBzH,EAAe,KAAK,EAAE,CACtC,CAAa,CAER,CACD,OAAQ,CACJ,KAAM,CAAE,SAAA0H,EAAU,eAAA1H,CAAgB,EAAG,KAAK,KAAK,iBAAmB,GAC9DA,GACAA,EAAe,KAAK,EAAE,EAEtB0H,IACA,KAAK,QAAUA,EAAS,KAAK,EAAE,EAEtC,CACD,SAAU,CAAG,CACjB,CC/DA,MAAMztB,GAAa,CACf,UAAW,CACP,QAASmtB,EACZ,EACD,KAAM,CACF,QAASE,EACZ,CACL,ECRA,SAASK,GAAiB1qF,EAAO,CAC7B,MAAO,CACH,MAAO,CACH,EAAGA,EAAM,MACT,EAAGA,EAAM,KACZ,CACT,CACA,CACA,MAAM2qF,GAAkBj+F,GAAasT,GAAUqmE,GAAiBrmE,CAAK,GAAKtT,EAAQsT,EAAO0qF,GAAiB1qF,CAAK,CAAC,ECPhH,SAAS4qF,GAAgBzrG,EAAQ2Z,EAAWpM,EAASzL,EAAS,CAC1D,OAAO06F,GAAYx8F,EAAQ2Z,EAAW6xF,GAAej+F,CAAO,EAAGzL,CAAO,CAC1E,CCJA,MAAM4pG,GAAmB,CAAC,CAAE,QAAA5rD,KACjBA,EAAUA,EAAQ,cAAc,YAAc,KCFnDva,GAAW,CAAC77D,EAAG8Z,IAAM,KAAK,IAAI9Z,EAAI8Z,CAAC,EACzC,SAASmoH,GAAWjiI,EAAG8Z,EAAG,CAEtB,MAAMooH,EAASrmE,GAAS77D,EAAE,EAAG8Z,EAAE,CAAC,EAC1BqoH,EAAStmE,GAAS77D,EAAE,EAAG8Z,EAAE,CAAC,EAChC,OAAO,KAAK,KAAKooH,GAAU,EAAIC,GAAU,CAAC,CAC9C,CCAA,MAAMC,GAA+B,IAAI,IAAI,CAAC,OAAQ,QAAQ,CAAC,EAI/D,MAAMC,EAAW,CACb,YAAYlrF,EAAOmrF,EAAU,CAAE,mBAAA1a,EAAoB,cAAA2a,EAAgB,OAAQ,iBAAAC,EAAmB,GAAO,kBAAAC,EAAoB,EAAG,QAAAzmG,CAAO,EAAM,CAAA,EAAI,CA+FzI,GA3FA,KAAK,WAAa,KAIlB,KAAK,cAAgB,KAIrB,KAAK,kBAAoB,KAMzB,KAAK,qBAAuB,KAI5B,KAAK,SAAW,GAIhB,KAAK,cAAgB,OAKrB,KAAK,gBAAkB,IAAI,IAK3B,KAAK,sBAAwB,KAC7B,KAAK,gBAAmBmb,GAAU,CAC9B,KAAK,aAAaA,EAAM,MAAM,CAC1C,EACQ,KAAK,eAAiB,IAAM,CACxB,KAAK,aAAa,MAAM,CACpC,EACQ,KAAK,YAAc,IAAM,CACrB,GAAI,EAAE,KAAK,eAAiB,KAAK,mBAC7B,OAGA,KAAK,uBACL,KAAK,kBAAoBouE,GAAe,KAAK,qBAAsB,KAAK,kBAAkB,GAE9F,MAAMjxB,EAAOouC,GAAW,KAAK,kBAAmB,KAAK,OAAO,EACtDC,EAAe,KAAK,aAAe,KAInCC,EAA0BX,GAAW3tC,EAAK,OAAQ,CAAE,EAAG,EAAG,EAAG,CAAC,CAAE,GAAK,KAAK,kBAChF,GAAI,CAACquC,GAAgB,CAACC,EAClB,OACJ,KAAM,CAAE,MAAA1nE,CAAO,EAAGo5B,EACZ,CAAE,UAAA0K,CAAW,EAAGjB,GACtB,KAAK,QAAQ,KAAK,CAAE,GAAG7iC,EAAO,UAAA8jC,CAAS,CAAE,EACzC,KAAM,CAAE,QAAA6jC,EAAS,OAAAC,GAAW,KAAK,SAC5BH,IACDE,GAAWA,EAAQ,KAAK,cAAevuC,CAAI,EAC3C,KAAK,WAAa,KAAK,eAE3BwuC,GAAUA,EAAO,KAAK,cAAexuC,CAAI,CACrD,EACQ,KAAK,kBAAoB,CAACn9C,EAAOm9C,IAAS,CACtC,KAAK,cAAgBn9C,EACrB,KAAK,qBAAuBm9C,EAC5B,KAAK,kBAAoBixB,GAAejxB,EAAM,KAAK,kBAAkB,EAErEjc,GAAM,OAAO,KAAK,YAAa,EAAI,CAC/C,EACQ,KAAK,gBAAkB,CAAClhC,EAAOm9C,IAAS,CACpC,KAAK,IAAG,EACR,KAAM,CAAE,MAAAyuC,EAAO,aAAAC,EAAc,gBAAAC,CAAe,EAAK,KAAK,SAMtD,IAHI,KAAK,kBAAoB,CAAC,KAAK,aAC/BA,GAAmBA,EAAe,EAElC,EAAE,KAAK,eAAiB,KAAK,mBAC7B,OACJ,MAAMC,EAAUR,GAAWvrF,EAAM,OAAS,gBACpC,KAAK,kBACLouE,GAAejxB,EAAM,KAAK,kBAAkB,EAAG,KAAK,OAAO,EAC7D,KAAK,YAAcyuC,GACnBA,EAAM5rF,EAAO+rF,CAAO,EAExBF,GAAgBA,EAAa7rF,EAAO+rF,CAAO,CACvD,EAEY,CAAC1lB,GAAiBrmE,CAAK,EACvB,OACJ,KAAK,iBAAmBqrF,EACxB,KAAK,SAAWF,EAChB,KAAK,mBAAqB1a,EAC1B,KAAK,kBAAoB6a,EACzB,KAAK,cAAgBF,GAAiB,OACtC,MAAMjuC,EAAOutC,GAAiB1qF,CAAK,EAC7BgsF,EAAc5d,GAAejxB,EAAM,KAAK,kBAAkB,EAC1D,CAAE,MAAAp5B,CAAO,EAAGioE,EACZ,CAAE,UAAAnkC,CAAW,EAAGjB,GACtB,KAAK,QAAU,CAAC,CAAE,GAAG7iC,EAAO,UAAA8jC,CAAW,CAAA,EACvC,KAAM,CAAE,eAAAokC,CAAgB,EAAGd,EAC3Bc,GACIA,EAAejsF,EAAOurF,GAAWS,EAAa,KAAK,OAAO,CAAC,EAI/D,MAAM5mB,EAAe,CAAE,QAAS,GAAM,QAAS,EAAI,EACnD,KAAK,gBAAkBjiB,GAAKynC,GAAgB,KAAK,cAAe,cAAe,KAAK,kBAAmBxlB,CAAY,EAAGwlB,GAAgB,KAAK,cAAe,YAAa,KAAK,gBAAiBxlB,CAAY,EAAGwlB,GAAgB,KAAK,cAAe,gBAAiB,KAAK,gBAAiBxlB,CAAY,CAAC,EAEhSvgF,GACA,KAAK,oBAAoBA,CAAO,CAEvC,CAID,oBAAoBA,EAAS,CAEzB,IAAIo6C,EAAUp6C,EAAQ,cACtB,KAAOo6C,GAAS,CACZ,MAAMv4C,EAAQ,iBAAiBu4C,CAAO,GAClCgsD,GAAe,IAAIvkG,EAAM,SAAS,GAClCukG,GAAe,IAAIvkG,EAAM,SAAS,IAClC,KAAK,gBAAgB,IAAIu4C,EAAS,CAC9B,EAAGA,EAAQ,WACX,EAAGA,EAAQ,SAC/B,CAAiB,EAELA,EAAUA,EAAQ,aACrB,CAED,KAAK,gBAAgB,IAAI,OAAQ,CAC7B,EAAG,OAAO,QACV,EAAG,OAAO,OACtB,CAAS,EAED,OAAO,iBAAiB,SAAU,KAAK,gBAAiB,CACpD,QAAS,EACrB,CAAS,EAED,OAAO,iBAAiB,SAAU,KAAK,cAAc,EACrD,KAAK,sBAAwB,IAAM,CAC/B,OAAO,oBAAoB,SAAU,KAAK,gBAAiB,CACvD,QAAS,EACzB,CAAa,EACD,OAAO,oBAAoB,SAAU,KAAK,cAAc,CACpE,CACK,CAOD,aAAa9/C,EAAQ,CACjB,MAAMyuF,EAAU,KAAK,gBAAgB,IAAIzuF,CAAM,EAC/C,GAAI,CAACyuF,EACD,OACJ,MAAMse,EAAW/sG,IAAW,OACtB8/C,EAAUitD,EACV,CAAE,EAAG,OAAO,QAAS,EAAG,OAAO,OAAS,EACxC,CACE,EAAG/sG,EAAO,WACV,EAAGA,EAAO,SAC1B,EACcyrD,EAAQ,CAAE,EAAG3L,EAAQ,EAAI2uC,EAAQ,EAAG,EAAG3uC,EAAQ,EAAI2uC,EAAQ,CAAC,EAC9DhjC,EAAM,IAAM,GAAKA,EAAM,IAAM,IAE7BshD,EAEI,KAAK,oBACL,KAAK,kBAAkB,MAAM,GAAKthD,EAAM,EACxC,KAAK,kBAAkB,MAAM,GAAKA,EAAM,GAKxC,KAAK,QAAQ,OAAS,IACtB,KAAK,QAAQ,CAAC,EAAE,GAAKA,EAAM,EAC3B,KAAK,QAAQ,CAAC,EAAE,GAAKA,EAAM,GAGnC,KAAK,gBAAgB,IAAIzrD,EAAQ8/C,CAAO,EACxCiC,GAAM,OAAO,KAAK,YAAa,EAAI,EACtC,CACD,eAAeiqD,EAAU,CACrB,KAAK,SAAWA,CACnB,CACD,KAAM,CACF,KAAK,iBAAmB,KAAK,kBAC7B,KAAK,uBAAyB,KAAK,wBACnC,KAAK,gBAAgB,QACrBpjC,GAAY,KAAK,WAAW,CAC/B,CACL,CACA,SAASqmB,GAAejxB,EAAMszB,EAAoB,CAC9C,OAAOA,EAAqB,CAAE,MAAOA,EAAmBtzB,EAAK,KAAK,CAAG,EAAGA,CAC5E,CACA,SAASgvC,GAActjI,EAAG8Z,EAAG,CACzB,MAAO,CAAE,EAAG9Z,EAAE,EAAI8Z,EAAE,EAAG,EAAG9Z,EAAE,EAAI8Z,EAAE,CAAC,CACvC,CACA,SAAS4oH,GAAW,CAAE,MAAAxnE,CAAO,EAAEitB,EAAS,CACpC,MAAO,CACH,MAAAjtB,EACA,MAAOooE,GAAcpoE,EAAOqoE,GAAgBp7C,CAAO,CAAC,EACpD,OAAQm7C,GAAcpoE,EAAOsoE,GAAiBr7C,CAAO,CAAC,EACtD,SAAUs7C,GAAYt7C,EAAS,EAAG,CAC1C,CACA,CACA,SAASq7C,GAAiBr7C,EAAS,CAC/B,OAAOA,EAAQ,CAAC,CACpB,CACA,SAASo7C,GAAgBp7C,EAAS,CAC9B,OAAOA,EAAQA,EAAQ,OAAS,CAAC,CACrC,CACA,SAASs7C,GAAYt7C,EAASu7C,EAAW,CACrC,GAAIv7C,EAAQ,OAAS,EACjB,MAAO,CAAE,EAAG,EAAG,EAAG,CAAC,EAEvB,IAAIztF,EAAIytF,EAAQ,OAAS,EACrBw7C,EAAmB,KACvB,MAAMtqE,EAAYkqE,GAAgBp7C,CAAO,EACzC,KAAOztF,GAAK,IACRipI,EAAmBx7C,EAAQztF,CAAC,EACxB,EAAA2+D,EAAU,UAAYsqE,EAAiB,UACvChpC,GAAsB+oC,CAAS,KAGnChpI,IAEJ,GAAI,CAACipI,EACD,MAAO,CAAE,EAAG,EAAG,EAAG,CAAC,EASnBA,IAAqBx7C,EAAQ,CAAC,GAC9BA,EAAQ,OAAS,GACjB9uB,EAAU,UAAYsqE,EAAiB,UACnChpC,GAAsB+oC,CAAS,EAAI,IACvCC,EAAmBx7C,EAAQ,CAAC,GAEhC,MAAM7nB,EAAOu6B,GAAsBxhC,EAAU,UAAYsqE,EAAiB,SAAS,EACnF,GAAIrjE,IAAS,EACT,MAAO,CAAE,EAAG,EAAG,EAAG,CAAC,EAEvB,MAAM+nC,EAAkB,CACpB,GAAIhvC,EAAU,EAAIsqE,EAAiB,GAAKrjE,EACxC,GAAIjH,EAAU,EAAIsqE,EAAiB,GAAKrjE,CAChD,EACI,OAAI+nC,EAAgB,IAAM,MACtBA,EAAgB,EAAI,GAEpBA,EAAgB,IAAM,MACtBA,EAAgB,EAAI,GAEjBA,CACX,CC/QA,SAASu7B,GAAiB1oE,EAAO,CAAE,IAAApU,EAAK,IAAAtM,CAAG,EAAIqpF,EAAS,CACpD,OAAI/8E,IAAQ,QAAaoU,EAAQpU,EAE7BoU,EAAQ2oE,EACFxgC,GAAUv8C,EAAKoU,EAAO2oE,EAAQ,GAAG,EACjC,KAAK,IAAI3oE,EAAOpU,CAAG,EAEpBtM,IAAQ,QAAa0gB,EAAQ1gB,IAElC0gB,EAAQ2oE,EACFxgC,GAAU7oD,EAAK0gB,EAAO2oE,EAAQ,GAAG,EACjC,KAAK,IAAI3oE,EAAO1gB,CAAG,GAEtB0gB,CACX,CAMA,SAAS4oE,GAA4Bt4D,EAAM1kB,EAAKtM,EAAK,CACjD,MAAO,CACH,IAAKsM,IAAQ,OAAY0kB,EAAK,IAAM1kB,EAAM,OAC1C,IAAKtM,IAAQ,OACPgxB,EAAK,IAAMhxB,GAAOgxB,EAAK,IAAMA,EAAK,KAClC,MACd,CACA,CAKA,SAASu4D,GAAwB7M,EAAW,CAAE,IAAAz6E,EAAK,KAAAC,EAAM,OAAAkvB,EAAQ,MAAAhP,GAAS,CACtE,MAAO,CACH,EAAGknE,GAA4B5M,EAAU,EAAGx6E,EAAMkgB,CAAK,EACvD,EAAGknE,GAA4B5M,EAAU,EAAGz6E,EAAKmvB,CAAM,CAC/D,CACA,CAIA,SAASo4D,GAA4BC,EAAYC,EAAiB,CAC9D,IAAIp9E,EAAMo9E,EAAgB,IAAMD,EAAW,IACvCzpF,EAAM0pF,EAAgB,IAAMD,EAAW,IAG3C,OAAIC,EAAgB,IAAMA,EAAgB,IACtCD,EAAW,IAAMA,EAAW,MAC5B,CAACn9E,EAAKtM,CAAG,EAAI,CAACA,EAAKsM,CAAG,GAEnB,CAAE,IAAAA,EAAK,IAAAtM,EAClB,CAIA,SAAS2pF,GAAwBjN,EAAWkN,EAAgB,CACxD,MAAO,CACH,EAAGJ,GAA4B9M,EAAU,EAAGkN,EAAe,CAAC,EAC5D,EAAGJ,GAA4B9M,EAAU,EAAGkN,EAAe,CAAC,CACpE,CACA,CAKA,SAASC,GAAWt+F,EAAQzP,EAAQ,CAChC,IAAIuyD,EAAS,GACb,MAAMy7C,EAAenV,GAAWppF,CAAM,EAChCw+F,EAAepV,GAAW74F,CAAM,EACtC,OAAIiuG,EAAeD,EACfz7C,EAAS9jB,GAASzuC,EAAO,IAAKA,EAAO,IAAMguG,EAAcv+F,EAAO,GAAG,EAE9Du+F,EAAeC,IACpB17C,EAAS9jB,GAASh/B,EAAO,IAAKA,EAAO,IAAMw+F,EAAcjuG,EAAO,GAAG,GAEhEN,GAAM,EAAG,EAAG6yD,CAAM,CAC7B,CAIA,SAAS27C,GAAsB1a,EAAQ2a,EAAa,CAChD,MAAMC,EAAsB,CAAA,EAC5B,OAAID,EAAY,MAAQ,SACpBC,EAAoB,IAAMD,EAAY,IAAM3a,EAAO,KAEnD2a,EAAY,MAAQ,SACpBC,EAAoB,IAAMD,EAAY,IAAM3a,EAAO,KAEhD4a,CACX,CACA,MAAMC,GAAiB,IAIvB,SAASC,GAAmBC,EAAcF,GAAgB,CACtD,OAAIE,IAAgB,GAChBA,EAAc,EAETA,IAAgB,KACrBA,EAAcF,IAEX,CACH,EAAGG,GAAmBD,EAAa,OAAQ,OAAO,EAClD,EAAGC,GAAmBD,EAAa,MAAO,QAAQ,CAC1D,CACA,CACA,SAASC,GAAmBD,EAAaE,EAAUC,EAAU,CACzD,MAAO,CACH,IAAKC,GAAoBJ,EAAaE,CAAQ,EAC9C,IAAKE,GAAoBJ,EAAaG,CAAQ,CACtD,CACA,CACA,SAASC,GAAoBJ,EAAaK,EAAO,CAC7C,OAAO,OAAOL,GAAgB,SACxBA,EACAA,EAAYK,CAAK,GAAK,CAChC,CCnHA,MAAMC,GAAsB,IAAI,QAChC,MAAMC,EAA0B,CAC5B,YAAYx2B,EAAe,CACvB,KAAK,aAAe,KACpB,KAAK,WAAa,GAClB,KAAK,iBAAmB,KACxB,KAAK,YAAc,CAAE,EAAG,EAAG,EAAG,GAI9B,KAAK,YAAc,GACnB,KAAK,sBAAwB,GAI7B,KAAK,QAAUsT,KAIf,KAAK,mBAAqB,KAI1B,KAAK,cAAgB,KACrB,KAAK,cAAgBtT,CACxB,CACD,MAAMy2B,EAAa,CAAE,aAAAC,EAAe,GAAO,kBAAA7C,CAAmB,EAAG,GAAI,CAIjE,KAAM,CAAE,gBAAA5e,CAAe,EAAK,KAAK,cACjC,GAAIA,GAAmBA,EAAgB,YAAc,GACjD,OACJ,MAAMuf,EAAkBjsF,GAAU,CAC1BmuF,GACA,KAAK,aAAazD,GAAiB1qF,CAAK,EAAE,KAAK,EAEnD,KAAK,cAAa,CAC9B,EACc0rF,EAAU,CAAC1rF,EAAOm9C,IAAS,CAE7B,KAAM,CAAE,KAAAsrC,EAAM,gBAAA2F,EAAiB,YAAAC,CAAW,EAAK,KAAK,WACpD,GAAI5F,GAAQ,CAAC2F,IACL,KAAK,cACL,KAAK,aAAY,EACrB,KAAK,aAAenpB,GAAYwjB,CAAI,EAEhC,CAAC,KAAK,cACN,OAER,KAAK,mBAAqBzoF,EAC1B,KAAK,cAAgBm9C,EACrB,KAAK,WAAa,GAClB,KAAK,iBAAmB,KACxB,KAAK,mBAAkB,EACnB,KAAK,cAAc,aACnB,KAAK,cAAc,WAAW,mBAAqB,GACnD,KAAK,cAAc,WAAW,OAAS,QAK3C28B,GAAUzlD,GAAS,CACf,IAAI4K,EAAU,KAAK,mBAAmB5K,CAAI,EAAE,IAAK,GAAI,EAIrD,GAAIy1B,GAAQ,KAAK7qB,CAAO,EAAG,CACvB,KAAM,CAAE,WAAA4yC,CAAU,EAAK,KAAK,cAC5B,GAAIA,GAAcA,EAAW,OAAQ,CACjC,MAAMyc,EAAezc,EAAW,OAAO,UAAUx9C,CAAI,EACjDi6D,IAEArvD,EADe+4C,GAAWsW,CAAY,GAClB,WAAWrvD,CAAO,EAAI,KAEjD,CACJ,CACD,KAAK,YAAY5K,CAAI,EAAI4K,CACzC,CAAa,EAEGovD,GACAntD,GAAM,OAAO,IAAMmtD,EAAYruF,EAAOm9C,CAAI,EAAG,GAAO,EAAI,EAE5DwjB,GAAqB,KAAK,cAAe,WAAW,EACpD,KAAM,CAAE,eAAA4tB,CAAc,EAAK,KAAK,cAChCA,GAAkBA,EAAe,UAAU,YAAa,EAAI,CACxE,EACc5C,EAAS,CAAC3rF,EAAOm9C,IAAS,CAC5B,KAAK,mBAAqBn9C,EAC1B,KAAK,cAAgBm9C,EACrB,KAAM,CAAE,gBAAAixC,EAAiB,kBAAAI,EAAmB,gBAAAC,EAAiB,OAAAC,GAAY,KAAK,WAE9E,GAAI,CAACN,GAAmB,CAAC,KAAK,aAC1B,OACJ,KAAM,CAAE,OAAApjF,CAAQ,EAAGmyC,EAEnB,GAAIqxC,GAAqB,KAAK,mBAAqB,KAAM,CACrD,KAAK,iBAAmBG,GAAoB3jF,CAAM,EAE9C,KAAK,mBAAqB,MAC1ByjF,GAAmBA,EAAgB,KAAK,gBAAgB,EAE5D,MACH,CAED,KAAK,WAAW,IAAKtxC,EAAK,MAAOnyC,CAAM,EACvC,KAAK,WAAW,IAAKmyC,EAAK,MAAOnyC,CAAM,EAOvC,KAAK,cAAc,SAKf0jF,GACAxtD,GAAM,OAAO,IAAMwtD,EAAO1uF,EAAOm9C,CAAI,EAAG,GAAO,EAAI,CAEnE,EACc0uC,EAAe,CAAC7rF,EAAOm9C,IAAS,CAClC,KAAK,mBAAqBn9C,EAC1B,KAAK,cAAgBm9C,EACrB,KAAK,KAAKn9C,EAAOm9C,CAAI,EACrB,KAAK,mBAAqB,KAC1B,KAAK,cAAgB,IACjC,EACc2uC,EAAkB,IAAM,CAC1B,KAAM,CAAE,iBAAkB8C,CAAM,EAAG,KAAK,SAAQ,GAC5CA,GAAQ,KAAK,cACb,KAAK,eAAe,CAAE,EAAG,EAAG,EAAG,CAAC,CAAE,CAElD,EACc,CAAE,iBAAAvD,CAAgB,EAAK,KAAK,SAAQ,EAC1C,KAAK,WAAa,IAAIH,GAAWgD,EAAa,CAC1C,eAAAjC,EACA,QAAAP,EACA,OAAAC,EACA,aAAAE,EACA,gBAAAC,CACZ,EAAW,CACC,mBAAoB,KAAK,cAAc,sBAAuB,EAC9D,iBAAAT,EACA,kBAAAC,EACA,cAAeT,GAAiB,KAAK,aAAa,EAClD,QAAS,KAAK,cAAc,OACxC,CAAS,CACJ,CAID,KAAK7qF,EAAO+rF,EAAS,CACjB,MAAM8C,EAAa7uF,GAAS,KAAK,mBAC3B8uF,EAAe/C,GAAW,KAAK,cAC/BhnB,EAAa,KAAK,WAExB,GADA,KAAK,OAAM,EACP,CAACA,GAAc,CAAC+pB,GAAgB,CAACD,EACjC,OACJ,KAAM,CAAE,SAAAjrC,CAAU,EAAGkrC,EACrB,KAAK,eAAelrC,CAAQ,EAC5B,KAAM,CAAE,UAAAmrC,CAAS,EAAK,KAAK,SAAQ,EAC/BA,GACA7tD,GAAM,WAAW,IAAM6tD,EAAUF,EAAYC,CAAY,CAAC,CAEjE,CAID,QAAS,CACL,KAAK,WAAa,GAClB,KAAM,CAAE,WAAAjd,EAAY,eAAA0c,GAAmB,KAAK,cACxC1c,IACAA,EAAW,mBAAqB,IAEpC,KAAK,cAAa,EAClB,KAAM,CAAE,gBAAAuc,CAAe,EAAK,KAAK,SAAQ,EACrC,CAACA,GAAmB,KAAK,eACzB,KAAK,aAAY,EACjB,KAAK,aAAe,MAExBG,GAAkBA,EAAe,UAAU,YAAa,EAAK,CAChE,CAOD,eAAgB,CACZ,KAAK,YAAc,KAAK,WAAW,IAAG,EACtC,KAAK,WAAa,MACrB,CACD,WAAWl6D,EAAM26D,EAAQhkF,EAAQ,CAC7B,KAAM,CAAE,KAAAy9E,CAAI,EAAK,KAAK,SAAQ,EAE9B,GAAI,CAACz9E,GAAU,CAACikF,GAAW56D,EAAMo0D,EAAM,KAAK,gBAAgB,EACxD,OACJ,MAAMyG,EAAY,KAAK,mBAAmB76D,CAAI,EAC9C,IAAI/mC,EAAO,KAAK,YAAY+mC,CAAI,EAAIrpB,EAAOqpB,CAAI,EAE3C,KAAK,aAAe,KAAK,YAAYA,CAAI,IACzC/mC,EAAOm/F,GAAiBn/F,EAAM,KAAK,YAAY+mC,CAAI,EAAG,KAAK,QAAQA,CAAI,CAAC,GAE5E66D,EAAU,IAAI5hG,CAAI,CACrB,CACD,oBAAqB,CACjB,KAAM,CAAE,gBAAAo7F,EAAiB,YAAAgF,CAAa,EAAG,KAAK,SAAQ,EAChD/a,EAAS,KAAK,cAAc,YAC9B,CAAC,KAAK,cAAc,WAAW,OAC7B,KAAK,cAAc,WAAW,QAAQ,EAAK,EAC3C,KAAK,cAAc,YAAY,OAC/Bwc,EAAkB,KAAK,YACzBzG,GAAmBhB,GAAYgB,CAAe,EACzC,KAAK,cACN,KAAK,YAAc,KAAK,yBAIxBA,GAAmB/V,EACnB,KAAK,YAAcia,GAAwBja,EAAO,UAAW+V,CAAe,EAG5E,KAAK,YAAc,GAG3B,KAAK,QAAU+E,GAAmBC,CAAW,EAOzCyB,IAAoB,KAAK,aACzB,CAACzH,GAAYgB,CAAe,GAC5B/V,GACA,KAAK,aACL,CAAC,KAAK,uBACNmH,GAAUzlD,GAAS,CACX,KAAK,cAAgB,IACrB,KAAK,mBAAmBA,CAAI,IAC5B,KAAK,YAAYA,CAAI,EAAIg5D,GAAsB1a,EAAO,UAAUt+C,CAAI,EAAG,KAAK,YAAYA,CAAI,CAAC,EAEjH,CAAa,CAER,CACD,uBAAwB,CACpB,KAAM,CAAE,gBAAiBi5D,EAAa,yBAAA8B,CAAwB,EAAK,KAAK,WACxE,GAAI,CAAC9B,GAAe,CAAC5F,GAAY4F,CAAW,EACxC,MAAO,GACX,MAAM+B,EAAqB/B,EAAY,QACvC1qC,GAAUysC,IAAuB,KAAM,yGAA0G,sBAAsB,EACvK,KAAM,CAAE,WAAAxd,CAAU,EAAK,KAAK,cAE5B,GAAI,CAACA,GAAc,CAACA,EAAW,OAC3B,MAAO,GAWPA,EAAW,OACXA,EAAW,KAAK,OAAS,OACzBA,EAAW,KAAK,gBAEpB,MAAMob,EAAiB1c,GAAe8e,EAAoBxd,EAAW,KAAM,KAAK,cAAc,sBAAqB,CAAE,EACrH,IAAIyd,EAAsBtC,GAAwBnb,EAAW,OAAO,UAAWob,CAAc,EAK7F,GAAImC,EAA0B,CAC1B,MAAMG,EAAkBH,EAAyBlhB,GAAwBohB,CAAmB,CAAC,EAC7F,KAAK,sBAAwB,CAAC,CAACC,EAC3BA,IACAD,EAAsBrhB,GAAwBshB,CAAe,EAEpE,CACD,OAAOD,CACV,CACD,eAAe1rC,EAAU,CACrB,KAAM,CAAE,KAAA6kC,EAAM,aAAA+G,EAAc,YAAA9B,EAAa,eAAA+B,EAAgB,iBAAApE,EAAkB,oBAAAqE,CAAsB,EAAG,KAAK,WACnGpC,EAAc,KAAK,aAAe,GAClCqC,EAAqB7V,GAAUzlD,GAAS,CAC1C,GAAI,CAAC46D,GAAW56D,EAAMo0D,EAAM,KAAK,gBAAgB,EAC7C,OAEJ,IAAIh0B,EAAc64B,GAAeA,EAAYj5D,CAAI,GAAM,CAAA,GACnDg3D,IAAqB,IACrBA,IAAqBh3D,KACrBogC,EAAa,CAAE,IAAK,EAAG,IAAK,CAAC,GAOjC,MAAM5C,EAAkB67B,EAAc,IAAM,IACtC97B,EAAgB87B,EAAc,GAAK,IACnCj8B,EAAU,CACZ,KAAM,UACN,SAAU+9B,EAAe5rC,EAASvvB,CAAI,EAAI,EAC1C,gBAAAw9B,EACA,cAAAD,EACA,aAAc,IACd,UAAW,EACX,UAAW,GACX,GAAG69B,EACH,GAAGh7B,CACnB,EAIY,OAAO,KAAK,wBAAwBpgC,EAAMo9B,CAAO,CAC7D,CAAS,EAED,OAAO,QAAQ,IAAIk+B,CAAkB,EAAE,KAAKD,CAAmB,CAClE,CACD,wBAAwBr7D,EAAMogC,EAAY,CACtC,MAAMy6B,EAAY,KAAK,mBAAmB76D,CAAI,EAC9C,OAAAssC,GAAqB,KAAK,cAAetsC,CAAI,EACtC66D,EAAU,MAAM9vB,GAAmB/qC,EAAM66D,EAAW,EAAGz6B,EAAY,KAAK,cAAe,EAAK,CAAC,CACvG,CACD,eAAgB,CACZqlB,GAAUzlD,GAAS,KAAK,mBAAmBA,CAAI,EAAE,KAAI,CAAE,CAC1D,CAOD,mBAAmBA,EAAM,CACrB,MAAMu7D,EAAU,QAAQv7D,EAAK,YAAW,CAAE,GAEpCw7D,EADQ,KAAK,cAAc,SAAQ,EACPD,CAAO,EACzC,OAAOC,GAED,KAAK,cAAc,SAASx7D,EAAM,KAAK,cAAc,aAAaA,CAAI,GAAK,CAAC,CACrF,CACD,aAAatQ,EAAO,CAChB+1D,GAAUzlD,GAAS,CACf,KAAM,CAAE,KAAAo0D,CAAI,EAAK,KAAK,SAAQ,EAE9B,GAAI,CAACwG,GAAW56D,EAAMo0D,EAAM,KAAK,gBAAgB,EAC7C,OACJ,KAAM,CAAE,WAAA5W,CAAU,EAAK,KAAK,cACtBqd,EAAY,KAAK,mBAAmB76D,CAAI,EAC9C,GAAIw9C,GAAcA,EAAW,OAAQ,CACjC,KAAM,CAAE,IAAAliE,EAAK,IAAAtM,CAAK,EAAGwuE,EAAW,OAAO,UAAUx9C,CAAI,EAO/C4K,EAAUiwD,EAAU,IAAG,GAAM,EACnCA,EAAU,IAAInrE,EAAMsQ,CAAI,EAAI63B,GAAUv8C,EAAKtM,EAAK,EAAG,EAAI47B,CAAO,CACjE,CACb,CAAS,CACJ,CAMD,gCAAiC,CAC7B,GAAI,CAAC,KAAK,cAAc,QACpB,OACJ,KAAM,CAAE,KAAAwpD,EAAM,gBAAAC,CAAiB,EAAG,KAAK,SAAQ,EACzC,CAAE,WAAA7W,CAAU,EAAK,KAAK,cAC5B,GAAI,CAAC6V,GAAYgB,CAAe,GAAK,CAAC7W,GAAc,CAAC,KAAK,YACtD,OAKJ,KAAK,cAAa,EAKlB,MAAMie,EAAc,CAAE,EAAG,EAAG,EAAG,CAAC,EAChChW,GAAUzlD,GAAS,CACf,MAAM66D,EAAY,KAAK,mBAAmB76D,CAAI,EAC9C,GAAI66D,GAAa,KAAK,cAAgB,GAAO,CACzC,MAAM58B,EAAS48B,EAAU,MACzBY,EAAYz7D,CAAI,EAAI64D,GAAW,CAAE,IAAK56B,EAAQ,IAAKA,CAAQ,EAAE,KAAK,YAAYj+B,CAAI,CAAC,CACtF,CACb,CAAS,EAID,KAAM,CAAE,kBAAA4nC,CAAmB,EAAG,KAAK,cAAc,SAAQ,EACzD,KAAK,cAAc,QAAQ,MAAM,UAAYA,EACvCA,EAAkB,CAAE,EAAE,EAAE,EACxB,OACN4V,EAAW,MAAQA,EAAW,KAAK,aAAY,EAC/CA,EAAW,aAAY,EAKvB,KAAK,YAAc,GACnB,KAAK,mBAAkB,EAKvBiI,GAAUzlD,GAAS,CACf,GAAI,CAAC46D,GAAW56D,EAAMo0D,EAAM,IAAI,EAC5B,OAIJ,MAAMyG,EAAY,KAAK,mBAAmB76D,CAAI,EACxC,CAAE,IAAA1kB,EAAK,IAAAtM,CAAG,EAAK,KAAK,YAAYgxB,CAAI,EAC1C66D,EAAU,IAAIhjC,GAAUv8C,EAAKtM,EAAKysF,EAAYz7D,CAAI,CAAC,CAAC,CAChE,CAAS,EAMD,KAAK,cAAc,QACtB,CACD,cAAe,CACX,GAAI,CAAC,KAAK,cAAc,QACpB,OACJ25D,GAAoB,IAAI,KAAK,cAAe,IAAI,EAChD,MAAMnpG,EAAU,KAAK,cAAc,QAI7BkrG,EAAsBnF,GAAgB/lG,EAAS,cAAgBmb,GAAU,CAC3E,KAAM,CAAE,KAAAyoF,EAAM,aAAAuH,EAAe,EAAI,EAAK,KAAK,WACrC7wG,EAAS6gB,EAAM,OASfiwF,EAA2B9wG,IAAW0F,GAAW4hF,GAAmBtnF,CAAM,EAC5EspG,GAAQuH,GAAgB,CAACC,GACzB,KAAK,MAAMjwF,CAAK,CAEhC,CAAS,EAOD,IAAIkwF,EACJ,MAAMC,EAAyB,IAAM,CACjC,KAAM,CAAE,gBAAAzH,CAAe,EAAK,KAAK,SAAQ,EACrChB,GAAYgB,CAAe,GAAKA,EAAgB,UAChD,KAAK,YAAc,KAAK,wBACnBwH,IACDA,EAAsBE,GAAqBvrG,EAAS6jG,EAAgB,QAAS,IAAM,KAAK,+BAA8B,CAAE,GAG5I,EACc,CAAE,WAAA7W,CAAU,EAAK,KAAK,cACtBwe,EAA4Bxe,EAAW,iBAAiB,UAAWse,CAAsB,EAC3Fte,GAAc,CAACA,EAAW,SAC1BA,EAAW,MAAQA,EAAW,KAAK,aAAY,EAC/CA,EAAW,aAAY,GAE3B3wC,GAAM,KAAKivD,CAAsB,EAKjC,MAAMG,EAAqB3U,GAAY,OAAQ,SAAU,IAAM,KAAK,+BAA8B,CAAE,EAK9F4U,EAA2B1e,EAAW,iBAAiB,YAAc,CAAC,CAAE,MAAAjnC,EAAO,iBAAAkzC,KAAuB,CACpG,KAAK,YAAcA,IACnBhE,GAAUzlD,GAAS,CACf,MAAM0gC,EAAc,KAAK,mBAAmB1gC,CAAI,EAC3C0gC,IAEL,KAAK,YAAY1gC,CAAI,GAAKuW,EAAMvW,CAAI,EAAE,UACtC0gC,EAAY,IAAIA,EAAY,IAAG,EAAKnqB,EAAMvW,CAAI,EAAE,SAAS,EAC7E,CAAiB,EACD,KAAK,cAAc,SAEnC,GACQ,MAAO,IAAM,CACTi8D,IACAP,IACAM,IACAE,GAA4BA,EAAwB,EACpDL,GAAuBA,EAAmB,CACtD,CACK,CACD,UAAW,CACP,MAAMl9C,EAAQ,KAAK,cAAc,SAAQ,EACnC,CAAE,KAAAy1C,EAAO,GAAO,kBAAA+F,EAAoB,GAAO,gBAAAJ,EAAkB,GAAO,gBAAA1F,EAAkB,GAAO,YAAAgF,EAAcF,GAAgB,aAAAgC,EAAe,EAAI,EAAMx8C,EAC1J,MAAO,CACH,GAAGA,EACH,KAAAy1C,EACA,kBAAA+F,EACA,gBAAAJ,EACA,gBAAA1F,EACA,YAAAgF,EACA,aAAA8B,CACZ,CACK,CACL,CACA,SAASgB,GAAc9lE,EAAU,CAC7B,IAAI+lE,EAAU,GACd,MAAO,IAAM,CACT,GAAIA,EAAS,CACTA,EAAU,GACV,MACH,CACD/lE,GACR,CACA,CACA,SAAS0lE,GAAqBvrG,EAASwqG,EAAoBqB,EAAU,CACjE,MAAMC,EAAcruD,GAAOz9C,EAAS2rG,GAAcE,CAAQ,CAAC,EACrDE,EAAgBtuD,GAAO+sD,EAAoBmB,GAAcE,CAAQ,CAAC,EACxE,MAAO,IAAM,CACTC,IACAC,GACR,CACA,CACA,SAAS3B,GAAW4B,EAAWpI,EAAMqI,EAAkB,CACnD,OAASrI,IAAS,IAAQA,IAASoI,KAC9BC,IAAqB,MAAQA,IAAqBD,EAC3D,CAQA,SAASlC,GAAoB3jF,EAAQ+lF,EAAgB,GAAI,CACrD,IAAIF,EAAY,KAChB,OAAI,KAAK,IAAI7lF,EAAO,CAAC,EAAI+lF,EACrBF,EAAY,IAEP,KAAK,IAAI7lF,EAAO,CAAC,EAAI+lF,IAC1BF,EAAY,KAETA,CACX,CCrjBA,MAAMG,WAAoBhjB,EAAQ,CAC9B,YAAYvmF,EAAM,CACd,MAAMA,CAAI,EACV,KAAK,oBAAsBsF,GAC3B,KAAK,gBAAkBA,GACvB,KAAK,SAAW,IAAIkhG,GAA0BxmG,CAAI,CACrD,CACD,OAAQ,CAGJ,KAAM,CAAE,aAAAwpG,CAAc,EAAG,KAAK,KAAK,SAAQ,EACvCA,IACA,KAAK,oBAAsBA,EAAa,UAAU,KAAK,QAAQ,GAEnE,KAAK,gBAAkB,KAAK,SAAS,aAAY,GAAMlkG,EAC1D,CACD,QAAS,CACL,KAAM,CAAE,aAAAkkG,CAAc,EAAG,KAAK,KAAK,SAAQ,EACrC,CAAE,aAAcC,CAAkB,EAAG,KAAK,KAAK,WAAa,GAC9DD,IAAiBC,IACjB,KAAK,oBAAmB,EACpBD,IACA,KAAK,oBAAsBA,EAAa,UAAU,KAAK,QAAQ,GAG1E,CACD,SAAU,CACN,KAAK,oBAAmB,EACxB,KAAK,gBAAe,EAWf,KAAK,SAAS,YACf,KAAK,SAAS,eAErB,CACL,CCzCA,MAAME,GAAgBzkG,GAAY,CAACsT,EAAOm9C,IAAS,CAC3CzwD,GACAw0C,GAAM,OAAO,IAAMx0C,EAAQsT,EAAOm9C,CAAI,EAAG,GAAO,EAAI,CAE5D,EACA,MAAMi0C,WAAmBpjB,EAAQ,CAC7B,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,0BAA4BjhF,EACpC,CACD,cAAcskG,EAAkB,CAC5B,KAAK,QAAU,IAAInG,GAAWmG,EAAkB,KAAK,oBAAqB,CACtE,mBAAoB,KAAK,KAAK,sBAAuB,EACrD,cAAexG,GAAiB,KAAK,IAAI,CACrD,CAAS,CACJ,CACD,mBAAoB,CAChB,KAAM,CAAE,kBAAAyG,EAAmB,WAAAC,EAAY,MAAAC,EAAO,SAAAC,CAAQ,EAAK,KAAK,KAAK,WACrE,MAAO,CACH,eAAgBN,GAAaG,CAAiB,EAC9C,QAASH,GAAaI,CAAU,EAChC,OAAQJ,GAAaK,CAAK,EAC1B,MAAO,CAACxxF,EAAOm9C,IAAS,CACpB,OAAO,KAAK,QACRs0C,GACAvwD,GAAM,WAAW,IAAMuwD,EAASzxF,EAAOm9C,CAAI,CAAC,CAEnD,CACb,CACK,CACD,OAAQ,CACJ,KAAK,0BAA4BytC,GAAgB,KAAK,KAAK,QAAS,cAAgB5qF,GAAU,KAAK,cAAcA,CAAK,CAAC,CAC1H,CACD,QAAS,CACL,KAAK,SAAW,KAAK,QAAQ,eAAe,KAAK,kBAAiB,CAAE,CACvE,CACD,SAAU,CACN,KAAK,0BAAyB,EAC9B,KAAK,SAAW,KAAK,QAAQ,IAAG,CACnC,CACL,CCnBA,SAAS0xF,GAAYljG,EAAY,GAAM,CACnC,MAAMkrD,EAAUiqC,aAAWgC,EAAe,EAC1C,GAAIjsC,IAAY,KACZ,MAAO,CAAC,GAAM,IAAI,EACtB,KAAM,CAAE,UAAA4wC,EAAW,eAAAvH,EAAgB,SAAA0H,CAAQ,EAAK/wC,EAG1Cz3E,EAAK0vH,EAAAA,QACXp8C,EAAAA,UAAU,IAAM,CACZ,GAAI/mD,EACA,OAAOi8F,EAASxoH,CAAE,CAE9B,EAAO,CAACusB,CAAS,CAAC,EACd,MAAMojG,EAAe97C,EAAAA,YAAY,IAAMtnD,GAAau0F,GAAkBA,EAAe9gH,CAAE,EAAG,CAACA,EAAI8gH,EAAgBv0F,CAAS,CAAC,EACzH,MAAO,CAAC87F,GAAavH,EAAiB,CAAC,GAAO6O,CAAY,EAAI,CAAC,EAAI,CACvE,CC1BA,IAAIC,GAAsB,GAC1B,MAAMC,WAAiCr4C,EAAAA,SAAU,CAM7C,mBAAoB,CAChB,KAAM,CAAE,cAAAge,EAAe,YAAAs6B,EAAa,kBAAAC,EAAmB,SAAApf,CAAU,EAAG,KAAK,MACnE,CAAE,WAAAf,CAAY,EAAGpa,EACnBoa,IACIkgB,EAAY,OACZA,EAAY,MAAM,IAAIlgB,CAAU,EAChCmgB,GAAqBA,EAAkB,UAAYpf,GACnDof,EAAkB,SAASngB,CAAU,EAErCggB,IACAhgB,EAAW,KAAK,YAEpBA,EAAW,iBAAiB,oBAAqB,IAAM,CACnD,KAAK,aAAY,CACjC,CAAa,EACDA,EAAW,WAAW,CAClB,GAAGA,EAAW,QACd,iBAAkB,KAAK,MAAM,iBAC7B,eAAgB,IAAM,KAAK,aAAc,CACzD,CAAa,GAEL0K,GAAsB,eAAiB,EAC1C,CACD,wBAAwBzJ,EAAW,CAC/B,KAAM,CAAE,iBAAAmf,EAAkB,cAAAx6B,EAAe,KAAAgxB,EAAM,UAAA6B,CAAW,EAAG,KAAK,MAC5D,CAAE,WAAAzY,CAAY,EAAGpa,EACvB,OAAKoa,IASLA,EAAW,UAAYyY,EACnBxX,EAAU,mBAAqBmf,GAC/BpgB,EAAW,WAAW,CAClB,GAAGA,EAAW,QACd,iBAAAogB,CAChB,CAAa,EAELJ,GAAsB,GAClBpJ,GACA3V,EAAU,mBAAqBmf,GAC/BA,IAAqB,QACrBnf,EAAU,YAAcwX,EACxBzY,EAAW,WAAU,EAGrB,KAAK,aAAY,EAEjBiB,EAAU,YAAcwX,IACpBA,EACAzY,EAAW,QAAO,EAEZA,EAAW,YAMjB3wC,GAAM,WAAW,IAAM,CACnB,MAAMs9C,EAAQ3M,EAAW,YACrB,CAAC2M,GAAS,CAACA,EAAM,QAAQ,SACzB,KAAK,aAAY,CAEzC,CAAiB,IAGF,IACV,CACD,oBAAqB,CACjB,KAAM,CAAE,cAAA/mB,EAAe,aAAAoxB,GAAiB,KAAK,MACvC,CAAE,WAAAhX,CAAY,EAAGpa,EACnBoa,IACAA,EAAW,QAAQ,aAAegX,EAClChX,EAAW,KAAK,YAChBhN,GAAU,WAAW,IAAM,CACnB,CAACgN,EAAW,kBAAoBA,EAAW,OAAM,GACjD,KAAK,aAAY,CAErC,CAAa,EAER,CACD,sBAAuB,CACnB,KAAM,CAAE,cAAApa,EAAe,YAAAs6B,EAAa,kBAAmBG,CAAiB,EAAG,KAAK,MAC1E,CAAE,WAAArgB,CAAY,EAAGpa,EACvBo6B,GAAsB,GAClBhgB,IACAA,EAAW,0BAAyB,EAChCkgB,GAAeA,EAAY,OAC3BA,EAAY,MAAM,OAAOlgB,CAAU,EACnCqgB,GAAkBA,EAAe,YACjCA,EAAe,WAAWrgB,CAAU,EAE/C,CACD,cAAe,CACX,KAAM,CAAE,aAAA+f,CAAY,EAAK,KAAK,MAC9BA,GAAgBA,EAAY,CAC/B,CACD,QAAS,CACL,OAAO,IACV,CACL,CACA,SAASxI,GAAcp2C,EAAO,CAC1B,KAAM,CAACs3C,EAAWsH,CAAY,EAAIF,GAAW,EACvCK,EAAcpO,aAAWh+B,EAAkB,EACjD,OAAQgkC,GAAAA,IAAImI,GAA0B,CAAE,GAAG9+C,EAAO,YAAa++C,EAAa,kBAAmBpO,EAAAA,WAAW8D,EAAwB,EAAG,UAAW6C,EAAW,aAAcsH,CAAY,CAAE,CAC3L,CC/HA,MAAMnJ,GAAO,CACT,IAAK,CACD,QAAS2I,EACZ,EACD,KAAM,CACF,QAASJ,GACT,eAAgBzN,GAChB,cAAA6F,EACH,CACL,ECXA,SAAS+I,GAAiB1qG,EAAMuY,EAAOoyF,EAAW,CAC9C,KAAM,CAAE,MAAAp/C,CAAO,EAAGvrD,EACdA,EAAK,gBAAkBurD,EAAM,YAC7BvrD,EAAK,eAAe,UAAU,aAAc2qG,IAAc,OAAO,EAErE,MAAMt5F,EAAa,UAAYs5F,EACzB1nE,EAAWsoB,EAAMl6C,CAAS,EAC5B4xB,GACAwW,GAAM,WAAW,IAAMxW,EAAS1qB,EAAO0qF,GAAiB1qF,CAAK,CAAC,CAAC,CAEvE,CACA,MAAMqyF,WAAqBrkB,EAAQ,CAC/B,OAAQ,CACJ,KAAM,CAAE,QAAA/uC,CAAO,EAAK,KAAK,KACpBA,IAEL,KAAK,QAAUqmC,GAAMrmC,EAAS,CAACqzD,EAAU7qB,KACrC0qB,GAAiB,KAAK,KAAM1qB,EAAY,OAAO,EACvCI,GAAasqB,GAAiB,KAAK,KAAMtqB,EAAU,KAAK,EACnE,EACJ,CACD,SAAU,CAAG,CACjB,CCtBA,MAAM0qB,WAAqBvkB,EAAQ,CAC/B,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,SAAW,EACnB,CACD,SAAU,CACN,IAAIwkB,EAAiB,GAOrB,GAAI,CACAA,EAAiB,KAAK,KAAK,QAAQ,QAAQ,gBAAgB,CAC9D,MACS,CACNA,EAAiB,EACpB,CACG,CAACA,GAAkB,CAAC,KAAK,KAAK,iBAElC,KAAK,KAAK,eAAe,UAAU,aAAc,EAAI,EACrD,KAAK,SAAW,GACnB,CACD,QAAS,CACD,CAAC,KAAK,UAAY,CAAC,KAAK,KAAK,iBAEjC,KAAK,KAAK,eAAe,UAAU,aAAc,EAAK,EACtD,KAAK,SAAW,GACnB,CACD,OAAQ,CACJ,KAAK,QAAUrvC,GAAKw4B,GAAY,KAAK,KAAK,QAAS,QAAS,IAAM,KAAK,QAAS,CAAA,EAAGA,GAAY,KAAK,KAAK,QAAS,OAAQ,IAAM,KAAK,OAAQ,CAAA,CAAC,CACjJ,CACD,SAAU,CAAG,CACjB,CClCA,SAAS8W,GAAiBhrG,EAAMuY,EAAOoyF,EAAW,CAC9C,KAAM,CAAE,MAAAp/C,CAAO,EAAGvrD,EAClB,GAAIA,EAAK,mBAAmB,mBAAqBA,EAAK,QAAQ,SAC1D,OAEAA,EAAK,gBAAkBurD,EAAM,UAC7BvrD,EAAK,eAAe,UAAU,WAAY2qG,IAAc,OAAO,EAEnE,MAAMt5F,EAAa,SAAWs5F,IAAc,MAAQ,GAAKA,GACnD1nE,EAAWsoB,EAAMl6C,CAAS,EAC5B4xB,GACAwW,GAAM,WAAW,IAAMxW,EAAS1qB,EAAO0qF,GAAiB1qF,CAAK,CAAC,CAAC,CAEvE,CACA,MAAM0yF,WAAqB1kB,EAAQ,CAC/B,OAAQ,CACJ,KAAM,CAAE,QAAA/uC,CAAO,EAAK,KAAK,KACzB,GAAI,CAACA,EACD,OACJ,KAAM,CAAE,gBAAA0zD,EAAiB,UAAAC,CAAS,EAAK,KAAK,KAAK,MACjD,KAAK,QAAU/kD,GAAM5O,EAAS,CAACqzD,EAAU7qB,KACrCgrB,GAAiB,KAAK,KAAMhrB,EAAY,OAAO,EACxC,CAACI,EAAU,CAAE,QAAAC,CAAO,IAAO2qB,GAAiB,KAAK,KAAM5qB,EAAUC,EAAU,MAAQ,QAAQ,GACnG,CACC,gBAAiB6qB,EACjB,gBAAiBC,GAAW,MAAQ,EAChD,CAAS,CACJ,CACD,SAAU,CAAG,CACjB,CC3BA,MAAMC,GAAoB,IAAI,QAMxBziG,GAAY,IAAI,QAChB0iG,GAAwBvjD,GAAU,CACpC,MAAM7kB,EAAWmoE,GAAkB,IAAItjD,EAAM,MAAM,EACnD7kB,GAAYA,EAAS6kB,CAAK,CAC9B,EACMwjD,GAA4BxwD,GAAY,CAC1CA,EAAQ,QAAQuwD,EAAoB,CACxC,EACA,SAASE,GAAyB,CAAE,KAAAljC,EAAM,GAAG7uE,GAAW,CACpD,MAAMgyG,EAAanjC,GAAQ,SAItB1/D,GAAU,IAAI6iG,CAAU,GACzB7iG,GAAU,IAAI6iG,EAAY,CAAA,CAAE,EAEhC,MAAMC,EAAgB9iG,GAAU,IAAI6iG,CAAU,EACxCjtG,EAAM,KAAK,UAAU/E,CAAO,EAKlC,OAAKiyG,EAAcltG,CAAG,IAClBktG,EAAcltG,CAAG,EAAI,IAAI,qBAAqB+sG,GAA0B,CAAE,KAAAjjC,EAAM,GAAG7uE,CAAO,CAAE,GAEzFiyG,EAAcltG,CAAG,CAC5B,CACA,SAASmtG,GAAoBtuG,EAAS5D,EAASypC,EAAU,CACrD,MAAM0oE,EAA4BJ,GAAyB/xG,CAAO,EAClE,OAAA4xG,GAAkB,IAAIhuG,EAAS6lC,CAAQ,EACvC0oE,EAA0B,QAAQvuG,CAAO,EAClC,IAAM,CACTguG,GAAkB,OAAOhuG,CAAO,EAChCuuG,EAA0B,UAAUvuG,CAAO,CACnD,CACA,CC3CA,MAAMwuG,GAAiB,CACnB,KAAM,EACN,IAAK,CACT,EACA,MAAMC,WAAsBtlB,EAAQ,CAChC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,eAAiB,GACtB,KAAK,SAAW,EACnB,CACD,eAAgB,CACZ,KAAK,eAAY,EACjB,KAAM,CAAE,SAAA7jC,EAAW,CAAE,CAAA,EAAK,KAAK,KAAK,WAC9B,CAAE,KAAA2lB,EAAM,OAAQyjC,EAAY,OAAAlpE,EAAS,OAAQ,KAAAmpE,CAAM,EAAGrpD,EACtDlpD,EAAU,CACZ,KAAM6uE,EAAOA,EAAK,QAAU,OAC5B,WAAAyjC,EACA,UAAW,OAAOlpE,GAAW,SAAWA,EAASgpE,GAAehpE,CAAM,CAClF,EACcopE,EAAwBlkD,GAAU,CACpC,KAAM,CAAE,eAAAmkD,CAAgB,EAAGnkD,EAW3B,GAPI,KAAK,WAAamkD,IAEtB,KAAK,SAAWA,EAKZF,GAAQ,CAACE,GAAkB,KAAK,gBAChC,OAEKA,IACL,KAAK,eAAiB,IAEtB,KAAK,KAAK,gBACV,KAAK,KAAK,eAAe,UAAU,cAAeA,CAAc,EAMpE,KAAM,CAAE,gBAAAC,EAAiB,gBAAAC,CAAe,EAAK,KAAK,KAAK,WACjDlpE,EAAWgpE,EAAiBC,EAAkBC,EACpDlpE,GAAYA,EAAS6kB,CAAK,CACtC,EACQ,KAAK,aAAe4jD,GAAoB,KAAK,KAAK,QAASlyG,EAASwyG,CAAoB,CAC3F,CACD,OAAQ,CACJ,KAAK,cAAa,CACrB,CACD,QAAS,CACL,GAAI,OAAO,qBAAyB,IAChC,OACJ,KAAM,CAAE,MAAAzgD,EAAO,UAAA8/B,GAAc,KAAK,KACR,CAAC,SAAU,SAAU,MAAM,EAAE,KAAK+gB,GAAyB7gD,EAAO8/B,CAAS,CAAC,GAElG,KAAK,cAAa,CAEzB,CACD,SAAU,CACN,KAAK,eAAY,EACjB,KAAK,eAAiB,GACtB,KAAK,SAAW,EACnB,CACL,CACA,SAAS+gB,GAAyB,CAAE,SAAA1pD,EAAW,EAAI,EAAE,CAAE,SAAU2pD,EAAe,EAAI,EAAG,GAAI,CACvF,OAAQxuG,GAAS6kD,EAAS7kD,CAAI,IAAMwuG,EAAaxuG,CAAI,CACzD,CCpEA,MAAMyuG,GAAgB,CAClB,GAAG/2B,GACH,GCFsB,CACtB,OAAQ,CACJ,QAASs2B,EACZ,EACD,IAAK,CACD,QAASZ,EACZ,EACD,MAAO,CACH,QAASH,EACZ,EACD,MAAO,CACH,QAASF,EACZ,CACL,EDVI,GAAG5J,GACH,GENW,CACX,OAAQ,CACJ,eAAgBlF,GAChB,cAAA6F,EACH,CACL,CFEA,EGNA,SAAS4K,GAAkCv6C,EAAWx4D,EAAS,CAC3D,OAAO+nG,GAAsBvvC,EAAWx4D,EAAS8yG,GAAe7J,EAAsB,CAC1F,CC6BA,MAAM+J,GAA0BD,GAAkC,KAAK,EAuFjEE,GAA6BF,GAAkC,QAAQ,EAWvEG,GAA2BH,GAAkC,MAAM,EAMnEI,GAA0BJ,GAAkC,KAAK,EC3IvE;AAAA;AAAA;AAAA;AAAA,GAKA,2BAEA,SAASK,GAAQ90G,EAAK,CACpB,MAAMwW,EAAsB,OAAO,OAAO,IAAI,EAC9C,UAAW/P,KAAOzG,EAAI,MAAM,GAAG,EAAGwW,EAAI/P,CAAG,EAAI,EAC7C,OAAQlH,GAAQA,KAAOiX,CACzB,CAEA,MAAMu+F,GAAe,CAAW,EAAC,WAAa,aAAgB,OAAO,OAAO,EAAE,EAAI,GAE5EC,GAAO,IAAM,CACnB,EAKMC,GAAS,OAAO,OAOhBt6C,GAAiB,OAAO,UAAU,eAClCu6C,GAAS,CAAC31G,EAAKkH,IAAQk0D,GAAe,KAAKp7D,EAAKkH,CAAG,EACnDiQ,GAAU,MAAM,QAChBy+F,GAAS51G,GAAQ61G,GAAa71G,CAAG,IAAM,eACvC81G,GAAS91G,GAAQ61G,GAAa71G,CAAG,IAAM,eAGvCuL,GAAcvL,GAAQ,OAAOA,GAAQ,WACrC+1G,GAAY/1G,GAAQ,OAAOA,GAAQ,SACnCg2G,GAAYh2G,GAAQ,OAAOA,GAAQ,SACnCikE,GAAYjkE,GAAQA,IAAQ,MAAQ,OAAOA,GAAQ,SACnDkU,GAAalU,IACTikE,GAASjkE,CAAG,GAAKuL,GAAWvL,CAAG,IAAMuL,GAAWvL,EAAI,IAAI,GAAKuL,GAAWvL,EAAI,KAAK,EAErFi2G,GAAiB,OAAO,UAAU,SAClCJ,GAAgB7uG,GAAUivG,GAAe,KAAKjvG,CAAK,EACnDkvG,GAAalvG,GACV6uG,GAAa7uG,CAAK,EAAE,MAAM,EAAG,EAAE,EAElCmvG,GAAiBn2G,GAAQ61G,GAAa71G,CAAG,IAAM,kBAC/Co2G,GAAgBlvG,GAAQ6uG,GAAS7uG,CAAG,GAAKA,IAAQ,OAASA,EAAI,CAAC,IAAM,KAAO,GAAK,SAASA,EAAK,EAAE,IAAMA,EAyBvGmvG,IAjBuBxnG,GAAO,CAClC,MAAMymD,EAAwB,OAAO,OAAO,IAAI,EAChD,OAAQ70D,GACM60D,EAAM70D,CAAG,IACN60D,EAAM70D,CAAG,EAAIoO,EAAGpO,CAAG,EAEtC,GAWwCA,GAC/BA,EAAI,OAAO,CAAC,EAAE,YAAW,EAAKA,EAAI,MAAM,CAAC,CACjD,EAOK02E,GAAa,CAACnwE,EAAO8tD,IAAa,CAAC,OAAO,GAAG9tD,EAAO8tD,CAAQ,EAM5DwhD,GAAM,CAAChtG,EAAKpC,EAAKF,EAAOuvG,EAAW,KAAU,CACjD,OAAO,eAAejtG,EAAKpC,EAAK,CAC9B,aAAc,GACd,WAAY,GACZ,SAAAqvG,EACA,MAAAvvG,CACJ,CAAG,CACH,EASA,IAAIwvG,GACJ,MAAMC,GAAgB,IACbD,KAAgBA,GAAc,OAAO,WAAe,IAAc,WAAa,OAAO,KAAS,IAAc,KAAO,OAAO,OAAW,IAAc,OAAS,OAAO,OAAW,IAAc,OAAS,CAAA,GC1G/M;AAAA;AAAA;AAAA;AAAA,GAOA,SAASE,GAAKz1D,KAAQpzC,EAAM,CAC1B,QAAQ,KAAK,cAAcozC,CAAG,GAAI,GAAGpzC,CAAI,CAC3C,CAsIA,IAAI8oG,GAiBJ,MAAMC,GAAqC,IAAI,QAC/C,MAAMC,EAAe,CACnB,YAAYhoG,EAAI,CACd,KAAK,GAAKA,EAIV,KAAK,KAAO,OAIZ,KAAK,SAAW,OAIhB,KAAK,MAAQ,EAIb,KAAK,KAAO,OAIZ,KAAK,QAAU,OACf,KAAK,UAAY,MAIlB,CACD,OAAQ,CACN,KAAK,OAAS,EACf,CACD,QAAS,CACH,KAAK,MAAQ,KACf,KAAK,OAAS,IACV+nG,GAAmB,IAAI,IAAI,IAC7BA,GAAmB,OAAO,IAAI,EAC9B,KAAK,QAAO,GAGjB,CAID,QAAS,CACH,KAAK,MAAQ,GAAK,EAAE,KAAK,MAAQ,KAG/B,KAAK,MAAQ,GACjBE,GAAM,IAAI,CAEb,CACD,KAAM,CACJ,GAAI,EAAE,KAAK,MAAQ,GACjB,OAAO,KAAK,KAEd,KAAK,OAAS,EACdC,GAAc,IAAI,EAClBC,GAAY,IAAI,EAChB,MAAMngD,EAAa8/C,GACbM,EAAkBC,GACxBP,GAAY,KACZO,GAAc,GACd,GAAI,CACF,OAAO,KAAK,IAClB,QAAc,EACD,CAAA,GAAY,WAAa,cAAiBP,KAAc,MAC7DD,GACE,+EACV,EAEMS,GAAY,IAAI,EAChBR,GAAY9/C,EACZqgD,GAAcD,EACd,KAAK,OAAS,EACf,CACF,CACD,MAAO,CACL,GAAI,KAAK,MAAQ,EAAG,CAClB,QAAS98D,EAAO,KAAK,KAAMA,EAAMA,EAAOA,EAAK,QAC3Ci9D,GAAUj9D,CAAI,EAEhB,KAAK,KAAO,KAAK,SAAW,OAC5B48D,GAAc,IAAI,EAClB,KAAK,QAAU,KAAK,SACpB,KAAK,OAAS,EACf,CACF,CACD,SAAU,CACJ,KAAK,MAAQ,GACfH,GAAmB,IAAI,IAAI,EAClB,KAAK,UACd,KAAK,UAAS,EAEd,KAAK,WAAU,CAElB,CAID,YAAa,CACPS,GAAQ,IAAI,GACd,KAAK,IAAG,CAEX,CACD,IAAI,OAAQ,CACV,OAAOA,GAAQ,IAAI,CACpB,CACH,CACA,IAAIC,GAAa,EACbC,GACAC,GACJ,SAASV,GAAMW,EAAKC,EAAa,GAAO,CAEtC,GADAD,EAAI,OAAS,EACTC,EAAY,CACdD,EAAI,KAAOD,GACXA,GAAkBC,EAClB,MACD,CACDA,EAAI,KAAOF,GACXA,GAAaE,CACf,CACA,SAASE,IAAa,CACpBL,IACF,CACA,SAASM,IAAW,CAClB,GAAI,EAAEN,GAAa,EACjB,OAEF,GAAIE,GAAiB,CACnB,IAAI,EAAIA,GAER,IADAA,GAAkB,OACX,GAAG,CACR,MAAMhpG,EAAO,EAAE,KACf,EAAE,KAAO,OACT,EAAE,OAAS,GACX,EAAIA,CACL,CACF,CACD,IAAI3D,EACJ,KAAO0sG,IAAY,CACjB,IAAI,EAAIA,GAER,IADAA,GAAa,OACN,GAAG,CACR,MAAM/oG,EAAO,EAAE,KAGf,GAFA,EAAE,KAAO,OACT,EAAE,OAAS,GACP,EAAE,MAAQ,EACZ,GAAI,CAEF,EAAE,QAAO,CACV,OAAQzC,EAAK,CACPlB,IAAOA,EAAQkB,EACrB,CAEH,EAAIyC,CACL,CACF,CACD,GAAI3D,EAAO,MAAMA,CACnB,CACA,SAASmsG,GAAYS,EAAK,CACxB,QAASt9D,EAAOs9D,EAAI,KAAMt9D,EAAMA,EAAOA,EAAK,QAC1CA,EAAK,QAAU,GACfA,EAAK,eAAiBA,EAAK,IAAI,WAC/BA,EAAK,IAAI,WAAaA,CAE1B,CACA,SAASg9D,GAAYM,EAAK,CACxB,IAAII,EACAn4G,EAAO+3G,EAAI,SACXt9D,EAAOz6C,EACX,KAAOy6C,GAAM,CACX,MAAM3qC,EAAO2qC,EAAK,QACdA,EAAK,UAAY,IACfA,IAASz6C,IAAMA,EAAO8P,GAC1B4nG,GAAUj9D,CAAI,EACd29D,GAAU39D,CAAI,GAEd09D,EAAO19D,EAETA,EAAK,IAAI,WAAaA,EAAK,eAC3BA,EAAK,eAAiB,OACtBA,EAAO3qC,CACR,CACDioG,EAAI,KAAOI,EACXJ,EAAI,SAAW/3G,CACjB,CACA,SAAS23G,GAAQI,EAAK,CACpB,QAASt9D,EAAOs9D,EAAI,KAAMt9D,EAAMA,EAAOA,EAAK,QAC1C,GAAIA,EAAK,IAAI,UAAYA,EAAK,SAAWA,EAAK,IAAI,WAAa49D,GAAgB59D,EAAK,IAAI,QAAQ,GAAKA,EAAK,IAAI,UAAYA,EAAK,SAC7H,MAAO,GAGX,MAAI,EAAAs9D,EAAI,MAIV,CACA,SAASM,GAAgBC,EAAU,CAKjC,GAJIA,EAAS,MAAQ,GAAK,EAAEA,EAAS,MAAQ,MAG7CA,EAAS,OAAS,IACdA,EAAS,gBAAkBC,IAC7B,OAEFD,EAAS,cAAgBC,GACzB,MAAMhhD,EAAM+gD,EAAS,IAErB,GADAA,EAAS,OAAS,EACd/gD,EAAI,QAAU,GAAK,CAAC+gD,EAAS,OAASA,EAAS,MAAQ,CAACX,GAAQW,CAAQ,EAAG,CAC7EA,EAAS,OAAS,GAClB,MACD,CACD,MAAME,EAAUvB,GACVM,EAAkBC,GACxBP,GAAYqB,EACZd,GAAc,GACd,GAAI,CACFF,GAAYgB,CAAQ,EACpB,MAAMhxG,EAAQgxG,EAAS,GAAGA,EAAS,MAAM,GACrC/gD,EAAI,UAAY,GAAKkgB,GAAWnwE,EAAOgxG,EAAS,MAAM,KACxDA,EAAS,OAAShxG,EAClBiwD,EAAI,UAEP,OAAQlrD,EAAK,CACZ,MAAAkrD,EAAI,UACElrD,CACV,QAAY,CACR4qG,GAAYuB,EACZhB,GAAcD,EACdE,GAAYa,CAAQ,EACpBA,EAAS,OAAS,EACnB,CACH,CACA,SAASZ,GAAUj9D,EAAMg+D,EAAO,GAAO,CACrC,KAAM,CAAE,IAAAlhD,EAAK,QAAAihD,EAAS,QAAAE,CAAO,EAAKj+D,EAYlC,GAXI+9D,IACFA,EAAQ,QAAUE,EAClBj+D,EAAK,QAAU,QAEbi+D,IACFA,EAAQ,QAAUF,EAClB/9D,EAAK,QAAU,QAEV,CAAA,EAAY,WAAa,cAAiB8c,EAAI,WAAa9c,IAChE8c,EAAI,SAAWmhD,GAEbnhD,EAAI,OAAS9c,IACf8c,EAAI,KAAOihD,EACP,CAACA,GAAWjhD,EAAI,UAAU,CAC5BA,EAAI,SAAS,OAAS,GACtB,QAAS7pF,EAAI6pF,EAAI,SAAS,KAAM7pF,EAAGA,EAAIA,EAAE,QACvCgqI,GAAUhqI,EAAG,EAAI,CAEpB,CAEC,CAAC+qI,GAAQ,CAAC,EAAElhD,EAAI,IAAMA,EAAI,KAC5BA,EAAI,IAAI,OAAOA,EAAI,GAAG,CAE1B,CACA,SAAS6gD,GAAU39D,EAAM,CACvB,KAAM,CAAE,QAAAojD,EAAS,QAAAC,CAAS,EAAGrjD,EACzBojD,IACFA,EAAQ,QAAUC,EAClBrjD,EAAK,QAAU,QAEbqjD,IACFA,EAAQ,QAAUD,EAClBpjD,EAAK,QAAU,OAEnB,CAsBA,IAAI+8D,GAAc,GAClB,MAAMmB,GAAa,CAAA,EACnB,SAASC,IAAgB,CACvBD,GAAW,KAAKnB,EAAW,EAC3BA,GAAc,EAChB,CAKA,SAASqB,IAAgB,CACvB,MAAMhmG,EAAO8lG,GAAW,MACxBnB,GAAc3kG,IAAS,OAAS,GAAOA,CACzC,CAUA,SAASwkG,GAAc3zI,EAAG,CACxB,KAAM,CAAE,QAAA0zF,CAAS,EAAG1zF,EAEpB,GADAA,EAAE,QAAU,OACR0zF,EAAS,CACX,MAAMohD,EAAUvB,GAChBA,GAAY,OACZ,GAAI,CACF7/C,GACN,QAAc,CACR6/C,GAAYuB,CACb,CACF,CACH,CAEA,IAAID,GAAgB,EACpB,MAAMO,EAAK,CACT,YAAYf,EAAKxgD,EAAK,CACpB,KAAK,IAAMwgD,EACX,KAAK,IAAMxgD,EACX,KAAK,QAAUA,EAAI,QACnB,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,eAAiB,MACnF,CACH,CACA,MAAMU,EAAI,CACR,YAAYqgD,EAAU,CACpB,KAAK,SAAWA,EAChB,KAAK,QAAU,EAIf,KAAK,WAAa,OAIlB,KAAK,KAAO,OAIZ,KAAK,IAAM,OACX,KAAK,IAAM,OAIX,KAAK,GAAK,EACH,CAAA,EAAY,WAAa,eAC9B,KAAK,SAAW,OAEnB,CACD,MAAMS,EAAW,CACf,GAAI,CAAC9B,IAAa,CAACO,IAAeP,KAAc,KAAK,SACnD,OAEF,IAAIx8D,EAAO,KAAK,WAChB,GAAIA,IAAS,QAAUA,EAAK,MAAQw8D,GAClCx8D,EAAO,KAAK,WAAa,IAAIq+D,GAAK7B,GAAW,IAAI,EAC5CA,GAAU,MAGbx8D,EAAK,QAAUw8D,GAAU,SACzBA,GAAU,SAAS,QAAUx8D,EAC7Bw8D,GAAU,SAAWx8D,GAJrBw8D,GAAU,KAAOA,GAAU,SAAWx8D,EAMxCu+D,GAAOv+D,CAAI,UACFA,EAAK,UAAY,KAC1BA,EAAK,QAAU,KAAK,QAChBA,EAAK,SAAS,CAChB,MAAM3rC,EAAO2rC,EAAK,QAClB3rC,EAAK,QAAU2rC,EAAK,QAChBA,EAAK,UACPA,EAAK,QAAQ,QAAU3rC,GAEzB2rC,EAAK,QAAUw8D,GAAU,SACzBx8D,EAAK,QAAU,OACfw8D,GAAU,SAAS,QAAUx8D,EAC7Bw8D,GAAU,SAAWx8D,EACjBw8D,GAAU,OAASx8D,IACrBw8D,GAAU,KAAOnoG,EAEpB,CAEH,MAAO,CAAA,EAAY,WAAa,cAAiBmoG,GAAU,SACzDA,GAAU,QACRjB,GACE,CACE,OAAQiB,EACT,EACD8B,CACD,CACT,EAEWt+D,CACR,CACD,QAAQs+D,EAAW,CACjB,KAAK,UACLR,KACA,KAAK,OAAOQ,CAAS,CACtB,CACD,OAAOA,EAAW,CAChBd,KACA,GAAI,CACF,GAAO,CAAA,EAAY,WAAa,aAC9B,QAASE,EAAO,KAAK,SAAUA,EAAMA,EAAOA,EAAK,QAC3CA,EAAK,IAAI,WAAa,EAAEA,EAAK,IAAI,MAAQ,IAC3CA,EAAK,IAAI,UACPnC,GACE,CACE,OAAQmC,EAAK,GACd,EACDY,CACD,CACf,EAIM,QAASt+D,EAAO,KAAK,KAAMA,EAAMA,EAAOA,EAAK,QACvCA,EAAK,IAAI,UAEXA,EAAK,IAAI,IAAI,QAGvB,QAAc,CACRy9D,IACD,CACF,CACH,CACA,SAASc,GAAOv+D,EAAM,CAEpB,GADAA,EAAK,IAAI,KACLA,EAAK,IAAI,MAAQ,EAAG,CACtB,MAAM69D,EAAW79D,EAAK,IAAI,SAC1B,GAAI69D,GAAY,CAAC79D,EAAK,IAAI,KAAM,CAC9B69D,EAAS,OAAS,GAClB,QAAS5qI,EAAI4qI,EAAS,KAAM5qI,EAAGA,EAAIA,EAAE,QACnCsrI,GAAOtrI,CAAC,CAEX,CACD,MAAMurI,EAAcx+D,EAAK,IAAI,KACzBw+D,IAAgBx+D,IAClBA,EAAK,QAAUw+D,EACXA,IAAaA,EAAY,QAAUx+D,IAElC,GAAY,WAAa,cAAiBA,EAAK,IAAI,WAAa,SACrEA,EAAK,IAAI,SAAWA,GAEtBA,EAAK,IAAI,KAAOA,CACjB,CACH,CACA,MAAMy+D,GAA4B,IAAI,QAChCC,GAAc,OACf,CAAA,EAAY,WAAa,aAAgB,iBAAmB,EACjE,EACMC,GAAsB,OACvB,CAAA,EAAY,WAAa,aAAgB,mBAAqB,EACnE,EACMC,GAAoB,OACrB,CAAA,EAAY,WAAa,aAAgB,gBAAkB,EAChE,EACA,SAASC,GAAM34G,EAAQ4B,EAAMiF,EAAK,CAChC,GAAIgwG,IAAeP,GAAW,CAC5B,IAAIsC,EAAUL,GAAU,IAAIv4G,CAAM,EAC7B44G,GACHL,GAAU,IAAIv4G,EAAQ44G,EAA0B,IAAI,GAAK,EAE3D,IAAIhiD,EAAMgiD,EAAQ,IAAI/xG,CAAG,EACpB+vD,IACHgiD,EAAQ,IAAI/xG,EAAK+vD,EAAM,IAAIU,EAAK,EAChCV,EAAI,IAAMgiD,EACVhiD,EAAI,IAAM/vD,GAEL,CAAA,EAAY,WAAa,aAC9B+vD,EAAI,MAAM,CACR,OAAA52D,EACA,KAAA4B,EACA,IAAAiF,CACR,CAAO,EAED+vD,EAAI,MAAK,CAEZ,CACH,CACA,SAASiiD,GAAQ74G,EAAQ4B,EAAMiF,EAAK6tD,EAAUD,EAAUqkD,EAAW,CACjE,MAAMF,EAAUL,GAAU,IAAIv4G,CAAM,EACpC,GAAI,CAAC44G,EAAS,CACZhB,KACA,MACD,CACD,MAAMmB,EAAOniD,GAAQ,CACfA,IACK,CAAA,EAAY,WAAa,aAC9BA,EAAI,QAAQ,CACV,OAAA52D,EACA,KAAA4B,EACA,IAAAiF,EACA,SAAA6tD,EACA,SAAAD,EACA,UAAAqkD,CACV,CAAS,EAEDliD,EAAI,QAAO,EAGnB,EAEE,GADA0gD,KACI11G,IAAS,QACXg3G,EAAQ,QAAQG,CAAG,MACd,CACL,MAAMC,EAAgBliG,GAAQ9W,CAAM,EAC9Bi5G,EAAeD,GAAiBjD,GAAalvG,CAAG,EACtD,GAAImyG,GAAiBnyG,IAAQ,SAAU,CACrC,MAAMqyG,EAAY,OAAOxkD,CAAQ,EACjCkkD,EAAQ,QAAQ,CAAChiD,EAAKuiD,IAAS,EACzBA,IAAS,UAAYA,IAAST,IAAqB,CAAC/C,GAASwD,CAAI,GAAKA,GAAQD,IAChFH,EAAIniD,CAAG,CAEjB,CAAO,CACP,KAOM,SANI/vD,IAAQ,QAAU+xG,EAAQ,IAAI,MAAM,IACtCG,EAAIH,EAAQ,IAAI/xG,CAAG,CAAC,EAElBoyG,GACFF,EAAIH,EAAQ,IAAIF,EAAiB,CAAC,EAE5B92G,EAAI,CACV,IAAK,MACEo3G,EAKMC,GACTF,EAAIH,EAAQ,IAAI,QAAQ,CAAC,GALzBG,EAAIH,EAAQ,IAAIJ,EAAW,CAAC,EACxBjD,GAAMv1G,CAAM,GACd+4G,EAAIH,EAAQ,IAAIH,EAAmB,CAAC,GAKxC,MACF,IAAK,SACEO,IACHD,EAAIH,EAAQ,IAAIJ,EAAW,CAAC,EACxBjD,GAAMv1G,CAAM,GACd+4G,EAAIH,EAAQ,IAAIH,EAAmB,CAAC,GAGxC,MACF,IAAK,MACClD,GAAMv1G,CAAM,GACd+4G,EAAIH,EAAQ,IAAIJ,EAAW,CAAC,EAE9B,KACH,CAEJ,CACDjB,IACF,CAMA,SAAS6B,GAAkBnkG,EAAO,CAChC,MAAM/T,EAAMm4G,GAAMpkG,CAAK,EACvB,OAAI/T,IAAQ+T,EAAc/T,GAC1By3G,GAAMz3G,EAAK,UAAWw3G,EAAiB,EAChCY,GAAUrkG,CAAK,EAAI/T,EAAMA,EAAI,IAAIq4G,EAAU,EACpD,CACA,SAASC,GAAiBh5G,EAAK,CAC7B,OAAAm4G,GAAMn4G,EAAM64G,GAAM74G,CAAG,EAAG,UAAWk4G,EAAiB,EAC7Cl4G,CACT,CACA,MAAMi5G,GAAwB,CAC5B,UAAW,KACX,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAOvlG,GAAS,KAAM,OAAO,SAAUqlG,EAAU,CAClD,EACD,UAAU/rG,EAAM,CACd,OAAO4rG,GAAkB,IAAI,EAAE,OAC7B,GAAG5rG,EAAK,IAAKppB,GAAM0yB,GAAQ1yB,CAAC,EAAIg1H,GAAkBh1H,CAAC,EAAIA,CAAC,CAC9D,CACG,EACD,SAAU,CACR,OAAO8vB,GAAS,KAAM,UAAYvN,IAChCA,EAAM,CAAC,EAAI4yG,GAAW5yG,EAAM,CAAC,CAAC,EACvBA,EACR,CACF,EACD,MAAM6H,EAAI5E,EAAS,CACjB,OAAO8vG,GAAM,KAAM,QAASlrG,EAAI5E,EAAS,OAAQ,SAAS,CAC3D,EACD,OAAO4E,EAAI5E,EAAS,CAClB,OAAO8vG,GAAM,KAAM,SAAUlrG,EAAI5E,EAAU7tB,GAAMA,EAAE,IAAIw9H,EAAU,EAAG,SAAS,CAC9E,EACD,KAAK/qG,EAAI5E,EAAS,CAChB,OAAO8vG,GAAM,KAAM,OAAQlrG,EAAI5E,EAAS2vG,GAAY,SAAS,CAC9D,EACD,UAAU/qG,EAAI5E,EAAS,CACrB,OAAO8vG,GAAM,KAAM,YAAalrG,EAAI5E,EAAS,OAAQ,SAAS,CAC/D,EACD,SAAS4E,EAAI5E,EAAS,CACpB,OAAO8vG,GAAM,KAAM,WAAYlrG,EAAI5E,EAAS2vG,GAAY,SAAS,CAClE,EACD,cAAc/qG,EAAI5E,EAAS,CACzB,OAAO8vG,GAAM,KAAM,gBAAiBlrG,EAAI5E,EAAS,OAAQ,SAAS,CACnE,EAED,QAAQ4E,EAAI5E,EAAS,CACnB,OAAO8vG,GAAM,KAAM,UAAWlrG,EAAI5E,EAAS,OAAQ,SAAS,CAC7D,EACD,YAAY4D,EAAM,CAChB,OAAOmsG,GAAY,KAAM,WAAYnsG,CAAI,CAC1C,EACD,WAAWA,EAAM,CACf,OAAOmsG,GAAY,KAAM,UAAWnsG,CAAI,CACzC,EACD,KAAKosG,EAAW,CACd,OAAOR,GAAkB,IAAI,EAAE,KAAKQ,CAAS,CAC9C,EAED,eAAepsG,EAAM,CACnB,OAAOmsG,GAAY,KAAM,cAAensG,CAAI,CAC7C,EACD,IAAIgB,EAAI5E,EAAS,CACf,OAAO8vG,GAAM,KAAM,MAAOlrG,EAAI5E,EAAS,OAAQ,SAAS,CACzD,EACD,KAAM,CACJ,OAAOiwG,GAAW,KAAM,KAAK,CAC9B,EACD,QAAQrsG,EAAM,CACZ,OAAOqsG,GAAW,KAAM,OAAQrsG,CAAI,CACrC,EACD,OAAOgB,KAAOhB,EAAM,CAClB,OAAOssG,GAAO,KAAM,SAAUtrG,EAAIhB,CAAI,CACvC,EACD,YAAYgB,KAAOhB,EAAM,CACvB,OAAOssG,GAAO,KAAM,cAAetrG,EAAIhB,CAAI,CAC5C,EACD,OAAQ,CACN,OAAOqsG,GAAW,KAAM,OAAO,CAChC,EAED,KAAKrrG,EAAI5E,EAAS,CAChB,OAAO8vG,GAAM,KAAM,OAAQlrG,EAAI5E,EAAS,OAAQ,SAAS,CAC1D,EACD,UAAU4D,EAAM,CACd,OAAOqsG,GAAW,KAAM,SAAUrsG,CAAI,CACvC,EACD,YAAa,CACX,OAAO4rG,GAAkB,IAAI,EAAE,YAChC,EACD,SAASW,EAAU,CACjB,OAAOX,GAAkB,IAAI,EAAE,SAASW,CAAQ,CACjD,EACD,aAAavsG,EAAM,CACjB,OAAO4rG,GAAkB,IAAI,EAAE,UAAU,GAAG5rG,CAAI,CACjD,EACD,WAAWA,EAAM,CACf,OAAOqsG,GAAW,KAAM,UAAWrsG,CAAI,CACxC,EACD,QAAS,CACP,OAAO0G,GAAS,KAAM,SAAUqlG,EAAU,CAC3C,CACH,EACA,SAASrlG,GAAS8lG,EAAM71G,EAAQ81G,EAAW,CACzC,MAAMz5G,EAAMg5G,GAAiBQ,CAAI,EAC3BE,EAAO15G,EAAI2D,CAAM,IACvB,OAAI3D,IAAQw5G,GAAQ,CAACV,GAAUU,CAAI,IACjCE,EAAK,MAAQA,EAAK,KAClBA,EAAK,KAAO,IAAM,CAChB,MAAMr5G,EAASq5G,EAAK,QACpB,OAAIr5G,EAAO,QACTA,EAAO,MAAQo5G,EAAUp5G,EAAO,KAAK,GAEhCA,CACb,GAESq5G,CACT,CACA,MAAMpiD,GAAa,MAAM,UACzB,SAAS4hD,GAAMM,EAAM71G,EAAQqK,EAAI5E,EAASuwG,EAAc3sG,EAAM,CAC5D,MAAMhN,EAAMg5G,GAAiBQ,CAAI,EAC3BI,EAAY55G,IAAQw5G,GAAQ,CAACV,GAAUU,CAAI,EAC3CK,EAAW75G,EAAI2D,CAAM,EAC3B,GAAIk2G,IAAaviD,GAAW3zD,CAAM,EAAG,CACnC,MAAMm2G,EAAUD,EAAS,MAAML,EAAMxsG,CAAI,EACzC,OAAO4sG,EAAYb,GAAWe,CAAO,EAAIA,CAC1C,CACD,IAAIC,EAAY/rG,EACZhO,IAAQw5G,IACNI,EACFG,EAAY,SAAS3uG,EAAMC,EAAO,CAChC,OAAO2C,EAAG,KAAK,KAAM+qG,GAAW3tG,CAAI,EAAGC,EAAOmuG,CAAI,CAC1D,EACexrG,EAAG,OAAS,IACrB+rG,EAAY,SAAS3uG,EAAMC,EAAO,CAChC,OAAO2C,EAAG,KAAK,KAAM5C,EAAMC,EAAOmuG,CAAI,CAC9C,IAGE,MAAMn5G,EAASw5G,EAAS,KAAK75G,EAAK+5G,EAAW3wG,CAAO,EACpD,OAAOwwG,GAAaD,EAAeA,EAAat5G,CAAM,EAAIA,CAC5D,CACA,SAASi5G,GAAOE,EAAM71G,EAAQqK,EAAIhB,EAAM,CACtC,MAAMhN,EAAMg5G,GAAiBQ,CAAI,EACjC,IAAIO,EAAY/rG,EAChB,OAAIhO,IAAQw5G,IACLV,GAAUU,CAAI,EAIRxrG,EAAG,OAAS,IACrB+rG,EAAY,SAAS91E,EAAK74B,EAAMC,EAAO,CACrC,OAAO2C,EAAG,KAAK,KAAMi2B,EAAK74B,EAAMC,EAAOmuG,CAAI,CACnD,GANMO,EAAY,SAAS91E,EAAK74B,EAAMC,EAAO,CACrC,OAAO2C,EAAG,KAAK,KAAMi2B,EAAK80E,GAAW3tG,CAAI,EAAGC,EAAOmuG,CAAI,CAC/D,GAOSx5G,EAAI2D,CAAM,EAAEo2G,EAAW,GAAG/sG,CAAI,CACvC,CACA,SAASmsG,GAAYK,EAAM71G,EAAQqJ,EAAM,CACvC,MAAMhN,EAAM64G,GAAMW,CAAI,EACtBrB,GAAMn4G,EAAK,UAAWk4G,EAAiB,EACvC,MAAM34E,EAAMv/B,EAAI2D,CAAM,EAAE,GAAGqJ,CAAI,EAC/B,OAAKuyB,IAAQ,IAAMA,IAAQ,KAAUy6E,GAAQhtG,EAAK,CAAC,CAAC,GAClDA,EAAK,CAAC,EAAI6rG,GAAM7rG,EAAK,CAAC,CAAC,EAChBhN,EAAI2D,CAAM,EAAE,GAAGqJ,CAAI,GAErBuyB,CACT,CACA,SAAS85E,GAAWG,EAAM71G,EAAQqJ,EAAO,CAAA,EAAI,CAC3CyqG,KACAX,KACA,MAAMv3E,EAAMs5E,GAAMW,CAAI,EAAE71G,CAAM,EAAE,MAAM61G,EAAMxsG,CAAI,EAChD,OAAA+pG,KACAW,KACOn4E,CACT,CAEA,MAAM06E,GAAqCvF,GAAQ,6BAA6B,EAC1EwF,GAAiB,IAAI,IACT,OAAO,oBAAoB,MAAM,EAAE,OAAQ7zG,GAAQA,IAAQ,aAAeA,IAAQ,QAAQ,EAAE,IAAKA,GAAQ,OAAOA,CAAG,CAAC,EAAE,OAAO8uG,EAAQ,CACvJ,EACA,SAAS56C,GAAel0D,EAAK,CACtB8uG,GAAS9uG,CAAG,IAAGA,EAAM,OAAOA,CAAG,GACpC,MAAMoC,EAAMowG,GAAM,IAAI,EACtB,OAAAV,GAAM1vG,EAAK,MAAOpC,CAAG,EACdoC,EAAI,eAAepC,CAAG,CAC/B,CACA,MAAM8zG,EAAoB,CACxB,YAAYC,EAAc,GAAOC,EAAa,GAAO,CACnD,KAAK,YAAcD,EACnB,KAAK,WAAaC,CACnB,CACD,IAAI76G,EAAQ6G,EAAKq4C,EAAU,CACzB,GAAIr4C,IAAQ,WAAY,OAAO7G,EAAO,SACtC,MAAM86G,EAAc,KAAK,YAAaC,EAAa,KAAK,WACxD,GAAIl0G,IAAQ,iBACV,MAAO,CAACi0G,EACH,GAAIj0G,IAAQ,iBACjB,OAAOi0G,EACF,GAAIj0G,IAAQ,gBACjB,OAAOk0G,EACF,GAAIl0G,IAAQ,UACjB,OAAIq4C,KAAc47D,EAAcC,EAAaC,GAAqBC,GAAcF,EAAaG,GAAqBC,IAAa,IAAIn7G,CAAM,GAEzI,OAAO,eAAeA,CAAM,IAAM,OAAO,eAAek/C,CAAQ,EACvDl/C,EAET,OAEF,MAAMg5G,EAAgBliG,GAAQ9W,CAAM,EACpC,GAAI,CAAC86G,EAAa,CAChB,IAAItsG,EACJ,GAAIwqG,IAAkBxqG,EAAKirG,GAAsB5yG,CAAG,GAClD,OAAO2H,EAET,GAAI3H,IAAQ,iBACV,OAAOk0D,EAEV,CACD,MAAMh7B,EAAM,QAAQ,IAClB//B,EACA6G,EAIAu0G,GAAMp7G,CAAM,EAAIA,EAASk/C,CAC/B,EAOI,OANIy2D,GAAS9uG,CAAG,EAAI6zG,GAAe,IAAI7zG,CAAG,EAAI4zG,GAAmB5zG,CAAG,KAG/Di0G,GACHnC,GAAM34G,EAAQ,MAAO6G,CAAG,EAEtBk0G,GACKh7E,EAELq7E,GAAMr7E,CAAG,EACJi5E,GAAiBjD,GAAalvG,CAAG,EAAIk5B,EAAMA,EAAI,MAEpD6jC,GAAS7jC,CAAG,EACP+6E,EAAcO,GAASt7E,CAAG,EAAIi4B,GAASj4B,CAAG,EAE5CA,CACR,CACH,CACA,MAAMu7E,WAA+BX,EAAoB,CACvD,YAAYI,EAAa,GAAO,CAC9B,MAAM,GAAOA,CAAU,CACxB,CACD,IAAI/6G,EAAQ6G,EAAKF,EAAOu4C,EAAU,CAChC,IAAIuV,EAAWz0D,EAAO6G,CAAG,EACzB,GAAI,CAAC,KAAK,WAAY,CACpB,MAAM00G,EAAqBC,GAAW/mD,CAAQ,EAK9C,GAJI,CAAC6kD,GAAU3yG,CAAK,GAAK,CAAC60G,GAAW70G,CAAK,IACxC8tD,EAAW4kD,GAAM5kD,CAAQ,EACzB9tD,EAAQ0yG,GAAM1yG,CAAK,GAEjB,CAACmQ,GAAQ9W,CAAM,GAAKo7G,GAAM3mD,CAAQ,GAAK,CAAC2mD,GAAMz0G,CAAK,EACrD,OAAI40G,EACK,IAEP9mD,EAAS,MAAQ9tD,EACV,GAGZ,CACD,MAAM80G,EAAS3kG,GAAQ9W,CAAM,GAAK+1G,GAAalvG,CAAG,EAAI,OAAOA,CAAG,EAAI7G,EAAO,OAASs1G,GAAOt1G,EAAQ6G,CAAG,EAChGhG,EAAS,QAAQ,IACrBb,EACA6G,EACAF,EACAy0G,GAAMp7G,CAAM,EAAIA,EAASk/C,CAC/B,EACI,OAAIl/C,IAAWq5G,GAAMn6D,CAAQ,IACtBu8D,EAEM3kC,GAAWnwE,EAAO8tD,CAAQ,GACnCokD,GAAQ74G,EAAQ,MAAO6G,EAAKF,EAAO8tD,CAAQ,EAF3CokD,GAAQ74G,EAAQ,MAAO6G,EAAKF,CAAK,GAK9B9F,CACR,CACD,eAAeb,EAAQ6G,EAAK,CAC1B,MAAM40G,EAASnG,GAAOt1G,EAAQ6G,CAAG,EAC3B4tD,EAAWz0D,EAAO6G,CAAG,EACrBhG,EAAS,QAAQ,eAAeb,EAAQ6G,CAAG,EACjD,OAAIhG,GAAU46G,GACZ5C,GAAQ74G,EAAQ,SAAU6G,EAAK,OAAQ4tD,CAAQ,EAE1C5zD,CACR,CACD,IAAIb,EAAQ6G,EAAK,CACf,MAAMhG,EAAS,QAAQ,IAAIb,EAAQ6G,CAAG,EACtC,OAAI,CAAC8uG,GAAS9uG,CAAG,GAAK,CAAC6zG,GAAe,IAAI7zG,CAAG,IAC3C8xG,GAAM34G,EAAQ,MAAO6G,CAAG,EAEnBhG,CACR,CACD,QAAQb,EAAQ,CACd,OAAA24G,GACE34G,EACA,UACA8W,GAAQ9W,CAAM,EAAI,SAAWw4G,EACnC,EACW,QAAQ,QAAQx4G,CAAM,CAC9B,CACH,CACA,MAAM07G,WAAgCf,EAAoB,CACxD,YAAYI,EAAa,GAAO,CAC9B,MAAM,GAAMA,CAAU,CACvB,CACD,IAAI/6G,EAAQ6G,EAAK,CACf,MAAO,CAAA,EAAY,WAAa,cAC9BwvG,GACE,yBAAyB,OAAOxvG,CAAG,CAAC,gCACpC7G,CACR,EAEW,EACR,CACD,eAAeA,EAAQ6G,EAAK,CAC1B,MAAO,CAAA,EAAY,WAAa,cAC9BwvG,GACE,4BAA4B,OAAOxvG,CAAG,CAAC,gCACvC7G,CACR,EAEW,EACR,CACH,CACA,MAAM27G,GAAkC,IAAIL,GACtCM,GAAmC,IAAIF,GAEvCG,GAA0C,IAAIH,GAAwB,EAAI,EAE1EI,GAAan1G,GAAUA,EACvBo1G,GAAYhgI,GAAM,QAAQ,eAAeA,CAAC,EAChD,SAASigI,GAAqB73G,EAAQ22G,EAAaC,EAAY,CAC7D,OAAO,YAAYvtG,EAAM,CACvB,MAAMxN,EAAS,KAAK,QACdi8G,EAAY5C,GAAMr5G,CAAM,EACxBk8G,EAAc3G,GAAM0G,CAAS,EAC7BE,EAASh4G,IAAW,WAAaA,IAAW,OAAO,UAAY+3G,EAC/DE,EAAYj4G,IAAW,QAAU+3G,EACjCG,EAAgBr8G,EAAOmE,CAAM,EAAE,GAAGqJ,CAAI,EACtCq3D,EAAOk2C,EAAae,GAAYhB,EAAcwB,GAAa/C,GACjE,OAACuB,GAAenC,GACdsD,EACA,UACAG,EAAY3D,GAAsBD,EACxC,EACW,CAEL,MAAO,CACL,KAAM,CAAE,MAAA7xG,EAAO,KAAA4N,CAAM,EAAG8nG,EAAc,KAAI,EAC1C,OAAO9nG,EAAO,CAAE,MAAA5N,EAAO,KAAA4N,GAAS,CAC9B,MAAO4nG,EAAS,CAACt3C,EAAKl+D,EAAM,CAAC,CAAC,EAAGk+D,EAAKl+D,EAAM,CAAC,CAAC,CAAC,EAAIk+D,EAAKl+D,CAAK,EAC7D,KAAA4N,CACV,CACO,EAED,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAO,IACR,CACP,CACA,CACA,CACA,SAASgoG,GAAqB36G,EAAM,CAClC,OAAO,YAAY4L,EAAM,CACvB,GAAO,CAAA,EAAY,WAAa,aAAe,CAC7C,MAAM3G,EAAM2G,EAAK,CAAC,EAAI,WAAWA,EAAK,CAAC,CAAC,KAAO,GAC/C6oG,GACE,GAAGL,GAAWp0G,CAAI,CAAC,cAAciF,CAAG,8BACpCwyG,GAAM,IAAI,CAClB,CACK,CACD,OAAOz3G,IAAS,SAAW,GAAQA,IAAS,QAAU,OAAS,IACnE,CACA,CACA,SAAS46G,GAAuBnB,EAAUoB,EAAS,CACjD,MAAMC,EAAmB,CACvB,IAAI71G,EAAK,CACP,MAAM7G,EAAS,KAAK,QACdi8G,EAAY5C,GAAMr5G,CAAM,EACxB28G,EAAStD,GAAMxyG,CAAG,EACnBw0G,IACCvkC,GAAWjwE,EAAK81G,CAAM,GACxBhE,GAAMsD,EAAW,MAAOp1G,CAAG,EAE7B8xG,GAAMsD,EAAW,MAAOU,CAAM,GAEhC,KAAM,CAAE,IAAAC,CAAG,EAAKb,GAASE,CAAS,EAC5Bp3C,EAAO43C,EAAUX,GAAYT,EAAWiB,GAAa/C,GAC3D,GAAIqD,EAAI,KAAKX,EAAWp1G,CAAG,EACzB,OAAOg+D,EAAK7kE,EAAO,IAAI6G,CAAG,CAAC,EACtB,GAAI+1G,EAAI,KAAKX,EAAWU,CAAM,EACnC,OAAO93C,EAAK7kE,EAAO,IAAI28G,CAAM,CAAC,EACrB38G,IAAWi8G,GACpBj8G,EAAO,IAAI6G,CAAG,CAEjB,EACD,IAAI,MAAO,CACT,MAAM7G,EAAS,KAAK,QACpB,OAACq7G,GAAY1C,GAAMU,GAAMr5G,CAAM,EAAG,UAAWw4G,EAAW,EACjD,QAAQ,IAAIx4G,EAAQ,OAAQA,CAAM,CAC1C,EACD,IAAI6G,EAAK,CACP,MAAM7G,EAAS,KAAK,QACdi8G,EAAY5C,GAAMr5G,CAAM,EACxB28G,EAAStD,GAAMxyG,CAAG,EACxB,OAAKw0G,IACCvkC,GAAWjwE,EAAK81G,CAAM,GACxBhE,GAAMsD,EAAW,MAAOp1G,CAAG,EAE7B8xG,GAAMsD,EAAW,MAAOU,CAAM,GAEzB91G,IAAQ81G,EAAS38G,EAAO,IAAI6G,CAAG,EAAI7G,EAAO,IAAI6G,CAAG,GAAK7G,EAAO,IAAI28G,CAAM,CAC/E,EACD,QAAQpxE,EAAU3hC,EAAS,CACzB,MAAMizG,EAAW,KACX78G,EAAS68G,EAAS,QAClBZ,EAAY5C,GAAMr5G,CAAM,EACxB6kE,EAAO43C,EAAUX,GAAYT,EAAWiB,GAAa/C,GAC3D,OAAC8B,GAAY1C,GAAMsD,EAAW,UAAWzD,EAAW,EAC7Cx4G,EAAO,QAAQ,CAAC2G,EAAOE,IACrB0kC,EAAS,KAAK3hC,EAASi7D,EAAKl+D,CAAK,EAAGk+D,EAAKh+D,CAAG,EAAGg2G,CAAQ,CAC/D,CACF,CACL,EACE,OAAAxH,GACEqH,EACArB,EAAW,CACT,IAAKkB,GAAqB,KAAK,EAC/B,IAAKA,GAAqB,KAAK,EAC/B,OAAQA,GAAqB,QAAQ,EACrC,MAAOA,GAAqB,OAAO,CACzC,EAAQ,CACF,IAAI51G,EAAO,CACL,CAAC81G,GAAW,CAACnD,GAAU3yG,CAAK,GAAK,CAAC60G,GAAW70G,CAAK,IACpDA,EAAQ0yG,GAAM1yG,CAAK,GAErB,MAAM3G,EAASq5G,GAAM,IAAI,EAGzB,OAFc0C,GAAS/7G,CAAM,EACR,IAAI,KAAKA,EAAQ2G,CAAK,IAEzC3G,EAAO,IAAI2G,CAAK,EAChBkyG,GAAQ74G,EAAQ,MAAO2G,EAAOA,CAAK,GAE9B,IACR,EACD,IAAIE,EAAKF,EAAO,CACV,CAAC81G,GAAW,CAACnD,GAAU3yG,CAAK,GAAK,CAAC60G,GAAW70G,CAAK,IACpDA,EAAQ0yG,GAAM1yG,CAAK,GAErB,MAAM3G,EAASq5G,GAAM,IAAI,EACnB,CAAE,IAAAuD,EAAK,IAAAE,CAAK,EAAGf,GAAS/7G,CAAM,EACpC,IAAIy7G,EAASmB,EAAI,KAAK58G,EAAQ6G,CAAG,EAC5B40G,EAGS,CAAA,EAAY,WAAa,cACrCsB,GAAkB/8G,EAAQ48G,EAAK/1G,CAAG,GAHlCA,EAAMwyG,GAAMxyG,CAAG,EACf40G,EAASmB,EAAI,KAAK58G,EAAQ6G,CAAG,GAI/B,MAAM4tD,EAAWqoD,EAAI,KAAK98G,EAAQ6G,CAAG,EACrC,OAAA7G,EAAO,IAAI6G,EAAKF,CAAK,EAChB80G,EAEM3kC,GAAWnwE,EAAO8tD,CAAQ,GACnCokD,GAAQ74G,EAAQ,MAAO6G,EAAKF,EAAO8tD,CAAQ,EAF3CokD,GAAQ74G,EAAQ,MAAO6G,EAAKF,CAAK,EAI5B,IACR,EACD,OAAOE,EAAK,CACV,MAAM7G,EAASq5G,GAAM,IAAI,EACnB,CAAE,IAAAuD,EAAK,IAAAE,CAAK,EAAGf,GAAS/7G,CAAM,EACpC,IAAIy7G,EAASmB,EAAI,KAAK58G,EAAQ6G,CAAG,EAC5B40G,EAGS,CAAA,EAAY,WAAa,cACrCsB,GAAkB/8G,EAAQ48G,EAAK/1G,CAAG,GAHlCA,EAAMwyG,GAAMxyG,CAAG,EACf40G,EAASmB,EAAI,KAAK58G,EAAQ6G,CAAG,GAI/B,MAAM4tD,EAAWqoD,EAAMA,EAAI,KAAK98G,EAAQ6G,CAAG,EAAI,OACzChG,EAASb,EAAO,OAAO6G,CAAG,EAChC,OAAI40G,GACF5C,GAAQ74G,EAAQ,SAAU6G,EAAK,OAAQ4tD,CAAQ,EAE1C5zD,CACR,EACD,OAAQ,CACN,MAAMb,EAASq5G,GAAM,IAAI,EACnB2D,EAAWh9G,EAAO,OAAS,EAC3B84G,EAAe,CAAA,EAAY,WAAa,aAAgBvD,GAAMv1G,CAAM,EAAI,IAAI,IAAIA,CAAM,EAAI,IAAI,IAAIA,CAAM,EAAI,OAC5Ga,EAASb,EAAO,QACtB,OAAIg9G,GACFnE,GACE74G,EACA,QACA,OACA,OACA84G,CACZ,EAEej4G,CACR,CACF,CACL,EAC0B,CACtB,OACA,SACA,UACA,OAAO,QACX,EACkB,QAASsD,GAAW,CAClCu4G,EAAiBv4G,CAAM,EAAI63G,GAAqB73G,EAAQk3G,EAAUoB,CAAO,CAC7E,CAAG,EACMC,CACT,CACA,SAASO,GAA4BnC,EAAa2B,EAAS,CACzD,MAAMC,EAAmBF,GAAuB1B,EAAa2B,CAAO,EACpE,MAAO,CAACz8G,EAAQ6G,EAAKq4C,IACfr4C,IAAQ,iBACH,CAACi0G,EACCj0G,IAAQ,iBACVi0G,EACEj0G,IAAQ,UACV7G,EAEF,QAAQ,IACbs1G,GAAOoH,EAAkB71G,CAAG,GAAKA,KAAO7G,EAAS08G,EAAmB18G,EACpE6G,EACAq4C,CACN,CAEA,CACA,MAAMg+D,GAA4B,CAChC,IAAqBD,GAA4B,GAAO,EAAK,CAC/D,EAIME,GAA6B,CACjC,IAAqBF,GAA4B,GAAM,EAAK,CAC9D,EACMG,GAAoC,CACxC,IAAqBH,GAA4B,GAAM,EAAI,CAC7D,EACA,SAASF,GAAkB/8G,EAAQ48G,EAAK/1G,EAAK,CAC3C,MAAM81G,EAAStD,GAAMxyG,CAAG,EACxB,GAAI81G,IAAW91G,GAAO+1G,EAAI,KAAK58G,EAAQ28G,CAAM,EAAG,CAC9C,MAAM/6G,EAAOi0G,GAAU71G,CAAM,EAC7Bq2G,GACE,YAAYz0G,CAAI,kEAAkEA,IAAS,MAAQ,WAAa,EAAE,8JACxH,CACG,CACH,CAEA,MAAMu5G,GAA8B,IAAI,QAClCD,GAAqC,IAAI,QACzCD,GAA8B,IAAI,QAClCD,GAAqC,IAAI,QAC/C,SAASqC,GAAcC,EAAS,CAC9B,OAAQA,EAAO,CACb,IAAK,SACL,IAAK,QACH,MAAO,GACT,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACH,MAAO,GACT,QACE,MAAO,EACV,CACH,CACA,SAASC,GAAc52G,EAAO,CAC5B,OAAOA,EAAM,UAAe,CAAC,OAAO,aAAaA,CAAK,EAAI,EAAkB02G,GAAcxH,GAAUlvG,CAAK,CAAC,CAC5G,CACA,SAASqxD,GAASh4D,EAAQ,CACxB,OAAIw7G,GAAWx7G,CAAM,EACZA,EAEFw9G,GACLx9G,EACA,GACA27G,GACAuB,GACA/B,EACJ,CACA,CAUA,SAASE,GAASr7G,EAAQ,CACxB,OAAOw9G,GACLx9G,EACA,GACA47G,GACAuB,GACAlC,EACJ,CACA,CACA,SAASwC,GAAgBz9G,EAAQ,CAC/B,OAAOw9G,GACLx9G,EACA,GACA67G,GACAuB,GACApC,EACJ,CACA,CACA,SAASwC,GAAqBx9G,EAAQ86G,EAAa4C,EAAcC,EAAoBC,EAAU,CAC7F,GAAI,CAACh6C,GAAS5jE,CAAM,EAClB,MAAO,CAAA,EAAY,WAAa,cAC9Bq2G,GACE,wBAAwByE,EAAc,WAAa,UAAU,KAAK,OAChE96G,CACV,CAAS,EACT,EAEWA,EAET,GAAIA,EAAO,SAAc,EAAE86G,GAAe96G,EAAO,gBAC/C,OAAOA,EAET,MAAM69G,EAAgBD,EAAS,IAAI59G,CAAM,EACzC,GAAI69G,EACF,OAAOA,EAET,MAAMh5B,EAAa04B,GAAcv9G,CAAM,EACvC,GAAI6kF,IAAe,EACjB,OAAO7kF,EAET,MAAM89G,EAAQ,IAAI,MAChB99G,EACA6kF,IAAe,EAAqB84B,EAAqBD,CAC7D,EACE,OAAAE,EAAS,IAAI59G,EAAQ89G,CAAK,EACnBA,CACT,CACA,SAASC,GAAWp3G,EAAO,CACzB,OAAI60G,GAAW70G,CAAK,EACXo3G,GAAWp3G,EAAM,OAAU,EAE7B,CAAC,EAAEA,GAASA,EAAM,eAC3B,CACA,SAAS60G,GAAW70G,EAAO,CACzB,MAAO,CAAC,EAAEA,GAASA,EAAM,eAC3B,CACA,SAAS2yG,GAAU3yG,EAAO,CACxB,MAAO,CAAC,EAAEA,GAASA,EAAM,cAC3B,CACA,SAAS6zG,GAAQ7zG,EAAO,CACtB,OAAOA,EAAQ,CAAC,CAACA,EAAM,QAAa,EACtC,CACA,SAAS0yG,GAAMwD,EAAU,CACvB,MAAM37G,EAAM27G,GAAYA,EAAS,QACjC,OAAO37G,EAAMm4G,GAAMn4G,CAAG,EAAI27G,CAC5B,CACA,SAASmB,GAAQr3G,EAAO,CACtB,MAAI,CAAC2uG,GAAO3uG,EAAO,UAAU,GAAK,OAAO,aAAaA,CAAK,GACzDsvG,GAAItvG,EAAO,WAAY,EAAI,EAEtBA,CACT,CACA,MAAM4yG,GAAc5yG,GAAUi9D,GAASj9D,CAAK,EAAIqxD,GAASrxD,CAAK,EAAIA,EAC5D21G,GAAc31G,GAAUi9D,GAASj9D,CAAK,EAAI00G,GAAS10G,CAAK,EAAIA,EAElE,SAASy0G,GAAM7wI,EAAG,CAChB,OAAOA,EAAIA,EAAE,YAAiB,GAAO,EACvC,CACA,SAAS2rF,GAAIvvD,EAAO,CAClB,OAAOs3G,GAAUt3G,EAAO,EAAK,CAC/B,CACA,SAASu3G,GAAWv3G,EAAO,CACzB,OAAOs3G,GAAUt3G,EAAO,EAAI,CAC9B,CACA,SAASs3G,GAAUE,EAAU1B,EAAS,CACpC,OAAIrB,GAAM+C,CAAQ,EACTA,EAEF,IAAIC,GAAQD,EAAU1B,CAAO,CACtC,CACA,MAAM2B,EAAQ,CACZ,YAAYz3G,EAAOo0G,EAAY,CAC7B,KAAK,IAAM,IAAIzjD,GACf,KAAK,UAAe,GACpB,KAAK,cAAmB,GACxB,KAAK,UAAYyjD,EAAap0G,EAAQ0yG,GAAM1yG,CAAK,EACjD,KAAK,OAASo0G,EAAap0G,EAAQ4yG,GAAW5yG,CAAK,EACnD,KAAK,cAAmBo0G,CACzB,CACD,IAAI,OAAQ,CACV,MAAO,CAAA,EAAY,WAAa,aAC9B,KAAK,IAAI,MAAM,CACb,OAAQ,KACR,KAAM,MACN,IAAK,OACb,CAAO,EAED,KAAK,IAAI,QAEJ,KAAK,MACb,CACD,IAAI,MAAMrmD,EAAU,CAClB,MAAMD,EAAW,KAAK,UAChB4pD,EAAiB,KAAK,eAAoB/E,GAAU5kD,CAAQ,GAAK8mD,GAAW9mD,CAAQ,EAC1FA,EAAW2pD,EAAiB3pD,EAAW2kD,GAAM3kD,CAAQ,EACjDoiB,GAAWpiB,EAAUD,CAAQ,IAC/B,KAAK,UAAYC,EACjB,KAAK,OAAS2pD,EAAiB3pD,EAAW6kD,GAAW7kD,CAAQ,EACtD,CAAA,EAAY,WAAa,aAC9B,KAAK,IAAI,QAAQ,CACf,OAAQ,KACR,KAAM,MACN,IAAK,QACL,SAAAA,EACA,SAAAD,CACV,CAAS,EAED,KAAK,IAAI,UAGd,CACH,CAeA,SAAS6pD,GAAMC,EAAM,CACnB,OAAOnD,GAAMmD,CAAI,EAAIA,EAAK,MAAQA,CACpC,CAIA,MAAMC,GAAwB,CAC5B,IAAK,CAACx+G,EAAQ6G,EAAKq4C,IAAar4C,IAAQ,UAAY7G,EAASs+G,GAAM,QAAQ,IAAIt+G,EAAQ6G,EAAKq4C,CAAQ,CAAC,EACrG,IAAK,CAACl/C,EAAQ6G,EAAKF,EAAOu4C,IAAa,CACrC,MAAMuV,EAAWz0D,EAAO6G,CAAG,EAC3B,OAAIu0G,GAAM3mD,CAAQ,GAAK,CAAC2mD,GAAMz0G,CAAK,GACjC8tD,EAAS,MAAQ9tD,EACV,IAEA,QAAQ,IAAI3G,EAAQ6G,EAAKF,EAAOu4C,CAAQ,CAElD,CACH,EACA,SAASu/D,GAAUC,EAAgB,CACjC,OAAOX,GAAWW,CAAc,EAAIA,EAAiB,IAAI,MAAMA,EAAgBF,EAAqB,CACtG,CA4EA,MAAMG,EAAgB,CACpB,YAAYnwG,EAAIowG,EAAQC,EAAO,CAC7B,KAAK,GAAKrwG,EACV,KAAK,OAASowG,EAId,KAAK,OAAS,OAId,KAAK,IAAM,IAAItnD,GAAI,IAAI,EAIvB,KAAK,UAAY,GAMjB,KAAK,KAAO,OAIZ,KAAK,SAAW,OAIhB,KAAK,MAAQ,GAIb,KAAK,cAAgBsgD,GAAgB,EAIrC,KAAK,KAAO,OAEZ,KAAK,OAAS,KACd,KAAK,eAAoB,CAACgH,EAC1B,KAAK,MAAQC,CACd,CAID,QAAS,CAEP,GADA,KAAK,OAAS,GACV,EAAE,KAAK,MAAQ,IACnBvI,KAAc,KACZG,OAAAA,GAAM,KAAM,EAAI,EACT,EAEV,CACD,IAAI,OAAQ,CACV,MAAM38D,EAAU,GAAY,WAAa,aAAgB,KAAK,IAAI,MAAM,CACtE,OAAQ,KACR,KAAM,MACN,IAAK,OACN,CAAA,EAAI,KAAK,IAAI,QACd,OAAA49D,GAAgB,IAAI,EAChB59D,IACFA,EAAK,QAAU,KAAK,IAAI,SAEnB,KAAK,MACb,CACD,IAAI,MAAM4a,EAAU,CACd,KAAK,OACP,KAAK,OAAOA,CAAQ,EACR,CAAA,EAAY,WAAa,cACrC2hD,GAAK,oDAAoD,CAE5D,CACH,CACA,SAASsB,GAASmH,EAAiBC,EAAcF,EAAQ,GAAO,CAC9D,IAAIz/C,EACAw/C,EACA1zG,GAAW4zG,CAAe,EAC5B1/C,EAAS0/C,GAET1/C,EAAS0/C,EAAgB,IACzBF,EAASE,EAAgB,KAE3B,MAAME,EAAO,IAAIL,GAAgBv/C,EAAQw/C,EAAQC,CAAK,EACtD,MAAO,CAAA,EAAY,WAAa,cAAiBE,GAAgB,CAACF,IAChEG,EAAK,QAAUD,EAAa,QAC5BC,EAAK,UAAYD,EAAa,WAEzBC,CACT,CA8BA,MAAMC,GAAwB,CAAA,EACxBC,GAA6B,IAAI,QACvC,IAAIC,GAIJ,SAASC,GAAiBC,EAAWC,EAAe,GAAO1/C,EAAQu/C,GAAe,CAChF,GAAIv/C,EAAO,CACT,IAAI2/C,EAAWL,GAAW,IAAIt/C,CAAK,EAC9B2/C,GAAUL,GAAW,IAAIt/C,EAAO2/C,EAAW,CAAA,CAAE,EAClDA,EAAS,KAAKF,CAAS,CAC3B,MAAgB,CAAW,GAAC,WAAa,cAAiB,CAACC,GACvDjJ,GACE,mFACN,CAEA,CACA,SAASmJ,GAAM/vG,EAAQ3B,EAAIhM,EAAUqzG,GAAW,CAC9C,KAAM,CAAE,UAAA3tC,EAAW,KAAAi4C,EAAM,KAAApL,EAAM,UAAAjiG,EAAW,WAAAstG,EAAY,KAAAC,CAAM,EAAG79G,EACzD89G,EAAqB16I,GAAM,EAC9B48B,EAAQ,QAAUu0G,IACjB,yBACAnxI,EACA,4GACN,CACA,EACQ26I,EAAkBC,GAClBL,EAAaK,EACbxG,GAAUwG,CAAO,GAAKL,IAAS,IAASA,IAAS,EAC5CM,GAASD,EAAS,CAAC,EACrBC,GAASD,CAAO,EAEzB,IAAIzpD,EACA+I,EACA3I,EACAupD,EACAC,EAAe,GACfC,EAAgB,GA+CpB,GA9CI9E,GAAM3rG,CAAM,GACd2vD,EAAS,IAAM3vD,EAAO,MACtBwwG,EAAe3G,GAAU7pG,CAAM,GACtBsuG,GAAWtuG,CAAM,GAC1B2vD,EAAS,IAAMygD,EAAepwG,CAAM,EACpCwwG,EAAe,IACNnpG,GAAQrH,CAAM,GACvBywG,EAAgB,GAChBD,EAAexwG,EAAO,KAAMvqC,GAAM64I,GAAW74I,CAAC,GAAKo0I,GAAUp0I,CAAC,CAAC,EAC/Dk6F,EAAS,IAAM3vD,EAAO,IAAKvqC,GAAM,CAC/B,GAAIk2I,GAAMl2I,CAAC,EACT,OAAOA,EAAE,MACJ,GAAI64I,GAAW74I,CAAC,EACrB,OAAO26I,EAAe36I,CAAC,EAClB,GAAIgmC,GAAWhmC,CAAC,EACrB,OAAOy6I,EAAOA,EAAKz6I,EAAG,CAAC,EAAIA,EAAC,GAEzB,CAAW,GAAC,WAAa,cAAiB06I,EAAkB16I,CAAC,CAExE,CAAK,GACQgmC,GAAWuE,CAAM,EACtB3B,EACFsxD,EAASugD,EAAO,IAAMA,EAAKlwG,EAAQ,CAAC,EAAIA,EAExC2vD,EAAS,IAAM,CACb,GAAI3I,EAAS,CACXwhD,KACA,GAAI,CACFxhD,GACZ,QAAoB,CACRyhD,IACD,CACF,CACD,MAAMiI,EAAgBhB,GACtBA,GAAgB9oD,EAChB,GAAI,CACF,OAAOspD,EAAOA,EAAKlwG,EAAQ,EAAG,CAACuwG,CAAY,CAAC,EAAIvwG,EAAOuwG,CAAY,CAC7E,QAAkB,CACRb,GAAgBgB,CACjB,CACT,GAGI/gD,EAASg2C,GACN,CAAW,EAAC,WAAa,cAAiBwK,EAAkBnwG,CAAM,GAEnE3B,GAAM2xG,EAAM,CACd,MAAMW,EAAahhD,EACb1wC,EAAQ+wF,IAAS,GAAO,IAAWA,EACzCrgD,EAAS,IAAM2gD,GAASK,EAAY,EAAE1xF,CAAK,CAC5C,CAED,MAAM2xF,EAAc,IAAM,CACxBhqD,EAAO,KAAI,CAIf,EACE,GAAIg+C,GAAQvmG,EAAI,CACd,MAAMwyG,EAAMxyG,EACZA,EAAK,IAAIN,IAAS,CAChB8yG,EAAI,GAAG9yG,CAAI,EACX6yG,GACN,CACG,CACD,IAAI5rD,EAAWyrD,EAAgB,IAAI,MAAMzwG,EAAO,MAAM,EAAE,KAAKwvG,EAAqB,EAAIA,GACtF,MAAMsB,EAAOC,GAAsB,CACjC,GAAI,IAAEnqD,EAAO,MAAQ,IAAM,CAACA,EAAO,OAAS,CAACmqD,GAG7C,GAAI1yG,EAAI,CACN,MAAM4mD,EAAW2B,EAAO,MACxB,GAAIopD,GAAQQ,IAAiBC,EAAgBxrD,EAAS,KAAK,CAAC34E,EAAG3X,IAAM0yG,GAAW/6F,EAAG04E,EAASrwF,CAAC,CAAC,CAAC,EAAI0yG,GAAWpiB,EAAUD,CAAQ,GAAI,CAC9HgC,GACFA,IAEF,MAAMgqD,EAAiBtB,GACvBA,GAAgB9oD,EAChB,GAAI,CACF,MAAM7oD,EAAO,CACXknD,EAEAD,IAAawqD,GAAwB,OAASiB,GAAiBzrD,EAAS,CAAC,IAAMwqD,GAAwB,CAAA,EAAKxqD,EAC5GurD,CACZ,EACUL,EAAOA,EAAK7xG,EAAI,EAAGN,CAAI,EAErBM,EAAG,GAAGN,CAAI,EAEZinD,EAAWC,CACrB,QAAkB,CACRyqD,GAAgBsB,CACjB,CACF,CACP,MACMpqD,EAAO,IAAG,CAEhB,EACE,OAAIqpD,GACFA,EAAWa,CAAG,EAEhBlqD,EAAS,IAAImgD,GAAep3C,CAAM,EAClC/I,EAAO,UAAYjkD,EAAY,IAAMA,EAAUmuG,EAAK,EAAK,EAAIA,EAC7DP,EAAgBxxG,GAAO4wG,GAAiB5wG,EAAI,GAAO6nD,CAAM,EACzDI,EAAUJ,EAAO,OAAS,IAAM,CAC9B,MAAMkpD,EAAWL,GAAW,IAAI7oD,CAAM,EACtC,GAAIkpD,EAAU,CACZ,GAAII,EACFA,EAAKJ,EAAU,CAAC,MAEhB,WAAWmB,KAAYnB,EAAUmB,IAEnCxB,GAAW,OAAO7oD,CAAM,CACzB,CACL,EACS,CAAA,EAAY,WAAa,eAC9BA,EAAO,QAAUv0D,EAAQ,QACzBu0D,EAAO,UAAYv0D,EAAQ,WAEzBgM,EACE05D,EACF+4C,EAAI,EAAI,EAER9rD,EAAW4B,EAAO,MAEXjkD,EACTA,EAAUmuG,EAAI,KAAK,KAAM,EAAI,EAAG,EAAI,EAEpClqD,EAAO,IAAG,EAEZgqD,EAAY,MAAQhqD,EAAO,MAAM,KAAKA,CAAM,EAC5CgqD,EAAY,OAAShqD,EAAO,OAAO,KAAKA,CAAM,EAC9CgqD,EAAY,KAAOA,EACZA,CACT,CACA,SAASN,GAASp5G,EAAO+nB,EAAQ,IAAUiyF,EAAM,CAK/C,GAJIjyF,GAAS,GAAK,CAACk1C,GAASj9D,CAAK,GAAKA,EAAM,WAG5Cg6G,EAAOA,GAAwB,IAAI,IAC/BA,EAAK,IAAIh6G,CAAK,GAChB,OAAOA,EAIT,GAFAg6G,EAAK,IAAIh6G,CAAK,EACd+nB,IACI0sF,GAAMz0G,CAAK,EACbo5G,GAASp5G,EAAM,MAAO+nB,EAAOiyF,CAAI,UACxB7pG,GAAQnQ,CAAK,EACtB,QAASviC,EAAI,EAAGA,EAAIuiC,EAAM,OAAQviC,IAChC27I,GAASp5G,EAAMviC,CAAC,EAAGsqD,EAAOiyF,CAAI,UAEvBlL,GAAM9uG,CAAK,GAAK4uG,GAAM5uG,CAAK,EACpCA,EAAM,QAAS5qB,GAAM,CACnBgkI,GAAShkI,EAAG2yC,EAAOiyF,CAAI,CAC7B,CAAK,UACQ7K,GAAcnvG,CAAK,EAAG,CAC/B,UAAWE,KAAOF,EAChBo5G,GAASp5G,EAAME,CAAG,EAAG6nB,EAAOiyF,CAAI,EAElC,UAAW95G,KAAO,OAAO,sBAAsBF,CAAK,EAC9C,OAAO,UAAU,qBAAqB,KAAKA,EAAOE,CAAG,GACvDk5G,GAASp5G,EAAME,CAAG,EAAG6nB,EAAOiyF,CAAI,CAGrC,CACD,OAAOh6G,CACT,CCr2DA;AAAA;AAAA;AAAA;AAAA,GAUA,MAAM04F,GAAQ,CAAA,EACd,SAASuhB,GAAmBr6G,EAAO,CACjC84F,GAAM,KAAK94F,CAAK,CAClB,CACA,SAASs6G,IAAoB,CAC3BxhB,GAAM,IAAG,CACX,CACA,IAAIyhB,GAAY,GAChB,SAASC,GAAOngE,KAAQpzC,EAAM,CAC5B,GAAIszG,GAAW,OACfA,GAAY,GACZ7I,KACA,MAAM3sG,EAAW+zF,GAAM,OAASA,GAAMA,GAAM,OAAS,CAAC,EAAE,UAAY,KAC9D2hB,EAAiB11G,GAAYA,EAAS,WAAW,OAAO,YACxD21G,EAAQC,KACd,GAAIF,EACFG,GACEH,EACA11G,EACA,GACA,CAEEs1C,EAAMpzC,EAAK,IAAK9jC,GAAM,CACpB,IAAIuiC,EAAIE,EACR,OAAQA,GAAMF,EAAKviC,EAAE,WAAa,KAAO,OAASuiC,EAAG,KAAKviC,CAAC,IAAM,KAAOyiC,EAAK,KAAK,UAAUziC,CAAC,CACvG,CAAS,EAAE,KAAK,EAAE,EACV4hC,GAAYA,EAAS,MACrB21G,EAAM,IACJ,CAAC,CAAE,MAAA16G,KAAY,OAAO66G,GAAoB91G,EAAU/E,EAAM,IAAI,CAAC,GACzE,EAAU,KAAK;AAAA,CAAI,EACX06G,CACD,CACP,MACS,CACL,MAAMI,EAAW,CAAC,eAAezgE,CAAG,GAAI,GAAGpzC,CAAI,EAC3CyzG,EAAM,QAERI,EAAS,KAAK;AAAA,EACjB,GAAGC,GAAYL,CAAK,CAAC,EAEpB,QAAQ,KAAK,GAAGI,CAAQ,CACzB,CACDnJ,KACA4I,GAAY,EACd,CACA,SAASI,IAAoB,CAC3B,IAAIK,EAAeliB,GAAMA,GAAM,OAAS,CAAC,EACzC,GAAI,CAACkiB,EACH,MAAO,GAET,MAAMC,EAAkB,CAAA,EACxB,KAAOD,GAAc,CACnB,MAAMrvG,EAAOsvG,EAAgB,CAAC,EAC1BtvG,GAAQA,EAAK,QAAUqvG,EACzBrvG,EAAK,eAELsvG,EAAgB,KAAK,CACnB,MAAOD,EACP,aAAc,CACtB,CAAO,EAEH,MAAME,EAAiBF,EAAa,WAAaA,EAAa,UAAU,OACxEA,EAAeE,GAAkBA,EAAe,KACjD,CACD,OAAOD,CACT,CACA,SAASF,GAAYL,EAAO,CAC1B,MAAMS,EAAO,CAAA,EACb,OAAAT,EAAM,QAAQ,CAAC7wD,EAAOhsF,IAAM,CAC1Bs9I,EAAK,KAAK,GAAGt9I,IAAM,EAAI,CAAA,EAAK,CAAC;AAAA,CAChC,EAAG,GAAGu9I,GAAiBvxD,CAAK,CAAC,CAC9B,CAAG,EACMsxD,CACT,CACA,SAASC,GAAiB,CAAE,MAAAp7G,EAAO,aAAAq7G,GAAgB,CACjD,MAAMC,EAAUD,EAAe,EAAI,QAAQA,CAAY,oBAAsB,GACvEvhB,EAAS95F,EAAM,UAAYA,EAAM,UAAU,QAAU,KAAO,GAC5Du6C,EAAO,QAAQsgE,GACnB76G,EAAM,UACNA,EAAM,KACN85F,CACD,CAAA,GACKr/C,EAAQ,IAAM6gE,EACpB,OAAOt7G,EAAM,MAAQ,CAACu6C,EAAM,GAAGghE,GAAYv7G,EAAM,KAAK,EAAGy6C,CAAK,EAAI,CAACF,EAAOE,CAAK,CACjF,CACA,SAAS8gE,GAAYjuD,EAAO,CAC1B,MAAM9zB,EAAM,CAAA,EACNxoB,EAAO,OAAO,KAAKs8C,CAAK,EAC9B,OAAAt8C,EAAK,MAAM,EAAG,CAAC,EAAE,QAAS1Q,GAAQ,CAChCk5B,EAAI,KAAK,GAAGgiF,GAAWl7G,EAAKgtD,EAAMhtD,CAAG,CAAC,CAAC,CAC3C,CAAG,EACG0Q,EAAK,OAAS,GAChBwoB,EAAI,KAAK,MAAM,EAEVA,CACT,CACA,SAASgiF,GAAWl7G,EAAKF,EAAOzF,EAAK,CACnC,OAAIw0G,GAAS/uG,CAAK,GAChBA,EAAQ,KAAK,UAAUA,CAAK,EACrBzF,EAAMyF,EAAQ,CAAC,GAAGE,CAAG,IAAIF,CAAK,EAAE,GAC9B,OAAOA,GAAU,UAAY,OAAOA,GAAU,WAAaA,GAAS,KACtEzF,EAAMyF,EAAQ,CAAC,GAAGE,CAAG,IAAIF,CAAK,EAAE,EAC9By0G,GAAMz0G,CAAK,GACpBA,EAAQo7G,GAAWl7G,EAAKwyG,GAAM1yG,EAAM,KAAK,EAAG,EAAI,EACzCzF,EAAMyF,EAAQ,CAAC,GAAGE,CAAG,QAASF,EAAO,GAAG,GACtCuE,GAAWvE,CAAK,EAClB,CAAC,GAAGE,CAAG,MAAMF,EAAM,KAAO,IAAIA,EAAM,IAAI,IAAM,EAAE,EAAE,GAEzDA,EAAQ0yG,GAAM1yG,CAAK,EACZzF,EAAMyF,EAAQ,CAAC,GAAGE,CAAG,IAAKF,CAAK,EAE1C,CA0CA,MAAMq7G,GAAqB,CACxB,GAAO,sBACP,GAAO,oBACP,EAAM,eACN,GAAO,mBACP,EAAM,eACN,GAAO,oBACP,EAAM,UACN,IAAQ,qBACR,GAAO,iBACP,EAAM,iBACN,GAAO,mBACP,GAAO,qBACP,IAAQ,qBACR,IAAQ,uBACR,EAAI,iBACJ,EAAI,kBACJ,EAAI,iBACJ,EAAI,mBACJ,EAAI,2BACJ,EAAI,uBACJ,EAAI,0BACJ,EAAI,aACJ,EAAI,iBACJ,EAAI,kBACJ,GAAK,mBACL,GAAK,kBACL,GAAK,eACL,GAAK,yBACL,GAAK,kBACL,GAAK,mBACL,GAAK,8BACR,EACA,SAASb,GAAsB3yG,EAAIlD,EAAU1J,EAAM4L,EAAM,CACvD,GAAI,CACF,OAAOA,EAAOgB,EAAG,GAAGhB,CAAI,EAAIgB,EAAE,CAC/B,OAAQ9C,EAAK,CACZwT,GAAYxT,EAAKJ,EAAU1J,CAAI,CAChC,CACH,CACA,SAASqgH,GAA2BzzG,EAAIlD,EAAU1J,EAAM4L,EAAM,CAC5D,GAAItC,GAAWsD,CAAE,EAAG,CAClB,MAAMuxB,EAAMohF,GAAsB3yG,EAAIlD,EAAU1J,EAAM4L,CAAI,EAC1D,OAAIuyB,GAAOlsB,GAAUksB,CAAG,GACtBA,EAAI,MAAOr0B,GAAQ,CACjBwT,GAAYxT,EAAKJ,EAAU1J,CAAI,CACvC,CAAO,EAEIm+B,CACR,CACD,GAAIjpB,GAAQtI,CAAE,EAAG,CACf,MAAMiJ,EAAS,CAAA,EACf,QAAS,EAAI,EAAG,EAAIjJ,EAAG,OAAQ,IAC7BiJ,EAAO,KAAKwqG,GAA2BzzG,EAAG,CAAC,EAAGlD,EAAU1J,EAAM4L,CAAI,CAAC,EAErE,OAAOiK,CACR,MAAa,CAAA,GAAY,WAAa,cACrCspG,GACE,8DAA8D,OAAOvyG,CAAE,EAC7E,CAEA,CACA,SAAS0Q,GAAYxT,EAAKJ,EAAU1J,EAAMsgH,EAAa,GAAM,CAC3D,MAAMC,EAAe72G,EAAWA,EAAS,MAAQ,KAC3C,CAAE,aAAA82G,EAAc,gCAAAC,GAAoC/2G,GAAYA,EAAS,WAAW,QAAU6pG,GACpG,GAAI7pG,EAAU,CACZ,IAAIg3G,EAAMh3G,EAAS,OACnB,MAAMi3G,EAAkBj3G,EAAS,MAC3Bk3G,EAAe,CAAW,EAAC,WAAa,aAAgBR,GAAmBpgH,CAAI,EAAI,8CAA8CA,CAAI,GAC3I,KAAO0gH,GAAK,CACV,MAAMG,EAAqBH,EAAI,GAC/B,GAAIG,GACF,QAASr+I,EAAI,EAAGA,EAAIq+I,EAAmB,OAAQr+I,IAC7C,GAAIq+I,EAAmBr+I,CAAC,EAAEsnC,EAAK62G,EAAiBC,CAAS,IAAM,GAC7D,OAINF,EAAMA,EAAI,MACX,CACD,GAAIF,EAAc,CAChBnK,KACAkJ,GAAsBiB,EAAc,KAAM,GAAI,CAC5C12G,EACA62G,EACAC,CACR,CAAO,EACDtK,KACA,MACD,CACF,CACDwK,GAASh3G,EAAK9J,EAAMugH,EAAcD,EAAYG,CAA+B,CAC/E,CACA,SAASK,GAASh3G,EAAK9J,EAAMugH,EAAcD,EAAa,GAAMS,EAAc,GAAO,CACjF,GAAO,CAAA,EAAY,WAAa,aAAe,CAC7C,MAAM3kD,EAAOgkD,GAAmBpgH,CAAI,EAQpC,GAPIugH,GACFvB,GAAmBuB,CAAY,EAEjCpB,GAAO,kBAAkB/iD,EAAO,wBAAwBA,CAAI,GAAK,EAAE,EAAE,EACjEmkD,GACFtB,KAEEqB,EACF,MAAMx2G,EAEN,QAAQ,MAAMA,CAAG,CAEpB,KAAM,IAAIi3G,EACT,MAAMj3G,EAEN,QAAQ,MAAMA,CAAG,EAErB,CAEA,MAAMy1D,GAAQ,CAAA,EACd,IAAIyhD,GAAa,GACjB,MAAMC,GAAsB,CAAA,EAC5B,IAAIC,GAAqB,KACrBC,GAAiB,EACrB,MAAMC,GAAkC,QAAQ,UAChD,IAAIC,GAAsB,KAC1B,MAAMC,GAAkB,IACxB,SAASC,GAAS30G,EAAI,CACpB,MAAM1yB,EAAImnI,IAAuBD,GACjC,OAAOx0G,EAAK1yB,EAAE,KAAK,KAAO0yB,EAAG,KAAK,IAAI,EAAIA,CAAE,EAAI1yB,CAClD,CACA,SAASsnI,GAAmBtgI,EAAI,CAC9B,IAAIsgB,EAAQw/G,GAAa,EACrB9iH,EAAMqhE,GAAM,OAChB,KAAO/9D,EAAQtD,GAAK,CAClB,MAAMujH,EAASjgH,EAAQtD,IAAQ,EACzBwjH,EAAYniD,GAAMkiD,CAAM,EACxBE,EAAcC,GAAMF,CAAS,EAC/BC,EAAczgI,GAAMygI,IAAgBzgI,GAAMwgI,EAAU,MAAQ,EAC9DlgH,EAAQigH,EAAS,EAEjBvjH,EAAMujH,CAET,CACD,OAAOjgH,CACT,CACA,SAASqgH,GAASlD,EAAK,CACrB,GAAI,EAAEA,EAAI,MAAQ,GAAI,CACpB,MAAMmD,EAAQF,GAAMjD,CAAG,EACjBoD,EAAUxiD,GAAMA,GAAM,OAAS,CAAC,EAClC,CAACwiD,GACL,EAAEpD,EAAI,MAAQ,IAAMmD,GAASF,GAAMG,CAAO,EACxCxiD,GAAM,KAAKo/C,CAAG,EAEdp/C,GAAM,OAAOiiD,GAAmBM,CAAK,EAAG,EAAGnD,CAAG,EAEhDA,EAAI,OAAS,EACbqD,IACD,CACH,CACA,SAASA,IAAa,CACfX,KACHA,GAAsBD,GAAgB,KAAKa,EAAS,EAExD,CACA,SAASC,GAAiBh2G,EAAI,CACvBgJ,GAAQhJ,CAAE,EAQb+0G,GAAoB,KAAK,GAAG/0G,CAAE,EAP1Bg1G,IAAsBh1G,EAAG,KAAO,GAClCg1G,GAAmB,OAAOC,GAAiB,EAAG,EAAGj1G,CAAE,EACxCA,EAAG,MAAQ,IACtB+0G,GAAoB,KAAK/0G,CAAE,EAC3BA,EAAG,OAAS,GAKhB81G,IACF,CA0BA,SAASG,GAAkBpD,EAAM,CAC/B,GAAIkC,GAAoB,OAAQ,CAC9B,MAAMmB,EAAU,CAAC,GAAG,IAAI,IAAInB,EAAmB,CAAC,EAAE,KAChD,CAACn5I,EAAG8Z,IAAMggI,GAAM95I,CAAC,EAAI85I,GAAMhgI,CAAC,CAClC,EAEI,GADAq/H,GAAoB,OAAS,EACzBC,GAAoB,CACtBA,GAAmB,KAAK,GAAGkB,CAAO,EAClC,MACD,CAKD,IAJAlB,GAAqBkB,EACd,CAAA,EAAY,WAAa,eAC9BrD,EAAOA,GAAwB,IAAI,KAEhCoC,GAAiB,EAAGA,GAAiBD,GAAmB,OAAQC,KAAkB,CACrF,MAAMj1G,EAAKg1G,GAAmBC,EAAc,GACrC,CAAW,GAAC,WAAa,cAAiBkB,GAAsBtD,EAAM7yG,CAAE,IAG3EA,EAAG,MAAQ,IACbA,EAAG,OAAS,IAERA,EAAG,MAAQ,GAAIA,EAAE,EACvBA,EAAG,OAAS,GACb,CACDg1G,GAAqB,KACrBC,GAAiB,CAClB,CACH,CACA,MAAMS,GAASjD,GAAQA,EAAI,IAAM,KAAOA,EAAI,MAAQ,EAAI,GAAK,IAAWA,EAAI,GAC5E,SAASsD,GAAUlD,EAAM,EAChB,CAAA,GAAY,WAAa,eAC9BA,EAAOA,GAAwB,IAAI,KAErC,MAAMrnE,EAAW,CAAW,EAAC,WAAa,aAAiBinE,GAAQ0D,GAAsBtD,EAAMJ,CAAG,EAAInL,GACtG,GAAI,CACF,IAAKwN,GAAa,EAAGA,GAAazhD,GAAM,OAAQyhD,KAAc,CAC5D,MAAMrC,EAAMp/C,GAAMyhD,EAAU,EAC5B,GAAIrC,GAAO,EAAEA,EAAI,MAAQ,GAAI,CAC3B,GAAO,CAAA,EAAY,WAAa,cAAiBjnE,EAAMinE,CAAG,EACxD,SAEEA,EAAI,MAAQ,IACdA,EAAI,OAAS,IAEfY,GACEZ,EACAA,EAAI,EACJA,EAAI,EAAI,GAAK,EACvB,EACcA,EAAI,MAAQ,IAChBA,EAAI,OAAS,GAEhB,CACF,CACL,QAAY,CACR,KAAOqC,GAAazhD,GAAM,OAAQyhD,KAAc,CAC9C,MAAMrC,EAAMp/C,GAAMyhD,EAAU,EACxBrC,IACFA,EAAI,OAAS,GAEhB,CACDqC,GAAa,GACbzhD,GAAM,OAAS,EACf4iD,GAAkBpD,CAAI,EACtBsC,GAAsB,MAClB9hD,GAAM,QAAU0hD,GAAoB,SACtCgB,GAAUlD,CAAI,CAEjB,CACH,CACA,SAASsD,GAAsBtD,EAAMnyG,EAAI,CACvC,MAAM2e,EAAQwzF,EAAK,IAAInyG,CAAE,GAAK,EAC9B,GAAI2e,EAAQ+1F,GAAiB,CAC3B,MAAM53G,EAAWkD,EAAG,EACdkxD,EAAgBp0D,GAAY44G,GAAiB54G,EAAS,IAAI,EAChE4T,OAAAA,GACE,qCAAqCwgD,EAAgB,kBAAkBA,CAAa,IAAM,EAAE,+NAC5F,KACA,EACN,EACW,EACR,CACD,OAAAihD,EAAK,IAAInyG,EAAI2e,EAAQ,CAAC,EACf,EACT,CAGA,MAAMg3F,GAAqC,IAAI,KACxC,CAAW,GAAC,WAAa,eAC9B/N,GAAa,EAAG,oBAAsB,CACpC,aAAcgO,GAAQC,EAAY,EAClC,SAAUD,GAAQE,EAAQ,EAC1B,OAAQF,GAAQG,EAAM,CAC1B,GAEA,MAAM3tG,GAAsB,IAAI,IAahC,SAASytG,GAAavhI,EAAI0hI,EAAY,CACpC,OAAI5tG,GAAI,IAAI9zB,CAAE,EACL,IAET8zB,GAAI,IAAI9zB,EAAI,CACV,WAAY2hI,GAAwBD,CAAU,EAC9C,UAA2B,IAAI,GACnC,CAAG,EACM,GACT,CACA,SAASC,GAAwBztD,EAAW,CAC1C,OAAO0tD,GAAiB1tD,CAAS,EAAIA,EAAU,UAAYA,CAC7D,CACA,SAASstD,GAASxhI,EAAI6hI,EAAW,CAC/B,MAAMC,EAAShuG,GAAI,IAAI9zB,CAAE,EACpB8hI,IAGLA,EAAO,WAAW,OAASD,EAC3B,CAAC,GAAGC,EAAO,SAAS,EAAE,QAASt5G,GAAa,CACtCq5G,IACFr5G,EAAS,OAASq5G,EAClBF,GAAwBn5G,EAAS,IAAI,EAAE,OAASq5G,GAElDr5G,EAAS,YAAc,GAEvBA,EAAS,OAAM,CAEnB,CAAG,EACH,CACA,SAASi5G,GAAOzhI,EAAI+hI,EAAS,CAC3B,MAAMD,EAAShuG,GAAI,IAAI9zB,CAAE,EACzB,GAAI,CAAC8hI,EAAQ,OACbC,EAAUJ,GAAwBI,CAAO,EACzCC,GAAmBF,EAAO,WAAYC,CAAO,EAC7C,MAAME,EAAY,CAAC,GAAGH,EAAO,SAAS,EACtC,QAASxgJ,EAAI,EAAGA,EAAI2gJ,EAAU,OAAQ3gJ,IAAK,CACzC,MAAMknC,EAAWy5G,EAAU3gJ,CAAC,EACtB4gJ,EAAUP,GAAwBn5G,EAAS,IAAI,EACrD,IAAI25G,EAAiBd,GAAmB,IAAIa,CAAO,EAC9CC,IACCD,IAAYJ,EAAO,YACrBE,GAAmBE,EAASH,CAAO,EAErCV,GAAmB,IAAIa,EAASC,EAAiC,IAAI,GAAK,GAE5EA,EAAe,IAAI35G,CAAQ,EAC3BA,EAAS,WAAW,WAAW,OAAOA,EAAS,IAAI,EACnDA,EAAS,WAAW,WAAW,OAAOA,EAAS,IAAI,EACnDA,EAAS,WAAW,aAAa,OAAOA,EAAS,IAAI,EACjDA,EAAS,UACX25G,EAAe,IAAI35G,CAAQ,EAC3BA,EAAS,SAASu5G,EAAQ,MAAM,EAChCI,EAAe,OAAO35G,CAAQ,GACrBA,EAAS,OAClBm4G,GAAS,IAAM,CAEbn4G,EAAS,OAAO,SAEhB25G,EAAe,OAAO35G,CAAQ,CACtC,CAAO,EACQA,EAAS,WAAW,OAC7BA,EAAS,WAAW,SACX,OAAO,OAAW,IAC3B,OAAO,SAAS,SAEhB,QAAQ,KACN,yEACR,EAEQA,EAAS,KAAK,IAAMA,IAAaA,EAAS,MAC5CA,EAAS,KAAK,GAAG,kBAAkB05G,CAAO,CAE7C,CACDlB,GAAiB,IAAM,CACrBK,GAAmB,MAAK,CAC5B,CAAG,CACH,CACA,SAASW,GAAmBE,EAASH,EAAS,CAC5CxP,GAAO2P,EAASH,CAAO,EACvB,UAAWh+G,KAAOm+G,EACZn+G,IAAQ,UAAY,EAAEA,KAAOg+G,IAC/B,OAAOG,EAAQn+G,CAAG,CAGxB,CACA,SAASu9G,GAAQ51G,EAAI,CACnB,MAAO,CAAC1rB,EAAIoiI,IAAQ,CAClB,GAAI,CACF,OAAO12G,EAAG1rB,EAAIoiI,CAAG,CAClB,OAAQniJ,EAAG,CACV,QAAQ,MAAMA,CAAC,EACf,QAAQ,KACN,mFACR,CACK,CACL,CACA,CAgGA,IAAIoiJ,GAA2B,KA6kDH/O,GAAe,EAAC,oBACjBA,GAAa,EAAG,mBAyuB3C,MAAMgP,GAAqBhhJ,GACpBA,EACDihJ,GAAoBjhJ,CAAC,EAAUkhJ,GAA2BlhJ,CAAC,EACxDghJ,GAAkBhhJ,EAAE,MAAM,EAFlB,KAIXmhJ,GAGYlQ,GAAuB,OAAO,OAAO,IAAI,EAAG,CAC1D,EAAIjxI,GAAMA,EACV,IAAMA,GAAMA,EAAE,MAAM,GACpB,MAAQA,GAAMA,EAAE,KAChB,OAASA,IAAS,CAAW,GAAC,WAAa,aAAgBq5I,GAAgBr5I,EAAE,KAAK,EAAIA,EAAE,MACxF,OAASA,IAAS,CAAW,GAAC,WAAa,aAAgBq5I,GAAgBr5I,EAAE,KAAK,EAAIA,EAAE,MACxF,OAASA,IAAS,CAAW,GAAC,WAAa,aAAgBq5I,GAAgBr5I,EAAE,KAAK,EAAIA,EAAE,MACxF,MAAQA,IAAS,CAAW,GAAC,WAAa,aAAgBq5I,GAAgBr5I,EAAE,IAAI,EAAIA,EAAE,KACtF,QAAUA,GAAMghJ,GAAkBhhJ,EAAE,MAAM,EAC1C,MAAQA,GAAMghJ,GAAkBhhJ,EAAE,IAAI,EACtC,MAAQA,GAAMA,EAAE,GAChB,MAAQA,GAAMA,EAAE,KAChB,SAAWA,GAA4BohJ,GAAqBphJ,CAAC,EAC7D,aAAeA,GAAMA,EAAE,IAAMA,EAAE,EAAI,IAAM,CACvCq/I,GAASr/I,EAAE,MAAM,CACvB,GACI,UAAYA,GAAMA,EAAE,IAAMA,EAAE,EAAI++I,GAAS,KAAK/+I,EAAE,KAAK,GACrD,OAASA,GAA4BqhJ,GAAc,KAAKrhJ,CAAC,CAC7D,CAAG,EAEGshJ,GAAoB7+G,GAAQA,IAAQ,KAAOA,IAAQ,IACnD8+G,GAAkB,CAACxmH,EAAO0H,IAAQ1H,IAAUg2G,IAAa,CAACh2G,EAAM,iBAAmBm2G,GAAOn2G,EAAO0H,CAAG,EACpG++G,GAA8B,CAClC,IAAI,CAAE,EAAGt6G,CAAQ,EAAIzE,EAAK,CACxB,GAAIA,IAAQ,WACV,MAAO,GAET,KAAM,CAAE,IAAA0C,EAAK,WAAAs8G,EAAY,KAAAzhH,EAAM,MAAAyvD,EAAO,YAAAiyD,EAAa,KAAAlkH,EAAM,WAAAmkH,CAAY,EAAGz6G,EACxE,GAAO,CAAA,EAAY,WAAa,cAAiBzE,IAAQ,UACvD,MAAO,GAET,IAAIm/G,EACJ,GAAIn/G,EAAI,CAAC,IAAM,IAAK,CAClB,MAAM90B,EAAI+zI,EAAYj/G,CAAG,EACzB,GAAI90B,IAAM,OACR,OAAQA,EAAC,CACP,IAAK,GACH,OAAO8zI,EAAWh/G,CAAG,EACvB,IAAK,GACH,OAAOzC,EAAKyC,CAAG,EACjB,IAAK,GACH,OAAO0C,EAAI1C,CAAG,EAChB,IAAK,GACH,OAAOgtD,EAAMhtD,CAAG,CACnB,KACI,IAAI8+G,GAAgBE,EAAYh/G,CAAG,EACxC,OAAAi/G,EAAYj/G,CAAG,EAAI,EACZg/G,EAAWh/G,CAAG,EAChB,GAAIzC,IAAS+wG,IAAaG,GAAOlxG,EAAMyC,CAAG,EAC/C,OAAAi/G,EAAYj/G,CAAG,EAAI,EACZzC,EAAKyC,CAAG,EACV,IAGJm/G,EAAkB16G,EAAS,aAAa,CAAC,IAAMgqG,GAAO0Q,EAAiBn/G,CAAG,EAE3E,OAAAi/G,EAAYj/G,CAAG,EAAI,EACZgtD,EAAMhtD,CAAG,EACX,GAAI0C,IAAQ4rG,IAAaG,GAAO/rG,EAAK1C,CAAG,EAC7C,OAAAi/G,EAAYj/G,CAAG,EAAI,EACZ0C,EAAI1C,CAAG,EAEdi/G,EAAYj/G,CAAG,EAAI,EAEtB,CACD,MAAMo/G,EAAeV,GAAoB1+G,CAAG,EAC5C,IAAIq/G,EAAWC,EACf,GAAIF,EACF,OAAIp/G,IAAQ,SACV8xG,GAAMrtG,EAAS,MAAO,MAAO,EAAE,EAEnB,GAAY,WAAa,cAAiBzE,IAAQ,UAC9D8xG,GAAMrtG,EAAU,MAAOzE,CAAG,EAErBo/G,EAAa36G,CAAQ,EACvB,IAEJ46G,EAAYtkH,EAAK,gBAAkBskH,EAAYA,EAAUr/G,CAAG,GAE7D,OAAOq/G,EACF,GAAI38G,IAAQ4rG,IAAaG,GAAO/rG,EAAK1C,CAAG,EAC7C,OAAAi/G,EAAYj/G,CAAG,EAAI,EACZ0C,EAAI1C,CAAG,EACT,GAELs/G,EAAmBJ,EAAW,OAAO,iBAAkBzQ,GAAO6Q,EAAkBt/G,CAAG,EAGjF,OAAOs/G,EAAiBt/G,CAAG,GAEjB,CAAA,GAAY,WAAa,cAAiBs+G,KAA6B,CAACzP,GAAS7uG,CAAG,GAElGA,EAAI,QAAQ,KAAK,IAAM,KACjBzC,IAAS+wG,IAAauQ,GAAiB7+G,EAAI,CAAC,CAAC,GAAKyuG,GAAOlxG,EAAMyC,CAAG,EACpEk6G,GACE,YAAY,KAAK,UACfl6G,CACD,CAAA,gIACX,EACiByE,IAAa65G,IACtBpE,GACE,YAAY,KAAK,UAAUl6G,CAAG,CAAC,6DACzC,EAGG,EACD,IAAI,CAAE,EAAGyE,CAAQ,EAAIzE,EAAKF,EAAO,CAC/B,KAAM,CAAE,KAAAvC,EAAM,WAAAyhH,EAAY,IAAAt8G,CAAG,EAAK+B,EAClC,OAAIq6G,GAAgBE,EAAYh/G,CAAG,GACjCg/G,EAAWh/G,CAAG,EAAIF,EACX,IACK,GAAY,WAAa,cAAiBk/G,EAAW,iBAAmBvQ,GAAOuQ,EAAYh/G,CAAG,GAC1Gk6G,GAAO,yCAAyCl6G,CAAG,qBAAqB,EACjE,IACEzC,IAAS+wG,IAAaG,GAAOlxG,EAAMyC,CAAG,GAC/CzC,EAAKyC,CAAG,EAAIF,EACL,IACE2uG,GAAOhqG,EAAS,MAAOzE,CAAG,GAChC,CAAA,EAAY,WAAa,cAAiBk6G,GAAO,8BAA8Bl6G,CAAG,wBAAwB,EACtG,IAELA,EAAI,CAAC,IAAM,KAAOA,EAAI,MAAM,CAAC,IAAKyE,GACjC,CAAW,EAAC,WAAa,cAAiBy1G,GAC3C,yCAAyCl6G,CAAG,0DACpD,EACa,KAEA,GAAY,WAAa,cAAiBA,KAAOyE,EAAS,WAAW,OAAO,iBACjF,OAAO,eAAe/B,EAAK1C,EAAK,CAC9B,WAAY,GACZ,aAAc,GACd,MAAAF,CACV,CAAS,EAED4C,EAAI1C,CAAG,EAAIF,EAGR,GACR,EACD,IAAI,CACF,EAAG,CAAE,KAAAvC,EAAM,WAAAyhH,EAAY,YAAAC,EAAa,IAAAv8G,EAAK,WAAAw8G,EAAY,aAAAK,CAAc,CACpE,EAAEv/G,EAAK,CACN,IAAIm/G,EACJ,MAAO,CAAC,CAACF,EAAYj/G,CAAG,GAAKzC,IAAS+wG,IAAaG,GAAOlxG,EAAMyC,CAAG,GAAK8+G,GAAgBE,EAAYh/G,CAAG,IAAMm/G,EAAkBI,EAAa,CAAC,IAAM9Q,GAAO0Q,EAAiBn/G,CAAG,GAAKyuG,GAAO/rG,EAAK1C,CAAG,GAAKyuG,GAAOiQ,GAAqB1+G,CAAG,GAAKyuG,GAAOyQ,EAAW,OAAO,iBAAkBl/G,CAAG,CAC1R,EACD,eAAe7G,EAAQ6G,EAAKw/G,EAAY,CACtC,OAAIA,EAAW,KAAO,KACpBrmH,EAAO,EAAE,YAAY6G,CAAG,EAAI,EACnByuG,GAAO+Q,EAAY,OAAO,GACnC,KAAK,IAAIrmH,EAAQ6G,EAAKw/G,EAAW,MAAO,IAAI,EAEvC,QAAQ,eAAermH,EAAQ6G,EAAKw/G,CAAU,CACtD,CACH,GACO,CAAA,GAAY,WAAa,eAC9BT,GAA4B,QAAW5lH,IACrC+gH,GACE,mJACN,EACW,QAAQ,QAAQ/gH,CAAM,IAsIjC,SAASsmH,GAAsBzyD,EAAO,CACpC,OAAO/8C,GAAQ+8C,CAAK,EAAIA,EAAM,OAC5B,CAAC0yD,EAAYzqI,KAAOyqI,EAAWzqI,CAAC,EAAI,KAAMyqI,GAC1C,CAAE,CACH,EAAG1yD,CACN,CA+UA,SAAS2xD,GAAqBl6G,EAAU,CACtC,MAAMk7G,EAAOl7G,EAAS,KAChB,CAAE,OAAAm7G,EAAQ,QAASC,CAAc,EAAKF,EACtC,CACJ,OAAQG,EACR,aAAc1xD,EACd,OAAQ,CAAE,sBAAA2xD,CAAuB,CACrC,EAAMt7G,EAAS,WACPivC,EAAS0a,EAAM,IAAIuxD,CAAI,EAC7B,IAAI9lC,EACJ,OAAInmC,EACFmmC,EAAWnmC,EACF,CAACosE,EAAa,QAAU,CAACF,GAAU,CAACC,EAE3ChmC,EAAW8lC,GAGb9lC,EAAW,CAAA,EACPimC,EAAa,QACfA,EAAa,QACVz5I,GAAM25I,GAAanmC,EAAUxzG,EAAG05I,EAAuB,EAAI,CACpE,EAEIC,GAAanmC,EAAU8lC,EAAMI,CAAqB,GAEhDhjD,GAAS4iD,CAAI,GACfvxD,EAAM,IAAIuxD,EAAM9lC,CAAQ,EAEnBA,CACT,CACA,SAASmmC,GAAap2H,EAAImP,EAAMknH,EAAQC,EAAU,GAAO,CACvD,KAAM,CAAE,OAAAN,EAAQ,QAASC,CAAc,EAAK9mH,EACxC8mH,GACFG,GAAap2H,EAAIi2H,EAAgBI,EAAQ,EAAI,EAE3CL,GACFA,EAAO,QACJv5I,GAAM25I,GAAap2H,EAAIvjB,EAAG45I,EAAQ,EAAI,CAC7C,EAEE,UAAWjgH,KAAOjH,EAChB,GAAImnH,GAAWlgH,IAAQ,UAClB,CAAW,GAAC,WAAa,cAAiBk6G,GAC3C,yHACR,MACW,CACL,MAAMiG,EAAQC,GAA0BpgH,CAAG,GAAKigH,GAAUA,EAAOjgH,CAAG,EACpEpW,EAAGoW,CAAG,EAAImgH,EAAQA,EAAMv2H,EAAGoW,CAAG,EAAGjH,EAAKiH,CAAG,CAAC,EAAIjH,EAAKiH,CAAG,CACvD,CAEH,OAAOpW,CACT,CACA,MAAMw2H,GAA4B,CAChC,KAAMC,GACN,MAAOC,GACP,MAAOA,GAEP,QAASC,GACT,SAAUA,GAEV,aAAcC,GACd,QAASA,GACT,YAAaA,GACb,QAASA,GACT,aAAcA,GACd,QAASA,GACT,cAAeA,GACf,cAAeA,GACf,UAAWA,GACX,UAAWA,GACX,UAAWA,GACX,YAAaA,GACb,cAAeA,GACf,eAAgBA,GAEhB,WAAYD,GACZ,WAAYA,GAEZ,MAAOE,GAEP,QAASJ,GACT,OAAQK,EACV,EACA,SAASL,GAAYz2H,EAAImP,EAAM,CAC7B,OAAKA,EAGAnP,EAGE,UAAwB,CAC7B,OAAQ4kH,GACNnqG,GAAWza,CAAE,EAAIA,EAAG,KAAK,KAAM,IAAI,EAAIA,EACvCya,GAAWtL,CAAI,EAAIA,EAAK,KAAK,KAAM,IAAI,EAAIA,CACjD,CACA,EAPWA,EAHAnP,CAWX,CACA,SAAS82H,GAAY92H,EAAImP,EAAM,CAC7B,OAAOwnH,GAAmBI,GAAgB/2H,CAAE,EAAG+2H,GAAgB5nH,CAAI,CAAC,CACtE,CACA,SAAS4nH,GAAgBtmH,EAAK,CAC5B,GAAI4V,GAAQ5V,CAAG,EAAG,CAChB,MAAM6+B,EAAM,CAAA,EACZ,QAAS37D,EAAI,EAAGA,EAAI88B,EAAI,OAAQ98B,IAC9B27D,EAAI7+B,EAAI98B,CAAC,CAAC,EAAI88B,EAAI98B,CAAC,EAErB,OAAO27D,CACR,CACD,OAAO7+B,CACT,CACA,SAASmmH,GAAa52H,EAAImP,EAAM,CAC9B,OAAOnP,EAAK,CAAC,GAAG,IAAI,IAAI,CAAE,EAAC,OAAOA,EAAImP,CAAI,CAAC,CAAC,EAAIA,CAClD,CACA,SAASwnH,GAAmB32H,EAAImP,EAAM,CACpC,OAAOnP,EAAK4kH,GAAuB,OAAO,OAAO,IAAI,EAAG5kH,EAAImP,CAAI,EAAIA,CACtE,CACA,SAASunH,GAAyB12H,EAAImP,EAAM,CAC1C,OAAInP,EACEqmB,GAAQrmB,CAAE,GAAKqmB,GAAQlX,CAAI,EACtB,CAAC,GAAmB,IAAI,IAAI,CAAC,GAAGnP,EAAI,GAAGmP,CAAI,CAAC,CAAC,EAE/Cy1G,GACW,OAAO,OAAO,IAAI,EAClCiR,GAAsB71H,CAAE,EACxB61H,GAAsB1mH,GAAsB,CAAA,CAAE,CACpD,EAEWA,CAEX,CACA,SAAS0nH,GAAkB72H,EAAImP,EAAM,CACnC,GAAI,CAACnP,EAAI,OAAOmP,EAChB,GAAI,CAACA,EAAM,OAAOnP,EAClB,MAAMg3H,EAASpS,GAAuB,OAAO,OAAO,IAAI,EAAG5kH,CAAE,EAC7D,UAAWoW,KAAOjH,EAChB6nH,EAAO5gH,CAAG,EAAIwgH,GAAa52H,EAAGoW,CAAG,EAAGjH,EAAKiH,CAAG,CAAC,EAE/C,OAAO4gH,CACT,CA0MA,IAAIC,GAAa,KAgBjB,SAAS50D,GAAOjsD,EAAK8M,EAAcg0G,EAAwB,GAAO,CAChE,MAAMr8G,EAAWs8G,IAAmBzC,GACpC,GAAI75G,GAAYo8G,GAAY,CAC1B,MAAMG,EAAuDv8G,EAAWA,EAAS,QAAU,KAAOA,EAAS,MAAM,YAAcA,EAAS,MAAM,WAAW,SAAWA,EAAS,OAAO,SAAW,OAC/L,GAAIu8G,GAAYhhH,KAAOghH,EACrB,OAAOA,EAAShhH,CAAG,EACd,GAAI,UAAU,OAAS,EAC5B,OAAO8gH,GAAyBz8G,GAAWyI,CAAY,EAAIA,EAAa,KAAKrI,GAAYA,EAAS,KAAK,EAAIqI,GAC/F,CAAA,GAAY,WAAa,cACrCotG,GAAO,cAAc,OAAOl6G,CAAG,CAAC,cAAc,CAEjD,MAAa,CAAA,GAAY,WAAa,cACrCk6G,GAAO,oEAAoE,CAE/E,CAokBA,MAAM+G,GAAwBC,GA+9CxBC,GAAgB,OAAO,IAAI,OAAO,EAClCC,GAAgB,IAAM,CAC1B,CACE,MAAM1+G,EAAMupD,GAAOk1D,EAAa,EAChC,OAAKz+G,GACA,CAAW,EAAC,WAAa,cAAiBw3G,GAC3C,kHACR,EAEWx3G,CACR,CACH,EAmBA,SAASi2G,GAAM/vG,EAAQ3B,EAAIhM,EAAS,CAClC,MAAO,CAAA,EAAY,WAAa,cAAiB,CAACoJ,GAAW4C,CAAE,GAC7DizG,GACE,8KACN,EAESmH,GAAQz4G,EAAQ3B,EAAIhM,CAAO,CACpC,CACA,SAASomH,GAAQz4G,EAAQ3B,EAAIhM,EAAUqzG,GAAW,CAChD,KAAM,CAAE,UAAA3tC,EAAW,KAAAi4C,EAAM,MAAA0I,EAAO,KAAA9T,CAAI,EAAKvyG,GAClC,CAAA,GAAY,WAAa,cAAiB,CAACgM,IAC5C05D,IAAc,QAChBu5C,GACE,0GACR,EAEQtB,IAAS,QACXsB,GACE,qGACR,EAEQ1M,IAAS,QACX0M,GACE,qGACR,GAGE,MAAMqH,EAAmB/S,GAAO,CAAE,EAAEvzG,CAAO,GACpC,CAAA,GAAY,WAAa,eAAesmH,EAAiB,OAASrH,IACzE,MAAMsH,EAAkBv6G,GAAM05D,GAAa,CAAC15D,GAAMq6G,IAAU,OAC5D,IAAIG,EACJ,GAAIC,IACF,GAAIJ,IAAU,OAAQ,CACpB,MAAM5+G,EAAM0+G,KACZK,EAAa/+G,EAAI,mBAAqBA,EAAI,iBAAmB,CAAE,EACrE,SAAe,CAAC8+G,EAAiB,CAC3B,MAAMG,EAAkB,IAAM,CACpC,EACM,OAAAA,EAAgB,KAAOpT,GACvBoT,EAAgB,OAASpT,GACzBoT,EAAgB,MAAQpT,GACjBoT,CACR,EAEH,MAAMl9G,EAAWs8G,GACjBQ,EAAiB,KAAO,CAAC55G,EAAI5M,EAAM4L,IAASy0G,GAA2BzzG,EAAIlD,EAAU1J,EAAM4L,CAAI,EAC/F,IAAIi7G,EAAQ,GACRN,IAAU,OACZC,EAAiB,UAAa7H,GAAQ,CACpCuH,GAAsBvH,EAAKj1G,GAAYA,EAAS,QAAQ,CAC9D,EACa68G,IAAU,SACnBM,EAAQ,GACRL,EAAiB,UAAY,CAAC7H,EAAKmI,IAAe,CAC5CA,EACFnI,IAEAkD,GAASlD,CAAG,CAEpB,GAEE6H,EAAiB,WAAc7H,GAAQ,CACjCzyG,IACFyyG,EAAI,OAAS,GAEXkI,IACFlI,EAAI,OAAS,EACTj1G,IACFi1G,EAAI,GAAKj1G,EAAS,IAClBi1G,EAAI,EAAIj1G,GAGhB,EACE,MAAM+0G,EAAcsI,GAAQl5G,EAAQ3B,EAAIs6G,CAAgB,EACxD,OAAIG,KACED,EACFA,EAAW,KAAKjI,CAAW,EAClBgI,GACThI,KAGGA,CACT,CACA,SAASoF,GAAch2G,EAAQ9I,EAAO7E,EAAS,CAC7C,MAAM8mH,EAAa,KAAK,MAClBxpD,EAASs2C,GAASjmG,CAAM,EAAIA,EAAO,SAAS,GAAG,EAAIo5G,GAAiBD,EAAYn5G,CAAM,EAAI,IAAMm5G,EAAWn5G,CAAM,EAAIA,EAAO,KAAKm5G,EAAYA,CAAU,EAC7J,IAAI96G,EACA5C,GAAWvE,CAAK,EAClBmH,EAAKnH,GAELmH,EAAKnH,EAAM,QACX7E,EAAU6E,GAEZ,MAAMgW,EAAQmsG,GAAmB,IAAI,EAC/B/oF,EAAMmoF,GAAQ9oD,EAAQtxD,EAAG,KAAK86G,CAAU,EAAG9mH,CAAO,EACxD,OAAA6a,IACOojB,CACT,CACA,SAAS8oF,GAAiBt/G,EAAKusB,EAAM,CACnC,MAAMrwB,EAAWqwB,EAAK,MAAM,GAAG,EAC/B,MAAO,IAAM,CACX,IAAIwsF,EAAM/4G,EACV,QAASnlC,EAAI,EAAGA,EAAIqhC,EAAS,QAAU68G,EAAKl+I,IAC1Ck+I,EAAMA,EAAI78G,EAASrhC,CAAC,CAAC,EAEvB,OAAOk+I,CACX,CACA,CAkiCA,SAASyF,GAAwBv5G,EAAIu6G,EAAU,CACzCA,GAAYA,EAAS,cACnBjyG,GAAQtI,CAAE,EACZu6G,EAAS,QAAQ,KAAK,GAAGv6G,CAAE,EAE3Bu6G,EAAS,QAAQ,KAAKv6G,CAAE,EAG1Bs1G,GAAiBt1G,CAAE,CAEvB,CA0eA,IAAIo5G,GAAkB,KACtB,MAAMoB,GAAqB,IAAMpB,IAAmBzC,GACpD,IAAI8D,GAEJ,CACE,MAAM9tI,EAAIi7H,KACJ8S,EAAuB,CAACriH,EAAK+3G,IAAW,CAC5C,IAAIuK,EACJ,OAAMA,EAAUhuI,EAAE0rB,CAAG,KAAIsiH,EAAUhuI,EAAE0rB,CAAG,EAAI,IAC5CsiH,EAAQ,KAAKvK,CAAM,EACX7iI,GAAM,CACRotI,EAAQ,OAAS,EAAGA,EAAQ,QAASj+B,GAAQA,EAAInvG,CAAC,CAAC,EAClDotI,EAAQ,CAAC,EAAEptI,CAAC,CACvB,CACA,EACEktI,GAA6BC,EAC3B,2BACCntI,GAAM6rI,GAAkB7rI,CAC7B,EACuBmtI,EACnB,sBACCntI,GAAMwsI,GAAwBxsI,CACnC,CACA,CACA,MAAM+sI,GAAsBx9G,GAAa,CACvC,MAAM6D,EAAOy4G,GACb,OAAAqB,GAA2B39G,CAAQ,EACnCA,EAAS,MAAM,KACR,IAAM,CACXA,EAAS,MAAM,MACf29G,GAA2B95G,CAAI,CACnC,CACA,EAaA,SAASk2G,GAAoB/5G,EAAU,CACrC,OAAOA,EAAS,MAAM,UAAY,CACpC,CACA,IAAIi9G,GAAwB,GA2P5B,SAASjD,GAA2Bh6G,EAAU,CAC5C,OAAIA,EAAS,QACJA,EAAS,cAAgBA,EAAS,YAAc,IAAI,MAAMmzG,GAAUT,GAAQ1yG,EAAS,OAAO,CAAC,EAAG,CACrG,IAAItL,EAAQ6G,EAAK,CACf,GAAIA,KAAO7G,EACT,OAAOA,EAAO6G,CAAG,EACZ,GAAIA,KAAO0+G,GAChB,OAAOA,GAAoB1+G,CAAG,EAAEyE,CAAQ,CAE3C,EACD,IAAItL,EAAQ6G,EAAK,CACf,OAAOA,KAAO7G,GAAU6G,KAAO0+G,EAChC,CACF,CAAA,GAEMj6G,EAAS,KAEpB,CACA,MAAM89G,GAAa,kBACbC,GAAYjpH,GAAQA,EAAI,QAAQgpH,GAAat8I,GAAMA,EAAE,YAAW,CAAE,EAAE,QAAQ,QAAS,EAAE,EAC7F,SAASo3I,GAAiB5pD,EAAWgvD,EAAkB,GAAM,CAC3D,OAAOp+G,GAAWovD,CAAS,EAAIA,EAAU,aAAeA,EAAU,KAAOA,EAAU,MAAQgvD,GAAmBhvD,EAAU,MAC1H,CACA,SAAS8mD,GAAoB91G,EAAUgvD,EAAW+lC,EAAS,GAAO,CAChE,IAAIl6F,EAAO+9G,GAAiB5pD,CAAS,EACrC,GAAI,CAACn0D,GAAQm0D,EAAU,OAAQ,CAC7B,MAAMvZ,EAAQuZ,EAAU,OAAO,MAAM,iBAAiB,EAClDvZ,IACF56C,EAAO46C,EAAM,CAAC,EAEjB,CACD,GAAI,CAAC56C,GAAQmF,GAAYA,EAAS,OAAQ,CACxC,MAAMi+G,EAAqBC,GAAa,CACtC,UAAW3iH,KAAO2iH,EAChB,GAAIA,EAAS3iH,CAAG,IAAMyzD,EACpB,OAAOzzD,CAGjB,EACIV,EAAOojH,EACLj+G,EAAS,YAAcA,EAAS,OAAO,KAAK,UAC7C,GAAIi+G,EAAkBj+G,EAAS,WAAW,UAAU,CACtD,CACD,OAAOnF,EAAOkjH,GAASljH,CAAI,EAAIk6F,EAAS,MAAQ,WAClD,CACA,SAASqkB,GAAiB/9G,EAAO,CAC/B,OAAOuE,GAAWvE,CAAK,GAAK,cAAeA,CAC7C,CAEA,MAAMgxG,GAAW,CAACmH,EAAiBC,IAAiB,CAClD,MAAMjyI,EAAI28I,GAAW3K,EAAiBC,EAAcwJ,EAAqB,EACzE,GAAO,CAAA,EAAY,WAAa,aAAe,CAC7C,MAAMnkJ,EAAI4kJ,KACN5kJ,GAAKA,EAAE,WAAW,OAAO,wBAC3B0I,EAAE,eAAiB,GAEtB,CACD,OAAOA,CACT,EAuBA,SAAS48I,IAAsB,CAC7B,GAAQ,GAAY,WAAa,cAAiB,OAAO,OAAW,IAClE,OAEF,MAAMC,EAAW,CAAE,MAAO,iBACpBC,EAAc,CAAE,MAAO,iBACvBC,EAAc,CAAE,MAAO,iBACvBC,EAAe,CAAE,MAAO,iBACxBC,EAAY,CAChB,uBAAwB,GACxB,OAAO9gH,EAAK,CACV,OAAK26D,GAAS36D,CAAG,EAGbA,EAAI,QACC,CAAC,MAAO0gH,EAAU,aAAa,EAC7BvO,GAAMnyG,CAAG,EACX,CACL,MACA,CAAE,EACF,CAAC,OAAQ0gH,EAAUK,EAAW/gH,CAAG,CAAC,EAClC,IAEAghH,EAAY,WAAYhhH,EAAMA,EAAI,OAASA,CAAG,EAC9C,GACV,EACiB80G,GAAW90G,CAAG,EAChB,CACL,MACA,CAAE,EACF,CAAC,OAAQ0gH,EAAUrQ,GAAUrwG,CAAG,EAAI,kBAAoB,UAAU,EAClE,IACAghH,EAAYhhH,CAAG,EACf,IAAIuyG,GAAWvyG,CAAG,EAAI,cAAgB,EAAE,EAClD,EACiBuyG,GAAWvyG,CAAG,EAChB,CACL,MACA,CAAE,EACF,CAAC,OAAQ0gH,EAAUrQ,GAAUrwG,CAAG,EAAI,kBAAoB,UAAU,EAClE,IACAghH,EAAYhhH,CAAG,EACf,GACV,EAEa,KAjCE,IAkCV,EACD,QAAQA,EAAK,CACX,OAAOA,GAAOA,EAAI,OACnB,EACD,KAAKA,EAAK,CACR,GAAIA,GAAOA,EAAI,QACb,MAAO,CACL,MACA,CAAE,EACF,GAAGihH,EAAejhH,EAAI,CAAC,CACjC,CAEK,CACL,EACE,SAASihH,EAAe5+G,EAAU,CAChC,MAAM6+G,EAAS,CAAA,EACX7+G,EAAS,KAAK,OAASA,EAAS,OAClC6+G,EAAO,KAAKC,EAAoB,QAAS/Q,GAAM/tG,EAAS,KAAK,CAAC,CAAC,EAE7DA,EAAS,aAAe6pG,IAC1BgV,EAAO,KAAKC,EAAoB,QAAS9+G,EAAS,UAAU,CAAC,EAE3DA,EAAS,OAAS6pG,IACpBgV,EAAO,KAAKC,EAAoB,OAAQ/Q,GAAM/tG,EAAS,IAAI,CAAC,CAAC,EAE/D,MAAMqsG,EAAW0S,EAAY/+G,EAAU,UAAU,EAC7CqsG,GACFwS,EAAO,KAAKC,EAAoB,WAAYzS,CAAQ,CAAC,EAEvD,MAAM2S,EAAWD,EAAY/+G,EAAU,QAAQ,EAC/C,OAAIg/G,GACFH,EAAO,KAAKC,EAAoB,WAAYE,CAAQ,CAAC,EAEvDH,EAAO,KAAK,CACV,MACA,CAAE,EACF,CACE,OACA,CACE,MAAOL,EAAa,MAAQ,eAC7B,EACD,gBACD,EACD,CAAC,SAAU,CAAE,OAAQx+G,EAAU,CACrC,CAAK,EACM6+G,CACR,CACD,SAASC,EAAoBxoH,EAAM5B,EAAQ,CAEzC,OADAA,EAASq1G,GAAO,GAAIr1G,CAAM,EACrB,OAAO,KAAKA,CAAM,EAAE,OAGlB,CACL,MACA,CAAE,MAAO,wCAA0C,EACnD,CACE,MACA,CACE,MAAO,eACR,EACD4B,CACD,EACD,CACE,MACA,CACE,MAAO,qBACR,EACD,GAAG,OAAO,KAAK5B,CAAM,EAAE,IAAK6G,GACnB,CACL,MACA,CAAE,EACF,CAAC,OAAQijH,EAAcjjH,EAAM,IAAI,EACjCojH,EAAYjqH,EAAO6G,CAAG,EAAG,EAAK,CAC1C,CACS,CACF,CACP,EA1Ba,CAAC,OAAQ,CAAA,CAAE,CA2BrB,CACD,SAASojH,EAAYluI,EAAGwuI,EAAQ,GAAM,CACpC,OAAI,OAAOxuI,GAAM,SACR,CAAC,OAAQ6tI,EAAa7tI,CAAC,EACrB,OAAOA,GAAM,SACf,CAAC,OAAQ8tI,EAAa,KAAK,UAAU9tI,CAAC,CAAC,EACrC,OAAOA,GAAM,UACf,CAAC,OAAQ+tI,EAAc/tI,CAAC,EACtB6nF,GAAS7nF,CAAC,EACZ,CAAC,SAAU,CAAE,OAAQwuI,EAAQlR,GAAMt9H,CAAC,EAAIA,CAAC,CAAE,EAE3C,CAAC,OAAQ8tI,EAAa,OAAO9tI,CAAC,CAAC,CAEzC,CACD,SAASsuI,EAAY/+G,EAAU1J,EAAM,CACnC,MAAM4oH,EAAOl/G,EAAS,KACtB,GAAIJ,GAAWs/G,CAAI,EACjB,OAEF,MAAMC,EAAY,CAAA,EAClB,UAAW5jH,KAAOyE,EAAS,IACrBo/G,EAAYF,EAAM3jH,EAAKjF,CAAI,IAC7B6oH,EAAU5jH,CAAG,EAAIyE,EAAS,IAAIzE,CAAG,GAGrC,OAAO4jH,CACR,CACD,SAASC,EAAYF,EAAM3jH,EAAKjF,EAAM,CACpC,MAAM+oH,EAAOH,EAAK5oH,CAAI,EAOtB,GANIkV,GAAQ6zG,CAAI,GAAKA,EAAK,SAAS9jH,CAAG,GAAK+8D,GAAS+mD,CAAI,GAAK9jH,KAAO8jH,GAGhEH,EAAK,SAAWE,EAAYF,EAAK,QAAS3jH,EAAKjF,CAAI,GAGnD4oH,EAAK,QAAUA,EAAK,OAAO,KAAMt9I,GAAMw9I,EAAYx9I,EAAG25B,EAAKjF,CAAI,CAAC,EAClE,MAAO,EAEV,CACD,SAASooH,EAAWjuI,EAAG,CACrB,OAAIu9H,GAAUv9H,CAAC,EACN,aAELA,EAAE,OACG,cAEF,KACR,CACG,OAAO,mBACT,OAAO,mBAAmB,KAAKguI,CAAS,EAExC,OAAO,mBAAqB,CAACA,CAAS,CAE1C,CChrQA;AAAA;AAAA;AAAA;AAAA,GAQA,SAASa,IAAU,CAEflB,IAEJ,EAEO,CAAW,GAAC,WAAa,cAC9BkB,KCqEK,SAASC,GAAuBp8B,EAA+B,CACpE,KAAM,CAAC9nF,EAAOmkH,CAAQ,EAAIn1D,WAAY84B,CAAO,EACvCs8B,EAAW90D,SAAOtvD,CAAK,EAGvBqkH,EAAY/0D,EAAAA,OAAOjF,GAAA,CAAmB,EActCi6D,EAAet0D,cAAajC,GAAmC,CACnEo2D,EAAU37G,GAAS,CACjB,MAAMuxE,EACJ,OAAOhsB,GAAa,WACfA,EAA4BvlD,CAAI,EACjCulD,EAEN,OAAI,OAAO,GAAGvlD,EAAMuxE,CAAQ,EAOnBvxE,GAGT47G,EAAS,QAAUrqC,EAETsqC,EAAA,QAAQ,KAAKtqC,CAAQ,EACxBA,EAAA,CACR,CACH,EAAG,CAAE,CAAA,EAEE,OAAA+jB,EAAA,QACL,KAAO,CACL,SAAU,IAAMsmB,EAAS,QACzB,SAAUE,EACV,UAAY18B,GAA4B,CAEtC28B,GAAY,IAAM38B,EAASw8B,EAAS,OAAO,CAAC,EAC5C,MAAMhsC,EAAcisC,EAAU,QAAQ,UAAWjvI,GAAM,CACzCmvI,GAAA,IAAM38B,EAASxyG,CAAC,CAAC,CAAA,CAC9B,EACD,MAAO,IAAMgjG,EAAY,CAC3B,CAAA,GAuBF,CAAC,CAAA,CAEL,CAGO,SAASosC,GAAqB18B,EAA+B,CAC5D,MAAAtvF,EAAQ+2D,GAAOu4B,CAAO,EAGtB19B,EAASC,KAyBR,MAAA,CACL,SAAU,IAAM7xD,EAAM,MACtB,SAhBepjB,GAA4B,CAC3C,MAAM2kG,EACJ,OAAO3kG,GAAM,WAAcA,EAAqBojB,EAAM,KAAK,EAAIpjB,EAE7D,OAAO,GAAGojB,EAAM,MAAOuhF,CAAQ,IAMnCvhF,EAAM,MAAQuhF,EACd3vB,EAAO,KAAK2vB,CAAQ,EAAA,EAMpB,UAAY6N,IAEV28B,GAAY,IAAM38B,EAASpvF,EAAM,KAAK,CAAC,EAChC4xD,EAAO,UAAWh1E,GAAM,CACjBmvI,GAAA,IAAM38B,EAASxyG,CAAC,CAAC,CAAA,CAC9B,EACH,CAuBJ,CCrLO,SAASqvI,GAAuCC,EAAsB,CACrE,MAAAC,EAAqD,OAAO,UAAU,EAiC5E,SAASC,GAAwB,CAE/B,MAAMC,EAA0BtN,GAAcmN,EAAM,SAAU,CAAA,EAC1CA,EAAM,UAAWlsH,GAAU,CAC7CqsH,EAAS,MAAQrsH,CAAA,CAClB,EACD,MAAMmM,EAAW09G,KACjB,GAAI,CAAC19G,EACG,MAAA,IAAI,MAAM,2CAA2C,EAE7D,MAAMmgH,EAAc,CAClB,MAAAJ,EACA,SAAAG,CAAA,EAGDlgH,EAAS,WAA0B,SAASggH,CAAW,EAAIG,CAQ9D,CAEA,SAASC,GAAyC,CAC1C,MAAAniH,EAAMupD,GAAOw4D,CAAW,EAE9B,GAAI,CAAC/hH,EACH,MAAM,IAAI,eACR,yEAAA,EAGG,OAAAA,CACT,CAEA,SAASoiH,GAA6B,CACpC,KAAM,CAAE,MAAAN,CAAM,EAAIK,EAAc,EACzBL,OAAAA,CACT,CAMA,SAASO,EAAsB5jH,EAAmC,CAC1D,KAAA,CAAE,SAAAwjH,GAAaE,IACrB,OAAI1jH,EACK2vG,GAAS,IAAM3vG,EAASwjH,EAAS,KAAK,CAAC,EAEzCnQ,GAASmQ,CAAQ,CAC1B,CAEA,SAASK,GAAkC,CACzC,MAAMR,EAAQM,IACV,GAAAG,GAAaT,CAAK,EACd,MAAA,IAAI,MAAM,qDAAqD,EAEhEA,OAAAA,EAAM,SAAS,KAAKA,CAAK,CAClC,CAEA,SAASU,GAAwB,CAC/B,MAAMV,EAAQM,IACV,GAAA,CAACG,GAAaT,CAAK,EACf,MAAA,IAAI,MAAM,8CAA8C,EAEzDA,OAAAA,EAAM,SAAS,KAAKA,CAAK,CAClC,CAEO,MAAA,CACL,gBAAAE,EACA,YAAAI,EACA,YAAAC,EACA,eAAAC,EACA,YAAAE,CAAA,CAEJ,CCxHO,SAASC,GAA8BlqH,EAU5C,CACM,MAAA8zD,EAAe9zD,EAAQ,QAGvBmqH,EAAaC,GAAct2D,CAAY,EAE7C,GAAI,CAACq2D,GAAc,EAAE,iBAAkBnqH,GAC/B,MAAA,IAAI,MAAM,+CAA+C,EAE7D,GAAAmqH,GAAc,EAAE,aAAcnqH,GAC1B,MAAA,IAAI,MAAM,yCAAyC,EAI3D,MAAMqqH,EAAQj2D,GAAQ+1D,EAAar2D,EAAe9zD,EAAQ,YAAkB,EAGtE3C,EAAQw4G,GAAY,IACxBsU,EAAcnqH,EAAQ,QAAgBqqH,EAAM,KAAA,EAI9C,IAAIznD,EAAS,GACb86C,GACE19G,EAAQ,MACP/lB,GAAM,CACL,GAAI,CAAC2oF,GAAUwnD,GAAcnwI,CAAC,IAAMkwI,EAAY,CACrCvnD,EAAA,GAED,QAAA,KACN,+EAAA,EAEF,MACF,CASF,EACA,CAEA,CAAA,EAGF,IAAI0nD,EAAU,EACd,eAAet2D,EAASpB,EAAgC,CACtD,MAAM23D,EAAiB,EAAED,EAEnB//B,EACJ,OAAO33B,GAAa,WACfA,EAA4Bv1D,EAAM,KAAK,EACxCu1D,EAEF5yD,EAAQ,cAEN,CADS,MAAMA,EAAQ,aAAauqF,CAAS,GAM/CggC,IAAmBD,IAIlBH,IACHE,EAAM,MAAQ9/B,GAGhBvqF,EAAQ,WAAWuqF,CAAS,EAI5B,MAAM82B,GAAS,EACjB,CAGO,MAAA,CAAChkH,EAAO22D,CAAQ,CACzB;;;;;;;;6CCpHA,IAAIkN,EAAQL,GACZ,SAAS7sF,EAAGsO,EAAGhX,EAAG,CAChB,OAAQgX,IAAMhX,IAAYgX,IAAN,GAAW,EAAIA,IAAM,EAAIhX,IAAQgX,IAAMA,GAAKhX,IAAMA,CACvE,CACD,IAAIk/I,EAA0B,OAAO,OAAO,IAA7B,WAAkC,OAAO,GAAKx2I,EAC3D6/E,EAAWqN,EAAM,SACjB5M,EAAY4M,EAAM,UAClBylC,EAAkBzlC,EAAM,gBACxBupD,EAAgBvpD,EAAM,cACxB,SAASwpD,EAAuBn9G,EAAWwuD,EAAa,CACtD,IAAIl3D,EAAQk3D,EAAa,EACvB4uD,EAAY92D,EAAS,CAAE,KAAM,CAAE,MAAOhvD,EAAO,YAAak3D,CAAW,EAAI,EACzEk/B,EAAO0vB,EAAU,CAAC,EAAE,KACpBC,EAAcD,EAAU,CAAC,EAC3B,OAAAhkB,EACE,UAAY,CACV1L,EAAK,MAAQp2F,EACbo2F,EAAK,YAAcl/B,EACnB8uD,EAAuB5vB,CAAI,GAAK2vB,EAAY,CAAE,KAAM3vB,CAAI,CAAE,CAC3D,EACD,CAAC1tF,EAAW1I,EAAOk3D,CAAW,CAClC,EACEzH,EACE,UAAY,CACV,OAAAu2D,EAAuB5vB,CAAI,GAAK2vB,EAAY,CAAE,KAAM3vB,CAAI,CAAE,EACnD1tF,EAAU,UAAY,CAC3Bs9G,EAAuB5vB,CAAI,GAAK2vB,EAAY,CAAE,KAAM3vB,CAAI,CAAE,CAClE,CAAO,CACF,EACD,CAAC1tF,CAAS,CACd,EACEk9G,EAAc5lH,CAAK,EACZA,CACR,CACD,SAASgmH,EAAuB5vB,EAAM,CACpC,IAAI6vB,EAAoB7vB,EAAK,YAC7BA,EAAOA,EAAK,MACZ,GAAI,CACF,IAAI1Q,EAAYugC,IAChB,MAAO,CAACN,EAASvvB,EAAM1Q,CAAS,CACjC,MAAe,CACd,MAAO,EACR,CACF,CACD,SAASwgC,EAAuBx9G,EAAWwuD,EAAa,CACtD,OAAOA,EAAW,CACnB,CACD,IAAIivD,EACc,OAAO,OAAvB,KACgB,OAAO,OAAO,SAA9B,KACgB,OAAO,OAAO,SAAS,cAAvC,IACID,EACAL,EACsB,OAAAO,GAAA,qBACf/pD,EAAM,uBAAjB,OAAwCA,EAAM,qBAAuB8pD;;;;;;;;yCCtDtD,CAAW,EAAC,WAA7B,cACG,UAAY,CACX,SAASh3I,EAAGsO,EAAGhX,EAAG,CAChB,OAAQgX,IAAMhX,IAAYgX,IAAN,GAAW,EAAIA,IAAM,EAAIhX,IAAQgX,IAAMA,GAAKhX,IAAMA,CACvE,CACD,SAASo/I,EAAuBn9G,EAAWwuD,EAAa,CACtDmvD,GACahqD,EAAM,kBAAjB,SACEgqD,EAAoB,GACtB,QAAQ,MACN,gMACV,GACM,IAAIrmH,EAAQk3D,IACZ,GAAI,CAACovD,EAA4B,CAC/B,IAAIC,EAAcrvD,IAClByuD,EAAS3lH,EAAOumH,CAAW,IACxB,QAAQ,MACP,sEACD,EACAD,EAA6B,GACjC,CACDC,EAAcv3D,EAAS,CACrB,KAAM,CAAE,MAAOhvD,EAAO,YAAak3D,CAAa,CACxD,CAAO,EACD,IAAIk/B,EAAOmwB,EAAY,CAAC,EAAE,KACxBR,EAAcQ,EAAY,CAAC,EAC7B,OAAAzkB,EACE,UAAY,CACV1L,EAAK,MAAQp2F,EACbo2F,EAAK,YAAcl/B,EACnB8uD,EAAuB5vB,CAAI,GAAK2vB,EAAY,CAAE,KAAM3vB,CAAI,CAAE,CAC3D,EACD,CAAC1tF,EAAW1I,EAAOk3D,CAAW,CACtC,EACMzH,EACE,UAAY,CACV,OAAAu2D,EAAuB5vB,CAAI,GAAK2vB,EAAY,CAAE,KAAM3vB,CAAI,CAAE,EACnD1tF,EAAU,UAAY,CAC3Bs9G,EAAuB5vB,CAAI,GAAK2vB,EAAY,CAAE,KAAM3vB,CAAI,CAAE,CACtE,CAAW,CACF,EACD,CAAC1tF,CAAS,CAClB,EACMk9G,EAAc5lH,CAAK,EACZA,CACR,CACD,SAASgmH,EAAuB5vB,EAAM,CACpC,IAAI6vB,EAAoB7vB,EAAK,YAC7BA,EAAOA,EAAK,MACZ,GAAI,CACF,IAAI1Q,EAAYugC,IAChB,MAAO,CAACN,EAASvvB,EAAM1Q,CAAS,CACjC,MAAe,CACd,MAAO,EACR,CACF,CACD,SAASwgC,EAAuBx9G,EAAWwuD,EAAa,CACtD,OAAOA,EAAW,CACnB,CACe,OAAO,+BAAvB,KAEI,OAAO,+BAA+B,6BADxC,YAEA,+BAA+B,4BAA4B,MAAK,CAAE,EACpE,IAAImF,EAAQL,GACV2pD,EAA0B,OAAO,OAAO,IAA7B,WAAkC,OAAO,GAAKx2I,EACzD6/E,EAAWqN,EAAM,SACjB5M,EAAY4M,EAAM,UAClBylC,EAAkBzlC,EAAM,gBACxBupD,EAAgBvpD,EAAM,cACtBgqD,EAAoB,GACpBC,EAA6B,GAC7BH,EACkB,OAAO,OAAvB,KACgB,OAAO,OAAO,SAA9B,KACgB,OAAO,OAAO,SAAS,cAAvC,IACID,EACAL,EACRW,GAA4B,qBACfnqD,EAAM,uBAAjB,OAAwCA,EAAM,qBAAuB8pD,EACvD,OAAO,+BAAvB,KAEI,OAAO,+BAA+B,4BADxC,YAEA,+BAA+B,2BAA2B,MAAK,CAAE,CACvE,8CC5FI,CAAW,EAAC,WAAa,aAC3BM,GAAA,QAAiBzqD,KAEjByqD,GAAA,QAAiBxqD;;;;;;;;6CCMnB,IAAII,EAAQL,GACVmqD,EAAOlqD,GAAA,EACT,SAAS9sF,EAAGsO,EAAGhX,EAAG,CAChB,OAAQgX,IAAMhX,IAAYgX,IAAN,GAAW,EAAIA,IAAM,EAAIhX,IAAQgX,IAAMA,GAAKhX,IAAMA,CACvE,CACD,IAAIk/I,EAA0B,OAAO,OAAO,IAA7B,WAAkC,OAAO,GAAKx2I,EAC3Du3I,EAAuBP,EAAK,qBAC5B72D,EAAS+M,EAAM,OACf5M,EAAY4M,EAAM,UAClByhC,EAAUzhC,EAAM,QAChBupD,EAAgBvpD,EAAM,cACxB,OAAAsqD,GAAA,iCAA2C,SACzCj+G,EACAwuD,EACAC,EACA91D,EACAulH,EACA,CACA,IAAIC,EAAUv3D,EAAO,IAAI,EACzB,GAAau3D,EAAQ,UAAjB,KAA0B,CAC5B,IAAIzwB,EAAO,CAAE,SAAU,GAAI,MAAO,MAClCywB,EAAQ,QAAUzwB,CACtB,MAASA,EAAOywB,EAAQ,QACtBA,EAAU/oB,EACR,UAAY,CACV,SAASgpB,EAAiBC,EAAc,CACtC,GAAI,CAACC,EAAS,CAIZ,GAHAA,EAAU,GACVC,EAAmBF,EACnBA,EAAe1lH,EAAS0lH,CAAY,EACrBH,IAAX,QAAsBxwB,EAAK,SAAU,CACvC,IAAI8wB,EAAmB9wB,EAAK,MAC5B,GAAIwwB,EAAQM,EAAkBH,CAAY,EACxC,OAAQI,EAAoBD,CAC/B,CACD,OAAQC,EAAoBJ,CAC7B,CAED,GADAG,EAAmBC,EACfxB,EAASsB,EAAkBF,CAAY,EAAG,OAAOG,EACrD,IAAIE,EAAgB/lH,EAAS0lH,CAAY,EACzC,OAAeH,IAAX,QAAsBA,EAAQM,EAAkBE,CAAa,GACvDH,EAAmBF,EAAeG,IAC5CD,EAAmBF,EACXI,EAAoBC,EAC7B,CACD,IAAIJ,EAAU,GACZC,EACAE,EACAE,EACalwD,IAAX,OAA+B,KAAOA,EAC1C,MAAO,CACL,UAAY,CACV,OAAO2vD,EAAiB5vD,EAAW,CAAE,CACtC,EACQmwD,IAAT,KACI,OACA,UAAY,CACV,OAAOP,EAAiBO,EAAsB,CAAE,CACjD,CACb,CACK,EACD,CAACnwD,EAAaC,EAAmB91D,EAAUulH,CAAO,CACtD,EACE,IAAI5mH,EAAQ0mH,EAAqBh+G,EAAWm+G,EAAQ,CAAC,EAAGA,EAAQ,CAAC,CAAC,EAClE,OAAAp3D,EACE,UAAY,CACV2mC,EAAK,SAAW,GAChBA,EAAK,MAAQp2F,CACd,EACD,CAACA,CAAK,CACV,EACE4lH,EAAc5lH,CAAK,EACZA;;;;;;;;yCCxEQ,CAAW,EAAC,WAA7B,cACG,UAAY,CACX,SAAS7wB,EAAGsO,EAAGhX,EAAG,CAChB,OAAQgX,IAAMhX,IAAYgX,IAAN,GAAW,EAAIA,IAAM,EAAIhX,IAAQgX,IAAMA,GAAKhX,IAAMA,CACvE,CACe,OAAO,+BAAvB,KAEI,OAAO,+BAA+B,6BADxC,YAEA,+BAA+B,4BAA4B,MAAK,CAAE,EACpE,IAAI41F,EAAQL,GACVmqD,EAAOlqD,GAAuC,EAC9C0pD,EAA0B,OAAO,OAAO,IAA7B,WAAkC,OAAO,GAAKx2I,EACzDu3I,EAAuBP,EAAK,qBAC5B72D,EAAS+M,EAAM,OACf5M,EAAY4M,EAAM,UAClByhC,EAAUzhC,EAAM,QAChBupD,EAAgBvpD,EAAM,cACxBirD,oCAA2C,SACzC5+G,EACAwuD,EACAC,EACA91D,EACAulH,EACA,CACA,IAAIC,EAAUv3D,EAAO,IAAI,EACzB,GAAau3D,EAAQ,UAAjB,KAA0B,CAC5B,IAAIzwB,EAAO,CAAE,SAAU,GAAI,MAAO,MAClCywB,EAAQ,QAAUzwB,CAC1B,MAAaA,EAAOywB,EAAQ,QACtBA,EAAU/oB,EACR,UAAY,CACV,SAASgpB,EAAiBC,EAAc,CACtC,GAAI,CAACC,EAAS,CAIZ,GAHAA,EAAU,GACVC,EAAmBF,EACnBA,EAAe1lH,EAAS0lH,CAAY,EACrBH,IAAX,QAAsBxwB,EAAK,SAAU,CACvC,IAAI8wB,EAAmB9wB,EAAK,MAC5B,GAAIwwB,EAAQM,EAAkBH,CAAY,EACxC,OAAQI,EAAoBD,CAC/B,CACD,OAAQC,EAAoBJ,CAC7B,CAED,GADAG,EAAmBC,EACfxB,EAASsB,EAAkBF,CAAY,EACzC,OAAOG,EACT,IAAIE,EAAgB/lH,EAAS0lH,CAAY,EACzC,OAAeH,IAAX,QAAsBA,EAAQM,EAAkBE,CAAa,GACvDH,EAAmBF,EAAeG,IAC5CD,EAAmBF,EACXI,EAAoBC,EAC7B,CACD,IAAIJ,EAAU,GACZC,EACAE,EACAE,EACalwD,IAAX,OAA+B,KAAOA,EAC1C,MAAO,CACL,UAAY,CACV,OAAO2vD,EAAiB5vD,EAAW,CAAE,CACtC,EACQmwD,IAAT,KACI,OACA,UAAY,CACV,OAAOP,EAAiBO,EAAsB,CAAE,CACjD,CACjB,CACS,EACD,CAACnwD,EAAaC,EAAmB91D,EAAUulH,CAAO,CAC1D,EACM,IAAI5mH,EAAQ0mH,EAAqBh+G,EAAWm+G,EAAQ,CAAC,EAAGA,EAAQ,CAAC,CAAC,EAClE,OAAAp3D,EACE,UAAY,CACV2mC,EAAK,SAAW,GAChBA,EAAK,MAAQp2F,CACd,EACD,CAACA,CAAK,CACd,EACM4lH,EAAc5lH,CAAK,EACZA,CACb,EACoB,OAAO,+BAAvB,KAEI,OAAO,+BAA+B,4BADxC,YAEA,+BAA+B,2BAA2B,MAAK,CAAE,CACvE,SC9FI,CAAW,GAAC,WAAa,aAC3BunH,GAAA,QAAiBvrD,KAEjBurD,GAAA,QAAiBtrD,uBCkCZ,SAASwoD,GAAuCC,EAAsB,CACrE,MAAA8C,EAAkB1nD,gBAAoC,IAAI,EAEvD,SAAA2nD,EAAiB,CAAE,SAAAt6D,GAAqC,CAC/D,cACGq6D,EAAgB,SAAhB,CAAyB,MAAO9C,EAC9B,SAAAv3D,CACH,CAAA,CAEJ,CAEA,SAAS63D,GAA6B,CAE9BN,MAAAA,EAAQ7mB,aAAW2pB,CAAe,EACxC,GAAI,CAAC9C,EACH,MAAM,IAAI,eACR,4EAAA,EAGGA,OAAAA,CACT,CAOS,SAAAO,EACP5jH,EACAqmH,EACA,CACA,MAAMhD,EAAQM,IACRt8G,EAAai/G,GACjBjD,EAAM,UAAU,IAAMiD,GAAe,EACvC,OAAItmH,EAGKumH,GAAA,iCACLl/G,EACAg8G,EAAM,SACNA,EAAM,SACNrjH,EACAqmH,CAAA,EAIGhB,EAAAA,qBAAqBh+G,EAAWg8G,EAAM,SAAUA,EAAM,QAAQ,CACvE,CAEA,SAASQ,GAAkC,CACzC,MAAMR,EAAQM,IACV,GAAAG,GAAaT,CAAK,EACd,MAAA,IAAI,MAAM,qDAAqD,EAEhEA,OAAAA,EAAM,SAAS,KAAKA,CAAK,CAClC,CAEA,SAASU,GAAwB,CAC/B,MAAMV,EAAQM,IACV,GAAA,CAACG,GAAaT,CAAK,EACf,MAAA,IAAI,MAAM,8CAA8C,EAEzDA,OAAAA,EAAM,SAAS,KAAKA,CAAK,CAClC,CAEO,MAAA,CACL,iBAAA+C,EACA,YAAAzC,EACA,YAAAC,EACA,eAAAC,EACA,YAAAE,CAAA,CAEJ,CC5FO,SAASC,GAA8BlqH,EAS5C,CAGA,MAAMmqH,EADgBh2D,EAAAA,OAAOi2D,GAAcpqH,EAAQ,KAAK,CAAC,EACxB,QAEjC,GAAI,CAACmqH,GAAc,EAAE,iBAAkBnqH,GAC/B,MAAA,IAAI,MAAM,+CAA+C,EAE7D,GAAAmqH,GAAc,EAAE,aAAcnqH,GAC1B,MAAA,IAAI,MAAM,yCAAyC,EAIrD,KAAA,CAACqqH,EAAOqC,CAAQ,EAAI74D,EAAA,SACxB,IAAOs2D,EAAanqH,EAAQ,MAAQA,EAAQ,YAAA,EAIxC3C,EAAQ8sH,EAAcnqH,EAAQ,MAAcqqH,EAC5CX,EAAWv1D,SAAO92D,CAAK,EAC7BqsH,EAAS,QAAUrsH,EAEb,MAAAulE,EAASzO,SAAO,EAAK,EAC3BG,EAAAA,UAAU,IAAM,CACV,CAACsO,EAAO,SAAWwnD,GAAcpqH,EAAQ,KAAK,IAAMmqH,IACtDvnD,EAAO,QAAU,GAET,QAAA,KACN,+EAAA,EAEJ,EACC,CAAC5iE,EAAQ,KAAK,CAAC,EAEZ,MAAA2sH,EAAkBx4D,EAAAA,OAAOn0D,EAAQ,YAAY,EACnD2sH,EAAgB,QAAU3sH,EAAQ,aAC5B,MAAA4sH,EAAcz4D,EAAAA,OAAOn0D,EAAQ,QAAQ,EAC3C4sH,EAAY,QAAU5sH,EAAQ,SAExB,MAAAsqH,EAAUn2D,SAAO,CAAC,EAClBH,EAAWa,cAAY,MAAOjC,GAAmC,CAC/D,MAAA23D,EAAiB,EAAED,EAAQ,QAE3B//B,EACJ,OAAO33B,GAAa,WACfA,EAA4B82D,EAAS,OAAO,EAC7C92D,EAEF+5D,EAAgB,SAEd,CADS,MAAMA,EAAgB,QAAQpiC,CAAS,GAMlDggC,IAAmBD,EAAQ,UAI1BH,GACHuC,EAASniC,CAAS,EAGpBqiC,EAAY,UAAUriC,CAAS,EACjC,EAAG,CAAE,CAAA,EAEE,MAAA,CAACltF,EAAO22D,CAAQ,CACzB,CC7FA,IAAI64D,GAAU,OAAO,IAAI,eAAe,EACpCC,GAAY,OAAO,IAAI,iBAAiB,EACxCC,GAAc,OAAO,IAAI,aAAa,EAGtCpjH,GAAS,CAAA,EAAY,WAAa,aAAe,CAEnD,SAASqjH,EAAQ,CACf,MAAO,mBAAmBA,CAAM,mFAAmFA,CAAM,0CAC1H,EACD,SAASC,EAAO,CACd,MAAO,sJAAsJA,CAAK,GACnK,EACD,wDACA,SAAS3qH,EAAM,CACb,MAAO,uHAAyHA,CACjI,EACD,oHACA,oCACA,+DACA,kEACA,2FACA,4EACA,SAAS2qH,EAAO,CACd,MAAO,mCAAmCA,CAAK,EAChD,EACD,2DACA,2DACA,6CACA,sEACA,SAASA,EAAO,CACd,MAAO,oCAAoCA,CAAK,EACjD,CAGH,EAAI,GACJ,SAASC,GAAIxkH,KAAUgD,EAAM,CAC3B,GAAI,CAAW,EAAC,WAAa,aAAc,CACzC,MAAMzqC,EAAI0oC,GAAOjB,CAAK,EAChBo2C,EAAM11C,GAAWnoC,CAAC,EAAIA,EAAE,MAAM,KAAMyqC,CAAI,EAAIzqC,EAClD,MAAM,IAAI,MAAM,WAAW69E,CAAG,EAAE,CACjC,CACD,MAAM,IAAI,MACR,8BAA8Bp2C,CAAK,yCACvC,CACA,CAGA,IAAIvlB,GAAI,OACJgyB,GAAiBhyB,GAAE,eACnBgqI,GAAc,cACdC,GAAY,YACZC,GAAe,eACfC,GAAa,aACbC,GAAW,WACXC,GAAQ,QACRC,GAAW5oH,GAAU,CAAC,CAACA,GAAS,CAAC,CAACA,EAAMkoH,EAAW,EACvD,SAASW,GAAY7oH,EAAO,CAC1B,OAAKA,EAEEmvG,GAAcnvG,CAAK,GAAKmQ,GAAQnQ,CAAK,GAAK,CAAC,CAACA,EAAMioH,EAAS,GAAK,CAAC,CAACjoH,EAAMsoH,EAAW,IAAIL,EAAS,GAAKrZ,GAAM5uG,CAAK,GAAK8uG,GAAM9uG,CAAK,EAD9H,EAEX,CACA,IAAI8oH,GAAmBxqI,GAAEiqI,EAAS,EAAED,EAAW,EAAE,SAAQ,EACrDS,GAAoC,IAAI,QAC5C,SAAS5Z,GAAcnvG,EAAO,CAC5B,GAAI,CAACA,GAAS,CAACgpH,GAAYhpH,CAAK,EAC9B,MAAO,GACT,MAAMipH,EAAQ34G,GAAetQ,CAAK,EAClC,GAAIipH,IAAU,MAAQA,IAAU3qI,GAAEiqI,EAAS,EACzC,MAAO,GACT,MAAMW,EAAO5qI,GAAE,eAAe,KAAK2qI,EAAOX,EAAW,GAAKW,EAAMX,EAAW,EAC3E,GAAIY,IAAS,OACX,MAAO,GACT,GAAI,CAAC3kH,GAAW2kH,CAAI,EAClB,MAAO,GACT,IAAIC,EAAaJ,GAAkB,IAAIG,CAAI,EAC3C,OAAIC,IAAe,SACjBA,EAAa,SAAS,SAAS,KAAKD,CAAI,EACxCH,GAAkB,IAAIG,EAAMC,CAAU,GAEjCA,IAAeL,EACxB,CAMA,SAASM,GAAK9mH,EAAKixG,EAAM8V,EAAS,GAAM,CAClCC,GAAYhnH,CAAG,IAAM,GACV+mH,EAAS,QAAQ,QAAQ/mH,CAAG,EAAIhkB,GAAE,KAAKgkB,CAAG,GAClD,QAASpC,GAAQ,CACpBqzG,EAAKrzG,EAAKoC,EAAIpC,CAAG,EAAGoC,CAAG,CAC7B,CAAK,EAEDA,EAAI,QAAQ,CAACmnD,EAAOvkD,IAAUquG,EAAKruG,EAAOukD,EAAOnnD,CAAG,CAAC,CAEzD,CACA,SAASgnH,GAAYlB,EAAO,CAC1B,MAAM5vH,EAAQ4vH,EAAMF,EAAW,EAC/B,OAAO1vH,EAAQA,EAAM,MAAQ2X,GAAQi4G,CAAK,EAAI,EAAgBxZ,GAAMwZ,CAAK,EAAI,EAActZ,GAAMsZ,CAAK,EAAI,EAAc,CAC1H,CACA,IAAInS,GAAM,CAACmS,EAAO1oH,EAAMzE,EAAOquH,GAAYlB,CAAK,IAAMntH,IAAS,EAAcmtH,EAAM,IAAI1oH,CAAI,EAAIphB,GAAEiqI,EAAS,EAAE,eAAe,KAAKH,EAAO1oH,CAAI,EACvIy2G,GAAM,CAACiS,EAAO1oH,EAAMzE,EAAOquH,GAAYlB,CAAK,IAE9CntH,IAAS,EAAcmtH,EAAM,IAAI1oH,CAAI,EAAI0oH,EAAM1oH,CAAI,EAEjD6kF,GAAM,CAAC6jC,EAAOmB,EAAgBvpH,EAAO/E,EAAOquH,GAAYlB,CAAK,IAAM,CACjEntH,IAAS,EACXmtH,EAAM,IAAImB,EAAgBvpH,CAAK,EACxB/E,IAAS,EAChBmtH,EAAM,IAAIpoH,CAAK,EAEfooH,EAAMmB,CAAc,EAAIvpH,CAC5B,EACA,SAAS7wB,GAAGsO,EAAGhX,EAAG,CAChB,OAAIgX,IAAMhX,EACDgX,IAAM,GAAK,EAAIA,IAAM,EAAIhX,EAEzBgX,IAAMA,GAAKhX,IAAMA,CAE5B,CACA,IAAI0pC,GAAU,MAAM,QAChBy+F,GAASv1G,GAAWA,aAAkB,IACtCy1G,GAASz1G,GAAWA,aAAkB,IACtC2vH,GAAe3vH,GAAW,OAAOA,GAAW,SAC5CkL,GAAclL,GAAW,OAAOA,GAAW,WAC3CmwH,GAAanwH,GAAW,OAAOA,GAAW,UAC9C,SAASi5G,GAAatyG,EAAO,CAC3B,MAAM50B,EAAI,CAAC40B,EACX,OAAO,OAAO,UAAU50B,CAAC,GAAK,OAAOA,CAAC,IAAM40B,CAC9C,CAMA,IAAIwsE,GAAUh0E,GAAUA,EAAM,OAASA,EAAM,MAKzCixH,GAAiBjxH,GAAUA,EAAM,UAAYA,EAAM,MAAQA,EAAM,MACrE,SAASkxH,GAAY7J,EAAMwJ,EAAQ,CACjC,GAAIza,GAAMiR,CAAI,EACZ,OAAO,IAAI,IAAIA,CAAI,EAErB,GAAI/Q,GAAM+Q,CAAI,EACZ,OAAO,IAAI,IAAIA,CAAI,EAErB,GAAI1vG,GAAQ0vG,CAAI,EACd,OAAO,MAAM0I,EAAS,EAAE,MAAM,KAAK1I,CAAI,EACzC,MAAM8J,EAAUxa,GAAc0Q,CAAI,EAClC,GAAIwJ,IAAW,IAAQA,IAAW,cAAgB,CAACM,EAAS,CAC1D,MAAMC,EAActrI,GAAE,0BAA0BuhI,CAAI,EACpD,OAAO+J,EAAY1B,EAAW,EAC9B,IAAIt3G,EAAO,QAAQ,QAAQg5G,CAAW,EACtC,QAAS,EAAI,EAAG,EAAIh5G,EAAK,OAAQ,IAAK,CACpC,MAAM1Q,EAAM0Q,EAAK,CAAC,EACZi5G,EAAOD,EAAY1pH,CAAG,EACxB2pH,EAAKnB,EAAQ,IAAM,KACrBmB,EAAKnB,EAAQ,EAAI,GACjBmB,EAAKrB,EAAY,EAAI,KAEnBqB,EAAK,KAAOA,EAAK,OACnBD,EAAY1pH,CAAG,EAAI,CACjB,CAACsoH,EAAY,EAAG,GAChB,CAACE,EAAQ,EAAG,GAEZ,CAACD,EAAU,EAAGoB,EAAKpB,EAAU,EAC7B,CAACE,EAAK,EAAG9I,EAAK3/G,CAAG,CAC3B,EACK,CACD,OAAO5hB,GAAE,OAAOgyB,GAAeuvG,CAAI,EAAG+J,CAAW,CACrD,KAAS,CACL,MAAMX,EAAQ34G,GAAeuvG,CAAI,EACjC,GAAIoJ,IAAU,MAAQU,EACpB,MAAO,CAAE,GAAG9J,GAEd,MAAMv9G,EAAMhkB,GAAE,OAAO2qI,CAAK,EAC1B,OAAO3qI,GAAE,OAAOgkB,EAAKu9G,CAAI,CAC1B,CACH,CACA,SAASiK,GAAOxnH,EAAKw2G,EAAO,GAAO,CACjC,OAAIiR,GAASznH,CAAG,GAAKsmH,GAAQtmH,CAAG,GAAK,CAACumH,GAAYvmH,CAAG,IAEjDgnH,GAAYhnH,CAAG,EAAI,GACrBhkB,GAAE,iBAAiBgkB,EAAK,CACtB,IAAK0nH,GACL,IAAKA,GACL,MAAOA,GACP,OAAQA,EACd,CAAK,EAEH1rI,GAAE,OAAOgkB,CAAG,EACRw2G,GACFsQ,GACE9mH,EACA,CAAC2nH,EAAMjqH,IAAU,CACf8pH,GAAO9pH,EAAO,EAAI,CACnB,EACD,EACN,GACSsC,CACT,CACA,SAAS4nH,IAA8B,CACrC7B,GAAI,CAAC,CACP,CACA,IAAI2B,GAA2B,CAC7B,CAACrB,EAAK,EAAGuB,EACX,EACA,SAASH,GAASznH,EAAK,CACrB,OAAIA,IAAQ,MAAQ,CAAC0mH,GAAY1mH,CAAG,EAC3B,GACFhkB,GAAE,SAASgkB,CAAG,CACvB,CAGA,IAAI6nH,GAAe,SACfC,GAAgB,UAChBC,GAAqB,eACrBC,GAAU,CAAA,EACd,SAASC,GAAUC,EAAW,CAC5B,MAAMrC,EAASmC,GAAQE,CAAS,EAChC,OAAKrC,GACHE,GAAI,EAAGmC,CAAS,EAEXrC,CACT,CACA,IAAIsC,GAAkBD,GAAc,CAAC,CAACF,GAAQE,CAAS,EAOnDE,GACAC,GAAkB,IAAMD,GACxBE,GAAc,CAACC,EAASC,KAAY,CACtC,QAAS,CAAE,EACX,QAAAD,EACA,OAAAC,EAGA,eAAgB,GAChB,mBAAoB,EACpB,YAA6B,IAAI,IACjC,qBAAsC,IAAI,IAC1C,cAAeL,GAAeN,EAAY,EAAII,GAAUJ,EAAY,EAAI,OACxE,oBAAqBM,GAAeJ,EAAkB,EAAIE,GAAUF,EAAkB,EAAI,MAC5F,GACA,SAASU,GAAkB10D,EAAO20D,EAAe,CAC3CA,IACF30D,EAAM,aAAek0D,GAAUH,EAAa,EAC5C/zD,EAAM,SAAW,GACjBA,EAAM,gBAAkB,GACxBA,EAAM,eAAiB20D,EAE3B,CACA,SAASC,GAAY50D,EAAO,CAC1B60D,GAAW70D,CAAK,EAChBA,EAAM,QAAQ,QAAQ80D,EAAW,EACjC90D,EAAM,QAAU,IAClB,CACA,SAAS60D,GAAW70D,EAAO,CACrBA,IAAUq0D,KACZA,GAAer0D,EAAM,QAEzB,CACA,IAAI+0D,GAAcC,GAAWX,GAAeE,GAAYF,GAAcW,CAAM,EAC5E,SAASF,GAAYG,EAAO,CAC1B,MAAM9yH,EAAQ8yH,EAAMpD,EAAW,EAC3B1vH,EAAM,QAAU,GAAkBA,EAAM,QAAU,EACpDA,EAAM,QAAO,EAEbA,EAAM,SAAW,EACrB,CAGA,SAAS+yH,GAAcrxH,EAAQm8D,EAAO,CACpCA,EAAM,mBAAqBA,EAAM,QAAQ,OACzC,MAAMm1D,EAAYn1D,EAAM,QAAQ,CAAC,EAEjC,GADmBn8D,IAAW,QAAUA,IAAWsxH,EACnC,CACVA,EAAUtD,EAAW,EAAE,YACzB+C,GAAY50D,CAAK,EACjBgyD,GAAI,CAAC,GAEHQ,GAAY3uH,CAAM,IACpBA,EAASuxH,GAASp1D,EAAOn8D,CAAM,GAEjC,KAAM,CAAE,aAAAwxH,CAAc,EAAGr1D,EACrBq1D,GACFA,EAAa,4BACXF,EAAUtD,EAAW,EAAE,MACvBhuH,EACAm8D,CACR,CAEA,MACIn8D,EAASuxH,GAASp1D,EAAOm1D,CAAS,EAEpC,OAAAG,GAAYt1D,EAAOn8D,EAAQ,EAAI,EAC/B+wH,GAAY50D,CAAK,EACbA,EAAM,UACRA,EAAM,eAAeA,EAAM,SAAUA,EAAM,eAAe,EAErDn8D,IAAW8tH,GAAU9tH,EAAS,MACvC,CACA,SAASuxH,GAASG,EAAW5rH,EAAO,CAClC,GAAI+pH,GAAS/pH,CAAK,EAChB,OAAOA,EACT,MAAMxH,EAAQwH,EAAMkoH,EAAW,EAC/B,GAAI,CAAC1vH,EAEH,OADmBqzH,GAAY7rH,EAAO4rH,EAAU,YAAaA,CAAS,EAGxE,GAAI,CAACE,GAAYtzH,EAAOozH,CAAS,EAC/B,OAAO5rH,EAET,GAAI,CAACxH,EAAM,UACT,OAAOA,EAAM,MAEf,GAAI,CAACA,EAAM,WAAY,CACrB,KAAM,CAAE,WAAAuzH,CAAY,EAAGvzH,EACvB,GAAIuzH,EACF,KAAOA,EAAW,OAAS,GACRA,EAAW,MACnBH,CAAS,EAGtBI,GAA2BxzH,EAAOozH,CAAS,CAC5C,CACD,OAAOpzH,EAAM,KACf,CACA,SAASmzH,GAAYt1D,EAAOr2D,EAAO84G,EAAO,GAAO,CAC3C,CAACziD,EAAM,SAAWA,EAAM,OAAO,aAAeA,EAAM,gBACtDyzD,GAAO9pH,EAAO84G,CAAI,CAEtB,CACA,SAASmT,GAAmBzzH,EAAO,CACjCA,EAAM,WAAa,GACnBA,EAAM,OAAO,oBACf,CACA,IAAIszH,GAAc,CAACtzH,EAAOozH,IAAcpzH,EAAM,SAAWozH,EACrDM,GAAyB,CAAA,EAC7B,SAASC,GAAoB7lH,EAAQ8lH,EAAYC,EAAgBC,EAAa,CAC5E,MAAMC,EAAa//C,GAAOlmE,CAAM,EAC1BkmH,EAAalmH,EAAO,MAC1B,GAAIgmH,IAAgB,QACGnW,GAAIoW,EAAYD,EAAaE,CAAU,IACvCJ,EAAY,CAC/B7nC,GAAIgoC,EAAYD,EAAaD,EAAgBG,CAAU,EACvD,MACD,CAEH,GAAI,CAAClmH,EAAO,gBAAiB,CAC3B,MAAMmmH,EAAiBnmH,EAAO,gBAAkC,IAAI,IACpE8iH,GAAKmD,EAAY,CAACrsH,EAAKF,IAAU,CAC/B,GAAI4oH,GAAQ5oH,CAAK,EAAG,CAClB,MAAM4Q,EAAO67G,EAAe,IAAIzsH,CAAK,GAAK,CAAA,EAC1C4Q,EAAK,KAAK1Q,CAAG,EACbusH,EAAe,IAAIzsH,EAAO4Q,CAAI,CAC/B,CACP,CAAK,CACF,CACD,MAAM87G,EAAYpmH,EAAO,gBAAgB,IAAI8lH,CAAU,GAAKF,GAC5D,UAAW1hE,KAAYkiE,EACrBnoC,GAAIgoC,EAAY/hE,EAAU6hE,EAAgBG,CAAU,CAExD,CACA,SAASG,GAAkCrmH,EAAQ6uC,EAAOj1C,EAAK,CAC7DoG,EAAO,WAAW,KAAK,SAAsBslH,EAAW,CACtD,MAAMpzH,EAAQ28C,EACd,GAAI,CAAC38C,GAAS,CAACszH,GAAYtzH,EAAOozH,CAAS,EACzC,OAEFA,EAAU,eAAe,eAAepzH,CAAK,EAC7C,MAAM6zH,EAAiB5C,GAAcjxH,CAAK,EAC1C2zH,GAAoB7lH,EAAQ9N,EAAM,QAAUA,EAAO6zH,EAAgBnsH,CAAG,EACtE8rH,GAA2BxzH,EAAOozH,CAAS,CAC/C,CAAG,CACH,CACA,SAASI,GAA2BxzH,EAAOozH,EAAW,CAEpD,GADuBpzH,EAAM,WAAa,CAACA,EAAM,aAAeA,EAAM,QAAU,GAAeA,EAAM,QAAU,GAAiBA,EAAM,wBAA0BA,EAAM,WAAW,MAAQ,GAAK,GAC1K,CAClB,KAAM,CAAE,aAAAkzH,CAAc,EAAGE,EACzB,GAAIF,EAAc,CAChB,MAAMkB,EAAWlB,EAAa,QAAQlzH,CAAK,EACvCo0H,GACFlB,EAAa,iBAAiBlzH,EAAOo0H,EAAUhB,CAAS,CAE3D,CACDK,GAAmBzzH,CAAK,CACzB,CACH,CACA,SAASq0H,GAAqBxzH,EAAQ6G,EAAKF,EAAO,CAChD,KAAM,CAAE,OAAA8sH,CAAQ,EAAGzzH,EACnB,GAAIuvH,GAAQ5oH,CAAK,EAAG,CAClB,MAAMxH,EAAQwH,EAAMkoH,EAAW,EAC3B4D,GAAYtzH,EAAOs0H,CAAM,GAC3Bt0H,EAAM,WAAW,KAAK,UAAiC,CACrDu0H,GAAY1zH,CAAM,EAClB,MAAMgzH,EAAiB5C,GAAcjxH,CAAK,EAC1C2zH,GAAoB9yH,EAAQ2G,EAAOqsH,EAAgBnsH,CAAG,CAC9D,CAAO,CAEP,MAAa2oH,GAAY7oH,CAAK,GAC1B3G,EAAO,WAAW,KAAK,UAA8B,CACnD,MAAM2zH,EAAaxgD,GAAOnzE,CAAM,EAC5BA,EAAO,QAAU,EACf2zH,EAAW,IAAIhtH,CAAK,GACtB6rH,GAAY7rH,EAAO8sH,EAAO,YAAaA,CAAM,EAG3C3W,GAAI6W,EAAY9sH,EAAK7G,EAAO,KAAK,IAAM2G,GACrC8sH,EAAO,QAAQ,OAAS,IAAMzzH,EAAO,UAAU,IAAI6G,CAAG,GAAK,MAAW,IAAQ7G,EAAO,OACvFwyH,GACE1V,GAAI98G,EAAO,MAAO6G,EAAK7G,EAAO,KAAK,EACnCyzH,EAAO,YACPA,CACd,CAIA,CAAK,CAEL,CACA,SAASjB,GAAYxyH,EAAQ4zH,EAAYrB,EAAW,CAIlD,MAHI,CAACA,EAAU,OAAO,aAAeA,EAAU,mBAAqB,GAGhEhD,GAAQvvH,CAAM,GAAK4zH,EAAW,IAAI5zH,CAAM,GAAK,CAACwvH,GAAYxvH,CAAM,GAAK0wH,GAAS1wH,CAAM,IAGxF4zH,EAAW,IAAI5zH,CAAM,EACrB+vH,GAAK/vH,EAAQ,CAAC6G,EAAKF,IAAU,CAC3B,GAAI4oH,GAAQ5oH,CAAK,EAAG,CAClB,MAAMxH,EAAQwH,EAAMkoH,EAAW,EAC/B,GAAI4D,GAAYtzH,EAAOozH,CAAS,EAAG,CACjC,MAAMsB,EAAezD,GAAcjxH,CAAK,EACxC+rF,GAAIlrF,EAAQ6G,EAAKgtH,EAAc7zH,EAAO,KAAK,EAC3C4yH,GAAmBzzH,CAAK,CACzB,CACP,MAAeqwH,GAAY7oH,CAAK,GAC1B6rH,GAAY7rH,EAAOitH,EAAYrB,CAAS,CAE9C,CAAG,GACMvyH,CACT,CAGA,SAAS8zH,GAAiBtN,EAAMv5G,EAAQ,CACtC,MAAM8mH,EAAcj9G,GAAQ0vG,CAAI,EAC1BrnH,EAAQ,CACZ,MAAO40H,EAAc,EAAgB,EAErC,OAAQ9mH,EAASA,EAAO,OAASqkH,GAAiB,EAElD,UAAW,GAEX,WAAY,GAGZ,UAAW,OAEX,QAASrkH,EAET,MAAOu5G,EAEP,OAAQ,KAGR,MAAO,KAEP,QAAS,KACT,UAAW,GAEX,WAAY,MAChB,EACE,IAAIxmH,EAASb,EACT60H,EAAQC,GACRF,IACF/zH,EAAS,CAACb,CAAK,EACf60H,EAAQE,IAEV,KAAM,CAAE,OAAAC,EAAQ,MAAArW,CAAO,EAAG,MAAM,UAAU99G,EAAQg0H,CAAK,EACvD,OAAA70H,EAAM,OAAS2+G,EACf3+G,EAAM,QAAUg1H,EACT,CAACrW,EAAO3+G,CAAK,CACtB,CACA,IAAI80H,GAAc,CAChB,IAAI90H,EAAOkH,EAAM,CACf,GAAIA,IAASwoH,GACX,OAAO1vH,EACT,IAAIi1H,EAAcj1H,EAAM,OAAO,oBAC/B,MAAMk1H,EAAwBl1H,EAAM,QAAU,GAAiB,OAAOkH,GAAS,SAC/E,GAAIguH,GACED,GAAa,uBAAuB/tH,CAAI,EAC1C,OAAO+tH,EAAY,wBAAwBj1H,EAAOkH,CAAI,EAG1D,MAAMoJ,EAAS0jE,GAAOh0E,CAAK,EAC3B,GAAI,CAACy9G,GAAIntG,EAAQpJ,EAAMlH,EAAM,KAAK,EAChC,OAAOm1H,GAAkBn1H,EAAOsQ,EAAQpJ,CAAI,EAE9C,MAAMM,EAAQ8I,EAAOpJ,CAAI,EAIzB,GAHIlH,EAAM,YAAc,CAACqwH,GAAY7oH,CAAK,GAGtC0tH,GAAyBl1H,EAAM,iBAAmBi1H,GAAa,sBACjEj1H,EAAM,eACZ,GAAS85G,GAAa5yG,CAAI,EACpB,OAAOM,EAET,GAAIA,IAAU4tH,GAAKp1H,EAAM,MAAOkH,CAAI,EAAG,CACrCqtH,GAAYv0H,CAAK,EACjB,MAAM6gE,EAAW7gE,EAAM,QAAU,EAAgB,CAACkH,EAAOA,EACnDmuH,EAAaC,GAAYt1H,EAAM,OAAQwH,EAAOxH,EAAO6gE,CAAQ,EACnE,OAAO7gE,EAAM,MAAM6gE,CAAQ,EAAIw0D,CAChC,CACD,OAAO7tH,CACR,EACD,IAAIxH,EAAOkH,EAAM,CACf,OAAOA,KAAQ8sE,GAAOh0E,CAAK,CAC5B,EACD,QAAQA,EAAO,CACb,OAAO,QAAQ,QAAQg0E,GAAOh0E,CAAK,CAAC,CACrC,EACD,IAAIA,EAAOkH,EAAMM,EAAO,CACtB,MAAM6pH,EAAOkE,GAAuBvhD,GAAOh0E,CAAK,EAAGkH,CAAI,EACvD,GAAImqH,GAAM,IACR,OAAAA,EAAK,IAAI,KAAKrxH,EAAM,OAAQwH,CAAK,EAC1B,GAET,GAAI,CAACxH,EAAM,UAAW,CACpB,MAAMw1H,EAAWJ,GAAKphD,GAAOh0E,CAAK,EAAGkH,CAAI,EACnCuuH,EAAeD,IAAW9F,EAAW,EAC3C,GAAI+F,GAAgBA,EAAa,QAAUjuH,EACzC,OAAAxH,EAAM,MAAMkH,CAAI,EAAIM,EACpBxH,EAAM,UAAU,IAAIkH,EAAM,EAAK,EACxB,GAET,GAAIvwB,GAAG6wB,EAAOguH,CAAQ,IAAMhuH,IAAU,QAAUi2G,GAAIz9G,EAAM,MAAOkH,EAAMlH,EAAM,KAAK,GAChF,MAAO,GACTu0H,GAAYv0H,CAAK,EACjB01H,GAAY11H,CAAK,CAClB,CACD,OAAIA,EAAM,MAAMkH,CAAI,IAAMM,IACzBA,IAAU,QAAUN,KAAQlH,EAAM,QACnC,OAAO,MAAMwH,CAAK,GAAK,OAAO,MAAMxH,EAAM,MAAMkH,CAAI,CAAC,IAErDlH,EAAM,MAAMkH,CAAI,EAAIM,EACpBxH,EAAM,UAAU,IAAIkH,EAAM,EAAI,EAC9BmtH,GAAqBr0H,EAAOkH,EAAMM,CAAK,GAChC,EACR,EACD,eAAexH,EAAOkH,EAAM,CAC1B,OAAAqtH,GAAYv0H,CAAK,EACbo1H,GAAKp1H,EAAM,MAAOkH,CAAI,IAAM,QAAUA,KAAQlH,EAAM,OACtDA,EAAM,UAAU,IAAIkH,EAAM,EAAK,EAC/BwuH,GAAY11H,CAAK,GAEjBA,EAAM,UAAU,OAAOkH,CAAI,EAEzBlH,EAAM,OACR,OAAOA,EAAM,MAAMkH,CAAI,EAElB,EACR,EAGD,yBAAyBlH,EAAOkH,EAAM,CACpC,MAAMu5D,EAAQuT,GAAOh0E,CAAK,EACpBqxH,EAAO,QAAQ,yBAAyB5wD,EAAOv5D,CAAI,EACzD,OAAKmqH,GAEE,CACL,CAACnB,EAAQ,EAAG,GACZ,CAACF,EAAY,EAAGhwH,EAAM,QAAU,GAAiBkH,IAAS,SAC1D,CAAC+oH,EAAU,EAAGoB,EAAKpB,EAAU,EAC7B,CAACE,EAAK,EAAG1vD,EAAMv5D,CAAI,CACzB,CACG,EACD,gBAAiB,CACf2oH,GAAI,EAAE,CACP,EACD,eAAe7vH,EAAO,CACpB,OAAO8X,GAAe9X,EAAM,KAAK,CAClC,EACD,gBAAiB,CACf6vH,GAAI,EAAE,CACP,CACH,EACIkF,GAAa,CAAA,EACjB,QAASrtH,KAAOotH,GAAa,CAC3B,IAAIzlH,EAAKylH,GAAYptH,CAAG,EACxBqtH,GAAWrtH,CAAG,EAAI,UAAW,CAC3B,MAAM2G,EAAO,UACb,OAAAA,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAE,CAAC,EACZgB,EAAG,MAAM,KAAMhB,CAAI,CAC9B,CACA,CACA0mH,GAAW,eAAiB,SAAS/0H,EAAOkH,EAAM,CAChD,MAAI,CAAA,EAAY,WAAa,cAAgB,MAAM,SAASA,CAAI,CAAC,GAC/D2oH,GAAI,EAAE,EACDkF,GAAW,IAAI,KAAK,KAAM/0H,EAAOkH,EAAM,MAAM,CACtD,EACA6tH,GAAW,IAAM,SAAS/0H,EAAOkH,EAAMM,EAAO,CAC5C,MAAI,CAAW,EAAC,WAAa,cAAgBN,IAAS,UAAY,MAAM,SAASA,CAAI,CAAC,GACpF2oH,GAAI,EAAE,EACDiF,GAAY,IAAI,KAAK,KAAM90H,EAAM,CAAC,EAAGkH,EAAMM,EAAOxH,EAAM,CAAC,CAAC,CACnE,EACA,SAASo1H,GAAKtC,EAAO5rH,EAAM,CACzB,MAAMlH,EAAQ8yH,EAAMpD,EAAW,EAE/B,OADe1vH,EAAQg0E,GAAOh0E,CAAK,EAAI8yH,GACzB5rH,CAAI,CACpB,CACA,SAASiuH,GAAkBn1H,EAAOsQ,EAAQpJ,EAAM,CAC9C,MAAMmqH,EAAOkE,GAAuBjlH,EAAQpJ,CAAI,EAChD,OAAOmqH,EAAOlB,MAASkB,EAAOA,EAAKlB,EAAK,EAGtCkB,EAAK,KAAK,KAAKrxH,EAAM,MAAM,EACzB,MACN,CACA,SAASu1H,GAAuBjlH,EAAQpJ,EAAM,CAC5C,GAAI,EAAEA,KAAQoJ,GACZ,OACF,IAAImgH,EAAQ34G,GAAexH,CAAM,EACjC,KAAOmgH,GAAO,CACZ,MAAMY,EAAO,OAAO,yBAAyBZ,EAAOvpH,CAAI,EACxD,GAAImqH,EACF,OAAOA,EACTZ,EAAQ34G,GAAe24G,CAAK,CAC7B,CAEH,CACA,SAASiF,GAAY11H,EAAO,CACrBA,EAAM,YACTA,EAAM,UAAY,GACdA,EAAM,SACR01H,GAAY11H,EAAM,OAAO,EAG/B,CACA,SAASu0H,GAAYv0H,EAAO,CACrBA,EAAM,QACTA,EAAM,UAA4B,IAAI,IACtCA,EAAM,MAAQkxH,GACZlxH,EAAM,MACNA,EAAM,OAAO,OAAO,qBAC1B,EAEA,CAGA,IAAI21H,GAAS,KAAM,CACjB,YAAYznH,EAAQ,CAClB,KAAK,YAAc,GACnB,KAAK,sBAAwB,GAC7B,KAAK,oBAAsB,GAoB3B,KAAK,QAAU,CAACm5G,EAAMuO,EAAQpD,IAAkB,CAC9C,GAAIzmH,GAAWs7G,CAAI,GAAK,CAACt7G,GAAW6pH,CAAM,EAAG,CAC3C,MAAMC,EAAcD,EACpBA,EAASvO,EACT,MAAMxM,EAAO,KACb,OAAO,SAAwBib,EAAQD,KAAgBxnH,EAAM,CAC3D,OAAOwsG,EAAK,QAAQib,EAAQhD,GAAU8C,EAAO,KAAK,KAAM9C,EAAO,GAAGzkH,CAAI,CAAC,CACjF,CACO,CACItC,GAAW6pH,CAAM,GACpB/F,GAAI,CAAC,EACH2C,IAAkB,QAAU,CAACzmH,GAAWymH,CAAa,GACvD3C,GAAI,CAAC,EACP,IAAInuH,EACJ,GAAI2uH,GAAYhJ,CAAI,EAAG,CACrB,MAAMxpD,EAAQ+0D,GAAW,IAAI,EACvBjU,EAAQ2W,GAAYz3D,EAAOwpD,EAAM,MAAM,EAC7C,IAAIt1G,EAAW,GACf,GAAI,CACFrQ,EAASk0H,EAAOjX,CAAK,EACrB5sG,EAAW,EACrB,QAAkB,CACJA,EACF0gH,GAAY50D,CAAK,EAEjB60D,GAAW70D,CAAK,CACnB,CACD,OAAA00D,GAAkB10D,EAAO20D,CAAa,EAC/BO,GAAcrxH,EAAQm8D,CAAK,CACnC,SAAU,CAACwpD,GAAQ,CAACmJ,GAAYnJ,CAAI,EAAG,CAQtC,GAPA3lH,EAASk0H,EAAOvO,CAAI,EAChB3lH,IAAW,SACbA,EAAS2lH,GACP3lH,IAAW8tH,KACb9tH,EAAS,QACP,KAAK,aACP4vH,GAAO5vH,EAAQ,EAAI,EACjB8wH,EAAe,CACjB,MAAM71I,EAAI,CAAA,EACJyJ,EAAK,CAAA,EACX2rI,GAAUH,EAAa,EAAE,4BAA4BvK,EAAM3lH,EAAQ,CACjE,SAAU/kB,EACV,gBAAiByJ,CAC7B,CAAW,EACDosI,EAAc71I,EAAGyJ,CAAE,CACpB,CACD,OAAOsb,CACR,MACCmuH,GAAI,EAAGxI,CAAI,CACnB,EACI,KAAK,mBAAqB,CAACA,EAAMuO,IAAW,CAC1C,GAAI7pH,GAAWs7G,CAAI,EACjB,MAAO,CAACrnH,KAAUqO,IAAS,KAAK,mBAAmBrO,EAAQ8yH,GAAUzL,EAAKyL,EAAO,GAAGzkH,CAAI,CAAC,EAE3F,IAAI0nH,EAASC,EAKb,MAAO,CAJQ,KAAK,QAAQ3O,EAAMuO,EAAQ,CAACj5I,EAAGyJ,IAAO,CACnD2vI,EAAUp5I,EACVq5I,EAAiB5vI,CACzB,CAAO,EACe2vI,EAASC,CAAc,CAC7C,EACQhF,GAAU9iH,GAAQ,UAAU,GAC9B,KAAK,cAAcA,EAAO,UAAU,EAClC8iH,GAAU9iH,GAAQ,oBAAoB,GACxC,KAAK,wBAAwBA,EAAO,oBAAoB,EACtD8iH,GAAU9iH,GAAQ,kBAAkB,GACtC,KAAK,sBAAsBA,EAAO,kBAAkB,CACvD,CACD,YAAYm5G,EAAM,CACXgJ,GAAYhJ,CAAI,GACnBwI,GAAI,CAAC,EACHO,GAAQ/I,CAAI,IACdA,EAAO1mE,GAAQ0mE,CAAI,GACrB,MAAMxpD,EAAQ+0D,GAAW,IAAI,EACvBjU,EAAQ2W,GAAYz3D,EAAOwpD,EAAM,MAAM,EAC7C,OAAA1I,EAAM+Q,EAAW,EAAE,UAAY,GAC/BgD,GAAW70D,CAAK,EACT8gD,CACR,CACD,YAAYmU,EAAON,EAAe,CAChC,MAAMxyH,EAAQ8yH,GAASA,EAAMpD,EAAW,GACpC,CAAC1vH,GAAS,CAACA,EAAM,YACnB6vH,GAAI,CAAC,EACP,KAAM,CAAE,OAAQhyD,CAAO,EAAG79D,EAC1B,OAAAuyH,GAAkB10D,EAAO20D,CAAa,EAC/BO,GAAc,OAAQl1D,CAAK,CACnC,CAMD,cAAcr2D,EAAO,CACnB,KAAK,YAAcA,CACpB,CAMD,wBAAwBA,EAAO,CAC7B,KAAK,sBAAwBA,CAC9B,CAOD,sBAAsBA,EAAO,CAC3B,KAAK,oBAAsBA,CAC5B,CACD,0BAA2B,CACzB,OAAO,KAAK,mBACb,CACD,aAAa6/G,EAAM0O,EAAS,CAC1B,IAAI9wJ,EACJ,IAAKA,EAAI8wJ,EAAQ,OAAS,EAAG9wJ,GAAK,EAAGA,IAAK,CACxC,MAAMgxJ,EAAQF,EAAQ9wJ,CAAC,EACvB,GAAIgxJ,EAAM,KAAK,SAAW,GAAKA,EAAM,KAAO,UAAW,CACrD5O,EAAO4O,EAAM,MACb,KACD,CACF,CACGhxJ,EAAI,KACN8wJ,EAAUA,EAAQ,MAAM9wJ,EAAI,CAAC,GAE/B,MAAMixJ,EAAmBnE,GAAUH,EAAa,EAAE,cAClD,OAAIxB,GAAQ/I,CAAI,EACP6O,EAAiB7O,EAAM0O,CAAO,EAEhC,KAAK,QACV1O,EACCyL,GAAUoD,EAAiBpD,EAAOiD,CAAO,CAChD,CACG,CACH,EACA,SAAST,GAAYlC,EAAW5rH,EAAOsG,EAAQpG,EAAK,CAClD,KAAM,CAACorH,EAAO9yH,CAAK,EAAIo2G,GAAM5uG,CAAK,EAAIuqH,GAAUJ,EAAY,EAAE,UAAUnqH,EAAOsG,CAAM,EAAIwoG,GAAM9uG,CAAK,EAAIuqH,GAAUJ,EAAY,EAAE,UAAUnqH,EAAOsG,CAAM,EAAI6mH,GAAiBntH,EAAOsG,CAAM,EAEzL,OADcA,GAAQ,QAAUqkH,GAAe,GACzC,QAAQ,KAAKW,CAAK,EACxB9yH,EAAM,WAAa8N,GAAQ,YAAc,CAAA,EACzC9N,EAAM,KAAO0H,EACToG,GAAUpG,IAAQ,OACpBysH,GAAkCrmH,EAAQ9N,EAAO0H,CAAG,EAEpD1H,EAAM,WAAW,KAAK,SAA0Bm2H,EAAY,CAC1DA,EAAW,eAAe,eAAen2H,CAAK,EAC9C,KAAM,CAAE,aAAAkzH,CAAc,EAAGiD,EACrBn2H,EAAM,WAAakzH,GACrBA,EAAa,iBAAiBlzH,EAAO,CAAE,EAAEm2H,CAAU,CAE3D,CAAK,EAEIrD,CACT,CAGA,SAASnyE,GAAQn5C,EAAO,CACtB,OAAK4oH,GAAQ5oH,CAAK,GAChBqoH,GAAI,GAAIroH,CAAK,EACR4uH,GAAY5uH,CAAK,CAC1B,CACA,SAAS4uH,GAAY5uH,EAAO,CAC1B,GAAI,CAAC6oH,GAAY7oH,CAAK,GAAK+pH,GAAS/pH,CAAK,EACvC,OAAOA,EACT,MAAMxH,EAAQwH,EAAMkoH,EAAW,EAC/B,IAAI98G,EACAi+G,EAAS,GACb,GAAI7wH,EAAO,CACT,GAAI,CAACA,EAAM,UACT,OAAOA,EAAM,MACfA,EAAM,WAAa,GACnB4S,EAAOs+G,GAAY1pH,EAAOxH,EAAM,OAAO,OAAO,qBAAqB,EACnE6wH,EAAS7wH,EAAM,OAAO,OAAO,yBAAwB,CACzD,MACI4S,EAAOs+G,GAAY1pH,EAAO,EAAI,EAEhC,OAAAopH,GACEh+G,EACA,CAAClL,EAAK2uH,IAAe,CACnBtqC,GAAIn5E,EAAMlL,EAAK0uH,GAAYC,CAAU,CAAC,CACvC,EACDxF,CACJ,EACM7wH,IACFA,EAAM,WAAa,IAEd4S,CACT,CAivBA,IAAI0jH,GAAQ,IAAIX,GACZY,GAAUD,GAAM,QCrkDb,SAASE,GAAS//D,EAAmB,CACpC,KAAA,CAACj2D,EAAKi2H,CAAW,EAAIjgE,EAAA,SAAS,IAClC86D,GACE,OAAO76D,GAAiB,WAAaA,EAAA,EAAiBA,EACtD,EACF,CAAA,EAEK,MAAA,CACLj2D,EACAg3D,EAAA,YAAa6D,GAA0B,CAEvBo7D,EADV,OAAOp7D,GAAY,WACTk7D,GAAQl7D,CAAO,EAEfi2D,GAAOj2D,CAAO,CAFE,CAIhC,EAAG,EAAE,CAAA,CAET,CAOgB,SAAAq7D,GACdl4D,EACAm4D,EACAC,EACkB,CAClB,MAAMC,EAAgBvxB,EAAA,QACpB,IAAMixB,GAAQ/3D,CAAO,EACrB,CAACA,CAAO,CAAA,EAEH,OAAAs4D,aAAWD,EAAeF,EAAuBC,CAAkB,CAC5E,CCnDO,SAASG,GAAchgE,EAG5B,CACM,KAAA,CAACigE,EAAYC,CAAa,EAAIzgE,EAAA,SAAS,CAAE,MAAO,EAAG,OAAQ,CAAA,CAAG,EAEpE8yC,OAAAA,EAAAA,gBAAgB,IAAM,CAChBvyC,EAAI,SACNkgE,EAAc,KAAO,CACnB,MAAOlgE,EAAI,QAAS,YACpB,OAAQA,EAAI,QAAS,YACrB,EAAA,CACJ,EACC,CAACA,CAAG,CAAC,EAEDigE,CACT,CCfO,SAASE,GAAgB5iG,EAAY,CAC1C,KAAM,CAAC6iG,EAAUC,CAAW,EAAI5gE,WAAcliC,CAAK,EAI5C,MAAA,CAAE,SAAA6iG,EAAU,OAHH1qH,GAAY,CAC1B2qH,EAAa3oG,GAAS4oG,GAAgB5oG,EAAMhiB,CAAI,CAAC,CAAA,EAGrD,CCCa,MAAA6qH,GACXhwD,EAAAA,cAAiD,IAAI,EAEhD,SAASiwD,IAAgD,CAExD,MAAAntH,EAAMi7F,aAAWiyB,EAAqB,EAC5C,GAAI,CAACltH,EACH,MAAM,IAAI,MACR,sEAAA,EAGG,OAAAA,CACT,CCnBA,SAASotH,GAAoBhwH,EAAOka,EAAO0qB,EAAU,CAOjD68D,EAAAA,mBAAmB,IAAMzhG,EAAM,GAAGka,EAAO0qB,CAAQ,EAAG,CAAC5kC,EAAOka,EAAO0qB,CAAQ,CAAC,CAChF,CCTA,SAASqrF,GAAqB52H,EAAQ,CAClC,OAAI,OAAO,OAAW,IACX,GACJA,EAASu6E,KAAyBD,IAC7C,CCDA,MAAM3S,GAAa,GACbkvD,GAAiB,KAAO,CAC1B,QAAS,EACT,OAAQ,CAAE,EACV,SAAU,EACV,aAAc,EACd,aAAc,EACd,aAAc,EACd,gBAAiB,EACjB,SAAU,CACd,GACMC,GAAmB,KAAO,CAC5B,KAAM,EACN,EAAGD,GAAgB,EACnB,EAAGA,GAAgB,CACvB,GACMt/G,GAAO,CACT,EAAG,CACC,OAAQ,QACR,SAAU,MACb,EACD,EAAG,CACC,OAAQ,SACR,SAAU,KACb,CACL,EACA,SAASw/G,GAAerxH,EAASsxH,EAAUh5D,EAAMh0B,EAAM,CACnD,MAAMkL,EAAO8oB,EAAKg5D,CAAQ,EACpB,CAAE,OAAA53H,EAAQ,SAAA0I,CAAU,EAAGyP,GAAKy/G,CAAQ,EACpC7nH,EAAO+lC,EAAK,QACZ+hF,EAAWj5D,EAAK,KACtB9oB,EAAK,QAAU,KAAK,IAAIxvC,EAAQ,SAASoC,CAAQ,EAAE,CAAC,EACpDotC,EAAK,aAAexvC,EAAQ,SAAStG,CAAM,EAAE,EAAIsG,EAAQ,SAAStG,CAAM,EAAE,EAC1E81C,EAAK,OAAO,OAAS,EACrBA,EAAK,OAAO,CAAC,EAAI,EACjBA,EAAK,OAAO,CAAC,EAAIA,EAAK,aACtBA,EAAK,SAAWzG,GAAS,EAAGyG,EAAK,aAAcA,EAAK,OAAO,EAC3D,MAAM1J,EAAUxB,EAAOitF,EACvB/hF,EAAK,SACD1J,EAAUm8B,GACJ,EACAnD,GAAkBtvB,EAAK,QAAU/lC,EAAMq8B,CAAO,CAC5D,CACA,SAAS0rF,GAAiBxxH,EAASs4D,EAAMh0B,EAAM,CAC3C+sF,GAAerxH,EAAS,IAAKs4D,EAAMh0B,CAAI,EACvC+sF,GAAerxH,EAAS,IAAKs4D,EAAMh0B,CAAI,EACvCg0B,EAAK,KAAOh0B,CAChB,CClDA,SAASmtF,GAAUzxH,EAASuxD,EAAW,CACnC,MAAMmgE,EAAQ,CAAE,EAAG,EAAG,EAAG,CAAC,EAC1B,IAAIt3E,EAAUp6C,EACd,KAAOo6C,GAAWA,IAAYmX,GAC1B,GAAIwuB,GAAc3lC,CAAO,EACrBs3E,EAAM,GAAKt3E,EAAQ,WACnBs3E,EAAM,GAAKt3E,EAAQ,UACnBA,EAAUA,EAAQ,qBAEbA,EAAQ,UAAY,MAAO,CAQhC,MAAMu3E,EAAiBv3E,EAAQ,wBAC/BA,EAAUA,EAAQ,cAClB,MAAMw3E,EAAoBx3E,EAAQ,wBAClCs3E,EAAM,GAAKC,EAAe,KAAOC,EAAkB,KACnDF,EAAM,GAAKC,EAAe,IAAMC,EAAkB,GACrD,SACQx3E,aAAmB,mBAAoB,CAC5C,KAAM,CAAE,EAAA17D,EAAG,EAAAhX,CAAG,EAAG0yE,EAAQ,QAAO,EAChCs3E,EAAM,GAAKhzI,EACXgzI,EAAM,GAAKhqJ,EACX,IAAImrD,EAAM,KACNtrB,EAAS6yC,EAAQ,WACrB,KAAO,CAACvnB,GACAtrB,EAAO,UAAY,QACnBsrB,EAAMtrB,GAEVA,EAAS6yC,EAAQ,WAErBA,EAAUvnB,CACb,KAEG,OAGR,OAAO6+F,CACX,CC5CA,MAAMG,GAAa,CACf,MAAO,EACP,OAAQ,GACR,IAAK,CACT,EACA,SAASC,GAAYC,EAAMr4H,EAAQg4H,EAAQ,EAAG,CAC1C,IAAI3rE,EAAQ,EAWZ,GANIgsE,KAAQF,KACRE,EAAOF,GAAWE,CAAI,GAKtB,OAAOA,GAAS,SAAU,CAC1B,MAAM1sC,EAAW,WAAW0sC,CAAI,EAC5BA,EAAK,SAAS,IAAI,EAClBhsE,EAAQs/B,EAEH0sC,EAAK,SAAS,GAAG,EACtBA,EAAO1sC,EAAW,IAEb0sC,EAAK,SAAS,IAAI,EACvBhsE,EAASs/B,EAAW,IAAO,SAAS,gBAAgB,YAE/C0sC,EAAK,SAAS,IAAI,EACvBhsE,EAASs/B,EAAW,IAAO,SAAS,gBAAgB,aAGpD0sC,EAAO1sC,CAEd,CAID,OAAI,OAAO0sC,GAAS,WAChBhsE,EAAQrsD,EAASq4H,GAEdL,EAAQ3rE,CACnB,CCxCA,MAAM8oB,GAAgB,CAAC,EAAG,CAAC,EAC3B,SAASmjD,GAAc7rG,EAAQ8rG,EAAiB1pB,EAAc2pB,EAAa,CACvE,IAAIC,EAAmB,MAAM,QAAQhsG,CAAM,EAAIA,EAAS0oD,GACpDujD,EAAc,EACdC,EAAiB,EACrB,OAAI,OAAOlsG,GAAW,SAMlBgsG,EAAmB,CAAChsG,EAAQA,CAAM,EAE7B,OAAOA,GAAW,WACvBA,EAASA,EAAO,OACZA,EAAO,SAAS,GAAG,EACnBgsG,EAAmBhsG,EAAO,MAAM,GAAG,EAQnCgsG,EAAmB,CAAChsG,EAAQ0rG,GAAW1rG,CAAM,EAAIA,EAAS,GAAG,GAGrEisG,EAAcN,GAAYK,EAAiB,CAAC,EAAG5pB,EAAc2pB,CAAW,EACxEG,EAAiBP,GAAYK,EAAiB,CAAC,EAAGF,CAAe,EAC1DG,EAAcC,CACzB,CChCA,MAAMC,GAAe,CACjB,MAAO,CACH,CAAC,EAAG,CAAC,EACL,CAAC,EAAG,CAAC,CACR,EACD,KAAM,CACF,CAAC,EAAG,CAAC,EACL,CAAC,EAAG,CAAC,CACR,EACD,IAAK,CACD,CAAC,EAAG,CAAC,EACL,CAAC,EAAG,CAAC,CACR,EACD,IAAK,CACD,CAAC,EAAG,CAAC,EACL,CAAC,EAAG,CAAC,CACR,CACL,ECXMpzF,GAAQ,CAAE,EAAG,EAAG,EAAG,CAAC,EAC1B,SAASqzF,GAAcj4H,EAAQ,CAC3B,MAAO,YAAaA,GAAUA,EAAO,UAAY,MAC3CA,EAAO,QAAS,EAChB,CAAE,MAAOA,EAAO,YAAa,OAAQA,EAAO,aACtD,CACA,SAASk4H,GAAejhE,EAAW+G,EAAMl8D,EAAS,CAC9C,KAAM,CAAE,OAAQ+1H,EAAmBG,GAAa,GAAG,EAAKl2H,EAClD,CAAE,OAAA9B,EAASi3D,EAAW,KAAA/hB,EAAO,GAAG,EAAKpzC,EACrCq2H,EAAcjjF,IAAS,IAAM,SAAW,QACxCkiF,EAAQp3H,IAAWi3D,EAAYkgE,GAAUn3H,EAAQi3D,CAAS,EAAIryB,GAM9DwzF,EAAap4H,IAAWi3D,EACxB,CAAE,MAAOA,EAAU,YAAa,OAAQA,EAAU,YAAc,EAChEghE,GAAcj4H,CAAM,EACpBq4H,EAAgB,CAClB,MAAOphE,EAAU,YACjB,OAAQA,EAAU,YAC1B,EAKI+G,EAAK9oB,CAAI,EAAE,OAAO,OAAS,EAK3B,IAAI4hC,EAAa,CAAC9Y,EAAK9oB,CAAI,EAAE,YAC7B,MAAMojF,EAAaT,EAAiB,OACpC,QAASzzJ,EAAI,EAAGA,EAAIk0J,EAAYl0J,IAAK,CACjC,MAAMynD,EAAS6rG,GAAcG,EAAiBzzJ,CAAC,EAAGi0J,EAAcF,CAAW,EAAGC,EAAWD,CAAW,EAAGf,EAAMliF,CAAI,CAAC,EAC9G,CAAC4hC,GAAcjrD,IAAWmyC,EAAK9oB,CAAI,EAAE,oBAAoB9wE,CAAC,IAC1D0yG,EAAa,IAEjB9Y,EAAK9oB,CAAI,EAAE,OAAO9wE,CAAC,EAAIynD,CAC1B,CAKGirD,IACA9Y,EAAK9oB,CAAI,EAAE,YAAc4+B,GAAY9V,EAAK9oB,CAAI,EAAE,OAAQq/B,GAAcsjD,CAAgB,EAAG,CAAE,MAAO,EAAO,CAAA,EACzG75D,EAAK9oB,CAAI,EAAE,oBAAsB,CAAC,GAAG8oB,EAAK9oB,CAAI,EAAE,MAAM,GAE1D8oB,EAAK9oB,CAAI,EAAE,SAAWx1C,GAAM,EAAG,EAAGs+D,EAAK9oB,CAAI,EAAE,YAAY8oB,EAAK9oB,CAAI,EAAE,OAAO,CAAC,CAChF,CCpDA,SAASqjF,GAAQthE,EAAWj3D,EAASi3D,EAAW+G,EAAM,CAMlD,GAFAA,EAAK,EAAE,aAAe,EACtBA,EAAK,EAAE,aAAe,EAClBh+D,IAAWi3D,EAAW,CACtB,IAAI3uD,EAAOtI,EACX,KAAOsI,GAAQA,IAAS2uD,GACpB+G,EAAK,EAAE,cAAgB11D,EAAK,WAC5B01D,EAAK,EAAE,cAAgB11D,EAAK,UAC5BA,EAAOA,EAAK,YAEnB,CACD01D,EAAK,EAAE,aACHh+D,IAAWi3D,EAAYj3D,EAAO,YAAcA,EAAO,YACvDg+D,EAAK,EAAE,aACHh+D,IAAWi3D,EAAYj3D,EAAO,aAAeA,EAAO,aACxDg+D,EAAK,EAAE,gBAAkB/G,EAAU,YACnC+G,EAAK,EAAE,gBAAkB/G,EAAU,aAM/B,CAAW,EAAC,WAAa,cACrBA,GACAj3D,GACAA,IAAWi3D,GACXA,IAAc,SAAS,iBACvBA,IAAc,SAAS,kBACvBA,IAAc,SAAS,MACvB0N,GAAS,iBAAiB1N,CAAS,EAAE,WAAa,SAAU,sJAAsJ,CAG9N,CACA,SAASuhE,GAAsB9yH,EAAS+yH,EAAUz6D,EAAMl8D,EAAU,CAAA,EAAI,CAClE,MAAO,CACH,QAAUkoC,GAAS,CACfuuF,GAAQ7yH,EAAS5D,EAAQ,OAAQk8D,CAAI,EACrCk5D,GAAiBxxH,EAASs4D,EAAMh0B,CAAI,GAChCloC,EAAQ,QAAUA,EAAQ,SAC1Bo2H,GAAexyH,EAASs4D,EAAMl8D,CAAO,CAE5C,EACD,OAAQ,IAAM22H,EAASz6D,CAAI,CACnC,CACA,CC9CA,MAAM06D,GAAkB,IAAI,QACtBC,GAAkB,IAAI,QACtBC,GAAmB,IAAI,QACvBC,GAAa,IAAI,QACjBC,GAA0B,IAAI,QAC9BC,GAAkBrzH,GAAYA,IAAY,SAAS,iBAAmB,OAASA,EACrF,SAASszH,GAAWP,EAAU,CAAE,UAAAxhE,EAAY,SAAS,iBAAkB,iBAAAgiE,EAAmB,GAAO,GAAGn3H,CAAS,EAAG,GAAI,CAChH,GAAI,CAACm1D,EACD,OAAOrpD,GACX,IAAIsrH,EAAoBN,GAAiB,IAAI3hE,CAAS,EAKjDiiE,IACDA,EAAoB,IAAI,IACxBN,GAAiB,IAAI3hE,EAAWiiE,CAAiB,GAKrD,MAAMl7D,EAAO84D,KACPqC,EAAmBX,GAAsBvhE,EAAWwhE,EAAUz6D,EAAMl8D,CAAO,EAMjF,GALAo3H,EAAkB,IAAIC,CAAgB,EAKlC,CAACT,GAAgB,IAAIzhE,CAAS,EAAG,CACjC,MAAMmiE,EAAa,IAAM,CACrB,UAAW7rH,KAAW2rH,EAClB3rH,EAAQ,QAAQk6D,GAAU,SAAS,EAEvC1lB,GAAM,UAAU0nC,CAAS,CACrC,EACcA,EAAY,IAAM,CACpB,UAAWl8E,KAAW2rH,EAClB3rH,EAAQ,OAAM,CAE9B,EACcghF,EAAW,IAAMxsC,GAAM,KAAKq3E,CAAU,EAC5CV,GAAgB,IAAIzhE,EAAWs3B,CAAQ,EACvC,MAAMvuF,EAAS+4H,GAAe9hE,CAAS,EACvC,OAAO,iBAAiB,SAAUs3B,CAAQ,EACtCt3B,IAAc,SAAS,iBACvB0hE,GAAgB,IAAI1hE,EAAW9T,GAAO8T,EAAWs3B,CAAQ,CAAC,EAE9DvuF,EAAO,iBAAiB,SAAUuuF,CAAQ,EAC1CA,GACH,CAID,GAAI0qC,GAAoB,CAACH,GAAwB,IAAI7hE,CAAS,EAAG,CAC7D,MAAMs3B,EAAWmqC,GAAgB,IAAIzhE,CAAS,EAExC5sC,EAAO,CACT,MAAO4sC,EAAU,YACjB,OAAQA,EAAU,YAC9B,EACQ4hE,GAAW,IAAI5hE,EAAW5sC,CAAI,EAE9B,MAAMgvG,EAAwB,IAAM,CAChC,MAAMpzG,EAAWgxC,EAAU,YACrB/wC,EAAY+wC,EAAU,cACxB5sC,EAAK,QAAUpE,GAAYoE,EAAK,SAAWnE,KAC3CqoE,IACAlkE,EAAK,MAAQpE,EACboE,EAAK,OAASnE,EAE9B,EAEcozG,EAAwBv3E,GAAM,KAAKs3E,EAAuB,EAAI,EACpEP,GAAwB,IAAI7hE,EAAWqiE,CAAqB,CAC/D,CACD,MAAM/qC,EAAWmqC,GAAgB,IAAIzhE,CAAS,EAC9C,OAAAlV,GAAM,KAAKwsC,EAAU,GAAO,EAAI,EACzB,IAAM,CACT3lB,GAAY2lB,CAAQ,EAIpB,MAAMgrC,EAAkBX,GAAiB,IAAI3hE,CAAS,EAItD,GAHI,CAACsiE,IAELA,EAAgB,OAAOJ,CAAgB,EACnCI,EAAgB,MAChB,OAIJ,MAAMC,EAAiBd,GAAgB,IAAIzhE,CAAS,EACpDyhE,GAAgB,OAAOzhE,CAAS,EAC5BuiE,IACAT,GAAe9hE,CAAS,EAAE,oBAAoB,SAAUuiE,CAAc,EACtEb,GAAgB,IAAI1hE,CAAS,MAC7B,OAAO,oBAAoB,SAAUuiE,CAAc,GAGvD,MAAMF,EAAwBR,GAAwB,IAAI7hE,CAAS,EAC/DqiE,IACA1wD,GAAY0wD,CAAqB,EACjCR,GAAwB,OAAO7hE,CAAS,GAE5C4hE,GAAW,OAAO5hE,CAAS,CACnC,CACA,CCxGA,MAAMwiE,GAAU,CACZ,CAACzB,GAAa,MAAO,OAAO,EAC5B,CAACA,GAAa,KAAM,MAAM,EAC1B,CAACA,GAAa,IAAK,OAAO,EAC1B,CAACA,GAAa,IAAK,SAAS,CAChC,EACM0B,GAAmB,CACrB,MAAO,EACP,IAAK,CACT,EACA,SAASC,GAAkBz0J,EAAG,CAC1B,MAAM00J,EAAQ10J,EAAE,KAAM,EAAC,MAAM,KAAK,EAClC,GAAI00J,EAAM,SAAW,EACjB,OACJ,MAAMlwJ,EAAIgwJ,GAAiBE,EAAM,CAAC,CAAC,EAC7Bp2I,EAAIk2I,GAAiBE,EAAM,CAAC,CAAC,EACnC,GAAI,EAAAlwJ,IAAM,QAAa8Z,IAAM,QAE7B,MAAO,CAAC9Z,EAAG8Z,CAAC,CAChB,CACA,SAASq2I,GAAgBhuG,EAAQ,CAC7B,GAAIA,EAAO,SAAW,EAClB,OACJ,MAAMhrB,EAAS,CAAA,EACf,UAAW+K,KAAQigB,EACf,GAAI,MAAM,QAAQjgB,CAAI,EAClB/K,EAAO,KAAK+K,CAAI,UAEX,OAAOA,GAAS,SAAU,CAC/B,MAAMw/D,EAASuuD,GAAkB/tH,CAAI,EACrC,GAAI,CAACw/D,EACD,OACJvqE,EAAO,KAAKuqE,CAAM,CACrB,KAEG,QAGR,OAAOvqE,CACX,CACA,SAASi5H,GAAcjuG,EAAQkuG,EAAQ,CACnC,MAAMC,EAAaH,GAAgBhuG,CAAM,EACzC,GAAI,CAACmuG,EACD,MAAO,GACX,QAAS51J,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,MAAMsQ,EAAIslJ,EAAW51J,CAAC,EAChB0X,EAAIi+I,EAAO31J,CAAC,EAClB,GAAIsQ,EAAE,CAAC,IAAMoH,EAAE,CAAC,GAAKpH,EAAE,CAAC,IAAMoH,EAAE,CAAC,EAC7B,MAAO,EACd,CACD,MAAO,EACX,CACA,SAASm+I,GAA0BpuG,EAAQ,CACvC,GAAI,CAACA,EACD,MAAO,CAAE,WAAY,aAAc,SAAU,cAAc,EAE/D,SAAW,CAACkuG,EAAQ5zH,CAAI,IAAKszH,GACzB,GAAIK,GAAcjuG,EAAQkuG,CAAM,EAC5B,MAAO,CAAE,WAAY,GAAG5zH,CAAI,MAAO,SAAU,GAAGA,CAAI,QAIhE,CCjEA,MAAM+zH,GAAgB,IAAI,IAC1B,SAASC,GAAuBr4H,EAAS,CACrC,MAAM88E,EAAc,CAAE,MAAO,GACvBd,EAASk7C,GAAYh7D,GAAS,CAChC4gB,EAAY,MAAQ5gB,EAAKl8D,EAAQ,IAAI,EAAE,SAAW,GACrD,EAAEA,CAAO,EACV,MAAO,CAAE,YAAA88E,EAAa,OAAAd,EAC1B,CACA,SAASs8C,GAAY,CAAE,OAAA3qH,EAAQ,UAAAwnD,EAAW,GAAGn1D,CAAO,EAAI,CACpD,KAAM,CAAE,KAAAozC,CAAM,EAAGpzC,EACb2N,IACAwnD,EAAYxnD,GAChB,IAAI4qH,EAAiBH,GAAc,IAAIjjE,CAAS,EAC3CojE,IACDA,EAAiB,IAAI,IACrBH,GAAc,IAAIjjE,EAAWojE,CAAc,GAE/C,MAAMjlC,EAAYtzF,EAAQ,QAAU,OACpC,IAAIw4H,EAAcD,EAAe,IAAIjlC,CAAS,EACzCklC,IACDA,EAAc,CAAA,EACdD,EAAe,IAAIjlC,EAAWklC,CAAW,GAE7C,MAAMC,EAAUrlF,GAAQpzC,EAAQ,QAAU,IAAI,KAAK,GAAG,EACtD,OAAKw4H,EAAYC,CAAO,IAChBz4H,EAAQ,QAAU80H,GAAqB90H,EAAQ,MAAM,EACvCm4H,GAA0Bn4H,EAAQ,MAAM,EAElDw4H,EAAYC,CAAO,EAAI,IAAI,aAAa,CACpC,QAASz4H,EAAQ,OACjB,KAAAozC,CACpB,CAAiB,EAGDolF,EAAYC,CAAO,EAAIJ,GAAuB,CAC1C,UAAAljE,EACA,GAAGn1D,CACvB,CAAiB,EAGA80H,GAAoB,EACzB0D,EAAYC,CAAO,EAAI,IAAI,eAAe,CACtC,OAAQtjE,EACR,KAAA/hB,CAChB,CAAa,EAGDolF,EAAYC,CAAO,EAAIJ,GAAuB,CAC1C,UAAAljE,EACA,GAAGn1D,CACnB,CAAa,GAGFw4H,EAAYC,CAAO,CAC9B,CCrDA,SAASC,GAAkB98C,EAAW57E,EAAS,CAC3C,MAAMm1E,EAAWmjD,GAAYt4H,CAAO,EAC9BoiE,EAAQpiE,EAAQ,OAChBm4H,GAA0Bn4H,EAAQ,MAAM,EACxC,OAOA24H,EAAY34H,EAAQ,OACpB80H,GAAqB90H,EAAQ,MAAM,GAAK,CAAC,CAACoiE,EAC1C0yD,KACN,OAAOl5C,EAAU,eAAe,CAC5B,SAAU+8C,EAAYxjD,EAAW,OACjC,GAAI/S,GACAu2D,GAAa,CACb,WAAYv2D,EAAM,WAClB,SAAUA,EAAM,QAC5B,EACQ,QAAUw2D,IACNA,EAAe,MAAK,EACbzwC,GAAiBx7C,GAAa,CACjCisF,EAAe,KACXA,EAAe,kBAAoBjsF,CAC1C,EAAEwoC,CAAQ,EAEvB,CAAK,CACL,CC9BA,SAAS0jD,GAAkB74H,EAAS,CAChC,OAAOA,IAAYA,EAAQ,QAAUA,EAAQ,OACjD,CCGA,SAAS84H,GAAmBnC,EAAU,CAClC,OAAOA,EAAS,SAAW,CAC/B,CACA,SAASoC,GAAiBpC,EAAU32H,EAAS,CACzC,OAAI84H,GAAmBnC,CAAQ,GAAKkC,GAAkB74H,CAAO,EAClDk3H,GAAYh7D,GAAS,CACxBy6D,EAASz6D,EAAKl8D,EAAQ,IAAI,EAAE,SAAUk8D,CAAI,CAC7C,EAAEl8D,CAAO,EAGHmoF,GAAgBwuC,EAAU2B,GAAYt4H,CAAO,CAAC,CAE7D,CCjBA,SAAS0vF,GAAOinC,EAAU,CAAE,KAAAvjF,EAAO,IAAK,UAAA+hB,EAAY,SAAS,iBAAkB,GAAGn1D,CAAS,EAAG,GAAI,CAC9F,GAAI,CAACm1D,EACD,OAAOrpD,GACX,MAAMsvE,EAAsB,CAAE,KAAAhoC,EAAM,UAAA+hB,EAAW,GAAGn1D,CAAO,EACzD,OAAO,OAAO22H,GAAa,WACrBoC,GAAiBpC,EAAUv7C,CAAmB,EAC9Cs9C,GAAkB/B,EAAUv7C,CAAmB,CACzD,CCFA,MAAM49C,GAA2B,KAAO,CACpC,QAASllD,GAAY,CAAC,EACtB,QAASA,GAAY,CAAC,EACtB,gBAAiBA,GAAY,CAAC,EAC9B,gBAAiBA,GAAY,CAAC,CAClC,GACMmlD,GAAgB7kE,GACbA,EAEE,CAACA,EAAI,QADD,GAGf,SAAS8kE,GAAqB9lF,EAAMpzC,EAASm1D,EAAWj3D,EAAQ,CAC5D,MAAO,CAGH,QAAU09E,GAAc,CACpB,IAAIjnB,EACJ,MAAMrzD,EAAQ,IAAM,CAKhB,GAAI23H,GAAa9jE,CAAS,GAAK8jE,GAAa/6H,CAAM,EAAG,CACjD0lF,GAAU,KAAKtiF,CAAK,EACpB,MACH,CACDqzD,EAAU+6B,GAAO9T,EAAW,CACxB,GAAG57E,EACH,KAAAozC,EACA,UAAW+hB,GAAW,SAAW,OACjC,OAAQj3D,GAAQ,SAAW,MAC/C,CAAiB,CACjB,EACY,OAAA0lF,GAAU,KAAKtiF,CAAK,EACb,IAAM,CACTuiF,GAAgBviF,CAAK,EACrBqzD,KAChB,CACS,EACD,MAAO,CAAC,EAAG,CAAC,EACZ,UAAW,CAAC,EAAG,CAAC,EAChB,KAAO16E,GAAMA,EACb,SAAU,CAClB,CACA,CACA,SAASk/I,GAAoBj7H,EAAQ6rB,EAAQ,CACzC,OAAI,OAAO,OAAW,IACX,GACJ7rB,EACDu6E,MAA0B,CAAC,CAAC0/C,GAA0BpuG,CAAM,EAC5DyuD,IACV,CACA,SAAS4gD,GAAU,CAAE,UAAAjkE,EAAW,OAAAj3D,EAAQ,GAAG8B,CAAO,EAAK,CAAA,EAAI,CACvD,MAAM2V,EAASgvF,GAAYq0B,EAAwB,EAC/CG,GAAoBj7H,EAAQ8B,EAAQ,MAAM,IAC1C2V,EAAO,gBAAgB,WAAaujH,GAAqB,IAAKl5H,EAASm1D,EAAWj3D,CAAM,EACxFyX,EAAO,gBAAgB,WAAaujH,GAAqB,IAAKl5H,EAASm1D,EAAWj3D,CAAM,GAE5F,MAAMm7H,EAAkBllE,SAAO,IAAI,EAC7BmlE,EAAanlE,SAAO,EAAK,EACzB7yD,EAAQuzD,EAAAA,YAAY,KACtBwkE,EAAgB,QAAU3pC,GAAO,CAAC6pC,EAAW,CAAE,EAAAj3I,EAAG,EAAAhX,KAAS,CACvDqqC,EAAO,QAAQ,IAAIrzB,EAAE,OAAO,EAC5BqzB,EAAO,gBAAgB,IAAIrzB,EAAE,QAAQ,EACrCqzB,EAAO,QAAQ,IAAIrqC,EAAE,OAAO,EAC5BqqC,EAAO,gBAAgB,IAAIrqC,EAAE,QAAQ,CACjD,EAAW,CACC,GAAG00B,EACH,UAAWm1D,GAAW,SAAW,OACjC,OAAQj3D,GAAQ,SAAW,MACvC,CAAS,EACM,IAAM,CACTm7H,EAAgB,UAAO,CACnC,GACO,CAAClkE,EAAWj3D,EAAQ,KAAK,UAAU8B,EAAQ,MAAM,CAAC,CAAC,EACtD,OAAA0mG,GAA0B,IAAM,CAE5B,GADA4yB,EAAW,QAAU,GACjBL,GAAa9jE,CAAS,GAAK8jE,GAAa/6H,CAAM,EAAG,CACjDo7H,EAAW,QAAU,GACrB,MACH,KAEG,QAAOh4H,EAAK,CAExB,EAAO,CAACA,CAAK,CAAC,EACVgzD,EAAAA,UAAU,IAAM,CACZ,GAAI,CAACglE,EAAW,QACZ,OAGJ,IAAI3kE,EACJ,MAAM6kE,EAAW,IAAM,CACnB,MAAMC,EAAmBR,GAAa9jE,CAAS,EACzCukE,EAAgBT,GAAa/6H,CAAM,EACzCyjE,GAAU,CAAC83D,EAAkB,4CAA6C,gBAAgB,EAC1F93D,GAAU,CAAC+3D,EAAe,yCAA0C,gBAAgB,EAChF,CAACD,GAAoB,CAACC,IACtB/kE,EAAUrzD,EAAK,EAC/B,EACQ,OAAAsiF,GAAU,KAAK41C,CAAQ,EAChB,IAAM,CACT31C,GAAgB21C,CAAQ,EACxB7kE,KACZ,CACA,EAAO,CAACrzD,CAAK,CAAC,EACHqU,CACX,CC5FA,SAASgkH,GAAehtC,EAAS,CAC7B,MAAM9nF,EAAQ8/F,GAAY,IAAM7wB,GAAY6Y,CAAO,CAAC,EAM9C,CAAE,SAAA0X,CAAQ,EAAK3B,EAAU,WAAC79B,EAAmB,EACnD,GAAIw/B,EAAU,CACV,KAAM,EAAGu1B,CAAS,EAAI/lE,EAAQ,SAAC84B,CAAO,EACtCr4B,EAAS,UAAC,IAAMzvD,EAAM,GAAG,SAAU+0H,CAAS,EAAG,CAAA,CAAE,CACpD,CACD,OAAO/0H,CACX,CC/BA,SAASg1H,GAAuBlkH,EAAQmkH,EAAe,CAInD,MAAMj1H,EAAQ80H,GAAeG,EAAa,CAAE,EAOtChG,EAAc,IAAMjvH,EAAM,IAAIi1H,EAAe,CAAA,EAKnD,OAAAhG,IAKAptB,GAA0B,IAAM,CAC5B,MAAMqzB,EAAiB,IAAM95E,GAAM,UAAU6zE,EAAa,GAAO,EAAI,EAC/Dx6G,EAAgB3D,EAAO,IAAK17B,GAAMA,EAAE,GAAG,SAAU8/I,CAAc,CAAC,EACtE,MAAO,IAAM,CACTzgH,EAAc,QAAS2jE,GAAgBA,EAAa,CAAA,EACpDnW,GAAYgtD,CAAW,CACnC,CACA,CAAK,EACMjvH,CACX,CC/BA,SAASm1H,GAAYC,EAAS,CAK1Br9C,GAAoB,QAAU,GAC9Bq9C,IACA,MAAMp1H,EAAQg1H,GAAuBj9C,GAAoB,QAASq9C,CAAO,EAIzE,OAAAr9C,GAAoB,QAAU,OACvB/3E,CACX,CCXA,SAASq1H,GAAa15H,EAAO25H,EAAyBC,EAAkBp6H,EAAS,CAC7E,GAAI,OAAOQ,GAAU,WACjB,OAAOw5H,GAAYx5H,CAAK,EAS5B,GAHoB45H,IAAqB,QACrC,CAAC,MAAM,QAAQA,CAAgB,GAC/B,OAAOD,GAA4B,WAEnC,OAAOE,GAAgB75H,EAAO25H,EAAyBC,EAAkBp6H,CAAO,EAGpF,MAAMs6H,EAAc,OAAOH,GAA4B,WACjDA,EACArmG,GAAUqmG,EAHIC,EAGkCp6H,CAAO,EACvDjB,EAAS,MAAM,QAAQyB,CAAK,EAC5B+5H,GAAiB/5H,EAAO85H,CAAW,EACnCC,GAAiB,CAAC/5H,CAAK,EAAG,CAAC,CAAC6wE,CAAM,IAAMipD,EAAYjpD,CAAM,CAAC,EAC3DmpD,EAAmB,MAAM,QAAQh6H,CAAK,EAEtC,OADAA,EAAM,WAEZ,OAAIg6H,GACA,CAACA,EAAgB,eACjB,OAAOL,GAA4B,YACnC,MAAM,QAAQC,CAAgB,GAC9Bp6H,GAAS,QAAU,KACnBjB,EAAO,WAAa,CAChB,GAAGy7H,EACH,MAAOL,EACP,UAAWC,EACX,cAAe,GACf,GAAIp6H,GAAS,KAAO,CAAE,KAAMA,EAAQ,IAAM,EAAG,EACzD,GAEWjB,CACX,CACA,SAASw7H,GAAiB5kH,EAAQ2kH,EAAa,CAC3C,MAAMjpD,EAASszB,GAAY,IAAM,CAAA,CAAE,EACnC,OAAOk1B,GAAuBlkH,EAAQ,IAAM,CACxC07D,EAAO,OAAS,EAChB,MAAMjF,EAAYz2D,EAAO,OACzB,QAASrzC,EAAI,EAAGA,EAAI8pG,EAAW9pG,IAC3B+uG,EAAO/uG,CAAC,EAAIqzC,EAAOrzC,CAAC,EAAE,IAAG,EAE7B,OAAOg4J,EAAYjpD,CAAM,CACjC,CAAK,CACL,CACA,SAASgpD,GAAgB5xC,EAAYC,EAAY+xC,EAAWz6H,EAAS,CAIjE,MAAMyV,EAAOkvF,GAAY,IAAM,OAAO,KAAK81B,CAAS,CAAC,EAC/ClwD,EAASo6B,GAAY,KAAO,CAAA,EAAG,EACrC,UAAW5/F,KAAO0Q,EACd80D,EAAOxlE,CAAG,EAAIm1H,GAAazxC,EAAYC,EAAY+xC,EAAU11H,CAAG,EAAG/E,CAAO,EAE9E,OAAOuqE,CACX,CC3DA,SAASmwD,GAAe/sH,EAAQ3N,EAAU,GAAI,CAC1C,KAAM,CAAE,SAAAqkG,CAAQ,EAAK3B,EAAU,WAAC79B,EAAmB,EAC7C81D,EAAgB,IAAOn7C,GAAc7xE,CAAM,EAAIA,EAAO,IAAG,EAAKA,EAEpE,GAAI02F,EACA,OAAO61B,GAAaS,CAAa,EAErC,MAAM91H,EAAQ80H,GAAegB,EAAa,CAAE,EAC5Cr0B,OAAAA,EAAAA,mBAAmB,IACR1d,GAAa/jF,EAAO8I,EAAQ3N,CAAO,EAC3C,CAAC6E,EAAO,KAAK,UAAU7E,CAAO,CAAC,CAAC,EAC5B6E,CACX,CChBA,SAAS+1H,GAAUjtH,EAAQ3N,EAAU,GAAI,CACrC,OAAO06H,GAAe/sH,EAAQ,CAAE,KAAM,SAAU,GAAG3N,CAAO,CAAE,CAChE,CCLA,SAAS66H,GAAepqD,EAAW,CAC/B,OAAO,OAAOA,GAAc,UAAY,CAAC,MAAM,QAAQA,CAAS,CACpE,CCCA,SAASqqD,GAAgB9rH,EAASyhE,EAAWvV,EAAOsoB,EAAe,CAC/D,OAAIx0E,GAAW,KACJ,GAEP,OAAOA,GAAY,UAAY6rH,GAAepqD,CAAS,EAChD6S,GAAgBt0E,EAASksD,EAAOsoB,CAAa,EAE/Cx0E,aAAmB,SACjB,MAAM,KAAKA,CAAO,EAEpB,MAAM,QAAQA,CAAO,EACnBA,EAAQ,OAAQ,GAAM,GAAK,IAAI,EAG/B,CAACA,CAAO,CAEvB,CCnBA,SAAS+rH,GAAwBj+G,EAAUhJ,EAAQigE,EAAa,CAC5D,OAAOj3D,GAAYhJ,EAAS,GAAKigE,EAAcjgE,CACnD,CCEA,SAASknH,GAAah9E,EAAS3xC,EAAMgB,EAAM4tH,EAAQ,CAC/C,OAAI,OAAO5uH,GAAS,SACTA,EAEFA,EAAK,WAAW,GAAG,GAAKA,EAAK,WAAW,GAAG,EACzC,KAAK,IAAI,EAAG2xC,EAAU,WAAW3xC,CAAI,CAAC,EAExCA,IAAS,IACPgB,EAEFhB,EAAK,WAAW,GAAG,EACjB,KAAK,IAAI,EAAGgB,EAAO,WAAWhB,EAAK,MAAM,CAAC,CAAC,CAAC,EAG5C4uH,EAAO,IAAI5uH,CAAI,GAAK2xC,CAEnC,CCjBA,SAASk9E,GAAeC,EAAUxkF,EAAWhN,EAAS,CAClD,QAASrnE,EAAI,EAAGA,EAAI64J,EAAS,OAAQ74J,IAAK,CACtC,MAAMu9E,EAAWs7E,EAAS74J,CAAC,EACvBu9E,EAAS,GAAKlJ,GAAakJ,EAAS,GAAKlW,IACzC43B,GAAW45D,EAAUt7E,CAAQ,EAE7Bv9E,IAEP,CACL,CACA,SAAS84J,GAAaD,EAAU1qD,EAAWxrC,EAAQlb,EAAQ4sB,EAAWhN,EAAS,CAM3EuxF,GAAeC,EAAUxkF,EAAWhN,CAAO,EAC3C,QAASrnE,EAAI,EAAGA,EAAImuG,EAAU,OAAQnuG,IAClC64J,EAAS,KAAK,CACV,MAAO1qD,EAAUnuG,CAAC,EAClB,GAAI2oG,GAAUt0B,EAAWhN,EAAS5f,EAAOznD,CAAC,CAAC,EAC3C,OAAQ8hG,GAAoBn/B,EAAQ3iE,CAAC,CACjD,CAAS,CAET,CClBA,SAAS+4J,GAAehyF,EAAOv1B,EAAQwnH,EAAmB,EAAG,CACzD,MAAMC,EAAaznH,EAAS,EAAIA,EAASwnH,EACzC,QAASh5J,EAAI,EAAGA,EAAI+mE,EAAM,OAAQ/mE,IAC9B+mE,EAAM/mE,CAAC,EAAI+mE,EAAM/mE,CAAC,EAAIi5J,CAE9B,CCdA,SAASC,GAAc5zJ,EAAG8Z,EAAG,CACzB,OAAI9Z,EAAE,KAAO8Z,EAAE,GACP9Z,EAAE,QAAU,KACL,EACP8Z,EAAE,QAAU,KACL,GACJ,EAGA9Z,EAAE,GAAK8Z,EAAE,EAExB,CCFA,MAAM+5I,GAAuB,YACvBC,GAAa,GACnB,SAASC,GAA6BR,EAAU,CAAE,kBAAA56C,EAAoB,CAAE,EAAE,GAAGq7C,GAAuB,CAAA,EAAI1gE,EAAO2gE,EAAY,CACvH,MAAMC,EAAkBv7C,EAAkB,UAAY,GAChDw7C,EAAuB,IAAI,IAC3BC,EAAY,IAAI,IAChBC,EAAe,CAAA,EACfC,EAAa,IAAI,IACvB,IAAI/G,EAAW,EACXr4C,EAAc,EACd1I,EAAgB,EAMpB,QAAS9xG,EAAI,EAAGA,EAAI64J,EAAS,OAAQ74J,IAAK,CACtC,MAAM65J,EAAUhB,EAAS74J,CAAC,EAI1B,GAAI,OAAO65J,GAAY,SAAU,CAC7BD,EAAW,IAAIC,EAASr/C,CAAW,EACnC,QACH,SACQ,CAAC,MAAM,QAAQq/C,CAAO,EAAG,CAC9BD,EAAW,IAAIC,EAAQ,KAAMnB,GAAal+C,EAAaq/C,EAAQ,GAAIhH,EAAU+G,CAAU,CAAC,EACxF,QACH,CACD,GAAI,CAACltH,EAASyhE,EAAW+C,EAAa,CAAE,CAAA,EAAI2oD,EAKxC3oD,EAAW,KAAO,SAClBsJ,EAAck+C,GAAal+C,EAAatJ,EAAW,GAAI2hD,EAAU+G,CAAU,GAM/E,IAAIE,EAAc,EAClB,MAAMC,EAAuB,CAACC,EAAgB3+C,EAAiB4+C,EAAeC,EAAe,EAAGC,EAAc,IAAM,CAChH,MAAMC,EAAuBC,GAAgBL,CAAc,EACrD,CAAE,MAAA9rH,EAAQ,EAAG,MAAA64B,EAAQopC,GAAciqD,CAAoB,EAAG,KAAA58H,EAAOygF,EAAkB,MAAQ,YAAa,OAAAzsE,EAAQ,WAAAo/D,GAAY,YAAAa,GAAc,EAAG,GAAG6oD,EAAqB,EAAGj/C,EAC9K,GAAI,CAAE,KAAAxZ,GAAOoc,EAAkB,MAAQ,UAAW,SAAAzjE,EAAU,EAAG6gE,EAI/D,MAAMk/C,EAAkB,OAAOrsH,GAAU,WACnCA,EAAMgsH,EAAcC,CAAW,EAC/BjsH,EAIAssH,EAAeJ,EAAqB,OACpCnvD,EAAkB4L,GAAYr5E,CAAI,EAClCA,EACA+7H,IAAa/7H,GAAQ,WAAW,EACtC,GAAIg9H,GAAgB,GAAKvvD,EAAiB,CAOtC,IAAIwvD,GAAgB,IACpB,GAAID,IAAiB,GACjBE,GAAuBN,CAAoB,EAAG,CAC9C,MAAM/yE,GAAQ+yE,EAAqB,CAAC,EAAIA,EAAqB,CAAC,EAC9DK,GAAgB,KAAK,IAAIpzE,EAAK,CACjC,CACD,MAAMszE,GAAmB,CACrB,GAAG18C,EACH,GAAGq8C,EACvB,EACoB9/G,KAAa,SACbmgH,GAAiB,SAAW16D,GAAsBzlD,EAAQ,GAE9D,MAAMogH,GAAe5vD,GAAsB2vD,GAAkBF,GAAexvD,CAAe,EAC3FpJ,GAAO+4D,GAAa,KACpBpgH,GAAWogH,GAAa,QAC3B,CACDpgH,KAAaA,GAAWg/G,GACxB,MAAMnlF,EAAYmmC,EAAc+/C,EAI5BxzF,EAAM,SAAW,GAAKA,EAAM,CAAC,IAAM,IACnCA,EAAM,CAAC,EAAI,GAKf,MAAM8zF,EAAY9zF,EAAM,OAASqzF,EAAqB,OAiBtD,GAhBAS,EAAY,GAAK7qD,GAAWjpC,EAAO8zF,CAAS,EAM5CT,EAAqB,SAAW,GAC5BA,EAAqB,QAAQ,IAAI,EAMjC5oH,GACA4tD,GAAQ5tD,EAAS4nH,GAAY,kCAAkC5nH,CAAM,sDAAsD4nH,EAAU,iDAAiD,EAEtL5nH,GAAUA,EAAS4nH,GAAY,CAM/B,MAAMJ,GAAmBx+G,GAAW,EAAIi3D,GAAcj3D,GAAW,EACjEA,GAAWi+G,GAAwBj+G,GAAUhJ,EAAQigE,EAAW,EAChE,MAAMqpD,GAAoB,CAAC,GAAGV,CAAoB,EAC5CW,GAAgB,CAAC,GAAGh0F,CAAK,EAC/B86B,GAAO,MAAM,QAAQA,EAAI,EAAI,CAAC,GAAGA,EAAI,EAAI,CAACA,EAAI,EAC9C,MAAMm5D,GAAe,CAAC,GAAGn5D,EAAI,EAUvBo5D,GAAarqD,KAAe,WAAaA,KAAe,SAC9D,IAAIsqD,GAAmBJ,GACnBK,GAAeH,GACfC,KACAC,GAAmB,CAAC,GAAGJ,EAAiB,EAAE,QAAO,EAC7ClqD,KAAe,YACfuqD,GAAe,CAAC,GAAGH,EAAY,EAC1B,QAAS,EACT,IAAKr8J,IAAM,OAAOA,IAAM,WACvB+jE,GAAc/jE,EAAC,EACfA,EAAC,IAGf,QAASy8J,GAAc,EAAGA,GAAc5pH,EAAQ4pH,KAAe,CAC3D,MAAMC,GAAYJ,IAAcG,GAAc,IAAM,EAC9CE,GAAgBD,GAChBH,GACAJ,GACAS,EAAWF,GAAYF,GAAeH,GACtCQ,IAAmBJ,GAAc,IAAM,EAAIpC,IAM7CA,GAAmB,IACnBoB,EAAqB,KAAKA,EAAqBA,EAAqB,OAAS,CAAC,CAAC,EAC/ErzF,EAAM,KAAKy0F,EAAe,EAC1B35D,GAAK,KAAK,QAAQ,GAEtBu4D,EAAqB,KAAK,GAAGkB,EAAa,EAC1C,QAASG,GAAgB,EAAGA,GAAgBH,GAAc,OAAQG,KAC9D10F,EAAM,KAAKg0F,GAAcU,EAAa,EAAID,EAAe,EACzD35D,GAAK,KAAK45D,KAAkB,EACtB,SACA35D,GAAoBy5D,EAAUE,GAAgB,CAAC,CAAC,CAE7D,CACD1C,GAAehyF,EAAOv1B,EAAQwnH,EAAgB,CACjD,CACD,MAAM0C,EAAarnF,EAAY75B,GAI/Bs+G,GAAamB,EAAeG,EAAsBv4D,GAAM96B,EAAOsN,EAAWqnF,CAAU,EACpF5B,EAAc,KAAK,IAAIS,EAAkB//G,GAAUs/G,CAAW,EAC9DhoD,EAAgB,KAAK,IAAI4pD,EAAY5pD,CAAa,CAC9D,EACQ,GAAIoL,GAAcxwE,CAAO,EAAG,CACxB,MAAMivH,EAAkBC,GAAmBlvH,EAASgtH,CAAS,EAC7DK,EAAqB5rD,EAAW+C,EAAY2qD,GAAiB,UAAWF,CAAe,CAAC,CAC3F,KACI,CACD,MAAMG,EAAWtD,GAAgB9rH,EAASyhE,EAAWvV,EAAO+gE,CAAY,EAClEQ,EAAc2B,EAAS,OAI7B,QAASC,EAAe,EAAGA,EAAe5B,EAAa4B,IAAgB,CAInE5tD,EAAYA,EACZ+C,EAAaA,EACb,MAAM8qD,EAAcF,EAASC,CAAY,EACnCJ,EAAkBC,GAAmBI,EAAatC,CAAS,EACjE,UAAWj3H,KAAO0rE,EACd4rD,EAAqB5rD,EAAU1rE,CAAG,EAAG24E,GAAmBlK,EAAYzuE,CAAG,EAAGo5H,GAAiBp5H,EAAKk5H,CAAe,EAAGI,EAAc5B,CAAW,CAElJ,CACJ,CACDtH,EAAWr4C,EACXA,GAAes/C,CAClB,CAID,OAAAJ,EAAU,QAAQ,CAACuC,EAAgB36H,IAAY,CAC3C,UAAWmB,KAAOw5H,EAAgB,CAC9B,MAAMhC,EAAgBgC,EAAex5H,CAAG,EAIxCw3H,EAAc,KAAKf,EAAa,EAChC,MAAM/qD,EAAY,CAAA,EACZ+tD,EAAc,CAAA,EACdC,EAAc,CAAA,EAKpB,QAASn8J,EAAI,EAAGA,EAAIi6J,EAAc,OAAQj6J,IAAK,CAC3C,KAAM,CAAE,GAAAC,EAAI,MAAAsiC,EAAO,OAAAogC,CAAM,EAAKs3F,EAAcj6J,CAAC,EAC7CmuG,EAAU,KAAK5rE,CAAK,EACpB25H,EAAY,KAAK7xF,GAAS,EAAGynC,EAAe7xG,CAAE,CAAC,EAC/Ck8J,EAAY,KAAKx5F,GAAU,SAAS,CACvC,CAMGu5F,EAAY,CAAC,IAAM,IACnBA,EAAY,QAAQ,CAAC,EACrB/tD,EAAU,QAAQA,EAAU,CAAC,CAAC,EAC9BguD,EAAY,QAAQhD,EAAoB,GAOxC+C,EAAYA,EAAY,OAAS,CAAC,IAAM,IACxCA,EAAY,KAAK,CAAC,EAClB/tD,EAAU,KAAK,IAAI,GAElBsrD,EAAqB,IAAIn4H,CAAO,GACjCm4H,EAAqB,IAAIn4H,EAAS,CAC9B,UAAW,CAAE,EACb,WAAY,CAAE,CAClC,CAAiB,EAEL,MAAM6gE,EAAas3D,EAAqB,IAAIn4H,CAAO,EACnD6gE,EAAW,UAAU1/D,CAAG,EAAI0rE,EAO5B,KAAM,CAAE,KAAMiuD,EAAO,GAAGC,CAA0B,EAAKp+C,EACvD9b,EAAW,WAAW1/D,CAAG,EAAI,CACzB,GAAG45H,EACH,SAAUvqD,EACV,KAAMqqD,EACN,MAAOD,EACP,GAAG5C,CACnB,CACS,CACT,CAAK,EACMG,CACX,CACA,SAASmC,GAAmBlvH,EAASgtH,EAAW,CAC5C,OAACA,EAAU,IAAIhtH,CAAO,GAAKgtH,EAAU,IAAIhtH,EAAS,CAAA,CAAE,EAC7CgtH,EAAU,IAAIhtH,CAAO,CAChC,CACA,SAASmvH,GAAiB95H,EAAM23H,EAAW,CACvC,OAAKA,EAAU33H,CAAI,IACf23H,EAAU33H,CAAI,EAAI,IACf23H,EAAU33H,CAAI,CACzB,CACA,SAASs4H,GAAgBlsD,EAAW,CAChC,OAAO,MAAM,QAAQA,CAAS,EAAIA,EAAY,CAACA,CAAS,CAC5D,CACA,SAASiN,GAAmBlK,EAAYzuE,EAAK,CACzC,OAAOyuE,GAAcA,EAAWzuE,CAAG,EAC7B,CACE,GAAGyuE,EACH,GAAGA,EAAWzuE,CAAG,CACpB,EACC,CAAE,GAAGyuE,CAAU,CACzB,CACA,MAAMorD,GAAY/+E,GAAa,OAAOA,GAAa,SAC7Cm9E,GAA0BvsD,GAAcA,EAAU,MAAMmuD,EAAQ,EC9StE,SAASC,GAAuBj7H,EAAS,CACrC,MAAM5D,EAAU,CACZ,gBAAiB,KACjB,MAAO,CAAE,EACT,YAAa,CACT,YAAa,CACT,UAAW,CAAE,EACb,gBAAiB,CAAE,EACnB,MAAO,CAAE,EACT,KAAM,CAAE,EACR,MAAO,CAAE,CACZ,EACD,aAAc,CAAE,CACnB,CACT,EACUwG,EAAOygF,GAAarjF,CAAO,GAAK,CAAC0kF,GAAgB1kF,CAAO,EACxD,IAAI2vF,GAAiBvzF,CAAO,EAC5B,IAAIiyF,GAAkBjyF,CAAO,EACnCwG,EAAK,MAAM5C,CAAO,EAClBmmF,GAAmB,IAAInmF,EAAS4C,CAAI,CACxC,CACA,SAASs4H,GAA0B9vH,EAAS,CACxC,MAAMhP,EAAU,CACZ,gBAAiB,KACjB,MAAO,CAAE,EACT,YAAa,CACT,YAAa,CACT,OAAQ,CAAE,CACb,EACD,aAAc,CAAE,CACnB,CACT,EACUwG,EAAO,IAAI4rF,GAAoBpyF,CAAO,EAC5CwG,EAAK,MAAMwI,CAAO,EAClB+6E,GAAmB,IAAI/6E,EAASxI,CAAI,CACxC,CC/BA,SAASu4H,GAAc/vH,EAASyhE,EAAW,CACvC,OAAQ+O,GAAcxwE,CAAO,GACzB,OAAOA,GAAY,UAClB,OAAOA,GAAY,UAAY,CAAC6rH,GAAepqD,CAAS,CACjE,CAIA,SAASuuD,GAAehwH,EAASyhE,EAAWzwE,EAASk7D,EAAO,CACxD,MAAM6gB,EAAa,CAAA,EACnB,GAAIgjD,GAAc/vH,EAASyhE,CAAS,EAChCsL,EAAW,KAAKye,GAAmBxrF,EAAS6rH,GAAepqD,CAAS,GAC9DA,EAAU,SAAWA,EACVzwE,IAAUA,EAAQ,SAAWA,EAAiB,CAAC,MAE/D,CAED,GAAIgP,GAAW,KACX,OAAO+sE,EAEX,MAAMqiD,EAAWtD,GAAgB9rH,EAASyhE,EAAWvV,CAAK,EACpDuhE,EAAc2B,EAAS,OAC7Bz8D,GAAU,EAAQ86D,EAAc,8BAA+B,mBAAmB,EAClF,QAASn6J,EAAI,EAAGA,EAAIm6J,EAAan6J,IAAK,CAClC,MAAMg8J,EAAcF,EAAS97J,CAAC,EACxBukI,EAAsBy3B,aAAuB,QAC7CO,GACAC,GACD/0C,GAAmB,IAAIu0C,CAAW,GACnCz3B,EAAoBy3B,CAAW,EAEnC,MAAM9nD,EAAgBuT,GAAmB,IAAIu0C,CAAW,EAClD9qD,EAAa,CAAE,GAAGxzE,GAIpB,UAAWwzE,GACX,OAAOA,EAAW,OAAU,aAC5BA,EAAW,MAAQA,EAAW,MAAMlxG,EAAGm6J,CAAW,GAEtD1gD,EAAW,KAAK,GAAGqE,GAAc5J,EAAe,CAAE,GAAG/F,EAAW,WAAA+C,CAAU,EAAI,CAAE,CAAA,CAAC,CACpF,CACJ,CACD,OAAOuI,CACX,CC9CA,SAASkjD,GAAgB9D,EAAUn7H,EAASk7D,EAAO,CAC/C,MAAM6gB,EAAa,CAAA,EAKbmjD,EAAoB/D,EAAS,IAAKgB,GAAY,CAChD,GAAI,MAAM,QAAQA,CAAO,GAAK,OAAOA,EAAQ,CAAC,GAAM,WAAY,CAC5D,MAAM1yF,EAAW0yF,EAAQ,CAAC,EACpBgD,EAAKrrD,GAAY,CAAC,EAExB,OADAqrD,EAAG,GAAG,SAAU11F,CAAQ,EACpB0yF,EAAQ,SAAW,EACZ,CAACgD,EAAI,CAAC,EAAG,CAAC,CAAC,EAEbhD,EAAQ,SAAW,EACjB,CAACgD,EAAI,CAAC,EAAG,CAAC,EAAGhD,EAAQ,CAAC,CAAC,EAGvB,CAACgD,EAAIhD,EAAQ,CAAC,EAAGA,EAAQ,CAAC,CAAC,CAEzC,CACD,OAAOA,CACf,CAAK,EAED,OAD6BR,GAA6BuD,EAAmBl/H,EAASk7D,EAAO,CAAA,OAAE1uB,EAAM,CAAE,EAClF,QAAQ,CAAC,CAAE,UAAAikC,EAAW,WAAA+C,CAAU,EAAIxkE,IAAY,CACjE+sE,EAAW,KAAK,GAAGijD,GAAehwH,EAASyhE,EAAW+C,CAAU,CAAC,CACzE,CAAK,EACMuI,CACX,CC3BA,SAASqjD,GAAWv6H,EAAO,CACvB,OAAO,MAAM,QAAQA,CAAK,GAAKA,EAAM,KAAK,MAAM,OAAO,CAC3D,CAKA,SAASw6H,GAAoBr/H,EAAU,GAAI,CACvC,KAAM,CAAE,MAAAk7D,EAAO,aAAAslB,EAAc,eAAAC,CAAc,EAAKzgF,EAIhD,SAASs/H,EAAcC,EAAmBC,EAAoBx/H,EAAS,CACnE,IAAI+7E,EAAa,CAAA,EACb0jD,EACJ,MAAMC,EAAY,CAAA,EAKlB,GAJIl/C,IAAiB,SACjBk/C,EAAU,aAAel/C,GACzBC,IAAmB,SACnBi/C,EAAU,eAAiBj/C,GAC3B2+C,GAAWG,CAAiB,EAAG,CAC/B,KAAM,CAAE,WAAA/wH,EAAY,GAAGmxH,CAAe,EAAKH,GAAsB,CAAA,EAC7D,OAAOhxH,GAAe,aACtBixH,EAAsBjxH,GAE1ButE,EAAakjD,GAAgBM,EAAmB,CAAE,GAAGG,EAAW,GAAGC,CAAe,EAAIzkE,CAAK,CAC9F,KACI,CAED,KAAM,CAAE,WAAA1sD,EAAY,GAAGivE,CAAI,EAAKz9E,GAAW,CAAA,EACvC,OAAOwO,GAAe,aACtBixH,EAAsBjxH,GAE1ButE,EAAaijD,GAAeO,EAAmBC,EAAoB,CAAE,GAAGE,EAAW,GAAGjiD,GAAQviB,CAAK,CACtG,CACD,MAAM0gB,EAAY,IAAIO,GAAuBJ,CAAU,EACvD,OAAI0jD,GACA7jD,EAAU,SAAS,KAAK6jD,CAAmB,EAE3CvkE,IACAA,EAAM,WAAW,KAAK0gB,CAAS,EAC/BA,EAAU,SAAS,KAAK,IAAM,CAC1Bra,GAAWrG,EAAM,WAAY0gB,CAAS,CACtD,CAAa,GAEEA,CACV,CACD,OAAO0jD,CACX,CACA,MAAM7oF,GAAU4oF,GAAqB,EC/C/B/6G,GAAO,KACPkgB,GAAQ,OACRo7F,GAAY,MACZC,GAAa,MACbC,GAAc,QACdC,GAAS,OAER,SAASC,GACdC,EACqB,CACrB,MAAMC,EAAYvG,GAChB,0BAA0BoG,EAAM,KAAKA,EAAM,IAAIz7G,EAAI,KAAKy7G,EAAM,IAAIF,EAAU,KAAKC,EAAW,GAAA,EAG1E,OAAAjL,GAAAoL,EAAiB,SAAW5uD,GAAW,CACrDA,IAAW,EACb56B,GACEypF,EACA,0BAA0BH,EAAM,KAAKA,EAAM,IAAIz7G,EAAI,KAAKy7G,EAAM,IAAIF,EAAU,KAAKC,EAAW,GAAA,EAErFzuD,IAAW,EACpB56B,GACEypF,EACA,0BAA0BJ,EAAW,KAAKC,EAAM,IAAIH,EAAS,KAAKG,EAAM,IAAIv7F,EAAK,KAAKu7F,EAAM,GAAA,GAK9FE,EAAgB,YAAY,IAAM,GAClCA,EAAgB,gBAAkB,IAElCxpF,GACEypF,EACA,0BAA0BJ,EAAW,KAAKC,EAAM,IAAIH,EAAS,KAAKG,EAAM,IAAIF,EAAU,KAAKC,EAAW,GAAA,CAE1G,CAED,EAEMI,CACT,CC3CA,MAAM1zF,GAAS,CAAE,QAAS,GAAI,UAAW,IAAK,UAAW,MAElD,SAAS2zF,GAAiB/rE,EAG/B,CACM,MAAAgsE,EAAaxF,GAAU,EAAGpuF,EAAM,EAChC6zF,EAAazF,GAAU,EAAGpuF,EAAM,EAEtC8nB,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACF,EAAI,QAAS,OAElB,MAAMksE,EAAoB,CAAC,CAAE,QAAAC,EAAS,QAAAC,KAA4B,CAEhEvgF,GAAM,KAAK,IAAM,CACf,GAAI,CAACmU,EAAI,QAAS,OAElB,MAAMxwD,EAAUwwD,EAAI,QAEdqsE,EAAiBL,EAAW,MAC5BM,EAAiBL,EAAW,MAE5BjrG,EAAOxxB,EAAQ,wBACfurB,EAAKoxG,EAAUnrG,EAAK,KAAOA,EAAK,MAAQ,EACxChG,EAAKoxG,EAAUprG,EAAK,IAAMA,EAAK,OAAS,EAEnCgrG,EAAA,IAAIK,EAAiBtxG,CAAE,EACvBkxG,EAAA,IAAIK,EAAiBtxG,CAAE,CAAA,CACnC,CAAA,EAGI,cAAA,iBAAiB,cAAekxG,CAAiB,EAEjD,IAAM,OAAO,oBAAoB,cAAeA,CAAiB,CAAA,EACvE,CAAClsE,CAAG,CAAC,EAED,CAAE,EAAGgsE,EAAY,EAAGC,CAAW,CACxC,CCzCe,SAAQM,GAACC,EAAS,CAO/B,QANIt+J,EAAI,GACJ,EAAIs+J,EAAQ,OACZh5J,EACA8Z,EAAIk/I,EAAQ,EAAI,CAAC,EACjBC,EAAO,EAEJ,EAAEv+J,EAAI,GACXsF,EAAI8Z,EACJA,EAAIk/I,EAAQt+J,CAAC,EACbu+J,GAAQj5J,EAAE,CAAC,EAAI8Z,EAAE,CAAC,EAAI9Z,EAAE,CAAC,EAAI8Z,EAAE,CAAC,EAGlC,OAAOm/I,EAAO,CAChB,CCde,SAAQC,GAACF,EAAS,CAU/B,QATIt+J,EAAI,GACJ,EAAIs+J,EAAQ,OACZl/I,EAAIk/I,EAAQ,EAAI,CAAC,EACjBh/I,EACAxB,EACAvZ,EAAK6a,EAAE,CAAC,EACRhb,EAAKgb,EAAE,CAAC,EACRq/I,EAAY,EAET,EAAEz+J,EAAI,GACXsf,EAAK/a,EACLuZ,EAAK1Z,EACLgb,EAAIk/I,EAAQt+J,CAAC,EACbuE,EAAK6a,EAAE,CAAC,EACRhb,EAAKgb,EAAE,CAAC,EACRE,GAAM/a,EACNuZ,GAAM1Z,EACNq6J,GAAa,KAAK,KAAKn/I,EAAKA,EAAKxB,EAAKA,CAAE,EAG1C,OAAO2gJ,CACT,CCnBA,IAAIC,GAAc,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAEhFC,GAAiB,CACnB,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,KAC1D,EAEA,SAASC,GAAQ9tJ,EAAI,CACnB,OAAQA,IAAO,IAAUA,IAAO,IAAUA,IAAO,MAAYA,IAAO,MAEjEA,IAAO,IAAUA,IAAO,GAAUA,IAAO,IAAUA,IAAO,IAAUA,IAAO,KAC3EA,GAAM,MAAU6tJ,GAAe,QAAQ7tJ,CAAE,GAAK,CACnD,CAEA,SAAS+tJ,GAAUjkF,EAAM,CAEvB,OAAQA,EAAO,GAAI,CACjB,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACH,MAAO,EACV,CACD,MAAO,EACT,CAEA,SAASkkF,GAAMlkF,EAAM,CACnB,OAAQA,EAAO,MAAU,EAC3B,CAEA,SAASmkF,GAAQnkF,EAAM,CACrB,OAAQA,GAAQ,IAAMA,GAAQ,EAChC,CAEA,SAASokF,GAAapkF,EAAM,CAC1B,OAAQA,GAAQ,IAAMA,GAAQ,IACtBA,IAAS,IACTA,IAAS,IACTA,IAAS,EACnB,CAGA,SAASqkF,GAAMvtG,EAAM,CACnB,KAAK,MAAS,EACd,KAAK,KAASA,EACd,KAAK,IAASA,EAAK,OACnB,KAAK,OAAS,GACd,KAAK,MAAS,EACd,KAAK,IAAS,GACd,KAAK,aAAe,EACpB,KAAK,KAAS,EAChB,CAEA,SAASwtG,GAAWnkI,EAAO,CACzB,KAAOA,EAAM,MAAQA,EAAM,KAAO6jI,GAAQ7jI,EAAM,KAAK,WAAWA,EAAM,KAAK,CAAC,GAC1EA,EAAM,OAEV,CAGA,SAASokI,GAASpkI,EAAO,CACvB,IAAIjqB,EAAKiqB,EAAM,KAAK,WAAWA,EAAM,KAAK,EAE1C,GAAIjqB,IAAO,GAAa,CACtBiqB,EAAM,MAAQ,EACdA,EAAM,QACN,MACD,CAED,GAAIjqB,IAAO,GAAa,CACtBiqB,EAAM,MAAQ,EACdA,EAAM,QACN,MACD,CAEDA,EAAM,IAAM,gDAAkDA,EAAM,MAAQ,GAC9E,CAGA,SAASqkI,GAAUrkI,EAAO,CACxB,IAAIiE,EAAQjE,EAAM,MACd0M,EAAQzI,EACR8gB,EAAM/kB,EAAM,IACZskI,EAAY,GACZC,EAAa,GACbC,EAAa,GACbC,EAAS,GACT1uJ,EAEJ,GAAI22B,GAASqY,EAAK,CAChB/kB,EAAM,IAAM,iCAAmC0M,EAAQ,IACvD,MACD,CAWD,GAVA32B,EAAKiqB,EAAM,KAAK,WAAW0M,CAAK,GAE5B32B,IAAO,IAAeA,IAAO,MAC/B22B,IACA32B,EAAM22B,EAAQqY,EAAO/kB,EAAM,KAAK,WAAW0M,CAAK,EAAI,GAMlD,CAACs3H,GAAQjuJ,CAAE,GAAKA,IAAO,GAAa,CACtCiqB,EAAM,IAAM,wDAA0D0M,EAAQ,IAC9E,MACD,CAED,GAAI32B,IAAO,GAAa,CAMtB,GALAuuJ,EAAavuJ,IAAO,GACpB22B,IAEA32B,EAAM22B,EAAQqY,EAAO/kB,EAAM,KAAK,WAAW0M,CAAK,EAAI,EAEhD43H,GAAa53H,EAAQqY,GAEnBhvC,GAAMiuJ,GAAQjuJ,CAAE,EAAG,CACrBiqB,EAAM,IAAM,sEAAwEiE,EAAQ,IAC5F,MACD,CAGH,KAAOyI,EAAQqY,GAAOi/G,GAAQhkI,EAAM,KAAK,WAAW0M,CAAK,CAAC,GACxDA,IACA63H,EAAa,GAEfxuJ,EAAM22B,EAAQqY,EAAO/kB,EAAM,KAAK,WAAW0M,CAAK,EAAI,CACrD,CAED,GAAI32B,IAAO,GAAa,CAGtB,IAFA0uJ,EAAS,GACT/3H,IACOs3H,GAAQhkI,EAAM,KAAK,WAAW0M,CAAK,CAAC,GACzCA,IACA83H,EAAa,GAEfzuJ,EAAM22B,EAAQqY,EAAO/kB,EAAM,KAAK,WAAW0M,CAAK,EAAI,CACrD,CAED,GAAI32B,IAAO,KAAeA,IAAO,GAAa,CAC5C,GAAI0uJ,GAAU,CAACF,GAAc,CAACC,EAAY,CACxCxkI,EAAM,IAAM,2CAA6C0M,EAAQ,IACjE,MACD,CAQD,GANAA,IAEA32B,EAAM22B,EAAQqY,EAAO/kB,EAAM,KAAK,WAAW0M,CAAK,EAAI,GAChD32B,IAAO,IAAeA,IAAO,KAC/B22B,IAEEA,EAAQqY,GAAOi/G,GAAQhkI,EAAM,KAAK,WAAW0M,CAAK,CAAC,EACrD,KAAOA,EAAQqY,GAAOi/G,GAAQhkI,EAAM,KAAK,WAAW0M,CAAK,CAAC,GACxDA,QAEG,CACL1M,EAAM,IAAM,2CAA6C0M,EAAQ,IACjE,MACD,CACF,CAED1M,EAAM,MAAQ0M,EACd1M,EAAM,MAAQ,WAAWA,EAAM,KAAK,MAAMiE,EAAOyI,CAAK,CAAC,EAAI,CAC7D,CAGA,SAASg4H,GAAgB1kI,EAAO,CAC9B,IAAI+jC,EAAK4gG,EAOT5gG,EAAQ/jC,EAAM,KAAKA,EAAM,YAAY,EACrC2kI,EAAQ5gG,EAAI,cAEZ,IAAI6gG,EAAS5kI,EAAM,KASnB,GAPI2kI,IAAU,KAAOC,EAAO,OAAS,IACnC5kI,EAAM,OAAO,KAAK,CAAE+jC,EAAK6gG,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,CAAE,EAC/CA,EAASA,EAAO,MAAM,CAAC,EACvBD,EAAQ,IACR5gG,EAAOA,IAAQ,IAAO,IAAM,KAG1B4gG,IAAU,IACZ3kI,EAAM,OAAO,KAAK,CAAE+jC,CAAG,EAAG,OAAO6gG,CAAM,CAAC,MAGxC,MAAOA,EAAO,QAAUjB,GAAYgB,CAAK,IACvC3kI,EAAM,OAAO,KAAK,CAAE+jC,CAAK,EAAC,OAAO6gG,EAAO,OAAO,EAAGjB,GAAYgB,CAAK,CAAC,CAAC,CAAC,EAClE,EAAChB,GAAYgB,CAAK,IAAtB,CAKN,CAGA,SAASE,GAAY7kI,EAAO,CAC1B,IAAI+kB,EAAM/kB,EAAM,IACZ8kI,EAASC,EAAQC,EAAaC,EAAahgK,EAM/C,GAJA+6B,EAAM,aAAeA,EAAM,MAC3B8kI,EAAU9kI,EAAM,KAAK,WAAWA,EAAM,KAAK,EAC3C+kI,EAAShB,GAAMe,CAAO,EAElB,CAAChB,GAAUgB,CAAO,EAAG,CACvB9kI,EAAM,IAAM,wBAA0BA,EAAM,KAAKA,EAAM,KAAK,EAAI,YAAcA,EAAM,MAAQ,IAC5F,MACD,CASD,GAPAilI,EAActB,GAAY3jI,EAAM,KAAKA,EAAM,KAAK,EAAE,YAAW,CAAE,EAE/DA,EAAM,QACNmkI,GAAWnkI,CAAK,EAEhBA,EAAM,KAAO,GAET,CAACilI,EAAa,CAEhBP,GAAgB1kI,CAAK,EACrB,MACD,CAID,IAFAglI,EAAc,KAEL,CACP,IAAK//J,EAAIggK,EAAahgK,EAAI,EAAGA,IAAK,CAIhC,GAHI8/J,IAAW9/J,IAAM,GAAKA,IAAM,GAAIm/J,GAASpkI,CAAK,EAC7CqkI,GAAUrkI,CAAK,EAEhBA,EAAM,IAAI,OAAQ,CACpB0kI,GAAgB1kI,CAAK,EACrB,MACD,CACDA,EAAM,KAAK,KAAKA,EAAM,KAAK,EAE3BmkI,GAAWnkI,CAAK,EAChBglI,EAAc,GAEVhlI,EAAM,MAAQ+kB,GAAO/kB,EAAM,KAAK,WAAWA,EAAM,KAAK,IAAM,KAC9DA,EAAM,QACNmkI,GAAWnkI,CAAK,EAChBglI,EAAc,GAEjB,CAGD,GAAI,CAAAA,IAIAhlI,EAAM,OAASA,EAAM,KAKrB,CAACikI,GAAajkI,EAAM,KAAK,WAAWA,EAAM,KAAK,CAAC,GAClD,KAEH,CAED0kI,GAAgB1kI,CAAK,CACvB,CASA,IAAAklI,GAAiB,SAAmBC,EAAS,CAC3C,IAAInlI,EAAQ,IAAIkkI,GAAMiB,CAAO,EACzBpgH,EAAM/kB,EAAM,IAIhB,IAFAmkI,GAAWnkI,CAAK,EAETA,EAAM,MAAQ+kB,GAAO,CAAC/kB,EAAM,IAAI,QACrC6kI,GAAY7kI,CAAK,EAGnB,OAAIA,EAAM,OAAO,SACX,KAAK,QAAQA,EAAM,OAAO,CAAC,EAAE,CAAC,CAAC,EAAI,GACrCA,EAAM,IAAM,+CACZA,EAAM,OAAS,IAEfA,EAAM,OAAO,CAAC,EAAE,CAAC,EAAI,KAIlB,CACL,IAAKA,EAAM,IACX,SAAUA,EAAM,MACpB,CACA,wDC9SA,SAASolI,GAAQtsJ,EAAI0F,EAAI,CACvB,MAAO,CACL1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAAI1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAC5B1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAAI1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAC5B1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAAI1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAC5B1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAAI1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAC5B1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAAI1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAAI1F,EAAG,CAAC,EACpCA,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAAI1F,EAAG,CAAC,EAAI0F,EAAG,CAAC,EAAI1F,EAAG,CAAC,CACxC,CACA,CAGA,SAASqsD,IAAS,CAChB,GAAI,EAAE,gBAAgBA,IAAW,OAAO,IAAIA,GAC5C,KAAK,MAAQ,GACb,KAAK,MAAQ,IACf,CAGAA,GAAO,UAAU,OAAS,SAAUp3D,EAAG,CACrC,OAAIA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,IAAM,EAC1E,MAET,KAAK,MAAQ,KACb,KAAK,MAAM,KAAKA,CAAC,EACV,KACT,EAGMs3J,GAAC,UAAU,UAAY,SAAUryF,EAAIvtE,EAAI,CAC7C,OAAIutE,IAAO,GAAKvtE,IAAO,KACrB,KAAK,MAAQ,KACb,KAAK,MAAM,KAAK,CAAE,EAAG,EAAG,EAAG,EAAGutE,EAAIvtE,CAAE,CAAE,GAEjC,IACT,EAGM4/J,GAAC,UAAU,MAAQ,SAAUvyG,EAAIC,EAAI,CACzC,OAAID,IAAO,GAAKC,IAAO,KACrB,KAAK,MAAQ,KACb,KAAK,MAAM,KAAK,CAAED,EAAI,EAAG,EAAGC,EAAI,EAAG,CAAC,CAAE,GAEjC,IACT,EAGMsyG,GAAC,UAAU,OAAS,SAAUnzG,EAAOiK,EAAIC,EAAI,CACjD,IAAIuE,EAAKpJ,EAAK+D,EAEd,OAAIpJ,IAAU,IACZ,KAAK,UAAUiK,EAAIC,CAAE,EAErBuE,EAAMzO,EAAQ,KAAK,GAAK,IACxBqF,EAAM,KAAK,IAAIoJ,CAAG,EAClBrF,EAAM,KAAK,IAAIqF,CAAG,EAElB,KAAK,MAAM,KAAK,CAAEpJ,EAAK+D,EAAK,CAACA,EAAK/D,EAAK,EAAG,CAAG,CAAA,EAC7C,KAAK,MAAQ,KAEb,KAAK,UAAU,CAAC4E,EAAI,CAACC,CAAE,GAElB,IACT,EAGA+I,GAAO,UAAU,MAAQ,SAAUjT,EAAO,CACxC,OAAIA,IAAU,IACZ,KAAK,MAAQ,KACb,KAAK,MAAM,KAAK,CAAE,EAAG,EAAG,KAAK,IAAIA,EAAQ,KAAK,GAAK,GAAG,EAAG,EAAG,EAAG,CAAC,CAAE,GAE7D,IACT,EAGAiT,GAAO,UAAU,MAAQ,SAAUjT,EAAO,CACxC,OAAIA,IAAU,IACZ,KAAK,MAAQ,KACb,KAAK,MAAM,KAAK,CAAE,EAAG,KAAK,IAAIA,EAAQ,KAAK,GAAK,GAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAE,GAE7D,IACT,EAKAiT,GAAO,UAAU,QAAU,UAAY,CACrC,GAAI,KAAK,MACP,OAAO,KAAK,MAGd,GAAI,CAAC,KAAK,MAAM,OACd,YAAK,MAAQ,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GACvB,KAAK,MAKd,GAFA,KAAK,MAAQ,KAAK,MAAM,CAAC,EAErB,KAAK,MAAM,SAAW,EACxB,OAAO,KAAK,MAGd,QAASlgE,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IACrC,KAAK,MAAQmgK,GAAQ,KAAK,MAAO,KAAK,MAAMngK,CAAC,CAAC,EAGhD,OAAO,KAAK,KACd,EAMMogK,GAAC,UAAU,KAAO,SAAUpgJ,EAAGhX,EAAGq3J,EAAY,CAClD,IAAIv3J,EAGJ,OAAK,KAAK,MAAM,QAOX,KAAK,QACR,KAAK,MAAQ,KAAK,WAGpBA,EAAI,KAAK,MAGF,CACLkX,EAAIlX,EAAE,CAAC,EAAIE,EAAIF,EAAE,CAAC,GAAKu3J,EAAa,EAAIv3J,EAAE,CAAC,GAC3CkX,EAAIlX,EAAE,CAAC,EAAIE,EAAIF,EAAE,CAAC,GAAKu3J,EAAa,EAAIv3J,EAAE,CAAC,EAC/C,GAjBmC,CAAEkX,EAAGhX,CAAC,CAkBzC,EAGA,IAAAilE,GAAiB/N,yDC5IjB,IAAIA,GAASq+B,GAET7yD,GAAa,CACf,OAAQ,GACR,MAAO,GACP,OAAQ,GACR,UAAW,GACX,MAAO,GACP,MAAO,EACT,EAEI40H,GAAkB,yEAClBC,GAAkB,SAGtBC,GAAiB,SAAwBhzC,EAAiB,CACxD,IAAIv/C,EAAS,IAAI/N,GACbpB,EAAK6gG,EAGT,OAAAnyC,EAAgB,MAAM8yC,EAAY,EAAE,QAAQ,SAAU94H,EAAM,CAG1D,GAAKA,EAAK,OAGV,IAAI,OAAOkE,GAAWlE,CAAI,EAAM,IAAa,CAC3Cs3B,EAAMt3B,EACN,MACD,CAQD,OALAm4H,EAASn4H,EAAK,MAAM+4H,EAAe,EAAE,IAAI,SAAUvgK,EAAG,CACpD,MAAO,CAACA,GAAK,CACnB,CAAK,EAGO8+D,EAAG,CACT,IAAK,SACC6gG,EAAO,SAAW,GACpB1xF,EAAO,OAAO0xF,CAAM,EAEtB,OAEF,IAAK,QACCA,EAAO,SAAW,EACpB1xF,EAAO,MAAM0xF,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EACxBA,EAAO,SAAW,GAC3B1xF,EAAO,MAAM0xF,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAEnC,OAEF,IAAK,SACCA,EAAO,SAAW,EACpB1xF,EAAO,OAAO0xF,EAAO,CAAC,EAAG,EAAG,CAAC,EACpBA,EAAO,SAAW,GAC3B1xF,EAAO,OAAO0xF,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAE/C,OAEF,IAAK,YACCA,EAAO,SAAW,EACpB1xF,EAAO,UAAU0xF,EAAO,CAAC,EAAG,CAAC,EACpBA,EAAO,SAAW,GAC3B1xF,EAAO,UAAU0xF,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAEvC,OAEF,IAAK,QACCA,EAAO,SAAW,GACpB1xF,EAAO,MAAM0xF,EAAO,CAAC,CAAC,EAExB,OAEF,IAAK,QACCA,EAAO,SAAW,GACpB1xF,EAAO,MAAM0xF,EAAO,CAAC,CAAC,EAExB,MACH,EACL,CAAG,EAEM1xF,CACT,wDCjFA,IAAIpU,GAAM,KAAK,GAAK,EAUpB,SAASC,GAAkB5B,EAAIC,EAAIC,EAAIC,EAAI,CACzC,IAAI0B,EAAQ7B,EAAKG,EAAKF,EAAKC,EAAK,EAAK,GAAK,EACtCY,EAAOd,EAAKE,EAAKD,EAAKE,EAM1B,OAAIW,EAAO,IAAOA,EAAO,GACrBA,EAAM,KAAQA,EAAM,IAEjBe,EAAO,KAAK,KAAKf,CAAG,CAC7B,CAQA,SAASgB,GAAezkD,EAAInB,EAAIoH,EAAI3B,EAAIuB,EAAI/I,EAAI6kD,EAAIC,EAAI8C,EAASC,EAAS,CAOxE,IAAIC,EAAOD,GAAS3kD,EAAGiG,GAAI,EAAIy+C,GAAS7lD,EAAGyF,GAAI,EAC3CugD,EAAM,CAACH,GAAS1kD,EAAGiG,GAAI,EAAI0+C,GAAS9lD,EAAGyF,GAAI,EAE3CwgD,EAAUnD,EAAKA,EACfoD,EAAUnD,EAAKA,EACfoD,EAASJ,EAAMA,EACfK,EAASJ,EAAMA,EAOfK,EAAYJ,EAAQC,EAAUD,EAAQG,EAAWF,EAAQC,EAEzDE,EAAW,IAEbA,EAAW,GAGbA,GAAeJ,EAAQG,EAAWF,EAAQC,EAC1CE,EAAW,KAAK,KAAKA,CAAQ,GAAKr/C,IAAO/I,EAAK,GAAK,GAEnD,IAAIqoD,EAAMD,EAAYvD,EAAGC,EAAKiD,EAC1BO,EAAMF,EAAW,CAACtD,EAAGD,EAAKiD,EAO1BnD,EAAKkD,EAAQQ,EAAMT,EAAQU,GAAOplD,EAAGiG,GAAI,EACzCy7C,EAAKgD,EAAQS,EAAMR,EAAQS,GAAOvmD,EAAGyF,GAAI,EAMzC+gD,GAAQT,EAAMO,GAAOxD,EACrB2D,GAAQT,EAAMO,GAAOxD,EACrB2D,GAAO,CAACX,EAAMO,GAAOxD,EACrB6D,GAAO,CAACX,EAAMO,GAAOxD,EAErB6D,EAASlB,GAAkB,EAAG,EAAGc,EAAKC,CAAG,EACzCtC,EAAcuB,GAAkBc,EAAKC,EAAKC,EAAKC,CAAG,EAEtD,OAAI1oD,IAAO,GAAKkmD,EAAc,IAC5BA,GAAesB,IAEbxnD,IAAO,GAAKkmD,EAAc,IAC5BA,GAAesB,IAGV,CAAE7C,EAAIC,EAAI+D,EAAQzC,CAAW,CACtC,CAMA,SAAS0C,GAAqBD,EAAQzC,EAAa,CACjD,IAAIxL,EAAQ,mBAAM,KAAK,IAAIwL,EAAY,CAAC,EAEpChjD,EAAK,KAAK,IAAIylD,CAAM,EACpB5mD,EAAK,KAAK,IAAI4mD,CAAM,EACpBx/C,EAAK,KAAK,IAAIw/C,EAASzC,CAAW,EAClC1+C,EAAK,KAAK,IAAImhD,EAASzC,CAAW,EAEtC,MAAO,CAAEhjD,EAAInB,EAAImB,EAAKnB,EAAG24C,EAAO34C,EAAKmB,EAAGw3C,EAAOvxC,EAAK3B,EAAGkzC,EAAOlzC,EAAK2B,EAAGuxC,EAAOvxC,EAAI3B,EACnF,KAEAqhD,GAAiB,SAAa3lD,EAAInB,EAAIoH,EAAI3B,EAAIuB,EAAI/I,EAAI6kD,EAAIC,EAAIE,EAAK,CACjE,IAAI4C,EAAU,KAAK,IAAI5C,EAAMwC,GAAM,GAAG,EAClCK,EAAU,KAAK,IAAI7C,EAAMwC,GAAM,GAAG,EAIlCM,EAAOD,GAAS3kD,EAAGiG,GAAI,EAAIy+C,GAAS7lD,EAAGyF,GAAI,EAC3CugD,EAAM,CAACH,GAAS1kD,EAAGiG,GAAI,EAAI0+C,GAAS9lD,EAAGyF,GAAI,EAE/C,GAAIsgD,IAAQ,GAAKC,IAAQ,EAEvB,MAAO,GAGT,GAAIlD,IAAO,GAAKC,IAAO,EAErB,MAAO,GAMTD,EAAK,KAAK,IAAIA,CAAE,EAChBC,EAAK,KAAK,IAAIA,CAAE,EAEhB,IAAIgE,EAAUhB,EAAMA,GAAQjD,EAAKA,GAAOkD,EAAMA,GAAQjD,EAAKA,GACvDgE,EAAS,IACXjE,GAAM,KAAK,KAAKiE,CAAM,EACtBhE,GAAM,KAAK,KAAKgE,CAAM,GAMxB,IAAIjrC,EAAK8pC,GAAezkD,EAAInB,EAAIoH,EAAI3B,EAAIuB,EAAI/I,EAAI6kD,EAAIC,EAAI8C,EAASC,CAAO,EAEpEz9B,EAAS,CAAA,EACTu+B,EAAS9qC,EAAG,CAAC,EACbqoC,EAAcroC,EAAG,CAAC,EAKlBmR,EAAW,KAAK,IAAI,KAAK,KAAK,KAAK,IAAIk3B,CAAW,GAAKsB,GAAM,EAAE,EAAG,CAAC,EACvEtB,GAAel3B,EAEf,QAASrhC,EAAI,EAAGA,EAAIqhC,EAAUrhC,IAC5By8B,EAAO,KAAKw+B,GAAqBD,EAAQzC,CAAW,CAAC,EACrDyC,GAAUzC,EAMZ,OAAO97B,EAAO,IAAI,SAAU2+B,EAAO,CACjC,QAASp7D,EAAI,EAAGA,EAAIo7D,EAAM,OAAQp7D,GAAK,EAAG,CACxC,IAAIggB,EAAIo7C,EAAMp7D,EAAI,CAAC,EACfgJ,EAAIoyD,EAAMp7D,EAAI,CAAC,EAGnBggB,GAAKk3C,EACLluD,GAAKmuD,EAGL,IAAIvzC,EAAKs2C,EAAQl6C,EAAIi6C,EAAQjxD,EACzB8Z,EAAKm3C,EAAQj6C,EAAIk6C,EAAQlxD,EAG7BoyD,EAAMp7D,EAAI,CAAC,EAAI4jB,EAAKsM,EAAG,CAAC,EACxBkrC,EAAMp7D,EAAI,CAAC,EAAI8iB,EAAKoN,EAAG,CAAC,CACzB,CAED,OAAOkrC,CACX,CAAG,CACH,wDCrLA,IAAIqlG,GAAU,MAIVC,GAAQ,KAAK,GAAK,IAKtB,SAASC,GAAQzpG,EAAIC,EAAIhK,EAAI,CAC3B,GAAI,EAAE,gBAAgBwzG,IAAY,OAAO,IAAIA,GAAQzpG,EAAIC,EAAIhK,CAAE,EAC/D,KAAK,GAAK+J,EACV,KAAK,GAAKC,EACV,KAAK,GAAKhK,CACZ,CASAwzG,GAAQ,UAAU,UAAY,SAAU73J,EAAG,CAIzC,IAAIJ,EAAI,KAAK,IAAI,KAAK,GAAKg4J,EAAK,EAAG5/J,EAAI,KAAK,IAAI,KAAK,GAAK4/J,EAAK,EAC3D/jJ,EAAK,CACP,KAAK,IAAM7T,EAAE,CAAC,EAAEJ,EAAII,EAAE,CAAC,EAAEhI,GACzB,KAAK,IAAMgI,EAAE,CAAC,EAAEJ,EAAII,EAAE,CAAC,EAAEhI,GACzB,KAAK,IAAM,CAACgI,EAAE,CAAC,EAAEhI,EAAIgI,EAAE,CAAC,EAAEJ,GAC1B,KAAK,IAAM,CAACI,EAAE,CAAC,EAAEhI,EAAIgI,EAAE,CAAC,EAAEJ,EAC9B,EAKMqQ,EAAI4D,EAAG,CAAC,EAAEA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAEA,EAAG,CAAC,EAC5Bi2D,EAAIj2D,EAAG,CAAC,EAAEA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAEA,EAAG,CAAC,EAG5B5T,IAAM4T,EAAG,CAAC,EAAEA,EAAG,CAAC,IAAIA,EAAG,CAAC,EAAEA,EAAG,CAAC,IAAMA,EAAG,CAAC,EAAEA,EAAG,CAAC,IAAIA,EAAG,CAAC,EAAEA,EAAG,CAAC,MACtDA,EAAG,CAAC,EAAEA,EAAG,CAAC,IAAIA,EAAG,CAAC,EAAEA,EAAG,CAAC,IAAMA,EAAG,CAAC,EAAEA,EAAG,CAAC,IAAIA,EAAG,CAAC,EAAEA,EAAG,CAAC,IAG5DikJ,GAAM7nJ,EAAI65D,GAAK,EAGnB,GAAI7pE,EAAI03J,GAAUG,EAEhB,YAAK,GAAK,KAAK,GAAK,KAAK,KAAKA,CAAE,EAChC,KAAK,GAAK,EACH,KAIT,IAAI7vI,EAAIpU,EAAG,CAAC,EAAEA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAEA,EAAG,CAAC,EAEhC5T,EAAI,KAAK,KAAKA,CAAC,EAGf,IAAI6J,EAAKguJ,EAAK73J,EAAE,EACZ+P,EAAK8nJ,EAAK73J,EAAE,EAGhB,YAAK,GAAM,KAAK,IAAIgoB,CAAC,EAAI0vI,IAAW,KAAK,IAAI7tJ,EAAKggE,CAAC,EAAI6tF,GACrD,GAEA,KAAK,KAAK,KAAK,IAAI1vI,CAAC,EAAI,KAAK,IAAIne,EAAKggE,CAAC,GACpChgE,EAAKmG,GAAKgY,EAEXA,GAAKne,EAAKggE,EAChB,EAAQ,IAAM,KAAK,GAIb,KAAK,IAAM,GAEb,KAAK,GAAK,KAAK,KAAKhgE,CAAE,EACtB,KAAK,GAAK,KAAK,KAAKkG,CAAE,IAGtB,KAAK,IAAM,GACX,KAAK,GAAK,KAAK,KAAKA,CAAE,EACtB,KAAK,GAAK,KAAK,KAAKlG,CAAE,GAGjB,IACT,EAIA+tJ,GAAQ,UAAU,aAAe,UAAY,CAC3C,OAAQ,KAAK,GAAKF,GAAU,KAAK,IAAM,KAAK,GAAKA,GAAU,KAAK,EAClE,EAEA,IAAAI,GAAiBF,yDCxFjB,IAAIG,GAAiBviE,GACjBwiE,GAAiBviE,GACjBvwB,GAAiB+yF,GACjB9lG,GAAiB+lG,GACjBJ,GAAiBK,GAKrB,SAASC,GAAQzvG,EAAM,CACrB,GAAI,EAAE,gBAAgByvG,IAAY,OAAO,IAAIA,GAAQzvG,CAAI,EAEzD,IAAI0vG,EAASN,GAAUpvG,CAAI,EAI3B,KAAK,SAAW0vG,EAAO,SAGvB,KAAK,IAAWA,EAAO,IAGvB,KAAK,QAAa,EACpB,CAEAD,GAAQ,KAAO,SAAUE,EAAK,CAC5B,GAAI,OAAOA,GAAQ,SAAU,OAAO,IAAIF,GAAQE,CAAG,EAEnD,GAAIA,aAAeF,GAAS,CAE1B,IAAIrgK,EAAI,IAAIqgK,GAAQ,EAAE,EAGtB,OAAArgK,EAAE,IAAMugK,EAAI,IACZvgK,EAAE,SAAWugK,EAAI,SAAS,IAAI,SAAUC,EAAK,CAAE,OAAOA,EAAI,MAAO,CAAG,CAAA,EACpExgK,EAAE,QAAUugK,EAAI,QAAQ,IAAI,SAAUv4J,EAAG,CACvC,OAAOmlE,GAAM,EAAG,OAAOnlE,EAAE,QAAS,CAAA,CACxC,CAAK,EAEMhI,CACR,CAED,MAAM,IAAI,MAAM,oCAAsCugK,CAAG,CAC3D,EAGAF,GAAQ,UAAU,SAAW,SAAUr4J,EAAG,CACxC,IAAI8sI,EAAO,KAAM51I,EAGZ8I,EAAE,MAAM,QAEb,KAAK,QAAQ,SAAUhI,EAAG2mC,EAAOznB,EAAGhX,EAAG,CACrC,IAAI0O,EAAG+kB,EAAQsF,EAAMs+H,EAErB,OAAQv/J,EAAE,CAAC,EAAC,CAGV,IAAK,IACH4W,EAAS5O,EAAE,KAAK,EAAGhI,EAAE,CAAC,EAAG,EAAI,EAC7B27B,EAAU/kB,EAAE,CAAC,IAAM,EAAK,CAAE,IAAKA,EAAE,CAAC,CAAC,EAAK,CAAE,IAAKA,EAAE,CAAC,EAAGA,EAAE,CAAC,GACxD,MAEF,IAAK,IACHA,EAAS5O,EAAE,KAAKkX,EAAGlf,EAAE,CAAC,EAAG,EAAK,EAC9B27B,EAAU/kB,EAAE,CAAC,IAAM5O,EAAE,KAAKkX,EAAGhX,EAAG,EAAK,EAAE,CAAC,EAAK,CAAE,IAAK0O,EAAE,CAAC,CAAG,EAAG,CAAE,IAAKA,EAAE,CAAC,EAAGA,EAAE,CAAC,GAC7E,MAEF,IAAK,IACHA,EAAS5O,EAAE,KAAKhI,EAAE,CAAC,EAAG,EAAG,EAAI,EAC7B27B,EAAU/kB,EAAE,CAAC,IAAM,EAAK,CAAE,IAAKA,EAAE,CAAC,CAAC,EAAK,CAAE,IAAKA,EAAE,CAAC,EAAGA,EAAE,CAAC,GACxD,MAEF,IAAK,IACHA,EAAS5O,EAAE,KAAKhI,EAAE,CAAC,EAAGkI,EAAG,EAAK,EAC9ByzB,EAAU/kB,EAAE,CAAC,IAAM5O,EAAE,KAAKkX,EAAGhX,EAAG,EAAK,EAAE,CAAC,EAAK,CAAE,IAAK0O,EAAE,CAAC,CAAG,EAAG,CAAE,IAAKA,EAAE,CAAC,EAAGA,EAAE,CAAC,GAC7E,MAEF,IAAK,IACL,IAAK,IAUH,IAAIiF,EAAK7T,EAAE,UACPnK,EAAIkiK,GAAQ//J,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAAE,UAAU6b,CAAE,EAY9C,GATIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAI,IAClC7b,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,IAAM,KAItB4W,EAAI5O,EAAE,KAAKhI,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,IAAM,GAAG,EAI9BA,EAAE,CAAC,IAAM,KAAOA,EAAE,CAAC,IAAMkf,GAAKlf,EAAE,CAAC,IAAMkI,GACvClI,EAAE,CAAC,IAAM,KAAOA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,IAAM,EAAI,CAC9C27B,EAAS,CAAE37B,EAAE,CAAC,IAAM,IAAM,IAAM,IAAK4W,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAC/C,KACD,CAGG/Y,EAAE,eAEJ89B,EAAS,CAAE37B,EAAE,CAAC,IAAM,IAAM,IAAM,IAAK4W,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAI/C+kB,EAAS,CAAE37B,EAAE,CAAC,EAAGnC,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAImC,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAG4W,EAAE,CAAC,EAAGA,EAAE,CAAC,GAG1D,MAEF,IAAK,IAGH2oJ,EAAa54H,EAAQ,EAErB/vB,EAAI5O,EAAE,KAAKhI,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGu/J,CAAU,EACjC5jI,EAAS,CAAE,IAAK/kB,EAAE,CAAC,EAAGA,EAAE,CAAC,GACzB,MAEF,QAME,IALAqqB,EAAajhC,EAAE,CAAC,EAChB27B,EAAa,CAAEsF,GACfs+H,EAAct+H,EAAK,YAAa,IAAKA,EAGhC/hC,EAAI,EAAGA,EAAIc,EAAE,OAAQd,GAAK,EAC7B0X,EAAI5O,EAAE,KAAKhI,EAAEd,CAAC,EAAGc,EAAEd,EAAI,CAAC,EAAGqgK,CAAU,EACrC5jI,EAAO,KAAK/kB,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAE3B,CAEDk+H,EAAK,SAASnuG,CAAK,EAAIhL,CACxB,EAAE,EAAI,CACT,EAKA0kI,GAAQ,UAAU,gBAAkB,UAAY,CAC9C,IAAIr4J,EAAG9I,EAEP,GAAK,KAAK,QAAQ,OAElB,IAAI,KAAK,QAAQ,SAAW,EAAG,CAC7B,KAAK,SAAS,KAAK,QAAQ,CAAC,CAAC,EAC7B,KAAK,QAAU,GACf,MACD,CAKD,IAHA8I,EAAImlE,GAAM,EACVjuE,EAAI,KAAK,QAAQ,OAEV,EAAEA,GAAK,GACZ8I,EAAE,OAAO,KAAK,QAAQ9I,CAAC,EAAE,QAAO,CAAE,EAGpC,KAAK,SAAS8I,CAAC,EACf,KAAK,QAAU,GACjB,EAKAq4J,GAAQ,UAAU,SAAW,UAAY,CACvC,IAAI1kI,EAAS,GAAI8kI,EAAU,GAAIC,EAAa,GAE5C,KAAK,gBAAe,EAEpB,QAASxhK,EAAI,EAAGw/C,EAAM,KAAK,SAAS,OAAQx/C,EAAIw/C,EAAKx/C,IAAK,CACxD,IAAI65J,EAAU,KAAK,SAAS75J,CAAC,EACzB8+D,EAAM+6F,EAAQ,CAAC,EAGf/6F,IAAQyiG,GAAWziG,IAAQ,KAAOA,IAAQ,KAExCA,IAAQ,KAAOyiG,IAAY,MAAK9kI,GAAU,KAC9CA,GAAUqiC,EAEV0iG,EAAa,IAEbA,EAAa,GAIf,QAAS/2G,EAAM,EAAGA,EAAMovG,EAAQ,OAAQpvG,IAAO,CAC7C,IAAIlvB,EAAMs+H,EAAQpvG,CAAG,EAIjBA,IAAQ,EACN+2G,GAAcjmI,GAAO,IAAGkB,GAAU,KAC7BlB,GAAO,IAAGkB,GAAU,KAE/BA,GAAUlB,CACX,CAEDgmI,EAAUziG,CACX,CAED,OAAOriC,CACT,EAKA0kI,GAAQ,UAAU,UAAY,SAAUnhJ,EAAGhX,EAAG,CAC5C,YAAK,QAAQ,KAAKilE,GAAQ,EAAC,UAAUjuD,EAAGhX,GAAK,CAAC,CAAC,EACxC,IACT,EAMAm4J,GAAQ,UAAU,MAAQ,SAAUtzG,EAAIC,EAAI,CAC1C,YAAK,QAAQ,KAAKmgB,GAAQ,EAAC,MAAMpgB,EAAK,CAACC,GAAOA,IAAO,EAAMD,EAAKC,CAAE,CAAC,EAC5D,IACT,EAMAqzG,GAAQ,UAAU,OAAS,SAAUl0G,EAAOiK,EAAIC,EAAI,CAClD,YAAK,QAAQ,KAAK8W,GAAQ,EAAC,OAAOhhB,EAAOiK,GAAM,EAAGC,GAAM,CAAC,CAAC,EACnD,IACT,EAKAgqG,GAAQ,UAAU,MAAQ,SAAU1vG,EAAS,CAC3C,YAAK,QAAQ,KAAKwc,GAAQ,EAAC,MAAMxc,CAAO,CAAC,EAClC,IACT,EAKA0vG,GAAQ,UAAU,MAAQ,SAAU1vG,EAAS,CAC3C,YAAK,QAAQ,KAAKwc,GAAQ,EAAC,MAAMxc,CAAO,CAAC,EAClC,IACT,EAKA0vG,GAAQ,UAAU,OAAS,SAAUr4J,EAAG,CACtC,YAAK,QAAQ,KAAKmlE,GAAQ,EAAC,OAAOnlE,CAAC,CAAC,EAC7B,IACT,EAKAq4J,GAAQ,UAAU,UAAY,SAAU3zC,EAAiB,CACvD,OAAKA,EAAgB,QAGrB,KAAK,QAAQ,KAAKuzC,GAAevzC,CAAe,CAAC,EAC1C,MAHE,IAIX,EAMA2zC,GAAQ,UAAU,MAAQ,SAAUvpJ,EAAG,CACrC,IAAI6pJ,EAAqB,EAAGC,EAAqB,EAAGltF,EAAS,EAAGC,EAAS,EAAG9rE,EAE5E,OAAAiP,EAAIA,GAAK,EAET,KAAK,gBAAe,EAEpB,KAAK,SAAS,QAAQ,SAAU9W,EAAG,CACjC,IAAIu/J,EAAcv/J,EAAE,CAAC,EAAE,YAAW,IAAOA,EAAE,CAAC,EAE5C,OAAQA,EAAE,CAAC,EAAC,CACV,IAAK,IACL,IAAK,IACCu/J,IAAcv/J,EAAE,CAAC,GAAK0zE,GAC1BA,EAAS1zE,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EAC9B9W,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EACtB,OAEF,IAAK,IACL,IAAK,IACCyoJ,IAAcv/J,EAAE,CAAC,GAAK2zE,GAC1BA,EAAS3zE,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EAC9B9W,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EACtB,OAEF,IAAK,IACL,IAAK,IACH48D,EAASitF,EACThtF,EAASitF,EACT,OAEF,IAAK,IACL,IAAK,IACCrB,IACFv/J,EAAE,CAAC,GAAK0zE,EACR1zE,EAAE,CAAC,GAAK2zE,GAGVD,EAAS1zE,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EAC9B68D,EAAS3zE,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EAE9B6pJ,EAAqBjtF,EACrBktF,EAAqBjtF,EAErB3zE,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EACtB9W,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EACtB,OAEF,IAAK,IACL,IAAK,IAECyoJ,IACFv/J,EAAE,CAAC,GAAK0zE,EACR1zE,EAAE,CAAC,GAAK2zE,GAGVD,EAAS1zE,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EAC9B68D,EAAS3zE,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EAE9B9W,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EACtB9W,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EACtB9W,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAE,QAAQ8W,EAAI,CAAC,EAC1B9W,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EACtB9W,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,EAAE,QAAQ8W,CAAC,EACtB,OAEF,QAEEjP,EAAI7H,EAAE,OAEFu/J,IACFv/J,EAAE6H,EAAI,CAAC,GAAK6rE,EACZ1zE,EAAE6H,EAAI,CAAC,GAAK8rE,GAGdD,EAAS1zE,EAAE6H,EAAI,CAAC,EAAI7H,EAAE6H,EAAI,CAAC,EAAE,QAAQiP,CAAC,EACtC68D,EAAS3zE,EAAE6H,EAAI,CAAC,EAAI7H,EAAE6H,EAAI,CAAC,EAAE,QAAQiP,CAAC,EAEtC9W,EAAE,QAAQ,SAAUy6B,EAAKv7B,EAAG,CACrBA,IACLc,EAAEd,CAAC,EAAI,CAACc,EAAEd,CAAC,EAAE,QAAQ4X,CAAC,EAChC,CAAS,EACD,MACH,CACL,CAAG,EAEM,IACT,EAOAupJ,GAAQ,UAAU,QAAU,SAAUrxH,EAAU6xH,EAAe,CAC7D,IAAItgI,EAAW,KAAK,SAChBugI,EAAe,CAAE,EACjBC,EAAc,GACdC,EAAQ,EACRC,EAAQ,EACRC,EAAiB,EACjBC,EAAiB,EACjBjiK,EAAGkmB,EAAGg8I,EAoDV,GAlDKP,GACH,KAAK,gBAAe,EAGtBtgI,EAAS,QAAQ,SAAUvgC,EAAG2mC,EAAO,CAEnC,IAAIk0B,EAAM7rB,EAAShvC,EAAG2mC,EAAOq6H,EAAOC,CAAK,EAErC,MAAM,QAAQpmG,CAAG,IACnBimG,EAAan6H,CAAK,EAAIk0B,EACtBkmG,EAAc,IAGhB,IAAIxB,EAAcv/J,EAAE,CAAC,IAAMA,EAAE,CAAC,EAAE,YAAW,EAG3C,OAAQA,EAAE,CAAC,EAAC,CACV,IAAK,IACL,IAAK,IACHghK,EAAQhhK,EAAE,CAAC,GAAKu/J,EAAayB,EAAQ,GACrCC,EAAQjhK,EAAE,CAAC,GAAKu/J,EAAa0B,EAAQ,GACrCC,EAAiBF,EACjBG,EAAiBF,EACjB,OAEF,IAAK,IACL,IAAK,IACHD,EAAQhhK,EAAE,CAAC,GAAKu/J,EAAayB,EAAQ,GACrC,OAEF,IAAK,IACL,IAAK,IACHC,EAAQjhK,EAAE,CAAC,GAAKu/J,EAAa0B,EAAQ,GACrC,OAEF,IAAK,IACL,IAAK,IAEHD,EAAQE,EACRD,EAAQE,EACR,OAEF,QACEH,EAAQhhK,EAAEA,EAAE,OAAS,CAAC,GAAKu/J,EAAayB,EAAQ,GAChDC,EAAQjhK,EAAEA,EAAE,OAAS,CAAC,GAAKu/J,EAAa0B,EAAQ,EACnD,CACL,CAAG,EAIG,CAACF,EAAe,OAAO,KAI3B,IAFAK,EAAc,CAAA,EAETliK,EAAI,EAAGA,EAAIqhC,EAAS,OAAQrhC,IAC/B,GAAI,OAAO4hK,EAAa5hK,CAAC,EAAM,IAC7B,IAAKkmB,EAAI,EAAGA,EAAI07I,EAAa5hK,CAAC,EAAE,OAAQkmB,IACtCg8I,EAAY,KAAKN,EAAa5hK,CAAC,EAAEkmB,CAAC,CAAC,OAGrCg8I,EAAY,KAAK7gI,EAASrhC,CAAC,CAAC,EAIhC,YAAK,SAAWkiK,EAET,IACT,EAKAf,GAAQ,UAAU,IAAM,UAAY,CAElC,YAAK,QAAQ,SAAUrgK,EAAG2mC,EAAOznB,EAAGhX,EAAG,CACrC,IAAI+4B,EAAOjhC,EAAE,CAAC,EACVqhK,EAASpgI,EAAK,YAAa,EAC3B/hC,EAGJ,GAAI+hC,IAASogI,EAIb,OAFArhK,EAAE,CAAC,EAAIqhK,EAECpgI,EAAI,CACV,IAAK,IAEHjhC,EAAE,CAAC,GAAKkI,EACR,OAEF,IAAK,IAGHlI,EAAE,CAAC,GAAKkf,EACRlf,EAAE,CAAC,GAAKkI,EACR,OAEF,QACE,IAAKhJ,EAAI,EAAGA,EAAIc,EAAE,OAAQd,IACxBc,EAAEd,CAAC,GAAKA,EAAI,EAAIggB,EAAIhX,CAEzB,CACF,EAAE,EAAI,EAEA,IACT,EAKAm4J,GAAQ,UAAU,IAAM,UAAY,CAElC,YAAK,QAAQ,SAAUrgK,EAAG2mC,EAAOznB,EAAGhX,EAAG,CACrC,IAAI+4B,EAAOjhC,EAAE,CAAC,EACVshK,EAASrgI,EAAK,YAAa,EAC3B/hC,EAGJ,GAAI+hC,IAASqgI,GAGT,EAAA36H,IAAU,GAAK1F,IAAS,KAI5B,OAFAjhC,EAAE,CAAC,EAAIshK,EAECrgI,EAAI,CACV,IAAK,IAEHjhC,EAAE,CAAC,GAAKkI,EACR,OAEF,IAAK,IAGHlI,EAAE,CAAC,GAAKkf,EACRlf,EAAE,CAAC,GAAKkI,EACR,OAEF,QACE,IAAKhJ,EAAI,EAAGA,EAAIc,EAAE,OAAQd,IACxBc,EAAEd,CAAC,GAAKA,EAAI,EAAIggB,EAAIhX,CAEzB,CACF,EAAE,EAAI,EAEA,IACT,EAKAm4J,GAAQ,UAAU,MAAQ,UAAY,CACpC,YAAK,QAAQ,SAAUrgK,EAAG2mC,EAAOznB,EAAGhX,EAAG,CACrC,IAAIq5J,EAAcC,EAAOC,EAAO9lI,EAAS,CAAA,EAAIsF,EAAOjhC,EAAE,CAAC,EAGvD,OAAIihC,IAAS,KAAOA,IAAS,IAAc,MAEvCA,IAAS,KAEXugI,EAAQtiJ,EAAIlf,EAAE,CAAC,EACfyhK,EAAQv5J,EAAIlI,EAAE,CAAC,IAEfwhK,EAAQxhK,EAAE,CAAC,EACXyhK,EAAQzhK,EAAE,CAAC,GAGbuhK,EAAennG,GAAIl7C,EAAGhX,EAAGs5J,EAAOC,EAAOzhK,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAI/DuhK,EAAa,SAAW,EACnB,CAAE,CAAEvhK,EAAE,CAAC,IAAM,IAAM,IAAM,IAAKA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAG,CAAA,GAGnDuhK,EAAa,QAAQ,SAAUvhK,EAAG,CAChC27B,EAAO,KAAK,CAAE,IAAK37B,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAAE,CAC7D,CAAK,EAEM27B,GACX,CAAG,EAEM,IACT,EAKA0kI,GAAQ,UAAU,QAAU,UAAY,CACtC,IAAI9/H,EAAW,KAAK,SAChBmhI,EAAcC,EAAcC,EAC5BC,EAAaC,EAIjB,YAAK,QAAQ,SAAU9hK,EAAG2wF,EAAKzxE,EAAGhX,EAAG,CACnC,IAAI+4B,EAAOjhC,EAAE,CAAC,EAAGqhK,EAASpgI,EAAK,YAAa,EAAEs+H,EAIzC5uE,IAED0wE,IAAW,KACb9B,EAAct+H,IAAS,IAEvB2gI,EAAcrhI,EAASowD,EAAM,CAAC,EAE1BixE,EAAY,CAAC,IAAM,KACrBF,EAAeE,EAAY,CAAC,EAAI1iJ,EAChCyiJ,EAAeC,EAAY,CAAC,EAAI15J,GACvB05J,EAAY,CAAC,IAAM,KAC5BF,EAAeE,EAAY,CAAC,EAAIA,EAAY,CAAC,EAC7CD,EAAeC,EAAY,CAAC,EAAIA,EAAY,CAAC,IAE7CF,EAAe,EACfC,EAAe,GAGjBE,EAAc,CAACH,EACfI,EAAc,CAACH,EAEVpC,IACHsC,GAAe3iJ,EACf4iJ,GAAe55J,GAGjBq4B,EAASowD,CAAG,EAAI,CACd4uE,EAAa,IAAM,IACnBsC,EAAaC,EACb9hK,EAAE,CAAC,EAAGA,EAAE,CAAC,CACjB,GAEeqhK,IAAW,MACpB9B,EAAct+H,IAAS,IAEvB2gI,EAAcrhI,EAASowD,EAAM,CAAC,EAE1BixE,EAAY,CAAC,IAAM,KACrBF,EAAeE,EAAY,CAAC,EAAI1iJ,EAChCyiJ,EAAeC,EAAY,CAAC,EAAI15J,GACvB05J,EAAY,CAAC,IAAM,KAC5BF,EAAeE,EAAY,CAAC,EAAIA,EAAY,CAAC,EAC7CD,EAAeC,EAAY,CAAC,EAAIA,EAAY,CAAC,IAE7CF,EAAe,EACfC,EAAe,GAGjBE,EAAc,CAACH,EACfI,EAAc,CAACH,EAEVpC,IACHsC,GAAe3iJ,EACf4iJ,GAAe55J,GAGjBq4B,EAASowD,CAAG,EAAI,CACd4uE,EAAa,IAAM,IACnBsC,EAAaC,EACb9hK,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAC7B,GAEA,CAAG,EAEM,IACT,EAGA,IAAA+hK,GAAiB1B,GCtpBjB0B,gECCA,IAAI7nI,GAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACpE6+H,GAAU,mCAEC,SAAQiJ,GAACpxG,EAAM,CAC5B,IAAI1xB,EAAO,CAAA,EACZ,OAAA0xB,EAAK,QAAQmoG,GAAS,SAASh7J,EAAG8yD,EAASvoB,EAAK,CAC/C,IAAI5L,EAAOm0B,EAAQ,cAUnB,IATAvoB,EAAO25H,GAAY35H,CAAI,EAGnB5L,IAAS,KAAO4L,EAAK,OAAS,IACjCpJ,EAAK,KAAK,CAAC2xB,CAAO,EAAE,OAAOvoB,EAAK,OAAO,EAAG,CAAC,CAAC,CAAC,EAC7C5L,EAAO,IACPm0B,EAAUA,IAAY,IAAM,IAAM,KAG5BvoB,EAAK,QAAU,GAAG,CACxB,GAAIA,EAAK,SAAWpO,GAAOwC,CAAI,EAC9B,OAAA4L,EAAK,QAAQuoB,CAAO,EACb3xB,EAAK,KAAKoJ,CAAI,EAEtB,GAAIA,EAAK,OAASpO,GAAOwC,CAAI,EACxB,MAAM,IAAI,MAAM,qBAAqB,EAE1CwC,EAAK,KAAK,CAAC2xB,CAAO,EAAE,OAAOvoB,EAAK,OAAO,EAAGpO,GAAOwC,CAAI,CAAC,CAAC,CAAC,CACxD,CACH,CAAE,EACOwC,CACT,CAEA,IAAIklE,GAAS,oCAEb,SAAS69D,GAAY35H,EAAM,CAC1B,IAAI45H,EAAU55H,EAAK,MAAM87D,EAAM,EAC/B,OAAO89D,EAAUA,EAAQ,IAAI,MAAM,EAAI,CAAA,CACxC,CCnCe,SAAAC,GAAS91G,EAAIC,EAAIE,EAAIC,EAAIyJ,EAAIC,EAAIpK,EAAIC,EAAI,CACtD,OAAO,IAAIm2G,GAAO91G,EAAIC,EAAIE,EAAIC,EAAIyJ,EAAIC,EAAIpK,EAAIC,CAAE,CAClD,CAEA,SAASm2G,GAAO91G,EAAIC,EAAIE,EAAIC,EAAIyJ,EAAIC,EAAIpK,EAAIC,EAAI,CAC9C,KAAK,EAAI,CAAC,EAAEK,EAAI,EAAEC,CAAE,EACpB,KAAK,EAAI,CAAC,EAAEE,EAAI,EAAEC,CAAE,EACpB,KAAK,EAAI,CAAC,EAAEyJ,EAAI,EAAEC,CAAE,EACpB,KAAK,EAAI,CAAC,EAAEpK,EAAI,EAAEC,CAAE,EAEjBD,GAAO,MAA4BC,IAAO,MAAQA,IAAO,QAC1D,KAAK,aAAeo2G,GACpB,KAAK,SAAWC,GAChB,KAAK,cAAgBC,KAErB,KAAK,aAAeC,GACpB,KAAK,SAAWC,GAChB,KAAK,cAAgBC,IAGvB,KAAK,KAAI,CACX,CAEMC,GAAC,UAAY,CACjB,YAAaP,GACb,KAAM,UAAW,CAEf,KAAK,OAAS,KAAK,aAAa,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EACvC,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,CAAC,CACzE,EAED,eAAgB,UAAW,CACzB,OAAO,KAAK,MACb,EACD,iBAAkB,SAASjoI,EAAQ,CACjC,IAAIp8B,EAAI6kK,GAASzoI,EAAQ,KAAK,OAAQ,KAAK,aAC3B,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EACvC,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,CAAC,EAExD,OAAO,KAAK,SAAS,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EAC5B,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EACzCp8B,CAAC,CAChC,EACD,mBAAoB,SAASo8B,EAAO,CAClC,IAAIp8B,EAAI6kK,GAASzoI,EAAQ,KAAK,OAAQ,KAAK,aAC3B,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EACvC,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,CAAC,EAEpDywE,EAAa,KAAK,cAAc,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EAC3D,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EAAG7sG,CAAC,EACvD8kK,EAAM,KAAK,KAAKj4D,EAAW,EAAIA,EAAW,EAAIA,EAAW,EAAIA,EAAW,CAAC,EACzEk4D,EACJ,OAAID,EAAM,EACRC,EAAU,CAAC,EAAGl4D,EAAW,EAAEi4D,EAAK,EAAGj4D,EAAW,EAAEi4D,CAAG,EAEnDC,EAAU,CAAC,EAAG,EAAG,EAAG,CAAC,EAEhBA,CACR,EACD,sBAAuB,SAAS3oI,EAAO,CACrC,IAAIp8B,EAAI6kK,GAASzoI,EAAQ,KAAK,OAAQ,KAAK,aAC3B,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EACvC,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,CAAC,EAEpDywE,EAAa,KAAK,cAAc,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EAC3D,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EAAG7sG,CAAC,EACvD8kK,EAAM,KAAK,KAAKj4D,EAAW,EAAIA,EAAW,EAAIA,EAAW,EAAIA,EAAW,CAAC,EACzEk4D,EACAD,EAAM,EACRC,EAAU,CAAC,EAAGl4D,EAAW,EAAEi4D,EAAK,EAAGj4D,EAAW,EAAEi4D,CAAG,EAEnDC,EAAU,CAAC,EAAG,EAAG,EAAG,CAAC,EAEvB,IAAInjG,EAAQ,KAAK,SAAS,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EACjC,CAAC,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,EAAG,KAAK,EAAE,CAAC,EACzC5hE,CAAC,EAC/B,MAAO,CAAC,EAAG4hE,EAAM,EAAG,EAAGA,EAAM,EAAG,SAAUmjG,EAAQ,EAAG,SAAUA,EAAQ,CAAC,CACzE,CACH,EAEA,SAASJ,GAAoBK,EAAInqJ,EAAI7a,EAAE,CACrC,MAAO,CAAC,GAAI,EAAIA,GAAK,GAAGglK,EAAG,CAAC,EAAIA,EAAG,CAAC,GAAIhlK,EAAI,GAAGglK,EAAG,CAAC,EAAIA,EAAG,CAAC,GACzD,GAAI,EAAIhlK,GAAK,GAAG6a,EAAG,CAAC,EAAIA,EAAG,CAAC,GAAI7a,EAAI,GAAG6a,EAAG,CAAC,EAAIA,EAAG,CAAC,EACvD,CACA,CAEA,SAAS2pJ,GAAgBQ,EAAInqJ,EAAI7a,EAAE,CACjC,IAAI6sG,EAAa63D,GACP,CAAC,GAAGM,EAAG,CAAC,EAAIA,EAAG,CAAC,GAAI,GAAGA,EAAG,CAAC,EAAIA,EAAG,CAAC,GAAI,GAAGA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAE,EACxD,CAAC,GAAGnqJ,EAAG,CAAC,EAAIA,EAAG,CAAC,GAAI,GAAGA,EAAG,CAAC,EAAIA,EAAG,CAAC,GAAI,GAAGA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAE,EACxD7a,CAAC,EACX,OAAO6sG,CACT,CAEA,SAASg4D,GAASzoI,EAAQ6oI,EAAc9rE,EAAM6rE,EAAInqJ,EAAG,CAKnD,QAJI2sB,EAAQ,EACRxnC,EAAIo8B,EAAO6oI,EACXh+H,GAAQ7K,EAAS+8D,EAAK6rE,EAAInqJ,EAAI7a,CAAC,GAAGilK,EAE/Bz9H,EAAQ,MAAM,CACnB,IAAI09H,EAAmB/rE,EAAK6rE,EAAInqJ,EAAI7a,EAAIinC,CAAI,EACxCk+H,EAAmBhsE,EAAK6rE,EAAInqJ,EAAI7a,EAAIinC,CAAI,EACxCm+H,EAAkB,KAAK,IAAIhpI,EAAS8oI,CAAgB,EAAED,EACtDI,EAAkB,KAAK,IAAIjpI,EAAS+oI,CAAgB,EAAEF,EACtDG,EAAkB59H,GACpBA,EAAQ49H,EACRplK,GAAKinC,GACIo+H,EAAkB79H,GAC3BA,EAAQ69H,EACRrlK,GAAKinC,GAELA,GAAQ,CAEX,CAED,OAAOjnC,CACT,CAEA,SAAS0kK,GAAeM,EAAInqJ,EAAI7a,EAAE,CAChC,IAAIohB,GAAK,EAAIphB,IAAM,EAAIA,GAAKglK,EAAG,CAAC,EAAI,GAAK,EAAIhlK,GAAKA,EAAIglK,EAAG,CAAC,EAAIhlK,EAAIA,EAAIglK,EAAG,CAAC,EACtE56J,GAAK,EAAIpK,IAAM,EAAIA,GAAK6a,EAAG,CAAC,EAAI,GAAK,EAAI7a,GAAKA,EAAI6a,EAAG,CAAC,EAAI7a,EAAIA,EAAI6a,EAAG,CAAC,EAC1E,MAAO,CAAC,EAAGuG,EAAG,EAAGhX,CAAC,CACpB,CAEA,SAASm6J,GAAWS,EAAInqJ,EAAI7a,EAAE,CAC5B,IAAIohB,GAAK,EAAIphB,IAAM,EAAIA,IAAM,EAAIA,GAAKglK,EAAG,CAAC,EAAI,GAAK,EAAIhlK,IAAM,EAAIA,GAAKA,EAAIglK,EAAG,CAAC,EAC9E,GAAK,EAAIhlK,GAAKA,EAAIA,EAAIglK,EAAG,CAAC,EAAIhlK,EAAIA,EAAIA,EAAIglK,EAAG,CAAC,EAC1C56J,GAAK,EAAIpK,IAAM,EAAIA,IAAM,EAAIA,GAAK6a,EAAG,CAAC,EAAI,GAAK,EAAI7a,IAAM,EAAIA,GAAKA,EAAI6a,EAAG,CAAC,EAC9E,GAAK,EAAI7a,GAAKA,EAAIA,EAAI6a,EAAG,CAAC,EAAI7a,EAAIA,EAAIA,EAAI6a,EAAG,CAAC,EAE9C,MAAO,CAAC,EAAGuG,EAAG,EAAGhX,CAAC,CACpB,CAEA,SAASq6J,GAAsBO,EAAInqJ,EAAI7a,EAAG,CACpCA,IAAM,SACRA,EAAI,GAEL,IAAIuuD,EAAKy2G,EAAG,CAAC,EAAI,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAC7Bx2G,EAAK3zC,EAAG,CAAC,EAAI,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAC7B6zC,EAAK,EAAIs2G,EAAG,CAAC,EAAI,EAAIA,EAAG,CAAC,EACzBr2G,EAAK,EAAI9zC,EAAG,CAAC,EAAI,EAAIA,EAAG,CAAC,EAEzBpQ,EAAI,GAAK8jD,EAAKA,EAAKC,EAAKA,GACxBhnC,EAAI,GAAK+mC,EAAKG,EAAKF,EAAKG,GACxBv2C,EAAIs2C,EAAKA,EAAKC,EAAKA,EAEvB,GAAGlkD,IAAM,EACP,OAAOzK,EAAI,KAAK,KAAK,KAAK,IAAIglK,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAG,CAAC,EAAI,KAAK,IAAInqJ,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAG,CAAC,CAAC,EAE9E,IAAI2F,EAAIgH,GAAG,EAAE/c,GACTX,EAAIsO,EAAE3N,EACNrG,EAAIpE,EAAIwgB,EACR9V,EAAIZ,EAAI0W,EAAEA,EAEd,OAAQ,KAAK,KAAK/V,CAAC,EAAE,GACnBrG,EAAE,KAAK,KAAKA,EAAEA,EAAEsG,CAAC,EAAE8V,EAAE,KAAK,KAAKA,EAAEA,EAAE9V,CAAC,EACpCA,EAAE,KAAK,IAAI,KAAK,KACbtG,EAAE,KAAK,KAAKA,EAAEA,EAAEsG,CAAC,IAAI8V,EAAE,KAAK,KAAKA,EAAEA,EAAE9V,CAAC,EAC9C,CAAM,EAGN,CAGA,IAAI46J,GAAU,CACZ,CAAE,EACF,CAAE,EACF,CAAC,mBAA4C,iBAA0C,EACvF,CAAC,EAAE,mBAA4C,iBAA0C,EACzF,CAAC,oBAA4C,mBAA2C,mBAA4C,iBAA0C,EAC9K,CAAC,EAAE,mBAA4C,kBAA2C,kBAA4C,gBAA0C,EAChL,CAAC,kBAA2C,mBAA4C,mBAA4C,kBAA2C,kBAA4C,gBAA0C,EACrQ,CAAC,EAAG,kBAA2C,mBAA4C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EACxQ,CAAC,mBAA4C,kBAA2C,kBAA4C,iBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EAC5V,CAAC,EAAE,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EAC9V,CAAC,oBAA4C,mBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EACnb,CAAC,EAAE,oBAA4C,mBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,kBAA4C,gBAA0C,EACrb,CAAC,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EAC1gB,CAAC,EAAE,mBAA4C,kBAA2C,oBAA4C,mBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EAC5gB,CAAC,oBAA4C,mBAA2C,oBAA4C,mBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,kBAA4C,iBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EACjmB,CAAC,EAAE,oBAA4C,mBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,kBAA4C,iBAA2C,mBAA4C,iBAA0C,EACnmB,CAAC,oBAA4C,mBAA2C,mBAA4C,kBAA2C,oBAA4C,mBAA2C,mBAA4C,kBAA2C,kBAA4C,iBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EACxrB,CAAC,EAAE,oBAA4C,mBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EAC1rB,CAAC,mBAA4C,kBAA2C,mBAA4C,kBAA2C,oBAA4C,mBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EAC/wB,CAAC,EAAE,oBAA4C,mBAA2C,oBAA4C,mBAA2C,oBAA4C,mBAA2C,kBAA4C,iBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,iBAA4C,gBAA2C,mBAA4C,iBAA0C,EACjxB,CAAC,oBAA4C,mBAA2C,oBAA4C,mBAA2C,oBAA4C,mBAA2C,mBAA4C,kBAA2C,kBAA4C,iBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,kBAA4C,iBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EACt2B,CAAC,EAAE,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EACx2B,CAAC,oBAA4C,mBAA2C,oBAA4C,mBAA2C,oBAA4C,mBAA2C,kBAA4C,iBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,kBAA4C,iBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EAC77B,CAAC,EAAE,mBAA4C,kBAA2C,oBAA4C,mBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,EAC/7B,CAAC,oBAA4C,mBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,kBAA4C,iBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,kBAA2C,mBAA4C,iBAA0C,CACthC,EAGIC,GAAU,CACZ,CAAA,EAAG,CAAE,EACL,CAAC,EAAI,CAAG,EACR,CAAC,kBAA2C,kBAA2C,iBAA0C,EACjI,CAAC,kBAA2C,kBAA2C,mBAA2C,kBAA0C,EAC5K,CAAC,kBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA0C,EACvN,CAAC,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA0C,EAClQ,CAAC,kBAA2C,kBAA2C,kBAA2C,mBAA2C,mBAA2C,kBAA2C,iBAA0C,EAC7S,CAAC,iBAA2C,iBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA0C,EACxV,CAAC,kBAA2C,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA0C,EACnY,CAAC,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA2C,kBAA2C,mBAA2C,kBAA0C,EAC9a,CAAC,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA2C,kBAA2C,mBAA2C,kBAA0C,EACzd,CAAC,mBAA2C,mBAA2C,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA0C,EACpgB,CAAC,kBAA2C,mBAA2C,mBAA2C,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA0C,EAC/iB,CAAC,kBAA2C,kBAA2C,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA0C,EAC1lB,CAAC,kBAA2C,mBAA2C,mBAA2C,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA0C,EACroB,CAAC,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,oBAA2C,oBAA2C,oBAA2C,mBAA0C,EAChrB,CAAC,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA2C,kBAA2C,mBAA2C,kBAA0C,EAC3tB,CAAC,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA2C,kBAA2C,mBAA2C,kBAA0C,EACtwB,CAAC,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,gBAA2C,gBAA2C,mBAA2C,mBAA2C,kBAA2C,kBAA2C,oBAA2C,mBAA0C,EACjzB,CAAC,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,oBAA2C,mBAA0C,EAC51B,CAAC,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA2C,kBAA2C,oBAA2C,oBAA2C,oBAA2C,oBAA2C,oBAA2C,mBAA0C,EACv4B,CAAC,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,oBAA2C,oBAA2C,mBAA2C,mBAA2C,kBAA2C,iBAA0C,EACl7B,CAAC,mBAA2C,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,oBAA2C,oBAA2C,oBAA2C,mBAA0C,EAC79B,CAAC,mBAA2C,mBAA2C,kBAA2C,kBAA2C,mBAA2C,mBAA2C,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,kBAA2C,kBAA2C,mBAA2C,mBAA2C,mBAA2C,mBAA2C,oBAA2C,oBAA2C,kBAA2C,iBAA0C,CAC1gC,EAGIC,GAAuB,CAAC,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAGhE,SAASC,GAAU12J,EAAGrE,EAAG,CACvB,OAAO86J,GAAqBz2J,CAAC,EAAErE,CAAC,CAClC,CAKA,SAASg7J,GAAc74D,EAAY7sG,EAAGsd,EAAI,CAExC,IAAIvO,EAAIuO,EAAG,OAAS,EAChBqoJ,EACAhiI,EACAj5B,EACJ,GAAIqE,IAAM,EACR,MAAO,GAIT,GAAI89F,IAAe,EAAG,CAEpB,IADAlpE,EAAQ,EACHj5B,EAAI,EAAGA,GAAKqE,EAAGrE,IAClBi5B,GAAS8hI,GAAU12J,EAAGrE,CAAC,EAAI,KAAK,IAAI,EAAI1K,EAAG+O,EAAIrE,CAAC,EAAI,KAAK,IAAI1K,EAAG0K,CAAC,EAAI4S,EAAG5S,CAAC,EAE3E,OAAOi5B,CACX,KAAS,CAIL,IADAgiI,EAAM,IAAI,MAAM52J,CAAC,EACZrE,EAAI,EAAGA,EAAIqE,EAAGrE,IACjBi7J,EAAIj7J,CAAC,EAAIqE,GAAKuO,EAAG5S,EAAI,CAAC,EAAI4S,EAAG5S,CAAC,GAEhC,OAAOg7J,GAAc74D,EAAa,EAAG7sG,EAAG2lK,CAAG,CAC5C,CACH,CAEA,SAASn+I,GAAEw9I,EAAInqJ,EAAI7a,EAAG,CACpB,IAAI06D,EAAQgrG,GAAc,EAAG1lK,EAAGglK,CAAE,EAC9BrqG,EAAQ+qG,GAAc,EAAG1lK,EAAG6a,CAAE,EAC9BitH,EAAWptE,EAAQA,EAAQC,EAAQA,EACvC,OAAO,KAAK,KAAKmtE,CAAQ,CAC3B,CAEA,SAASw8B,GAAkBU,EAAInqJ,EAAI7a,EAAG,CACpC,IAAIiT,EAAGwnD,EAAK,EAAGmrG,EAMX5lK,IAAM,SACRA,EAAI,GAEN,IAAI+O,EAAI,GAIR,IAFAkE,EAAIjT,EAAI,EACRy6D,EAAM,EACD,EAAI,EAAG,EAAI1rD,EAAG,IACjB62J,EAAa3yJ,EAAIqyJ,GAAQv2J,CAAC,EAAE,CAAC,EAAIkE,EACjCwnD,GAAO8qG,GAAQx2J,CAAC,EAAE,CAAC,EAAIyY,GAAEw9I,EAAInqJ,EAAI+qJ,CAAU,EAE7C,OAAO3yJ,EAAIwnD,CACb,CC1RA,IAAIQ,GAAM,KAAK,GAAK,EAUpB,SAASC,GAAkB5B,EAAIC,EAAIC,EAAIC,EAAI,CACzC,IAAI0B,EAAQ7B,EAAKG,EAAKF,EAAKC,EAAK,EAAK,GAAK,EACtCY,EAAOd,EAAKE,EAAKD,EAAKE,EAM1B,OAAIW,EAAO,IAAOA,EAAO,GACrBA,EAAM,KAAQA,EAAM,IAEjBe,EAAO,KAAK,KAAKf,CAAG,CAC7B,CAQA,SAASgB,GAAezkD,EAAInB,EAAIoH,EAAI3B,EAAIuB,EAAI/I,EAAI6kD,EAAIC,EAAI8C,EAASC,EAAS,CAOxE,IAAIC,EAAOD,GAAS3kD,EAAGiG,GAAI,EAAIy+C,GAAS7lD,EAAGyF,GAAI,EAC3CugD,EAAM,CAACH,GAAS1kD,EAAGiG,GAAI,EAAI0+C,GAAS9lD,EAAGyF,GAAI,EAE3CwgD,EAAUnD,EAAKA,EACfoD,EAAUnD,EAAKA,EACfoD,EAASJ,EAAMA,EACfK,EAASJ,EAAMA,EAOfK,EAAYJ,EAAQC,EAAUD,EAAQG,EAAWF,EAAQC,EAEzDE,EAAW,IAEbA,EAAW,GAGbA,GAAeJ,EAAQG,EAAWF,EAAQC,EAC1CE,EAAW,KAAK,KAAKA,CAAQ,GAAKr/C,IAAO/I,EAAK,GAAK,GAEnD,IAAIqoD,EAAMD,EAAYvD,EAAGC,EAAKiD,EAC1BO,EAAMF,EAAW,CAACtD,EAAGD,EAAKiD,EAO1BnD,EAAKkD,EAAQQ,EAAMT,EAAQU,GAAOplD,EAAGiG,GAAI,EACzCy7C,EAAKgD,EAAQS,EAAMR,EAAQS,GAAOvmD,EAAGyF,GAAI,EAMzC+gD,GAAQT,EAAMO,GAAOxD,EACrB2D,GAAQT,EAAMO,GAAOxD,EACrB2D,GAAO,CAACX,EAAMO,GAAOxD,EACrB6D,GAAO,CAACX,EAAMO,GAAOxD,EAErB6D,EAASlB,GAAkB,EAAG,EAAGc,EAAKC,CAAG,EACzCtC,EAAcuB,GAAkBc,EAAKC,EAAKC,EAAKC,CAAG,EAEtD,OAAI1oD,IAAO,GAAKkmD,EAAc,IAC5BA,GAAesB,IAEbxnD,IAAO,GAAKkmD,EAAc,IAC5BA,GAAesB,IAGV,CAAE7C,EAAIC,EAAI+D,EAAQzC,CAAW,CACtC,CAMA,SAAS0C,GAAqBD,EAAQzC,EAAa,CACjD,IAAIxL,EAAQ,mBAAM,KAAK,IAAIwL,EAAY,CAAC,EAEpChjD,EAAK,KAAK,IAAIylD,CAAM,EACpB5mD,EAAK,KAAK,IAAI4mD,CAAM,EACpBx/C,EAAK,KAAK,IAAIw/C,EAASzC,CAAW,EAClC1+C,EAAK,KAAK,IAAImhD,EAASzC,CAAW,EAEtC,MAAO,CAAEhjD,EAAInB,EAAImB,EAAKnB,EAAG24C,EAAO34C,EAAKmB,EAAGw3C,EAAOvxC,EAAK3B,EAAGkzC,EAAOlzC,EAAK2B,EAAGuxC,EAAOvxC,EAAI3B,EACnF,CAEe,SAAAqhD,GAAS3lD,EAAInB,EAAI8iD,EAAIC,EAAIE,EAAKj8C,EAAI/I,EAAImJ,EAAI3B,EAAI,CAC3D,IAAIogD,EAAU,KAAK,IAAI5C,EAAMwC,GAAM,GAAG,EAClCK,EAAU,KAAK,IAAI7C,EAAMwC,GAAM,GAAG,EAIlCM,EAAOD,GAAS3kD,EAAGiG,GAAI,EAAIy+C,GAAS7lD,EAAGyF,GAAI,EAC3CugD,EAAM,CAACH,GAAS1kD,EAAGiG,GAAI,EAAI0+C,GAAS9lD,EAAGyF,GAAI,EAE/C,GAAIsgD,IAAQ,GAAKC,IAAQ,EAEvB,MAAO,GAGT,GAAIlD,IAAO,GAAKC,IAAO,EAErB,MAAO,GAMTD,EAAK,KAAK,IAAIA,CAAE,EAChBC,EAAK,KAAK,IAAIA,CAAE,EAEhB,IAAIgE,EAAUhB,EAAMA,GAAQjD,EAAKA,GAAOkD,EAAMA,GAAQjD,EAAKA,GACvDgE,EAAS,IACXjE,GAAM,KAAK,KAAKiE,CAAM,EACtBhE,GAAM,KAAK,KAAKgE,CAAM,GAMxB,IAAIjrC,EAAK8pC,GAAezkD,EAAInB,EAAIoH,EAAI3B,EAAIuB,EAAI/I,EAAI6kD,EAAIC,EAAI8C,EAASC,CAAO,EAEpEz9B,EAAS,CAAA,EACTu+B,EAAS9qC,EAAG,CAAC,EACbqoC,EAAcroC,EAAG,CAAC,EAKlBmR,EAAW,KAAK,IAAI,KAAK,KAAK,KAAK,IAAIk3B,CAAW,GAAKsB,GAAM,EAAE,EAAG,CAAC,EACvEtB,GAAel3B,EAEf,QAASrhC,EAAI,EAAGA,EAAIqhC,EAAUrhC,IAC5By8B,EAAO,KAAKw+B,GAAqBD,EAAQzC,CAAW,CAAC,EACrDyC,GAAUzC,EAMZ,OAAO97B,EAAO,IAAI,SAAU2+B,EAAO,CACjC,QAASp7D,EAAI,EAAGA,EAAIo7D,EAAM,OAAQp7D,GAAK,EAAG,CACxC,IAAIggB,EAAIo7C,EAAMp7D,EAAI,CAAC,EACfgJ,EAAIoyD,EAAMp7D,EAAI,CAAC,EAGnBggB,GAAKk3C,EACLluD,GAAKmuD,EAGL,IAAIvzC,EAAKs2C,EAAQl6C,EAAIi6C,EAAQjxD,EACzB8Z,EAAKm3C,EAAQj6C,EAAIk6C,EAAQlxD,EAG7BoyD,EAAMp7D,EAAI,CAAC,EAAI4jB,EAAKsM,EAAG,CAAC,EACxBkrC,EAAMp7D,EAAI,CAAC,EAAI8iB,EAAKoN,EAAG,CAAC,CACzB,CAED,OAAOkrC,CACX,CAAG,CACH,CCtLe,SAAAqpG,GAAS9hK,EAAIvB,EAAI81D,EAAGC,EAAIC,EAAastG,EAAaC,EAAW3kJ,EAAEhX,EAAG,CAC/E,OAAO,IAAIu2D,GAAI58D,EAAIvB,EAAI81D,EAAGC,EAAIC,EAAastG,EAAaC,EAAW3kJ,EAAEhX,CAAC,CACxE,CAEA,SAASu2D,GAAI58D,EAAIvB,EAAG81D,EAAGC,EAAIC,EAAastG,EAAaC,EAAU3kJ,EAAEhX,EAAG,CAChE,IAAIgyB,EAAS,EACT4pI,EAAiB,CAAA,EACjBvmG,EAAS,CAAA,EACT1C,EAAMT,GAAIv4D,EAAIvB,EAAG81D,EAAGC,EAAIC,EAAastG,EAAaC,EAAU3kJ,EAAEhX,CAAC,EACnE2yD,EAAI,QAAQ,SAAS/jD,EAAE,CACnB,IAAIwjD,EAAQ,IAAI6nG,GAAOrrJ,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EACjEitJ,EAAczpG,EAAM,iBACxBpgC,GAAU6pI,EACVD,EAAe,KAAKC,CAAW,EAC/BxmG,EAAO,KAAKjD,CAAK,CACzB,CAAK,EACD,KAAK,OAASpgC,EACd,KAAK,eAAiB4pI,EACtB,KAAK,OAASvmG,CAClB,CAEGymG,GAAC,UAAY,CACd,YAAavlG,GACb,KAAM,UAAW,CAGhB,EAED,eAAgB,UAAW,CACzB,OAAO,KAAK,MACb,EACD,iBAAkB,SAASwlG,EAAgB,CAEtCA,EAAiB,EAClBA,EAAiB,EACTA,EAAiB,KAAK,SAC9BA,EAAiB,KAAK,QAIxB,QAFI/kK,EAAI,KAAK,eAAe,OAAS,EAE/B,KAAK,eAAeA,CAAC,GAAK+kK,GAAkB,KAAK,eAAe/kK,CAAC,EAAI,GACzEA,IAECA,EAAE,KAAK,eAAe,OAAO,GAC5BA,IAIJ,QADIglK,EAAe,EACX9+I,EAAE,EAAGA,EAAElmB,EAAGkmB,IACd8+I,GAAgB,KAAK,eAAe9+I,CAAC,EAGzC,OAAO,KAAK,OAAOlmB,CAAC,EAAE,iBAAiB+kK,EAAiBC,CAAY,CACrE,EACD,mBAAoB,SAASD,EAAgB,CACxCA,EAAiB,EAChBA,EAAiB,EACPA,EAAiB,KAAK,SAChCA,EAAiB,KAAK,QAItB,QAFI/kK,EAAI,KAAK,eAAe,OAAS,EAE/B,KAAK,eAAeA,CAAC,GAAK+kK,GAAkB,KAAK,eAAe/kK,CAAC,EAAI,GAC3EA,IAEGA,EAAE,KAAK,eAAe,OAAO,GAC5BA,IAIJ,QADIglK,EAAe,EACX9+I,EAAE,EAAGA,EAAElmB,EAAGkmB,IACd8+I,GAAgB,KAAK,eAAe9+I,CAAC,EAG7C,OAAO,KAAK,OAAOlmB,CAAC,EAAE,mBAAmB+kK,EAAiBC,CAAY,CACvE,EACD,sBAAuB,SAASD,EAAe,CAC7C,IAAIpB,EAAU,KAAK,mBAAmBoB,CAAc,EAChDvkG,EAAQ,KAAK,iBAAiBukG,CAAc,EAChD,MAAO,CAAC,EAAGvkG,EAAM,EAAG,EAAGA,EAAM,EAAG,SAAUmjG,EAAQ,EAAG,SAAUA,EAAQ,CAAC,CACzE,CACH,ECvFe,SAAQsB,GAACtiK,EAAI4S,EAAInU,EAAIgT,EAAI,CACtC,OAAO,IAAI6wJ,GAAetiK,EAAI4S,EAAInU,EAAIgT,CAAE,CAE1C,CAEA,SAAS6wJ,GAAetiK,EAAI4S,EAAInU,EAAIgT,EAAG,CACrC,KAAK,GAAKzR,EACV,KAAK,GAAK4S,EACV,KAAK,GAAKnU,EACV,KAAK,GAAKgT,CACZ,CAEA6wJ,GAAe,UAAU,eAAiB,UAAU,CAClD,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,GAAK,KAAK,GAAI,CAAC,EACvC,KAAK,IAAI,KAAK,GAAK,KAAK,GAAI,CAAC,CAAC,CACvC,EAEAA,GAAe,UAAU,iBAAmB,SAASx6G,EAAI,CACvD,IAAIy6G,EAAWz6G,EAAM,KAAK,KAAK,KAAK,IAAI,KAAK,GAAK,KAAK,GAAI,CAAC,EACrD,KAAK,IAAI,KAAK,GAAK,KAAK,GAAI,CAAC,CAAC,EAEjC06G,GAAa,KAAK,GAAK,KAAK,IAAID,EAChCE,GAAa,KAAK,GAAK,KAAK,IAAIF,EACpC,MAAO,CAAE,EAAG,KAAK,GAAKC,EAAW,EAAG,KAAK,GAAKC,EAChD,EACAH,GAAe,UAAU,mBAAqB,UAAU,CACtD,IAAI1qI,EAAS,KAAK,MAAM,KAAK,GAAK,KAAK,KAAO,KAAK,GAAK,KAAK,KAChD,KAAK,GAAK,KAAK,KAAO,KAAK,GAAK,KAAK,GAAG,EACrD,MAAO,CAAE,GAAI,KAAK,GAAK,KAAK,IAAIA,EAAQ,GAAI,KAAK,GAAK,KAAK,IAAIA,CAAM,CACvE,EACA0qI,GAAe,UAAU,sBAAwB,SAASx6G,EAAI,CAC5D,IAAI+V,EAAQ,KAAK,iBAAiB/V,CAAG,EACjCk5G,EAAU,KAAK,qBACnB,MAAO,CAAC,EAAGnjG,EAAM,EAAG,EAAGA,EAAM,EAAG,SAAUmjG,EAAQ,EAAG,SAAUA,EAAQ,CAAC,CAC1E,EC7Be,SAAQ0B,GAACjoG,EAAW,CACjC,IAAIpiC,EAAS,EACTsqI,EAAkB,CAAA,EAClB5lD,EAAY,CAAA,EAEhB,SAAS6lD,EAAc5lC,EAAO,CAC5B,GAAG,CAACA,EAAQ,OAAO,KAMnB,QALI34B,EAASw+D,GAAM7lC,CAAM,EACrBue,EAAM,CAAC,EAAG,CAAC,EACXunB,EAAa,CAAC,EAAG,CAAC,EAClBrqG,EACAsqG,EACK1lK,EAAI,EAAGA,EAAIgnG,EAAO,OAAQhnG,IAE9BgnG,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KAClBk+I,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EACjC0lK,EAAY,CAACxnB,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,EAC3Bx+B,EAAU,KAAK,IAAI,GACX1Y,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACzBk+I,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,CAAC,EACnDwnB,EAAY,CAACxnB,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,EAC3Bx+B,EAAU,KAAK,IAAI,GAGb1Y,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACvBg7B,EAASA,EAAS,KAAK,KAAK,KAAK,IAAIkjH,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAG,CAAC,EAAI,KAAK,IAAIk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAG,CAAC,CAAC,EACnG0/G,EAAU,KAAK,IAAIulD,GAAe/mB,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,CAAC,EAC7Ek+I,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,GACzBgnG,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACzBg7B,EAASA,EAAS,KAAK,KAAK,KAAK,IAAIgsE,EAAOhnG,CAAC,EAAE,CAAC,EAAG,CAAC,EAAI,KAAK,IAAIgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAG,CAAC,CAAC,EACjF0/G,EAAU,KAAK,IAAIulD,GAAe/mB,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,CAAC,CAAC,EAC/FA,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,CAAC,GAC3Cl3C,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACzBg7B,EAASA,EAAS,KAAK,IAAIkjH,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAChD0/G,EAAU,KAAK,IAAIulD,GAAe/mB,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,CAAC,EACvEA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,GACZgnG,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACzBg7B,EAASA,EAAS,KAAK,IAAIgsE,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EACvC0/G,EAAU,KAAK,IAAIulD,GAAe/mB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,CAAC,EAChFA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,GACrBl3C,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACzBg7B,EAASA,EAAS,KAAK,IAAIkjH,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAChD0/G,EAAU,KAAK,IAAIulD,GAAe/mB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,CAAC,EACvEk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,GACZgnG,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACzBg7B,EAASA,EAAS,KAAK,IAAIgsE,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EACvC0/G,EAAU,KAAK,IAAIulD,GAAe/mB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,CAAC,EAChFk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,GAEpBl3C,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KAAOgnG,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KAClDg7B,EAASA,EAAS,KAAK,KAAK,KAAK,IAAI0qI,EAAU,CAAC,EAAIxnB,EAAI,CAAC,EAAG,CAAC,EAAI,KAAK,IAAIwnB,EAAU,CAAC,EAAIxnB,EAAI,CAAC,EAAG,CAAC,CAAC,EACnGx+B,EAAU,KAAK,IAAIulD,GAAe/mB,EAAI,CAAC,EAAGwnB,EAAU,CAAC,EAAGxnB,EAAI,CAAC,EAAGwnB,EAAU,CAAC,CAAC,CAAC,EAC7ExnB,EAAM,CAACwnB,EAAU,CAAC,EAAGA,EAAU,CAAC,CAAC,GAG3B1+D,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACvBo7D,EAAQ,IAAI6nG,GAAO/kB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAIgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAIgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EACxHg7B,EAASA,EAASogC,EAAM,iBACxB8iF,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EACjC0/G,EAAU,KAAKtkD,CAAK,GACZ4rC,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACzBo7D,EAAQ,IAAI6nG,GAAO/kB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAC9Kg7B,EAASA,EAASogC,EAAM,iBACxB8iF,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,CAAC,EACnDx+B,EAAU,KAAKtkD,CAAK,GACZ4rC,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACtBA,EAAE,GAAK,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,QAAQgnG,EAAOhnG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAI,GACpDo7D,EAAQ,IAAI6nG,GAAO/kB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAI,EAAEA,EAAI,CAAC,EAAIl3C,EAAOhnG,EAAE,CAAC,EAAEgnG,EAAOhnG,EAAE,CAAC,EAAE,OAAS,CAAC,EAAG,EAAEk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,EAAE,CAAC,EAAEgnG,EAAOhnG,EAAE,CAAC,EAAE,OAAS,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAIgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAE3Lo7D,EAAQ,IAAI6nG,GAAO/kB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAIgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAE7Gg7B,EAASA,EAASogC,EAAM,iBACxB8iF,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EACjC0/G,EAAU,KAAKtkD,CAAK,GACX4rC,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACvBA,EAAE,GAAK,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,QAAQgnG,EAAOhnG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAI,GACpDo7D,EAAQ,IAAI6nG,GAAO/kB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAI9iF,EAAM,EAAE,EAAIA,EAAM,EAAE,EAAG8iF,EAAI,CAAC,EAAI9iF,EAAM,EAAE,EAAIA,EAAM,EAAE,EAAG8iF,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAE/Lo7D,EAAQ,IAAI6nG,GAAO/kB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAEjJg7B,EAASA,EAASogC,EAAM,iBACxB8iF,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,CAAC,EACnDx+B,EAAU,KAAKtkD,CAAK,GAGd4rC,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACpBk+I,EAAI,CAAC,GAAKl3C,EAAOhnG,CAAC,EAAE,CAAC,GAAKk+I,EAAI,CAAC,GAAKl3C,EAAOhnG,CAAC,EAAE,CAAC,EAChDo7D,EAAQ,IAAI6nG,GAAO/kB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAIgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAE3Fo7D,EAAQ,IAAI6pG,GAAej+D,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAEnFg7B,EAASA,EAASogC,EAAM,iBACxBskD,EAAU,KAAKtkD,CAAK,EACpB8iF,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EACjCylK,EAAa,CAACz+D,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,GAE/BgnG,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACrBgnG,EAAOhnG,CAAC,EAAE,CAAC,GAAK,GAAKgnG,EAAOhnG,CAAC,EAAE,CAAC,GAAK,EAGxCo7D,EAAQ,IAAI6pG,GAAe/mB,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAFrHo7D,EAAQ,IAAI6nG,GAAO/kB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAIjIg7B,EAASA,EAASogC,EAAM,iBACxBqqG,EAAa,CAACvnB,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAC1Dk+I,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,CAAC,EACnDx+B,EAAU,KAAKtkD,CAAK,GACZ4rC,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACtBA,EAAE,GAAK,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,QAAQgnG,EAAOhnG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAI,GACpDo7D,EAAQ,IAAI6nG,GAAO/kB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAI,EAAIA,EAAI,CAAC,EAAIunB,EAAW,CAAC,EAAI,EAAIvnB,EAAI,CAAC,EAAIunB,EAAW,CAAC,EAAIz+D,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAExHo7D,EAAQ,IAAI6pG,GAAe/mB,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAEvE0/G,EAAU,KAAKtkD,CAAK,EACpBpgC,EAASA,EAASogC,EAAM,iBACxBqqG,EAAa,CAAC,EAAIvnB,EAAI,CAAC,EAAIunB,EAAW,CAAC,EAAI,EAAIvnB,EAAI,CAAC,EAAIunB,EAAW,CAAC,CAAC,EACrEvnB,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,GAEzBgnG,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACtBA,EAAE,GAAK,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,QAAQgnG,EAAOhnG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAI,GACpDo7D,EAAQ,IAAI6nG,GAAO/kB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAI,EAAIA,EAAI,CAAC,EAAIunB,EAAW,CAAC,EAAI,EAAIvnB,EAAI,CAAC,EAAIunB,EAAW,CAAC,EAAIvnB,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAE1Io7D,EAAQ,IAAI6pG,GAAe/mB,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAEzFg7B,EAASA,EAASogC,EAAM,iBACxBqqG,EAAa,CAAC,EAAIvnB,EAAI,CAAC,EAAIunB,EAAW,CAAC,EAAI,EAAIvnB,EAAI,CAAC,EAAIunB,EAAW,CAAC,CAAC,EACrEvnB,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAIk+I,EAAI,CAAC,CAAC,EACnDx+B,EAAU,KAAKtkD,CAAK,GACZ4rC,EAAOhnG,CAAC,EAAE,CAAC,IAAM,KACzBo7D,EAAQ,IAAImE,GAAI2+E,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAEhIg7B,EAASA,EAASogC,EAAM,iBACxB8iF,EAAM,CAACl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EACjC0/G,EAAU,KAAKtkD,CAAK,GACZ4rC,EAAOhnG,CAAC,EAAE,CAAC,IAAM,MACzBo7D,EAAQ,IAAImE,GAAI2+E,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGgnG,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EAElJg7B,EAASA,EAASogC,EAAM,iBACxB8iF,EAAM,CAACA,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,EAAGk+I,EAAI,CAAC,EAAIl3C,EAAOhnG,CAAC,EAAE,CAAC,CAAC,EACnD0/G,EAAU,KAAKtkD,CAAK,GAEtBkqG,EAAgB,KAAKtqI,CAAM,EAG7B,OAAOuqI,CACR,CAEFA,EAAc,eAAiB,UAAU,CACtC,OAAOvqI,CACX,EAEEuqI,EAAc,iBAAmB,SAASR,EAAe,CACvD,IAAIY,EAAeC,EAAgBb,CAAc,EACjD,OAAOrlD,EAAUimD,EAAa,CAAC,EAAE,iBAAiBA,EAAa,QAAQ,CAC3E,EAEEJ,EAAc,mBAAqB,SAASR,EAAe,CACzD,IAAIY,EAAeC,EAAgBb,CAAc,EACjD,OAAOrlD,EAAUimD,EAAa,CAAC,EAAE,mBAAmBA,EAAa,QAAQ,CAC7E,EAEEJ,EAAc,sBAAwB,SAASR,EAAe,CAC5D,IAAIY,EAAeC,EAAgBb,CAAc,EACjD,OAAOrlD,EAAUimD,EAAa,CAAC,EAAE,sBAAsBA,EAAa,QAAQ,CAChF,EAEE,IAAIC,EAAkB,SAASb,EAAe,CACzCA,EAAiB,EAClBA,EAAiB,EACTA,EAAiB/pI,IACzB+pI,EAAiB/pI,GAKnB,QAFIh7B,EAAIslK,EAAgB,OAAS,EAE3BA,EAAgBtlK,CAAC,GAAK+kK,GAAkBO,EAAgBtlK,CAAC,EAAI,GACjEA,IAEF,OAAAA,IACO,CAAC,SAAU+kK,EAAeO,EAAgBtlK,EAAE,CAAC,EAAG,EAAGA,CAAC,CAC/D,EAEE,OAAOulK,EAAcnoG,CAAS,CAChC,CCxLO,SAAS+D,GAAS77D,EAAG8Z,EAAG,CAC7B,OAAO,KAAK,MAAM9Z,EAAE,CAAC,EAAI8Z,EAAE,CAAC,IAAM9Z,EAAE,CAAC,EAAI8Z,EAAE,CAAC,IAAM9Z,EAAE,CAAC,EAAI8Z,EAAE,CAAC,IAAM9Z,EAAE,CAAC,EAAI8Z,EAAE,CAAC,EAAE,CAChF,CAEO,SAASymJ,GAAWvgK,EAAG8Z,EAAG0mJ,EAAK,CACpC,MAAO,CAACxgK,EAAE,CAAC,GAAK8Z,EAAE,CAAC,EAAI9Z,EAAE,CAAC,GAAKwgK,EAAKxgK,EAAE,CAAC,GAAK8Z,EAAE,CAAC,EAAI9Z,EAAE,CAAC,GAAKwgK,CAAG,CAChE,CAEO,SAASC,GAAUzgK,EAAG8Z,EAAG,CAC9B,OAAO+hD,GAAS77D,EAAG8Z,CAAC,EAAI,IAC1B,CAEO,SAAS4mJ,GAAkB1gK,EAAG8Z,EAAGugH,EAAQ,CAC9C,IAAIsmC,EAAgB3gK,EAAE,IAAI,CAACsS,EAAG,IAAMsuJ,GAAiBtuJ,EAAGwH,EAAE,CAAC,CAAC,CAAC,EAE7D,OAAO,SAASxgB,EAAG,CACjB,IAAIy0C,EAAS4yH,EAAc,IAAI77H,GAAMA,EAAGxrC,CAAC,CAAC,EAC1C,OAAO+gI,EAASwmC,GAAa9yH,CAAM,EAAIA,CAC3C,CACA,CAEO,SAAS6yH,GAAiB5gK,EAAG8Z,EAAG,CACrC,OAAO,SAASxgB,EAAG,CACjB,OAAO0G,EAAE,IAAI,CAACsS,EAAG5X,IAAM4X,EAAIhZ,GAAKwgB,EAAEpf,CAAC,EAAI4X,EAAE,CAC7C,CACA,CAEO,SAASwuJ,GAAelhE,EAAQ,CACrC,OAAO,OAAOA,GAAW,UAAY,SAASA,CAAM,CACtD,CChCO,MAAMmhE,GAAgB;AAAA;AAAA;AAAA;AAAA,ECM7B,SAASb,GAAMxpI,EAAK,CAClB,OAAO,IAAIsqI,GAAKtqI,CAAG,EAAE,IAAG,CAC1B,CAEA,SAAS4rE,GAAMZ,EAAQ,CACrB,OAAOA,EACJ,SAAU,EACV,MAAM,GAAG,EACT,IAAI,CAACpvF,EAAG5X,KACP4X,EAAIA,EAAE,OACC5X,GAAK4X,EAAI,IAAMA,EAAIA,EAC3B,EACA,OAAOA,GAAKA,CAAC,CAClB,CAEO,SAASuuJ,GAAaI,EAAM,CACjC,MAAO,IAAMA,EAAK,KAAK,GAAG,EAAI,GAChC,CAMO,SAASC,GAAiBxqI,EAAKyqI,EAAkB,CACtD,IAAIz/D,EAASw+D,GAAMxpI,CAAG,EAEtB,OAAO0qI,GAAU1/D,CAAM,GAAK2/D,GAAgB3/D,EAAQy/D,CAAgB,CACtE,CAEA,SAASC,GAAU1/D,EAAQ,CACzB,IAAI3lE,EAAW2lE,EAAO,UAAY,CAAE,EAClCu/D,EAAO,CAAA,EAET,GAAI,CAACllI,EAAS,QAAUA,EAAS,CAAC,EAAE,CAAC,IAAM,IACzC,MAAO,GAGT,QAASrhC,EAAI,EAAGA,EAAIqhC,EAAS,OAAQrhC,IAAK,CACxC,GAAI,CAAC2xD,EAAS3xC,EAAGhX,CAAC,EAAIq4B,EAASrhC,CAAC,EAChC,GAAK2xD,IAAY,KAAO3xD,GAAM2xD,IAAY,IACxC,MACK,GAAIA,IAAY,KAAOA,IAAY,IACxC40G,EAAK,KAAK,CAACvmJ,EAAGhX,CAAC,CAAC,UACP2oD,IAAY,IACrB40G,EAAK,KAAK,CAACvmJ,EAAGumJ,EAAKA,EAAK,OAAS,CAAC,EAAE,CAAC,CAAC,CAAC,UAC9B50G,IAAY,IACrB40G,EAAK,KAAK,CAACA,EAAKA,EAAK,OAAS,CAAC,EAAE,CAAC,EAAGvmJ,CAAC,CAAC,MAEvC,OAAO,EAEV,CAED,OAAOumJ,EAAK,OAAS,CAAE,KAAAA,CAAI,EAAK,EAClC,CAEA,SAASI,GAAgB3/D,EAAQy/D,EAAkB,CAC9C,IAACG,EAAWh/D,GAAMZ,CAAM,EAAE,CAAC,EAC5Bu/D,EAAO,CAAA,EAEP/mH,EACA12C,EACA8hG,EAAY,EAEd,GAAI,CAACg8D,EACH,MAAM,IAAI,UAAUP,EAAa,EAGnCv9J,EAAIqrJ,GAAQyS,CAAQ,EACpBpnH,EAAM12C,EAAE,iBAEJ29J,GAAoBL,GAAeK,CAAgB,GAAKA,EAAmB,IAC7E77D,EAAY,KAAK,IAAIA,EAAW,KAAK,KAAKprD,EAAMinH,CAAgB,CAAC,GAGnE,QAASzmK,EAAI,EAAGA,EAAI4qG,EAAW5qG,IAAK,CAClC,IAAI0X,EAAI5O,EAAE,iBAAiB02C,EAAMx/C,EAAI4qG,CAAS,EAC9C27D,EAAK,KAAK,CAAC7uJ,EAAE,EAAGA,EAAE,CAAC,CAAC,CACrB,CAED,MAAO,CACL,KAAA6uJ,EACA,WAAY,EAChB,CACA,CAEA,SAASpS,GAAQv8I,EAAG,CAElB,GAAI,OAAO,OAAW,KAAe,QAAU,OAAO,SACpD,GAAI,CACF,IAAI85C,EAAO,OAAO,SAAS,gBAAgB,6BAA8B,MAAM,EAC/E,OAAAA,EAAK,eAAe,KAAM,IAAK95C,CAAC,EACzB85C,CACb,MAAgB,CAAE,CAGhB,OAAO2zG,GAAkBztJ,CAAC,CAC5B,CCnGO,SAASivJ,GAAUN,EAAM37D,EAAW,CACzC,MAAMk8D,EAAgBP,EAAK,OAAS37D,EAClC/kE,EAAO24H,GAAc+H,CAAI,EAAI37D,EAE/B,IAAI5qG,EAAI,EACN+mK,EAAS,EACTC,EAAWnhI,EAAO,EAEpB,KAAO0gI,EAAK,OAASO,GAAe,CAClC,IAAI,EAAIP,EAAKvmK,CAAC,EACZof,EAAImnJ,GAAMvmK,EAAI,GAAKumK,EAAK,MAAM,EAC9B1M,EAAU14F,GAAS,EAAG/hD,CAAC,EAEzB,GAAI4nJ,GAAYD,EAASlN,EAAS,CAChC0M,EAAK,OAAOvmK,EAAI,EAAG,EAAG65J,EAAUgM,GAAW,EAAGzmJ,GAAI4nJ,EAAWD,GAAUlN,CAAO,EAAI,EAAE,MAAM,CAAC,CAAC,EAC5FmN,GAAYnhI,EACZ,QACD,CAEDkhI,GAAUlN,EACV75J,GACD,CACH,CAEO,SAASinK,GAAOV,EAAME,EAAmB,IAAU,CACxD,QAASzmK,EAAI,EAAGA,EAAIumK,EAAK,OAAQvmK,IAAK,CACpC,IAAIsF,EAAIihK,EAAKvmK,CAAC,EACZof,EAAIpf,IAAMumK,EAAK,OAAS,EAAIA,EAAK,CAAC,EAAIA,EAAKvmK,EAAI,CAAC,EAGlD,KAAOmhE,GAAS77D,EAAG8Z,CAAC,EAAIqnJ,GACtBrnJ,EAAIymJ,GAAWvgK,EAAG8Z,EAAG,EAAG,EACxBmnJ,EAAK,OAAOvmK,EAAI,EAAG,EAAGof,CAAC,CAE1B,CACH,CChCe,SAAS8nJ,GAAcX,EAAME,EAAkB,CAC5D,IAAIpnG,EAAQk/F,EAAM4I,EAElB,GAAI,OAAOZ,GAAS,SAAU,CAC5B,IAAIa,EAAYZ,GAAiBD,EAAME,CAAgB,EACvDF,EAAOa,EAAU,KACjBD,EAAaC,EAAU,UACxB,SAAU,CAAC,MAAM,QAAQb,CAAI,EAC5B,MAAM,IAAI,UAAUF,EAAa,EAKnC,GAFAhnG,EAASknG,EAAK,MAAM,CAAC,EAEjB,CAACc,GAAUhoG,CAAM,EACnB,MAAM,IAAI,UAAUgnG,EAAa,EAKnC,OAAIhnG,EAAO,OAAS,GAAK0mG,GAAU1mG,EAAO,CAAC,EAAGA,EAAOA,EAAO,OAAS,CAAC,CAAC,GACrEA,EAAO,IAAG,EAGZk/F,EAAOF,GAAYh/F,CAAM,EAGrBk/F,EAAO,GACTl/F,EAAO,QAAO,EAId,CAAC8nG,GACDV,GACAL,GAAeK,CAAgB,GAC/BA,EAAmB,GAEnBQ,GAAO5nG,EAAQonG,CAAgB,EAG1BpnG,CACT,CAEA,SAASgoG,GAAUd,EAAM,CACvB,OAAOA,EAAK,MAAM,SAAS/lG,EAAO,CAChC,OACE,MAAM,QAAQA,CAAK,GACnBA,EAAM,QAAU,GAChB4lG,GAAe5lG,EAAM,CAAC,CAAC,GACvB4lG,GAAe5lG,EAAM,CAAC,CAAC,CAE7B,CAAG,CACH,CCvDe,SAAA5E,GAAS2qG,EAAMrqJ,EAAI,CAChC,IAAIsjC,EAAM+mH,EAAK,OACXn6G,EAAM,IACNk7G,EACAC,EACAC,EAEJ,QAAS//G,EAAS,EAAGA,EAASjI,EAAKiI,IACjC8/G,EAAe,EAEfrrJ,EAAG,QAAQ,SAASxE,EAAG1X,EAAE,CACvB,IAAI4X,EAAIupD,GAASolG,GAAM9+G,EAASznD,GAAKw/C,CAAG,EAAG9nC,CAAC,EAC5C6vJ,GAAgB3vJ,EAAIA,CAC1B,CAAK,EAEG2vJ,EAAen7G,IACjBA,EAAMm7G,EACND,EAAa7/G,GAIb6/G,IACFE,EAAUjB,EAAK,OAAO,EAAGe,CAAU,EACnCf,EAAK,OAAOA,EAAK,OAAQ,EAAG,GAAGiB,CAAO,EAE1C,CCtBe,SAAA93D,GAAS+3D,EAAWC,EAAS,CAAE,iBAAAjB,EAAmB,GAAI,OAAA9mC,EAAS,EAAM,EAAG,GAAI,CACzF,IAAIgoC,EAAWT,GAAcO,EAAWhB,CAAgB,EACtDmB,EAASV,GAAcQ,EAASjB,CAAgB,EAChD32D,EAAe+3D,GAAgBF,EAAUC,EAAQjoC,CAAM,EAGzD,MAAI,CAACA,GAAW,OAAO8nC,GAAc,UAAY,OAAOC,GAAY,SAC3D53D,EAGFlxG,GACDA,EAAI,MAAQ,OAAO6oK,GAAc,SAC5BA,EAEL,EAAI7oK,EAAI,MAAQ,OAAO8oK,GAAY,SAC9BA,EAEF53D,EAAalxG,CAAC,CAEzB,CAEO,SAASipK,GAAgBF,EAAUC,EAAQjoC,EAAQ,CACxD,IAAI9rE,EAEJ,OAAAA,EAAO8zG,EAAS,OAASC,EAAO,OAGhCf,GAAUc,EAAU9zG,EAAO,EAAIA,EAAO,GAAK,CAAC,EAC5CgzG,GAAUe,EAAQ/zG,EAAO,EAAIA,EAAO,CAAC,EAErC+H,GAAO+rG,EAAUC,CAAM,EAEhB5B,GAAkB2B,EAAUC,EAAQjoC,CAAM,CACnD,qBCpCAmoC,GAAc,QAAGC,GACKD,GAAA,QAAA,QAAGC,GAEzB,SAASA,GAAO/nI,EAAMgoI,EAAaC,EAAK,CAEpCA,EAAMA,GAAO,EAEb,IAAIC,EAAWF,GAAeA,EAAY,OACtCG,EAAWD,EAAWF,EAAY,CAAC,EAAIC,EAAMjoI,EAAK,OAClDooI,EAAYC,GAAWroI,EAAM,EAAGmoI,EAAUF,EAAK,EAAI,EACnDK,EAAY,CAAA,EAEhB,GAAI,CAACF,GAAaA,EAAU,OAASA,EAAU,KAAM,OAAOE,EAE5D,IAAIryG,EAAMC,EAAMC,EAAMC,EAAMp2C,EAAGhX,EAAGu/J,EAKlC,GAHIL,IAAUE,EAAYI,GAAexoI,EAAMgoI,EAAaI,EAAWH,CAAG,GAGtEjoI,EAAK,OAAS,GAAKioI,EAAK,CACxBhyG,EAAOE,EAAOn2B,EAAK,CAAC,EACpBk2B,EAAOE,EAAOp2B,EAAK,CAAC,EAEpB,QAAShgC,EAAIioK,EAAKjoK,EAAImoK,EAAUnoK,GAAKioK,EACjCjoJ,EAAIggB,EAAKhgC,CAAC,EACVgJ,EAAIg3B,EAAKhgC,EAAI,CAAC,EACVggB,EAAIi2C,IAAMA,EAAOj2C,GACjBhX,EAAIktD,IAAMA,EAAOltD,GACjBgX,EAAIm2C,IAAMA,EAAOn2C,GACjBhX,EAAIotD,IAAMA,EAAOptD,GAIzBu/J,EAAU,KAAK,IAAIpyG,EAAOF,EAAMG,EAAOF,CAAI,EAC3CqyG,EAAUA,IAAY,EAAI,MAAQA,EAAU,CAC/C,CAED,OAAAE,GAAaL,EAAWE,EAAWL,EAAKhyG,EAAMC,EAAMqyG,EAAS,CAAC,EAEvDD,CACX,CAGA,SAASD,GAAWroI,EAAMhB,EAAOtD,EAAKusI,EAAKS,EAAW,CAClD,IAAI,EAAG56H,EAEP,GAAI46H,IAAeC,GAAW3oI,EAAMhB,EAAOtD,EAAKusI,CAAG,EAAI,EACnD,IAAK,EAAIjpI,EAAO,EAAItD,EAAK,GAAKusI,EAAKn6H,EAAO86H,GAAW,EAAG5oI,EAAK,CAAC,EAAGA,EAAK,EAAI,CAAC,EAAG8N,CAAI,MAElF,KAAK,EAAIpS,EAAMusI,EAAK,GAAKjpI,EAAO,GAAKipI,EAAKn6H,EAAO86H,GAAW,EAAG5oI,EAAK,CAAC,EAAGA,EAAK,EAAI,CAAC,EAAG8N,CAAI,EAG7F,OAAIA,GAAQ+6H,GAAO/6H,EAAMA,EAAK,IAAI,IAC9Bg7H,GAAWh7H,CAAI,EACfA,EAAOA,EAAK,MAGTA,CACX,CAGA,SAASi7H,GAAa/pI,EAAOtD,EAAK,CAC9B,GAAI,CAACsD,EAAO,OAAOA,EACdtD,IAAKA,EAAMsD,GAEhB,IAAItnB,EAAIsnB,EACJgqI,EACJ,EAGI,IAFAA,EAAQ,GAEJ,CAACtxJ,EAAE,UAAYmxJ,GAAOnxJ,EAAGA,EAAE,IAAI,GAAK6mJ,GAAK7mJ,EAAE,KAAMA,EAAGA,EAAE,IAAI,IAAM,GAAI,CAGpE,GAFAoxJ,GAAWpxJ,CAAC,EACZA,EAAIgkB,EAAMhkB,EAAE,KACRA,IAAMA,EAAE,KAAM,MAClBsxJ,EAAQ,EAEpB,MACYtxJ,EAAIA,EAAE,WAELsxJ,GAAStxJ,IAAMgkB,GAExB,OAAOA,CACX,CAGA,SAAS+sI,GAAaQ,EAAKX,EAAWL,EAAKhyG,EAAMC,EAAMqyG,EAASW,EAAM,CAClE,GAAKD,EAGL,CAAI,CAACC,GAAQX,GAASY,GAAWF,EAAKhzG,EAAMC,EAAMqyG,CAAO,EAMzD,QAJIj4G,EAAO24G,EACPl+H,EAAMhB,EAGHk/H,EAAI,OAASA,EAAI,MAAM,CAI1B,GAHAl+H,EAAOk+H,EAAI,KACXl/H,EAAOk/H,EAAI,KAEPV,EAAUa,GAAYH,EAAKhzG,EAAMC,EAAMqyG,CAAO,EAAIc,GAAMJ,CAAG,EAAG,CAE9DX,EAAU,KAAKv9H,EAAK,EAAIk9H,EAAM,CAAC,EAC/BK,EAAU,KAAKW,EAAI,EAAIhB,EAAM,CAAC,EAC9BK,EAAU,KAAKv+H,EAAK,EAAIk+H,EAAM,CAAC,EAE/Ba,GAAWG,CAAG,EAGdA,EAAMl/H,EAAK,KACXumB,EAAOvmB,EAAK,KAEZ,QACH,CAKD,GAHAk/H,EAAMl/H,EAGFk/H,IAAQ34G,EAAM,CAET44G,EAIMA,IAAS,GAChBD,EAAMK,GAAuBP,GAAaE,CAAG,EAAGX,EAAWL,CAAG,EAC9DQ,GAAaQ,EAAKX,EAAWL,EAAKhyG,EAAMC,EAAMqyG,EAAS,CAAC,GAGjDW,IAAS,GAChBK,GAAYN,EAAKX,EAAWL,EAAKhyG,EAAMC,EAAMqyG,CAAO,EATpDE,GAAaM,GAAaE,CAAG,EAAGX,EAAWL,EAAKhyG,EAAMC,EAAMqyG,EAAS,CAAC,EAY1E,KACH,CACJ,EACL,CAGA,SAASc,GAAMJ,EAAK,CAChB,IAAI3jK,EAAI2jK,EAAI,KACR7pJ,EAAI6pJ,EACJvgK,EAAIugK,EAAI,KAEZ,GAAI1K,GAAKj5J,EAAG8Z,EAAG1W,CAAC,GAAK,EAAG,MAAO,GAY/B,QATIykD,EAAK7nD,EAAE,EAAGgoD,EAAKluC,EAAE,EAAG43C,EAAKtuD,EAAE,EAAG0kD,EAAK9nD,EAAE,EAAGioD,EAAKnuC,EAAE,EAAG63C,EAAKvuD,EAAE,EAGzD/F,EAAKwqD,EAAKG,EAAMH,EAAK6J,EAAK7J,EAAK6J,EAAO1J,EAAK0J,EAAK1J,EAAK0J,EACrD51D,EAAKgsD,EAAKG,EAAMH,EAAK6J,EAAK7J,EAAK6J,EAAO1J,EAAK0J,EAAK1J,EAAK0J,EACrD1hD,EAAK43C,EAAKG,EAAMH,EAAK6J,EAAK7J,EAAK6J,EAAO1J,EAAK0J,EAAK1J,EAAK0J,EACrD5iD,EAAKg5C,EAAKG,EAAMH,EAAK6J,EAAK7J,EAAK6J,EAAO1J,EAAK0J,EAAK1J,EAAK0J,EAErD,EAAIvuD,EAAE,KACH,IAAMpD,GAAG,CACZ,GAAI,EAAE,GAAK3C,GAAM,EAAE,GAAK4S,GAAM,EAAE,GAAKnU,GAAM,EAAE,GAAKgT,GAC9Co1J,GAAgBr8G,EAAIC,EAAIE,EAAIC,EAAIyJ,EAAIC,EAAI,EAAE,EAAG,EAAE,CAAC,GAChDsnG,GAAK,EAAE,KAAM,EAAG,EAAE,IAAI,GAAK,EAAG,MAAO,GACzC,EAAI,EAAE,IACT,CAED,MAAO,EACX,CAEA,SAAS6K,GAAYH,EAAKhzG,EAAMC,EAAMqyG,EAAS,CAC3C,IAAIjjK,EAAI2jK,EAAI,KACR7pJ,EAAI6pJ,EACJvgK,EAAIugK,EAAI,KAEZ,GAAI1K,GAAKj5J,EAAG8Z,EAAG1W,CAAC,GAAK,EAAG,MAAO,GAkB/B,QAhBIykD,EAAK7nD,EAAE,EAAGgoD,EAAKluC,EAAE,EAAG43C,EAAKtuD,EAAE,EAAG0kD,EAAK9nD,EAAE,EAAGioD,EAAKnuC,EAAE,EAAG63C,EAAKvuD,EAAE,EAGzD/F,EAAKwqD,EAAKG,EAAMH,EAAK6J,EAAK7J,EAAK6J,EAAO1J,EAAK0J,EAAK1J,EAAK0J,EACrD51D,EAAKgsD,EAAKG,EAAMH,EAAK6J,EAAK7J,EAAK6J,EAAO1J,EAAK0J,EAAK1J,EAAK0J,EACrD1hD,EAAK43C,EAAKG,EAAMH,EAAK6J,EAAK7J,EAAK6J,EAAO1J,EAAK0J,EAAK1J,EAAK0J,EACrD5iD,EAAKg5C,EAAKG,EAAMH,EAAK6J,EAAK7J,EAAK6J,EAAO1J,EAAK0J,EAAK1J,EAAK0J,EAGrDwyG,EAAOC,GAAO/mK,EAAIvB,EAAI60D,EAAMC,EAAMqyG,CAAO,EACzCoB,EAAOD,GAAOn0J,EAAInB,EAAI6hD,EAAMC,EAAMqyG,CAAO,EAEzC7wJ,EAAIuxJ,EAAI,MACRt7J,EAAIs7J,EAAI,MAGLvxJ,GAAKA,EAAE,GAAK+xJ,GAAQ97J,GAAKA,EAAE,GAAKg8J,GAAM,CAKzC,GAJIjyJ,EAAE,GAAK/U,GAAM+U,EAAE,GAAKnC,GAAMmC,EAAE,GAAKtW,GAAMsW,EAAE,GAAKtD,GAAMsD,IAAMpS,GAAKoS,IAAMhP,GACrE8gK,GAAgBr8G,EAAIC,EAAIE,EAAIC,EAAIyJ,EAAIC,EAAIv/C,EAAE,EAAGA,EAAE,CAAC,GAAK6mJ,GAAK7mJ,EAAE,KAAMA,EAAGA,EAAE,IAAI,GAAK,IACpFA,EAAIA,EAAE,MAEF/J,EAAE,GAAKhL,GAAMgL,EAAE,GAAK4H,GAAM5H,EAAE,GAAKvM,GAAMuM,EAAE,GAAKyG,GAAMzG,IAAMrI,GAAKqI,IAAMjF,GACrE8gK,GAAgBr8G,EAAIC,EAAIE,EAAIC,EAAIyJ,EAAIC,EAAItpD,EAAE,EAAGA,EAAE,CAAC,GAAK4wJ,GAAK5wJ,EAAE,KAAMA,EAAGA,EAAE,IAAI,GAAK,GAAG,MAAO,GAC9FA,EAAIA,EAAE,KACT,CAGD,KAAO+J,GAAKA,EAAE,GAAK+xJ,GAAM,CACrB,GAAI/xJ,EAAE,GAAK/U,GAAM+U,EAAE,GAAKnC,GAAMmC,EAAE,GAAKtW,GAAMsW,EAAE,GAAKtD,GAAMsD,IAAMpS,GAAKoS,IAAMhP,GACrE8gK,GAAgBr8G,EAAIC,EAAIE,EAAIC,EAAIyJ,EAAIC,EAAIv/C,EAAE,EAAGA,EAAE,CAAC,GAAK6mJ,GAAK7mJ,EAAE,KAAMA,EAAGA,EAAE,IAAI,GAAK,EAAG,MAAO,GAC9FA,EAAIA,EAAE,KACT,CAGD,KAAO/J,GAAKA,EAAE,GAAKg8J,GAAM,CACrB,GAAIh8J,EAAE,GAAKhL,GAAMgL,EAAE,GAAK4H,GAAM5H,EAAE,GAAKvM,GAAMuM,EAAE,GAAKyG,GAAMzG,IAAMrI,GAAKqI,IAAMjF,GACrE8gK,GAAgBr8G,EAAIC,EAAIE,EAAIC,EAAIyJ,EAAIC,EAAItpD,EAAE,EAAGA,EAAE,CAAC,GAAK4wJ,GAAK5wJ,EAAE,KAAMA,EAAGA,EAAE,IAAI,GAAK,EAAG,MAAO,GAC9FA,EAAIA,EAAE,KACT,CAED,MAAO,EACX,CAGA,SAAS27J,GAAuBtqI,EAAOspI,EAAWL,EAAK,CACnD,IAAIvwJ,EAAIsnB,EACR,EAAG,CACC,IAAI15B,EAAIoS,EAAE,KACN0H,EAAI1H,EAAE,KAAK,KAEX,CAACmxJ,GAAOvjK,EAAG8Z,CAAC,GAAKwqJ,GAAWtkK,EAAGoS,EAAGA,EAAE,KAAM0H,CAAC,GAAKyqJ,GAAcvkK,EAAG8Z,CAAC,GAAKyqJ,GAAczqJ,EAAG9Z,CAAC,IAEzFgjK,EAAU,KAAKhjK,EAAE,EAAI2iK,EAAM,CAAC,EAC5BK,EAAU,KAAK5wJ,EAAE,EAAIuwJ,EAAM,CAAC,EAC5BK,EAAU,KAAKlpJ,EAAE,EAAI6oJ,EAAM,CAAC,EAG5Ba,GAAWpxJ,CAAC,EACZoxJ,GAAWpxJ,EAAE,IAAI,EAEjBA,EAAIsnB,EAAQ5f,GAEhB1H,EAAIA,EAAE,IACd,OAAaA,IAAMsnB,GAEf,OAAO+pI,GAAarxJ,CAAC,CACzB,CAGA,SAAS6xJ,GAAYvqI,EAAOspI,EAAWL,EAAKhyG,EAAMC,EAAMqyG,EAAS,CAE7D,IAAIjjK,EAAI05B,EACR,EAAG,CAEC,QADI5f,EAAI9Z,EAAE,KAAK,KACR8Z,IAAM9Z,EAAE,MAAM,CACjB,GAAIA,EAAE,IAAM8Z,EAAE,GAAK0qJ,GAAgBxkK,EAAG8Z,CAAC,EAAG,CAEtC,IAAI,EAAI2qJ,GAAazkK,EAAG8Z,CAAC,EAGzB9Z,EAAIyjK,GAAazjK,EAAGA,EAAE,IAAI,EAC1B,EAAIyjK,GAAa,EAAG,EAAE,IAAI,EAG1BN,GAAanjK,EAAGgjK,EAAWL,EAAKhyG,EAAMC,EAAMqyG,EAAS,CAAC,EACtDE,GAAa,EAAGH,EAAWL,EAAKhyG,EAAMC,EAAMqyG,EAAS,CAAC,EACtD,MACH,CACDnpJ,EAAIA,EAAE,IACT,CACD9Z,EAAIA,EAAE,IACd,OAAaA,IAAM05B,EACnB,CAGA,SAASwpI,GAAexoI,EAAMgoI,EAAaI,EAAWH,EAAK,CACvD,IAAIlrE,EAAQ,CAAE,EACV,EAAGv9C,EAAKxgB,EAAOtD,EAAK8tB,EAExB,IAAK,EAAI,EAAGhK,EAAMwoH,EAAY,OAAQ,EAAIxoH,EAAK,IAC3CxgB,EAAQgpI,EAAY,CAAC,EAAIC,EACzBvsI,EAAM,EAAI8jB,EAAM,EAAIwoH,EAAY,EAAI,CAAC,EAAIC,EAAMjoI,EAAK,OACpDwpB,EAAO6+G,GAAWroI,EAAMhB,EAAOtD,EAAKusI,EAAK,EAAK,EAC1Cz+G,IAASA,EAAK,OAAMA,EAAK,QAAU,IACvCuzC,EAAM,KAAKitE,GAAYxgH,CAAI,CAAC,EAMhC,IAHAuzC,EAAM,KAAKktE,EAAQ,EAGd,EAAI,EAAG,EAAIltE,EAAM,OAAQ,IAC1BqrE,EAAY8B,GAAcntE,EAAM,CAAC,EAAGqrE,CAAS,EAGjD,OAAOA,CACX,CAEA,SAAS6B,GAAS3kK,EAAG8Z,EAAG,CACpB,OAAO9Z,EAAE,EAAI8Z,EAAE,CACnB,CAGA,SAAS8qJ,GAAcC,EAAM/B,EAAW,CACpC,IAAIgC,EAASC,GAAeF,EAAM/B,CAAS,EAC3C,GAAI,CAACgC,EACD,OAAOhC,EAGX,IAAIkC,EAAgBP,GAAaK,EAAQD,CAAI,EAG7C,OAAApB,GAAauB,EAAeA,EAAc,IAAI,EACvCvB,GAAaqB,EAAQA,EAAO,IAAI,CAC3C,CAGA,SAASC,GAAeF,EAAM/B,EAAW,CACrC,IAAI1wJ,EAAI0wJ,EACJ9rG,EAAK6tG,EAAK,EACV5tG,EAAK4tG,EAAK,EACV14F,EAAK,KACL3oE,EAIJ,EAAG,CACC,GAAIyzD,GAAM7kD,EAAE,GAAK6kD,GAAM7kD,EAAE,KAAK,GAAKA,EAAE,KAAK,IAAMA,EAAE,EAAG,CACjD,IAAIsI,EAAItI,EAAE,GAAK6kD,EAAK7kD,EAAE,IAAMA,EAAE,KAAK,EAAIA,EAAE,IAAMA,EAAE,KAAK,EAAIA,EAAE,GAC5D,GAAIsI,GAAKs8C,GAAMt8C,EAAIyxD,IACfA,EAAKzxD,EACLlX,EAAI4O,EAAE,EAAIA,EAAE,KAAK,EAAIA,EAAIA,EAAE,KACvBsI,IAAMs8C,GAAI,OAAOxzD,CAE5B,CACD4O,EAAIA,EAAE,IACd,OAAaA,IAAM0wJ,GAEf,GAAI,CAACt/J,EAAG,OAAO,KAMf,IAAIwnD,EAAOxnD,EACP4wD,EAAK5wD,EAAE,EACP6wD,EAAK7wD,EAAE,EACPyhK,EAAS,IACTC,EAEJ9yJ,EAAI5O,EAEJ,GACQwzD,GAAM5kD,EAAE,GAAKA,EAAE,GAAKgiD,GAAM4C,IAAO5kD,EAAE,GAC/B8xJ,GAAgBjtG,EAAK5C,EAAK2C,EAAKmV,EAAIlV,EAAI7C,EAAIC,EAAI4C,EAAK5C,EAAK8X,EAAKnV,EAAIC,EAAI7kD,EAAE,EAAGA,EAAE,CAAC,IAElF8yJ,EAAM,KAAK,IAAIjuG,EAAK7kD,EAAE,CAAC,GAAK4kD,EAAK5kD,EAAE,GAE/BmyJ,GAAcnyJ,EAAGyyJ,CAAI,IACpBK,EAAMD,GAAWC,IAAQD,IAAW7yJ,EAAE,EAAI5O,EAAE,GAAM4O,EAAE,IAAM5O,EAAE,GAAK2hK,GAAqB3hK,EAAG4O,CAAC,MAC3F5O,EAAI4O,EACJ6yJ,EAASC,IAIjB9yJ,EAAIA,EAAE,WACDA,IAAM44C,GAEf,OAAOxnD,CACX,CAGA,SAAS2hK,GAAqB3hK,EAAG4O,EAAG,CAChC,OAAO6mJ,GAAKz1J,EAAE,KAAMA,EAAG4O,EAAE,IAAI,EAAI,GAAK6mJ,GAAK7mJ,EAAE,KAAM5O,EAAGA,EAAE,IAAI,EAAI,CACpE,CAGA,SAASqgK,GAAWnqI,EAAOi3B,EAAMC,EAAMqyG,EAAS,CAC5C,IAAI7wJ,EAAIsnB,EACR,GACQtnB,EAAE,IAAM,IAAGA,EAAE,EAAIgyJ,GAAOhyJ,EAAE,EAAGA,EAAE,EAAGu+C,EAAMC,EAAMqyG,CAAO,GACzD7wJ,EAAE,MAAQA,EAAE,KACZA,EAAE,MAAQA,EAAE,KACZA,EAAIA,EAAE,WACDA,IAAMsnB,GAEftnB,EAAE,MAAM,MAAQ,KAChBA,EAAE,MAAQ,KAEVgzJ,GAAWhzJ,CAAC,CAChB,CAIA,SAASgzJ,GAAWlhH,EAAM,CACtB,IAAIxpD,EAAG0X,EAAGmG,EAAGlf,EAAGs8B,EAAM0vI,EAAWC,EAAOC,EACpCC,EAAS,EAEb,EAAG,CAMC,IALApzJ,EAAI8xC,EACJA,EAAO,KACPvuB,EAAO,KACP0vI,EAAY,EAELjzJ,GAAG,CAIN,IAHAizJ,IACA9sJ,EAAInG,EACJkzJ,EAAQ,EACH5qK,EAAI,EAAGA,EAAI8qK,IACZF,IACA/sJ,EAAIA,EAAE,MACF,EAACA,GAHe7d,IAGpB,CAIJ,IAFA6qK,EAAQC,EAEDF,EAAQ,GAAMC,EAAQ,GAAKhtJ,GAE1B+sJ,IAAU,IAAMC,IAAU,GAAK,CAAChtJ,GAAKnG,EAAE,GAAKmG,EAAE,IAC9Clf,EAAI+Y,EACJA,EAAIA,EAAE,MACNkzJ,MAEAjsK,EAAIkf,EACJA,EAAIA,EAAE,MACNgtJ,KAGA5vI,EAAMA,EAAK,MAAQt8B,EAClB6qD,EAAO7qD,EAEZA,EAAE,MAAQs8B,EACVA,EAAOt8B,EAGX+Y,EAAImG,CACP,CAEDod,EAAK,MAAQ,KACb6vI,GAAU,CAElB,OAAaH,EAAY,GAErB,OAAOnhH,CACX,CAGA,SAASkgH,GAAO1pJ,EAAGhX,EAAGitD,EAAMC,EAAMqyG,EAAS,CAEvC,OAAAvoJ,GAAKA,EAAIi2C,GAAQsyG,EAAU,EAC3Bv/J,GAAKA,EAAIktD,GAAQqyG,EAAU,EAE3BvoJ,GAAKA,EAAKA,GAAK,GAAM,SACrBA,GAAKA,EAAKA,GAAK,GAAM,UACrBA,GAAKA,EAAKA,GAAK,GAAM,UACrBA,GAAKA,EAAKA,GAAK,GAAM,WAErBhX,GAAKA,EAAKA,GAAK,GAAM,SACrBA,GAAKA,EAAKA,GAAK,GAAM,UACrBA,GAAKA,EAAKA,GAAK,GAAM,UACrBA,GAAKA,EAAKA,GAAK,GAAM,WAEdgX,EAAKhX,GAAK,CACrB,CAGA,SAASghK,GAAYhrI,EAAO,CACxB,IAAItnB,EAAIsnB,EACJ+rI,EAAW/rI,EACf,GACQtnB,EAAE,EAAIqzJ,EAAS,GAAMrzJ,EAAE,IAAMqzJ,EAAS,GAAKrzJ,EAAE,EAAIqzJ,EAAS,KAAIA,EAAWrzJ,GAC7EA,EAAIA,EAAE,WACDA,IAAMsnB,GAEf,OAAO+rI,CACX,CAGA,SAASvB,GAAgBr8G,EAAIC,EAAIE,EAAIC,EAAIyJ,EAAIC,EAAIuvC,EAAIwkE,EAAI,CACrD,OAAQh0G,EAAKwvC,IAAOp5C,EAAK49G,KAAQ79G,EAAKq5C,IAAOvvC,EAAK+zG,KAC1C79G,EAAKq5C,IAAOj5C,EAAKy9G,KAAQ19G,EAAKk5C,IAAOp5C,EAAK49G,KAC1C19G,EAAKk5C,IAAOvvC,EAAK+zG,KAAQh0G,EAAKwvC,IAAOj5C,EAAKy9G,EACtD,CAGA,SAASlB,GAAgBxkK,EAAG8Z,EAAG,CAC3B,OAAO9Z,EAAE,KAAK,IAAM8Z,EAAE,GAAK9Z,EAAE,KAAK,IAAM8Z,EAAE,GAAK,CAAC6rJ,GAAkB3lK,EAAG8Z,CAAC,IAC9DyqJ,GAAcvkK,EAAG8Z,CAAC,GAAKyqJ,GAAczqJ,EAAG9Z,CAAC,GAAK4lK,GAAa5lK,EAAG8Z,CAAC,IAC9Dm/I,GAAKj5J,EAAE,KAAMA,EAAG8Z,EAAE,IAAI,GAAKm/I,GAAKj5J,EAAG8Z,EAAE,KAAMA,CAAC,IAC7CypJ,GAAOvjK,EAAG8Z,CAAC,GAAKm/I,GAAKj5J,EAAE,KAAMA,EAAGA,EAAE,IAAI,EAAI,GAAKi5J,GAAKn/I,EAAE,KAAMA,EAAGA,EAAE,IAAI,EAAI,EACrF,CAGA,SAASm/I,GAAK7mJ,EAAGmG,EAAG1X,EAAG,CACnB,OAAQ0X,EAAE,EAAInG,EAAE,IAAMvR,EAAE,EAAI0X,EAAE,IAAMA,EAAE,EAAInG,EAAE,IAAMvR,EAAE,EAAI0X,EAAE,EAC9D,CAGA,SAASgrJ,GAAOv1J,EAAI8F,EAAI,CACpB,OAAO9F,EAAG,IAAM8F,EAAG,GAAK9F,EAAG,IAAM8F,EAAG,CACxC,CAGA,SAASwwJ,GAAWt2J,EAAIgD,EAAI8C,EAAIqE,EAAI,CAChC,IAAI0tJ,EAAKpxG,GAAKwkG,GAAKjrJ,EAAIgD,EAAI8C,CAAE,CAAC,EAC1BZ,EAAKuhD,GAAKwkG,GAAKjrJ,EAAIgD,EAAImH,CAAE,CAAC,EAC1BwI,EAAK8zC,GAAKwkG,GAAKnlJ,EAAIqE,EAAInK,CAAE,CAAC,EAC1BsiB,EAAKmkC,GAAKwkG,GAAKnlJ,EAAIqE,EAAInH,CAAE,CAAC,EAO9B,MALI,GAAA60J,IAAO3yJ,GAAMyN,IAAO2P,GAEpBu1I,IAAO,GAAKC,GAAU93J,EAAI8F,EAAI9C,CAAE,GAChCkC,IAAO,GAAK4yJ,GAAU93J,EAAImK,EAAInH,CAAE,GAChC2P,IAAO,GAAKmlJ,GAAUhyJ,EAAI9F,EAAImK,CAAE,GAChCmY,IAAO,GAAKw1I,GAAUhyJ,EAAI9C,EAAImH,CAAE,EAGxC,CAGA,SAAS2tJ,GAAU1zJ,EAAGmG,EAAG1X,EAAG,CACxB,OAAO0X,EAAE,GAAK,KAAK,IAAInG,EAAE,EAAGvR,EAAE,CAAC,GAAK0X,EAAE,GAAK,KAAK,IAAInG,EAAE,EAAGvR,EAAE,CAAC,GAAK0X,EAAE,GAAK,KAAK,IAAInG,EAAE,EAAGvR,EAAE,CAAC,GAAK0X,EAAE,GAAK,KAAK,IAAInG,EAAE,EAAGvR,EAAE,CAAC,CAC1H,CAEA,SAAS4zD,GAAKp+B,EAAK,CACf,OAAOA,EAAM,EAAI,EAAIA,EAAM,EAAI,GAAK,CACxC,CAGA,SAASsvI,GAAkB3lK,EAAG8Z,EAAG,CAC7B,IAAI1H,EAAIpS,EACR,EAAG,CACC,GAAIoS,EAAE,IAAMpS,EAAE,GAAKoS,EAAE,KAAK,IAAMpS,EAAE,GAAKoS,EAAE,IAAM0H,EAAE,GAAK1H,EAAE,KAAK,IAAM0H,EAAE,GAC7DwqJ,GAAWlyJ,EAAGA,EAAE,KAAMpS,EAAG8Z,CAAC,EAAG,MAAO,GAC5C1H,EAAIA,EAAE,IACd,OAAaA,IAAMpS,GAEf,MAAO,EACX,CAGA,SAASukK,GAAcvkK,EAAG8Z,EAAG,CACzB,OAAOm/I,GAAKj5J,EAAE,KAAMA,EAAGA,EAAE,IAAI,EAAI,EAC7Bi5J,GAAKj5J,EAAG8Z,EAAG9Z,EAAE,IAAI,GAAK,GAAKi5J,GAAKj5J,EAAGA,EAAE,KAAM8Z,CAAC,GAAK,EACjDm/I,GAAKj5J,EAAG8Z,EAAG9Z,EAAE,IAAI,EAAI,GAAKi5J,GAAKj5J,EAAGA,EAAE,KAAM8Z,CAAC,EAAI,CACvD,CAGA,SAAS8rJ,GAAa5lK,EAAG8Z,EAAG,CACxB,IAAI1H,EAAIpS,EACJ+lK,EAAS,GACT7kE,GAAMlhG,EAAE,EAAI8Z,EAAE,GAAK,EACnB4rJ,GAAM1lK,EAAE,EAAI8Z,EAAE,GAAK,EACvB,GACU1H,EAAE,EAAIszJ,GAAStzJ,EAAE,KAAK,EAAIszJ,GAAQtzJ,EAAE,KAAK,IAAMA,EAAE,GAC9C8uF,GAAM9uF,EAAE,KAAK,EAAIA,EAAE,IAAMszJ,EAAKtzJ,EAAE,IAAMA,EAAE,KAAK,EAAIA,EAAE,GAAKA,EAAE,IAC/D2zJ,EAAS,CAACA,GACd3zJ,EAAIA,EAAE,WACDA,IAAMpS,GAEf,OAAO+lK,CACX,CAIA,SAAStB,GAAazkK,EAAG8Z,EAAG,CACxB,IAAIxG,EAAK,IAAI0yJ,GAAKhmK,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAC3ByU,EAAK,IAAIuxJ,GAAKlsJ,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAC3ByV,EAAKvvB,EAAE,KACPyd,EAAK3D,EAAE,KAEX,OAAA9Z,EAAE,KAAO8Z,EACTA,EAAE,KAAO9Z,EAETsT,EAAG,KAAOic,EACVA,EAAG,KAAOjc,EAEVmB,EAAG,KAAOnB,EACVA,EAAG,KAAOmB,EAEVgJ,EAAG,KAAOhJ,EACVA,EAAG,KAAOgJ,EAEHhJ,CACX,CAGA,SAAS6uJ,GAAW5oK,EAAGggB,EAAGhX,EAAG8kC,EAAM,CAC/B,IAAIp2B,EAAI,IAAI4zJ,GAAKtrK,EAAGggB,EAAGhX,CAAC,EAExB,OAAK8kC,GAKDp2B,EAAE,KAAOo2B,EAAK,KACdp2B,EAAE,KAAOo2B,EACTA,EAAK,KAAK,KAAOp2B,EACjBo2B,EAAK,KAAOp2B,IAPZA,EAAE,KAAOA,EACTA,EAAE,KAAOA,GAQNA,CACX,CAEA,SAASoxJ,GAAWpxJ,EAAG,CACnBA,EAAE,KAAK,KAAOA,EAAE,KAChBA,EAAE,KAAK,KAAOA,EAAE,KAEZA,EAAE,QAAOA,EAAE,MAAM,MAAQA,EAAE,OAC3BA,EAAE,QAAOA,EAAE,MAAM,MAAQA,EAAE,MACnC,CAEA,SAAS4zJ,GAAKtrK,EAAGggB,EAAGhX,EAAG,CAEnB,KAAK,EAAIhJ,EAGT,KAAK,EAAIggB,EACT,KAAK,EAAIhX,EAGT,KAAK,KAAO,KACZ,KAAK,KAAO,KAGZ,KAAK,EAAI,EAGT,KAAK,MAAQ,KACb,KAAK,MAAQ,KAGb,KAAK,QAAU,EACnB,CAIA++J,GAAO,UAAY,SAAU/nI,EAAMgoI,EAAaC,EAAKK,EAAW,CAC5D,IAAIJ,EAAWF,GAAeA,EAAY,OACtCG,EAAWD,EAAWF,EAAY,CAAC,EAAIC,EAAMjoI,EAAK,OAElDq+H,EAAc,KAAK,IAAIsK,GAAW3oI,EAAM,EAAGmoI,EAAUF,CAAG,CAAC,EAC7D,GAAIC,EACA,QAASloK,EAAI,EAAGw/C,EAAMwoH,EAAY,OAAQhoK,EAAIw/C,EAAKx/C,IAAK,CACpD,IAAIg/B,EAAQgpI,EAAYhoK,CAAC,EAAIioK,EACzBvsI,EAAM17B,EAAIw/C,EAAM,EAAIwoH,EAAYhoK,EAAI,CAAC,EAAIioK,EAAMjoI,EAAK,OACxDq+H,GAAe,KAAK,IAAIsK,GAAW3oI,EAAMhB,EAAOtD,EAAKusI,CAAG,CAAC,CAC5D,CAGL,IAAIsD,EAAgB,EACpB,IAAKvrK,EAAI,EAAGA,EAAIsoK,EAAU,OAAQtoK,GAAK,EAAG,CACtC,IAAIsF,EAAIgjK,EAAUtoK,CAAC,EAAIioK,EACnB7oJ,EAAIkpJ,EAAUtoK,EAAI,CAAC,EAAIioK,EACvBv/J,EAAI4/J,EAAUtoK,EAAI,CAAC,EAAIioK,EAC3BsD,GAAiB,KAAK,KACjBvrI,EAAK16B,CAAC,EAAI06B,EAAKt3B,CAAC,IAAMs3B,EAAK5gB,EAAI,CAAC,EAAI4gB,EAAK16B,EAAI,CAAC,IAC9C06B,EAAK16B,CAAC,EAAI06B,EAAK5gB,CAAC,IAAM4gB,EAAKt3B,EAAI,CAAC,EAAIs3B,EAAK16B,EAAI,CAAC,EAAE,CACxD,CAED,OAAO+4J,IAAgB,GAAKkN,IAAkB,EAAI,EAC9C,KAAK,KAAKA,EAAgBlN,GAAeA,CAAW,CAC5D,EAEA,SAASsK,GAAW3oI,EAAMhB,EAAOtD,EAAKusI,EAAK,CAEvC,QADI5uG,EAAM,EACD,EAAIr6B,EAAO9Y,EAAIwV,EAAMusI,EAAK,EAAIvsI,EAAK,GAAKusI,EAC7C5uG,IAAQr5B,EAAK9Z,CAAC,EAAI8Z,EAAK,CAAC,IAAMA,EAAK,EAAI,CAAC,EAAIA,EAAK9Z,EAAI,CAAC,GACtDA,EAAI,EAER,OAAOmzC,CACX,CAGA0uG,GAAO,QAAU,SAAU/nI,EAAM,CAK7B,QAJIioI,EAAMjoI,EAAK,CAAC,EAAE,CAAC,EAAE,OACjBvD,EAAS,CAAC,SAAU,CAAE,EAAE,MAAO,CAAE,EAAE,WAAYwrI,CAAG,EAClDuD,EAAY,EAEPxrK,EAAI,EAAGA,EAAIggC,EAAK,OAAQhgC,IAAK,CAClC,QAASkmB,EAAI,EAAGA,EAAI8Z,EAAKhgC,CAAC,EAAE,OAAQkmB,IAChC,QAAStO,EAAI,EAAGA,EAAIqwJ,EAAKrwJ,IAAK6kB,EAAO,SAAS,KAAKuD,EAAKhgC,CAAC,EAAEkmB,CAAC,EAAEtO,CAAC,CAAC,EAEhE5X,EAAI,IACJwrK,GAAaxrI,EAAKhgC,EAAI,CAAC,EAAE,OACzBy8B,EAAO,MAAM,KAAK+uI,CAAS,EAElC,CACD,OAAO/uI,CACX,ECxqBe,SAAAgvI,GAASnmK,EAAG8Z,EAAG,CAC5B,OAAO9Z,EAAI8Z,EAAI,GAAK9Z,EAAI8Z,EAAI,EAAI9Z,GAAK8Z,EAAI,EAAI,GAC/C,CCAe,SAAQssJ,GAAC/yE,EAAS,CAC/B,OAAIA,EAAQ,SAAW,IAAGA,EAAUgzE,IAAoBhzE,CAAO,GACxD,CACL,KAAM,SAASrzF,EAAG0a,EAAG6S,EAAIvkB,EAAI,CAG3B,IAFIukB,GAAM,OAAMA,EAAK,GACjBvkB,GAAM,OAAMA,EAAKhJ,EAAE,QAChButB,EAAKvkB,GAAI,CACd,IAAIs9J,EAAM/4I,EAAKvkB,IAAO,EAClBqqF,EAAQrzF,EAAEsmK,CAAG,EAAG5rJ,CAAC,EAAI,EAAG6S,EAAK+4I,EAAM,EAClCt9J,EAAKs9J,CACX,CACD,OAAO/4I,CACR,EACD,MAAO,SAASvtB,EAAG0a,EAAG6S,EAAIvkB,EAAI,CAG5B,IAFIukB,GAAM,OAAMA,EAAK,GACjBvkB,GAAM,OAAMA,EAAKhJ,EAAE,QAChButB,EAAKvkB,GAAI,CACd,IAAIs9J,EAAM/4I,EAAKvkB,IAAO,EAClBqqF,EAAQrzF,EAAEsmK,CAAG,EAAG5rJ,CAAC,EAAI,EAAG1R,EAAKs9J,EAC5B/4I,EAAK+4I,EAAM,CACjB,CACD,OAAO/4I,CACR,CACL,CACA,CAEA,SAAS84I,IAAoB/iK,EAAG,CAC9B,OAAO,SAASgP,EAAGoI,EAAG,CACpB,OAAOyrJ,GAAU7iK,EAAEgP,CAAC,EAAGoI,CAAC,CAC5B,CACA,CC7BsB0rJ,GAASD,EAAS,ECAxB,SAAAI,GACdC,EACA3sG,EACqB,CACd,OAAAy4F,GACLkU,EACA3sG,EAAM,IAAI,CAACtgE,EAAW4oC,IAAkBA,CAAK,EAC7C03B,EACA,CAGE,MAAO,CAAC75D,EAAG8Z,IAAMswF,GAAYpqG,EAAG8Z,EAAG,CAAE,iBAAkB,GAAK,CAE9D,CAAA,CAEJ,CCjBA,IAAI2sJ,GAAe,KAAM,CACvB,aAAc,CACZ,KAAK,UAA4B,IAAI,IACrC,KAAK,UAAY,KAAK,UAAU,KAAK,IAAI,CAC1C,CACD,UAAU5hD,EAAU,CAClB,YAAK,UAAU,IAAIA,CAAQ,EAC3B,KAAK,YAAW,EACT,IAAM,CACX,KAAK,UAAU,OAAOA,CAAQ,EAC9B,KAAK,cAAa,CACxB,CACG,CACD,cAAe,CACb,OAAO,KAAK,UAAU,KAAO,CAC9B,CACD,aAAc,CACb,CACD,eAAgB,CACf,CACH,ECnBI6hD,IAAe,cAAcD,EAAa,CAC5CE,GACAC,GACAC,GACA,aAAc,CACZ,QACA,KAAKA,GAAUC,GAAY,CACzB,GAAI,OAAO,OAAW,KAAe,OAAO,iBAAkB,CAC5D,MAAMjiD,EAAW,IAAMiiD,IACvB,cAAO,iBAAiB,mBAAoBjiD,EAAU,EAAK,EACpD,IAAM,CACX,OAAO,oBAAoB,mBAAoBA,CAAQ,CACjE,CACO,CAEP,CACG,CACD,aAAc,CACP,KAAK+hD,IACR,KAAK,iBAAiB,KAAKC,EAAM,CAEpC,CACD,eAAgB,CACT,KAAK,iBACR,KAAKD,KAAQ,EACb,KAAKA,GAAW,OAEnB,CACD,iBAAiBpoE,EAAO,CACtB,KAAKqoE,GAASroE,EACd,KAAKooE,KAAQ,EACb,KAAKA,GAAWpoE,EAAOuoE,GAAY,CAC7B,OAAOA,GAAY,UACrB,KAAK,WAAWA,CAAO,EAEvB,KAAK,QAAO,CAEpB,CAAK,CACF,CACD,WAAWA,EAAS,CACF,KAAKJ,KAAaI,IAEhC,KAAKJ,GAAWI,EAChB,KAAK,QAAO,EAEf,CACD,SAAU,CACR,MAAMC,EAAY,KAAK,YACvB,KAAK,UAAU,QAASniD,GAAa,CACnCA,EAASmiD,CAAS,CACxB,CAAK,CACF,CACD,WAAY,CACV,OAAI,OAAO,KAAKL,IAAa,UACpB,KAAKA,GAEP,WAAW,UAAU,kBAAoB,QACjD,CACH,EACIM,IAAe,IAAIP,IC5DnBQ,IAAyB,CAW3B,WAAY,CAACrlG,EAAUj5B,IAAU,WAAWi5B,EAAUj5B,CAAK,EAC3D,aAAeu+H,GAAc,aAAaA,CAAS,EACnD,YAAa,CAACtlG,EAAUj5B,IAAU,YAAYi5B,EAAUj5B,CAAK,EAC7D,cAAgBw+H,GAAe,cAAcA,CAAU,CACzD,EACIC,IAAiB,KAAM,CAQzBC,GAAYJ,IACZK,GAAkB,GAClB,mBAAmBC,EAAU,EACvB,CAAW,GAAC,WAAa,cACvB,KAAKD,IAAmBC,IAAa,KAAKF,IAC5C,QAAQ,MACN,6GACA,CAAE,SAAU,KAAKA,GAAW,SAAAE,CAAU,CAChD,EAGI,KAAKF,GAAYE,EACb,CAAW,EAAC,WAAa,eAC3B,KAAKD,GAAkB,GAE1B,CACD,WAAW1lG,EAAUj5B,EAAO,CAC1B,MAAI,CAAW,EAAC,WAAa,eAC3B,KAAK2+H,GAAkB,IAElB,KAAKD,GAAU,WAAWzlG,EAAUj5B,CAAK,CACjD,CACD,aAAau+H,EAAW,CACtB,KAAKG,GAAU,aAAaH,CAAS,CACtC,CACD,YAAYtlG,EAAUj5B,EAAO,CAC3B,MAAI,CAAW,EAAC,WAAa,eAC3B,KAAK2+H,GAAkB,IAElB,KAAKD,GAAU,YAAYzlG,EAAUj5B,CAAK,CAClD,CACD,cAAcw+H,EAAY,CACxB,KAAKE,GAAU,cAAcF,CAAU,CACxC,CACH,EACIK,GAAiB,IAAIJ,IACzB,SAASK,IAAqB7lG,EAAU,CACtC,WAAWA,EAAU,CAAC,CACxB,CC7DA,IAAI8lG,IAAW,OAAO,OAAW,KAAe,SAAU,WAC1D,SAASzjI,IAAO,CAChB,CAIA,SAAS0jI,GAAe3qI,EAAO,CAC7B,OAAO,OAAOA,GAAU,UAAYA,GAAS,GAAKA,IAAU,GAC9D,CACA,SAAS4qI,IAAeC,EAAWC,EAAW,CAC5C,OAAO,KAAK,IAAID,GAAaC,GAAa,GAAK,KAAK,MAAO,CAAC,CAC9D,CACA,SAASC,GAAiBD,EAAWlwI,EAAO,CAC1C,OAAO,OAAOkwI,GAAc,WAAaA,EAAUlwI,CAAK,EAAIkwI,CAC9D,CACA,SAASE,GAAoB70F,EAAQv7C,EAAO,CAC1C,OAAO,OAAOu7C,GAAW,WAAaA,EAAOv7C,CAAK,EAAIu7C,CACxD,CAiEA,SAAS80F,GAAQC,EAAU,CACzB,OAAO,KAAK,UACVA,EACA,CAAC5uK,EAAG08B,IAAQm2G,GAAcn2G,CAAG,EAAI,OAAO,KAAKA,CAAG,EAAE,KAAM,EAAC,OAAO,CAACkB,EAAQgG,KACvEhG,EAAOgG,CAAG,EAAIlH,EAAIkH,CAAG,EACdhG,GACN,CAAA,CAAE,EAAIlB,CACb,CACA,CAaA,IAAI21G,IAAS,OAAO,UAAU,eAC9B,SAASw8B,GAAiBpoK,EAAG8Z,EAAGkrC,EAAQ,EAAG,CACzC,GAAIhlD,IAAM8Z,EACR,OAAO9Z,EAET,GAAIglD,EAAQ,IAAK,OAAOlrC,EACxB,MAAMyxB,EAAQ88H,GAAaroK,CAAC,GAAKqoK,GAAavuJ,CAAC,EAC/C,GAAI,CAACyxB,GAAS,EAAE6gG,GAAcpsI,CAAC,GAAKosI,GAActyH,CAAC,GAAI,OAAOA,EAE9D,MAAMwuJ,GADS/8H,EAAQvrC,EAAI,OAAO,KAAKA,CAAC,GACnB,OACfuoK,EAASh9H,EAAQzxB,EAAI,OAAO,KAAKA,CAAC,EAClC0uJ,EAAQD,EAAO,OACflgI,EAAOkD,EAAQ,IAAI,MAAMi9H,CAAK,EAAI,CAAA,EACxC,IAAIC,EAAa,EACjB,QAAS/tK,EAAI,EAAGA,EAAI8tK,EAAO9tK,IAAK,CAC9B,MAAMyiC,EAAMoO,EAAQ7wC,EAAI6tK,EAAO7tK,CAAC,EAC1BguK,EAAQ1oK,EAAEm9B,CAAG,EACbwrI,EAAQ7uJ,EAAEqjB,CAAG,EACnB,GAAIurI,IAAUC,EAAO,CACnBtgI,EAAKlL,CAAG,EAAIurI,GACRn9H,EAAQ7wC,EAAI4tK,EAAQ18B,IAAO,KAAK5rI,EAAGm9B,CAAG,IAAGsrI,IAC7C,QACD,CACD,GAAIC,IAAU,MAAQC,IAAU,MAAQ,OAAOD,GAAU,UAAY,OAAOC,GAAU,SAAU,CAC9FtgI,EAAKlL,CAAG,EAAIwrI,EACZ,QACD,CACD,MAAMt2J,EAAI+1J,GAAiBM,EAAOC,EAAO3jH,EAAQ,CAAC,EAClD3c,EAAKlL,CAAG,EAAI9qB,EACRA,IAAMq2J,GAAOD,GAClB,CACD,OAAOH,IAAUE,GAASC,IAAeH,EAAQtoK,EAAIqoC,CACvD,CACA,SAASugI,GAAoB5oK,EAAG8Z,EAAG,CACjC,GAAI,CAACA,GAAK,OAAO,KAAK9Z,CAAC,EAAE,SAAW,OAAO,KAAK8Z,CAAC,EAAE,OACjD,MAAO,GAET,UAAWqjB,KAAOn9B,EAChB,GAAIA,EAAEm9B,CAAG,IAAMrjB,EAAEqjB,CAAG,EAClB,MAAO,GAGX,MAAO,EACT,CACA,SAASkrI,GAAaprI,EAAO,CAC3B,OAAO,MAAM,QAAQA,CAAK,GAAKA,EAAM,SAAW,OAAO,KAAKA,CAAK,EAAE,MACrE,CACA,SAASmvG,GAAcphI,EAAG,CACxB,GAAI,CAAC69J,GAAmB79J,CAAC,EACvB,MAAO,GAET,MAAM4nF,EAAO5nF,EAAE,YACf,GAAI4nF,IAAS,OACX,MAAO,GAET,MAAMk2E,EAAOl2E,EAAK,UAOlB,MANI,GAACi2E,GAAmBC,CAAI,GAGxB,CAACA,EAAK,eAAe,eAAe,GAGpC,OAAO,eAAe99J,CAAC,IAAM,OAAO,UAI1C,CACA,SAAS69J,GAAmB79J,EAAG,CAC7B,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAC,IAAM,iBAC/C,CAMA,SAAS+9J,GAAYC,EAAUtuI,EAAMtC,EAAS,CAC5C,GAAI,OAAOA,EAAQ,mBAAsB,WACvC,OAAOA,EAAQ,kBAAkB4wI,EAAUtuI,CAAI,EAC1C,GAAItC,EAAQ,oBAAsB,GAAO,CAC9C,GAAI,CAAW,EAAC,WAAa,aAC3B,GAAI,CACF,OAAOgwI,GAAiBY,EAAUtuI,CAAI,CACvC,OAAQoG,EAAO,CACd,cAAQ,MACN,0JAA0J1I,EAAQ,SAAS,MAAM0I,CAAK,EAChM,EACcA,CACP,CAEH,OAAOsnI,GAAiBY,EAAUtuI,CAAI,CACvC,CACD,OAAOA,CACT,CA6BA,SAASuuI,GAAiBC,EAAc7O,EAAQ,CAC9C,OAAI,OAAO6O,GAAiB,WACnBA,EAAa,GAAG7O,CAAM,EAExB,CAAC,CAAC6O,CACX,CCrOA,IAAIC,IAAsC,IAAM,CAC9C,IAAIC,EAAa,IAAMzB,IACvB,MAAO,CAIL,UAAW,CACT,OAAOyB,EAAU,CAClB,EAID,YAAYC,EAAe,CACzBD,EAAaC,CACd,CACL,CACA,GAAI,EChBJ,SAASC,IAAkB,CACzB,IAAIzwI,EACAC,EACJ,MAAMm5D,EAAW,IAAI,QAAQ,CAACs3E,EAAUC,IAAY,CAClD3wI,EAAU0wI,EACVzwI,EAAS0wI,CACb,CAAG,EACDv3E,EAAS,OAAS,UAClBA,EAAS,MAAM,IAAM,CACvB,CAAG,EACD,SAASy2D,EAAShuH,EAAM,CACtB,OAAO,OAAOu3D,EAAUv3D,CAAI,EAC5B,OAAOu3D,EAAS,QAChB,OAAOA,EAAS,MACjB,CACD,OAAAA,EAAS,QAAWh1D,GAAU,CAC5ByrH,EAAS,CACP,OAAQ,YACR,MAAAzrH,CACN,CAAK,EACDpE,EAAQoE,CAAK,CACjB,EACEg1D,EAAS,OAAUw3E,GAAW,CAC5B/gB,EAAS,CACP,OAAQ,WACR,OAAA+gB,CACN,CAAK,EACD3wI,EAAO2wI,CAAM,CACjB,EACSx3E,CACT,CC9BA,IAAIy3E,IAAmBhC,IACvB,SAASiC,KAAsB,CAC7B,IAAIlyE,EAAQ,CAAA,EACRmyE,EAAe,EACfC,EAAYhoG,GAAa,CAC3BA,GACJ,EACMioG,EAAiBjoG,GAAa,CAChCA,GACJ,EACMkoG,EAAaL,IACjB,MAAMM,EAAYnoG,GAAa,CACzB+nG,EACFnyE,EAAM,KAAK51B,CAAQ,EAEnBkoG,EAAW,IAAM,CACfF,EAAShoG,CAAQ,CACzB,CAAO,CAEP,EACQ48E,EAAQ,IAAM,CAClB,MAAMwrB,EAAgBxyE,EACtBA,EAAQ,CAAA,EACJwyE,EAAc,QAChBF,EAAW,IAAM,CACfD,EAAc,IAAM,CAClBG,EAAc,QAASpoG,GAAa,CAClCgoG,EAAShoG,CAAQ,CAC7B,CAAW,CACX,CAAS,CACT,CAAO,CAEP,EACE,MAAO,CACL,MAAQA,GAAa,CACnB,IAAI1qC,EACJyyI,IACA,GAAI,CACFzyI,EAAS0qC,EAAQ,CACzB,QAAgB,CACR+nG,IACKA,GACHnrB,GAEH,CACD,OAAOtnH,CACR,EAID,WAAa0qC,GACJ,IAAI/9B,IAAS,CAClBkmI,EAAS,IAAM,CACbnoG,EAAS,GAAG/9B,CAAI,CAC1B,CAAS,CACT,EAEI,SAAAkmI,EAKA,kBAAoBllI,GAAO,CACzB+kI,EAAW/kI,CACZ,EAKD,uBAAyBA,GAAO,CAC9BglI,EAAgBhlI,CACjB,EACD,aAAeA,GAAO,CACpBilI,EAAajlI,CACd,CACL,CACA,CACA,IAAIolI,GAAgBP,IAAqB,EC7ErCQ,IAAgB,cAAc1D,EAAa,CAC7C2D,GAAU,GACVxD,GACAC,GACA,aAAc,CACZ,QACA,KAAKA,GAAUwD,GAAa,CAC1B,GAAI,OAAO,OAAW,KAAe,OAAO,iBAAkB,CAC5D,MAAMC,EAAiB,IAAMD,EAAS,EAAI,EACpCE,EAAkB,IAAMF,EAAS,EAAK,EAC5C,cAAO,iBAAiB,SAAUC,EAAgB,EAAK,EACvD,OAAO,iBAAiB,UAAWC,EAAiB,EAAK,EAClD,IAAM,CACX,OAAO,oBAAoB,SAAUD,CAAc,EACnD,OAAO,oBAAoB,UAAWC,CAAe,CAC/D,CACO,CAEP,CACG,CACD,aAAc,CACP,KAAK3D,IACR,KAAK,iBAAiB,KAAKC,EAAM,CAEpC,CACD,eAAgB,CACT,KAAK,iBACR,KAAKD,KAAQ,EACb,KAAKA,GAAW,OAEnB,CACD,iBAAiBpoE,EAAO,CACtB,KAAKqoE,GAASroE,EACd,KAAKooE,KAAQ,EACb,KAAKA,GAAWpoE,EAAM,KAAK,UAAU,KAAK,IAAI,CAAC,CAChD,CACD,UAAUgsE,EAAQ,CACA,KAAKJ,KAAYI,IAE/B,KAAKJ,GAAUI,EACf,KAAK,UAAU,QAAS3lD,GAAa,CACnCA,EAAS2lD,CAAM,CACvB,CAAO,EAEJ,CACD,UAAW,CACT,OAAO,KAAKJ,EACb,CACH,EACIK,GAAgB,IAAIN,IC1CxB,SAASO,IAASC,EAAa,CAC7B,OAAQA,GAAe,YAAc,SAAWF,GAAc,SAAU,EAAG,EAC7E,CC+YA,SAASG,IAAWlwI,EAAMtC,EAAS,CACjC,MAAO,CACL,kBAAmB,EACnB,mBAAoB,KACpB,YAAasyI,IAAStyI,EAAQ,WAAW,EAAI,WAAa,SAC1D,GAAGsC,IAAS,QAAU,CACpB,MAAO,KACP,OAAQ,SACT,CACL,CACA,CCnZA,IAAImwI,IAAgB,cAAcpE,EAAa,CAC7C,YAAYqE,EAAQ1yI,EAAS,CAC3B,QACA,KAAK,QAAUA,EACf,KAAK2yI,GAAUD,EACf,KAAKE,GAAe,KACpB,KAAKC,GAAmB3B,KACxB,KAAK,YAAW,EAChB,KAAK,WAAWlxI,CAAO,CACxB,CACD2yI,GACAG,GAAgB,OAChBC,GAA4B,OAC5BC,GAAiB,OACjBC,GACAC,GACAL,GACAD,GACAO,GACAC,GAGAC,GACAC,GACAC,GACAC,GACAC,GAAgC,IAAI,IACpC,aAAc,CACZ,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,CACtC,CACD,aAAc,CACR,KAAK,UAAU,OAAS,IAC1B,KAAKX,GAAc,YAAY,IAAI,EAC/BY,GAAmB,KAAKZ,GAAe,KAAK,OAAO,EACrD,KAAKa,GAAa,EAElB,KAAK,aAAY,EAEnB,KAAKC,GAAa,EAErB,CACD,eAAgB,CACT,KAAK,gBACR,KAAK,QAAO,CAEf,CACD,wBAAyB,CACvB,OAAOC,GACL,KAAKf,GACL,KAAK,QACL,KAAK,QAAQ,kBACnB,CACG,CACD,0BAA2B,CACzB,OAAOe,GACL,KAAKf,GACL,KAAK,QACL,KAAK,QAAQ,oBACnB,CACG,CACD,SAAU,CACR,KAAK,UAA4B,IAAI,IACrC,KAAKgB,GAAkB,EACvB,KAAKC,GAAqB,EAC1B,KAAKjB,GAAc,eAAe,IAAI,CACvC,CACD,WAAW9yI,EAAS,CAClB,MAAMg0I,EAAc,KAAK,QACnBC,EAAY,KAAKnB,GAEvB,GADA,KAAK,QAAU,KAAKH,GAAQ,oBAAoB3yI,CAAO,EACnD,KAAK,QAAQ,UAAY,QAAU,OAAO,KAAK,QAAQ,SAAY,WAAa,OAAO,KAAK,QAAQ,SAAY,YAAc,OAAO6vI,GAAoB,KAAK,QAAQ,QAAS,KAAKiD,EAAa,GAAM,UACzM,MAAM,IAAI,MACR,uEACR,EAEI,KAAKoB,GAAY,EACjB,KAAKpB,GAAc,WAAW,KAAK,OAAO,EACtCkB,EAAY,YAAc,CAACxD,GAAoB,KAAK,QAASwD,CAAW,GAC1E,KAAKrB,GAAQ,cAAe,EAAC,OAAO,CAClC,KAAM,yBACN,MAAO,KAAKG,GACZ,SAAU,IAClB,CAAO,EAEH,MAAMqB,EAAU,KAAK,eACjBA,GAAWC,GACb,KAAKtB,GACLmB,EACA,KAAK,QACLD,CACN,GACM,KAAKL,GAAa,EAEpB,KAAK,aAAY,EACbQ,IAAY,KAAKrB,KAAkBmB,GAAapE,GAAoB,KAAK,QAAQ,QAAS,KAAKiD,EAAa,IAAMjD,GAAoBmE,EAAY,QAAS,KAAKlB,EAAa,GAAKlD,GAAiB,KAAK,QAAQ,UAAW,KAAKkD,EAAa,IAAMlD,GAAiBoE,EAAY,UAAW,KAAKlB,EAAa,IAC/S,KAAKuB,GAAmB,EAE1B,MAAMC,EAAsB,KAAKC,KAC7BJ,IAAY,KAAKrB,KAAkBmB,GAAapE,GAAoB,KAAK,QAAQ,QAAS,KAAKiD,EAAa,IAAMjD,GAAoBmE,EAAY,QAAS,KAAKlB,EAAa,GAAKwB,IAAwB,KAAKd,KACjN,KAAKgB,GAAuBF,CAAmB,CAElD,CACD,oBAAoBt0I,EAAS,CAC3B,MAAMP,EAAQ,KAAKkzI,GAAQ,cAAa,EAAG,MAAM,KAAKA,GAAS3yI,CAAO,EAChEjB,EAAS,KAAK,aAAaU,EAAOO,CAAO,EAC/C,OAAIy0I,IAAsC,KAAM11I,CAAM,IACpD,KAAKi0I,GAAiBj0I,EACtB,KAAKm0I,GAAwB,KAAK,QAClC,KAAKD,GAAsB,KAAKH,GAAc,OAEzC/zI,CACR,CACD,kBAAmB,CACjB,OAAO,KAAKi0I,EACb,CACD,YAAYj0I,EAAQ21I,EAAe,CACjC,OAAO,IAAI,MAAM31I,EAAQ,CACvB,IAAK,CAACb,EAAQ6G,KACZ,KAAK,UAAUA,CAAG,EAClB2vI,IAAgB3vI,CAAG,EACfA,IAAQ,YACV,KAAK,UAAU,MAAM,EACjB,CAAC,KAAK,QAAQ,+BAAiC,KAAK8tI,GAAiB,SAAW,WAClF,KAAKA,GAAiB,OACpB,IAAI,MACF,2DACD,CACf,GAGe,QAAQ,IAAI30I,EAAQ6G,CAAG,EAEtC,CAAK,CACF,CACD,UAAUA,EAAK,CACb,KAAK0uI,GAAc,IAAI1uI,CAAG,CAC3B,CACD,iBAAkB,CAChB,OAAO,KAAK+tI,EACb,CACD,QAAQ,CAAE,GAAG9yI,CAAS,EAAG,GAAI,CAC3B,OAAO,KAAK,MAAM,CAChB,GAAGA,CACT,CAAK,CACF,CACD,gBAAgBA,EAAS,CACvB,MAAM20I,EAAmB,KAAKhC,GAAQ,oBAAoB3yI,CAAO,EAC3DP,EAAQ,KAAKkzI,GAAQ,cAAa,EAAG,MAAM,KAAKA,GAASgC,CAAgB,EAC/E,OAAOl1I,EAAM,MAAO,EAAC,KAAK,IAAM,KAAK,aAAaA,EAAOk1I,CAAgB,CAAC,CAC3E,CACD,MAAMC,EAAc,CAClB,OAAO,KAAKjB,GAAc,CACxB,GAAGiB,EACH,cAAeA,EAAa,eAAiB,EACnD,CAAK,EAAE,KAAK,KACN,KAAK,aAAY,EACV,KAAK5B,GACb,CACF,CACDW,GAAciB,EAAc,CAC1B,KAAKV,GAAY,EACjB,IAAI9gI,EAAU,KAAK0/H,GAAc,MAC/B,KAAK,QACL8B,CACN,EACI,OAAKA,GAAc,eACjBxhI,EAAUA,EAAQ,MAAMtH,EAAI,GAEvBsH,CACR,CACDihI,IAAsB,CACpB,KAAKP,GAAkB,EACvB,MAAMnE,EAAYC,GAChB,KAAK,QAAQ,UACb,KAAKkD,EACX,EACI,GAAI/B,GAAmB,SAAQ,GAAM,KAAKiC,GAAe,SAAW,CAACxD,GAAeG,CAAS,EAC3F,OAGF,MAAM/sI,EADO6sI,IAAe,KAAKuD,GAAe,cAAerD,CAAS,EACjD,EACvB,KAAK2D,GAAkBjE,GAAe,WAAW,IAAM,CAChD,KAAK2D,GAAe,SACvB,KAAK,aAAY,CAEpB,EAAEpwI,CAAO,CACX,CACD2xI,IAA0B,CACxB,OAAQ,OAAO,KAAK,QAAQ,iBAAoB,WAAa,KAAK,QAAQ,gBAAgB,KAAKzB,EAAa,EAAI,KAAK,QAAQ,kBAAoB,EAClJ,CACD0B,GAAuBK,EAAc,CACnC,KAAKd,GAAqB,EAC1B,KAAKP,GAA0BqB,EAC3B,EAAA9D,GAAmB,YAAclB,GAAoB,KAAK,QAAQ,QAAS,KAAKiD,EAAa,IAAM,IAAS,CAACtD,GAAe,KAAKgE,EAAuB,GAAK,KAAKA,KAA4B,KAGlM,KAAKD,GAAqBlE,GAAe,YAAY,IAAM,EACrD,KAAK,QAAQ,6BAA+BR,IAAa,UAAS,IACpE,KAAK8E,GAAa,CAE1B,EAAO,KAAKH,EAAuB,EAChC,CACDI,IAAgB,CACd,KAAKS,GAAmB,EACxB,KAAKG,GAAuB,KAAKD,GAAyB,CAAA,CAC3D,CACDT,IAAqB,CACf,KAAKR,KAAoB,SAC3BjE,GAAe,aAAa,KAAKiE,EAAe,EAChD,KAAKA,GAAkB,OAE1B,CACDS,IAAwB,CAClB,KAAKR,KAAuB,SAC9BlE,GAAe,cAAc,KAAKkE,EAAkB,EACpD,KAAKA,GAAqB,OAE7B,CACD,aAAa9zI,EAAOO,EAAS,CAC3B,MAAMi0I,EAAY,KAAKnB,GACjBkB,EAAc,KAAK,QACnBc,EAAa,KAAK9B,GAClB+B,EAAkB,KAAK9B,GACvB+B,EAAoB,KAAK9B,GAEzB+B,EADcx1I,IAAUw0I,EACUx0I,EAAM,MAAQ,KAAKszI,GACrD,CAAE,MAAA11I,CAAO,EAAGoC,EAClB,IAAIy1I,EAAW,CAAE,GAAG73I,GAChB83I,EAAoB,GACpB7yI,EACJ,GAAItC,EAAQ,mBAAoB,CAC9B,MAAMm0I,EAAU,KAAK,eACfiB,EAAe,CAACjB,GAAWT,GAAmBj0I,EAAOO,CAAO,EAC5Dq1I,EAAkBlB,GAAWC,GAAsB30I,EAAOw0I,EAAWj0I,EAASg0I,CAAW,GAC3FoB,GAAgBC,KAClBH,EAAW,CACT,GAAGA,EACH,GAAG1C,IAAWn1I,EAAM,KAAMoC,EAAM,OAAO,CACjD,GAEUO,EAAQ,qBAAuB,gBACjCk1I,EAAS,YAAc,OAE1B,CACD,GAAI,CAAE,MAAAxsI,EAAO,eAAA4sI,EAAgB,OAAAC,CAAM,EAAKL,EACxC5yI,EAAO4yI,EAAS,KAChB,IAAIM,EAAa,GACjB,GAAIx1I,EAAQ,kBAAoB,QAAUsC,IAAS,QAAUizI,IAAW,UAAW,CACjF,IAAIE,EACAX,GAAY,mBAAqB90I,EAAQ,kBAAoBg1I,GAAmB,iBAClFS,EAAkBX,EAAW,KAC7BU,EAAa,IAEbC,EAAkB,OAAOz1I,EAAQ,iBAAoB,WAAaA,EAAQ,gBACxE,KAAKqzI,IAA2B,MAAM,KACtC,KAAKA,EACf,EAAYrzI,EAAQ,gBAEVy1I,IAAoB,SACtBF,EAAS,UACTjzI,EAAOquI,GACLmE,GAAY,KACZW,EACAz1I,CACV,EACQm1I,EAAoB,GAEvB,CACD,GAAIn1I,EAAQ,QAAUsC,IAAS,QAAU,CAACkzI,EACxC,GAAIV,GAAcxyI,IAASyyI,GAAiB,MAAQ/0I,EAAQ,SAAW,KAAKmzI,GAC1E7wI,EAAO,KAAK8wI,OAEZ,IAAI,CACF,KAAKD,GAAYnzI,EAAQ,OACzBsC,EAAOtC,EAAQ,OAAOsC,CAAI,EAC1BA,EAAOquI,GAAYmE,GAAY,KAAMxyI,EAAMtC,CAAO,EAClD,KAAKozI,GAAgB9wI,EACrB,KAAKswI,GAAe,IACrB,OAAQ8C,EAAa,CACpB,KAAK9C,GAAe8C,CACrB,CAGD,KAAK9C,KACPlqI,EAAQ,KAAKkqI,GACbtwI,EAAO,KAAK8wI,GACZkC,EAAiB,KAAK,MACtBC,EAAS,SAEX,MAAMI,EAAaT,EAAS,cAAgB,WACtCU,EAAYL,IAAW,UACvBM,EAAUN,IAAW,QACrBO,EAAYF,GAAaD,EACzBI,EAAUzzI,IAAS,OA6BnB0zI,EA5BS,CACb,OAAAT,EACA,YAAaL,EAAS,YACtB,UAAAU,EACA,UAAWL,IAAW,UACtB,QAAAM,EACA,iBAAkBC,EAClB,UAAAA,EACA,KAAAxzI,EACA,cAAe4yI,EAAS,cACxB,MAAAxsI,EACA,eAAA4sI,EACA,aAAcJ,EAAS,kBACvB,cAAeA,EAAS,mBACxB,iBAAkBA,EAAS,iBAC3B,UAAWz1I,EAAM,UAAW,EAC5B,oBAAqBy1I,EAAS,gBAAkBD,EAAkB,iBAAmBC,EAAS,iBAAmBD,EAAkB,iBACnI,WAAAU,EACA,aAAcA,GAAc,CAACC,EAC7B,eAAgBC,GAAW,CAACE,EAC5B,SAAUb,EAAS,cAAgB,SACnC,kBAAAC,EACA,eAAgBU,GAAWE,EAC3B,QAASE,GAAQx2I,EAAOO,CAAO,EAC/B,QAAS,KAAK,QACd,QAAS,KAAK6yI,GACd,UAAWhD,GAAoB7vI,EAAQ,QAASP,CAAK,IAAM,EACjE,EAEI,GAAI,KAAK,QAAQ,8BAA+B,CAC9C,MAAMy2I,EAAgBF,EAAW,OAAS,OACpCG,EAAqBH,EAAW,SAAW,SAAW,CAACE,EACvDE,EAA8Bv8E,GAAa,CAC3Cs8E,EACFt8E,EAAS,OAAOm8E,EAAW,KAAK,EACvBE,GACTr8E,EAAS,QAAQm8E,EAAW,IAAI,CAE1C,EACYK,EAAmB,IAAM,CAC7B,MAAMC,EAAU,KAAKzD,GAAmBmD,EAAW,QAAU9E,KAC7DkF,EAA2BE,CAAO,CAC1C,EACYC,EAAe,KAAK1D,GAC1B,OAAQ0D,EAAa,OAAM,CACzB,IAAK,UACC92I,EAAM,YAAcw0I,EAAU,WAChCmC,EAA2BG,CAAY,EAEzC,MACF,IAAK,aACCJ,GAAsBH,EAAW,OAASO,EAAa,QACzDF,IAEF,MACF,IAAK,YACC,CAACF,GAAsBH,EAAW,QAAUO,EAAa,SAC3DF,IAEF,KACH,CACF,CACD,OAAOL,CACR,CACD,cAAe,CACb,MAAMlB,EAAa,KAAK9B,GAClBgD,EAAa,KAAK,aAAa,KAAKlD,GAAe,KAAK,OAAO,EAMrE,GALA,KAAKG,GAAsB,KAAKH,GAAc,MAC9C,KAAKI,GAAwB,KAAK,QAC9B,KAAKD,GAAoB,OAAS,SACpC,KAAKI,GAA4B,KAAKP,IAEpCtC,GAAoBwF,EAAYlB,CAAU,EAC5C,OAEF,KAAK9B,GAAiBgD,EACtB,MAAMv4C,EAAwB,IAAM,CAClC,GAAI,CAACq3C,EACH,MAAO,GAET,KAAM,CAAE,oBAAA0B,CAAmB,EAAK,KAAK,QAC/BC,EAA2B,OAAOD,GAAwB,WAAaA,EAAmB,EAAKA,EACrG,GAAIC,IAA6B,OAAS,CAACA,GAA4B,CAAC,KAAKhD,GAAc,KACzF,MAAO,GAET,MAAMiD,EAAgB,IAAI,IACxBD,GAA4B,KAAKhD,EACzC,EACM,OAAI,KAAK,QAAQ,cACfiD,EAAc,IAAI,OAAO,EAEpB,OAAO,KAAK,KAAK1D,EAAc,EAAE,KAAMjuI,GAAQ,CACpD,MAAM4xI,EAAW5xI,EAEjB,OADgB,KAAKiuI,GAAe2D,CAAQ,IAAM7B,EAAW6B,CAAQ,GACnDD,EAAc,IAAIC,CAAQ,CACpD,CAAO,CACP,EACI,KAAKC,GAAQ,CAAE,UAAWn5C,EAAqB,CAAI,CAAA,CACpD,CACDy2C,IAAe,CACb,MAAMz0I,EAAQ,KAAKkzI,GAAQ,cAAe,EAAC,MAAM,KAAKA,GAAS,KAAK,OAAO,EAC3E,GAAIlzI,IAAU,KAAKqzI,GACjB,OAEF,MAAMmB,EAAY,KAAKnB,GACvB,KAAKA,GAAgBrzI,EACrB,KAAKszI,GAA4BtzI,EAAM,MACnC,KAAK,iBACPw0I,GAAW,eAAe,IAAI,EAC9Bx0I,EAAM,YAAY,IAAI,EAEzB,CACD,eAAgB,CACd,KAAK,aAAY,EACb,KAAK,gBACP,KAAKm0I,GAAa,CAErB,CACDgD,GAAQC,EAAe,CACrB/E,GAAc,MAAM,IAAM,CACpB+E,EAAc,WAChB,KAAK,UAAU,QAASpqD,GAAa,CACnCA,EAAS,KAAKumD,EAAc,CACtC,CAAS,EAEH,KAAKL,GAAQ,cAAe,EAAC,OAAO,CAClC,MAAO,KAAKG,GACZ,KAAM,wBACd,CAAO,CACP,CAAK,CACF,CACH,EACA,SAASgE,IAAkBr3I,EAAOO,EAAS,CACzC,OAAO6vI,GAAoB7vI,EAAQ,QAASP,CAAK,IAAM,IAASA,EAAM,MAAM,OAAS,QAAU,EAAEA,EAAM,MAAM,SAAW,SAAWowI,GAAoB7vI,EAAQ,aAAcP,CAAK,IAAM,GAC1L,CACA,SAASi0I,GAAmBj0I,EAAOO,EAAS,CAC1C,OAAO82I,IAAkBr3I,EAAOO,CAAO,GAAKP,EAAM,MAAM,OAAS,QAAUo0I,GAAcp0I,EAAOO,EAASA,EAAQ,cAAc,CACjI,CACA,SAAS6zI,GAAcp0I,EAAOO,EAAS+2I,EAAO,CAC5C,GAAIlH,GAAoB7vI,EAAQ,QAASP,CAAK,IAAM,IAASmwI,GAAiB5vI,EAAQ,UAAWP,CAAK,IAAM,SAAU,CACpH,MAAMoF,EAAQ,OAAOkyI,GAAU,WAAaA,EAAMt3I,CAAK,EAAIs3I,EAC3D,OAAOlyI,IAAU,UAAYA,IAAU,IAASoxI,GAAQx2I,EAAOO,CAAO,CACvE,CACD,MAAO,EACT,CACA,SAASo0I,GAAsB30I,EAAOw0I,EAAWj0I,EAASg0I,EAAa,CACrE,OAAQv0I,IAAUw0I,GAAapE,GAAoBmE,EAAY,QAASv0I,CAAK,IAAM,MAAW,CAACO,EAAQ,UAAYP,EAAM,MAAM,SAAW,UAAYw2I,GAAQx2I,EAAOO,CAAO,CAC9K,CACA,SAASi2I,GAAQx2I,EAAOO,EAAS,CAC/B,OAAO6vI,GAAoB7vI,EAAQ,QAASP,CAAK,IAAM,IAASA,EAAM,cAAcmwI,GAAiB5vI,EAAQ,UAAWP,CAAK,CAAC,CAChI,CACA,SAASg1I,IAAsCvlI,EAAU8nI,EAAkB,CACzE,MAAK,CAAAxG,GAAoBthI,EAAS,iBAAkB,EAAE8nI,CAAgB,CAIxE,CC5MA,SAASC,KAAkB,CACzB,MAAO,CACL,QAAS,OACT,KAAM,OACN,MAAO,KACP,aAAc,EACd,cAAe,KACf,SAAU,GACV,OAAQ,OACR,UAAW,OACX,YAAa,CACjB,CACA,CC9QA,IAAIC,IAAmB,cAAc7I,EAAa,CAChDsE,GACAK,GAAiB,OACjBmE,GACAC,GACA,YAAY1E,EAAQ1yI,EAAS,CAC3B,QACA,KAAK2yI,GAAUD,EACf,KAAK,WAAW1yI,CAAO,EACvB,KAAK,YAAW,EAChB,KAAKq3I,GAAa,CACnB,CACD,aAAc,CACZ,KAAK,OAAS,KAAK,OAAO,KAAK,IAAI,EACnC,KAAK,MAAQ,KAAK,MAAM,KAAK,IAAI,CAClC,CACD,WAAWr3I,EAAS,CAClB,MAAMg0I,EAAc,KAAK,QACzB,KAAK,QAAU,KAAKrB,GAAQ,uBAAuB3yI,CAAO,EACrDwwI,GAAoB,KAAK,QAASwD,CAAW,GAChD,KAAKrB,GAAQ,iBAAkB,EAAC,OAAO,CACrC,KAAM,yBACN,SAAU,KAAKwE,GACf,SAAU,IAClB,CAAO,EAECnD,GAAa,aAAe,KAAK,QAAQ,aAAelE,GAAQkE,EAAY,WAAW,IAAMlE,GAAQ,KAAK,QAAQ,WAAW,EAC/H,KAAK,MAAK,EACD,KAAKqH,IAAkB,MAAM,SAAW,WACjD,KAAKA,GAAiB,WAAW,KAAK,OAAO,CAEhD,CACD,eAAgB,CACT,KAAK,gBACR,KAAKA,IAAkB,eAAe,IAAI,CAE7C,CACD,iBAAiB9lI,EAAQ,CACvB,KAAKgmI,GAAa,EAClB,KAAKT,GAAQvlI,CAAM,CACpB,CACD,kBAAmB,CACjB,OAAO,KAAK2hI,EACb,CACD,OAAQ,CACN,KAAKmE,IAAkB,eAAe,IAAI,EAC1C,KAAKA,GAAmB,OACxB,KAAKE,GAAa,EAClB,KAAKT,GAAO,CACb,CACD,OAAOU,EAAWt3I,EAAS,CACzB,YAAKo3I,GAAiBp3I,EACtB,KAAKm3I,IAAkB,eAAe,IAAI,EAC1C,KAAKA,GAAmB,KAAKxE,GAAQ,iBAAgB,EAAG,MAAM,KAAKA,GAAS,KAAK,OAAO,EACxF,KAAKwE,GAAiB,YAAY,IAAI,EAC/B,KAAKA,GAAiB,QAAQG,CAAS,CAC/C,CACDD,IAAgB,CACd,MAAMh6I,EAAQ,KAAK85I,IAAkB,OAASF,IAAe,EAC7D,KAAKjE,GAAiB,CACpB,GAAG31I,EACH,UAAWA,EAAM,SAAW,UAC5B,UAAWA,EAAM,SAAW,UAC5B,QAASA,EAAM,SAAW,QAC1B,OAAQA,EAAM,SAAW,OACzB,OAAQ,KAAK,OACb,MAAO,KAAK,KAClB,CACG,CACDu5I,GAAQvlI,EAAQ,CACdygI,GAAc,MAAM,IAAM,CACxB,GAAI,KAAKsF,IAAkB,KAAK,aAAY,EAAI,CAC9C,MAAME,EAAY,KAAKtE,GAAe,UAChCuE,EAAiB,KAAKvE,GAAe,QACrCv6E,EAAU,CACd,OAAQ,KAAKk6E,GACb,KAAM,KAAK,QAAQ,KACnB,YAAa,KAAK,QAAQ,WACpC,EACQ,GAAIthI,GAAQ,OAAS,UAAW,CAC9B,GAAI,CACF,KAAK+lI,GAAe,YAClB/lI,EAAO,KACPimI,EACAC,EACA9+E,CACd,CACW,OAAQx3F,EAAG,CACL,QAAQ,OAAOA,CAAC,CACtB,CACD,GAAI,CACF,KAAKm2K,GAAe,YAClB/lI,EAAO,KACP,KACAimI,EACAC,EACA9+E,CACd,CACW,OAAQx3F,EAAG,CACL,QAAQ,OAAOA,CAAC,CACtB,CACX,SAAmBowC,GAAQ,OAAS,QAAS,CACnC,GAAI,CACF,KAAK+lI,GAAe,UAClB/lI,EAAO,MACPimI,EACAC,EACA9+E,CACd,CACW,OAAQx3F,EAAG,CACL,QAAQ,OAAOA,CAAC,CACtB,CACD,GAAI,CACF,KAAKm2K,GAAe,YAClB,OACA/lI,EAAO,MACPimI,EACAC,EACA9+E,CACd,CACW,OAAQx3F,EAAG,CACL,QAAQ,OAAOA,CAAC,CACtB,CACF,CACF,CACD,KAAK,UAAU,QAASwrH,GAAa,CACnCA,EAAS,KAAKumD,EAAc,CACpC,CAAO,CACP,CAAK,CACF,CACH,EClIIwE,GAAqBC,EAAmB,cAC1C,MACF,EACIC,GAAkBC,GAAgB,CACpC,MAAMjF,EAASkF,aAAiBJ,EAAkB,EAClD,GAAIG,EACF,OAAOA,EAET,GAAI,CAACjF,EACH,MAAM,IAAI,MAAM,wDAAwD,EAE1E,OAAOA,CACT,EACImF,IAAsB,CAAC,CACzB,OAAAnF,EACA,SAAA1gF,CACF,KACE8lF,EAAAA,UAAgB,KACdpF,EAAO,MAAK,EACL,IAAM,CACXA,EAAO,QAAO,CACpB,GACK,CAACA,CAAM,CAAC,EACYhqC,GAAAA,IAAI8uC,GAAmB,SAAU,CAAE,MAAO9E,EAAQ,SAAA1gF,CAAQ,CAAE,GCxBjF+lF,GAAqBN,EAAAA,cAAoB,EAAK,EAC9CO,GAAiB,IAAMJ,aAAiBG,EAAkB,EACpCA,GAAmB,SCD7C,SAASE,KAAc,CACrB,IAAIC,EAAU,GACd,MAAO,CACL,WAAY,IAAM,CAChBA,EAAU,EACX,EACD,MAAO,IAAM,CACXA,EAAU,EACX,EACD,QAAS,IACAA,CAEb,CACA,CACA,IAAIC,IAAiCV,EAAAA,cAAoBQ,IAAW,CAAE,EAClEG,IAA6B,IAAMR,EAAgB,WAACO,GAA8B,ECflFE,IAAkC,CAACr4I,EAASs4I,EAAoB74I,IAAU,CAC5E,MAAMqxI,EAAerxI,GAAO,MAAM,OAAS,OAAOO,EAAQ,cAAiB,WAAa6wI,GAAiB7wI,EAAQ,aAAc,CAACP,EAAM,MAAM,MAAOA,CAAK,CAAC,EAAIO,EAAQ,cACjKA,EAAQ,UAAYA,EAAQ,+BAAiC8wI,KAC1DwH,EAAmB,YACtBt4I,EAAQ,aAAe,IAG7B,EACIu4I,IAA8BD,GAAuB,CACvDR,EAAAA,UAAgB,IAAM,CACpBQ,EAAmB,WAAU,CACjC,EAAK,CAACA,CAAkB,CAAC,CACzB,EACIE,IAAc,CAAC,CACjB,OAAAz5I,EACA,mBAAAu5I,EACA,aAAAxH,EACA,MAAArxI,EACA,SAAAwnH,CACF,IACSloH,EAAO,SAAW,CAACu5I,EAAmB,QAAS,GAAI,CAACv5I,EAAO,YAAcU,IAAUwnH,GAAYloH,EAAO,OAAS,QAAU8xI,GAAiBC,EAAc,CAAC/xI,EAAO,MAAOU,CAAK,CAAC,GCvBlLg5I,IAAwB9D,GAAqB,CAC/C,GAAIA,EAAiB,SAAU,CAE7B,MAAM/2I,EAASiH,GAAUA,IAAU,SAAWA,EAAQ,KAAK,IAAIA,GAAS,IAAsB,GAAoB,EAC5G6zI,EAAoB/D,EAAiB,UAC3CA,EAAiB,UAAY,OAAO+D,GAAsB,WAAa,IAAIhtI,IAAS9N,EAAM86I,EAAkB,GAAGhtI,CAAI,CAAC,EAAI9N,EAAM86I,CAAiB,EAC3I,OAAO/D,EAAiB,QAAW,WACrCA,EAAiB,OAAS,KAAK,IAC7BA,EAAiB,OACjB,GACR,EAEG,CACH,EACIgE,IAAY,CAAC55I,EAAQ65I,IAAgB75I,EAAO,WAAaA,EAAO,YAAc,CAAC65I,EAC/EC,IAAgB,CAAClE,EAAkB51I,IAAW41I,GAAkB,UAAY51I,EAAO,UACnF+5I,GAAkB,CAACnE,EAAkBzlI,EAAUopI,IAAuBppI,EAAS,gBAAgBylI,CAAgB,EAAE,MAAM,IAAM,CAC/H2D,EAAmB,WAAU,CAC/B,CAAC,ECDD,SAASS,IAAa/4I,EAASg5I,EAAUrB,EAAa,CACpD,GAAI,CAAW,EAAC,WAAa,eACvB,OAAO33I,GAAY,UAAY,MAAM,QAAQA,CAAO,GACtD,MAAM,IAAI,MACR,8RACR,EAGE,MAAM44I,EAAcZ,KACdM,EAAqBF,MACrB1F,EAASgF,GAAeC,CAAW,EACnChD,EAAmBjC,EAAO,oBAAoB1yI,CAAO,EAC3D0yI,EAAO,oBAAoB,SAAS,4BAClCiC,CACJ,EACE,MAAMl1I,EAAQizI,EAAO,cAAa,EAAG,IAAIiC,EAAiB,SAAS,GAC/D,CAAW,GAAC,WAAa,eACtBA,EAAiB,SACpB,QAAQ,MACN,IAAIA,EAAiB,SAAS,oPACtC,GAGE,MAAMsE,EAAaj5I,EAAQ,aAAe,GAC1C20I,EAAiB,mBAAqBiE,EAAc,cAAgBK,EAAa,aAAe,OAChGR,IAAqB9D,CAAgB,EACrC0D,IAAgC1D,EAAkB2D,EAAoB74I,CAAK,EAC3E84I,IAA2BD,CAAkB,EAC7C,MAAMY,EAAkB,CAACxG,EAAO,cAAe,EAAC,IAAIiC,EAAiB,SAAS,EACxE,CAACzlI,CAAQ,EAAIiqI,EAAc,SAC/B,IAAM,IAAIH,EACRtG,EACAiC,CACD,CACL,EACQ51I,EAASmQ,EAAS,oBAAoBylI,CAAgB,EACtDyE,EAAkB,CAACR,GAAeK,EAgBxC,GAfAI,EAA0B,qBACxBC,EAAiB,YACd9sB,GAAkB,CACjB,MAAMvvC,EAAcm8D,EAAkBlqI,EAAS,UAAU4iI,GAAc,WAAWtlB,CAAa,CAAC,EAAI1gH,GACpG,OAAAoD,EAAS,aAAY,EACd+tE,CACR,EACD,CAAC/tE,EAAUkqI,CAAe,CAC3B,EACD,IAAMlqI,EAAS,iBAAkB,EACjC,IAAMA,EAAS,iBAAkB,CACrC,EACE4oI,EAAAA,UAAgB,IAAM,CACpB5oI,EAAS,WAAWylI,CAAgB,CACxC,EAAK,CAACA,EAAkBzlI,CAAQ,CAAC,EAC3B2pI,IAAclE,EAAkB51I,CAAM,EACxC,MAAM+5I,GAAgBnE,EAAkBzlI,EAAUopI,CAAkB,EAEtE,GAAIE,IAAY,CACd,OAAAz5I,EACA,mBAAAu5I,EACA,aAAc3D,EAAiB,aAC/B,MAAAl1I,EACA,SAAUk1I,EAAiB,QAC/B,CAAG,EACC,MAAM51I,EAAO,MAGf,OAAA2zI,EAAO,oBAAoB,SAAS,2BAClCiC,EACA51I,CACJ,EACM41I,EAAiB,+BAAiC,CAAC5D,GAAmB,SAAQ,GAAM4H,IAAU55I,EAAQ65I,CAAW,IACnGM,EAEdJ,GAAgBnE,EAAkBzlI,EAAUopI,CAAkB,EAG9D74I,GAAO,UAEA,MAAMqM,EAAI,EAAE,QAAQ,IAAM,CACjCoD,EAAS,aAAY,CAC3B,CAAK,EAEKylI,EAAiB,oBAAqD51I,EAA/BmQ,EAAS,YAAYnQ,CAAM,CAC5E,CChGA,SAASw6I,IAASv5I,EAAS23I,EAAa,CACtC,OAAOoB,IAAa/4I,EAASyyI,IAAekF,CAAW,CACzD,CCIA,SAAS6B,IAAYx5I,EAAS23I,EAAa,CACzC,MAAMjF,EAASgF,GAAeC,CAAW,EACnC,CAACzoI,CAAQ,EAAIiqI,EAAc,SAC/B,IAAM,IAAIjC,IACRxE,EACA1yI,CACD,CACL,EACE83I,EAAAA,UAAgB,IAAM,CACpB5oI,EAAS,WAAWlP,CAAO,CAC/B,EAAK,CAACkP,EAAUlP,CAAO,CAAC,EACtB,MAAMjB,EAASs6I,EAA0B,qBACvCC,EAAiB,YACd9sB,GAAkBt9G,EAAS,UAAU4iI,GAAc,WAAWtlB,CAAa,CAAC,EAC7E,CAACt9G,CAAQ,CACV,EACD,IAAMA,EAAS,iBAAkB,EACjC,IAAMA,EAAS,iBAAkB,CACrC,EACQuqI,EAASH,EAAiB,YAC9B,CAAChC,EAAWoC,IAAkB,CAC5BxqI,EAAS,OAAOooI,EAAWoC,CAAa,EAAE,MAAM5tI,EAAI,CACrD,EACD,CAACoD,CAAQ,CACb,EACE,GAAInQ,EAAO,OAAS8xI,GAAiB3hI,EAAS,QAAQ,aAAc,CAACnQ,EAAO,KAAK,CAAC,EAChF,MAAMA,EAAO,MAEf,MAAO,CAAE,GAAGA,EAAQ,OAAA06I,EAAQ,YAAa16I,EAAO,OAClD,CCvCA,IAAI46I,GAAe,CACjB,QAAS,OACT,SAAU,OACV,QAAS,OACT,KAAM,GACN,cAAe,CACb,OAAOC,GAAa,KAAK,QAAQ,KAAK,CACvC,EACD,kBAAmB,CACjB,OAAOA,GAAa,KAAK,QAAQ,OAAO,CACzC,CACH,EACA,SAASA,GAAavuH,EAAO,CAC3B,MAAMptB,EAAM,OAAOotB,CAAK,EAAGvJ,EAAM7jB,EAAI,OAAS,EAC9C,OAAO07I,GAAa,QAAQ,IAAM73H,EAAM,OAAO,aAAa,GAAKA,CAAG,EAAI,IAAM7jB,CAChF,CACA,SAAS47I,GAAkBphF,EAAS,CAClCkhF,GAAa,QAAUlhF,CACzB,CAQA,IAAIqhF,GAAS,GACTC,IAAU,CAACnyK,EAAG8Z,IAAM9Z,IAAM8Z,EAC1Bs4J,GAAyB,OAAO,aAAa,EAC7CC,GAAiB,OAAO,OAAU,WAClCC,GAAyB,OAAO,aAAa,EAC7CC,GAAgB,CAClB,OAAQJ,GACV,EAEIK,GAAaC,GACbC,GAAQ,EACRC,GAAU,EACVC,GAAU,CACZ,MAAO,KACP,SAAU,KACV,QAAS,KACT,MAAO,IACT,EACIC,GAAU,CAAA,EACVC,GAAQ,KACRC,GAAa,KAEbC,IAAuB,KACvBC,GAAW,KACXC,GAAU,KACVC,GAAU,KACVC,GAAY,EAChB,SAASC,GAAWvuI,EAAIwuI,EAAe,CACrC,MAAMzuD,EAAWouD,GAAU/8E,EAAQ48E,GAAOS,EAAUzuI,EAAG,SAAW,EAAGsxC,EAAUk9F,IAAkB,OAASp9E,EAAQo9E,EAAersE,EAAOssE,EAAUX,GAAU,CAC1J,MAAO,KACP,SAAU,KACV,QAASx8F,EAAUA,EAAQ,QAAU,KACrC,MAAOA,CACR,EAAEo9F,EAAWD,EAAUzuI,EAAK,IAAMA,EAAG,IAAM2uI,GAAQ,IAAMC,GAAUzsE,CAAI,CAAC,CAAC,EAC1E6rE,GAAQ7rE,EACRgsE,GAAW,KACX,GAAI,CACF,OAAOU,GAAWH,EAAU,EAAI,CACpC,QAAY,CACRP,GAAWpuD,EACXiuD,GAAQ58E,CACT,CACH,CACA,SAAS5O,GAAarqD,EAAO7E,EAAS,CACpCA,EAAUA,EAAU,OAAO,OAAO,CAAE,EAAEm6I,GAAen6I,CAAO,EAAIm6I,GAChE,MAAM/2K,EAAI,CACR,MAAAyhC,EACA,UAAW,KACX,cAAe,KACf,WAAY7E,EAAQ,QAAU,MAClC,EACQ88G,EAAU0+B,IACV,OAAOA,GAAW,aAEfA,EAASA,EAAOp4K,EAAE,KAAK,GAEvBq4K,GAAYr4K,EAAGo4K,CAAM,GAE9B,MAAO,CAACE,GAAW,KAAKt4K,CAAC,EAAG05I,CAAM,CACpC,CACA,SAAS6+B,GAAejvI,EAAI7H,EAAO7E,EAAS,CAC1C,MAAMh1B,EAAI4wK,GAAkBlvI,EAAI7H,EAAO,GAAMy1I,EAAK,EAE7CuB,GAAkB7wK,CAAC,CAC1B,CACA,SAAS8wK,GAAmBpvI,EAAI7H,EAAO7E,EAAS,CAC9C,MAAMh1B,EAAI4wK,GAAkBlvI,EAAI7H,EAAO,GAAOy1I,EAAK,EAE9CuB,GAAkB7wK,CAAC,CAC1B,CACA,SAAS+wK,GAAarvI,EAAI7H,EAAO7E,EAAS,CACxCo6I,GAAa4B,IACR,MAAChxK,EAAI4wK,GAAkBlvI,EAAI7H,EAAO,GAAOy1I,EAAK,GAE/C,CAACt6I,GAAW,CAACA,EAAQ,UAAQh1B,EAAE,KAAO,IAC1C+vK,GAAUA,GAAQ,KAAK/vK,CAAC,EAAI6wK,GAAkB7wK,CAAC,CACjD,CACA,SAASixK,GAAWvvI,EAAI7H,EAAO7E,EAAS,CACtCA,EAAUA,EAAU,OAAO,OAAO,CAAE,EAAEm6I,GAAen6I,CAAO,EAAIm6I,GAChE,MAAMnvK,EAAI4wK,GAAkBlvI,EAAI7H,EAAO,GAAM,CAAC,EAC9C,OAAA75B,EAAE,UAAY,KACdA,EAAE,cAAgB,KAClBA,EAAE,WAAag1B,EAAQ,QAAU,OAI1B67I,GAAkB7wK,CAAC,EACnB0wK,GAAW,KAAK1wK,CAAC,CAC1B,CACA,SAAS+mC,IAAU93B,EAAG,CACpB,OAAOA,GAAK,OAAOA,GAAM,UAAY,SAAUA,CACjD,CACA,SAASiiK,IAAeC,EAASC,EAAUC,EAAU,CACnD,IAAI1uI,EACA2uI,EACAt8I,EAEF2N,EAAS,GACT2uI,EAAUH,EACVn8I,EAAU,CAAA,EAET,IAACpR,EAAK,KAAM2tJ,EAAQ9B,GAASz5J,EAAK,KAAqCwzB,EAAY,GAAOoqE,EAAW,iBAAkB5+E,EAASw8I,EAAU,OAAO7uI,GAAW,YAAcsuI,GAAWtuI,CAAM,EAC9L,MAAM8uI,EAA2B,IAAI,IAAO,CAAC53I,EAAOmkH,CAAQ,GAAKhpH,EAAQ,SAAWkvD,IAAclvD,EAAQ,YAAY,EAAG,CAAC0I,EAAOg0I,CAAQ,EAAIxtF,GAAa,MAAM,EAAG,CAAC2nD,EAAOE,CAAO,EAAI7nD,GAAa,OAAQ,CACzM,OAAQ,EACZ,CAAG,EAAG,CAAC7xD,EAAO22D,CAAQ,EAAI9E,GAAa0vB,EAAW,QAAU,YAAY,EAClE+6D,GAAa,UACf34J,EAAK24J,GAAa,mBACd35I,EAAQ,cAAgB,UAAWu8I,EAAQv8I,EAAQ,aAC9C25I,GAAa,MAAQA,GAAa,IAAI34J,CAAE,IAAGu7J,EAAQ5C,GAAa,KAAK34J,CAAE,IAElF,SAAS27J,EAAQ3iK,EAAGC,EAAG2iK,EAAQ73I,EAAK,CAClC,OAAInW,IAAO5U,IACT4U,EAAK,KACLmW,IAAQ,SAAW65E,EAAW,KACzB5kG,IAAMuiK,GAAStiK,IAAMsiK,IAAUv8I,EAAQ,YAAY,eAAe,IAAMA,EAAQ,WAAW+E,EAAK,CACnG,MAAO9qB,CACR,CAAA,CAAC,EACFsiK,EAAQ9B,GAQDoC,EAAa5iK,EAAG2iK,CAAM,GAExB3iK,CACR,CACD,SAAS4iK,EAAa5iK,EAAG2vB,EAAK,CAC5B2xI,GAAW,IAAM,CACX3xI,IAAQ,QAAQo/G,EAAS,IAAM/uI,CAAC,EACpC+5E,EAASpqD,IAAQ,OAAS,UAAYg1E,EAAW,QAAU,YAAY,EACvE89D,EAAS9yI,CAAG,EACZ,UAAW5+B,KAAKyxK,EAAS,KAAI,EAAIzxK,EAAE,YACnCyxK,EAAS,MAAK,CACf,EAAE,EAAK,CACT,CACD,SAASp2E,GAAO,CACd,MAAMr7F,EAAI8xK,IAAgD7iK,EAAI4qB,IAAS+E,EAAMlB,IAC7E,GAAIkB,IAAQ,QAAU,CAAChb,EAAI,MAAMgb,EACjC,OAAIixI,IAAY,CAACA,GAAS,MAAQ7vK,GAChC2wK,GAAe,IAAM,CACnB9kC,IACIjoH,IACE5jB,EAAE,UACIyxK,EAAS,IAAIzxK,CAAC,IACtBA,EAAE,UAAS,EACXyxK,EAAS,IAAIzxK,CAAC,GAG1B,CAAO,EAEIiP,CACR,CACD,SAAS8iK,EAAKC,EAAa,GAAM,CAC/B,GAAIA,IAAe,IAASxoI,EAAW,OACvCA,EAAY,GACZ,MAAMkd,EAAS8qH,EAAUA,EAAO,EAAK7uI,EAErC,GAAI+jB,GAAU,MAAQA,IAAW,GAAO,CACtCirH,EAAQ/tJ,EAAIysJ,GAAQx2I,CAAK,CAAC,EAC1B,MACD,CAED,IAAI+3I,EACJ,MAAM5iK,EAAIuiK,IAAU9B,GAAU8B,EAAQlB,GAAQ,IAAM,CAClD,GAAI,CACF,OAAOiB,EAAQ5qH,EAAQ,CACrB,MAAO7sB,EAAO,EACd,WAAAm4I,CACV,CAAS,CACF,OAAQC,GAAc,CACrBL,EAASK,EACV,CACP,CAAK,EACD,GAAIL,IAAW,OAAQ,CACrBD,EAAQ/tJ,EAAI,OAAQsuJ,GAAUN,CAAM,EAAGlrH,CAAM,EAC7C,MACN,SAAe,CAAC3f,IAAU/3B,CAAC,EACrB,OAAA2iK,EAAQ/tJ,EAAI5U,EAAG,OAAQ03C,CAAM,EACtB13C,EAGT,OADA4U,EAAK5U,EACD,MAAOA,GACLA,EAAE,IAAM,EAAG2iK,EAAQ/tJ,EAAI5U,EAAE,EAAG,OAAQ03C,CAAM,EACzCirH,EAAQ/tJ,EAAI,OAAQsuJ,GAAUljK,EAAE,CAAC,EAAG03C,CAAM,EACxC13C,IAETw6B,EAAY,GACZ,eAAe,IAAMA,EAAY,EAAK,EACtC+mI,GAAW,IAAM,CACfvnF,EAAS4qB,EAAW,aAAe,SAAS,EAC5Cm4B,GACD,EAAE,EAAK,EACD/8H,EAAE,KAAMC,IAAM0iK,EAAQ3iK,EAAGC,GAAG,OAAQy3C,CAAM,EAAIzwD,IAAM07K,EAAQ3iK,EAAG,OAAQkjK,GAAUj8K,EAAC,EAAGywD,CAAM,CAAC,EACpG,CACD,OAAO,iBAAiB20C,EAAM,CAC5B,MAAO,CACL,IAAK,IAAMhpE,EAAO,CACnB,EACD,MAAO,CACL,IAAK,IAAMqL,EAAO,CACnB,EACD,QAAS,CACP,KAAM,CACJ,MAAMtlC,EAAIi6B,IACV,OAAOj6B,IAAM,WAAaA,IAAM,YACjC,CACF,EACD,OAAQ,CACN,KAAM,CACJ,GAAI,CAACw7G,EAAU,OAAOvY,IACtB,MAAMz8D,EAAMlB,IACZ,GAAIkB,GAAO,CAAChb,EAAI,MAAMgb,EACtB,OAAO/E,EAAK,CACb,CACF,CACL,CAAG,EACD,IAAIi5D,EAAQ48E,GACZ,OAAI8B,EAASb,GAAe,KAAO79E,EAAQ48E,GAAOqC,EAAK,EAAK,EAAE,EACzDA,EAAK,EAAK,EACR,CAAC12E,EAAM,CACZ,QAAUnK,GAASihF,GAAar/E,EAAO,IAAMi/E,EAAK7gF,CAAI,CAAC,EACvD,OAAQ8sD,CACZ,CAAG,CACH,CACA,SAASrU,IAAMjoG,EAAI,CACjB,OAAO6uI,GAAW7uI,EAAI,EAAK,CAC7B,CACA,SAAS2uI,GAAQ3uI,EAAI,CACnB,GAA6BmuI,KAAa,KAAM,OAAOnuI,IACvD,MAAM+/E,EAAWouD,GACjBA,GAAW,KACX,GAAI,CAEF,OAAOnuI,EAAE,CACb,QAAY,CACRmuI,GAAWpuD,CACZ,CACH,CACA,SAASjtG,GAAGg1E,EAAM9nD,EAAI1M,EAAS,CAC7B,MAAMo9I,EAAW,MAAM,QAAQ5oF,CAAI,EACnC,IAAI6oF,EACAC,EAAQt9I,GAAWA,EAAQ,MAC/B,OAAQwqF,GAAc,CACpB,IAAIhqF,EACJ,GAAI48I,EAAU,CACZ58I,EAAQ,MAAMg0D,EAAK,MAAM,EACzB,QAASlyF,EAAI,EAAGA,EAAIkyF,EAAK,OAAQlyF,IAAKk+B,EAAMl+B,CAAC,EAAIkyF,EAAKlyF,CAAC,EAAC,CAC9D,MAAWk+B,EAAQg0D,IACf,GAAI8oF,EACF,OAAAA,EAAQ,GACD9yD,EAET,MAAMzrF,EAASs8I,GAAQ,IAAM3uI,EAAGlM,EAAO68I,EAAW7yD,CAAS,CAAC,EAC5D,OAAA6yD,EAAY78I,EACLzB,CACX,CACA,CACA,SAASw+I,GAAQ7wI,EAAI,CACnBqvI,GAAa,IAAMV,GAAQ3uI,CAAE,CAAC,CAChC,CACA,SAAS8wI,GAAU9wI,EAAI,CACrB,OAAIguI,KAAU,OACLA,GAAM,WAAa,KAAMA,GAAM,SAAW,CAAChuI,CAAE,EACjDguI,GAAM,SAAS,KAAKhuI,CAAE,GACpBA,CACT,CACA,SAASwwD,IAAW,CAClB,OAAOw9E,EACT,CACA,SAASyC,GAAavqK,EAAG85B,EAAI,CAC3B,MAAMW,EAAOqtI,GACP+C,EAAe5C,GACrBH,GAAQ9nK,EACRioK,GAAW,KACX,GAAI,CACF,OAAOU,GAAW7uI,EAAI,EAAI,CAC3B,OAAQ9C,EAAK,CACZwT,GAAYxT,CAAG,CACnB,QAAY,CACR8wI,GAAQrtI,EACRwtI,GAAW4C,CACZ,CACH,CACA,SAASC,IAAgBhxI,EAAI,CAK3B,MAAMzhC,EAAI4vK,GACJjoK,EAAI8nK,GACV,OAAO,QAAQ,UAAU,KAAK,IAAM,CAClCG,GAAW5vK,EACXyvK,GAAQ9nK,EACR,IAAI1R,EAaJ,OAAAq6K,GAAW7uI,EAAI,EAAK,EACpBmuI,GAAWH,GAAQ,KACZx5K,EAAIA,EAAE,KAAO,MACxB,CAAG,CACH,CACA,GAAI,CAACy8K,IAAcC,GAAe,EAAoB1uF,GAAa,EAAK,EACxE,SAAS2uF,KAAgB,CACvB,MAAO,CAACF,IAAcD,GAAe,CACvC,CACA,SAAS/4E,GAAc9yD,EAAc7R,EAAS,CAC5C,MAAMhf,EAAqB,OAAO,SAAS,EAC3C,MAAO,CACL,GAAAA,EACA,SAAU88J,IAAe98J,CAAE,EAC3B,aAAA6wB,CACJ,CACA,CACA,SAAS6wF,GAAWjqC,EAAS,CAC3B,IAAI5zD,EACJ,OAAO61I,IAASA,GAAM,UAAY71I,EAAQ61I,GAAM,QAAQjiF,EAAQ,EAAE,KAAO,OAAS5zD,EAAQ4zD,EAAQ,YACpG,CACA,SAASzG,GAAStlD,EAAI,CACpB,MAAMqxI,EAAY9B,GAAWvvI,CAAE,EACzBsxI,EAAQ/B,GAAW,IAAMgC,GAAgBF,EAAS,CAAE,CAAC,EAC3D,OAAAC,EAAM,QAAU,IAAM,CACpB,MAAMhzK,EAAIgzK,IACV,OAAO,MAAM,QAAQhzK,CAAC,EAAIA,EAAIA,GAAK,KAAO,CAACA,CAAC,EAAI,EACpD,EACSgzK,CACT,CACA,IAAIlB,IACJ,SAASpB,IAAa,CAEpB,GAAI,KAAK,SAA8C,KAAK,MAC1D,GAAuC,KAAK,QAAWpB,GAAOuB,GAAkB,IAAI,MAC/E,CACH,MAAMqC,EAAUpD,GAChBA,GAAU,KACVS,GAAW,IAAM4C,GAAa,IAAI,EAAG,EAAK,EAC1CrD,GAAUoD,CACX,CAEH,GAAIrD,GAAU,CACZ,MAAMuD,EAAQ,KAAK,UAAY,KAAK,UAAU,OAAS,EAClDvD,GAAS,SAIZA,GAAS,QAAQ,KAAK,IAAI,EAC1BA,GAAS,YAAY,KAAKuD,CAAK,IAJ/BvD,GAAS,QAAU,CAAC,IAAI,EACxBA,GAAS,YAAc,CAACuD,CAAK,GAK1B,KAAK,WAIR,KAAK,UAAU,KAAKvD,EAAQ,EAC5B,KAAK,cAAc,KAAKA,GAAS,QAAQ,OAAS,CAAC,IAJnD,KAAK,UAAY,CAACA,EAAQ,EAC1B,KAAK,cAAgB,CAACA,GAAS,QAAQ,OAAS,CAAC,EAKpD,CAED,OAAO,KAAK,KACd,CACA,SAASY,GAAYj1I,EAAM3B,EAAOw5I,EAAQ,CACxC,IAAIrgG,EAA2Fx3C,EAAK,MACpG,OAAI,CAACA,EAAK,YAAc,CAACA,EAAK,WAAWw3C,EAASn5C,CAAK,KAQ9C2B,EAAK,MAAQ3B,EAChB2B,EAAK,WAAaA,EAAK,UAAU,QACnC+0I,GAAW,IAAM,CACf,QAASj5K,EAAI,EAAGA,EAAIkkC,EAAK,UAAU,OAAQlkC,GAAK,EAAG,CACjD,MAAMsQ,EAAI4zB,EAAK,UAAUlkC,CAAC,EACpBg8K,EAAoB3D,IAAcA,GAAW,QAC/C2D,GAAqB3D,GAAW,SAAS,IAAI/nK,CAAC,GAC9C0rK,EAAoB,CAAC1rK,EAAE,OAAS,CAACA,EAAE,SACjCA,EAAE,KAAMkoK,GAAQ,KAAKloK,CAAC,EACrBmoK,GAAQ,KAAKnoK,CAAC,EACfA,EAAE,WAAW2rK,GAAe3rK,CAAC,GAE9B0rK,IAAmB1rK,EAAE,MAAQ0nK,GAEnC,CACD,GAAIQ,GAAQ,OAAS,IACnB,MAAAA,GAAU,CAAA,EAEJ,IAAI,KAEb,EAAE,EAAK,GAGLj2I,CACT,CACA,SAASg3I,GAAkBr1I,EAAM,CAC/B,GAAI,CAACA,EAAK,GAAI,OACd80I,GAAU90I,CAAI,EACd,MAAM0hC,EAAO8yG,GACbwD,IAAeh4I,EAAuFA,EAAK,MAAO0hC,CAAI,CAWxH,CACA,SAASs2G,IAAeh4I,EAAM3B,EAAOqjC,EAAM,CACzC,IAAIqiD,EACJ,MAAMzsB,EAAQ48E,GAAOjuD,EAAWouD,GAChCA,GAAWH,GAAQl0I,EACnB,GAAI,CACF+jF,EAAY/jF,EAAK,GAAG3B,CAAK,CAC1B,OAAQ+E,EAAK,CACZ,OAAIpD,EAAK,OAMLA,EAAK,MAAQ8zI,GACb9zI,EAAK,OAASA,EAAK,MAAM,QAAQ80I,EAAS,EAC1C90I,EAAK,MAAQ,MAGjBA,EAAK,UAAY0hC,EAAO,EACjB9qB,GAAYxT,CAAG,CAC1B,QAAY,CACRixI,GAAWpuD,EACXiuD,GAAQ58E,CACT,EACG,CAACt3D,EAAK,WAAaA,EAAK,WAAa0hC,KACnC1hC,EAAK,WAAa,MAAQ,cAAeA,EAC3Ci1I,GAAYj1I,EAAM+jF,CAAe,EAK5B/jF,EAAK,MAAQ+jF,EACpB/jF,EAAK,UAAY0hC,EAErB,CACA,SAAS0zG,GAAkBlvI,EAAI0B,EAAMqwI,EAAMphJ,EAAQi9I,GAAOt6I,EAAS,CACjE,MAAMh1B,EAAI,CACR,GAAA0hC,EACA,MAAArP,EACA,UAAW,KACX,MAAO,KACP,QAAS,KACT,YAAa,KACb,SAAU,KACV,MAAO+Q,EACP,MAAOssI,GACP,QAASA,GAAQA,GAAM,QAAU,KACjC,KAAA+D,CACJ,EAKE,OAAI/D,KAAU,MACLA,KAAUF,KAKVE,GAAM,MACNA,GAAM,MAAM,KAAK1vK,CAAC,EADL0vK,GAAM,MAAQ,CAAC1vK,CAAC,GA2B/BA,CACT,CACA,SAAS0zK,GAAOl4I,EAAM,CAEpB,GAAuCA,EAAK,QAAW,EAAG,OAC1D,GAAuCA,EAAK,QAAW+zI,GAAS,OAAO4D,GAAa33I,CAAI,EACxF,GAAIA,EAAK,UAAY60I,GAAQ70I,EAAK,SAAS,UAAU,EAAG,OAAOA,EAAK,SAAS,QAAQ,KAAKA,CAAI,EAC9F,MAAMm4I,EAAY,CAACn4I,CAAI,EACvB,MAAQA,EAAOA,EAAK,SAAW,CAACA,EAAK,WAAaA,EAAK,UAAYw0I,KAE3Bx0I,EAAK,OAAOm4I,EAAU,KAAKn4I,CAAI,EAEvE,QAASlkC,EAAIq8K,EAAU,OAAS,EAAGr8K,GAAK,EAAGA,IAQzC,GAPAkkC,EAAOm4I,EAAUr8K,CAAC,EAOqBkkC,EAAK,QAAW8zI,GACrDuB,GAAkBr1I,CAAI,UACsBA,EAAK,QAAW+zI,GAAS,CACrE,MAAM2D,EAAUpD,GAChBA,GAAU,KACVS,GAAW,IAAM4C,GAAa33I,EAAMm4I,EAAU,CAAC,CAAC,EAAG,EAAK,EACxD7D,GAAUoD,CACX,CAEL,CACA,SAAS3C,GAAW7uI,EAAI0B,EAAM,CAC5B,GAAI0sI,GAAS,OAAOpuI,IACpB,IAAIkyI,EAAO,GACNxwI,IAAM0sI,GAAU,IACjBC,GAAS6D,EAAO,GACf7D,GAAU,CAAA,EACfC,KACA,GAAI,CACF,MAAM/8G,EAAMvxB,IACZ,OAAAmyI,IAAgBD,CAAI,EACb3gH,CACR,OAAQr0B,EAAK,CACPg1I,IAAM7D,GAAU,MACrBD,GAAU,KACV19H,GAAYxT,CAAG,CAChB,CACH,CACA,SAASi1I,IAAgBD,EAAM,CAM7B,GALI9D,KAEGT,GAASS,EAAO,EACrBA,GAAU,MAER8D,EAAM,OAmCV,MAAM,EAAI7D,GACVA,GAAU,KACN,EAAE,QAAQQ,GAAW,IAAMnB,GAAW,CAAC,EAAG,EAAK,CAErD,CACA,SAASC,GAASh7E,EAAO,CACvB,QAAS/8F,EAAI,EAAGA,EAAI+8F,EAAM,OAAQ/8F,IAAKo8K,GAAOr/E,EAAM/8F,CAAC,CAAC,CACxD,CAkBA,SAAS05K,IAAe38E,EAAO,CAC7B,IAAI/8F,EAAGw8K,EAAa,EACpB,IAAKx8K,EAAI,EAAGA,EAAI+8F,EAAM,OAAQ/8F,IAAK,CACjC,MAAMrB,EAAIo+F,EAAM/8F,CAAC,EACZrB,EAAE,KACFo+F,EAAMy/E,GAAY,EAAI79K,EADdy9K,GAAOz9K,CAAC,CAEtB,CACD,GAAI04K,GAAa,QAAS,CACxB,GAAIA,GAAa,MAAO,CACtBA,GAAa,UAAYA,GAAa,QAAU,CAAE,GAClDA,GAAa,QAAQ,KAAK,GAAGt6E,EAAM,MAAM,EAAGy/E,CAAU,CAAC,EACvD,MACD,CACDjF,IACD,CAMD,IALIF,GAAa,UAAYA,GAAa,MAAQ,CAACA,GAAa,SAC9Dt6E,EAAQ,CAAC,GAAGs6E,GAAa,QAAS,GAAGt6E,CAAK,EAC1Cy/E,GAAcnF,GAAa,QAAQ,OACnC,OAAOA,GAAa,SAEjBr3K,EAAI,EAAGA,EAAIw8K,EAAYx8K,IAAKo8K,GAAOr/E,EAAM/8F,CAAC,CAAC,CAClD,CACA,SAAS67K,GAAa33I,EAAMu4I,EAAQ,CAG7Bv4I,EAAK,MAAQ,EAClB,QAASlkC,EAAI,EAAGA,EAAIkkC,EAAK,QAAQ,OAAQlkC,GAAK,EAAG,CAC/C,MAAMqrC,EAASnH,EAAK,QAAQlkC,CAAC,EAC7B,GAAIqrC,EAAO,QAAS,CAClB,MAAMtQ,EAA4CsQ,EAAO,MACrDtQ,IAAUi9I,GACR3sI,IAAWoxI,IAAW,CAACpxI,EAAO,WAAaA,EAAO,UAAYqtI,KAAY0D,GAAO/wI,CAAM,EAClFtQ,IAAUk9I,IAAS4D,GAAaxwI,EAAQoxI,CAAM,CAC1D,CACF,CACH,CACA,SAASR,GAAe/3I,EAAM,CAE5B,QAASlkC,EAAI,EAAGA,EAAIkkC,EAAK,UAAU,OAAQlkC,GAAK,EAAG,CACjD,MAAMsQ,EAAI4zB,EAAK,UAAUlkC,CAAC,EACWsQ,EAAE,QAEhCA,EAAE,MAAQ2nK,GACX3nK,EAAE,KAAMkoK,GAAQ,KAAKloK,CAAC,EACrBmoK,GAAQ,KAAKnoK,CAAC,EACnBA,EAAE,WAAa2rK,GAAe3rK,CAAC,EAElC,CACH,CACA,SAAS0oK,GAAU90I,EAAM,CACvB,IAAIlkC,EACJ,GAAIkkC,EAAK,QACP,KAAOA,EAAK,QAAQ,QAAQ,CAC1B,MAAMmH,EAASnH,EAAK,QAAQ,IAAK,EAAEuD,EAAQvD,EAAK,YAAY,IAAK,EAAE0M,EAAMvF,EAAO,UAChF,GAAIuF,GAAOA,EAAI,OAAQ,CACrB,MAAMjjC,EAAIijC,EAAI,IAAK,EAAE9vC,EAAIuqC,EAAO,cAAc,MAC1C5D,EAAQmJ,EAAI,SACdjjC,EAAE,YAAY7M,CAAC,EAAI2mC,EACnBmJ,EAAInJ,CAAK,EAAI95B,EACb09B,EAAO,cAAc5D,CAAK,EAAI3mC,EAEjC,CACF,CAEH,GAAIojC,EAAK,OAAQ,CACf,IAAKlkC,EAAIkkC,EAAK,OAAO,OAAS,EAAGlkC,GAAK,EAAGA,IAAKg5K,GAAU90I,EAAK,OAAOlkC,CAAC,CAAC,EACtE,OAAOkkC,EAAK,MACb,CAGM,GAAIA,EAAK,MAAO,CACrB,IAAKlkC,EAAIkkC,EAAK,MAAM,OAAS,EAAGlkC,GAAK,EAAGA,IAAKg5K,GAAU90I,EAAK,MAAMlkC,CAAC,CAAC,EACpEkkC,EAAK,MAAQ,IACd,CACD,GAAIA,EAAK,SAAU,CACjB,IAAKlkC,EAAIkkC,EAAK,SAAS,OAAS,EAAGlkC,GAAK,EAAGA,IAAKkkC,EAAK,SAASlkC,CAAC,EAAC,EAChEkkC,EAAK,SAAW,IACjB,CAEIA,EAAK,MAAQ,CACpB,CAUA,SAAS02I,GAAUtzI,EAAK,CACtB,OAAIA,aAAe,MAAcA,EAC1B,IAAI,MAAM,OAAOA,GAAQ,SAAWA,EAAM,gBAAiB,CAChE,MAAOA,CACX,CAAG,CACH,CAQA,SAASwT,GAAYxT,EAAKk0D,EAAQ48E,GAAO,CAG7B,MADIwC,GAAUtzI,CAAG,CAS7B,CACA,SAASq0I,GAAgBF,EAAW,CAClC,GAAI,OAAOA,GAAc,YAAc,CAACA,EAAU,OAAQ,OAAOE,GAAgBF,EAAS,CAAE,EAC5F,GAAI,MAAM,QAAQA,CAAS,EAAG,CAC5B,MAAMz5G,EAAU,CAAA,EAChB,QAAShiE,EAAI,EAAGA,EAAIy7K,EAAU,OAAQz7K,IAAK,CACzC,MAAMy8B,EAASk/I,GAAgBF,EAAUz7K,CAAC,CAAC,EAC3C,MAAM,QAAQy8B,CAAM,EAAIulC,EAAQ,KAAK,MAAMA,EAASvlC,CAAM,EAAIulC,EAAQ,KAAKvlC,CAAM,CAClF,CACD,OAAOulC,CACR,CACD,OAAOy5G,CACT,CACA,SAASD,IAAe98J,EAAIgf,EAAS,CACnC,OAAO,SAAkB+xD,EAAO,CAC9B,IAAI9zB,EACJ,OAAA69G,GAAmB,IAAM79G,EAAMo9G,GAAQ,KACrCX,GAAM,QAAU,CACd,GAAGA,GAAM,QACT,CAAC15J,CAAE,EAAG+wE,EAAM,KACpB,EACaC,GAAS,IAAMD,EAAM,QAAQ,EACrC,EAAG,MAAM,EACH9zB,CACX,CACA,CACA,IAAI+gH,GAA2B,OAAO,UAAU,EAChD,SAASC,GAAQ/kK,EAAG,CAClB,QAAS5X,EAAI,EAAGA,EAAI4X,EAAE,OAAQ5X,IAAK4X,EAAE5X,CAAC,GACxC,CACA,SAAS48K,IAASpzH,EAAMqzH,EAAOn/I,EAAU,CAAA,EAAI,CAC3C,IAAI2xB,EAAQ,CAAA,EAAIytH,EAAS,CAAA,EAAIC,EAAY,CAAA,EAAIv9H,EAAM,EAAGkoD,EAAUm1E,EAAM,OAAS,EAAI,CAAA,EAAK,KACxF,OAAA3B,GAAU,IAAMyB,GAAQI,CAAS,CAAC,EAC3B,IAAM,CACX,IAAIC,EAAWxzH,EAAI,GAAM,CAAE,EAAEyzH,EAASD,EAAS,OAAQh9K,EAAGkmB,EAC1D,OAAA82J,EAASpF,EAAM,EACRmB,GAAQ,IAAM,CACnB,IAAImE,EAAYC,EAAgBr0G,EAAMs0G,EAAeC,EAAar+I,EAAOtD,EAAK4hJ,EAAQ91I,EACtF,GAAIy1I,IAAW,EACTz9H,IAAQ,IACVm9H,GAAQI,CAAS,EACjBA,EAAY,CAAA,EACZ1tH,EAAQ,CAAA,EACRytH,EAAS,CAAA,EACTt9H,EAAM,EACNkoD,IAAYA,EAAU,CAAA,IAEpBhqE,EAAQ,WACV2xB,EAAQ,CAACqtH,EAAQ,EACjBI,EAAO,CAAC,EAAInE,GAAY4E,IACtBR,EAAU,CAAC,EAAIQ,EACR7/I,EAAQ,WAChB,EACD8hB,EAAM,WAECA,IAAQ,EAAG,CAEpB,IADAs9H,EAAS,IAAI,MAAMG,CAAM,EACpB/2J,EAAI,EAAGA,EAAI+2J,EAAQ/2J,IACtBmpC,EAAMnpC,CAAC,EAAI82J,EAAS92J,CAAC,EACrB42J,EAAO52J,CAAC,EAAIyyJ,GAAW6E,CAAM,EAE/Bh+H,EAAMy9H,CACd,KAAa,CAIL,IAHAn0G,EAAO,IAAI,MAAMm0G,CAAM,EACvBG,EAAgB,IAAI,MAAMH,CAAM,EAChCv1E,IAAY21E,EAAc,IAAI,MAAMJ,CAAM,GACrCj+I,EAAQ,EAAGtD,EAAM,KAAK,IAAI8jB,EAAKy9H,CAAM,EAAGj+I,EAAQtD,GAAO2zB,EAAMrwB,CAAK,IAAMg+I,EAASh+I,CAAK,EAAGA,IAAS,CACvG,IAAKtD,EAAM8jB,EAAM,EAAG89H,EAASL,EAAS,EAAGvhJ,GAAOsD,GAASs+I,GAAUt+I,GAASqwB,EAAM3zB,CAAG,IAAMshJ,EAASM,CAAM,EAAG5hJ,IAAO4hJ,IAClHx0G,EAAKw0G,CAAM,EAAIR,EAAOphJ,CAAG,EACzB0hJ,EAAcE,CAAM,EAAIP,EAAUrhJ,CAAG,EACrCgsE,IAAY21E,EAAYC,CAAM,EAAI51E,EAAQhsE,CAAG,GAI/C,IAFAwhJ,EAA6B,IAAI,IACjCC,EAAiB,IAAI,MAAMG,EAAS,CAAC,EAChCp3J,EAAIo3J,EAAQp3J,GAAK8Y,EAAO9Y,IAC3BshB,EAAOw1I,EAAS92J,CAAC,EACjBlmB,EAAIk9K,EAAW,IAAI11I,CAAI,EACvB21I,EAAej3J,CAAC,EAAIlmB,IAAM,OAAS,GAAKA,EACxCk9K,EAAW,IAAI11I,EAAMthB,CAAC,EAExB,IAAKlmB,EAAIg/B,EAAOh/B,GAAK07B,EAAK17B,IACxBwnC,EAAO6nB,EAAMrvD,CAAC,EACdkmB,EAAIg3J,EAAW,IAAI11I,CAAI,EACnBthB,IAAM,QAAUA,IAAM,IACxB4iD,EAAK5iD,CAAC,EAAI42J,EAAO98K,CAAC,EAClBo9K,EAAcl3J,CAAC,EAAI62J,EAAU/8K,CAAC,EAC9B0nG,IAAY21E,EAAYn3J,CAAC,EAAIwhF,EAAQ1nG,CAAC,GACtCkmB,EAAIi3J,EAAej3J,CAAC,EACpBg3J,EAAW,IAAI11I,EAAMthB,CAAC,GACjB62J,EAAU/8K,CAAC,IAEpB,IAAKkmB,EAAI8Y,EAAO9Y,EAAI+2J,EAAQ/2J,IACtBA,KAAK4iD,GACPg0G,EAAO52J,CAAC,EAAI4iD,EAAK5iD,CAAC,EAClB62J,EAAU72J,CAAC,EAAIk3J,EAAcl3J,CAAC,EAC1BwhF,IACFA,EAAQxhF,CAAC,EAAIm3J,EAAYn3J,CAAC,EAC1BwhF,EAAQxhF,CAAC,EAAEA,CAAC,IAET42J,EAAO52J,CAAC,EAAIyyJ,GAAW6E,CAAM,EAEtCV,EAASA,EAAO,MAAM,EAAGt9H,EAAMy9H,CAAM,EACrC5tH,EAAQ2tH,EAAS,MAAM,CAAC,CACzB,CACD,OAAOF,CACb,CAAK,EACD,SAASU,EAAOD,EAAU,CAExB,GADAR,EAAU72J,CAAC,EAAIq3J,EACX71E,EAAS,CACX,KAAM,CAAC5mG,EAAGgmH,CAAG,EAAIl6B,GAAa1mE,CAAC,EAC/B,OAAAwhF,EAAQxhF,CAAC,EAAI4gG,EACN+1D,EAAMG,EAAS92J,CAAC,EAAGplB,CAAC,CAC5B,CACD,OAAO+7K,EAAMG,EAAS92J,CAAC,CAAC,CACzB,CACL,CACA,CACA,SAASu3J,IAAWj0H,EAAMqzH,EAAOn/I,EAAU,CAAA,EAAI,CAC7C,IAAI2xB,EAAQ,CAAA,EAAIytH,EAAS,CAAE,EAAEC,EAAY,GAAIW,EAAU,CAAE,EAAEl+H,EAAM,EAAGx/C,EACpE,OAAAk7K,GAAU,IAAMyB,GAAQI,CAAS,CAAC,EAC3B,IAAM,CACX,MAAMC,EAAWxzH,EAAM,GAAI,CAAE,EAAEyzH,EAASD,EAAS,OACjD,OAAAA,EAASpF,EAAM,EACRmB,GAAQ,IAAM,CACnB,GAAIkE,IAAW,EACb,OAAIz9H,IAAQ,IACVm9H,GAAQI,CAAS,EACjBA,EAAY,CAAA,EACZ1tH,EAAQ,CAAA,EACRytH,EAAS,CAAA,EACTt9H,EAAM,EACNk+H,EAAU,CAAA,GAERhgJ,EAAQ,WACV2xB,EAAQ,CAACqtH,EAAQ,EACjBI,EAAO,CAAC,EAAInE,GAAY4E,IACtBR,EAAU,CAAC,EAAIQ,EACR7/I,EAAQ,WAChB,EACD8hB,EAAM,GAEDs9H,EAST,IAPIztH,EAAM,CAAC,IAAMqtH,KACfK,EAAU,CAAC,IACXA,EAAY,CAAA,EACZ1tH,EAAQ,CAAA,EACRytH,EAAS,CAAA,EACTt9H,EAAM,GAEHx/C,EAAI,EAAGA,EAAIi9K,EAAQj9K,IAClBA,EAAIqvD,EAAM,QAAUA,EAAMrvD,CAAC,IAAMg9K,EAASh9K,CAAC,EAC7C09K,EAAQ19K,CAAC,EAAE,IAAMg9K,EAASh9K,CAAC,CAAC,EACnBA,GAAKqvD,EAAM,SACpBytH,EAAO98K,CAAC,EAAI24K,GAAW6E,CAAM,GAGjC,KAAOx9K,EAAIqvD,EAAM,OAAQrvD,IACvB+8K,EAAU/8K,CAAC,IAEb,OAAAw/C,EAAMk+H,EAAQ,OAASX,EAAU,OAASE,EAC1C5tH,EAAQ2tH,EAAS,MAAM,CAAC,EACjBF,EAASA,EAAO,MAAM,EAAGt9H,CAAG,CACzC,CAAK,EACD,SAASg+H,EAAOD,EAAU,CACxBR,EAAU/8K,CAAC,EAAIu9K,EACf,KAAM,CAACz8K,EAAGgmH,CAAG,EAAIl6B,GAAaowF,EAASh9K,CAAC,CAAC,EACzC,OAAA09K,EAAQ19K,CAAC,EAAI8mH,EACN+1D,EAAM/7K,EAAGd,CAAC,CAClB,CACL,CACA,CAEA,SAAS29K,EAAgBv3B,EAAM32D,EAAO,CAUpC,OAAOspF,GAAQ,IAAM3yB,EAAK32D,GAAS,CAAA,CAAE,CAAC,CACxC,CACA,SAASmuF,IAAS,CAChB,MAAO,EACT,CACA,IAAIC,GAAY,CACd,IAAIh/K,EAAGunE,EAAU0U,EAAU,CACzB,OAAI1U,IAAasxG,GAAe58F,EACzBj8E,EAAE,IAAIunE,CAAQ,CACtB,EACD,IAAIvnE,EAAGunE,EAAU,CACf,OAAIA,IAAasxG,GAAe,GACzB74K,EAAE,IAAIunE,CAAQ,CACtB,EACD,IAAKw3G,GACL,eAAgBA,GAChB,yBAAyB/+K,EAAGunE,EAAU,CACpC,MAAO,CACL,aAAc,GACd,WAAY,GACZ,KAAM,CACJ,OAAOvnE,EAAE,IAAIunE,CAAQ,CACtB,EACD,IAAKw3G,GACL,eAAgBA,EACtB,CACG,EACD,QAAQ/+K,EAAG,CACT,OAAOA,EAAE,MACV,CACH,EACA,SAASi/K,GAAch9K,EAAG,CACxB,OAASA,EAAI,OAAOA,GAAM,WAAaA,EAAC,EAAKA,GAAUA,EAAL,CAAE,CACtD,CACA,SAASi9K,KAAiB,CACxB,QAAS/9K,EAAI,EAAGg7B,EAAS,KAAK,OAAQh7B,EAAIg7B,EAAQ,EAAEh7B,EAAG,CACrD,MAAM2X,EAAI,KAAK3X,CAAC,IAChB,GAAI2X,IAAM,OAAQ,OAAOA,CAC1B,CACH,CACA,SAASqmK,MAActnI,EAAS,CAC9B,IAAIgjG,EAAQ,GACZ,QAAS15I,EAAI,EAAGA,EAAI02C,EAAQ,OAAQ12C,IAAK,CACvC,MAAMc,EAAI41C,EAAQ12C,CAAC,EACnB05I,EAAQA,GAAS,CAAC,CAAC54I,GAAK42K,MAAU52K,EAClC41C,EAAQ12C,CAAC,EAAI,OAAOc,GAAM,YAAc44I,EAAQ,GAAMigC,GAAW74K,CAAC,GAAKA,CACxE,CACD,GAAI62K,IAAkBj+B,EACpB,OAAO,IAAI,MAAM,CACf,IAAItzE,EAAU,CACZ,QAASpmE,EAAI02C,EAAQ,OAAS,EAAG12C,GAAK,EAAGA,IAAK,CAC5C,MAAM2X,EAAImmK,GAAcpnI,EAAQ12C,CAAC,CAAC,EAAEomE,CAAQ,EAC5C,GAAIzuD,IAAM,OAAQ,OAAOA,CAC1B,CACF,EACD,IAAIyuD,EAAU,CACZ,QAASpmE,EAAI02C,EAAQ,OAAS,EAAG12C,GAAK,EAAGA,IACvC,GAAIomE,KAAY03G,GAAcpnI,EAAQ12C,CAAC,CAAC,EAAG,MAAO,GAEpD,MAAO,EACR,EACD,MAAO,CACL,MAAMmzC,EAAO,CAAA,EACb,QAASnzC,EAAI,EAAGA,EAAI02C,EAAQ,OAAQ12C,IAAKmzC,EAAK,KAAK,GAAG,OAAO,KAAK2qI,GAAcpnI,EAAQ12C,CAAC,CAAC,CAAC,CAAC,EAC5F,MAAO,CAAC,GAAG,IAAI,IAAImzC,CAAI,CAAC,CACzB,CACF,EAAE0qI,EAAS,EAEd,MAAMI,EAAa,CAAA,EACbC,EAA0B,OAAO,OAAO,IAAI,EAClD,QAASl+K,EAAI02C,EAAQ,OAAS,EAAG12C,GAAK,EAAGA,IAAK,CAC5C,MAAMqrC,EAASqL,EAAQ12C,CAAC,EACxB,GAAI,CAACqrC,EAAQ,SACb,MAAM8yI,EAAa,OAAO,oBAAoB9yI,CAAM,EACpD,QAAS/yB,EAAK6lK,EAAW,OAAS,EAAG7lK,GAAM,EAAGA,IAAM,CAClD,MAAMmqB,EAAM07I,EAAW7lK,CAAE,EACzB,GAAImqB,IAAQ,aAAeA,IAAQ,cAAe,SAClD,MAAM2pH,EAAO,OAAO,yBAAyB/gH,EAAQ5I,CAAG,EACxD,GAAI,CAACy7I,EAAQz7I,CAAG,EACdy7I,EAAQz7I,CAAG,EAAI2pH,EAAK,IAAM,CACxB,WAAY,GACZ,aAAc,GACd,IAAK2xB,IAAe,KAAKE,EAAWx7I,CAAG,EAAI,CAAC2pH,EAAK,IAAI,KAAK/gH,CAAM,CAAC,CAAC,CAC5E,EAAY+gH,EAAK,QAAU,OAASA,EAAO,WAC9B,CACL,MAAMgyB,EAAWH,EAAWx7I,CAAG,EAC3B27I,IACEhyB,EAAK,IAAKgyB,EAAS,KAAKhyB,EAAK,IAAI,KAAK/gH,CAAM,CAAC,EACxC+gH,EAAK,QAAU,QAAQgyB,EAAS,KAAK,IAAMhyB,EAAK,KAAK,EAEjE,CACF,CACF,CACD,MAAMxwH,EAAS,CAAA,EACTyiJ,EAAc,OAAO,KAAKH,CAAO,EACvC,QAASl+K,EAAIq+K,EAAY,OAAS,EAAGr+K,GAAK,EAAGA,IAAK,CAChD,MAAMyiC,EAAM47I,EAAYr+K,CAAC,EAAGosJ,EAAO8xB,EAAQz7I,CAAG,EAC1C2pH,GAAQA,EAAK,IAAK,OAAO,eAAexwH,EAAQ6G,EAAK2pH,CAAI,EACxDxwH,EAAO6G,CAAG,EAAI2pH,EAAOA,EAAK,MAAQ,MACxC,CACD,OAAOxwH,CACT,CACA,SAAS0iJ,GAAW7uF,KAAUt8C,EAAM,CAClC,MAAMqM,EAAMrM,EAAK,OACjB,GAAIwkI,IAAkBD,MAAUjoF,EAAO,CACrC,MAAM8uF,EAAU/+H,EAAM,EAAIrM,EAAK,OAASA,EAAK,CAAC,EACxCwoB,EAAMxoB,EAAK,IAAK7pC,GACb,IAAI,MAAM,CACf,IAAI88D,EAAU,CACZ,OAAO98D,EAAE,SAAS88D,CAAQ,EAAIqpB,EAAMrpB,CAAQ,EAAI,MACjD,EACD,IAAIA,EAAU,CACZ,OAAO98D,EAAE,SAAS88D,CAAQ,GAAKA,KAAYqpB,CAC5C,EACD,MAAO,CACL,OAAOnmF,EAAE,OAAQ88D,GAAaA,KAAYqpB,CAAK,CAChD,CACF,EAAEouF,EAAS,CACb,EACD,OAAAliH,EAAI,KAAK,IAAI,MAAM,CACjB,IAAIyK,EAAU,CACZ,OAAOm4G,EAAQ,SAASn4G,CAAQ,EAAI,OAASqpB,EAAMrpB,CAAQ,CAC5D,EACD,IAAIA,EAAU,CACZ,OAAOm4G,EAAQ,SAASn4G,CAAQ,EAAI,GAAQA,KAAYqpB,CACzD,EACD,MAAO,CACL,OAAO,OAAO,KAAKA,CAAK,EAAE,OAAQnmF,GAAM,CAACi1K,EAAQ,SAASj1K,CAAC,CAAC,CAC7D,CACP,EAAOu0K,EAAS,CAAC,EACNliH,CACR,CACD,MAAM6iH,EAAU,CAAA,EAChB,QAASx+K,EAAI,EAAGA,GAAKw/C,EAAKx/C,IACxBw+K,EAAQx+K,CAAC,EAAI,GAEf,UAAWg1F,KAAY,OAAO,oBAAoBvF,CAAK,EAAG,CACxD,IAAIgvF,EAAWj/H,EACf,QAASx/C,EAAI,EAAGA,EAAImzC,EAAK,OAAQnzC,IAC/B,GAAImzC,EAAKnzC,CAAC,EAAE,SAASg1F,CAAQ,EAAG,CAC9BypF,EAAWz+K,EACX,KACD,CAEH,MAAMosJ,EAAO,OAAO,yBAAyB38D,EAAOuF,CAAQ,EACtC,CAACo3D,EAAK,KAAO,CAACA,EAAK,KAAOA,EAAK,YAAcA,EAAK,UAAYA,EAAK,aACzEoyB,EAAQC,CAAQ,EAAEzpF,CAAQ,EAAIo3D,EAAK,MAAQ,OAAO,eAAeoyB,EAAQC,CAAQ,EAAGzpF,EAAUo3D,CAAI,CACnH,CACD,OAAOoyB,CACT,CACA,SAASE,IAAKt0I,EAAI,CAChB,IAAIu0I,EACAjnK,EACJ,MAAM+oF,EAAQhR,GAAU,CACtB,MAAMtqD,EAAMkyI,GAAa,QACzB,GAAIlyI,EAAK,CACP,KAAM,CAACrkC,EAAGgmH,CAAG,EAAIl6B,GAAY,EAC7ByqF,GAAa,QAAUA,GAAa,MAAQ,GAC5CA,GAAa,SACZ3/J,IAAMA,EAAI0yB,EAAI,IAAG,KAAMugB,GAAQ,CAC9B,CAAC0sH,GAAa,MAAQE,GAAkBpyI,CAAG,EAC3CkyI,GAAa,QACbvwD,EAAI,IAAMn8D,EAAI,OAAO,EACrB4sH,IACR,CAAO,EACDoH,EAAO79K,CACb,SAAe,CAAC69K,EAAM,CAChB,KAAM,CAAC79K,CAAC,EAAI84K,IAAe,KAAOliK,IAAMA,EAAI0yB,EAAE,IAAK,KAAMugB,GAAQA,EAAI,OAAO,CAAC,EAC7Eg0H,EAAO79K,CACR,CACD,IAAIslJ,EACJ,OAAOuzB,GAAW,KAAOvzB,EAAOu4B,EAAM,GAAI5F,GAAQ,IAAM,CAEtD,GAAI,CAAC5zI,GAAOkyI,GAAa,KAAM,OAAOjxB,EAAK32D,CAAK,EAChD,MAAM/mF,EAAI2uK,GAAa,QACvBE,GAAkBpyI,CAAG,EACrB,MAAMh/B,EAAIigJ,EAAK32D,CAAK,EACpB,OAAA8nF,GAAkB7uK,CAAC,EACZvC,CACb,CAAK,EAAI,EAAE,CACX,EACE,OAAAs6F,EAAK,QAAU,IAAM/oF,KAAOA,EAAI0yB,EAAE,GAAI,KAAMugB,GAAQg0H,EAAO,IAAMh0H,EAAI,OAAO,EAAGjzC,GACxE+oF,CACT,CACA,IAAIm+E,IAAU,EACd,SAASC,IAAiB,CAExB,OADYxH,GAAa,QACZA,GAAa,iBAAgB,EAAK,MAAMuH,KAAS,EAChE,CACA,IAAIE,GAAiB/8I,GAAS,oBAAoBA,CAAI,KACtD,SAASg9I,IAAItvF,EAAO,CAClB,MAAM0sB,EAAW,aAAc1sB,GAAS,CACtC,SAAU,IAAMA,EAAM,QAC1B,EACE,OAAOkqF,GAAWiD,IAAS,IAAMntF,EAAM,KAAMA,EAAM,SAAU0sB,GAAY,MAAM,CAAC,CAClF,CACA,SAAS6iE,IAAMvvF,EAAO,CACpB,MAAM0sB,EAAW,aAAc1sB,GAAS,CACtC,SAAU,IAAMA,EAAM,QAC1B,EACE,OAAOkqF,GAAW8D,IAAW,IAAMhuF,EAAM,KAAMA,EAAM,SAAU0sB,GAAY,MAAM,CAAC,CACpF,CACA,SAAS8iE,GAAKxvF,EAAO,CACnB,MAAMyvF,EAAQzvF,EAAM,MACd0vF,EAAiBxF,GAAW,IAAMlqF,EAAM,KAAM,OAAQ,MAAM,EAC5D+Q,EAAY0+E,EAAQC,EAAiBxF,GAAWwF,EAAgB,OAAQ,CAC5E,OAAQ,CAAC75K,EAAG8Z,IAAM,CAAC9Z,GAAM,CAAC8Z,CAC9B,CAAG,EACD,OAAOu6J,GAAW,IAAM,CACtB,MAAMjxK,EAAI83F,IACV,GAAI93F,EAAG,CACL,MAAMgvE,EAAQ+X,EAAM,SAEpB,OADW,OAAO/X,GAAU,YAAcA,EAAM,OAAS,EAC7CqhG,GAAQ,IAAMrhG,EAAMwnG,EAAQx2K,EAAI,IAAM,CAChD,GAAI,CAACqwK,GAAQv4E,CAAS,EAAG,MAAMs+E,GAAc,MAAM,EACnD,OAAOK,EAAc,CAC7B,CAAO,CAAC,EAAIznG,CACP,CACD,OAAO+X,EAAM,QACjB,EAAK,OAAQ,MAAM,CACnB,CACA,SAAS2vF,IAAO3vF,EAAO,CACrB,MAAM4vF,EAAM3vF,GAAS,IAAMD,EAAM,QAAQ,EACnC6vF,EAAa3F,GAAW,IAAM,CAClC,MAAM7oK,EAAKuuK,IACLE,EAAM,MAAM,QAAQzuK,CAAE,EAAIA,EAAK,CAACA,CAAE,EACxC,IAAIinF,EAAO,IAAM,GACjB,QAAS/3F,EAAI,EAAGA,EAAIu/K,EAAI,OAAQv/K,IAAK,CACnC,MAAMynC,EAAQznC,EACR2iB,EAAK48J,EAAIv/K,CAAC,EACVw/K,EAAWznF,EACXonF,EAAiBxF,GAAW,IAAM6F,EAAU,EAAG,OAAS78J,EAAG,KAAM,OAAQ,MAAM,EAC/E69E,EAAY79E,EAAG,MAAQw8J,EAAiBxF,GAAWwF,EAAgB,OAAQ,CAC/E,OAAQ,CAAC75K,EAAG8Z,IAAM,CAAC9Z,GAAM,CAAC8Z,CAClC,CAAO,EACD24E,EAAO,IAAMynF,MAAeh/E,IAAc,CAAC/4D,EAAO03I,EAAgBx8J,CAAE,EAAI,OACzE,CACD,OAAOo1E,CACX,CAAG,EACD,OAAO4hF,GAAW,IAAM,CACtB,MAAMv7F,EAAMkhG,EAAU,IACtB,GAAI,CAAClhG,EAAK,OAAOqR,EAAM,SACvB,KAAM,CAAChoD,EAAO03I,EAAgBx8J,CAAE,EAAIy7D,EAC9B1G,EAAQ/0D,EAAG,SAEjB,OADW,OAAO+0D,GAAU,YAAcA,EAAM,OAAS,EAC7CqhG,GAAQ,IAAMrhG,EAAM/0D,EAAG,MAAQw8J,EAAc,EAAK,IAAM,CAClE,GAAIpG,GAAQuG,CAAU,MAAM,CAAC,IAAM73I,EAAO,MAAMq3I,GAAc,OAAO,EACrE,OAAOK,EAAc,CAC3B,CAAK,CAAC,EAAIznG,CACV,EAAK,OAAQ,MAAM,CACnB,CACA,SAAS+nG,GAAMhwF,EAAO,CACpB,OAAOA,CACT,CAIA,IAAIiwF,IAAW,CACb,kBACA,QACA,QACA,YACA,WACA,UACA,WACA,UACA,WACA,iBACA,SACA,gBACA,QACA,QACA,OACA,WACA,QACA,WACA,aACA,OACA,cACA,WACA,WACA,WACA,WACA,WACA,mBACA,iBACA,iBACA,iBACA,eACA,kBACA,QACA,0BACA,wBACA,iBACA,qBACA,kCACA,2BACA,yBACA,uBACF,EACIC,IAA6B,IAAI,IAAI,CACvC,YACA,QACA,WACA,aACA,iBACA,QACA,WACA,cACA,mBACA,kBACA,iBACA,iBACA,eACA,kBACA,0BACA,wBACA,iBACA,qBACA,kCACA,2BACA,yBACA,wBACA,GAAGD,GACL,CAAC,EACGE,IAAkC,IAAI,IAAI,CAAC,YAAa,cAAe,YAAa,UAAU,CAAC,EAC/FC,IAA0B,OAAO,OAAuB,OAAO,OAAO,IAAI,EAAG,CAC/E,UAAW,QACX,QAAS,KACX,CAAC,EACGC,IAA8B,OAAO,OAAuB,OAAO,OAAO,IAAI,EAAG,CACnF,MAAO,YACP,WAAY,CACV,EAAG,aACH,KAAM,CACP,EACD,eAAgB,CACd,EAAG,iBACH,OAAQ,EACR,MAAO,CACR,EACD,MAAO,CACL,EAAG,QACH,IAAK,CACN,EACD,SAAU,CACR,EAAG,WACH,OAAQ,CACT,EACD,YAAa,CACX,EAAG,cACH,MAAO,CACR,EACD,SAAU,CACR,EAAG,WACH,MAAO,EACP,SAAU,CACX,EACD,iBAAkB,CAChB,EAAG,mBACH,OAAQ,CACT,EACD,gBAAiB,CACf,EAAG,kBACH,OAAQ,CACT,EACD,eAAgB,CACd,EAAG,iBACH,IAAK,CACN,EACD,eAAgB,CACd,EAAG,iBACH,MAAO,CACR,EACD,aAAc,CACZ,EAAG,eACH,MAAO,EACP,MAAO,CACR,EACD,gBAAiB,CACf,EAAG,kBACH,OAAQ,CACT,EACD,wBAAyB,CACvB,EAAG,0BACH,MAAO,CACR,EACD,sBAAuB,CACrB,EAAG,wBACH,MAAO,EACP,MAAO,CACR,EACD,eAAgB,CACd,EAAG,iBACH,MAAO,EACP,MAAO,CACR,EACD,mBAAoB,CAClB,EAAG,qBACH,SAAU,CACX,EACD,yBAA0B,CACxB,EAAG,2BACH,SAAU,CACX,EACD,uBAAwB,CACtB,EAAG,yBACH,SAAU,CACX,EACD,sBAAuB,CACrB,EAAG,wBACH,OAAQ,EACR,IAAK,CACN,CACH,CAAC,EACD,SAASC,IAAa99I,EAAM46B,EAAS,CACnC,MAAMv3D,EAAIw6K,IAAY79I,CAAI,EAC1B,OAAO,OAAO38B,GAAM,SAAWA,EAAEu3D,CAAO,EAAIv3D,EAAE,EAAO,OAASA,CAChE,CACA,IAAI06K,IAAkC,IAAI,IAAI,CAAC,cAAe,QAAS,WAAY,cAAe,UAAW,WAAY,QAAS,UAAW,QAAS,YAAa,YAAa,WAAY,YAAa,UAAW,cAAe,cAAe,aAAc,cAAe,YAAa,WAAY,YAAa,YAAY,CAAC,EAC9TC,IAA8B,IAAI,IAAI,CACxC,WACA,cACA,eACA,UACA,eACA,gBACA,mBACA,SACA,WACA,gBACA,SACA,OACA,OACA,UACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,SACA,OACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,gBACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,MACA,OACA,MACA,SACA,SACA,OACA,WACA,OACA,QACA,MACA,OACA,OACF,CAAC,EACGC,IAAe,CACjB,MAAO,+BACP,IAAK,sCACP,EACIxgF,GAAQt1D,GAAOuvI,GAAW,IAAMvvI,EAAI,CAAA,EACxC,SAAS+1I,IAAgBC,EAAY96K,EAAG8Z,EAAG,CACzC,IAAIihK,EAAUjhK,EAAE,OAAQkhK,EAAOh7K,EAAE,OAAQi7K,EAAOF,EAASG,EAAS,EAAGC,EAAS,EAAGj/G,EAAQl8D,EAAEg7K,EAAO,CAAC,EAAE,YAAa9tI,EAAM,KACxH,KAAOguI,EAASF,GAAQG,EAASF,GAAM,CACrC,GAAIj7K,EAAEk7K,CAAM,IAAMphK,EAAEqhK,CAAM,EAAG,CAC3BD,IACAC,IACA,QACD,CACD,KAAOn7K,EAAEg7K,EAAO,CAAC,IAAMlhK,EAAEmhK,EAAO,CAAC,GAC/BD,IACAC,IAEF,GAAID,IAASE,EAAQ,CACnB,MAAMt8I,EAAOq8I,EAAOF,EAAUI,EAASrhK,EAAEqhK,EAAS,CAAC,EAAE,YAAcrhK,EAAEmhK,EAAOE,CAAM,EAAIj/G,EACtF,KAAOi/G,EAASF,GAAMH,EAAW,aAAahhK,EAAEqhK,GAAQ,EAAGv8I,CAAI,CACrE,SAAeq8I,IAASE,EAClB,KAAOD,EAASF,IACV,CAAC9tI,GAAO,CAACA,EAAI,IAAIltC,EAAEk7K,CAAM,CAAC,IAAGl7K,EAAEk7K,CAAM,EAAE,OAAM,EACjDA,YAEOl7K,EAAEk7K,CAAM,IAAMphK,EAAEmhK,EAAO,CAAC,GAAKnhK,EAAEqhK,CAAM,IAAMn7K,EAAEg7K,EAAO,CAAC,EAAG,CACjE,MAAMp8I,EAAO5+B,EAAE,EAAEg7K,CAAI,EAAE,YACvBF,EAAW,aAAahhK,EAAEqhK,GAAQ,EAAGn7K,EAAEk7K,GAAQ,EAAE,WAAW,EAC5DJ,EAAW,aAAahhK,EAAE,EAAEmhK,CAAI,EAAGr8I,CAAI,EACvC5+B,EAAEg7K,CAAI,EAAIlhK,EAAEmhK,CAAI,CACtB,KAAW,CACL,GAAI,CAAC/tI,EAAK,CACRA,EAAsB,IAAI,IAC1B,IAAIxyC,EAAIygL,EACR,KAAOzgL,EAAIugL,GAAM/tI,EAAI,IAAIpzB,EAAEpf,CAAC,EAAGA,GAAG,CACnC,CACD,MAAMynC,EAAQ+K,EAAI,IAAIltC,EAAEk7K,CAAM,CAAC,EAC/B,GAAI/4I,GAAS,KACX,GAAIg5I,EAASh5I,GAASA,EAAQ84I,EAAM,CAClC,IAAIvgL,EAAIwgL,EAAQ3nB,EAAW,EAAGj6J,EAC9B,KAAO,EAAEoB,EAAIsgL,GAAQtgL,EAAIugL,GAClB,GAAA3hL,EAAI4zC,EAAI,IAAIltC,EAAEtF,CAAC,CAAC,IAAM,MAAQpB,IAAM6oC,EAAQoxH,IACjDA,IAEF,GAAIA,EAAWpxH,EAAQg5I,EAAQ,CAC7B,MAAMv8I,EAAO5+B,EAAEk7K,CAAM,EACrB,KAAOC,EAASh5I,GAAO24I,EAAW,aAAahhK,EAAEqhK,GAAQ,EAAGv8I,CAAI,CAC5E,MAAiBk8I,EAAW,aAAahhK,EAAEqhK,GAAQ,EAAGn7K,EAAEk7K,GAAQ,CAAC,CACxD,MAAMA,SACFl7K,EAAEk7K,GAAQ,EAAE,OAAM,CAC1B,CACF,CACH,CACA,IAAIE,GAAW,gBACf,SAAS/tF,IAAO/X,EAAMt5C,EAASwK,EAAMpO,EAAU,CAAA,EAAI,CACjD,IAAI6/I,EACJ,OAAA5E,GAAYgI,GAAa,CACvBpD,EAAWoD,EACXr/I,IAAY,SAAWs5C,IAAS/B,EAAOv3C,EAASs5C,IAAQt5C,EAAQ,WAAa,KAAO,OAAQwK,CAAI,CACpG,EAAKpO,EAAQ,KAAK,EACT,IAAM,CACX6/I,IACAj8I,EAAQ,YAAc,EAC1B,CACA,CACA,SAAS05C,GAASlC,EAAM8nG,EAAc5+C,EAAO6+C,EAAU,CACrD,IAAI38I,EACJ,MAAMm1D,EAAS,IAAM,CACnB,MAAMz6F,EAAIiiL,EAAW,SAAS,gBAAgB,qCAAsC,UAAU,EAAI,SAAS,cAAc,UAAU,EACnI,OAAAjiL,EAAE,UAAYk6E,EACPkpD,EAAQpjI,EAAE,QAAQ,WAAW,WAAaiiL,EAAWjiL,EAAE,WAAaA,EAAE,QAAQ,UACzF,EACQwrC,EAAKw2I,EAAe,IAAM7H,GAAQ,IAAM,SAAS,WAAW70I,IAASA,EAAOm1D,EAAM,GAAK,EAAI,CAAC,EAAI,KAAOn1D,IAASA,EAAOm1D,MAAW,UAAU,EAAI,EACtJ,OAAAjvD,EAAG,UAAYA,EACRA,CACT,CACA,SAAS02I,GAAeC,EAAYC,EAAY,OAAO,SAAU,CAC/D,MAAMriL,EAAIqiL,EAAUN,EAAQ,IAAMM,EAAUN,EAAQ,EAAoB,IAAI,KAC5E,QAAS1gL,EAAI,EAAG2I,EAAIo4K,EAAW,OAAQ/gL,EAAI2I,EAAG3I,IAAK,CACjD,MAAM+hC,EAAOg/I,EAAW/gL,CAAC,EACpBrB,EAAE,IAAIojC,CAAI,IACbpjC,EAAE,IAAIojC,CAAI,EACVi/I,EAAU,iBAAiBj/I,EAAM4Z,EAAY,EAEhD,CACH,CACA,SAASslI,IAAqBD,EAAY,OAAO,SAAU,CACzD,GAAIA,EAAUN,EAAQ,EAAG,CACvB,QAAS3+I,KAAQi/I,EAAUN,EAAQ,EAAE,OAAQM,EAAU,oBAAoBj/I,EAAM4Z,EAAY,EAC7F,OAAOqlI,EAAUN,EAAQ,CAC1B,CACH,CACA,SAASQ,EAAah9I,EAAMnC,EAAMQ,EAAO,CACnC4+I,GAAYj9I,CAAI,IAChB3B,GAAS,KAAM2B,EAAK,gBAAgBnC,CAAI,EACvCmC,EAAK,aAAanC,EAAMQ,CAAK,EACpC,CACA,SAAS6+I,IAAel9I,EAAMm9I,EAAWt/I,EAAMQ,EAAO,CAChD4+I,GAAYj9I,CAAI,IAChB3B,GAAS,KAAM2B,EAAK,kBAAkBm9I,EAAWt/I,CAAI,EACpDmC,EAAK,eAAem9I,EAAWt/I,EAAMQ,CAAK,EACjD,CACA,SAAS++I,IAAiBp9I,EAAMnC,EAAMQ,EAAO,CACvC4+I,GAAYj9I,CAAI,IACpB3B,EAAQ2B,EAAK,aAAanC,EAAM,EAAE,EAAImC,EAAK,gBAAgBnC,CAAI,EACjE,CACA,SAAS03C,GAAUv1C,EAAM3B,EAAO,CAC1B4+I,GAAYj9I,CAAI,IAChB3B,GAAS,KAAM2B,EAAK,gBAAgB,OAAO,EAC1CA,EAAK,UAAY3B,EACxB,CACA,SAASg/I,GAAiBr9I,EAAMnC,EAAMoH,EAASE,EAAU,CACvD,GAAIA,EACE,MAAM,QAAQF,CAAO,GACvBjF,EAAK,KAAKnC,CAAI,EAAE,EAAIoH,EAAQ,CAAC,EAC7BjF,EAAK,KAAKnC,CAAI,MAAM,EAAIoH,EAAQ,CAAC,GAC5BjF,EAAK,KAAKnC,CAAI,EAAE,EAAIoH,UAClB,MAAM,QAAQA,CAAO,EAAG,CACjC,MAAMq4I,EAAYr4I,EAAQ,CAAC,EAC3BjF,EAAK,iBAAiBnC,EAAMoH,EAAQ,CAAC,EAAKxqC,GAAM6iL,EAAU,KAAKt9I,EAAMiF,EAAQ,CAAC,EAAGxqC,CAAC,CAAC,CACvF,MAASulC,EAAK,iBAAiBnC,EAAMoH,EAAS,OAAOA,GAAY,YAAcA,CAAO,CACtF,CACA,SAASs4I,IAAUv9I,EAAM3B,EAAOwI,EAAO,CAAA,EAAI,CACzC,MAAM22I,EAAY,OAAO,KAAKn/I,GAAS,CAAA,CAAE,EAAGo/I,EAAW,OAAO,KAAK52I,CAAI,EACvE,IAAI,EAAGyU,EACP,IAAK,EAAI,EAAGA,EAAMmiI,EAAS,OAAQ,EAAIniI,EAAK,IAAK,CAC/C,MAAM/c,EAAMk/I,EAAS,CAAC,EAClB,CAACl/I,GAAOA,IAAQ,aAAeF,EAAME,CAAG,IAC5Cm/I,GAAe19I,EAAMzB,EAAK,EAAK,EAC/B,OAAOsI,EAAKtI,CAAG,EAChB,CACD,IAAK,EAAI,EAAG+c,EAAMkiI,EAAU,OAAQ,EAAIliI,EAAK,IAAK,CAChD,MAAM/c,EAAMi/I,EAAU,CAAC,EAAGG,EAAa,CAAC,CAACt/I,EAAME,CAAG,EAC9C,CAACA,GAAOA,IAAQ,aAAesI,EAAKtI,CAAG,IAAMo/I,GAAc,CAACA,IAChED,GAAe19I,EAAMzB,EAAK,EAAI,EAC9BsI,EAAKtI,CAAG,EAAIo/I,EACb,CACD,OAAO92I,CACT,CACA,SAAS5H,IAAMe,EAAM3B,EAAOwI,EAAM,CAChC,GAAI,CAACxI,EAAO,OAAOwI,EAAOm2I,EAAah9I,EAAM,OAAO,EAAI3B,EACxD,MAAMu/I,EAAY59I,EAAK,MACvB,GAAI,OAAO3B,GAAU,SAAU,OAAOu/I,EAAU,QAAUv/I,EAC1D,OAAOwI,GAAS,WAAa+2I,EAAU,QAAU/2I,EAAO,QACxDA,IAASA,EAAO,CAAA,GAChBxI,IAAUA,EAAQ,CAAA,GAClB,IAAI5qB,EAAG7W,EACP,IAAKA,KAAKiqC,EACRxI,EAAMzhC,CAAC,GAAK,MAAQghL,EAAU,eAAehhL,CAAC,EAC9C,OAAOiqC,EAAKjqC,CAAC,EAEf,IAAKA,KAAKyhC,EACR5qB,EAAI4qB,EAAMzhC,CAAC,EACP6W,IAAMozB,EAAKjqC,CAAC,IACdghL,EAAU,YAAYhhL,EAAG6W,CAAC,EAC1BozB,EAAKjqC,CAAC,EAAI6W,GAGd,OAAOozB,CACT,CACA,SAASg3I,GAAiB79I,EAAMnC,EAAMQ,EAAO,CAC3CA,GAAS,KAAO2B,EAAK,MAAM,YAAYnC,EAAMQ,CAAK,EAAI2B,EAAK,MAAM,eAAenC,CAAI,CACtF,CACA,SAASigJ,GAAO99I,EAAMurD,EAAQ,CAAA,EAAIuyC,EAAOigD,EAAc,CACrD,MAAM1yD,EAAY,CAAA,EAClB,OAAK0yD,GACHzI,GAAmB,IAAMjqD,EAAU,SAAW2yD,GAAiBh+I,EAAMurD,EAAM,SAAU8/B,EAAU,QAAQ,CAAC,EAE1GiqD,GAAmB,IAAM,OAAO/pF,EAAM,KAAQ,YAAc0yF,GAAI1yF,EAAM,IAAKvrD,CAAI,CAAC,EAChFs1I,GAAmB,IAAMxjF,IAAO9xD,EAAMurD,EAAOuyC,EAAO,GAAMzS,EAAW,EAAI,CAAC,EACnEA,CACT,CACA,SAAS4yD,GAAI/3I,EAAI9I,EAASw/G,EAAK,CAC7B,OAAOi4B,GAAQ,IAAM3uI,EAAG9I,EAASw/G,CAAG,CAAC,CACvC,CACA,SAASjoE,EAAOhwC,EAAQu5I,EAAUC,EAAQh4D,EAAS,CAEjD,GADIg4D,IAAW,QAAU,CAACh4D,IAASA,EAAU,CAAA,GACzC,OAAO+3D,GAAa,WAAY,OAAOF,GAAiBr5I,EAAQu5I,EAAU/3D,EAASg4D,CAAM,EAC7F7I,GAAoB99F,GAAYwmG,GAAiBr5I,EAAQu5I,EAAU,EAAE1mG,EAAS2mG,CAAM,EAAGh4D,CAAO,CAChG,CACA,SAASr0B,IAAO9xD,EAAMurD,EAAOuyC,EAAOigD,EAAc1yD,EAAY,CAAA,EAAI+yD,EAAU,GAAO,CACjF7yF,IAAUA,EAAQ,CAAA,GAClB,UAAWxtD,KAAQstF,EACjB,GAAI,EAAEttF,KAAQwtD,GAAQ,CACpB,GAAIxtD,IAAS,WAAY,SACzBstF,EAAUttF,CAAI,EAAIsgJ,GAAWr+I,EAAMjC,EAAM,KAAMstF,EAAUttF,CAAI,EAAG+/F,EAAOsgD,EAAS7yF,CAAK,CACtF,CAEH,UAAWxtD,KAAQwtD,EAAO,CACxB,GAAIxtD,IAAS,WACX,SAEF,MAAMM,EAAQktD,EAAMxtD,CAAI,EACxBstF,EAAUttF,CAAI,EAAIsgJ,GAAWr+I,EAAMjC,EAAMM,EAAOgtF,EAAUttF,CAAI,EAAG+/F,EAAOsgD,EAAS7yF,CAAK,CACvF,CACH,CACA,SAAS+yF,IAAeC,EAAW,CACjC,IAAIv+I,EAAMzB,EACV,MAAI,CADuB0+I,GAAW,GACpB,EAAEj9I,EAAOmzI,GAAa,SAAS,IAAI50I,EAAMigJ,IAAiB,CAAA,GACnED,EAAS,GAEdpL,GAAa,WAAWA,GAAa,UAAU,IAAInzI,CAAI,EAC3DmzI,GAAa,SAAS,OAAO50I,CAAG,EACzByB,EACT,CACA,SAASi9I,GAAYj9I,EAAM,CACzB,MAAO,CAAC,CAACmzI,GAAa,SAAW,CAACA,GAAa,OAAS,CAACnzI,GAAQA,EAAK,YACxE,CACA,SAASy+I,IAAe5gJ,EAAM,CAC5B,OAAOA,EAAK,cAAc,QAAQ,YAAa,CAACljC,EAAG0K,IAAMA,EAAE,YAAW,CAAE,CAC1E,CACA,SAASq4K,GAAe19I,EAAMzB,EAAKF,EAAO,CACxC,MAAMo3C,EAAal3C,EAAI,KAAM,EAAC,MAAM,KAAK,EACzC,QAASziC,EAAI,EAAG4iL,EAAUjpG,EAAW,OAAQ35E,EAAI4iL,EAAS5iL,IAAKkkC,EAAK,UAAU,OAAOy1C,EAAW35E,CAAC,EAAGuiC,CAAK,CAC3G,CACA,SAASggJ,GAAWr+I,EAAMjC,EAAMM,EAAOwI,EAAMi3F,EAAOsgD,EAAS7yF,EAAO,CAClE,IAAIozF,EAAMC,EAAQC,EAAaC,EAAWC,EAC1C,GAAIhhJ,IAAS,QAAS,OAAOkB,IAAMe,EAAM3B,EAAOwI,CAAI,EACpD,GAAI9I,IAAS,YAAa,OAAOw/I,IAAUv9I,EAAM3B,EAAOwI,CAAI,EAC5D,GAAIxI,IAAUwI,EAAM,OAAOA,EAC3B,GAAI9I,IAAS,MACNqgJ,GAAS//I,EAAM2B,CAAI,UACfjC,EAAK,MAAM,EAAG,CAAC,IAAM,MAAO,CACrC,MAAMtjC,EAAIsjC,EAAK,MAAM,CAAC,EACtB8I,GAAQ7G,EAAK,oBAAoBvlC,EAAGosC,EAAM,OAAOA,GAAS,YAAcA,CAAI,EAC5ExI,GAAS2B,EAAK,iBAAiBvlC,EAAG4jC,EAAO,OAAOA,GAAU,YAAcA,CAAK,CACjF,SAAaN,EAAK,MAAM,EAAG,EAAE,IAAM,aAAc,CAC7C,MAAMtjC,EAAIsjC,EAAK,MAAM,EAAE,EACvB8I,GAAQ7G,EAAK,oBAAoBvlC,EAAGosC,EAAM,EAAI,EAC9CxI,GAAS2B,EAAK,iBAAiBvlC,EAAG4jC,EAAO,EAAI,CACjD,SAAaN,EAAK,MAAM,EAAG,CAAC,IAAM,KAAM,CACpC,MAAMF,EAAOE,EAAK,MAAM,CAAC,EAAE,YAAW,EAChCoH,EAAW22I,IAAgB,IAAIj+I,CAAI,EACzC,GAAI,CAACsH,GAAY0B,EAAM,CACrB,MAAMliC,EAAI,MAAM,QAAQkiC,CAAI,EAAIA,EAAK,CAAC,EAAIA,EAC1C7G,EAAK,oBAAoBnC,EAAMl5B,CAAC,CACjC,EACGwgC,GAAY9G,KACdg/I,GAAiBr9I,EAAMnC,EAAMQ,EAAO8G,CAAQ,EAC5CA,GAAYy3I,GAAe,CAAC/+I,CAAI,CAAC,EAEvC,SAAaE,EAAK,MAAM,EAAG,CAAC,IAAM,QAC9Bi/I,EAAah9I,EAAMjC,EAAK,MAAM,CAAC,EAAGM,CAAK,UAC9BN,EAAK,MAAM,EAAG,CAAC,IAAM,QAC9Bq/I,IAAiBp9I,EAAMjC,EAAK,MAAM,CAAC,EAAGM,CAAK,WACjC0gJ,EAAYhhJ,EAAK,MAAM,EAAG,CAAC,IAAM,WAAa8gJ,EAAcnD,IAAgB,IAAI39I,CAAI,IAAM,CAAC+/F,KAAWghD,EAAYjD,IAAa99I,EAAMiC,EAAK,OAAO,KAAO4+I,EAASnD,IAAW,IAAI19I,CAAI,MAAQ4gJ,EAAO3+I,EAAK,SAAS,SAAS,GAAG,GAAK,OAAQurD,GAAQ,CAC5P,GAAIwzF,EACFhhJ,EAAOA,EAAK,MAAM,CAAC,EACnB6gJ,EAAS,WACA3B,GAAYj9I,CAAI,EAAG,OAAO3B,EACjCN,IAAS,SAAWA,IAAS,YAAaw3C,GAAUv1C,EAAM3B,CAAK,EAC1DsgJ,GAAQ,CAACC,GAAU,CAACC,EAAa7+I,EAAKy+I,IAAe1gJ,CAAI,CAAC,EAAIM,EAClE2B,EAAK8+I,GAAa/gJ,CAAI,EAAIM,CACnC,KAAS,CACL,MAAMq/B,EAAKogE,GAAS//F,EAAK,QAAQ,GAAG,EAAI,IAAMi+I,IAAaj+I,EAAK,MAAM,GAAG,EAAE,CAAC,CAAC,EACzE2/B,EAAIw/G,IAAel9I,EAAM09B,EAAI3/B,EAAMM,CAAK,EACvC2+I,EAAah9I,EAAM27I,IAAQ59I,CAAI,GAAKA,EAAMM,CAAK,CACrD,CACD,OAAOA,CACT,CACA,SAASoZ,GAAah9C,EAAG,CACvB,GAAI04K,GAAa,UAAYA,GAAa,QACpCA,GAAa,OAAO,KAAK,CAAC,CAAC/5I,EAAIwpD,CAAE,IAAMA,IAAOnoF,CAAC,EAAG,OAExD,IAAIulC,EAAOvlC,EAAE,OACb,MAAM8jC,EAAM,KAAK9jC,EAAE,IAAI,GACjBukL,EAAYvkL,EAAE,OACdwkL,EAAmBxkL,EAAE,cACrBykL,EAAY7gJ,GAAU,OAAO,eAAe5jC,EAAG,SAAU,CAC7D,aAAc,GACd,MAAA4jC,CACJ,CAAG,EACK8gJ,EAAa,IAAM,CACvB,MAAMl6I,EAAUjF,EAAKzB,CAAG,EACxB,GAAI0G,GAAW,CAACjF,EAAK,SAAU,CAC7B,MAAMlE,EAAOkE,EAAK,GAAGzB,CAAG,MAAM,EAE9B,GADAzC,IAAS,OAASmJ,EAAQ,KAAKjF,EAAMlE,EAAMrhC,CAAC,EAAIwqC,EAAQ,KAAKjF,EAAMvlC,CAAC,EAChEA,EAAE,aAAc,MACrB,CACD,OAAAulC,EAAK,MAAQ,OAAOA,EAAK,MAAS,UAAY,CAACA,EAAK,KAAK,QAAUA,EAAK,SAASvlC,EAAE,MAAM,GAAKykL,EAASl/I,EAAK,IAAI,EACzG,EACX,EACQo/I,EAAa,IAAM,CACvB,KAAOD,EAAU,IAAOn/I,EAAOA,EAAK,QAAUA,EAAK,YAAcA,EAAK,OAAO,CACjF,EAQE,GAPA,OAAO,eAAevlC,EAAG,gBAAiB,CACxC,aAAc,GACd,KAAM,CACJ,OAAOulC,GAAQ,QAChB,CACL,CAAG,EACGmzI,GAAa,UAAY,CAACA,GAAa,OAAMA,GAAa,KAAO,KAAK,KAAO,IAC7E14K,EAAE,aAAc,CAClB,MAAM+yD,EAAO/yD,EAAE,eACfykL,EAAS1xH,EAAK,CAAC,CAAC,EAChB,QAAS1xD,EAAI,EAAGA,EAAI0xD,EAAK,OAAS,IAChCxtB,EAAOwtB,EAAK1xD,CAAC,EACT,EAACqjL,EAAU,GAFoBrjL,IAAK,CAGxC,GAAIkkC,EAAK,OAAQ,CACfA,EAAOA,EAAK,OACZo/I,IACA,KACD,CACD,GAAIp/I,EAAK,aAAei/I,EACtB,KAEH,CACF,MAAMG,EAAU,EACjBF,EAASF,CAAS,CACpB,CACA,SAAShB,GAAiBr5I,EAAQtG,EAAOm5C,EAAS2mG,EAAQkB,EAAa,CACrE,MAAMC,EAAYrC,GAAYt4I,CAAM,EACpC,GAAI26I,EAAW,CACb,CAAC9nG,IAAYA,EAAU,CAAC,GAAG7yC,EAAO,UAAU,GAC5C,IAAI46I,EAAU,CAAA,EACd,QAASzjL,EAAI,EAAGA,EAAI07E,EAAQ,OAAQ17E,IAAK,CACvC,MAAMkkC,EAAOw3C,EAAQ17E,CAAC,EAClBkkC,EAAK,WAAa,GAAKA,EAAK,KAAK,MAAM,EAAG,CAAC,IAAM,KAAMA,EAAK,OAAM,EACjEu/I,EAAQ,KAAKv/I,CAAI,CACvB,CACDw3C,EAAU+nG,CACX,CACD,KAAO,OAAO/nG,GAAY,YAAYA,EAAUA,EAAO,EACvD,GAAIn5C,IAAUm5C,EAAS,OAAOA,EAC9B,MAAM98E,EAAI,OAAO2jC,EAAOmhJ,EAAQrB,IAAW,OAE3C,GADAx5I,EAAS66I,GAAShoG,EAAQ,CAAC,GAAKA,EAAQ,CAAC,EAAE,YAAc7yC,EACrDjqC,IAAM,UAAYA,IAAM,SAAU,CAEpC,GADI4kL,GACA5kL,IAAM,WACR2jC,EAAQA,EAAM,WACVA,IAAUm5C,GAAS,OAAOA,EAEhC,GAAIgoG,EAAO,CACT,IAAIx/I,EAAOw3C,EAAQ,CAAC,EAChBx3C,GAAQA,EAAK,WAAa,EAC5BA,EAAK,OAAS3B,IAAU2B,EAAK,KAAO3B,GAC/B2B,EAAO,SAAS,eAAe3B,CAAK,EAC3Cm5C,EAAUioG,GAAc96I,EAAQ6yC,EAAS2mG,EAAQn+I,CAAI,CAC3D,MACUw3C,IAAY,IAAM,OAAOA,GAAY,SACvCA,EAAU7yC,EAAO,WAAW,KAAOtG,EAC9Bm5C,EAAU7yC,EAAO,YAActG,CAEzC,SAAUA,GAAS,MAAQ3jC,IAAM,UAAW,CAC3C,GAAI4kL,EAAW,OAAO9nG,EACtBA,EAAUioG,GAAc96I,EAAQ6yC,EAAS2mG,CAAM,CACnD,KAAS,IAAIzjL,IAAM,WACf,OAAA46K,GAAmB,IAAM,CACvB,IAAI7hK,EAAI4qB,IACR,KAAO,OAAO5qB,GAAM,YAAYA,EAAIA,EAAC,EACrC+jE,EAAUwmG,GAAiBr5I,EAAQlxB,EAAG+jE,EAAS2mG,CAAM,CAC3D,CAAK,EACM,IAAM3mG,EACR,GAAI,MAAM,QAAQn5C,CAAK,EAAG,CAC/B,MAAMsO,EAAQ,CAAA,EACR+yI,EAAeloG,GAAW,MAAM,QAAQA,CAAO,EACrD,GAAImoG,GAAuBhzI,EAAOtO,EAAOm5C,EAAS6nG,CAAW,EAC3D,OAAA/J,GAAmB,IAAM99F,EAAUwmG,GAAiBr5I,EAAQgI,EAAO6qC,EAAS2mG,EAAQ,EAAI,CAAC,EAClF,IAAM3mG,EAEf,GAAI8nG,EAAW,CACb,GAAI,CAAC3yI,EAAM,OAAQ,OAAO6qC,EAC1B,GAAI2mG,IAAW,OAAQ,OAAO3mG,EAAU,CAAC,GAAG7yC,EAAO,UAAU,EAC7D,IAAI3E,EAAO2M,EAAM,CAAC,EAClB,GAAI3M,EAAK,aAAe2E,EAAQ,OAAO6yC,EACvC,MAAMooG,EAAQ,CAAC5/I,CAAI,EACnB,MAAQA,EAAOA,EAAK,eAAiBm+I,GAAQyB,EAAM,KAAK5/I,CAAI,EAC5D,OAAOw3C,EAAUooG,CAClB,CACD,GAAIjzI,EAAM,SAAW,GAEnB,GADA6qC,EAAUioG,GAAc96I,EAAQ6yC,EAAS2mG,CAAM,EAC3CqB,EAAO,OAAOhoG,OACTkoG,EACLloG,EAAQ,SAAW,EACrBqoG,GAAYl7I,EAAQgI,EAAOwxI,CAAM,EAC5BlC,IAAgBt3I,EAAQ6yC,EAAS7qC,CAAK,GAE7C6qC,GAAWioG,GAAc96I,CAAM,EAC/Bk7I,GAAYl7I,EAAQgI,CAAK,GAE3B6qC,EAAU7qC,CACd,SAAatO,EAAM,SAAU,CACzB,GAAIihJ,GAAajhJ,EAAM,WAAY,OAAOm5C,EAAUgoG,EAAQ,CAACnhJ,CAAK,EAAIA,EACtE,GAAI,MAAM,QAAQm5C,CAAO,EAAG,CAC1B,GAAIgoG,EAAO,OAAOhoG,EAAUioG,GAAc96I,EAAQ6yC,EAAS2mG,EAAQ9/I,CAAK,EACxEohJ,GAAc96I,EAAQ6yC,EAAS,KAAMn5C,CAAK,CAChD,MAAem5C,GAAW,MAAQA,IAAY,IAAM,CAAC7yC,EAAO,WACtDA,EAAO,YAAYtG,CAAK,EACnBsG,EAAO,aAAatG,EAAOsG,EAAO,UAAU,EACnD6yC,EAAUn5C,CACd,EACE,OAAOm5C,CACT,CACA,SAASmoG,GAAuB1hC,EAAYtxG,EAAO6qC,EAASsoG,EAAQ,CAClE,IAAI9J,EAAU,GACd,QAAS,EAAI,EAAG16H,EAAM3O,EAAM,OAAQ,EAAI2O,EAAK,IAAK,CAChD,IAAIhY,EAAOqJ,EAAM,CAAC,EAAG9F,EAAO2wC,GAAWA,EAAQymE,EAAW,MAAM,EAAGvjJ,EACnE,GAAI,EAAA4oC,GAAQ,MAAQA,IAAS,IAAQA,IAAS,IACzC,IAAK5oC,EAAI,OAAO4oC,IAAU,UAAYA,EAAK,SAC9C26G,EAAW,KAAK36G,CAAI,UACX,MAAM,QAAQA,CAAI,EAC3B0yI,EAAU2J,GAAuB1hC,EAAY36G,EAAMuD,CAAI,GAAKmvI,UACnDt7K,IAAM,WACf,GAAIolL,EAAQ,CACV,KAAO,OAAOx8I,GAAS,YAAYA,EAAOA,EAAI,EAC9C0yI,EAAU2J,GAAuB1hC,EAAY,MAAM,QAAQ36G,CAAI,EAAIA,EAAO,CAACA,CAAI,EAAG,MAAM,QAAQuD,CAAI,EAAIA,EAAO,CAACA,CAAI,CAAC,GAAKmvI,CAClI,MACQ/3B,EAAW,KAAK36G,CAAI,EACpB0yI,EAAU,OAEP,CACL,MAAM33I,EAAQ,OAAOiF,CAAI,EACrBuD,GAAQA,EAAK,WAAa,GAAKA,EAAK,OAASxI,EAAO4/G,EAAW,KAAKp3G,CAAI,EACvEo3G,EAAW,KAAK,SAAS,eAAe5/G,CAAK,CAAC,CACpD,CACF,CACD,OAAO23I,CACT,CACA,SAAS6J,GAAYl7I,EAAQgI,EAAOwxI,EAAS,KAAM,CACjD,QAASriL,EAAI,EAAGw/C,EAAM3O,EAAM,OAAQ7wC,EAAIw/C,EAAKx/C,IAAK6oC,EAAO,aAAagI,EAAM7wC,CAAC,EAAGqiL,CAAM,CACxF,CACA,SAASsB,GAAc96I,EAAQ6yC,EAAS2mG,EAAQ4B,EAAa,CAC3D,GAAI5B,IAAW,OAAQ,OAAOx5I,EAAO,YAAc,GACnD,MAAM3E,EAAO+/I,GAAe,SAAS,eAAe,EAAE,EACtD,GAAIvoG,EAAQ,OAAQ,CAClB,IAAIwoG,EAAW,GACf,QAASlkL,EAAI07E,EAAQ,OAAS,EAAG17E,GAAK,EAAGA,IAAK,CAC5C,MAAMs9B,EAAKo+C,EAAQ17E,CAAC,EACpB,GAAIkkC,IAAS5G,EAAI,CACf,MAAM6mJ,EAAW7mJ,EAAG,aAAeuL,EAC/B,CAACq7I,GAAY,CAAClkL,EAAGmkL,EAAWt7I,EAAO,aAAa3E,EAAM5G,CAAE,EAAIuL,EAAO,aAAa3E,EAAMm+I,CAAM,EAC3F8B,GAAY7mJ,EAAG,QAC5B,MAAa4mJ,EAAW,EACnB,CACF,MAAMr7I,EAAO,aAAa3E,EAAMm+I,CAAM,EACvC,MAAO,CAACn+I,CAAI,CACd,CACA,SAASw+I,KAAkB,CACzB,OAAOrL,GAAa,kBACtB,CAEA,IAAI+M,IAAgB,6BACpB,SAAShqG,GAAcvd,EAASmlE,EAAQ,GAAOtwH,EAAK,OAAQ,CAC1D,OAAOswH,EAAQ,SAAS,gBAAgBoiD,IAAevnH,CAAO,EAAI,SAAS,cAAcA,EAAS,CAChG,GAAAnrD,CACJ,CAAG,CACH,CACA,SAAS2yK,GAAO50F,EAAO,CACrB,KAAM,CACJ,UAAA60F,CACD,EAAG70F,EAAO4yF,EAAS,SAAS,eAAe,EAAE,EAAGkC,EAAQ,IAAM90F,EAAM,OAAS,SAAS,KAAM+L,EAAQZ,GAAQ,EAC7G,IAAI59D,EACAwmJ,EAAY,CAAC,CAACnM,GAAa,QAC/B,OAAAoC,GAAa,IAAM,CACb+J,IAAW5oF,GAAQ,EAAG,KAAO4oF,EAAY,IAC7CxmJ,IAAYA,EAAU69I,GAAar/E,EAAO,IAAMm+E,GAAW,IAAMlqF,EAAM,QAAQ,CAAC,GAChF,MAAMnyD,EAAKinJ,IACX,GAAIjnJ,aAAc,gBAAiB,CACjC,KAAM,CAACknJ,EAAOC,CAAQ,EAAI73F,GAAa,EAAK,EACtCyF,EAAU,IAAMoyF,EAAS,EAAI,EACnC9L,GAAYgI,GAAa9nG,EAAOv7C,EAAI,IAAOknJ,EAAO,EAAe7D,IAAZ3jJ,EAAO,EAAiB,IAAI,CAAC,EAClFk+I,GAAU7oF,CAAO,CACvB,KAAW,CACL,MAAMQ,EAAYzY,GAAcqV,EAAM,MAAQ,IAAM,MAAOA,EAAM,KAAK,EAAGi1F,EAAaJ,GAAazxF,EAAU,aAAeA,EAAU,aAAa,CACjJ,KAAM,MACP,CAAA,EAAIA,EACL,OAAO,eAAeA,EAAW,SAAU,CACzC,KAAM,CACJ,OAAOwvF,EAAO,UACf,EACD,aAAc,EACtB,CAAO,EACDxpG,EAAO6rG,EAAY1nJ,CAAO,EAC1BM,EAAG,YAAYu1D,CAAS,EACxBpD,EAAM,KAAOA,EAAM,IAAIoD,CAAS,EAChCqoF,GAAU,IAAM59I,EAAG,YAAYu1D,CAAS,CAAC,CAC1C,CACF,EAAE,OAAQ,CACT,OAAQ,CAAC2wF,CACb,CAAG,EACMnB,CACT,CACA,SAASsC,IAAc/xF,EAAWnD,EAAO,CACvC,MAAMtZ,EAASwjG,GAAW/mF,CAAS,EACnC,OAAO+mF,GAAW,IAAM,CACtB,MAAMiL,EAAazuG,IACnB,OAAQ,OAAOyuG,EAAU,CACvB,IAAK,WACH,OAAO7L,GAAQ,IAAM6L,EAAWn1F,CAAK,CAAC,EACxC,IAAK,SACH,MAAMo1F,EAAQ5E,IAAY,IAAI2E,CAAU,EAClCtnJ,EAAK+5I,GAAa,QAAUmL,IAAgB,EAAGpoG,GAAcwqG,EAAYC,EAAO9L,GAAQ,IAAMtpF,EAAM,EAAE,CAAC,EAC7G,OAAAuyF,GAAO1kJ,EAAImyD,EAAOo1F,CAAK,EAChBvnJ,CACV,CACL,CAAG,CACH,CACA,SAASwnJ,IAAQr1F,EAAO,CACtB,KAAM,CAAA,CAAGs1F,CAAM,EAAIzG,GAAW7uF,EAAO,CAAC,WAAW,CAAC,EAClD,OAAOk1F,IAAc,IAAMl1F,EAAM,UAAWs1F,CAAM,CACpD,CAGA,IAAIC,IAAkB,KAAM,CAC1B,aAAc,CACZ,KAAK,WAA6B,IAAI,IACtC,KAAK,WAA6B,IAAI,GACvC,CACD,IAAIviJ,EAAKF,EAAO,CACd,KAAK,WAAW,IAAIE,EAAKF,CAAK,EAC9B,KAAK,WAAW,IAAIA,EAAOE,CAAG,CAC/B,CACD,SAASA,EAAK,CACZ,OAAO,KAAK,WAAW,IAAIA,CAAG,CAC/B,CACD,WAAWF,EAAO,CAChB,OAAO,KAAK,WAAW,IAAIA,CAAK,CACjC,CACD,OAAQ,CACN,KAAK,WAAW,QAChB,KAAK,WAAW,OACjB,CACH,EAGI0iJ,GAAW,KAAM,CACnB,YAAYC,EAAoB,CAC9B,KAAK,mBAAqBA,EAC1B,KAAK,GAAK,IAAIF,GACf,CACD,SAASziJ,EAAO4iJ,EAAY,CACtB,KAAK,GAAG,WAAW5iJ,CAAK,IAGvB4iJ,IACHA,EAAa,KAAK,mBAAmB5iJ,CAAK,GAE5C,KAAK,GAAG,IAAI4iJ,EAAY5iJ,CAAK,EAC9B,CACD,OAAQ,CACN,KAAK,GAAG,OACT,CACD,cAAcA,EAAO,CACnB,OAAO,KAAK,GAAG,WAAWA,CAAK,CAChC,CACD,SAAS4iJ,EAAY,CACnB,OAAO,KAAK,GAAG,SAASA,CAAU,CACnC,CACH,EAGIC,IAAgB,cAAcH,EAAS,CACzC,aAAc,CACZ,MAAOv8K,GAAMA,EAAE,IAAI,EACnB,KAAK,oBAAsC,IAAI,GAChD,CACD,SAAS65B,EAAO7E,EAAS,CACnB,OAAOA,GAAY,UACjBA,EAAQ,YACV,KAAK,oBAAoB,IAAI6E,EAAO7E,EAAQ,UAAU,EAExD,MAAM,SAAS6E,EAAO7E,EAAQ,UAAU,GAExC,MAAM,SAAS6E,EAAO7E,CAAO,CAEhC,CACD,gBAAgB6E,EAAO,CACrB,OAAO,KAAK,oBAAoB,IAAIA,CAAK,CAC1C,CACH,EAGA,SAAS8iJ,IAAY7kC,EAAQ,CAC3B,GAAI,WAAY,OACd,OAAO,OAAO,OAAOA,CAAM,EAE7B,MAAMntG,EAAS,CAAA,EACf,UAAW5Q,KAAO+9G,EACZA,EAAO,eAAe/9G,CAAG,GAC3B4Q,EAAO,KAAKmtG,EAAO/9G,CAAG,CAAC,EAG3B,OAAO4Q,CACT,CACA,SAASiyI,IAAK9kC,EAAQ3pG,EAAW,CAC/B,MAAMxD,EAASgyI,IAAY7kC,CAAM,EACjC,GAAI,SAAUntG,EACZ,OAAOA,EAAO,KAAKwD,CAAS,EAE9B,MAAM0uI,EAAiBlyI,EACvB,QAASrzC,EAAI,EAAGA,EAAIulL,EAAe,OAAQvlL,IAAK,CAC9C,MAAMuiC,EAAQgjJ,EAAevlL,CAAC,EAC9B,GAAI62C,EAAUtU,CAAK,EACjB,OAAOA,CAEV,CAEH,CACA,SAASijJ,GAAQhlC,EAAQ7L,EAAK,CAC5B,OAAO,QAAQ6L,CAAM,EAAE,QAAQ,CAAC,CAAC/9G,EAAKF,CAAK,IAAMoyG,EAAIpyG,EAAOE,CAAG,CAAC,CAClE,CACA,SAASgjJ,GAASrpJ,EAAKmG,EAAO,CAC5B,OAAOnG,EAAI,QAAQmG,CAAK,IAAM,EAChC,CACA,SAASmjJ,GAAQllC,EAAQ3pG,EAAW,CAClC,QAAS72C,EAAI,EAAGA,EAAIwgJ,EAAO,OAAQxgJ,IAAK,CACtC,MAAMuiC,EAAQi+G,EAAOxgJ,CAAC,EACtB,GAAI62C,EAAUtU,CAAK,EACjB,OAAOA,CAEV,CAEH,CAGA,IAAIojJ,IAA4B,KAAM,CACpC,aAAc,CACZ,KAAK,YAAc,EACpB,CACD,SAAS3tB,EAAa,CACpB,KAAK,YAAYA,EAAY,IAAI,EAAIA,CACtC,CACD,eAAergJ,EAAG,CAChB,OAAO2tK,IAAK,KAAK,YAActtB,GAAgBA,EAAY,aAAargJ,CAAC,CAAC,CAC3E,CACD,WAAWoqB,EAAM,CACf,OAAO,KAAK,YAAYA,CAAI,CAC7B,CACH,EAGI6jJ,IAAW3tF,GAAY,OAAO,UAAU,SAAS,KAAKA,CAAO,EAAE,MAAM,EAAG,EAAE,EAC1E4tF,GAAe5tF,GAAY,OAAOA,EAAY,IAC9C6tF,IAAU7tF,GAAYA,IAAY,KAClCy5C,GAAiBz5C,GACf,OAAOA,GAAY,UAAYA,IAAY,MAE3CA,IAAY,OAAO,UACd,GACL,OAAO,eAAeA,CAAO,IAAM,KAC9B,GACF,OAAO,eAAeA,CAAO,IAAM,OAAO,UAE/C8tF,GAAiB9tF,GAAYy5C,GAAcz5C,CAAO,GAAK,OAAO,KAAKA,CAAO,EAAE,SAAW,EACvFvlD,GAAWulD,GAAY,MAAM,QAAQA,CAAO,EAC5Cq5C,IAAYr5C,GAAY,OAAOA,GAAY,SAC3CqkE,IAAYrkE,GAAY,OAAOA,GAAY,UAAY,CAAC,MAAMA,CAAO,EACrE8zD,IAAa9zD,GAAY,OAAOA,GAAY,UAC5C+tF,IAAY/tF,GAAYA,aAAmB,OAC3Ck5C,GAASl5C,GAAYA,aAAmB,IACxCo5C,GAASp5C,GAAYA,aAAmB,IACxCs5C,GAAYt5C,GAAY2tF,IAAQ3tF,CAAO,IAAM,SAC7CguF,IAAUhuF,GAAYA,aAAmB,MAAQ,CAAC,MAAMA,EAAQ,QAAO,CAAE,EACzEs7E,GAAWt7E,GAAYA,aAAmB,MAC1CiuF,GAAcjuF,GAAY,OAAOA,GAAY,UAAY,MAAMA,CAAO,EACtEkuF,IAAeluF,GAAY8zD,IAAU9zD,CAAO,GAAK6tF,IAAO7tF,CAAO,GAAK4tF,GAAY5tF,CAAO,GAAKqkE,IAASrkE,CAAO,GAAKq5C,IAASr5C,CAAO,GAAKs5C,GAASt5C,CAAO,EACtJmuF,IAAYnuF,GAAY,OAAOA,GAAY,SAC3CouF,IAAcpuF,GAAYA,IAAY,KAAYA,IAAY,KAC9DquF,IAAgBruF,GAAY,YAAY,OAAOA,CAAO,GAAK,EAAEA,aAAmB,UAChFsuF,IAAStuF,GAAYA,aAAmB,IAGxCuuF,GAAa/jJ,GAAQA,EAAI,QAAQ,MAAO,MAAM,EAAE,QAAQ,MAAO,KAAK,EACpEgkJ,GAAiB/0H,GAASA,EAAK,IAAI,MAAM,EAAE,IAAI80H,EAAS,EAAE,KAAK,GAAG,EAClEE,GAAY,CAAC/mD,EAAQgnD,IAAgB,CACvC,MAAMlqJ,EAAS,CAAA,EACf,IAAIo9H,EAAU,GACd,QAAS,EAAI,EAAG,EAAIl6B,EAAO,OAAQ,IAAK,CACtC,IAAIinD,EAAOjnD,EAAO,OAAO,CAAC,EAC1B,GAAI,CAACgnD,GAAeC,IAAS,KAAM,CACjC,MAAMC,EAAUlnD,EAAO,OAAO,EAAI,CAAC,EACnC,GAAIknD,IAAY,KAAM,CACpBhtB,GAAW,KACX,IACA,QACR,SAAiBgtB,IAAY,IACrB,MAAM,MAAM,cAAc,CAE7B,CAED,GADqBD,IAAS,MAAQjnD,EAAO,OAAO,EAAI,CAAC,IAAM,IAC7C,CAChBk6B,GAAW,IACX,IACA,QACD,CAED,GADuB+sB,IAAS,IACZ,CAClBnqJ,EAAO,KAAKo9H,CAAO,EACnBA,EAAU,GACV,QACD,CACDA,GAAW+sB,CACZ,CACD,MAAME,EAAcjtB,EACpB,OAAAp9H,EAAO,KAAKqqJ,CAAW,EAChBrqJ,CACT,EAGA,SAASsqJ,GAAqBC,EAAcC,EAAYz1H,EAAW01H,EAAa,CAC9E,MAAO,CACL,aAAAF,EACA,WAAAC,EACA,UAAAz1H,EACA,YAAA01H,CACJ,CACA,CACA,IAAIC,GAAc,CAChBJ,GAAqBlB,GAAa,YAAa,IAAM,KAAM,IAAA,EAAY,EACvEkB,GAAqBX,IAAU,SAAWzuK,GAAMA,EAAE,SAAQ,EAAKA,GACzD,OAAO,OAAW,IACb,OAAOA,CAAC,EAEVA,CACR,EACDovK,GAAqBd,IAAQ,OAAStuK,GAAMA,EAAE,YAAa,EAAGA,GAAM,IAAI,KAAKA,CAAC,CAAC,EAC/EovK,GAAqBxT,GAAS,QAAS,CAAC57J,EAAGyvK,IAAc,CACvD,MAAMC,EAAY,CAChB,KAAM1vK,EAAE,KACR,QAASA,EAAE,OACjB,EACI,MAAI,UAAWA,IACb0vK,EAAU,MAAQ1vK,EAAE,OAEtByvK,EAAU,kBAAkB,QAASnlJ,GAAS,CAC5ColJ,EAAUplJ,CAAI,EAAItqB,EAAEsqB,CAAI,CAC9B,CAAK,EACMolJ,CACX,EAAK,CAAC1vK,EAAGyvK,IAAc,CACnB,MAAMzoL,EAAI,IAAI,MAAMgZ,EAAE,QAAS,CAAE,MAAOA,EAAE,KAAK,CAAE,EACjD,OAAAhZ,EAAE,KAAOgZ,EAAE,KACXhZ,EAAE,MAAQgZ,EAAE,MACZyvK,EAAU,kBAAkB,QAASnlJ,GAAS,CAC5CtjC,EAAEsjC,CAAI,EAAItqB,EAAEsqB,CAAI,CACtB,CAAK,EACMtjC,CACX,CAAG,EACDooL,GAAqBf,IAAU,SAAWruK,GAAM,GAAKA,EAAI2vK,GAAU,CACjE,MAAMthJ,EAAOshJ,EAAM,MAAM,EAAGA,EAAM,YAAY,GAAG,CAAC,EAC5CC,EAAQD,EAAM,MAAMA,EAAM,YAAY,GAAG,EAAI,CAAC,EACpD,OAAO,IAAI,OAAOthJ,EAAMuhJ,CAAK,CACjC,CAAG,EACDR,GACE11C,GACA,MAGC15H,GAAM,CAAC,GAAGA,EAAE,OAAM,CAAE,EACpBA,GAAM,IAAI,IAAIA,CAAC,CACjB,EACDovK,GAAqB51C,GAAO,MAAQx5H,GAAM,CAAC,GAAGA,EAAE,QAAO,CAAE,EAAIA,GAAM,IAAI,IAAIA,CAAC,CAAC,EAC7EovK,GAAsBpvK,GAAMuuK,GAAWvuK,CAAC,GAAK0uK,IAAW1uK,CAAC,EAAG,SAAWA,GACjEuuK,GAAWvuK,CAAC,EACP,MAELA,EAAI,EACC,WAEA,YAER,MAAM,EACTovK,GAAsBpvK,GAAMA,IAAM,GAAK,EAAIA,IAAM,KAAW,SAAU,IAC7D,KACN,MAAM,EACTovK,GAAqBR,IAAO,MAAQ5uK,GAAMA,EAAE,SAAU,EAAGA,GAAM,IAAI,IAAIA,CAAC,CAAC,CAC3E,EACA,SAAS6vK,GAAwBR,EAAcC,EAAYz1H,EAAW01H,EAAa,CACjF,MAAO,CACL,aAAAF,EACA,WAAAC,EACA,UAAAz1H,EACA,YAAA01H,CACJ,CACA,CACA,IAAIO,GAAaD,GAAwB,CAAC1mL,EAAGsmL,IACvC71C,GAASzwI,CAAC,EACS,CAAC,CAACsmL,EAAU,eAAe,cAActmL,CAAC,EAG1D,GACN,CAACA,EAAGsmL,IAEE,CAAC,SADWA,EAAU,eAAe,cAActmL,CAAC,CAC/B,EAC1B6W,GAAMA,EAAE,YAAa,CAAC9Y,EAAGyG,EAAG8hL,IAAc,CAC5C,MAAM7kJ,EAAQ6kJ,EAAU,eAAe,SAAS9hL,EAAE,CAAC,CAAC,EACpD,GAAI,CAACi9B,EACH,MAAM,IAAI,MAAM,sCAAsC,EAExD,OAAOA,CACT,CAAC,EACGmlJ,IAAoB,CACtB,UACA,WACA,WACA,YACA,WACA,YACA,aACA,aACA,iBACF,EAAE,OAAO,CAAC7iJ,EAAKqzD,KACbrzD,EAAIqzD,EAAK,IAAI,EAAIA,EACVrzD,GACN,CAAE,CAAA,EACD8iJ,GAAiBH,GAAwBlB,IAAe3uK,GAAM,CAAC,cAAeA,EAAE,YAAY,IAAI,EAAIA,GAAM,CAAC,GAAGA,CAAC,EAAG,CAACA,EAAGrS,IAAM,CAC9H,MAAM4yF,EAAOwvF,IAAkBpiL,EAAE,CAAC,CAAC,EACnC,GAAI,CAAC4yF,EACH,MAAM,IAAI,MAAM,2CAA2C,EAE7D,OAAO,IAAIA,EAAKvgF,CAAC,CACnB,CAAC,EACD,SAASiwK,GAA4BC,EAAgBT,EAAW,CAC9D,OAAIS,GAAgB,YACG,CAAC,CAACT,EAAU,cAAc,cAAcS,EAAe,WAAW,EAGlF,EACT,CACA,IAAIC,GAAYN,GAAwBI,GAA6B,CAACG,EAAOX,IAEpE,CAAC,QADWA,EAAU,cAAc,cAAcW,EAAM,WAAW,CAC/C,EAC1B,CAACA,EAAOX,IAAc,CACvB,MAAMY,EAAeZ,EAAU,cAAc,gBAAgBW,EAAM,WAAW,EAC9E,GAAI,CAACC,EACH,MAAO,CAAE,GAAGD,GAEd,MAAMtrJ,EAAS,CAAA,EACf,OAAAurJ,EAAa,QAAS/lJ,GAAS,CAC7BxF,EAAOwF,CAAI,EAAI8lJ,EAAM9lJ,CAAI,CAC7B,CAAG,EACMxF,CACT,EAAG,CAAC9kB,EAAGrS,EAAG8hL,IAAc,CACtB,MAAMW,EAAQX,EAAU,cAAc,SAAS9hL,EAAE,CAAC,CAAC,EACnD,GAAI,CAACyiL,EACH,MAAM,IAAI,MAAM,wCAAwCziL,EAAE,CAAC,CAAC,mFAAmF,EAEjJ,OAAO,OAAO,OAAO,OAAO,OAAOyiL,EAAM,SAAS,EAAGpwK,CAAC,CACxD,CAAC,EACGswK,GAAaT,GAAwB,CAACjlJ,EAAO6kJ,IACxC,CAAC,CAACA,EAAU,0BAA0B,eAAe7kJ,CAAK,EAChE,CAACA,EAAO6kJ,IAEF,CAAC,SADYA,EAAU,0BAA0B,eAAe7kJ,CAAK,EAC9C,IAAI,EACjC,CAACA,EAAO6kJ,IACWA,EAAU,0BAA0B,eAAe7kJ,CAAK,EACzD,UAAUA,CAAK,EACjC,CAAC5qB,EAAGrS,EAAG8hL,IAAc,CACtB,MAAMpvB,EAAcovB,EAAU,0BAA0B,WAAW9hL,EAAE,CAAC,CAAC,EACvE,GAAI,CAAC0yJ,EACH,MAAM,IAAI,MAAM,4CAA4C,EAE9D,OAAOA,EAAY,YAAYrgJ,CAAC,CAClC,CAAC,EACGuwK,IAAiB,CAACJ,GAAWL,GAAYQ,GAAYN,EAAc,EACnEQ,GAAiB,CAAC5lJ,EAAO6kJ,IAAc,CACzC,MAAMgB,EAA0B1C,GAAQwC,IAAiBnrG,GAASA,EAAK,aAAax6C,EAAO6kJ,CAAS,CAAC,EACrG,GAAIgB,EACF,MAAO,CACL,MAAOA,EAAwB,UAAU7lJ,EAAO6kJ,CAAS,EACzD,KAAMgB,EAAwB,WAAW7lJ,EAAO6kJ,CAAS,CAC/D,EAEE,MAAMiB,EAAuB3C,GAAQyB,GAAcpqG,GAASA,EAAK,aAAax6C,EAAO6kJ,CAAS,CAAC,EAC/F,GAAIiB,EACF,MAAO,CACL,MAAOA,EAAqB,UAAU9lJ,EAAO6kJ,CAAS,EACtD,KAAMiB,EAAqB,UACjC,CAGA,EACIC,GAA0B,CAAA,EAC9BnB,GAAY,QAASpqG,GAAS,CAC5BurG,GAAwBvrG,EAAK,UAAU,EAAIA,CAC7C,CAAC,EACD,IAAIwrG,IAAmB,CAACC,EAAMhrJ,EAAM4pJ,IAAc,CAChD,GAAI10I,GAAQlV,CAAI,EACd,OAAQA,EAAK,CAAC,EAAC,CACb,IAAK,SACH,OAAOiqJ,GAAW,YAAYe,EAAMhrJ,EAAM4pJ,CAAS,EACrD,IAAK,QACH,OAAOU,GAAU,YAAYU,EAAMhrJ,EAAM4pJ,CAAS,EACpD,IAAK,SACH,OAAOa,GAAW,YAAYO,EAAMhrJ,EAAM4pJ,CAAS,EACrD,IAAK,cACH,OAAOO,GAAe,YAAYa,EAAMhrJ,EAAM4pJ,CAAS,EACzD,QACE,MAAM,IAAI,MAAM,2BAA6B5pJ,CAAI,CACpD,KACI,CACL,MAAMirJ,EAAiBH,GAAwB9qJ,CAAI,EACnD,GAAI,CAACirJ,EACH,MAAM,IAAI,MAAM,2BAA6BjrJ,CAAI,EAEnD,OAAOirJ,EAAe,YAAYD,EAAMpB,CAAS,CAClD,CACH,EAGIsB,GAAY,CAACnmJ,EAAO50B,IAAM,CAC5B,GAAIA,EAAI40B,EAAM,KACZ,MAAM,IAAI,MAAM,qBAAqB,EACvC,MAAM4Q,EAAO5Q,EAAM,OACnB,KAAO50B,EAAI,GACTwlC,EAAK,KAAI,EACTxlC,IAEF,OAAOwlC,EAAK,KAAM,EAAC,KACrB,EACA,SAASw1I,GAAaj3H,EAAM,CAC1B,GAAI+zH,GAAS/zH,EAAM,WAAW,EAC5B,MAAM,IAAI,MAAM,wCAAwC,EAE1D,GAAI+zH,GAAS/zH,EAAM,WAAW,EAC5B,MAAM,IAAI,MAAM,wCAAwC,EAE1D,GAAI+zH,GAAS/zH,EAAM,aAAa,EAC9B,MAAM,IAAI,MAAM,0CAA0C,CAE9D,CACA,IAAIk3H,IAAU,CAAC3xF,EAAQvlC,IAAS,CAC9Bi3H,GAAaj3H,CAAI,EACjB,QAAS1xD,EAAI,EAAGA,EAAI0xD,EAAK,OAAQ1xD,IAAK,CACpC,MAAMyiC,EAAMivB,EAAK1xD,CAAC,EAClB,GAAIqxI,GAAMp6C,CAAM,EACdA,EAASyxF,GAAUzxF,EAAQ,CAACx0D,CAAG,UACtB0uG,GAAMl6C,CAAM,EAAG,CACxB,MAAMtuC,EAAM,CAAClmB,EACPjF,EAAO,CAACk0B,EAAK,EAAE1xD,CAAC,GAAM,EAAI,MAAQ,QAClC6oL,EAAWH,GAAUzxF,EAAQtuC,CAAG,EACtC,OAAQnrB,EAAI,CACV,IAAK,MACHy5D,EAAS4xF,EACT,MACF,IAAK,QACH5xF,EAASA,EAAO,IAAI4xF,CAAQ,EAC5B,KACH,CACP,MACM5xF,EAASA,EAAOx0D,CAAG,CAEtB,CACD,OAAOw0D,CACT,EACI6xF,GAAU,CAAC7xF,EAAQvlC,EAAM8rH,IAAW,CAEtC,GADAmL,GAAaj3H,CAAI,EACbA,EAAK,SAAW,EAClB,OAAO8rH,EAAOvmF,CAAM,EAEtB,IAAIpuD,EAASouD,EACb,QAAS,EAAI,EAAG,EAAIvlC,EAAK,OAAS,EAAG,IAAK,CACxC,MAAMjvB,EAAMivB,EAAK,CAAC,EAClB,GAAIhf,GAAQ7J,CAAM,EAAG,CACnB,MAAMpB,EAAQ,CAAChF,EACfoG,EAASA,EAAOpB,CAAK,CAC3B,SAAeiqG,GAAc7oG,CAAM,EAC7BA,EAASA,EAAOpG,CAAG,UACV4uG,GAAMxoG,CAAM,EAAG,CACxB,MAAM8f,EAAM,CAAClmB,EACboG,EAAS6/I,GAAU7/I,EAAQ8f,CAAG,CACpC,SAAewoF,GAAMtoG,CAAM,EAAG,CAExB,GADc,IAAM6oB,EAAK,OAAS,EAEhC,MAEF,MAAM/I,EAAM,CAAClmB,EACPjF,EAAO,CAACk0B,EAAK,EAAE,CAAC,GAAM,EAAI,MAAQ,QAClCm3H,EAAWH,GAAU7/I,EAAQ8f,CAAG,EACtC,OAAQnrB,EAAI,CACV,IAAK,MACHqL,EAASggJ,EACT,MACF,IAAK,QACHhgJ,EAASA,EAAO,IAAIggJ,CAAQ,EAC5B,KACH,CACF,CACF,CACD,MAAME,EAAUr3H,EAAKA,EAAK,OAAS,CAAC,EAMpC,GALIhf,GAAQ7J,CAAM,EAChBA,EAAO,CAACkgJ,CAAO,EAAIvL,EAAO30I,EAAO,CAACkgJ,CAAO,CAAC,EACjCr3C,GAAc7oG,CAAM,IAC7BA,EAAOkgJ,CAAO,EAAIvL,EAAO30I,EAAOkgJ,CAAO,CAAC,GAEtC13C,GAAMxoG,CAAM,EAAG,CACjB,MAAMwnD,EAAWq4F,GAAU7/I,EAAQ,CAACkgJ,CAAO,EACrCz4F,EAAWktF,EAAOntF,CAAQ,EAC5BA,IAAaC,IACfznD,EAAO,OAAOwnD,CAAQ,EACtBxnD,EAAO,IAAIynD,CAAQ,EAEtB,CACD,GAAI6gD,GAAMtoG,CAAM,EAAG,CACjB,MAAM8f,EAAM,CAAC+I,EAAKA,EAAK,OAAS,CAAC,EAC3Bs3H,EAAWN,GAAU7/I,EAAQ8f,CAAG,EAEtC,OADa,CAACogI,GAAY,EAAI,MAAQ,QAC1B,CACV,IAAK,MAAO,CACV,MAAM74F,EAASstF,EAAOwL,CAAQ,EAC9BngJ,EAAO,IAAIqnD,EAAQrnD,EAAO,IAAImgJ,CAAQ,CAAC,EACnC94F,IAAW84F,GACbngJ,EAAO,OAAOmgJ,CAAQ,EAExB,KACD,CACD,IAAK,QAAS,CACZngJ,EAAO,IAAImgJ,EAAUxL,EAAO30I,EAAO,IAAImgJ,CAAQ,CAAC,CAAC,EACjD,KACD,CACF,CACF,CACD,OAAO/xF,CACT,EAGIgyF,GAAqBjhC,GAAYA,EAAU,EAC/C,SAASrM,GAASutC,EAAMC,EAASnhC,EAAS75D,EAAS,CAAA,EAAI,CACrD,GAAI,CAAC+6F,EACH,OAEF,MAAMvC,EAAcsC,GAAkBjhC,CAAO,EAC7C,GAAI,CAACt1G,GAAQw2I,CAAI,EAAG,CAClB1D,GAAQ0D,EAAM,CAACE,EAAS3mJ,IAAQk5G,GAASytC,EAASD,EAASnhC,EAAS,CAClE,GAAG75D,EACH,GAAGu4F,GAAUjkJ,EAAKkkJ,CAAW,CAC9B,CAAA,CAAC,EACF,MACD,CACD,KAAM,CAAC0C,EAAW5N,CAAS,EAAIyN,EAC3BzN,GACF+J,GAAQ/J,EAAW,CAAC/jG,EAAOj1C,IAAQ,CACjCk5G,GAASjkE,EAAOyxG,EAASnhC,EAAS,CAChC,GAAG75D,EACH,GAAGu4F,GAAUjkJ,EAAKkkJ,CAAW,CACrC,CAAO,CACP,CAAK,EAEHwC,EAAQE,EAAWl7F,CAAM,CAC3B,CACA,SAASm7F,IAAsBC,EAAOC,EAAaxhC,EAASo/B,EAAW,CACrE,OAAAzrC,GAAS6tC,EAAa,CAAChsJ,EAAMk0B,IAAS,CACpC63H,EAAQT,GAAQS,EAAO73H,EAAO/5C,GAAM4wK,IAAiB5wK,EAAG6lB,EAAM4pJ,CAAS,CAAC,CACzE,EAAEp/B,CAAO,EACHuhC,CACT,CACA,SAASE,IAAoCF,EAAOC,EAAaxhC,EAAS,CACxE,MAAM2+B,EAAcsC,GAAkBjhC,CAAO,EAC7C,SAAS1S,EAAMo0C,EAAgBh4H,EAAM,CACnC,MAAMulC,EAAS2xF,IAAQW,EAAO7C,GAAUh1H,EAAMi1H,CAAW,CAAC,EAC1D+C,EAAe,IAAKC,GAAUjD,GAAUiD,EAAOhD,CAAW,CAAC,EAAE,QAASiD,GAAwB,CAC5FL,EAAQT,GAAQS,EAAOK,EAAqB,IAAM3yF,CAAM,CAC9D,CAAK,CACF,CACD,GAAIvkD,GAAQ82I,CAAW,EAAG,CACxB,KAAM,CAACj9E,EAAMud,CAAK,EAAI0/D,EACtBj9E,EAAK,QAASs9E,GAAkB,CAC9BN,EAAQT,GAAQS,EAAO7C,GAAUmD,EAAelD,CAAW,EAAG,IAAM4C,CAAK,CAC/E,CAAK,EACGz/D,GACF07D,GAAQ17D,EAAOwrB,CAAK,CAE1B,MACIkwC,GAAQgE,EAAal0C,CAAK,EAE5B,OAAOi0C,CACT,CACA,IAAIO,IAAS,CAAC7yF,EAAQmwF,IAAc11C,GAAcz6C,CAAM,GAAKvkD,GAAQukD,CAAM,GAAKk6C,GAAMl6C,CAAM,GAAKo6C,GAAMp6C,CAAM,GAAKs8E,GAAQt8E,CAAM,GAAK2wF,GAA4B3wF,EAAQmwF,CAAS,EAClL,SAAS2C,IAAY9yF,EAAQvlC,EAAMs4H,EAAY,CAC7C,MAAMC,EAAcD,EAAW,IAAI/yF,CAAM,EACrCgzF,EACFA,EAAY,KAAKv4H,CAAI,EAErBs4H,EAAW,IAAI/yF,EAAQ,CAACvlC,CAAI,CAAC,CAEjC,CACA,SAASw4H,IAAuCC,EAAaC,EAAQ,CACnE,MAAM3tJ,EAAS,CAAA,EACf,IAAI4tJ,EAeJ,OAdAF,EAAY,QAAShrH,GAAU,CAC7B,GAAIA,EAAM,QAAU,EAClB,OAEGirH,IACHjrH,EAAQA,EAAM,IAAKzN,GAASA,EAAK,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,EAAGtyC,IAAM,EAAE,OAASA,EAAE,MAAM,GAElF,KAAM,CAACkrK,EAAoB,GAAGZ,CAAc,EAAIvqH,EAC5CmrH,EAAmB,SAAW,EAChCD,EAAoBX,EAAe,IAAIjD,EAAa,EAEpDhqJ,EAAOgqJ,GAAc6D,CAAkB,CAAC,EAAIZ,EAAe,IAAIjD,EAAa,CAElF,CAAG,EACG4D,EACEtE,GAActpJ,CAAM,EACf,CAAC4tJ,CAAiB,EAElB,CAACA,EAAmB5tJ,CAAM,EAG5BspJ,GAActpJ,CAAM,EAAI,OAASA,CAE5C,CACA,IAAI8tJ,GAAS,CAACtzF,EAAQ+yF,EAAY5C,EAAWgD,EAAQ14H,EAAO,CAAE,EAAE84H,EAAoB,CAAE,EAAEC,EAA8B,IAAI,MAAU,CAClI,MAAMC,EAAYvE,IAAYlvF,CAAM,EACpC,GAAI,CAACyzF,EAAW,CACdX,IAAY9yF,EAAQvlC,EAAMs4H,CAAU,EACpC,MAAMztC,EAAOkuC,EAAY,IAAIxzF,CAAM,EACnC,GAAIslD,EACF,OAAO6tC,EAAS,CACd,iBAAkB,IACnB,EAAG7tC,CAEP,CACD,GAAI,CAACutC,IAAO7yF,EAAQmwF,CAAS,EAAG,CAC9B,MAAMuD,EAAexC,GAAelxF,EAAQmwF,CAAS,EAC/ClxC,EAAUy0C,EAAe,CAC7B,iBAAkBA,EAAa,MAC/B,YAAa,CAACA,EAAa,IAAI,CACrC,EAAQ,CACF,iBAAkB1zF,CACxB,EACI,OAAKyzF,GACHD,EAAY,IAAIxzF,EAAQi/C,CAAO,EAE1BA,CACR,CACD,GAAIuvC,GAAS+E,EAAmBvzF,CAAM,EACpC,MAAO,CACL,iBAAkB,IACxB,EAEE,MAAM2zF,EAAuBzC,GAAelxF,EAAQmwF,CAAS,EACvDyD,EAAcD,GAAsB,OAAS3zF,EAC7C6zF,EAAmBp4I,GAAQm4I,CAAW,EAAI,CAAA,EAAK,CAAA,EAC/CE,EAAmB,CAAA,EACzBvF,GAAQqF,EAAa,CAACtoJ,EAAOkF,IAAU,CACrC,GAAIA,IAAU,aAAeA,IAAU,eAAiBA,IAAU,YAChE,MAAM,IAAI,MAAM,qBAAqBA,CAAK,0EAA0E,EAEtH,MAAMujJ,EAAkBT,GAAOhoJ,EAAOynJ,EAAY5C,EAAWgD,EAAQ,CAAC,GAAG14H,EAAMjqB,CAAK,EAAG,CAAC,GAAG+iJ,EAAmBvzF,CAAM,EAAGwzF,CAAW,EAClIK,EAAiBrjJ,CAAK,EAAIujJ,EAAgB,iBACtCt4I,GAAQs4I,EAAgB,WAAW,EACrCD,EAAiBvE,GAAU/+I,CAAK,CAAC,EAAIujJ,EAAgB,YAC5Ct5C,GAAcs5C,EAAgB,WAAW,GAClDxF,GAAQwF,EAAgB,YAAa,CAAC9B,EAAMzmJ,IAAQ,CAClDsoJ,EAAiBvE,GAAU/+I,CAAK,EAAI,IAAMhF,CAAG,EAAIymJ,CACzD,CAAO,CAEP,CAAG,EACD,MAAMzsJ,EAASspJ,GAAcgF,CAAgB,EAAI,CAC/C,iBAAAD,EACA,YAAeF,EAAuB,CAACA,EAAqB,IAAI,EAAI,MACxE,EAAM,CACF,iBAAAE,EACA,YAAeF,EAAuB,CAACA,EAAqB,KAAMG,CAAgB,EAAIA,CAC1F,EACE,OAAKL,GACHD,EAAY,IAAIxzF,EAAQx6D,CAAM,EAEzBA,CACT,EAGA,SAASwuJ,GAAShzF,EAAS,CACzB,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAO,EAAE,MAAM,EAAG,EAAE,CAC5D,CAGA,SAASizF,GAASjzF,EAAS,CACzB,OAAOgzF,GAAShzF,CAAO,IAAM,OAC/B,CAGA,SAASkzF,IAAelzF,EAAS,CAC/B,GAAIgzF,GAAShzF,CAAO,IAAM,SACxB,MAAO,GACT,MAAMmzF,EAAY,OAAO,eAAenzF,CAAO,EAC/C,MAAO,CAAC,CAACmzF,GAAaA,EAAU,cAAgB,QAAUA,IAAc,OAAO,SACjF,CAGA,SAASC,IAAYC,EAAO7oJ,EAAK8oJ,EAAQC,EAAgBC,EAAsB,CAC7E,MAAM/kH,EAAW,CAAE,EAAC,qBAAqB,KAAK8kH,EAAgB/oJ,CAAG,EAAI,aAAe,gBAChFikC,IAAa,eACf4kH,EAAM7oJ,CAAG,EAAI8oJ,GACXE,GAAwB/kH,IAAa,iBACvC,OAAO,eAAe4kH,EAAO7oJ,EAAK,CAChC,MAAO8oJ,EACP,WAAY,GACZ,SAAU,GACV,aAAc,EACpB,CAAK,CAEL,CACA,SAAS59I,GAAK/R,EAAQ8B,EAAU,GAAI,CAClC,GAAIwtJ,GAAStvJ,CAAM,EACjB,OAAOA,EAAO,IAAK4L,GAASmG,GAAKnG,EAAM9J,CAAO,CAAC,EAEjD,GAAI,CAACytJ,IAAevvJ,CAAM,EACxB,OAAOA,EAET,MAAM6zD,EAAQ,OAAO,oBAAoB7zD,CAAM,EACzC8vJ,EAAU,OAAO,sBAAsB9vJ,CAAM,EACnD,MAAO,CAAC,GAAG6zD,EAAO,GAAGi8F,CAAO,EAAE,OAAO,CAACJ,EAAO7oJ,IAAQ,CAGnD,GAFIA,IAAQ,aAERyoJ,GAASxtJ,EAAQ,KAAK,GAAK,CAACA,EAAQ,MAAM,SAAS+E,CAAG,EACxD,OAAO6oJ,EAET,MAAM/vJ,EAAMK,EAAO6G,CAAG,EAChB8oJ,EAAS59I,GAAKpS,EAAKmC,CAAO,EAChC,OAAA2tJ,IAAYC,EAAO7oJ,EAAK8oJ,EAAQ3vJ,EAAQ8B,EAAQ,aAAa,EACtD4tJ,CACR,EAAE,CAAE,CAAA,CACP,CAGA,IAAIK,GAAY,KAAM,CAIpB,YAAY,CAAE,OAAAvB,EAAS,EAAK,EAAK,CAAA,EAAI,CACnC,KAAK,cAAgB,IAAIhF,IACzB,KAAK,eAAiB,IAAIH,GAAUnkL,GAAMA,EAAE,aAAe,EAAE,EAC7D,KAAK,0BAA4B,IAAI6kL,IACrC,KAAK,kBAAoB,GACzB,KAAK,OAASyE,CACf,CACD,UAAUnzF,EAAQ,CAChB,MAAM+yF,EAA6B,IAAI,IACjC/hF,EAASsiF,GAAOtzF,EAAQ+yF,EAAY,KAAM,KAAK,MAAM,EACrDruH,EAAM,CACV,KAAMssC,EAAO,gBACnB,EACQA,EAAO,cACTtsC,EAAI,KAAO,CACT,GAAGA,EAAI,KACP,OAAQssC,EAAO,WACvB,GAEI,MAAM2jF,EAAsB1B,IAAuCF,EAAY,KAAK,MAAM,EAC1F,OAAI4B,IACFjwH,EAAI,KAAO,CACT,GAAGA,EAAI,KACP,sBAAuBiwH,CAC/B,GAEQjwH,EAAI,OACNA,EAAI,KAAK,EAAI,GACRA,CACR,CACD,YAAYs8B,EAASv6D,EAAS,CAC5B,KAAM,CAAE,KAAA8qJ,EAAM,KAAAqD,CAAM,EAAG5zF,EACvB,IAAIx7D,EAASiB,GAAS,QAAU8qJ,EAAO76I,GAAK66I,CAAI,EAChD,OAAIqD,GAAM,SACRpvJ,EAAS6sJ,IAAsB7sJ,EAAQovJ,EAAK,OAAQA,EAAK,GAAK,EAAG,IAAI,GAEnEA,GAAM,wBACRpvJ,EAASgtJ,IAAoChtJ,EAAQovJ,EAAK,sBAAuBA,EAAK,GAAK,CAAC,GAEvFpvJ,CACR,CACD,UAAUw6D,EAAQ,CAChB,OAAO,KAAK,UAAU,KAAK,UAAUA,CAAM,CAAC,CAC7C,CACD,MAAM0oC,EAAQ,CACZ,OAAO,KAAK,YAAY,KAAK,MAAMA,CAAM,EAAG,CAAE,QAAS,EAAI,CAAE,CAC9D,CACD,cAAchoH,EAAG+lB,EAAS,CACxB,KAAK,cAAc,SAAS/lB,EAAG+lB,CAAO,CACvC,CACD,eAAe/lB,EAAGwtK,EAAY,CAC5B,KAAK,eAAe,SAASxtK,EAAGwtK,CAAU,CAC3C,CACD,eAAentB,EAAaj2H,EAAM,CAChC,KAAK,0BAA0B,SAAS,CACtC,KAAAA,EACA,GAAGi2H,CACT,CAAK,CACF,CACD,mBAAmBvoE,EAAO,CACxB,KAAK,kBAAkB,KAAK,GAAGA,CAAK,CACrC,CACH,EACAk8F,GAAU,gBAAkB,IAAIA,GAChCA,GAAU,UAAYA,GAAU,gBAAgB,UAAU,KAAKA,GAAU,eAAe,EACxFA,GAAU,YAAcA,GAAU,gBAAgB,YAAY,KAAKA,GAAU,eAAe,EAC5FA,GAAU,UAAYA,GAAU,gBAAgB,UAAU,KAAKA,GAAU,eAAe,EACxFA,GAAU,MAAQA,GAAU,gBAAgB,MAAM,KAAKA,GAAU,eAAe,EAChFA,GAAU,cAAgBA,GAAU,gBAAgB,cAAc,KAAKA,GAAU,eAAe,EAChGA,GAAU,eAAiBA,GAAU,gBAAgB,eAAe,KAAKA,GAAU,eAAe,EAClGA,GAAU,eAAiBA,GAAU,gBAAgB,eAAe,KAAKA,GAAU,eAAe,EAClGA,GAAU,gBAAkBA,GAAU,gBAAgB,gBAAgB,KAAKA,GAAU,eAAe,EACpG,IAAIG,GAAYH,GAAU,UAEtBI,IAAYJ,GAAU,UAQ1B,SAASK,GAAoB7uJ,EAAO,CAClC,OAAOA,EAAM,MAAM,cAAgB,WAAa,WAAcA,EAAM,oBAAmCA,EAAM,MAAM,cAAgB,SAAW,SAAWA,EAAM,QAAO,EAAK,QAAU,QAA3F,UAC5F,CACA,SAAS8uJ,IAAahqJ,EAAMiqJ,EAAM,CAChC,MAAO,GAAGjqJ,CAAI,GAAGiqJ,EAAK,OAAO,CAAC,EAAE,YAAW,EAAKA,EAAK,MAAM,CAAC,CAAC,EAC/D,CACA,SAASC,IAAoB,CAC3B,WAAAC,EACA,cAAAC,EACA,QAAA1Y,CACF,EAAG,CACD,OAAOyY,GAAY,cAAgB,WAAa,OAAUC,EAAyBD,GAAY,cAAgB,SAAW,SAAWzY,EAAU,SAAW,QAAhF,MAC5E,CACA,SAAS2Y,GAAuB,CAC9B,OAAArZ,EACA,SAAAsZ,CACF,EAAG,CACD,OAAOA,EAAW,SAAWtZ,IAAW,QAAU,MAAQA,IAAW,UAAY,SAAWA,IAAW,UAAY,QAAU,MAC/H,CACA,SAASuZ,IAA2BhiD,EAAO,CACzC,OAAOA,IAAU,QAAU,QAAUA,IAAU,QAAU,SAAWA,IAAU,SAAW,SAAWA,IAAU,WAAa,OAAS,MACtI,CACA,IAAIiiD,GAAe,CAAClqJ,EAAOmqJ,EAAW,KAAU,CAC9C,KAAM,CACJ,KAAAlE,CACJ,EAAMsD,GAAUvpJ,CAAK,EACnB,OAAO,KAAK,UAAUimJ,EAAM,KAAMkE,EAAW,EAAI,MAAM,CACzD,EACIC,GAAiB9uK,GAAMA,EAAE,MAAM,cAAgB,OAAS,EAAKA,EAAE,kBAAmB,EAAOA,EAAE,QAAS,EAAG,EAAI,EAAtB,EACrF+uK,IAAgB,CAACtnL,EAAG8Z,IAAM9Z,EAAE,UAAU,cAAc8Z,EAAE,SAAS,EAC/DytK,GAAW,CAACvnL,EAAG8Z,IAAM,CACvB,MAAMy0C,EAAOz0C,EAAE,MAAM,cAAgB9Z,EAAE,MAAM,cAC7C,OAAOuuD,EAAO,EAAI,GAAKA,EAAO,EAAI,EAAI,CACxC,EACIi5H,IAAoB,CAACxnL,EAAG8Z,IACtButK,GAAcrnL,CAAC,IAAMqnL,GAAcvtK,CAAC,EAC/BytK,GAASvnL,EAAG8Z,CAAC,EAEfutK,GAAcrnL,CAAC,EAAIqnL,GAAcvtK,CAAC,EAAI,EAAI,GAE/C2tK,GAAU,CACZ,OAAQD,IACR,aAAcF,IACd,eAAgBC,EAClB,EACIG,GAAyBlkL,GAAMA,EAAE,MAAM,SAAW,EAAIA,EAAE,MAAM,SAAW,QAAU,EAAIA,EAAE,MAAM,SAAW,UAAY,EAAI,EAC1HmkL,GAAmB,CAAC3nL,EAAG8Z,IAAM9Z,EAAE,MAAM,YAAc8Z,EAAE,MAAM,YAAc,EAAI,GAC7E8tK,IAAqB,CAAC5nL,EAAG8Z,IACvB4tK,GAAsB1nL,CAAC,IAAM0nL,GAAsB5tK,CAAC,EAC/C6tK,GAAiB3nL,EAAG8Z,CAAC,EAEvB4tK,GAAsB1nL,CAAC,EAAI0nL,GAAsB5tK,CAAC,EAAI,EAAI,GAE/D+tK,GAAkB,CACpB,OAAQD,IACR,eAAgBD,EAClB,EACIG,GAAsBj2G,GACjBA,EAAM,WAAW,iBAAiB,SAAS,eAAe,EAAE,QAAQ,EAEzEk2G,IAA0B,IAAM,CAClC,KAAM,CAACC,EAAaC,CAAc,EAAI3gG,GAAa,MAAM,EACzD,OAAAquF,GAAQ,IAAM,CACZ,MAAM99I,EAAQ,OAAO,WAAW,8BAA8B,EAC9DowJ,EAAepwJ,EAAM,QAAU,OAAS,OAAO,EAC/C,MAAMgtF,EAAYxrH,GAAM,CACtB4uL,EAAe5uL,EAAE,QAAU,OAAS,OAAO,CACjD,EACIw+B,EAAM,iBAAiB,SAAUgtF,CAAQ,EACzC+wD,GAAU,IAAM/9I,EAAM,oBAAoB,SAAUgtF,CAAQ,CAAC,CACjE,CAAG,EACMmjE,CACT,EACIE,GAAyB,CAACC,EAASC,EAAYnrJ,IAAU,CAC3D,GAAImrJ,EAAW,SAAW,EACxB,OAAOnrJ,EAET,GAAIkrJ,aAAmB,IAAK,CAC1B,MAAM3jI,EAAU,IAAI,IAAI2jI,CAAO,EAC/B,GAAIC,EAAW,SAAW,EACxB,OAAA5jI,EAAQ,IAAI4jI,EAAW,CAAC,EAAGnrJ,CAAK,EACzBunB,EAET,KAAM,CAACspF,EAAM,GAAGn4G,CAAI,EAAIyyJ,EACxB,OAAA5jI,EAAQ,IAAIspF,EAAMo6C,GAAuB1jI,EAAQ,IAAIspF,CAAI,EAAGn4G,EAAMsH,CAAK,CAAC,EACjEunB,CACR,CACD,GAAI2jI,aAAmB,IAAK,CAC1B,MAAME,EAAaH,GAAuB,MAAM,KAAKC,CAAO,EAAGC,EAAYnrJ,CAAK,EAChF,OAAO,IAAI,IAAIorJ,CAAU,CAC1B,CACD,GAAI,MAAM,QAAQF,CAAO,EAAG,CAC1B,MAAM3jI,EAAU,CAAC,GAAG2jI,CAAO,EAC3B,GAAIC,EAAW,SAAW,EACxB,OAAA5jI,EAAQ4jI,EAAW,CAAC,CAAC,EAAInrJ,EAClBunB,EAET,KAAM,CAACspF,EAAM,GAAGn4G,CAAI,EAAIyyJ,EACxB,OAAA5jI,EAAQspF,CAAI,EAAIo6C,GAAuB1jI,EAAQspF,CAAI,EAAGn4G,EAAMsH,CAAK,EAC1DunB,CACR,CACD,GAAI2jI,aAAmB,OAAQ,CAC7B,MAAM3jI,EAAU,CACd,GAAG2jI,CACT,EACI,GAAIC,EAAW,SAAW,EACxB,OAAA5jI,EAAQ4jI,EAAW,CAAC,CAAC,EAAInrJ,EAClBunB,EAET,KAAM,CAACspF,EAAM,GAAGn4G,CAAI,EAAIyyJ,EACxB,OAAA5jI,EAAQspF,CAAI,EAAIo6C,GAAuB1jI,EAAQspF,CAAI,EAAGn4G,EAAMsH,CAAK,EAC1DunB,CACR,CACD,OAAO2jI,CACT,EACIG,GAAyB,CAACH,EAASI,IAAe,CACpD,GAAIJ,aAAmB,IAAK,CAC1B,MAAM3jI,EAAU,IAAI,IAAI2jI,CAAO,EAC/B,GAAII,EAAW,SAAW,EACxB,OAAA/jI,EAAQ,OAAO+jI,EAAW,CAAC,CAAC,EACrB/jI,EAET,KAAM,CAACspF,EAAM,GAAGn4G,CAAI,EAAI4yJ,EACxB,OAAA/jI,EAAQ,IAAIspF,EAAMw6C,GAAuB9jI,EAAQ,IAAIspF,CAAI,EAAGn4G,CAAI,CAAC,EAC1D6uB,CACR,CACD,GAAI2jI,aAAmB,IAAK,CAC1B,MAAME,EAAaC,GAAuB,MAAM,KAAKH,CAAO,EAAGI,CAAU,EACzE,OAAO,IAAI,IAAIF,CAAU,CAC1B,CACD,GAAI,MAAM,QAAQF,CAAO,EAAG,CAC1B,MAAM3jI,EAAU,CAAC,GAAG2jI,CAAO,EAC3B,GAAII,EAAW,SAAW,EACxB,OAAO/jI,EAAQ,OAAO,CAACjrD,EAAG4yF,IAAQA,EAAI,aAAeo8F,EAAW,CAAC,CAAC,EAEpE,KAAM,CAACz6C,EAAM,GAAGn4G,CAAI,EAAI4yJ,EACxB,OAAA/jI,EAAQspF,CAAI,EAAIw6C,GAAuB9jI,EAAQspF,CAAI,EAAGn4G,CAAI,EACnD6uB,CACR,CACD,GAAI2jI,aAAmB,OAAQ,CAC7B,MAAM3jI,EAAU,CACd,GAAG2jI,CACT,EACI,GAAII,EAAW,SAAW,EACxB,cAAO/jI,EAAQ+jI,EAAW,CAAC,CAAC,EACrB/jI,EAET,KAAM,CAACspF,EAAM,GAAGn4G,CAAI,EAAI4yJ,EACxB,OAAA/jI,EAAQspF,CAAI,EAAIw6C,GAAuB9jI,EAAQspF,CAAI,EAAGn4G,CAAI,EACnD6uB,CACR,CACD,OAAO2jI,CACT,EACIK,IAAkB,CAACC,EAAOnyJ,IAAW,CACvC,GAAI,CAACmyJ,EAAO,OACZ,OAAO,UAAYA,EACnB,MAAMxhF,EAAO3wE,GAAU,SAAS,KAChC,GAAI2wE,EAAK,cAAc,UAAU,EAAG,OACpC,MAAMyhF,EAAW,SAAS,cAAc,OAAO,EACzCC,EAAW,SAAS,eAAe,EAAE,EAC3CD,EAAS,YAAYC,CAAQ,EAC7BD,EAAS,GAAK,UACdA,EAAS,aAAa,QAASD,CAAK,EACpCxhF,EAAK,YAAYyhF,CAAQ,CAC3B,EC51FIE,IAAwB,KAAM,CAChC7d,GACA8d,GACAC,GACAC,GACAC,GAAa,GACbC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACA,YAAY/lJ,EAAQ,CAClB,KAAM,CACJ,OAAAmnI,EACA,YAAA6e,EACA,QAAAjnC,EACA,cAAA+nB,EACA,eAAAmf,EACA,SAAAxrJ,EACA,cAAAyrJ,EACA,WAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,oBAAAC,EACA,MAAAC,CACD,EAAGvmJ,EACJ,KAAKonI,GAAUzjF,GAAawjF,CAAM,EAClC,KAAKge,GAAea,EACpB,KAAKZ,GAAWrmC,EAChB,KAAKmmC,GAAiBpe,EACtB,KAAKwe,GAAcc,EACnB,KAAKb,GAAmBc,EACxB,KAAKb,GAAkB7hG,GAAasiG,CAAc,EAClD,KAAKR,GAAY9hG,GAAalpD,CAAQ,EACtC,KAAKirJ,GAAiB/hG,GAAauiG,CAAa,EAChD,KAAKP,GAAchiG,GAAawiG,CAAU,EAC1C,KAAKP,GAAuBjiG,GAAa2iG,CAAmB,EAC5D,KAAKR,GAASniG,GAAa4iG,CAAK,CACjC,CACD,kBAAkB9rJ,EAAU,CAC1B,KAAK+qJ,GAAgB,CAAC,EAAE/qJ,CAAQ,CACjC,CACD,YAAYA,EAAU,CACpB,KAAKgrJ,GAAU,CAAC,EAAEhrJ,CAAQ,CAC3B,CACD,iBAAiB+rJ,EAAQ,CACvB,KAAKd,GAAe,CAAC,EAAEc,CAAM,CAC9B,CACD,cAAcL,EAAY,CACxB,KAAKR,GAAY,CAAC,EAAEQ,CAAU,CAC/B,CACD,UAAUhf,EAAQ,CAChB,KAAKC,GAAQ,CAAC,EAAED,CAAM,CACvB,CACD,SAASof,EAAO,CACd,KAAKT,GAAO,CAAC,EAAES,CAAK,CACrB,CACD,MAAMlyJ,EAAI,CACR,GAAI,KAAKgxJ,GACP,MAAM,IAAI,MAAM,6BAA6B,EAE/C,MAAM3R,EAAUhqF,IAAO,IAAM,CAC3B,MAAM+8F,EAAS,KACT,CAACC,CAAW,EAAI,KAAKlB,GACrB,CAAChkI,CAAG,EAAI,KAAKikI,GACb,CAACe,CAAM,EAAI,KAAKd,GAChB,CAACtnJ,CAAM,EAAI,KAAKunJ,GAChB,CAACW,CAAmB,EAAI,KAAKV,GAC7B,CAACxZ,CAAW,EAAI,KAAKhF,GACrB,CAACmf,CAAK,EAAI,KAAKT,GACrB,IAAIa,EACJ,OAAI,KAAKd,GACPc,EAAW,KAAKd,IAEhBc,EAAWlR,IAAK,IAAM,QAAA,QAAA,EAAA,KAAA,IAAAmR,GAAA,CAAyC,EAC/D,KAAKf,GAAac,GAEpB9B,IAAgB,KAAKS,GAAa,KAAKC,EAAgB,EAChD7Q,EAAgBiS,EAAU5R,GAAW,CAC1C,IAAI,aAAc,CAChB,OAAO0R,EAAOtB,EACf,EACD,IAAI,SAAU,CACZ,OAAOsB,EAAOrB,EACf,EACD,IAAI,eAAgB,CAClB,OAAOqB,EAAOvB,EACf,EACD,IAAI,iBAAkB,CACpB,OAAOuB,EAAOlB,EACf,CACT,EAAS,CACD,IAAI,QAAS,CACX,OAAOnZ,EAAW,CACnB,EACD,IAAI,gBAAiB,CACnB,OAAOsa,EAAW,CACnB,EACD,IAAI,UAAW,CACb,OAAOllI,EAAG,CACX,EACD,IAAI,eAAgB,CAClB,OAAOglI,EAAM,CACd,EACD,IAAI,YAAa,CACf,OAAOpoJ,EAAM,CACd,EACD,IAAI,qBAAsB,CACxB,OAAOkoJ,EAAmB,CAC3B,EACD,IAAI,OAAQ,CACV,OAAOC,EAAK,CACb,CACF,CAAA,CAAC,CACH,EAAElyJ,CAAE,EACL,KAAKgxJ,GAAa,GAClB,KAAKU,GAAWrS,CACjB,CACD,SAAU,CACR,GAAI,CAAC,KAAK2R,GACR,MAAM,IAAI,MAAM,yBAAyB,EAE3C,KAAKU,KAAQ,EACb,KAAKV,GAAa,EACnB,CACH,EC9HA,SAASwB,IAAmBrgG,EAAO,CACjC,MAAM4lF,EAAcD,GAAe3lF,EAAM,MAAM,EACzCqC,EAAMi+F,SAAa,IAAI,EACvB,CACJ,eAAAb,EACA,SAAAxrJ,EACA,cAAAyrJ,EACA,WAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,oBAAAC,EACA,MAAAC,CACD,EAAG//F,EACE,CAACugG,CAAQ,EAAInZ,EAAc,SAC/B,IAAIqX,IAAsB,CACxB,OAAQ7Y,EACR,YAAa,cACb,QAAS,IACT,cAAAtF,GACA,eAAAmf,EACA,SAAAxrJ,EACA,cAAAyrJ,EACA,WAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,oBAAAC,EACA,MAAAC,CACN,CAAK,CACL,EACEha,OAAAA,EAAAA,UAAgB,IAAM,CACpBwa,EAAS,UAAU3a,CAAW,CAClC,EAAK,CAACA,EAAa2a,CAAQ,CAAC,EAC1Bxa,EAAAA,UAAgB,IAAM,CAChB0Z,GACFc,EAAS,kBAAkBd,CAAc,CAE/C,EAAK,CAACA,EAAgBc,CAAQ,CAAC,EAC7Bxa,EAAAA,UAAgB,IAAM,CAChB9xI,GACFssJ,EAAS,YAAYtsJ,CAAQ,CAEnC,EAAK,CAACA,EAAUssJ,CAAQ,CAAC,EACvBxa,EAAAA,UAAgB,IAAM,CACpBwa,EAAS,iBAAiBb,GAAiB,EAAK,CACpD,EAAK,CAACA,EAAea,CAAQ,CAAC,EAC5Bxa,EAAAA,UAAgB,IAAM,CACpBwa,EAAS,cAAcZ,GAAc,CAAA,CAAE,CAC3C,EAAK,CAACA,EAAYY,CAAQ,CAAC,EACzBxa,EAAAA,UAAgB,IAAM,CACpBwa,EAAS,SAASR,CAAK,CAC3B,EAAK,CAACA,EAAOQ,CAAQ,CAAC,EACpBxa,EAAAA,UAAgB,KACV1jF,EAAI,SACNk+F,EAAS,MAAMl+F,EAAI,OAAO,EAErB,IAAM,CACXk+F,EAAS,QAAO,CACtB,GACK,CAACA,CAAQ,CAAC,EACU5pD,GAAG,IAAC,MAAO,CAAE,IAAK,MAAO,UAAW,wBAAyB,IAAAt0C,CAAG,CAAE,CAC3F,CC9DA,IAAIm+F,IAAsB,CAAW,EAAC,WAAa,cAAgB,UAAW,CAC5E,OAAO,IACT,EAAIC,ICMG,SAASC,IAAyB9a,EAA0B,CACxD,SAAA+a,EAAS,CAAE,SAAA1gG,GAAqC,CAErD,OAAAy2C,GAAA,KAACovC,IAAoB,CAAA,OAAQF,EAC3B,SAAA,CAAAjvC,GAAA,IAAC0pD,IAAmB,EAAA,EACnBpgG,CACH,CAAA,CAAA,CAEJ,CAEO,MAAA,CACL,SAAA0gG,EACA,eAAAhb,GACA,SAAA6B,IACA,YAAAC,IACA,eAAAxB,GACA,cAAA3F,EAAA,CAEJ,mWCnBO,IAAAsgB,GAAA,KAAQ,CACb,EACA,EACA,IACA,IAEA,YAAY3yJ,EAAoB,CAC9B,KAAK,EAAIukC,GAAavkC,GAAS,GAAK,EAAG,CAAC,EACxC,KAAK,EAAIukC,GAAavkC,GAAS,GAAK,EAAG,CAAC,EACxC,KAAK,IAAMukC,GAAavkC,GAAS,KAAO,EAAG,CAAC,EAC5C,KAAK,IAAMukC,GAAavkC,GAAS,KAAO,EAAG,CAAC,CAC9C,CAGO,eAAqC,CAC1C,MAAO,CAAC,CAAC,IAAK,KAAK,IAAK,KAAK,GAAG,CAAC,CACnC,CAGO,gBAAgByH,EAAsB,CAC3CA,EAAI,OAAO,KAAK,IAAK,KAAK,GAAG,CAC/B,CAEO,sBAAsB,EAAI,EAAG,CAC5B,MAAA6wB,EAAY/I,GAAM,KAAK,EAAG,KAAK,EAAG,KAAK,IAAK,KAAK,GAAG,EAC1D,GAAI+I,IAAc,EAAG,CACnB,MAAMC,EAAO,KAAK,IAAI,KAAK,EAAG,KAAK,GAAG,EAChCC,EAAO,KAAK,IAAI,KAAK,EAAG,KAAK,GAAG,EAChCC,EAAO,KAAK,IAAI,KAAK,EAAG,KAAK,GAAG,EAChCC,EAAO,KAAK,IAAI,KAAK,EAAG,KAAK,GAAG,EAC/B,MAAA,CACL,EAAGH,EACH,EAAGC,EACH,MAAOC,EAAOF,EACd,OAAQG,EAAOF,CAAA,CACjB,KACK,CACC,MAAAG,EAAM,KAAK,IAAIL,CAAS,EACxB1D,EAAM,KAAK,IAAI0D,CAAS,EACxBM,EAAMhE,EAAM,KAAK,EAAI+D,EAAM,KAAK,EAChCE,EAAMjE,EAAM,KAAK,IAAM+D,EAAM,KAAK,IAClCG,EAAMlE,EAAM,KAAK,EAAI+D,EAAM,KAAK,EAChCI,EAAMnE,EAAM,KAAK,IAAM+D,EAAM,KAAK,IACjC,MAAA,CACL,EAAG4L,GAAa,KAAK,IAAI3L,EAAKC,CAAG,EAAG,CAAC,EACrC,EAAG0L,GAAa,KAAK,IAAIzL,EAAKC,CAAG,EAAG,CAAC,EACrC,MAAOwL,GAAa,KAAK,IAAI3L,EAAKC,CAAG,EAAI,KAAK,IAAID,EAAKC,CAAG,EAAG,CAAC,EAC9D,OAAQ0L,GAAa,KAAK,IAAIzL,EAAKC,CAAG,EAAI,KAAK,IAAID,EAAKC,CAAG,EAAG,CAAC,CAAA,CAEnE,CACF,CAGO,YAAY73D,EAAqC,CAC/C,MAAA,CACL,EAAG,KAAK,EAAIA,GAAK,KAAK,IAAM,KAAK,GACjC,EAAG,KAAK,EAAIA,GAAK,KAAK,IAAM,KAAK,EAAA,CAErC,CAEO,aAAa83D,EAA0C,CAC5D,MAAMnhD,EAAK,KAAK,EACVnB,EAAK,KAAK,EACVwiB,EAAK8/B,EAAK,IACVrjC,EAAKqjC,EAAK,IACVC,EAAM,KAAK,IAAMphD,EACjBqhD,EAAMF,EAAK,EAAI9/B,EACjB,GAAA,CAAC+/B,GAAO,CAACC,EACJ,OAAA,KAEH,MAAA/iD,GAAM,KAAK,IAAMO,GAAMuiD,EACvBp9C,GAAMm9C,EAAK,EAAIrjC,GAAMujC,EAC3B,GAAKD,GAGL,GAAW,CAACC,EAEV,MAAO,CAAE,EAAGhgC,EAAI,EAAG/iB,GAAM+iB,EAAKrhB,GAAMnB,OAHpC,OAAO,CAAE,EAAGmB,EAAI,EAAGgE,GAAMhE,EAAKqhB,GAAMvD,GAKhC,MAAAwjC,GAAQ,CAACt9C,EAAKqd,EAAKvD,EAAKxf,EAAK0B,EAAKnB,IAAOP,EAAK0F,GAC9Cu9C,EAAOjjD,GAAMgjD,EAAOthD,GAAMnB,EAChC,OAAI,MAAMyiD,CAAI,GAAK,MAAMC,CAAI,EACpB,KAEF,CAAE,EAAGD,EAAM,EAAGC,CAAK,CAC5B,CACF,ECnFO,MAAMyI,WAAYxuC,EAAE,CAClB,GACA,GACA,YACA,aACA,UAEP,YAAY2M,EAAqB,CAC/B,MAAMA,CAAO,EACb,KAAK,GAAKukC,GAAavkC,EAAQ,GAAI,CAAC,EACpC,KAAK,GAAKukC,GAAavkC,EAAQ,GAAI,CAAC,EACpC,KAAK,YACH,OAAOA,GAAS,aAAe,SAAWA,GAAS,YAAc,EACnE,KAAK,aACH,OAAOA,GAAS,cAAgB,SAAWA,GAAS,aAAe,EACrE,KAAK,UACH,OAAOA,GAAS,WAAa,SAAWA,GAAS,UAAY,CACjE,CAGO,eAAqC,CACnC,MAAA,CACL,CACE,IACA,KAAK,GACL,KAAK,GACL,KAAK,YACL,KAAK,aACL,KAAK,UACL,KAAK,IACL,KAAK,GACP,CAAA,CAEJ,CAEO,gBAAgByH,EAA4B,CAC3C,KAAA,CAAC6xB,EAAIC,EAAIC,EAAIC,EAAIC,EAAaxE,EAAYC,CAAQ,EAAI,KAAK,QAC/D,KAAK,EACL,KAAK,EACL,KAAK,IACL,KAAK,IACL,KAAK,GACL,KAAK,GACL,KAAK,YACL,KAAK,aACL,KAAK,SAAA,EAEH1tB,EAAA,QACF6xB,EACAC,EACAC,EACAC,EACAC,EACAxE,EACAC,EACA,CAAC,KAAK,SAAA,CAIV,CAEQ,QACNt9C,EACAnB,EACAoH,EACA3B,EACAq9C,EACAC,EACAE,EACAj8C,EACA/I,EACA,CACM,MAAAqF,EAAK2/C,EAAM,IAAO,KAAK,GACvBC,GAAO/hD,EAAKiG,GAAM,EAClB+7C,GAAOnjD,EAAKyF,GAAM,EAElB29C,EAAO,KAAK,IAAI9/C,CAAC,EAAI4/C,EAAM,KAAK,IAAI5/C,CAAC,EAAI6/C,EACzCE,EAAO,CAAC,KAAK,IAAI//C,CAAC,EAAI4/C,EAAM,KAAK,IAAI5/C,CAAC,EAAI6/C,EAE1CG,EACHF,EAAOA,GAASN,EAAKA,GAAOO,EAAOA,GAASN,EAAKA,GACpD,GAAIO,EAAqB,EAAG,CAKpB,MAAAC,EAAO,KAAK,KAAKD,CAAkB,EACzC,MAAAR,EAAKS,EAAOT,EACZC,EAAKQ,EAAOR,EAEN,IAAI,MACR,2DAA2DD,CAAE,IAAIC,CAAE,GAAA,CAEvE,CAEA,MAAMS,EAAK,KAAK,MACbV,EAAKA,EAAKC,EAAKA,EAAKD,EAAKA,EAAKO,EAAOA,EAAON,EAAKA,EAAKK,EAAOA,IAC3DN,EAAKA,EAAKO,EAAOA,EAAON,EAAKA,EAAKK,EAAOA,EAAA,EAGxC12D,EAAIsa,GAAM/I,EAAK,EAAI,GACnBwlD,EAAQ/2D,EAAI82D,EAAKV,EAAKO,EAAQN,EAC9BW,EAAQh3D,EAAI82D,EAAK,CAACT,EAAKK,EAAQN,EAE/Ba,GAASxiD,EAAKiG,GAAM,EACpBw8C,GAAS5jD,EAAKyF,GAAM,EACpBm9C,EAAK,KAAK,IAAIt/C,CAAC,EAAImgD,EAAO,KAAK,IAAIngD,CAAC,EAAIogD,EAAOC,EAC/Cd,EAAK,KAAK,IAAIv/C,CAAC,EAAImgD,EAAO,KAAK,IAAIngD,CAAC,EAAIogD,EAAOE,EAE/CC,EAAc,CAACC,EAAYC,EAAYC,EAAYC,MACtDH,EAAKG,IAAMF,EAAKC,EAAK,EAAI,IAC1B,KAAK,MACFF,EAAKE,EAAKD,EAAKE,KACb,KAAK,KAAKH,EAAKA,EAAKC,EAAKA,CAAE,EAAI,KAAK,KAAKC,EAAKA,EAAKC,GAAKA,EAAE,EAAA,EAE3DC,EAAUL,EAAY,EAAG,EAAG1iD,EAAKyhD,EAAI5iD,EAAK6iD,CAAE,EAAIv/C,EAChD6gD,EAAcN,EAAY1iD,EAAKyhD,EAAI5iD,EAAK6iD,EAAIz7C,EAAKw7C,EAAIn9C,EAAKo9C,CAAE,EAE3D,MAAA,CAACD,EAAIC,EAAIC,EAAIC,EAAIz/C,EAAG4gD,EAASA,EAAUC,CAAW,CAC3D,CACF,CC1HO,MAAMmH,YAAwB3uC,EAAE,CAC9B,GACA,GACA,cAEP,YAAY2M,EAAiC,CAC3C,MAAMA,CAAO,EACb,KAAK,GAAKukC,GAAavkC,EAAQ,GAAI,CAAC,EACpC,KAAK,GAAKukC,GAAavkC,EAAQ,GAAI,CAAC,EACpC,KAAK,cACH,OAAOA,EAAQ,eAAiB,UAAYA,EAAQ,cAAgB,EACxE,CAIO,eAAqC,CAC1C,GAAI,KAAK,cAAe,CACtB,MAAM+6B,EAAM,KAAK,GAAK,GAAK,KAAK,EAAI,KAAK,KAAO,EAC1CC,EAAM,KAAK,GAAK,GAAK,KAAK,EAAI,KAAK,KAAO,EACzC,MAAA,CAAC,CAAC,IAAKD,EAAKC,EAAK,KAAK,IAAK,KAAK,GAAG,CAAC,CAAA,KAEpC,OAAA,CAAC,CAAC,IAAK,KAAK,GAAI,KAAK,GAAI,KAAK,IAAK,KAAK,GAAG,CAAC,CAEvD,CAEO,gBAAgBvzB,EAAsB,CAC3C,GAAI,KAAK,cAAe,CACtB,MAAMszB,EAAM,KAAK,GAAK,GAAK,KAAK,EAAI,KAAK,KAAO,EAC1CC,EAAM,KAAK,GAAK,GAAK,KAAK,EAAI,KAAK,KAAO,EAChDvzB,EAAI,iBAAiBszB,EAAKC,EAAK,KAAK,IAAK,KAAK,GAAG,CAAA,MAE7CvzB,EAAA,iBAAiB,KAAK,GAAI,KAAK,GAAI,KAAK,IAAK,KAAK,GAAG,CAE7D,CAEO,sBAAsB,EAAI,EAAG,CAClC,MAAMwzB,EAAO,CAAC,KAAK,EAAG,KAAK,GAAG,EACxBC,EAAO,CAAC,KAAK,EAAG,KAAK,GAAG,EAC1B,IAAAtzD,EAAG8Z,EAAG1W,EAAG9J,EACb,QAASoB,EAAI,EAAGA,EAAI,EAAG,EAAEA,EACvBsF,EACEtF,GAAK,EACD,KAAK,EAAI,EAAI,KAAK,GAAK,KAAK,IAC5B,KAAK,EAAI,EAAI,KAAK,GAAK,KAAK,IAClCof,EAAIpf,GAAK,EAAI,GAAK,KAAK,EAAI,EAAI,KAAK,GAAK,GAAK,KAAK,EAAI,EAAI,KAAK,GAChE0I,EAAI1I,GAAK,EAAI,KAAK,EAAI,KAAK,EACvB,KAAK,IAAIsF,CAAC,EAAI,QACZ1G,EAAA,CAACwgB,GAAK,EAAI9Z,GACV,EAAI1G,GAAKA,EAAI,GACd,CAAA+5D,EAAMC,CAAI,EAAE54D,CAAC,EAAE,KAAKsF,EAAI1G,EAAIA,EAAIwgB,EAAIxgB,EAAI8J,CAAC,GAIhD,MAAM0jD,EAAM,CAAE,EAAG,KAAK,IAAI,EAAG,GAAGuM,CAAI,EAAG,EAAG,KAAK,IAAI,EAAG,GAAGC,CAAI,CAAE,EACzD9Y,EAAM,CAAE,EAAG,KAAK,IAAI,EAAG,GAAG6Y,CAAI,EAAG,EAAG,KAAK,IAAI,EAAG,GAAGC,CAAI,CAAE,EACxD,MAAA,CACL,EAAGqJ,GAAa7V,EAAI,EAAG,CAAC,EACxB,EAAG6V,GAAa7V,EAAI,EAAG,CAAC,EACxB,MAAO6V,GAAaniB,EAAI,EAAIsM,EAAI,EAAG,CAAC,EACpC,OAAQ6V,GAAaniB,EAAI,EAAIsM,EAAI,EAAG,CAAC,CAAA,CAEzC,CAGO,YAAYxtD,EAAqC,CAC/C,MAAA,CACL,GACG,EAAIA,IAAM,EAAIA,GAAK,KAAK,EACzB,GAAK,EAAIA,GAAKA,EAAI,KAAK,GACvBA,EAAIA,EAAI,KAAK,IACf,GACG,EAAIA,IAAM,EAAIA,GAAK,KAAK,EACzB,GAAK,EAAIA,GAAKA,EAAI,KAAK,GACvBA,EAAIA,EAAI,KAAK,GAAA,CAEnB,CACF,CAEA,MAAA0xL,IAAe5wH,IC7ER,MAAM5G,WAAoB/nC,EAAE,CAC1B,IACA,IACA,IACA,IAEP,YAAY2M,EAA6B,CACvC,MAAMA,CAAO,EACb,KAAK,IAAMukC,GAAavkC,EAAQ,IAAK,CAAC,EACtC,KAAK,IAAMukC,GAAavkC,EAAQ,IAAK,CAAC,EACtC,KAAK,IAAMukC,GAAavkC,EAAQ,IAAK,CAAC,EACtC,KAAK,IAAMukC,GAAavkC,EAAQ,IAAK,CAAC,CACxC,CAEO,OAAqB,CAC1B,OAAO,IAAIo7B,GAAY,CACrB,EAAG,KAAK,EACR,EAAG,KAAK,EACR,IAAK,KAAK,IACV,IAAK,KAAK,IACV,IAAK,KAAK,IACV,IAAK,KAAK,IACV,IAAK,KAAK,IACV,IAAK,KAAK,GAAA,CACX,CACH,CAIO,eAAqC,CAC1C,MAAO,CAAC,CAAC,IAAK,KAAK,IAAK,KAAK,IAAK,KAAK,IAAK,KAAK,IAAK,KAAK,IAAK,KAAK,GAAG,CAAC,CAC3E,CAEO,gBAAgB3zB,EAAsB,CACvCA,EAAA,cACF,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GAAA,CAET,CAEO,sBAAsB,EAAI,EAAG,CA6ElC,IAAI7/B,EACF,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,GAAK,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,KACjE8Z,EAAI,GAAK,KAAK,IAAM,KAAK,GAAK,GAAK,KAAK,IAAM,KAAK,KACnD1W,EAAI,KAAK,EAAI,KAAK,IAClBqwD,GAAM,CAAC35C,EAAI,KAAK,KAAKA,EAAIA,EAAI,EAAI9Z,EAAIoD,CAAC,GAAK,EAAIpD,EAC/C0S,GAAM,CAACoH,EAAI,KAAK,KAAKA,EAAIA,EAAI,EAAI9Z,EAAIoD,CAAC,GAAK,EAAIpD,EACnD,MAAM0D,EAAI,CAAC,KAAK,EAAG,KAAK,GAAG,EACrBgX,EAAI,CAAC,KAAK,EAAG,KAAK,GAAG,EACvB,IAAAg5C,EACJ,MAAMC,EAAO,CAAA,EACb,KAAK,IAAIF,CAAE,EAAI,OAASA,EAAK,IAC7B,KAAK,IAAI/gD,CAAE,EAAI,OAASA,EAAK,IACzB+gD,GAAM,GAAKA,GAAM,IACbC,EAAA,KAAK,YAAYD,CAAE,EACvB/4C,EAAA,KAAKg5C,EAAI,CAAC,EACVhwD,EAAA,KAAKgwD,EAAI,CAAC,EACPC,EAAA,KAAK,CAAE,EAAGD,EAAI,EAAG,EAAGA,EAAI,EAAG,GAE9BhhD,GAAM,GAAKA,GAAM,IACbghD,EAAA,KAAK,YAAYhhD,CAAE,EACvBgI,EAAA,KAAKg5C,EAAI,CAAC,EACVhwD,EAAA,KAAKgwD,EAAI,CAAC,EACPC,EAAA,KAAK,CAAE,EAAGD,EAAI,EAAG,EAAGA,EAAI,EAAG,GAElC1zD,EAAI,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,GAAK,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,KACnE8Z,EAAA,GAAK,KAAK,IAAM,KAAK,GAAK,GAAK,KAAK,IAAM,KAAK,KAC/C1W,EAAA,KAAK,EAAI,KAAK,IACZqwD,GAAA,CAAC35C,EAAI,KAAK,KAAKA,EAAIA,EAAI,EAAI9Z,EAAIoD,CAAC,GAAK,EAAIpD,EACzC0S,GAAA,CAACoH,EAAI,KAAK,KAAKA,EAAIA,EAAI,EAAI9Z,EAAIoD,CAAC,GAAK,EAAIpD,EAC/C,KAAK,IAAIyzD,CAAE,EAAI,OAASA,EAAK,IAC7B,KAAK,IAAI/gD,CAAE,EAAI,OAASA,EAAK,IACzB+gD,GAAM,GAAKA,GAAM,IACbC,EAAA,KAAK,YAAYD,CAAE,EACvB/4C,EAAA,KAAKg5C,EAAI,CAAC,EACVhwD,EAAA,KAAKgwD,EAAI,CAAC,EACPC,EAAA,KAAK,CAAE,EAAGD,EAAI,EAAG,EAAGA,EAAI,EAAG,GAE9BhhD,GAAM,GAAKA,GAAM,IACbghD,EAAA,KAAK,YAAYhhD,CAAE,EACvBgI,EAAA,KAAKg5C,EAAI,CAAC,EACVhwD,EAAA,KAAKgwD,EAAI,CAAC,EACPC,EAAA,KAAK,CAAE,EAAGD,EAAI,EAAG,EAAGA,EAAI,EAAG,GAGlC,MAAME,EAAQ,CAAA,EACRvwD,EAAIswD,EAAK,OACf,QAASj5D,EAAI,EAAGA,EAAI2I,EAAG3I,IAAK,CAC1B,QAASkmB,EAAIlmB,EAAI,EAAGkmB,EAAIvd,EAAGud,IACrB+yC,EAAKj5D,CAAC,EAAE,IAAMi5D,EAAK/yC,CAAC,EAAE,GAAK+yC,EAAKj5D,CAAC,EAAE,IAAMi5D,EAAK/yC,CAAC,EAAE,IAAGA,EAAI,EAAElmB,GAEhEk5D,EAAM,KAAK,CAAE,EAAGD,EAAKj5D,CAAC,EAAE,EAAG,EAAGi5D,EAAKj5D,CAAC,EAAE,CAAG,CAAA,CAC3C,CACA,MAAMosD,EAAM,CAAE,EAAG,KAAK,IAAI,GAAGpsC,CAAC,EAAG,EAAG,KAAK,IAAI,GAAGhX,CAAC,CAAE,EAC7C82C,EAAM,CAAE,EAAG,KAAK,IAAI,GAAG9/B,CAAC,EAAG,EAAG,KAAK,IAAI,GAAGhX,CAAC,CAAE,EAC5C,MAAA,CACL,EAAGi5D,GAAa7V,EAAI,EAAG,CAAC,EACxB,EAAG6V,GAAa7V,EAAI,EAAG,CAAC,EACxB,MAAO6V,GAAaniB,EAAI,EAAIsM,EAAI,EAAG,CAAC,EACpC,OAAQ6V,GAAaniB,EAAI,EAAIsM,EAAI,EAAG,CAAC,EACrC,KAAM8M,CAAA,CAEV,CAEA,OAAO,MACLt6D,EACA0U,EACA8F,EACAwN,EACAqP,EACQ,CACR,MAAM8iC,EAAK,GAAKzlD,EAAK,EAAI8F,EAAK,EAAIwN,EAAK,EAAIqP,EACrCje,EAAKpZ,EAAIm6D,EAAK,EAAIzlD,EAAK,GAAK8F,EAAK,EAAIwN,EAC3C,OAAOhoB,EAAIoZ,EAAK,EAAI1E,EAAK,EAAI8F,CAC/B,CAOA,OAAO,OACL7D,EACAnB,EACAoH,EACA3B,EACAiO,EACAd,EACA4P,EACAvD,EACAxhB,EAAI,EACI,CACRA,EAAI,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAG,CAAC,CAAC,EAC9B,MAAMoK,EAAKpK,EAAI,EACTsnD,EAAU,CACd,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAC5D,OAAS,MAAQ,OAAS,KAAA,EAEtBC,EAAU,CACd,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChE,MAAQ,MAAQ,KAAA,EAElB,IAAIC,EAAM,EAEV,QAASr5D,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MAAM+B,EAAKka,EAAKk9C,EAAQn5D,CAAC,EAAIic,EACvBq9C,EAAQR,GAAY,MAAM/2D,EAAIwT,EAAIiG,EAAIsM,EAAI8O,CAAE,EAC5C2iC,EAAQT,GAAY,MAAM/2D,EAAIqS,EAAIyF,EAAImN,EAAIqM,CAAE,EAC3CgmC,GAAAD,EAAQp5D,CAAC,EAAI,KAAK,KAAKs5D,EAAQA,EAAQC,EAAQA,CAAK,CAC7D,CACA,OAAOt9C,EAAKo9C,CACd,CAGO,OAAOxnD,EAAI,EAAW,CAC3B,OAAOinD,GAAY,OACjB,KAAK,EACL,KAAK,EACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACLjnD,CAAA,CAEJ,CAGO,wBAAwBmpB,EAAgB,CACvC,MAAAp8B,EAAI,KAAK,UAAUo8B,CAAM,EACzB+9B,EAAK,EAAIn6D,EACb46D,EAAM,KAAK,IAAIT,EAAI,CAAC,EACpBU,EAAM,KAAK,IAAIV,EAAI,CAAC,EACpB/gD,EAAKpZ,EAAIA,EACTgnB,EAAK5N,EAAKpZ,EACVohB,EACEw5C,EAAM,KAAK,EACXC,EAAM,EAAI76D,EAAI,KAAK,IACnBm6D,EAAK,EAAIn6D,EAAIA,EAAI,KAAK,IACtBgnB,EAAK,KAAK,IACZ5c,EACEwwD,EAAM,KAAK,EACXC,EAAM,EAAI76D,EAAI,KAAK,IACnBm6D,EAAK,EAAIn6D,EAAIA,EAAI,KAAK,IACtBgnB,EAAK,KAAK,IACZ8zC,EACE,KAAK,EACL,EAAI96D,GAAK,KAAK,IAAM,KAAK,GACzBoZ,GAAM,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,GACvC2hD,EACE,KAAK,EACL,EAAI/6D,GAAK,KAAK,IAAM,KAAK,GACzBoZ,GAAM,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,GACvC4hD,EACE,KAAK,IACL,EAAIh7D,GAAK,KAAK,IAAM,KAAK,KACzBoZ,GAAM,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,KACvCtX,EACE,KAAK,IACL,EAAI9B,GAAK,KAAK,IAAM,KAAK,KACzBoZ,GAAM,KAAK,IAAM,EAAI,KAAK,IAAM,KAAK,KACvCm1C,EAAK4L,EAAK,KAAK,EAAIn6D,EAAI,KAAK,IAC5BwuD,EAAK2L,EAAK,KAAK,EAAIn6D,EAAI,KAAK,IAC5Bo4D,EAAK+B,EAAK,KAAK,IAAMn6D,EAAI,KAAK,IAC9Bq4D,EAAK8B,EAAK,KAAK,IAAMn6D,EAAI,KAAK,IAC9BmuD,EAAQ,GAAM,KAAK,MAAM2M,EAAKE,EAAID,EAAKj5D,CAAE,EAAI,IAAO,KAAK,GAEpD,MAAA,CACL,EAAAsf,EACA,EAAAhX,EACA,EAAG,CACD,EAAG0wD,EACH,EAAGC,CACL,EACA,EAAG,CACD,EAAGC,EACH,EAAGl5D,CACL,EACA,MAAO,CACL,EAAGysD,EACH,EAAGC,CACL,EACA,IAAK,CACH,EAAG4J,EACH,EAAGC,CACL,EACA,MAAAlK,CAAA,CAEJ,CAGO,UAAU/xB,EAAwB,CACvC,MAAMzlB,EAAK,KAAK,EACVnB,EAAK,KAAK,EACVoH,EAAK,KAAK,IACV3B,EAAK,KAAK,IACViO,EAAK,KAAK,IACVd,EAAK,KAAK,IACV4P,EAAK,KAAK,IACVvD,EAAK,KAAK,IAChB,GACE2H,EAAS,GACT89B,GAAY,OAAOvjD,EAAInB,EAAIoH,EAAI3B,EAAIiO,EAAId,EAAI4P,EAAIvD,CAAE,EAAI2H,EAE9C,MAAA,GAET,MAAMp8B,EAAI,EACV,IAAIinC,EAAOjnC,EAAI,EACXoZ,EAAKpZ,EAAIinC,EACTl9B,EAAImwD,GAAY,OAAOvjD,EAAInB,EAAIoH,EAAI3B,EAAIiO,EAAId,EAAI4P,EAAIvD,EAAIrb,CAAE,EAC7D,KAAO,KAAK,IAAIrP,EAAIqyB,CAAM,EAAI,KACpB6K,GAAA,EACD7tB,IAAArP,EAAIqyB,EAAS,EAAI,IAAM6K,EAC1Bl9B,EAAAmwD,GAAY,OAAOvjD,EAAInB,EAAIoH,EAAI3B,EAAIiO,EAAId,EAAI4P,EAAIvD,EAAIrb,CAAE,EAEpD,OAAAA,CACT,CAGO,YAAYpZ,EAAqC,CAC/C,MAAA,CACL,EACE,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAI,KAAK,EAC1B,EAAI,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAIA,EAAI,KAAK,IAClC,EAAI,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAI,KAAK,IAAIA,EAAG,CAAC,EAAI,KAAK,IAC/C,KAAK,IAAIA,EAAG,CAAC,EAAI,KAAK,IACxB,EACE,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAI,KAAK,EAC1B,EAAI,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAIA,EAAI,KAAK,IAClC,EAAI,KAAK,IAAI,EAAIA,EAAG,CAAC,EAAI,KAAK,IAAIA,EAAG,CAAC,EAAI,KAAK,IAC/C,KAAK,IAAIA,EAAG,CAAC,EAAI,KAAK,GAAA,CAE5B,CACF,CCvVO,MAAMqgE,EAAM,CAEV,UAAY,EACZ,UAAY,EAGX,qBAAuB,GACvB,kBAAoB,GACpB,4BAA8B,GAC9B,yBAA2B,GAC3B,qBAAuB,GAExB,gBAAiC,CAAA,EAIxC,YAAYrnD,EAAkC,CACtC,MAAAooB,EAAO,OAAOpoB,GAAK,SAAW4lD,GAAa5lD,CAAC,EAAIA,GAAK,GAErDunD,EAAQpB,GAAiBH,GAAkB59B,CAAI,CAAC,EACtD,QAAShgC,EAAI,EAAG+oD,EAAQoW,EAAM,OAAQn/D,EAAI+oD,EAAO/oD,IAAK,CAC9C,MAAA0xD,EAAOyN,EAAMn/D,CAAC,EACJ0xD,EAAK,CAAC,GACP,KACR,KAAA,UAAYA,EAAK,CAAC,EAClB,KAAA,UAAYA,EAAK,CAAC,GAElB,KAAA,YACH,IAAIoH,GAAY,CACd,EAAG,KAAK,UACR,EAAG,KAAK,UACR,IAAKpH,EAAK,CAAC,EACX,IAAKA,EAAK,CAAC,EACX,IAAKA,EAAK,CAAC,EACX,IAAKA,EAAK,CAAC,EACX,IAAKA,EAAK,CAAC,EACX,IAAKA,EAAK,CAAC,CAAA,CACZ,CAAA,CAGP,CACF,CAEQ,YAAYgF,EAAS,CAM3B,GALA,KAAK,qBAAuB,GAC5B,KAAK,kBAAoB,GACzB,KAAK,4BAA8B,GACnC,KAAK,yBAA2B,GAChC,KAAK,qBAAuB,GACxBA,aAAgB6I,GAAK,CACRrE,GACb,KAAK,UACL,KAAK,UACLxE,EAAK,IACLA,EAAK,IACLA,EAAK,aACLA,EAAK,UACLA,EAAK,GACLA,EAAK,GACLA,EAAK,WAAA,EAEA,QAAS0E,GAAU,CAClB,KAAA,CAACz4D,EAAIvB,EAAImU,EAAInB,EAAIoH,EAAI3B,EAAImG,EAAGhX,CAAC,EAAIoyD,EACvC,KAAK,gBAAgB,KACnB,IAAItC,GAAY,CACd,EAAG,KAAK,UACR,EAAG,KAAK,UACR,IAAKvjD,EACL,IAAKnB,EACL,IAAKoH,EACL,IAAK3B,EACL,IAAKmG,EACL,IAAKhX,CAAA,CACN,CAAA,EAEH,KAAK,UAAYgX,EACjB,KAAK,UAAYhX,CAAA,CAClB,EACD,MACF,CACA,GAAI0tD,aAAgBoC,GAAa,CAC/B,KAAK,gBAAgB,KAAKpC,EAAK,MAAO,CAAA,EACtC,KAAK,UAAYA,EAAK,IACtB,KAAK,UAAYA,EAAK,IACtB,MACF,CACA,IAAInhD,EAAInB,EAAIoH,EAAI3B,EAAI2lD,EAAKC,EACrB/I,aAAgBgJ,IAClB,CAACnqD,EAAInB,EAAIoH,EAAI3B,EAAI2lD,EAAKC,CAAG,EAAIhD,GAC3B,KAAK,UACL,KAAK,UACL/F,EAAK,GACLA,EAAK,GACLA,EAAK,IACLA,EAAK,GAAA,EAIP,CAACnhD,EAAInB,EAAIoH,EAAI3B,EAAI2lD,EAAKC,CAAG,EAAI/C,GAC3B,KAAK,UACL,KAAK,UACLhG,EAAK,IACLA,EAAK,GAAA,EAGT,KAAK,gBAAgB,KACnB,IAAIoC,GAAY,CACd,EAAG,KAAK,UACR,EAAG,KAAK,UACR,IAAKvjD,EACL,IAAKnB,EACL,IAAKoH,EACL,IAAK3B,EACL,IAAA2lD,EACA,IAAAC,CAAA,CACD,CAAA,EAEH,KAAK,UAAYD,EACjB,KAAK,UAAYC,CACnB,CAEA,OAAc,oBAAoBJ,EAAyB,CACnD,MAAAznD,EAAI,IAAIqnD,GACRlW,EAAQsW,EAAO,OACrB,GAAItW,EAAO,CACPnxC,EAAA,UAAYynD,EAAO,CAAC,EACpBznD,EAAA,UAAYynD,EAAO,CAAC,EACtB,QAAS/1D,EAAI,EAAGA,EAAI,EAAIy/C,EAAOz/C,GAAK,EAChCsO,EAAA,YACA,IAAIkhD,GAAY,CACd,EAAGlhD,EAAE,UACL,EAAGA,EAAE,UACL,IAAKynD,EAAO/1D,CAAC,EACb,IAAK+1D,EAAO/1D,EAAI,CAAC,EACjB,IAAK+1D,EAAO/1D,EAAI,CAAC,EACjB,IAAK+1D,EAAO/1D,EAAI,CAAC,EACjB,IAAK+1D,EAAO/1D,EAAI,CAAC,EACjB,IAAK+1D,EAAO/1D,EAAI,CAAC,CAAA,CAClB,CAAA,CAGP,CACO,OAAAsO,CACT,CAEA,OAAc,UAAU0nD,EAAmB,CACnC,MAAA1nD,EAAI,IAAIqnD,GACRlW,EAAQuW,EAAM,OACpB,GAAIvW,EAAO,CACPnxC,EAAA,UAAY0nD,EAAM,CAAC,EAAE,EACrB1nD,EAAA,UAAY0nD,EAAM,CAAC,EAAE,EACvB,QAASt/D,EAAI,EAAGA,EAAI+oD,EAAO/oD,IACvB4X,EAAA,YAAY0nD,EAAMt/D,CAAC,CAAC,CAE1B,CACO,OAAA4X,CACT,CAEO,OAAe,CACb,OAAAqnD,GAAM,UAAU,KAAK,eAAe,CAC7C,CAGQ,kBAAyC,CAAA,EAC1C,eAAqC,CAC1C,GAAI,KAAK,qBAAsB,CAC7B,MAAMj/B,EAA4B,CAAA,EACzB,QAAAhgC,EAAI,EAAG+oD,EAAQ,KAAK,gBAAgB,OAAQ/oD,EAAI+oD,EAAO/oD,IAAK,CAC7D,MAAA02D,EAAO,KAAK,gBAAgB12D,CAAC,EAC/BA,GAAK,GACPggC,EAAK,KAAK,CAAC,IAAK02B,EAAK,EAAGA,EAAK,CAAC,CAAC,EAEjC12B,EAAK,KAAK,GAAG02B,EAAK,cAAe,CAAA,CACnC,CAEA,KAAK,kBAAoB12B,EACzB,KAAK,qBAAuB,EAC9B,CACA,OAAO,KAAK,iBACd,CAGQ,eAAiB,GAClB,YAAqB,CAC1B,OAAI,KAAK,oBACP,KAAK,eAAiBu9B,GAAe,KAAK,cAAe,CAAA,EACzD,KAAK,kBAAoB,IAEpB,KAAK,cACd,CAGO,gBAAgBp4B,EAAsB,CAC3CA,EAAI,UAAU,EACL,QAAAnlC,EAAI,EAAG+oD,EAAQ,KAAK,gBAAgB,OAAQ/oD,EAAI+oD,EAAO/oD,IAAK,CAC7D,MAAA02D,EAAO,KAAK,gBAAgB12D,CAAC,EAC/BA,GAAK,GACPmlC,EAAI,OAAOuxB,EAAK,EAAGA,EAAK,CAAC,EAE3BA,EAAK,gBAAgBvxB,CAAG,CAC1B,CAEF,CAIQ,yBAA2B,CACjC,EAAG,EACH,EAAG,EACH,MAAO,EACP,OAAQ,CAAA,EAEH,sBAAsB6zB,EAAM,EAAG,CACpC,GAAI,KAAK,4BAA6B,CACpC,MAAM31D,EAAc,CAAA,EACdw4D,EAAc,CAAA,EAMpB,GALK,KAAA,gBAAgB,QAASlzD,GAAM,CAC5B,MAAAmqD,EAAOnqD,EAAE,sBAAsBqwD,CAAG,EACxC31D,EAAE,KAAKyvD,EAAK,EAAGA,EAAK,EAAIA,EAAK,KAAK,EAClC+I,EAAE,KAAK/I,EAAK,EAAGA,EAAK,EAAIA,EAAK,MAAM,CAAA,CACpC,EACGzvD,EAAE,QAAU,GAAKw4D,EAAE,QAAU,EAC1B,KAAA,yBAA2B,CAAE,EAAG,EAAG,EAAG,EAAG,MAAO,EAAG,OAAQ,CAAE,MAC7D,CACL,MAAMiE,EAAO,KAAK,IAAI,GAAGz8D,CAAC,EACpB08D,EAAO,KAAK,IAAI,GAAGlE,CAAC,EACpBmE,EAAO,KAAK,IAAI,GAAG38D,CAAC,EACpB48D,EAAO,KAAK,IAAI,GAAGpE,CAAC,EAC1B,KAAK,yBAA2B,CAC9B,EAAGoG,GAAanC,EAAM9G,CAAG,EACzB,EAAGiJ,GAAalC,EAAM/G,CAAG,EACzB,MAAOiJ,GAAajC,EAAOF,EAAM9G,CAAG,EACpC,OAAQiJ,GAAahC,EAAOF,EAAM/G,CAAG,CAAA,CAEzC,CACA,KAAK,4BAA8B,EACrC,CACA,OAAO,KAAK,wBACd,CAGO,4BAA4BA,EAAM,EAAG,CACpC,MAAAlG,EAAO,KAAK,sBAAsBkG,CAAG,EACpC,MAAA,CACL,EAAGiJ,GAAanP,EAAK,EAAIA,EAAK,MAAQ,GAAKkG,CAAG,EAC9C,EAAGiJ,GAAanP,EAAK,EAAIA,EAAK,OAAS,GAAKkG,CAAG,CAAA,CAEnD,CAGO,UAAUt7B,EASP,CACJ,IAAA50B,EAgBA,OAfA40B,EAAQ,EACV50B,EAAI40B,EAAQ,GAIZ50B,EAAI,IAAIo3D,GACRp3D,EAAE,UAAU40B,EAAQ,GAAK,EAAGA,EAAQ,GAAK,CAAC,EAC1C50B,EAAE,OAAO40B,EAAQ,QAAU,EAAGA,EAAQ,QAASA,EAAQ,OAAO,EAC5D50B,EAAA,MACA40B,EAAQ,QAAU,EAClBA,EAAQ,QAAU,EAClBA,EAAQ,QACRA,EAAQ,OAAA,GAGP50B,EAAE,WAmBE,KAAK,QAlBLm2D,GAAM,UACX,KAAK,gBAAgB,IAAKt2D,GAAM,CAC9B,IAAIqX,EAAIrX,EAAE,EACNK,EAAIL,EAAE,EACN8vD,EAAM9vD,EAAE,IACR+vD,EAAM/vD,EAAE,IACRw3D,EAAMx3D,EAAE,IACRy3D,EAAMz3D,EAAE,IACR62D,EAAM72D,EAAE,IACR82D,EAAM92D,EAAE,IACX,MAAA,CAAE,EAAAqX,EAAM,EAAAhX,GAASF,EAAE,eAAe,CAAE,EAAAkX,EAAM,EAAAhX,CAAA,CAAM,EAChD,CAAE,EAAGyvD,EAAK,EAAGC,CAAI,EAAI5vD,EAAE,eAAe,CAAE,EAAG2vD,EAAK,EAAGC,CAAK,CAAA,EACxD,CAAE,EAAGyH,EAAK,EAAGC,CAAI,EAAIt3D,EAAE,eAAe,CAAE,EAAGq3D,EAAK,EAAGC,CAAK,CAAA,EACxD,CAAE,EAAGZ,EAAK,EAAGC,CAAI,EAAI32D,EAAE,eAAe,CAAE,EAAG02D,EAAK,EAAGC,CAAK,CAAA,EAClD,IAAI3G,GAAY,CAAE,EAAA94C,EAAG,EAAAhX,EAAG,IAAAyvD,EAAK,IAAAC,EAAK,IAAAyH,EAAK,IAAAC,EAAK,IAAAZ,EAAK,IAAAC,CAAK,CAAA,CAAA,CAC9D,CAAA,CAMP,CAGQ,kBACD,gBAAyB,CAC9B,OACI,OAAO,KAAK,mBAAqB,UACnC,KAAK,wBAEL,KAAK,kBAAoB,KAAK,MAC5B,KAAK,gBAAgB,OAAO,CAACY,EAAK13D,IAAO03D,GAAO13D,EAAE,OAAO,EAAI,CAAC,CAAA,EAIhE,KAAK,qBAAuB,IAEvB,KAAK,iBACd,CAGO,iBAAiBqyB,EAItB,CACA,IAAIwkB,EAAM,EACN72C,EAAI,EACF,MAAA23D,EAAa,KAAK,gBAAgB,OACxC,QAAS,EAAI,EAAG,EAAIA,EAAY,IAAK,CAC7B,MAAA5oD,EAAI,KAAK,gBAAgB,CAAC,EAE5B,GADJ/O,EAAI+O,EAAE,SACF8nC,EAAM72C,GAAKqyB,EACN,OAAAtjB,EAAE,wBAAwBsjB,EAASwkB,CAAG,EAExCA,GAAA72C,CACT,CACA,OAAO,KAAK,gBAAgB23D,EAAa,CAAC,EAAE,wBAAwB33D,CAAC,CAGvE,CAGO,YAAY/J,EAAqC,CAChD,MAAA0hE,EAAa,KAAK,gBAAgB,OACxC,GAAIA,IAAe,EACjB,MAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EACtB,GAAWA,IAAe,EACxB,OAAO,KAAK,gBAAgB,CAAC,EAAE,YAAY1hE,CAAC,EACvC,CACL,IAAIqqD,EAAQrqD,EAAI0hE,EACZ5O,EAAO,KAAK,gBAAgB,CAAC,EAEjC,GADAzI,IACIA,EAAQ,EACV,QAAS,EAAI,EAAG,EAAIqX,IACX5O,EAAA,KAAK,gBAAgB,CAAC,EACzBzI,EAAQ,GAFkB,IAGnBA,GAAA,EAMR,OAAAyI,EAAK,YAAYzI,CAAK,CAC/B,CACF,CAEO,YACLsnI,EACAC,EACAC,EAAS,KACF,CACP,MAAM/4K,EAAI,KAAK,oBAAoB84K,EAAU,EAAI,EACjD,OAAIE,GAAwBD,CAAM,EAAEF,EAAY,CAAC,EACxC74K,EAEAA,EAAE,oBAAoB64K,EAAY,EAAK,CAElD,CAEQ,oBACNv1J,EACA21J,EAAW,GACJ,CACD,MAAAvvK,EAAK,IAAI69C,GACf,IAAIzf,EAAM,EACNoxI,EAAY,GACP,QAAA5wL,EAAI,EAAGwC,EAAK,KAAK,gBAAgB,OAAQxC,EAAIwC,EAAIxC,IAAK,CACvD,MAAA02D,EAAO,KAAK,gBAAgB12D,CAAC,EAC/BA,GAAK,IACPohB,EAAG,UAAYs1C,EAAK,EACpBt1C,EAAG,UAAYs1C,EAAK,GAEhB,MAAA,EAAIA,EAAK,SACf,GAAIlX,EAAM,EAAIxkB,GAAU,CAAC41J,EAAW,CAEtBA,EAAA,GACZ,MAAMpwH,EAAQ9J,EAAK,wBAAwB17B,EAASwkB,CAAG,EAavD,GAZGp+B,EAAA,YACD,IAAI03C,GAAY,CACd,EAAG13C,EAAG,UACN,EAAGA,EAAG,UACN,IAAKo/C,EAAM,MAAM,EACjB,IAAKA,EAAM,MAAM,EACjB,IAAKA,EAAM,EAAE,EACb,IAAKA,EAAM,EAAE,EACb,IAAKA,EAAM,EACX,IAAKA,EAAM,CAAA,CACZ,CAAA,EAECmwH,EACK,OAAAvvK,EAGTA,EAAG,gBAAkB,GAClBA,EAAA,YACD,IAAI03C,GAAY,CACd,EAAG13C,EAAG,UACN,EAAGA,EAAG,UACN,IAAKo/C,EAAM,EAAE,EACb,IAAKA,EAAM,EAAE,EACb,IAAKA,EAAM,IAAI,EACf,IAAKA,EAAM,IAAI,EACf,IAAK9J,EAAK,IACV,IAAKA,EAAK,GAAA,CACX,CAAA,EAEIlX,GAAA,EACP,QACF,CACAp+B,EAAG,YAAYs1C,CAAI,EACZlX,GAAA,CACT,CACO,OAAAp+B,CACT,CAEO,aACLq/C,EACAC,EAQA,CACM,MAAAC,EAAa,KAAK,iBACxB,IAAIC,EAAO,CAAE,EAAGH,EAAQ,EAAGC,CAAO,EAC9BG,EAAa,EACbC,EAAe,IACfC,EAAY,EAGhB,QACMC,EAAa,EACjBA,GAAcL,EACdK,GAAcD,EACd,CACM,MAAAE,EAAO,KAAK,iBAAiBD,CAAU,EACvCE,GACHT,EAASQ,EAAK,IAAMR,EAASQ,EAAK,IAClCP,EAASO,EAAK,IAAMP,EAASO,EAAK,GACjCC,EAAeJ,IACVF,EAAAK,EACMJ,EAAAG,EACEF,EAAAI,EAEnB,CAIA,IADaH,GAAA,EACNA,EAAY,IAAK,CACtB,MAAMK,EAAeP,EAAaE,EAC5BM,EAAS,KAAK,iBAAiBD,CAAY,EAC3CE,GACHb,EAASY,EAAO,IAAMZ,EAASY,EAAO,IACtCX,EAASW,EAAO,IAAMX,EAASW,EAAO,GACnCE,EAAcV,EAAaE,EAC3BS,EAAQ,KAAK,iBAAiBD,CAAW,EACzCE,GACHhB,EAASe,EAAM,IAAMf,EAASe,EAAM,IACpCd,EAASc,EAAM,IAAMd,EAASc,EAAM,GACnCJ,GAAgB,GAAKE,EAAiBR,GACjCF,EAAAS,EACMR,EAAAO,EACEN,EAAAQ,GACNC,GAAeZ,GAAcc,EAAgBX,GAC/CF,EAAAY,EACMX,EAAAU,EACET,EAAAW,GAEFV,GAAA,CAEjB,CAEA,MAAMrpD,EAAI,KAAK,iBACbmpD,GAAcA,IAAeF,EAAa,IAAO,GAAA,EAG5C,MAAA,CACL,MAAOC,EACP,SACEC,GAAcF,EACV1T,GAAMv1C,EAAE,EAAGA,EAAE,EAAGkpD,EAAK,EAAGA,EAAK,CAAC,EAC9B3T,GAAM2T,EAAK,EAAGA,EAAK,EAAGlpD,EAAE,EAAGA,EAAE,CAAC,EACpC,SAAU,KAAK,KAAKopD,CAAY,CAAA,CAEpC,CAGQ,sBAAkC,CAAA,EACnC,oBAA+B,CACpC,GAAI,KAAK,yBAA0B,CAC7B,GAAA,KAAK,gBAAgB,OAAQ,CACzB,MAAA+vH,EAAY,KAAK,gBAAgB,CAAC,EACxC,KAAK,sBAAwB,CAACA,EAAU,EAAGA,EAAU,CAAC,EAAE,OACtD,KAAK,gBAAgB,OACnB,CAACxwH,EAAK13D,IAAM03D,EAAI,OAAO,CAAC13D,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,GAAG,CAAC,EACjE,CAAC,CACH,CAAA,CAEJ,CACA,KAAK,yBAA2B,EAClC,CACO,MAAA,CAAC,GAAG,KAAK,qBAAqB,CACvC,CAEO,6BAAsC,CAC3C,IAAI+O,EAAI,EACF,MAAAgqD,EAAM,KAAK,qBACX/zD,EAAI+zD,EAAI,OACd,GAAI/zD,EAAG,CACD,IAAA6N,EAAKkmD,EAAI/zD,EAAI,CAAC,EACdkM,EAAK6nD,EAAI/zD,EAAI,CAAC,EAClB,QAAS3N,EAAI,EAAGA,EAAI2N,EAAG3N,GAAK,EACrB0X,GAAAypD,GAASO,EAAI1hE,CAAC,EAAG0hE,EAAI1hE,EAAI,CAAC,EAAGwb,EAAI3B,CAAE,EACxC2B,EAAKkmD,EAAI1hE,CAAC,EACL6Z,EAAA6nD,EAAI1hE,EAAI,CAAC,CAElB,CACO,OAAA,KAAK,MAAM0X,CAAC,CACrB,CAGO,wBAAwBo5K,EAA4B,CACzD,MAAMC,EAAWD,EAAU,OACrBlvH,EAAK,KAAK,qBACVC,EAAWD,EAAG,OACpB,GAAIC,EAAU,CACZ,MAAMxC,EAA8B,CAAA,EACpC,IAAI2xH,EAAiBD,EAAWlvH,EAChC,MAAM5Y,EAAQ,KAAK,KAAK8nI,EAAWlvH,CAAQ,EACpCxC,EAAA,KAAK,CAAC,IAAKuC,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAC,CAAC,EAC/B,IAAIt4D,EAAI,EACD,KAAAA,EAAI,GAAKu4D,EAAW,GAAG,CACtB,MAAApJ,EAAMmJ,EAAGt4D,GAAG,EACZovD,EAAMkJ,EAAGt4D,GAAG,EACZ62D,EAAMyB,EAAGt4D,GAAG,EACZ82D,EAAMwB,EAAGt4D,GAAG,EACZ0W,EAAI4hD,EAAGt4D,GAAG,EACVN,EAAI44D,EAAGt4D,GAAG,EACT+1D,EAAA,KAAK,CAAC,IAAK5G,EAAKC,EAAKyH,EAAKC,EAAKpgD,EAAGhX,CAAC,CAAC,EAC3C,IAAIJ,EAAI,EACD,KAAAA,EAAIqgD,GAAS+nI,EAAiB,GAC5B3xH,EAAA,KAAK,CAAC,IAAKr/C,EAAGhX,EAAGgX,EAAGhX,EAAGgX,EAAGhX,CAAC,CAAC,EACjBgoL,GAAA,EAClBpoL,GAEJ,CACO,OAAA,IAAIq2D,GAAMI,CAAM,CAAA,KAEhB,QAAAJ,GAAM,oBAAoB6xH,CAAS,CAE9C,CAGA,OAAc,gBACZ9uI,EACAkgB,EAGS,CACT,OAAQtjE,GAAc,CACd,MAAAkK,EAAI4nL,GAAwB,OAAO,OAAO,EAC5C,OAAA5nL,EAAElK,EAAG,CAAC,EACDojD,EAAK,QAEVl5C,EAAElK,EAAG,CAAC,EACDsjE,EAAM,QAERjD,GAAM,oBACXgyH,GAAMjvI,EAAK,mBAAmB,EAAGkgB,EAAM,mBAAmB,EAAGtjE,CAAC,EAAE,IAC7D+O,GAAMs0D,GAAat0D,EAAG,CAAC,CAC1B,CAAA,CACF,CAEJ,CACF,CC1mBA,MAAMqhD,GAAgBC,IACpB,+rEAyBA,EACF,EAEA,SAASA,IAA4BC,EAAqBC,EAAQ,GAAI,CACpE,MAAMC,EAAS,CAAA,EACTC,EAAQH,EAAY,MAAM,GAAG,EAEnC,QAASlvD,EAAI,EAAGA,EAAIqvD,EAAM,OAAQrvD,GAAK,EAAG,CACxC,MAAMsvD,EAAS,IAAMD,EAAMrvD,EAAI,CAAC,EAAI,IAC9BuvD,EAAS,SAASF,EAAMrvD,CAAC,EAAGmvD,CAAK,EAChCC,EAAAE,CAAM,EAAI,KAAOC,EAAS,GACnC,CAEA,OAAAH,EAAO,OAAO,EAAI,SACXA,CACT,CAEA,SAASI,GAAOxzB,EAAaoN,EAAuC,CAC5D,MAAA+J,EAAO,OAAO,KAAK/J,CAAI,EAC7B,QAASppC,EAAI,EAAGA,EAAImzC,EAAK,OAAQnzC,IAC/Bg8B,EAAMA,EAAI,QACR,IAAI,OAAO,IAAMmX,EAAKnzC,CAAC,EAAI,IAAK,IAAI,EACpC,GAAKopC,EAAK+J,EAAKnzC,CAAC,CAAC,CAAA,EAGd,OAAAg8B,CACT,CAEA,SAASyzB,GAAaC,EAA8B,CAClD,IAAIC,EAAc3vD,EAClB,GAAI,CAAC0vD,EACH,MAAM,IAAI,MACR,+DAAA,EAGJ,MAAME,EAAQ,sDACCD,EAAA,GACZ,EAED,KADeA,EAAA,GACV3vD,EAAI,EAAGA,EAAI,GAAIA,IACF2vD,GAAAC,EAAM,KAAK,MAAM,KAAK,SAAWA,EAAM,MAAM,CAAC,QAEzDF,EAAOC,CAAY,GACrB,OAAAA,CACT,CAGA,SAASE,IAAcC,EAAmB,CAExC,MAAMC,EAAU,CACd,KAAM,QACN,MAAO,MACP,OAAQ,SACR,MAAO,QACP,IAAK,KAAA,EAEA,OAAAA,EAAQD,CAAS,GAAKC,EAAQ,KACvC,CAGA,SAASC,IAAoBC,EAAsB,CAEjD,MAAMF,EAAU,CACd,WAAY,aACZ,QAAS,UACT,IAAK,mBACL,OAAQ,kBACR,OAAQ,SAAA,EAEH,OAAAA,EAAQE,CAAY,GAAKF,EAAQ,UAC1C,CAGA,MAAMG,GAQF,CACF,YAAa,CACX,QAAS,SACT,OAAQ,UACR,IAAK,OACL,MAAO,QACT,EACA,UAAW,CACT,QAAS,OACT,OAAQ,UACR,IAAK,KACL,MAAO,MACT,EACA,QAAS,CACP,QAAS,iBACT,OAAQ,OACR,IAAK,OACL,MAAO,QACT,EACA,SAAU,CACR,QAAS,kBACT,OAAQ,QACR,IAAK,QACL,MAAO,QACT,EACA,WAAY,CACV,QAAS,oBACT,OAAQ,GACR,IAAK,EACL,MAAO,QACT,EACA,UAAW,CACT,QAAS,eACT,OAAQ,EACR,IAAK,EACL,MAAO,QACT,EACA,YAAa,CACX,QAAS,UACT,OAAQ,EACR,IAAK,EACL,MAAO,aACT,EACA,KAAM,CAEJ,OAAQ,iBACV,EACA,YAAa,CACX,OAAQ,SACV,EACA,cAAe,CACb,OAAQ,CACV,EACA,cAAe,CACb,OAAQ,CACV,EACA,WAAY,CACV,OAAQ,CACV,EACA,UAAW,CACT,OAAQ,OACV,EACA,aAAc,CACZ,OAAQ,YACV,EACA,SAAU,CACR,QAAS,mBACT,OAAQ,CAAC,EACT,IAAK,KACL,MAAO,QACT,EACA,eAAgB,CACd,QAAS,oBACT,OAAQ,EACR,IAAK,EACL,MAAO,QACT,CACF,EAEO,MAAMe,EAAqB,CAChC,OACA,MACA,YAAYb,EAA0BjrB,EAA0B,CAC9D,KAAK,OAASirB,EACd,KAAK,MAAQjrB,CACf,CAKA,aAAasiB,EAAgB4I,EAAe,CAC1C,MAAMC,EAAO,KAAK,MAAM,gBAAgB,MAAM,EAE9C,GADKA,EAAA,aAAa,SAAU,GAAK7I,CAAM,EACnC4I,EAAM,QAAQ,MAAM,IAAM,GAAI,CAI1B,MAAAE,EADJ,kEACoB,KAAKF,CAAK,EAC5BE,IACGD,EAAA,aACH,aACAd,GAAO,mBAAoB,CACzB,EAAGe,EAAQ,CAAC,EACZ,EAAGA,EAAQ,CAAC,EACZ,EAAGA,EAAQ,CAAC,CAAA,CACb,CAAA,EAEHD,EAAK,aAAa,eAAgBC,EAAQ,CAAC,CAAC,EAC9C,MAEKD,EAAA,aAAa,aAAcD,CAAK,EAElC,KAAA,OAAO,YAAYC,CAAI,CAC9B,CACF,CAEO,MAAMU,EAAoB,CAC/B,OACA,MACA,YAAY7G,EAAqBhlB,EAA0B,CACzD,KAAK,OAASglB,EACd,KAAK,MAAQhlB,CACf,CACF,CAKO,MAAMurB,EAAoB,CAG/B,WAAuB,SACvB,SACA,MACA,MACA,OACA,aACA,aACA,UACA,MACA,UACA,iBACA,yBAGW,KAEX,YAAY,CACV,OAAA/S,EACA,MAAAmB,EAAQ,IACR,OAAAC,EAAS,GAAA,EAKR,CACGpB,GACF,KAAK,SAAWA,EACX,KAAA,MAAQA,EAAO,WAAW,IAAI,IAEnC,KAAK,SAAW,KAAK,WAAW,cAAc,QAAQ,EACtD,KAAK,MAAQ,KAAK,SAAS,WAAW,IAAI,GAGvC,KAAA,MAAQmB,GAASnB,GAAQ,OAAS,EAClC,KAAA,OAASoB,GAAUpB,GAAQ,QAAU,EAE1C,KAAK,mBAAmB,EACxB,KAAK,aAAe,CAAC,KAAK,gBAAiB,CAAA,EAC3C,KAAK,aAAe,GAEf,KAAA,UAAY,KAAK,WAAW,gBAC/B,6BACA,KAAA,EAEG,KAAA,UAAU,aAAa,UAAW,KAAK,EACvC,KAAA,UAAU,aAAa,QAAS,4BAA4B,EACjE,KAAK,UAAU,eACb,gCACA,cACA,8BAAA,EAEF,KAAK,UAAU,aAAa,QAAS,GAAK,KAAK,KAAK,EACpD,KAAK,UAAU,aAAa,SAAU,GAAK,KAAK,MAAM,EAGtD,KAAK,MAAQ,GAGR,KAAA,UAAY,KAAK,WAAW,gBAC/B,6BACA,MAAA,EAEG,KAAA,UAAU,YAAY,KAAK,SAAS,EAGpC,KAAA,iBAAmB,KAAK,WAAW,gBACtC,6BACA,GAAA,EAEG,KAAA,UAAU,YAAY,KAAK,gBAAgB,CAClD,CAKA,oBAAqB,CAEb,MAAAxK,EAAO,OAAO,KAAK+c,EAAM,EAC/B,QAASlwD,EAAI,EAAGg7B,EAASmY,EAAK,OAAQnzC,EAAIg7B,EAAQh7B,IAAK,CAC/C,MAAAyiC,EAAM0Q,EAAKnzC,CAAC,EAClB,KAAKyiC,CAAG,EAAIytB,GAAOztB,CAAG,EAAE,MAC1B,CACF,CAKA,iBAAkB,CAChB,MAAMkuB,EAAkC,CAAA,EAClCxd,EAAO,OAAO,KAAK+c,EAAM,EAC/B,QAASlwD,EAAI,EAAGg7B,EAASmY,EAAK,OAAQnzC,EAAIg7B,EAAQh7B,IAAK,CAC/C,MAAAyiC,EAAM0Q,EAAKnzC,CAAC,EACP2wD,EAAAluB,CAAG,EAAI,KAAKA,CAAG,CAC5B,CACO,OAAAkuB,CACT,CAKA,kBAAkBA,EAAiC,CAC3C,MAAAxd,EAAO,OAAO,KAAKwd,CAAU,EACnC,QAAS3wD,EAAI,EAAGg7B,EAASmY,EAAK,OAAQnzC,EAAIg7B,EAAQh7B,IAAK,CAC/C,MAAAyiC,EAAM0Q,EAAKnzC,CAAC,EACb,KAAAyiC,CAAG,EAAIkuB,EAAWluB,CAAG,CAC5B,CACF,CAKA,gBACEmuB,EACApsB,EAAkC,CAAA,EAClCqsB,EAAY,GACZ,CACM,MAAAvvB,EAAU,KAAK,WAAW,gBAC9B,6BACAsvB,CAAA,EAEIzd,EAAO,OAAO,KAAK3O,CAAU,EAC/BqsB,IAEMvvB,EAAA,aAAa,OAAQ,MAAM,EAC3BA,EAAA,aAAa,SAAU,MAAM,GAEvC,QAASthC,EAAI,EAAGA,EAAImzC,EAAK,OAAQnzC,IAAK,CAC9B,MAAAyiC,EAAM0Q,EAAKnzC,CAAC,EAClBshC,EAAQ,aAAamB,EAAK+B,EAAW/B,CAAG,CAAC,CAC3C,CACO,OAAAnB,CACT,CAKA,6BAA6B9D,EAAyB,CACpD,IAAIszB,EAAiB,KAAK,iBAC1B,MAAMC,EAAoB,KAAK,yBAC3BA,IACaD,EAAA,aAAatzB,EAAM,EAAE,EACpCszB,EAAiBC,EAAkB,QACjBA,EAAA,SAAS,QAAS7sB,GAAqB,CAClDA,EAAA,aAAa1G,EAAM,EAAE,CAAA,CAC3B,GAGG,MAAA2V,EAAO,OAAO,KAAK+c,EAAM,EAC/B,QAAS,EAAI,EAAG,EAAI/c,EAAK,OAAQ,IAAK,CACpC,MAAMhQ,EAAQ+sB,GAAO/c,EAAK,CAAC,CAAC,EACtB5Q,EAAQ,KAAK4Q,EAAK,CAAC,CAAC,EAC1B,GAAIhQ,EAAM,OACR,GAAIZ,aAAiByuB,GAAqB,CACxC,GAAIzuB,EAAM,MAER,KAAOA,EAAM,MAAM,UAAU,WAAW,QAAQ,CACxC,MAAA7jB,EACJ6jB,EAAM,MAAM,UAAU,WAAW,CAAC,EAClC,aAAa,IAAI,EACd,KAAA,MAAM7jB,CAAE,EAAIA,EACjB,KAAK,UAAU,YAAY6jB,EAAM,MAAM,UAAU,WAAW,CAAC,CAAC,CAChE,CAEauuB,EAAA,aACb3tB,EAAM,MACNqsB,GAAO,aAAc,CACnB,GAAIjtB,EAAM,OAAO,aAAa,IAAI,CAAA,CACnC,CAAA,CACH,SACSA,aAAiB0uB,GACXH,EAAA,aACb3tB,EAAM,MACNqsB,GAAO,aAAc,CACnB,GAAIjtB,EAAM,OAAO,aAAa,IAAI,CAAA,CACnC,CAAA,UAEMY,EAAM,MAAM,QAAQ3F,CAAI,IAAM,IAAM2F,EAAM,MAAQZ,EAExD,IAAAY,EAAM,UAAY,UAAYA,EAAM,UAAY,SACjDZ,EAAM,QAAQ,MAAM,IAAM,GAC1B,CAIM,MAAAguB,EADJ,kEACoB,KAAKhuB,CAAK,EAChC,GAAIguB,EAAS,CACIO,EAAA,aACb3tB,EAAM,QACNqsB,GAAO,mBAAoB,CACzB,EAAGe,EAAQ,CAAC,EACZ,EAAGA,EAAQ,CAAC,EACZ,EAAGA,EAAQ,CAAC,CAAA,CACb,CAAA,EAGH,IAAIW,EAAU,WAAWX,EAAQ,CAAC,CAAC,EACnC,MAAMY,EAAc,KAAK,YACrBA,GAAe,OACND,GAAAC,GAEEL,EAAA,aACb3tB,EAAM,QAAU,WAChB,GAAK+tB,CAAA,CAET,CAAA,KACK,CACL,IAAInsB,EAAO5B,EAAM,QACb,GAAAgQ,EAAK,CAAC,IAAM,gBACPpO,EAAAvH,EAAO,IAAM2F,EAAM,QACtB2tB,EAAe,aAAa/rB,CAAI,GAElC,SAIAA,GAAqB+rB,EAAA,aAAa/rB,EAAMxC,CAAK,CACnD,EAGN,CACF,CAKA,oBAAoB2B,EAAsC,CAExD,OADAA,EAAOA,GAAQ,KAAK,iBAChBA,EAAK,WAAa,KAAOA,EAAK,WAAa,MACtCA,EAEA,KAAK,oBAAoBA,EAAK,UAAmC,CAE5E,CAQA,iBAAiBktB,EAA2B,CAC1C,IAAIC,EAAa,IAAI,cAAA,EAAgB,kBAAkB,KAAK,SAAS,EAYrE,GARE,sFACQ,KAAKA,CAAU,IACvBA,EAAaA,EAAW,QACtB,oCACA,2CAAA,GAIAD,EAAkB,CACd,MAAAje,EAAO,OAAO,KAAK6b,EAAa,EAEtC,QAAS,EAAI,EAAGh0B,EAASmY,EAAK,OAAQ,EAAInY,EAAQ,IAAK,CAC/C,MAAAyH,EAAM0Q,EAAK,CAAC,EACZ5Q,EAAQysB,GAAcvsB,CAAG,EACzB6uB,EAAS,IAAI,OAAO7uB,EAAK,IAAI,EAC/B6uB,EAAO,KAAKD,CAAU,IACXA,EAAAA,EAAW,QAAQC,EAAQ/uB,CAAK,EAEjD,CACF,CAEO,OAAA8uB,CACT,CAKA,QAAS,CACP,OAAO,KAAK,SACd,CAKA,MAAO,CACC,MAAAE,EAAQ,KAAK,gBAAgB,GAAG,EAChC1oB,EAAS,KAAK,sBACf,KAAA,aAAa,KAAKA,CAAM,EAC7BA,EAAO,YAAY0oB,CAAK,EACxB,KAAK,iBAAmBA,EACxB,KAAK,aAAa,KAAK,KAAK,gBAAiB,CAAA,CAC/C,CAKA,SAAU,CACR,KAAK,yBAA2B,KAC1B,MAAAT,EAAiB,KAAK,aAAa,IAAI,EAExCA,EAIH,KAAK,iBAAmBA,EAHxB,KAAK,iBAAmB,KAAK,UAC1B,WAAW,CAAC,EAIX,MAAA/1B,EAAQ,KAAK,aAAa,IAAI,EAChCA,GACF,KAAK,kBAAkBA,CAAK,CAEhC,CAKA,eAAen8B,EAAW,CAElB,MAAAiqC,EAAS,KAAK,sBAChB,GAAAA,EAAO,WAAW,OAAS,EAAG,CAC5B,KAAK,iBAAiB,WAAa,SAChC,KAAK,2BACR,KAAK,yBAA2B,CAAE,QAASA,EAAQ,SAAU,CAAA,IAC/D,KAAK,yBAAyB,SAAS,KAAK,KAAK,gBAAgB,EACjE,KAAK,0BAA0B,GAE3B,MAAA0oB,EAAQ,KAAK,gBAAgB,GAAG,EACtC1oB,EAAO,YAAY0oB,CAAK,EACxB,KAAK,iBAAmBA,CAC1B,CAEA,IAAIC,EAAY,KAAK,iBAAiB,aAAa,WAAW,EAC1DA,EACWA,GAAA,IAEDA,EAAA,GAEDA,GAAA5yD,EACR,KAAA,iBAAiB,aAAa,YAAa4yD,CAAS,CAC3D,CAKA,MAAMxxC,EAAWhX,EAAY,CACvBA,IAAM,SACJA,EAAAgX,GAEN,KAAK,eAAewvC,GAAO,iBAAkB,CAAE,EAAAxvC,EAAM,EAAAhX,CAAM,CAAA,CAAC,CAC9D,CAKA,OAAOikD,EAAe,CACd,MAAAwE,EAAWxE,EAAQ,IAAO,KAAK,GAChC,KAAA,eACHuC,GAAO,4BAA6B,CAClC,MAAOiC,EACP,GAAI,EACJ,GAAI,CAAA,CACL,CAAA,CAEL,CAKA,UAAUzxC,EAAWhX,EAAW,CAC9B,KAAK,eAAewmD,GAAO,qBAAsB,CAAE,EAAAxvC,EAAM,EAAAhX,CAAM,CAAA,CAAC,CAClE,CAKA,UAAU1D,EAAW8Z,EAAW1W,EAAWkP,EAAWjZ,EAAWiK,EAAW,CACrE,KAAA,eACH4mD,GAAO,kCAAmC,CACxC,EAAAlqD,EACA,EAAA8Z,EACA,EAAA1W,EACA,EAAAkP,EACA,EAAAjZ,EACA,EAAAiK,CAAA,CACD,CAAA,CAEL,CAKA,WAAY,CAGV,KAAK,qBAAuB,GAC5B,KAAK,kBAAoB,GAEzB,MAAM8oD,EAAO,KAAK,gBAAgB,OAAQ,CAAA,EAAI,EAAI,EACnC,KAAK,sBACb,YAAYA,CAAI,EACvB,KAAK,iBAAmBA,CAC1B,CAKA,2BAA4B,CAC1B,MAAMZ,EAAiB,KAAK,iBACxBA,EAAe,WAAa,QACfA,EAAA,aAAa,IAAK,KAAK,oBAAoB,CAO9D,CAKA,iBAAiBa,EAAiB,CAChC,KAAK,sBAAwB,IAC7B,KAAK,sBAAwBA,CAC/B,CAMA,OAAO3xC,EAAWhX,EAAW,CACvB,KAAK,iBAAiB,WAAa,QACrC,KAAK,UAAU,EAIZ,KAAA,kBAAoB,CAAE,EAAAgX,EAAM,EAAAhX,CAAK,EACtC,KAAK,iBAAiBwmD,GAAO,YAAa,KAAK,iBAAiB,CAAC,CACnE,CAKA,WAAY,CACN,KAAK,sBACP,KAAK,iBAAiB,GAAG,CAE7B,CAKA,OAAOxvC,EAAWhX,EAAW,CACtB,KAAA,kBAAoB,CAAE,EAAAgX,EAAM,EAAAhX,CAAK,EAClC,KAAK,qBAAqB,QAAQ,GAAG,EAAI,GAC3C,KAAK,iBAAiBwmD,GAAO,YAAa,KAAK,iBAAiB,CAAC,EAEjE,KAAK,iBAAiBA,GAAO,YAAa,KAAK,iBAAiB,CAAC,CAErE,CAKA,cACEoC,EACAC,EACAC,EACAC,EACA/xC,EACAhX,EACA,CACK,KAAA,kBAAoB,CAAE,EAAAgX,EAAM,EAAAhX,CAAK,EACjC,KAAA,iBACHwmD,GAAO,wCAAyC,CAC9C,KAAAoC,EACA,KAAAC,EACA,KAAAC,EACA,KAAAC,EACA,EAAA/xC,EACA,EAAAhX,CAAA,CACD,CAAA,CAEL,CAKA,iBAAiBgpD,EAAaC,EAAajyC,EAAWhX,EAAW,CAC1D,KAAA,kBAAoB,CAAE,EAAAgX,EAAM,EAAAhX,CAAK,EACjC,KAAA,iBACHwmD,GAAO,wBAAyB,CAAE,IAAAwC,EAAU,IAAAC,EAAU,EAAAjyC,EAAM,EAAAhX,EAAM,CAAA,CAEtE,CAKA,UAAUkpD,EAA0B,CAClC,MAAM1S,EAAM,KAAK,KAAK0S,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,CAAC,EAC5D,MAAA,CAACA,EAAO,CAAC,EAAI1S,EAAK0S,EAAO,CAAC,EAAI1S,CAAG,CAC1C,CAOA,MAAMjqC,EAAYnB,EAAYoH,EAAY3B,EAAYs4C,EAAgB,CAEpE,MAAMxvD,EAAK,KAAK,mBAAqB,KAAK,kBAAkB,EACtDvB,EAAK,KAAK,mBAAqB,KAAK,kBAAkB,EAG5D,GAAI,OAAOuB,EAAM,KAAe,OAAOvB,EAAM,IAC3C,OAIF,GAAI+wD,EAAS,EACX,MAAM,IAAI,MACR,wCAA0CA,EAAS,gBAAA,EASlD,GAAAxvD,IAAO4S,GAAMnU,IAAOgT,GAAQmB,IAAOiG,GAAMpH,IAAOyF,GAAOs4C,IAAW,EAAG,CACnE,KAAA,OAAO58C,EAAInB,CAAE,EAClB,MACF,CAKM,MAAAg+C,EAAiB,KAAK,UAAU,CAACzvD,EAAK4S,EAAInU,EAAKgT,CAAE,CAAC,EAClDi+C,EAAiB,KAAK,UAAU,CAAC72C,EAAKjG,EAAIsE,EAAKzF,CAAE,CAAC,EAEtD,GAAAg+C,EAAe,CAAC,EAAIC,EAAe,CAAC,IACpCD,EAAe,CAAC,EAAIC,EAAe,CAAC,EACpC,CACK,KAAA,OAAO98C,EAAInB,CAAE,EAClB,MACF,CAQM,MAAAk+C,EACJF,EAAe,CAAC,EAAIC,EAAe,CAAC,EACpCD,EAAe,CAAC,EAAIC,EAAe,CAAC,EAChCzF,EAAQ,KAAK,KAAK,KAAK,IAAI0F,CAAG,CAAC,EAG/BC,EAAqB,KAAK,UAAU,CACxCH,EAAe,CAAC,EAAIC,EAAe,CAAC,EACpCD,EAAe,CAAC,EAAIC,EAAe,CAAC,CAAA,CACrC,EACKG,EAAgBL,EAAS,KAAK,IAAIvF,EAAQ,CAAC,EAC3C5sC,EAAIzK,EAAKi9C,EAAgBD,EAAmB,CAAC,EAC7CvpD,EAAIoL,EAAKo+C,EAAgBD,EAAmB,CAAC,EAI7CE,EAAgC,CACpC,CAACL,EAAe,CAAC,EACjBA,EAAe,CAAC,CAAA,EAGZM,EAA8B,CAACL,EAAe,CAAC,EAAG,CAACA,EAAe,CAAC,CAAC,EACpEM,EAAW,SAAUT,EAAkB,CAErClyC,MAAAA,EAAIkyC,EAAO,CAAC,EAElB,OADUA,EAAO,CAAC,GACT,EAEA,KAAK,KAAKlyC,CAAC,EAEX,CAAC,KAAK,KAAKA,CAAC,CACrB,EAEI4yC,EAAaD,EAASF,CAA6B,EACnDI,EAAWF,EAASD,CAA2B,EAGhD,KAAA,OACH1yC,EAAIyyC,EAA8B,CAAC,EAAIN,EACvCnpD,EAAIypD,EAA8B,CAAC,EAAIN,CAAA,EAKzC,KAAK,IAAInyC,EAAGhX,EAAGmpD,EAAQS,EAAYC,CAAQ,CAC7C,CAKA,QAAS,CACH,KAAK,iBAAiB,WAAa,QAChC,KAAA,iBAAiB,aAAa,cAAe,qBAAqB,EAEzE,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,QAAQ,CAC5C,CAKA,MAAO,CACD,KAAK,iBAAiB,WAAa,QAChC,KAAA,iBAAiB,aAAa,cAAe,qBAAqB,EAEzE,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,MAAM,CAC1C,CAKA,KAAK7yC,EAAWhX,EAAW81C,EAAeC,EAAgB,CACpD,KAAK,iBAAiB,WAAa,QACrC,KAAK,UAAU,EAEZ,KAAA,OAAO/+B,EAAGhX,CAAC,EACX,KAAA,OAAOgX,EAAI8+B,EAAO91C,CAAC,EACxB,KAAK,OAAOgX,EAAI8+B,EAAO91C,EAAI+1C,CAAM,EAC5B,KAAA,OAAO/+B,EAAGhX,EAAI+1C,CAAM,EACpB,KAAA,OAAO/+B,EAAGhX,CAAC,EAChB,KAAK,UAAU,CACjB,CAKA,SAASgX,EAAWhX,EAAW81C,EAAeC,EAAgB,CAC5D,MAAM+T,EAAO,KAAK,gBAChB,OACA,CACE,EAAA9yC,EACA,EAAAhX,EACA,MAAA81C,EACA,OAAAC,CACF,EACA,EAAA,EAEa,KAAK,sBACb,YAAY+T,CAAI,EACvB,KAAK,iBAAmBA,EACxB,KAAK,6BAA6B,MAAM,CAC1C,CAKA,WAAW9yC,EAAWhX,EAAW81C,EAAeC,EAAgB,CAC9D,MAAM+T,EAAO,KAAK,gBAChB,OACA,CACE,EAAA9yC,EACA,EAAAhX,EACA,MAAA81C,EACA,OAAAC,CACF,EACA,EAAA,EAEa,KAAK,sBACb,YAAY+T,CAAI,EACvB,KAAK,iBAAmBA,EACxB,KAAK,6BAA6B,QAAQ,CAC5C,CAOA,eAAgB,CAER,MAAAtB,EADU,KAAK,sBACK,aAAa,WAAW,EAC5CuB,EAAY,KAAK,UAAU,WAAW,CAAC,EACvCC,EAAaD,EAAU,WAC7B,QAAS,EAAIC,EAAW,OAAS,EAAG,GAAK,EAAG,IACtCA,EAAW,CAAC,GACJD,EAAA,YAAYC,EAAW,CAAC,CAAC,EAGvC,KAAK,iBAAmBD,EAExB,KAAK,aAAe,GAChBvB,GACF,KAAK,eAAeA,CAAS,CAEjC,CAKA,UAAUxxC,EAAWhX,EAAW81C,EAAeC,EAAgB,CAEzD,GAAA/+B,IAAM,GAAKhX,IAAM,GAAK81C,IAAU,KAAK,OAASC,IAAW,KAAK,OAAQ,CACxE,KAAK,cAAc,EACnB,MACF,CACM,MAAAlW,EAAS,KAAK,sBACdiqB,EAAO,KAAK,gBAChB,OACA,CACE,EAAA9yC,EACA,EAAAhX,EACA,MAAA81C,EACA,OAAAC,EACA,KAAM,SACR,EACA,EAAA,EAEFlW,EAAO,YAAYiqB,CAAI,CACzB,CAMA,qBAAqBv9C,EAAYnB,EAAYoH,EAAY3B,EAAY,CACnE,MAAMo5C,EAAO,KAAK,gBAChB,iBACA,CACE,GAAIxD,GAAa,KAAK,KAAK,EAC3B,GAAIl6C,EAAK,KACT,GAAIiG,EAAK,KACT,GAAIpH,EAAK,KACT,GAAIyF,EAAK,KACT,cAAe,gBACjB,EACA,EAAA,EAEG,YAAA,UAAU,YAAYo5C,CAAI,EACxB,IAAIhC,GAAqBgC,EAA+B,IAAI,CACrE,CAMA,qBACEtwD,EACAvB,EACAjB,EACAoV,EACAnB,EACA8+C,EACA,CACA,MAAMD,EAAO,KAAK,gBAChB,iBACA,CACE,GAAIxD,GAAa,KAAK,KAAK,EAC3B,GAAIl6C,EAAK,KACT,GAAInB,EAAK,KACT,EAAG8+C,EAAK,KACR,GAAIvwD,EAAK,KACT,GAAIvB,EAAK,KACT,cAAe,gBACjB,EACA,EAAA,EAEG,YAAA,UAAU,YAAY6xD,CAAI,EACxB,IAAIhC,GAAqBgC,EAA+B,IAAI,CACrE,CAKA,aAAc,CAGZ,MAAME,EADJ,kXACqB,KAAK,KAAK,IAAI,EAC/BnzB,EAAO,CACX,MAAOmzB,EAAS,CAAC,GAAK,SACtB,KAAMA,EAAS,CAAC,GAAK,OACrB,OAAQA,EAAS,CAAC,GAAK,aACvB,OAAQA,EAAS,CAAC,GAAK,SACvB,WAAYA,EAAS,CAAC,GAAK,SAC3B,KAAM,IAAA,EAIJ,OAAA,KAAK,kBAAoB,cAC3BnzB,EAAK,WAAa,aAIhB,KAAK,aACPA,EAAK,KAAO,KAAK,YAGZA,CACT,CAKA,eAAeozB,EAA+B9xB,EAAsB,CAClE,GAAI8xB,EAAK,KAAM,CACP,MAAA9tD,EAAI,KAAK,gBAAgB,GAAG,EAClC,OAAAA,EAAE,eAAe,+BAAgC,aAAc8tD,EAAK,IAAI,EACxE9tD,EAAE,YAAYg8B,CAAO,EACdh8B,CACT,CACO,OAAAg8B,CACT,CASA,YAAYwqB,EAAc9rC,EAAWhX,EAAW+lC,EAA2B,CACnE,MAAAqkB,EAAO,KAAK,cAChBvqB,EAAS,KAAK,oBACd,EAAAwqB,EAAc,KAAK,gBACjB,OACA,CACE,cAAeD,EAAK,OACpB,YAAaA,EAAK,KAClB,aAAcA,EAAK,MACnB,cAAeA,EAAK,OACpB,kBAAmBA,EAAK,WACxB,EAAApzC,EACA,EAAAhX,EACA,cAAe6mD,IAAc,KAAK,SAAS,EAC3C,oBAAqBG,IAAoB,KAAK,YAAY,CAC5D,EACA,EAAA,EAGJqD,EAAY,YAAY,KAAK,WAAW,eAAevH,CAAI,CAAC,EAC5D,KAAK,iBAAmBuH,EACxB,KAAK,6BAA6BtkB,CAAM,EACjClG,EAAA,YACL,KAAK,eAAeuqB,EAAMC,CAAqC,CAAA,CAEnE,CAQA,SAASvH,EAAc9rC,EAAWhX,EAAW,CAC3C,KAAK,YAAY8iD,EAAM9rC,EAAGhX,EAAG,MAAM,CACrC,CAQA,WAAW8iD,EAAc9rC,EAAWhX,EAAW,CAC7C,KAAK,YAAY8iD,EAAM9rC,EAAGhX,EAAG,QAAQ,CACvC,CAOA,YAAY8iD,EAAc,CACnB,YAAA,MAAM,KAAO,KAAK,KAChB,KAAK,MAAM,YAAYA,CAAI,CACpC,CAKA,IACE9rC,EACAhX,EACAmpD,EACAS,EACAC,EACAS,EACA,CAEA,GAAIV,IAAeC,EACjB,OAEWD,EAAAA,GAAc,EAAI,KAAK,IACzBC,EAAAA,GAAY,EAAI,KAAK,IAC5BD,IAAeC,IAGdA,GAAAA,EAAW,EAAI,KAAK,GAAK,MAASS,EAAmB,GAAK,KAC1D,EAAI,KAAK,KAEd,MAAMC,EAAOvzC,EAAImyC,EAAS,KAAK,IAAIU,CAAQ,EACzCW,EAAOxqD,EAAImpD,EAAS,KAAK,IAAIU,CAAQ,EACrCY,EAASzzC,EAAImyC,EAAS,KAAK,IAAIS,CAAU,EACzCc,EAAS1qD,EAAImpD,EAAS,KAAK,IAAIS,CAAU,EACzCe,EAAYL,EAAmB,EAAI,EACrC,IAAIM,EAAe,EACfC,EAAOhB,EAAWD,EAGlBiB,EAAO,IACTA,GAAQ,EAAI,KAAK,IAGfP,EACaM,EAAAC,EAAO,KAAK,GAAK,EAAI,EAErBD,EAAAC,EAAO,KAAK,GAAK,EAAI,EAGjC,KAAA,OAAOJ,EAAQC,CAAM,EACrB,KAAA,iBACHlE,GACE,uEACA,CACE,GAAI2C,EACJ,GAAIA,EACJ,cAAe,EACf,aAAAyB,EACA,UAAAD,EACA,KAAAJ,EACA,KAAAC,CACF,CACF,CAAA,EAGF,KAAK,kBAAoB,CAAE,EAAGD,EAAM,EAAGC,EACzC,CAKA,MAAO,CACL,MAAMjC,EAAQ,KAAK,oBAAA,EACjBuC,EAAW,KAAK,gBAAgB,UAAU,EAC1Cp1C,EAAK+wC,GAAa,KAAK,KAAK,EAC5BsE,EAAW,KAAK,gBAAgB,GAAG,EAErC,KAAK,0BAA0B,EACzBxC,EAAA,YAAY,KAAK,gBAAgB,EAC9BuC,EAAA,aAAa,KAAMp1C,CAAE,EACrBo1C,EAAA,YAAY,KAAK,gBAAgB,EAErC,KAAA,UAAU,YAAYA,CAAQ,EAGnCvC,EAAM,aAAa,YAAa/B,GAAO,aAAc,CAAE,GAAA9wC,CAAQ,CAAA,CAAC,EAIhE6yC,EAAM,YAAYwC,CAAQ,EAE1B,KAAK,iBAAmBA,CAC1B,CAOA,aAAa3qB,EAAa,CACxB,IAAIsU,EAAQtU,EAAK,CAAC,EAChByjB,EACAC,EACAkH,EACAC,EACApG,EAAK,EACLC,EAAK,EACLoG,EACAzjD,EACA0jD,EACAC,EACA7C,EACA8C,EACA1W,EACAj/B,EAEE,GAAA0qB,EAAK,SAAW,EAClByjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACX8qB,EAAKxW,EAAM,MACXjtC,EAAKitC,EAAM,OACNsW,EAAAE,EACAD,EAAAxjD,UACI24B,EAAK,SAAW,EACzByjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACX4qB,EAAK5qB,EAAK,CAAC,EACX6qB,EAAK7qB,EAAK,CAAC,EACX8qB,EAAKxW,EAAM,MACXjtC,EAAKitC,EAAM,eACFtU,EAAK,SAAW,EACzBykB,EAAKzkB,EAAK,CAAC,EACX0kB,EAAK1kB,EAAK,CAAC,EACX8qB,EAAK9qB,EAAK,CAAC,EACX34B,EAAK24B,EAAK,CAAC,EACXyjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACX4qB,EAAK5qB,EAAK,CAAC,EACX6qB,EAAK7qB,EAAK,CAAC,MAEX,OAAM,IAAI,MACR,oDAAsD,UAAU,MAAA,EAI9D,MAAAP,EAAS,KAAK,sBACG,KAAK,iBAC5B,MAAMyrB,EAAqB,aAAezH,EAAK,KAAOC,EAAK,IAC3D,GAAIpP,aAAiBgT,IAInB,GADAyD,EAAMzW,EAAM,OAAS,EAAA,UAAU,EAAI,EAC/ByW,EAAI,YAAcA,EAAI,WAAW,OAAS,EAAG,CAExC,IADAC,EAAAD,EAAI,WAAW,CAAC,EAChBC,EAAK,WAAW,QACrB11C,EAAM01C,EAAK,WAAW,CAAC,EAAiB,aAAa,IAAI,EACpD,KAAA,MAAM11C,CAAE,EAAIA,EACjB,KAAK,UAAU,YAAY01C,EAAK,WAAW,CAAC,CAAC,EAG/C,GADQ7C,EAAA4C,EAAI,WAAW,CAAC,EACpB5C,EAAO,CAEH,MAAAgD,EAAkBhD,EAAM,aAAa,WAAW,EAClD,IAAAiD,EACAD,EACFC,EAAqBD,EAAkB,IAAMD,EAExBE,EAAAF,EAEjB/C,EAAA,aAAa,YAAaiD,CAAkB,EAClD3rB,EAAO,YAAY0oB,CAAK,CAC1B,CACF,OACS7T,EAAM,WAAa,UAAYA,EAAM,WAAa,SAEhD2W,EAAA,KAAK,gBAAgB,OAAO,EAC9BA,EAAA,aAAa,QAASL,CAAE,EACxBK,EAAA,aAAa,SAAUJ,CAAE,EACzBI,EAAA,aAAa,sBAAuB,MAAM,GAE/CxG,GAAMC,GAAMoG,IAAOxW,EAAM,OAASjtC,IAAOitC,EAAM,UAExCC,EAAA,KAAK,WAAW,cAAc,QAAQ,EAC/CA,EAAO,MAAQqW,EACfrW,EAAO,OAASsW,EACAtW,EAAO,WAAW,IAAI,GAC7B,UAAUD,EAAOmQ,EAAIC,EAAIoG,EAAIzjD,EAAI,EAAG,EAAGujD,EAAIC,CAAE,EAC9CvW,EAAAC,GAED0W,EAAA,aAAa,YAAaC,CAAkB,EAC5CD,EAAA,eACP,+BACA,aACA3W,EAAM,WAAa,SACfA,EAAM,YACNA,EAAM,aAAa,KAAK,CAAA,EAE9B7U,EAAO,YAAYwrB,CAAQ,EAE/B,CAKA,cACE3W,EACA+W,EACA,CACM,MAAAtK,EAAU,KAAK,WAAW,gBAC5B,6BACA,SAEF,EAAAzrC,EAAK+wC,GAAa,KAAK,KAAK,EAC1B,IAAA1M,EACI,OAAAoH,EAAA,aAAa,KAAMzrC,CAAE,EAEzBg/B,EAAM,WAAa,UAAYA,EAAM,WAAa,OACpDqF,EAAM,KAAK,WAAW,gBACpB,6BACA,OAAA,EAEEA,EAAA,aACF,QACA,GAAMrF,EAA+C,KAAA,EAEnDqF,EAAA,aACF,SACA,GAAMrF,EAA+C,MAAA,EAEnDqF,EAAA,eACF,+BACA,aACArF,EAAM,WAAa,SACdA,EAA4B,YAC7BA,EAAM,aAAa,KAAK,CAAA,EAE9ByM,EAAQ,YAAYpH,CAAG,EAClB,KAAA,UAAU,YAAYoH,CAAO,GACzBzM,aAAiBgT,KAC1BvG,EAAQ,aAAa,QAAS,GAAMzM,EAA8B,KAAK,EAC/DyM,EAAA,aACN,SACA,GAAMzM,EAA8B,MAAA,EAEtCyM,EAAQ,YAAYzM,EAAM,UAAU,WAAW,CAAC,CAAC,EAC5C,KAAA,UAAU,YAAYyM,CAAO,GAE7B,IAAI6G,GAAoB7G,EAAkC,IAAI,CACvE,CAEA,YAAYuK,EAAqB,CAC3BA,GAAaA,EAAU,OAAS,EAC7B,KAAA,SAAWA,EAAU,KAAK,GAAG,EAElC,KAAK,SAAW,IAEpB,CAEA,eAAgB,CAEhB,CACA,iBAAkB,CAElB,CACA,cAAe,CAEf,CACA,cAAe,CAEf,CACA,0BAA2B,CAE3B,CACA,cAAe,CAEf,CACF,CClzCO,MAAM4U,EAAgB,CAC3B,OAEA,QAMA,cAGA,aAAe,GACf,cAAwB,IAAI,OAC5B,QAAoB,CAAA,EAGpB,cAA2B,IAAI,UAK/B,wBAA0B,GAC1B,sBAAwB,GAExB,YACE3rB,EACAmB,EACAC,EACA6V,EAAsB,GACtBs8H,EAAe,GACf,CACA,KAAK,OAASvzI,EACT,KAAA,QAAUA,EAAO,WAAW,KAAM,CACrC,mBAAoB,EAAA,CACrB,EACGiX,IACG,KAAA,cAAgB,IAAIlE,GAAoB,CAC3C,OAAQ,KAAK,OACb,MAAO5R,GAAS,KAAK,OAAO,MAC5B,OAAQC,GAAU,KAAK,OAAO,MAAA,CAC/B,GAEH,KAAK,aAAe,OAAOmyI,GAAgB,UAAYA,EAAe,EACxE,CAEA,IAAI,UAAUr8H,EAAmB,CAC/B,KAAK,wBAA0B,GAC/B,KAAK,QAAQ,UAAYA,EACrB,KAAK,gBAAe,KAAK,cAAc,UAAYA,EACzD,CAEA,IAAI,WAAoB,CACtB,OAAO,KAAK,QAAQ,SACtB,CAEA,IAAI,QAAQC,EAAwB,CAClC,KAAK,wBAA0B,GAC/B,KAAK,QAAQ,QAAUA,EACnB,KAAK,gBAAe,KAAK,cAAc,QAAUA,EACvD,CAEA,IAAI,SAAyB,CAC3B,OAAO,KAAK,QAAQ,OACtB,CAEA,IAAI,SAASC,EAA0B,CACrC,KAAK,wBAA0B,GAC/B,KAAK,QAAQ,SAAWA,EACpB,KAAK,gBAAe,KAAK,cAAc,QAAUA,EACvD,CAEA,IAAI,UAA2B,CAC7B,OAAO,KAAK,QAAQ,QACtB,CAEA,IAAI,eAAeC,EAAwB,CACzC,KAAK,wBAA0B,GAC/B,KAAK,QAAQ,eAAiBA,EAC1B,KAAK,gBAAe,KAAK,cAAc,eAAiBA,EAC9D,CAEA,IAAI,gBAAyB,CAC3B,OAAO,KAAK,QAAQ,cACtB,CAEA,IAAI,WAAWC,EAAoB,CACjC,KAAK,wBAA0B,GAC/B,KAAK,QAAQ,WAAaA,EACtB,KAAK,gBAAe,KAAK,cAAc,WAAaA,EAC1D,CAEA,IAAI,YAAqB,CACvB,OAAO,KAAK,QAAQ,UACtB,CAEA,IAAI,YAAYlI,EAAe,CAC7B,KAAK,QAAQ,YAAcA,EACvB,KAAK,gBAAe,KAAK,cAAc,YAAcA,EAC3D,CAEA,IAAI,aAAsB,CACxB,OAAO,KAAK,QAAQ,WACtB,CAKA,IAAI,UACF5pB,EAKA,CACA,KAAK,sBAAwB,GAE3B,OAAOA,GAAS,UAChBA,aAAiB,gBACjBA,aAAiB,eAEjB,KAAK,QAAQ,UAAYA,EACrB,KAAK,gBAAe,KAAK,cAAc,UAAYA,KAElD,KAAA,QAAQ,UAAYA,EAAM,SAC3B,KAAK,gBACF,KAAA,cAAc,UAAYA,EAAM,gBAE3C,CAEA,IAAI,WAAqD,CACvD,OAAO,KAAK,QAAQ,SACtB,CAEA,IAAI,YACFA,EAKA,CACA,KAAK,wBAA0B,GAE7B,OAAOA,GAAS,UAChBA,aAAiB,gBACjBA,aAAiB,eAEjB,KAAK,QAAQ,YAAcA,EACvB,KAAK,gBAAe,KAAK,cAAc,YAAcA,KAEpD,KAAA,QAAQ,YAAcA,EAAM,SAC7B,KAAK,gBACF,KAAA,cAAc,YAAcA,EAAM,gBAE7C,CAEA,IAAI,aAAuD,CACzD,OAAO,KAAK,QAAQ,WACtB,CAGA,IAAI,KAAKiwB,EAAc,CACrB,KAAK,QAAQ,KAAOA,EAChB,KAAK,gBAAe,KAAK,cAAc,KAAOA,EACpD,CAEA,IAAI,MAAe,CACjB,OAAO,KAAK,QAAQ,IACtB,CAEA,IAAI,aAAanD,EAAkC,CACjD,KAAK,QAAQ,aAAeA,EACxB,KAAK,gBAAe,KAAK,cAAc,aAAeA,EAC5D,CAEA,IAAI,cAAmC,CACrC,OAAO,KAAK,QAAQ,YACtB,CAEA,IAAI,UAAUH,EAA4B,CACxC,KAAK,QAAQ,UAAYA,EACrB,KAAK,gBAAe,KAAK,cAAc,UAAYA,EACzD,CAEA,IAAI,WAA6B,CAC/B,OAAO,KAAK,QAAQ,SACtB,CAEA,KAAK4B,EAAe,CAClB,OAAIA,EACG,KAAA,QAAQ,KAAKA,CAAI,GAGtB,KAAK,QAAQ,OACT,KAAK,eAAe,KAAK,cAAc,QAEtC,IACT,CAEA,SAAS1xC,EAAWhX,EAAWO,EAAWV,EAAW,CACnD,YAAK,QAAQ,SAASmX,EAAGhX,EAAGO,EAAGV,CAAC,EAC5B,KAAK,eAAe,KAAK,cAAc,SAASmX,EAAGhX,EAAGO,EAAGV,CAAC,EACvD,IACT,CAEA,SAASijD,EAAc9rC,EAAWhX,EAAWksD,EAA+B,CAC1E,YAAK,sBAAwB,GAC7B,KAAK,QAAQ,SAASpJ,EAAM9rC,EAAGhX,EAAGksD,CAAQ,EACtC,KAAK,eAAe,KAAK,cAAc,SAASpJ,EAAM9rC,EAAGhX,CAAC,EACvD,IACT,CAEA,YAAY0rD,EAAqB,CAC1B,YAAA,QAAQ,YAAYA,CAAS,EAC9B,KAAK,eAAoB,KAAA,cAAc,YAAYA,CAAS,EACzD,IACT,CAEA,OAAOhD,EAAe,CACpB,OAAIA,EACG,KAAA,QAAQ,OAAOA,CAAI,GAGxB,KAAK,QAAQ,SACT,KAAK,eAAe,KAAK,cAAc,UAEtC,IACT,CAEA,WACE5F,EACA9rC,EACAhX,EACAksD,EACA,CACA,YAAK,QAAQ,WAAWpJ,EAAM9rC,EAAGhX,EAAGksD,CAAQ,EACxC,KAAK,eAAe,KAAK,cAAc,WAAWpJ,EAAM9rC,EAAGhX,CAAC,EACzD,IACT,CAEA,WAAWgX,EAAWhX,EAAWO,EAAWV,EAAW,CACrD,YAAK,QAAQ,WAAWmX,EAAGhX,EAAGO,EAAGV,CAAC,EAC9B,KAAK,eAAe,KAAK,cAAc,WAAWmX,EAAGhX,EAAGO,EAAGV,CAAC,EACzD,IACT,CAEA,YAAYijD,EAA2B,CAC9B,OAAA,KAAK,QAAQ,YAAYA,CAAI,CAEtC,CAEA,UAAU9rC,EAAI,EAAGhX,EAAI,EAAGO,EAAI,KAAK,OAAO,MAAOV,EAAI,KAAK,OAAO,OAAQ,CACrE,YAAK,QAAQ,UAAUmX,EAAGhX,EAAGO,EAAGV,CAAC,EAC7B,KAAK,eAAe,KAAK,cAAc,UAAUmX,EAAGhX,EAAGO,EAAGV,CAAC,EACxD,IACT,CAEA,MAAO,CACL,YAAK,QAAQ,OACT,KAAK,eACP,KAAK,cAAc,OAEhB,KAAA,cAAgB,IAAI,UACrB,KAAK,eACF,KAAA,QAAQ,KAAK,KAAK,aAAa,EAC/B,KAAA,cAAgB,IAAI,QAEpB,IACT,CAEA,SAAU,CACR,YAAK,QAAQ,UACT,KAAK,eACP,KAAK,cAAc,UAErB,KAAK,wBAA0B,GAC/B,KAAK,sBAAwB,GACxB,KAAA,cAAgB,IAAI,UACrB,KAAK,eACP,KAAK,cAAgB,KAAK,QAAQ,IAAI,GAAK,IAAI,QAE1C,IACT,CAEA,WAAY,CACV,YAAK,QAAQ,YACT,KAAK,eAAe,KAAK,cAAc,YACpC,IACT,CAEA,WAAY,CACV,YAAK,QAAQ,YACT,KAAK,eAAe,KAAK,cAAc,YACvC,KAAK,cACP,KAAK,cAAc,YAEd,IACT,CAEA,aAAa6oD,EAAO,KAAK,cAAeF,EAAY,KAAK,cAAe,CACtE,GAAI,KAAK,aAAc,CACf,MAAA2D,EAAU,IAAI,OACZA,EAAA,QAAQzD,EAAMF,CAAS,EAC/B,KAAK,cAAgB2D,CACvB,CACF,CAIA,mBAAmB/rB,EAAsB,CACnC,OAAAA,EAAK,CAAC,YAAa,OACd,KAAK,QAAQ,gBAAgBA,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAExD,KAAK,QAAQ,gBAAgBA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CAEtD,CAIA,iBAAiBA,EAAsB,CACjC,OAAAA,EAAK,CAAC,YAAa,OACd,KAAK,QAAQ,cAAcA,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAEtD,KAAK,QAAQ,cAAcA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CAEpD,CAQA,UAAUppB,EAAWhX,EAAW,CACzB,YAAA,QAAQ,UAAUgX,EAAGhX,CAAC,EACvB,KAAK,eACF,KAAA,cAAc,UAAUgX,EAAGhX,CAAC,EAEnC,KAAK,cAAgB,KAAK,cAAc,UAAUgX,EAAGhX,CAAC,EACtD,KAAK,aAAa,EACX,IACT,CAEA,OAAOosD,EAAgBC,EAAU,EAAGC,EAAU,EAAG,CAE1C,YAAA,UAAUD,EAASC,CAAO,EAC1B,KAAA,QAAQ,OAAOF,CAAM,EACtB,KAAK,eACF,KAAA,cAAc,OAAOA,CAAM,EAElC,KAAK,cAAgB,KAAK,cAAc,OAAOA,CAAM,EACrD,KAAK,UAAU,CAACC,EAAS,CAACC,CAAO,EACjC,KAAK,aAAa,EACX,IACT,CAEA,MAAMt1C,EAAWhX,EAAIgX,EAAGq1C,EAAU,EAAGC,EAAU,EAAG,CAE3C,YAAA,UAAUD,EAASC,CAAO,EAC1B,KAAA,QAAQ,MAAMt1C,EAAGhX,CAAC,EACnB,KAAK,eACF,KAAA,cAAc,MAAMgX,EAAGhX,CAAC,EAE/B,KAAK,cAAgB,KAAK,cAAc,MAAMgX,EAAGhX,CAAC,EAClD,KAAK,UAAU,CAACqsD,EAAS,CAACC,CAAO,EACjC,KAAK,aAAa,EACX,IACT,CAEA,OAAOt1C,EAAWhX,EAAW,CACtB,YAAA,QAAQ,OAAOgX,EAAGhX,CAAC,EACpB,KAAK,eAAoB,KAAA,cAAc,OAAOgX,EAAGhX,CAAC,EAClD,KAAK,cACF,KAAA,cAAc,OAAOgX,EAAGhX,CAAC,EAEzB,IACT,CAEA,OAAOgX,EAAWhX,EAAW,CACtB,YAAA,QAAQ,OAAOgX,EAAGhX,CAAC,EACpB,KAAK,eAAoB,KAAA,cAAc,OAAOgX,EAAGhX,CAAC,EAClD,KAAK,cACF,KAAA,cAAc,OAAOgX,EAAGhX,CAAC,EAEzB,IACT,CAEA,IACEgX,EACAhX,EACAmpD,EACAS,EACAC,EACAS,EACA,CACA,YAAK,QAAQ,IAAItzC,EAAGhX,EAAGmpD,EAAQS,EAAYC,EAAUS,CAAgB,EACjE,KAAK,eACP,KAAK,cAAc,IACjBtzC,EACAhX,EACAmpD,EACAS,EACAC,EACAS,EAAmB,GAAK,CAAA,EAExB,KAAK,cACP,KAAK,cAAc,IACjBtzC,EACAhX,EACAmpD,EACAS,EACAC,EACAS,CAAA,EAGG,IACT,CAEA,MAAM/9C,EAAYnB,EAAYoH,EAAY3B,EAAYs4C,EAAgB,CACpE,YAAK,QAAQ,MAAM58C,EAAInB,EAAIoH,EAAI3B,EAAIs4C,CAAM,EACrC,KAAK,eAAe,KAAK,cAAc,MAAM58C,EAAInB,EAAIoH,EAAI3B,EAAIs4C,CAAM,EACnE,KAAK,cACP,KAAK,cAAc,MAAM58C,EAAInB,EAAIoH,EAAI3B,EAAIs4C,CAAM,EAE1C,IACT,CAEA,QACEnyC,EACAhX,EACAusD,EACAC,EACAC,EACA7C,EACAC,EACAS,EACA,CACA,YAAK,QAAQ,QACXtzC,EACAhX,EACAusD,EACAC,EACAC,EACA7C,EACAC,EACAS,CAAA,EAGE,KAAK,cACP,KAAK,cAAc,QACjBtzC,EACAhX,EACAusD,EACAC,EACAC,EACA7C,EACAC,EACAS,CAAA,EAGG,IACT,CAEA,iBAAiBtB,EAAaC,EAAajyC,EAAWhX,EAAW,CAC/D,YAAK,QAAQ,iBAAiBgpD,EAAKC,EAAKjyC,EAAGhX,CAAC,EACxC,KAAK,eAAe,KAAK,cAAc,iBAAiBgpD,EAAKC,EAAKjyC,EAAGhX,CAAC,EACtE,KAAK,cACP,KAAK,cAAc,iBAAiBgpD,EAAKC,EAAKjyC,EAAGhX,CAAC,EAE7C,IACT,CAEA,cACE4oD,EACAC,EACAC,EACAC,EACA/xC,EACAhX,EACA,CACA,YAAK,QAAQ,cAAc4oD,EAAMC,EAAMC,EAAMC,EAAM/xC,EAAGhX,CAAC,EACnD,KAAK,eACP,KAAK,cAAc,cAAc4oD,EAAMC,EAAMC,EAAMC,EAAM/xC,EAAGhX,CAAC,EAC3D,KAAK,cACP,KAAK,cAAc,cAAc4oD,EAAMC,EAAMC,EAAMC,EAAM/xC,EAAGhX,CAAC,EAExD,IACT,CAEA,KAAKgX,EAAWhX,EAAWO,EAAWV,EAAW,CAC/C,YAAK,QAAQ,KAAKmX,EAAGhX,EAAGO,EAAGV,CAAC,EACxB,KAAK,eAAe,KAAK,cAAc,KAAKmX,EAAGhX,EAAGO,EAAGV,CAAC,EACtD,KAAK,cACP,KAAK,cAAc,KAAKmX,EAAGhX,EAAGO,EAAGV,CAAC,EAE7B,IACT,CAGA,qBACE0M,EACAnB,EACAoH,EACA3B,EACA67C,EACA,CACM,MAAAC,EAA2B,KAAK,QAAQ,qBAC5CpgD,EACAnB,EACAoH,EACA3B,CAAA,EAIF,OAAI67C,GACK,OAAA,QAAQA,CAAU,EAAE,QAAQ,CAAC,CAACjzB,EAAKF,CAAK,IAAM,CACnDozB,EAAS,aAAa,WAAWlzB,CAAG,EAAGF,CAAK,CAAA,CAE7C,EAEIozB,CAKT,CAEA,qBACEhzD,EACAvB,EACAjB,EACAoV,EACAnB,EACA8+C,EACAwC,EACA,CACM,MAAAC,EAA2B,KAAK,QAAQ,qBAC5ChzD,EACAvB,EACAjB,EACAoV,EACAnB,EACA8+C,CAAA,EAIF,OAAIwC,GACK,OAAA,QAAQA,CAAU,EAAE,QAAQ,CAAC,CAACjzB,EAAKF,CAAK,IAAM,CACnDozB,EAAS,aAAa,WAAWlzB,CAAG,EAAGF,CAAK,CAAA,CAE7C,EAEIozB,CAKT,CAOA,UACEr0B,KAMG8H,EACH,CACI,GAAAA,EAAK,SAAW,EAClB,KAAK,QAAQ,UAAU9H,EAAS,EAAG,CAAC,UAC3B8H,EAAK,SAAW,EAAG,CACtB,MAAAyjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACjB,KAAK,QAAQ,UAAU9H,EAASurB,EAAIC,CAAE,CAAA,SAC7B1jB,EAAK,SAAW,EAAG,CACtB,MAAAyjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACX4qB,EAAK5qB,EAAK,CAAC,EACX6qB,EAAK7qB,EAAK,CAAC,EACjB,KAAK,QAAQ,UAAU9H,EAASurB,EAAIC,EAAIkH,EAAIC,CAAE,CAAA,SACrC7qB,EAAK,SAAW,EAAG,CACtB,MAAAykB,EAAKzkB,EAAK,CAAC,EACX0kB,EAAK1kB,EAAK,CAAC,EACX8qB,EAAK9qB,EAAK,CAAC,EACX34B,EAAK24B,EAAK,CAAC,EACXyjB,EAAKzjB,EAAK,CAAC,EACX0jB,EAAK1jB,EAAK,CAAC,EACX4qB,EAAK5qB,EAAK,CAAC,EACX6qB,EAAK7qB,EAAK,CAAC,EACZ,KAAA,QAAQ,UAAU9H,EAASusB,EAAIC,EAAIoG,EAAIzjD,EAAIo8C,EAAIC,EAAIkH,EAAIC,CAAE,CAAA,KAE9D,OAAM,IAAI,MACR,oDAAsD7qB,EAAK,MAAA,EAG/D,OAAI,KAAK,eAAe,KAAK,cAAc,UAAU9H,EAAS,GAAG8H,CAAI,EAC9D,IACT,CAEA,aACEykB,EAAK,EACLC,EAAK,EACLoG,EAAK,KAAK,OAAO,MACjBzjD,EAAK,KAAK,OAAO,OACjBmlD,EACW,CACX,OAAO,KAAK,QAAQ,aAAa/H,EAAIC,EAAIoG,EAAIzjD,EAAImlD,CAAQ,CAE3D,CAEA,aAAa/X,EAAsBgP,EAAK,EAAGC,EAAK,EAAG,CACjD,OAAO,KAAK,QAAQ,aAAajP,EAAWgP,EAAIC,CAAE,CAEpD,CAEA,cACEpP,EAOA+W,EACsB,CACtB,OAAO,KAAK,QAAQ,cAAc/W,EAAO+W,CAAU,CAErD,CAEA,UAAW,CACT,GAAI,KAAK,cAAe,CACtB,MAAMoB,EAAwB,KAAK,cAAc,iBAAiB,EAAI,EAChEC,EAAyB,KAAK,cAAc,OAAO,EACzD,MAAO,CAAE,IAAKD,EAAe,QAASC,CAAW,CAAA,KAEjD,OAAO,CAAE,IAAK,GAAI,QAAS,IAAK,CAEpC,CACF,CC7jBO,MAAM6U,EAAM,CAIV,kBAAoB,GACpB,2BAA6B,GAC7B,wBAA0B,GAC1B,oBAAsB,GACtB,wBAA0B,GAC1B,wBAA0B,GAE1B,GACA,MACA,EACA,OASA,MAAiD,CAAA,EACjD,MAAgC,CAAA,EAE/B,YACA,YAEA,GACA,GAEA,QAEA,QACA,QAED,GACA,GACA,GACA,GACA,KAEA,YACA,KAEA,WAAa,IAAIl+B,GAOhB,sBAGD,UAAY,GACZ,WAAa,GACb,EACA,GAEP,YAAY/O,EAAwB,CAClC,KAAK,GAAKsrC,KACV,KAAK,MAAQtrC,GAAS,MAEtB,KAAK,QAAQ,CAGX,OAAQ,OACR,KAAM,MAAA,CAEP,EACGA,GAAS,OACN,KAAA,QAAQA,EAAQ,KAAK,EAExBA,GAAS,OACN,KAAA,SAASA,EAAQ,KAAK,EAG7B,KAAK,YAAcA,GAAS,QAC5B,KAAK,YAAcA,GAAS,QAEvB,KAAA,GAAKA,GAAS,GAAK,EACnB,KAAA,GAAKA,GAAS,GAAK,EAEnB,KAAA,QAAUA,GAAS,QAAU,EAElC,KAAK,QAAU,EACf,KAAK,QAAU,EACXA,GAAS,QAAU,SACrB,KAAK,QAAUA,EAAQ,MACvB,KAAK,QAAUA,EAAQ,OAErBA,GAAS,SAAW,SACtB,KAAK,QAAUA,EAAQ,QAErBA,GAAS,SAAW,SACtB,KAAK,QAAUA,EAAQ,QAGpB,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,KAAOA,GAAS,MAAQ,EAE7B,KAAK,YACH,OAAOA,GAAS,aAAe,UAAYA,GAAS,YAAc,GACpE,KAAK,KAAOA,GAAS,KAsBrB,KAAK,sBAAwB,KAAK,WAAW,UAAU,IAAM,CAE3D,KAAK,2BAA6B,GAClC,KAAK,oBAAsB,EAAA,CAC5B,CACH,CAEO,SAAU,CACf,KAAK,sBAAsB,aAC7B,CAGO,OAAO1d,EAAWhX,EAAW,CAClC,MAAMk2E,EAAQ,KAAK,GACbC,EAAQ,KAAK,IACfD,IAAUl/D,GAAKm/D,IAAUn2E,KAC3B,KAAK,GAAKgX,EACV,KAAK,GAAKhX,EACL,KAAA,WAAW,KAAK,CAAE,GAAIgX,EAAIk/D,EAAO,GAAIl2E,EAAIm2E,CAAA,CAAO,EAEzD,CACO,KAAKtyB,EAAYC,EAAK,EAAG,CAC9B,KAAK,OAAO,KAAK,GAAKD,EAAI,KAAK,GAAKC,CAAE,CACxC,CACO,QAAQ9sC,EAAW,CACnB,KAAA,OAAOA,EAAG,KAAK,EAAE,CACxB,CACO,MAAM6sC,EAAY,CACvB,KAAK,OAAO,KAAK,GAAKA,EAAI,KAAK,EAAE,CACnC,CACO,QAAQ7jD,EAAW,CACnB,KAAA,OAAO,KAAK,GAAIA,CAAC,CACxB,CACO,MAAM8jD,EAAY,CACvB,KAAK,OAAO,KAAK,GAAI,KAAK,GAAKA,CAAE,CACnC,CACA,IAAW,GAAY,CACrB,OAAO,KAAK,EACd,CAEA,IAAW,EAAEn1C,EAAW,CAClB,KAAK,KAAOA,IACd,KAAK,WAAW,KAAK,CAAE,GAAIA,EAAI,KAAK,GAAI,EACxC,KAAK,GAAKA,EAEd,CACA,IAAW,GAAY,CACrB,OAAO,KAAK,EACd,CAEA,IAAW,EAAEA,EAAW,CAClB,KAAK,KAAOA,IACd,KAAK,WAAW,KAAK,CAAE,GAAIA,EAAI,KAAK,GAAI,EACxC,KAAK,GAAKA,EAEd,CAEO,SAAS45D,EAAgB,CAC1B,KAAK,UAAYA,IACnB,KAAK,WAAW,KAAK,CAAE,QAASA,EAAS,KAAK,QAAS,EACvD,KAAK,QAAUA,EAEnB,CACO,OAAOA,EAAgB,CACvB,KAAA,SAAS,KAAK,QAAUA,CAAM,CACrC,CACA,IAAW,QAAiB,CAC1B,OAAO,KAAK,OACd,CAEA,IAAW,OAAO55D,EAAW,CACvB,KAAK,UAAYA,IACnB,KAAK,WAAW,KAAK,CAAE,QAASA,EAAI,KAAK,QAAS,EAClD,KAAK,QAAUA,EAEnB,CAEO,QAAQ03D,EAAgBC,EAAiB,CAC9C,MAAM6hH,EAAa,KAAK,QAClBC,EAAa,KAAK,SACpB,KAAK,UAAY/hH,GAAU,KAAK,WAAaC,GAAUD,MACzD,KAAK,QAAUA,EACf,KAAK,QAAUC,GAAUD,EACzB,KAAK,WAAW,KAAK,CACnB,QAAS,KAAK,QAAU8hH,EACxB,QAAS,KAAK,QAAUC,CAAA,CACzB,EAEL,CACO,MAAM/hH,EAAgBC,EAAiB,CAC5C,KAAK,QAAQ,KAAK,QAAUD,EAAQ,KAAK,SAAWC,GAAUD,EAAO,CACvE,CACA,IAAW,QAAiB,CAC1B,OAAO,KAAK,OACd,CAEA,IAAW,OAAO13D,EAAW,CACvB,KAAK,UAAYA,IACnB,KAAK,WAAW,KAAK,CACnB,QAASA,EAAI,KAAK,OAAA,CACnB,EACD,KAAK,QAAUA,EAEnB,CACA,IAAW,QAAiB,CAC1B,OAAO,KAAK,OACd,CAEA,IAAW,OAAOA,EAAW,CACvB,KAAK,UAAYA,IACnB,KAAK,WAAW,KAAK,CACnB,QAASA,EAAI,KAAK,OAAA,CACnB,EACD,KAAK,QAAUA,EAEnB,CAGO,MAAMmyD,EAAsB,CACjC,OAAIA,GACF,KAAK,EAAIA,EACT,KAAK,2BAA6B,GAClC,KAAK,wBAA0B,IACtB,KAAK,MAET,KAAK,IACH,KAAA,EACH,KAAK,iBAAiB7K,GAAQ,KAAK,MAAQ,IAAIA,GAAM,KAAK,KAAK,IAK/D,CAAC,KAAK,GAAK,KAAK,qBAElB,KAAK,EAAI,IAAIA,GAAM,KAAK,cAAe,CAAA,EACvC,KAAK,kBAAoB,GACzB,KAAK,2BAA6B,GAClC,KAAK,wBAA0B,IAG5B,KAAK,CACd,CAEU,uBACH,gBAAwB,CACzB,GAAA,CAAC,KAAK,EAAG,CAGX,KAAM,CAAE,EAAG5J,EAAS,EAAGC,GAAY,KAAK,kBACxC,IAAI+7H,EAAc,EACdC,EAAc,EAEhB,GAAA,KAAK,QAAQ,SACb,KAAK,QAAQ,UAAY,GACzB,KAAK,QAAQ,UAAY,EACzB,CACM,MAAAC,EAAM,KAAK,gBAAgB,EAAI,EACrCF,EAAcE,EAAI,EAClBD,EAAcC,EAAI,CACpB,CAEM,MAAAzoL,EAAI,IAAIo3D,GAEZp3D,EAAA,UACA,KAAK,GAAK,KAAK,QAAQ,IAAM,GAC7B,KAAK,GAAK,KAAK,QAAQ,IAAM,EAAA,EAE/BA,EAAE,OAAO,KAAK,OAAQusD,EAASC,CAAO,EACtCxsD,EAAE,MAAM,KAAK,OAAQ,KAAK,OAAQusD,EAASC,CAAO,EAE9C,KAAK,QAAQ,SACfxsD,EAAE,OAAO,KAAK,OAAO,QAASuoL,EAAaC,CAAW,GAEpD,KAAK,QAAQ,UAAY,GAAK,KAAK,QAAQ,UAAY,IACvDxoL,EAAA,MACA,KAAK,QAAQ,SAAW,EACxB,KAAK,QAAQ,SAAW,EACxBuoL,EACAC,CAAA,EAIJ,KAAK,EAAIxoL,CACX,CACA,OAAI,KAAK,4BAA8B,CAAC,KAAK,0BACtC,KAAA,uBAAyB,KAAK,MAAM,EAAE,UAAU,CAAE,EAAG,KAAK,CAAA,CAAG,EAClE,KAAK,2BAA6B,IAE7B,KAAK,sBACd,CAEO,gBAAiB,CACf,MAAA,CACL,MAAO,KAAK,MAEZ,MAAO,CAAE,GAAG,KAAK,KAAM,EACvB,MAAO,CAAE,GAAG,KAAK,KAAM,EAEvB,QAAS,KAAK,YACd,QAAS,KAAK,YAEd,EAAG,KAAK,GACR,EAAG,KAAK,GAER,OAAQ,KAAK,QAEb,OAAQ,KAAK,QACb,OAAQ,KAAK,QAEb,GAAI,KAAK,GACT,GAAI,KAAK,GACT,GAAI,KAAK,GACT,GAAI,KAAK,GACT,KAAM,KAAK,KAEX,YAAa,KAAK,YAClB,KAAM,CAAE,GAAG,KAAK,IAAK,CAAA,CAEzB,CAEO,OAAQ,CAKN,OAJO,KAAK,YAKrB,CAGU,YAAa,CACrB,OAAO,IAAI6hE,GAAM,KAAK,eAAgB,CAAA,CACxC,CAGO,OAAOjtC,EAAiC,CAC7C,KAAK,kBAAoB,EAC3B,CAIO,SAA6B,CAE3B,OAAA,IACT,CAIO,eAAqC,CAE1C,MAAO,EACT,CAIO,YAAqB,CACnB,OAAA,KAAK,QAAQ,YACtB,CAMO,gBAAgByH,EAA4B,CAC5C,KAAA,MAAA,EAAQ,gBAAgBA,CAAG,CAClC,CAIO,sBAAsB6zB,EAAM,EAAG,CACpC,OAAO,KAAK,MAAA,EAAQ,sBAAsBA,CAAG,CAC/C,CAGO,0BAA0BA,EAAM,EAAG,CACxC,OAAO,KAAK,eAAA,EAAiB,sBAAsBA,CAAG,CACxD,CAGO,4BAA4BA,EAAM,EAAG,CAC1C,OAAO,KAAK,MAAA,EAAQ,4BAA4BA,CAAG,CACrD,CAGO,gCAAgCA,EAAM,EAAG,CAC9C,OAAO,KAAK,eAAA,EAAiB,4BAA4BA,CAAG,CAC9D,CAIO,gBAAgBw4H,EAAY,GAAOx4H,EAAM,EAA6B,CAC3E,IAAIh5C,EAAI,EACJhX,EAAI,EACJ,GAAA,KAAK,QAAU,CAACwoL,EAAW,CAC7B,MAAMC,EACJ,KAAK,OAAO,MAAM,4BAA4Bz4H,CAAG,EAC/Ch5C,EAAAyxK,EAAiB,EAAI,KAAK,OAAO,GACjCzoL,EAAAyoL,EAAiB,EAAI,KAAK,OAAO,EAAA,SAGnC,OAAO,KAAK,YAAe,KAC3B,OAAO,KAAK,YAAe,IAC3B,CAEM,MAAAC,EAAiB,KAAK,4BAA4B14H,CAAG,EAC3Dh5C,EAAI0xK,EAAe,EACnB1oL,EAAI0oL,EAAe,CAAA,MAGnB1xK,EAAI,KAAK,aAAe,EACxBhX,EAAI,KAAK,aAAe,EAGrB,MAAA,CAAE,EAAAgX,EAAG,EAAAhX,EACd,CAEO,cACLm8B,EACAnlB,EACAhX,EACS,CAET,GAAIm8B,aAAemkC,GACV,OAAAnkC,EAAI,cAAc,IAAI,OAAO,KAAK,YAAY,EAAGnlB,EAAGhX,CAAC,EAG1D,GAAA,KAAK,cAAc,mBAAoB,CAEnC,MAAAilE,EAAS,KAAK,GAAG,OAAO,EAC9B,GAAIA,EAAQ,CACJ,MAAA0jH,EAAiB1jH,EAAO,UACvB,OAAA,KAAK,GAAG,cAAc,CAC3B,EAAG0jH,EAAe,EAAI3xK,EAAI2xK,EAAe,EAAI3oL,EAAI2oL,EAAe,EAChE,EAAGA,EAAe,EAAI3xK,EAAI2xK,EAAe,EAAI3oL,EAAI2oL,EAAe,CAAA,CACjE,CACH,CAWF,CACO,MAAA,EACT,CAEO,gBACLxsJ,EACAnlB,EACAhX,EACS,CAET,GAAIm8B,aAAemkC,GACV,OAAAnkC,EAAI,gBAAgB,IAAI,OAAO,KAAK,YAAY,EAAGnlB,EAAGhX,CAAC,EAG5D,GAAA,KAAK,cAAc,mBAAoB,CAEnC,MAAAilE,EAAS,KAAK,GAAG,OAAO,EAC9B,GAAIA,EAAQ,CACJ,MAAA0jH,EAAiB1jH,EAAO,UACvB,OAAA,KAAK,GAAG,gBAAgB,CAC7B,EAAG0jH,EAAe,EAAI3xK,EAAI2xK,EAAe,EAAI3oL,EAAI2oL,EAAe,EAChE,EAAGA,EAAe,EAAI3xK,EAAI2xK,EAAe,EAAI3oL,EAAI2oL,EAAe,CAAA,CACjE,CACH,CAaF,CAEO,MAAA,EACT,CAEO,SAAS9sJ,EAAmC,CAC1C,OAAA,OAAO,KAAK,MAAOA,CAAG,EAC7B,KAAK,wBAA0B,EACjC,CAIO,QACL4kC,EACAlnC,EACM,CACF,GAAA,OAAOknC,GAAc,SACvB,UAAWngE,KAAKmgE,EAAW,CACnB,MAAA9xD,EAAI8xD,EAAUngE,CAAC,EACjBqO,GAAKA,GAAK,KAAK,QAAQrO,CAAC,IAC1B,KAAK,MAAMw3B,GAAQx3B,CAAC,CAAC,EAAIqO,EACzB,KAAK,wBAA0B,GAEnC,MAEI4qB,GAASA,GAAS,KAAK,QAAQknC,CAAS,IAC1C,KAAK,MAAM3oC,GAAQ2oC,CAAS,CAAC,EAAIlnC,EACjC,KAAK,wBAA0B,GAGrC,CAOO,QACLR,EACAwN,EACqC,CAC9B,OAAA,KAAK,MAAMxN,CAAI,GAAK,KAAK,MAAMjB,GAAQiB,CAAI,CAAC,GAAKwN,CAC1D,CAEO,QAAQxN,EAAuB,CACpC,MAAO,CAAC,CAAC,KAAK,QAAQA,CAAI,CAC5B,CAEO,QACLrE,EACA,CAEA,KAAK,IAAM,KAAK,GAChB,KAAK,IAAM,KAAK,GAGV,MAAAqsC,EAAUrsC,GAAS,SAAW,EACpC,KAAK,IAAMqsC,EAiBL,MAAAE,EAAWvsC,GAAS,UAAY,EACtC,KAAK,IAAMusC,EACX,KAAK,IAAMA,EAEX,KAAK,KAAK,KAAK,GAAI,KAAK,EAAE,CAC5B,CAEO,cACLruC,EACA8B,EAIA,CACM,MAAAilC,EAASjlC,GAAS,QAAU,IAC5BmvB,EAAKjxB,EAAO,EAAI,KAAK,EACrBkxB,EAAKlxB,EAAO,EAAI,KAAK,EAC3B,KAAK,GAAKixB,EAAK8V,EACf,KAAK,GAAK7V,EAAK6V,EACf,KAAK,QAAQjlC,CAAO,CACtB,CAEO,gBACL9B,EACA8B,EAIA,CACM,MAAAwsC,EAASxsC,GAAS,QAAU,KACjC,MAAM,QAAQ9B,CAAM,EAAIA,EAAS,CAACA,CAAM,GAAG,QAASh9B,GAAM,CACnD,MAAAiuD,EAAKjuD,EAAE,EAAI,KAAK,EAChBkuD,EAAKluD,EAAE,EAAI,KAAK,EAChBuuD,EAAKN,EAAKqd,EACV9c,EAAKN,EAAKod,EAChB,KAAK,IAAM/c,EACX,KAAK,IAAMC,CAAA,CACZ,EACD,KAAK,QAAQ,CAAE,SAAU,GAAK,GAAG1vB,EAAS,CAC5C,CAEO,qBACL9B,EACA8B,EAIQ,CACF,MAAAysC,EAAezsC,GAAS,cAAgB,IACxCwsC,EAASxsC,GAAS,QAAU,KAC5BmvB,EAAKjxB,EAAO,EAAI,KAAK,EACrBkxB,EAAKlxB,EAAO,EAAI,KAAK,EACrBgpC,EAAO,KAAK,KAAK/X,EAAKA,EAAKC,EAAKA,CAAE,EACxC,GAAI8X,EAAOuF,EAAc,CACvB,MAAMhd,EAAKN,EAAKqd,EACV9c,EAAKN,EAAKod,EACX,YAAA,IAAM/c,EAAK,KAAK,KAChB,KAAA,IAAMC,EAAK,KAAK,KACdxxB,EAAA,IAAMuxB,EAAKvxB,EAAO,KAClBA,EAAA,IAAMwxB,EAAKxxB,EAAO,KAClB,EAAIgpC,EAAOuF,CACpB,CACO,MAAA,EACT,CAEO,SAASvuC,EAAkCZ,EAAS,EAAG,CAC5D,KAAK,SAAS0uC,GAASzc,GAAM,KAAK,EAAG,KAAK,EAAGrxB,EAAO,EAAGA,EAAO,CAAC,CAAC,CAAC,EAC3D,KAAA,CAAE,GAAIw8B,EAAI,GAAIC,CAAO,EAAAsR,GAAMC,GAAS,KAAK,MAAM,EAAG5uC,CAAM,EAC9D,KAAK,GAAKo9B,EACV,KAAK,GAAKC,EACV,KAAK,QAAQ,CACf,CAEO,qBAAqBz8B,EAAkCZ,EAAS,IAAM,CAC3E,KAAK,SAAS0uC,GAASzc,GAAM,KAAK,EAAG,KAAK,EAAGrxB,EAAO,EAAGA,EAAO,CAAC,CAAC,CAAC,EAC3D,KAAA,CAAE,GAAIuxB,EAAI,GAAIC,CAAO,EAAAuc,GAAMC,GAAS,KAAK,MAAM,EAAG5uC,CAAM,EAC9D,KAAK,GAAKmyB,EACV,KAAK,GAAKC,EACV,KAAK,QAAQ,CACf,CAGO,YAAYxxB,EAAe,CAC1B,MAAAixB,EAAKjxB,EAAO,EAAI,KAAK,EACrBkxB,EAAKlxB,EAAO,EAAI,KAAK,EACrBiuC,EAAShd,EAAKA,EAAKC,EAAKA,EACxB8X,EAAO,KAAK,KAAKiF,CAAM,EACvBC,EAAS,KAAK,KAAOluC,EAAO,KAAQiuC,EACpC1c,EAAM2c,EAAQjd,EAAM+X,EACpBxX,EAAM0c,EAAQhd,EAAM8X,EACrB,KAAA,IAAMzX,EAAK,KAAK,KAChB,KAAA,IAAMC,EAAK,KAAK,KACdxxB,EAAA,IAAMuxB,EAAKvxB,EAAO,KAClBA,EAAA,IAAMwxB,EAAKxxB,EAAO,IAC3B,CAGO,eAAeA,EAAe,CAE7B,MAAAixB,EAAKjxB,EAAO,EAAI,KAAK,EACrBkxB,EAAKlxB,EAAO,EAAI,KAAK,EACrBgpC,EAAO,KAAK,KAAK/X,EAAKA,EAAKC,EAAKA,CAAE,EAClC,CACJ,EAAGimB,EACH,EAAGC,EACH,MAAO4+G,EACP,OAAQC,CAAA,EACNj2J,EAAO,wBACL,CAAE,EAAGk2J,EAAe,EAAGC,GAC3Bn2J,EAAO,8BACH,CAAE,EAAA5b,EAAG,EAAAhX,EAAG,MAAA81C,EAAO,OAAAC,GAAW,KAAK,wBAC/B,CAAE,EAAGsW,EAASC,GAAe,KAAK,8BAGtC,GAAAsP,EAAO,KAAK,IAAIktH,EAAgB/+G,CAAO,EAAI,KAAK,IAAI1d,EAAUr1C,CAAC,GAC/D4kD,EAAO,KAAK,IAAImtH,EAAgB/+G,CAAO,EAAI,KAAK,IAAI1d,EAAUtsD,CAAC,EAC/D,CACA,MAAMosD,EAAS,KAAK,MAAMtI,EAAID,CAAE,EAE1BmlI,EAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EAEpBC,EAAOjnH,GAAY,CAAC5V,EAAQvI,EAAIC,CAAE,EAElColI,EAAOlnH,GAAY,CAAC5V,EAAQ,KAAK,GAAI,KAAK,EAAE,EAE5C+8H,EAAOnnH,GAAY,CAAC5V,EAAQx5B,EAAO,GAAIA,EAAO,EAAE,EAEhDw2J,EAAUF,EAAK,EAAIC,EAAK,EAC9BD,EAAK,IACD,KAAK,KAAOt2J,EAAO,MAAQs2J,EAAK,EAAI,EAAIt2J,EAAO,KAAOu2J,EAAK,IAC5D,KAAK,KAAOv2J,EAAO,MACjBu2J,EAAA,EAAIC,EAAUF,EAAK,EAElB,MAAAG,EAAO,KAAK,IAAIH,EAAK,CAAC,EAAI,KAAK,IAAIC,EAAK,CAAC,EACzCG,EACJ,KAAK,WAAa12J,EAAO,WAAa,KAAK,IAAIo2J,EAAK,EAAIC,EAAK,CAAC,EAC3DD,EAAA,GAAME,EAAK,EAAIG,EAAQC,EACvBL,EAAA,GAAME,EAAK,EAAIE,EAAQC,EAE5B,MAAMC,EAAQvnH,GAAY5V,EAAQ48H,EAAK,EAAGA,EAAK,CAAC,EAC1CQ,EAAQxnH,GAAY5V,EAAQ68H,EAAK,EAAGA,EAAK,CAAC,EAEzCr2J,EAAA,OAAO,KAAK,EAAI42J,EAAM,EAAG,KAAK,EAAIA,EAAM,CAAC,EAC3C,KAAA,OAAO,KAAK,EAAID,EAAM,EAAG,KAAK,EAAIA,EAAM,CAAC,EAE9C,MAAME,EAAQznH,GAAY5V,EAAQ88H,EAAK,EAAGA,EAAK,CAAC,EAC1CQ,EAAQ1nH,GAAY5V,EAAQ+8H,EAAK,EAAGA,EAAK,CAAC,EAChD,KAAK,GAAKM,EAAM,EAChB,KAAK,GAAKA,EAAM,EAChB72J,EAAO,GAAK82J,EAAM,EAClB92J,EAAO,GAAK82J,EAAM,CACpB,CACF,CAGO,UAAUh1J,EAAuC,CAElD,GAAA,CAACA,GAAS,KACZ,OAEI,MAAAmuE,EACJ,OAAOnuE,EAAQ,KAAK,QAAU,SAAWA,EAAQ,KAAK,OAAS,GAC3DskB,EAAOtkB,EAAQ,KAAK,EACpBqkB,EAAMrkB,EAAQ,KAAK,EACnBwkC,EAAQxkC,EAAQ,KAAK,EAAIA,EAAQ,KAAK,MACtCwzC,EAASxzC,EAAQ,KAAK,EAAIA,EAAQ,KAAK,OACvC,CAAE,EAAA1d,EAAG,EAAAhX,EAAG,MAAA81C,EAAO,OAAAC,GAAW,KAAK,wBAErBrhB,EAAQ,KAAK,OAAS,IAiChC,KAAK,EAAI1d,EAAIkiD,EACV,KAAA,QAAQlgB,GAAQhiC,EAAI8+B,EAAM,EACtB,KAAK,EAAI9+B,EAAI8+B,EAAQkD,GACzB,KAAA,QAAQkgB,EAAQliD,CAAC,EAEpB,KAAK,EAAIhX,EAAIkoE,EACV,KAAA,QAAQnvB,GAAO/4C,EAAI+1C,EAAO,EACtB,KAAK,EAAI/1C,EAAI+1C,EAASgD,GAC1B,KAAA,QAAQmvB,EAASloE,CAAC,IAtCrB,KAAK,EAAIgX,EAAI8+B,EAAQojB,GAClB,KAAA,QAAQA,GAASliD,EAAI8+B,EAAM,EAChC,KAAK,IAAM+sD,GACF,KAAK,EAAI7rF,EAAIgiC,IACjB,KAAA,QAAQA,GAAQhiC,EAAI8+B,EAAM,EAC/B,KAAK,IAAM+sD,GAET,KAAK,EAAI7iG,EAAI+1C,EAASmyB,GACnB,KAAA,QAAQA,GAAUloE,EAAI+1C,EAAO,EAClC,KAAK,IAAM8sD,GACF,KAAK,EAAI7iG,EAAI+4C,IACjB,KAAA,QAAQA,GAAO/4C,EAAI+1C,EAAO,EAC/B,KAAK,IAAM8sD,GA6BjB,CAGO,gBAAyB,CACvB,OAAA,KAAK,iBAAiB,gBAC/B,CAIO,iBAAiB7wE,EAItB,CACA,OAAO,KAAK,eAAA,EAAiB,iBAAiBA,CAAM,CACtD,CAIO,YAAYp8B,EAAqC,CACtD,OAAO,KAAK,eAAA,EAAiB,YAAYA,CAAC,CAC5C,CAGO,UAAUsO,EAAK,EAAGqU,EAAK,EAAG,CACzB,MAAAogD,EAAc,KAAK,iBACnB4uH,EAAarjL,EAAKy0D,EAClB6uH,EAAWjvK,EAAKogD,EACf,MAAA,CACL,SAAU,KAAK,eAAA,EAAiB,YAAY4uH,EAAYC,CAAQ,EAChE,MAAO,KAAK,iBAAiBA,CAAQ,CAAA,CAEzC,CAGO,gBAAgBhoH,EAAgB,IAAM9qC,EAA2B,CAEtE,MAAMikC,EAAc,KAAK,MAAM,EAAE,eAAe,EAChD,KAAK,QAAQ,CACX,gBAAiB,GAAGA,CAAW,IAAIA,CAAW,GAC9C,iBAAkB,GAAGA,CAAW,EAAA,CACjC,EACD,MAAM4I,EAAe7sC,GAAS,SACxB8sC,EAAK,IAAIxC,GAAS,CAAE,cAAAQ,CAAe,CAAA,EACtCgC,EAAA,SACD,CAAE,OAAQ7I,CAAY,EACtB,CAAE,OAAQ,CAAE,EACZ,OAAO,OAAOjkC,GAAW,GAAI,CAC3B,SAAU,CAAC+sC,EAAoBrD,IAAoB,CACjD,KAAK,QAAQ,mBAAoB,GAAKnF,GAAawI,EAAO,OAAQ,CAAC,CAAC,EACpEF,IAAeE,EAAQrD,CAAO,CAChC,CAAA,CACD,CAAA,EAEHoD,EAAG,KAAK,CACV,CAGA,OAAc,gBACZxqD,EACAhX,EACAkuD,EACAC,EACAxpD,EACO,CACP,GAAIA,GAAK,EACD,MAAA,IAAI,MAAM,6BAA6B,EAE/C,MAAM2xD,EAAa,CAAA,EACbrS,EAAQ,IAAMt/C,EACpB,QAAS,EAAI,EAAG,EAAIA,EAAG,GAAK,EAAG,CAE7B,MAAMi/C,EAASK,EAAQ,EAAI,KAAK,GAAM,IAEhCJ,EAAK7sC,EAAI,EAAIk3C,EAAK,KAAK,IAAItK,CAAK,EAChCE,EAAK9jD,EAAI,EAAIkuD,EAAK,KAAK,IAAItK,CAAK,EAChC0S,EAAA,KACJ,IAAIC,GAAI,CACN,EAAAv/C,EACA,EAAAhX,EACA,GAAAkuD,EACA,GAAAC,EACA,YAAalK,EAAQ,EACrB,aAAc,EACd,UAAW,EACX,IAAKJ,EACL,IAAKC,CAAA,CACN,CAAA,EAEGwS,EAAA,KACJ,IAAIC,GAAI,CACN,EAAG1S,EACH,EAAGC,EACH,GAAAoK,EACA,GAAAC,EACA,YAAalK,EAAQ,EACrB,aAAc,EACd,UAAW,EACX,IAAKjtC,EACL,IAAKhX,CAAA,CACN,CAAA,CAEL,CACO,OAAA,IAAI2hE,GAAM,CAAE,MAAO1L,GAAM,UAAUK,CAAK,EAAG,CACpD,CACF,CASO,MAAMqzH,EAAW,CACf,OAAkB,CAAA,EAElB,IACA,WAEA,MAAiD,CAAA,EACjD,MAAgC,CAAA,EAEhC,YACA,YAEA,EACA,EAEA,OAEA,OACA,OAEA,YACA,KAEP,YAAYj1J,EAA6B,CAsCvC,GArCA,KAAK,YAAcA,GAAS,QAC5B,KAAK,YAAcA,GAAS,QAEvB,KAAA,EAAIA,GAAS,GAAK,EAClB,KAAA,EAAIA,GAAS,GAAK,EAElB,KAAA,OAASA,GAAS,QAAU,EAEjC,KAAK,OAAS,EACd,KAAK,OAAS,EACVA,GAAS,QAAU,SACrB,KAAK,OAASA,EAAQ,MACtB,KAAK,OAASA,EAAQ,OAEpBA,GAAS,SAAW,SACtB,KAAK,OAASA,EAAQ,QAEpBA,GAAS,SAAW,SACtB,KAAK,OAASA,EAAQ,QAGpBA,GAAS,OACN,KAAA,QAAQA,EAAQ,KAAK,EAExBA,GAAS,OACN,KAAA,SAASA,EAAQ,KAAK,EAI7B,KAAK,YACH,OAAOA,GAAS,aAAe,UAAYA,GAAS,YAAc,GACpE,KAAK,KAAOA,GAAS,KAErB,KAAK,IAAMA,GAAS,IACpB,KAAK,WAAaA,GAAS,WAGvBA,GAAS,IAAK,CAEhB,KAAK,YAAc,EACnB,KAAK,YAAc,EACnB,IAAIk1J,EAAW,EACXC,EAAY,EACZ/zI,EAAQ,EACRC,EAAS,EACb,MAAMsQ,EAAQ,IAAIy/B,GAASpxD,EAAQ,GAAG,EAAE,QACxC,QAAS19B,EAAI,EAAG+oD,EAAQsG,EAAM,OAAQrvD,EAAI+oD,EAAO/oD,IAAK,CAC9C,MAAAwnC,EAAO6nB,EAAMrvD,CAAC,EAEpB,GAAIwnC,EAAK,MAAQ,WAAaA,EAAK,OAASA,EAAK,OAAQ,CAGvD,GAFWorJ,EAAA,WAAWprJ,EAAK,KAAK,EACpBqrJ,EAAA,WAAWrrJ,EAAK,MAAM,EAC9B9J,EAAQ,WAAY,CACtB,MAAM24F,EAAcu8D,EAAWC,EAC/B/zI,EAAQphB,EAAQ,WAChBqhB,EAASD,EAAQu3E,CAAA,MAETv3E,EAAA8zI,EACC7zI,EAAA8zI,EAEX,QACF,CAMA,GAHIrrJ,EAAK,MAAQ,QAGb,CAAC81B,GAAU91B,EAAK,IAAI,EACtB,SAGF,MAAM1C,EAAgC,CAAA,EACtC,UAAWrC,KAAO+E,EACZ/E,IAAQ,QAAUA,IAAQ,QAAUA,IAAQ,cAG1CqC,EAAArC,CAAG,EAAI+E,EAAK/E,CAAG,GAGvB,MAAMqwJ,EAAYl1H,GAAkBJ,GAAah2B,EAAK,IAAI,CAAC,EAErDurJ,EAA4B,CAAA,EAClC,IAAIn7K,EAAyB,CAAA,EAC7B,QAASsO,EAAI,EAAG8sK,EAAWF,EAAU,OAAQ5sK,EAAI8sK,EAAU9sK,IAAK,CACxD,MAAA8Z,EAAO8yJ,EAAU5sK,CAAC,EACxBtO,EAAE,KAAKooB,CAAI,EAEPA,EAAK,CAAC,EAAE,YAAA,GAAiB,MAC3B+yJ,EAAG,KAAKn7K,CAAC,EACTA,EAAI,CAAA,EAER,CACIA,EAAE,QACJm7K,EAAG,KAAKn7K,CAAC,EAERm7K,EAAA,QAASn7K,GAAM,CACV,MAAA4xD,EAAQ,IAAImB,GAAM,CACtB,MAAA7lC,EACA,MAAOltB,CAAA,CACR,EACD,GAAI4vB,EAAK,UAAW,CAEZ,MAAA1mC,EADSyyE,GAAuB/rC,EAAK,SAAS,EACnC,QACjBgiC,EAAM,OAAO1oE,EAAE,EAAGA,EAAE,CAAC,EACf0oE,EAAA,SAAS1oE,EAAE,MAAM,EACvB0oE,EAAM,QAAQ1oE,EAAE,OAAQA,EAAE,MAAM,CAClC,CACA,KAAK,SAAS0oE,CAAK,CAAA,CACpB,CACH,CAEI1qB,GAAS8zI,GAAY7zI,GAAU8zI,GACjC,KAAK,WAAW/zI,EAAQ8zI,EAAU7zI,EAAS8zI,EAAW,EAAI,CAE9D,CACF,CAEO,SAAU,CACf,KAAK,OAAO,QAAS/xL,GAAMA,EAAE,SAAS,CACxC,CAEO,gBAAiB,CACf,MAAA,CACL,IAAK,KAAK,IACV,WAAY,KAAK,WAEjB,MAAO,CAAE,GAAG,KAAK,KAAM,EACvB,MAAO,CAAE,GAAG,KAAK,KAAM,EAEvB,QAAS,KAAK,YACd,QAAS,KAAK,YAEd,EAAG,KAAK,EACR,EAAG,KAAK,EAER,OAAQ,KAAK,OAEb,OAAQ,KAAK,OACb,OAAQ,KAAK,OAEb,YAAa,KAAK,YAClB,KAAM,CAAE,GAAG,KAAK,IAAK,CAAA,CAEzB,CAEO,OAAQ,CACP,MAAAmyL,EAAa,KAAK,kBAGxB,OAAAA,EAAW,OAAS,KAAK,OAAO,IAAKnyL,GAAM,CAEnC,MAAA4H,EAAI5H,EAAE,QACZ,OAAIA,EAAE,SACJ4H,EAAE,OAAS,CAAE,GAAG5H,EAAE,OAAQ,MAAOmyL,IAE5BvqL,CAAA,CACR,EAEMuqL,CACT,CAGU,iBAAkB,CAC1B,OAAO,IAAIN,GAAW,KAAK,eAAgB,CAAA,CAC7C,CAGO,OAAOj1J,EAAsC,CAClD,KAAK,OAAO,QAAS58B,GAAMA,EAAE,OAAO48B,CAAO,CAAC,CAC9C,CAEO,SACL8rC,EACA9rC,EAQA,CACIA,GAAS,mBAAqB,KAC1B8rC,EAAA,QAAQ,KAAK,KAAK,EAClBA,EAAA,SAAS,KAAK,KAAK,EACnBA,EAAA,YAAcA,EAAM,aAAe,KAAK,YAC9CA,EAAM,KAAO,CAAE,GAAG,KAAK,KAAM,GAAGA,EAAM,OAExCA,EAAM,OAAS,CACb,MAAO,KACP,GAAI9rC,GAAS,IAAM,EACnB,GAAIA,GAAS,IAAM,EACnB,QAASA,GAAS,SAAW,EAC7B,QAASA,GAAS,SAAW,EAC7B,QAASA,GAAS,SAAW,CAAA,EAE1B,KAAA,OAAO,KAAK8rC,CAAK,CACxB,CAEO,UAAU3c,EAAYC,EAAYomI,EAAY,GAAO,CACrDA,IACH,KAAK,GAAKrmI,EACV,KAAK,GAAKC,GAEP,KAAA,OAAO,QAAS,GAAM,CACvB,EAAA,KAAKD,EAAIC,CAAE,CAAA,CACd,CACH,CACO,YAAYykB,EAAgB2hH,EAAY,GAAO,CAC/CA,IACH,KAAK,QAAU3hH,GAEZ,KAAA,OAAO,QAASzwE,GAAM,CACzBA,EAAE,OAAOywE,CAAM,CAAA,CAChB,CACH,CACO,WAAWlC,EAAgBC,EAAiB4jH,EAAY,GAAO,CAC/DA,IACH,KAAK,QAAU7jH,EACf,KAAK,QAAUC,GAAUD,GAEtB,KAAA,OAAO,QAAS,GAAM,CACvB,EAAA,MAAMA,EAAQC,CAAM,CAAA,CACvB,CACH,CAEO,eACL5xC,EAQAw1J,EAAY,GACZ,EACI,OAAOx1J,GAAS,GAAK,UAAY,OAAOA,GAAS,GAAK,WACxD,KAAK,UAAUA,GAAS,GAAK,EAAGA,GAAS,GAAK,EAAGw1J,CAAS,EAExD,OAAOx1J,GAAS,QAAU,UAC5B,KAAK,YAAYA,GAAS,QAAU,EAAGw1J,CAAS,GAGhD,OAAOx1J,GAAS,OAAS,UACzB,OAAOA,GAAS,QAAU,UAC1B,OAAOA,GAAS,QAAU,WAErB,KAAA,WACHA,GAAS,QAAUA,GAAS,OAAS,EACrCA,GAAS,QAAUA,GAAS,OAAS,EACrCw1J,CAAA,CAGN,CAIO,sBAAsBl6H,EAAM,EAAG,CACpC,MAAM31D,EAAc,CAAA,EACdw4D,EAAc,CAAA,EAMpB,GALK,KAAA,OAAO,QAAS/6D,GAAM,CACnB,MAAAgyD,EAAOhyD,EAAE,sBAAsBk4D,CAAG,EACxC31D,EAAE,KAAKyvD,EAAK,EAAGA,EAAK,EAAIA,EAAK,KAAK,EAClC+I,EAAE,KAAK/I,EAAK,EAAGA,EAAK,EAAIA,EAAK,MAAM,CAAA,CACpC,EACGzvD,EAAE,QAAU,GAAKw4D,EAAE,QAAU,EACxB,MAAA,CAAE,EAAG,EAAG,EAAG,EAAG,MAAO,EAAG,OAAQ,GAEzC,MAAMiE,EAAO,KAAK,IAAI,GAAGz8D,CAAC,EACpB08D,EAAO,KAAK,IAAI,GAAGlE,CAAC,EACpBmE,EAAO,KAAK,IAAI,GAAG38D,CAAC,EACpB48D,EAAO,KAAK,IAAI,GAAGpE,CAAC,EACnB,MAAA,CACL,EAAGoG,GAAanC,EAAM9G,CAAG,EACzB,EAAGiJ,GAAalC,EAAM/G,CAAG,EACzB,MAAOiJ,GAAajC,EAAOF,EAAM9G,CAAG,EACpC,OAAQiJ,GAAahC,EAAOF,EAAM/G,CAAG,CAAA,CAEzC,CAGO,4BAA4BA,EAAM,EAA6B,CACpE,GACE,OAAO,KAAK,aAAe,UAC3B,OAAO,KAAK,aAAe,SAG3B,MAAO,CAAE,EAAG,KAAK,YAAa,EAAG,KAAK,aAElC,MAAAlG,EAAO,KAAK,sBAAsBkG,CAAG,EACpC,MAAA,CACL,EAAGiJ,GAAanP,EAAK,EAAIA,EAAK,MAAQ,GAAKkG,CAAG,EAC9C,EAAGiJ,GAAanP,EAAK,EAAIA,EAAK,OAAS,GAAKkG,CAAG,CAAA,CAEnD,CAEO,SAASn0B,EAAmC,CAC1C,OAAA,OAAO,KAAK,MAAOA,CAAG,EACxB,KAAA,OAAO,QAAS/jC,GAAM,CACzBA,EAAE,SAAS+jC,CAAG,CAAA,CACf,CACH,CAIO,QACL4kC,EACAlnC,EACA,CACI,GAAA,OAAOknC,GAAc,SAAU,CACjC,UAAWngE,KAAKmgE,EAAW,CACnB,MAAA9xD,EAAI8xD,EAAUngE,CAAC,EACjBqO,GAAKA,GAAK,KAAK,QAAQrO,CAAC,IAC1B,KAAK,MAAMw3B,GAAQx3B,CAAC,CAAC,EAAIqO,EAE7B,CACK,KAAA,OAAO,QAAS7W,GAAM,CACzBA,EAAE,QAAQ2oE,CAAS,CAAA,CACpB,CAAA,MAEGlnC,GAASA,GAAS,KAAK,QAAQknC,CAAS,IAC1C,KAAK,MAAM3oC,GAAQ2oC,CAAS,CAAC,EAAIlnC,EAC5B,KAAA,OAAO,QAASzhC,GAAM,CACvBA,EAAA,QAAQ2oE,EAAWlnC,CAAK,CAAA,CAC3B,EAGP,CAOO,QACLR,EACAwN,EACqC,CAC9B,OAAA,KAAK,MAAMxN,CAAI,GAAK,KAAK,MAAMjB,GAAQiB,CAAI,CAAC,GAAKwN,CAC1D,CAEO,QAAQxN,EAAuB,CACpC,MAAO,CAAC,CAAC,KAAK,QAAQA,CAAI,CAC5B,CAGO,MAAa,CACb,KAAA,OACF,IAAKynC,IACG,CACL,MAAAA,EACA,UAAWA,EAAM,eAAe,EAAE,4BAA4B,CAAA,EAEjE,EACA,KAAK,CAAClkE,EAAG8Z,IAAMA,EAAE,UAAY9Z,EAAE,SAAS,EACxC,IAAKA,GAAMA,EAAE,KAAK,CACvB,CAEO,SAAS6tL,EAA0B,CAClC,MAAAC,EAAWD,EAAO,OAAO,OACzBE,EAAW,KAAK,OAAO,OAC7B,GAAID,EAAWC,EACN,OAAAF,EAAO,SAAS,IAAI,EAE7B,QAASnzL,EAAIqzL,EAAUrzL,EAAIozL,EAAUpzL,IAAK,CAClC,MAAAwpE,EAAQ2pH,EAAO,OAAOnzL,CAAC,EAOxB,KAAA,SACH,IAAI2qE,GAAM,CACR,MAAOnB,EAAM,MAAM,EAAE,MAAM,CAAA,CAC5B,EACD,CACE,GAAIA,EAAM,EAAI,KAAK,EACnB,GAAIA,EAAM,EAAI,KAAK,EACnB,QAASA,EAAM,OAAS,KAAK,OAC7B,QAASA,EAAM,OAAS,KAAK,OAC7B,QAASA,EAAM,OAAS,KAAK,OAC7B,iBAAkB,EACpB,CAAA,CAEJ,CACF,CAEO,gBACLhB,EACA9qC,EAMM,CACN,OAAQA,GAAS,KAAM,CACrB,IAAK,WACH,KAAK,OAAO,QAAQ,CAAC58B,EAAGd,IAAM,CAC5Bc,EAAE,gBAAgB0nE,EAAe,CAC/B,GAAG9qC,EACH,MAAO19B,EACP,QAAS,IAAM,CACTA,GAAK,GACP09B,GAAS,eAAe,CAE5B,EACA,SAAU,IAAM,CACdA,GAAS,gBAAgB,CAC3B,EACA,WAAY,IAAM,CACZ19B,GAAK,KAAK,OAAO,OAAS,GAC5B09B,GAAS,kBAAkB,CAE/B,CAAA,CACD,CAAA,CACF,EACD,MACF,IAAK,WACL,QAEE,MAAM8sC,EAAK,IAAIxC,GAAS,CAAE,cAAAQ,CAAe,CAAA,EAEnChtC,EAAmB,CAAA,EAEnBnP,EAAiB,CAAA,EACvB,KAAK,OAAO,QAAQ,CAACvrB,EAAGd,IAAM,CAE5B,MAAM2hE,EAAc7gE,EAAE,MAAM,EAAE,eAAe,EACxC06B,EAAA,UAAUx7B,CAAC,EAAE,EAAI2hE,EACnBt1C,EAAA,UAAUrsB,CAAC,EAAE,EAAI,EACpBc,EAAE,QAAQ,CACR,gBAAiB,GAAG6gE,CAAW,IAAIA,CAAW,GAC9C,iBAAkB,GAAGA,CAAW,EAAA,CACjC,CAAA,CACF,EACE6I,EAAA,SACDhvC,EACAnP,EACA,OAAO,OAAOqR,GAAW,GAAI,CAC3B,QAAS,IAAM,CACbA,GAAS,eAAe,CAC1B,EACA,SAAU,CAAC+sC,EAAoBrD,IAAoB,CACjD,UAAW,KAAKqD,EAAQ,CAChB,MAAAhjC,EAAQ6rJ,GAAc,CAAC,EAAE,OAC1B,KAAA,OAAO7rJ,CAAK,EAAE,QACjB,mBACA,GAAKw6B,GAAawI,EAAO,CAAC,EAAG,CAAC,CAAA,CAElC,CACA/sC,GAAS,gBAAgB,CAC3B,EACA,WAAY,IAAM,CAChBA,GAAS,kBAAkB,CAC7B,CAAA,CACD,CAAA,EAEH8sC,EAAG,KAAK,EACR,KACJ,CACF,CACF,CAGO,SAAS+oH,IACd/pH,EACAgb,EACAisG,EAAS,EACT,CACM,MAAA3nL,EAAI4nL,GAAwBD,CAAM,GACpC,CAAC3nL,EAAE0gE,EAAM,EAAGgb,EAAI,QAAQ,CAAC,GAAK,CAAC17E,EAAE0gE,EAAM,EAAGgb,EAAI,QAAQ,CAAC,IACnDhb,EAAA,SAASgb,EAAI,OAAO,CAE9B,CAGgB,SAAAgvG,IACdhqH,EACA5tC,EACA8B,EACA,CACI8rC,EAAM,MAAQA,EAAM,KAAK,QAAU,CAACA,EAAM,YACtCA,EAAA,cAAc5tC,EAAQ8B,CAAO,CAEvC,CAGgB,SAAA+1J,IACdC,EACAh2J,EACY,CACZ,MAAMi2J,EAAqB,CAAA,EACrBC,EAAeF,EAAO,OAC5B,QAAS1zL,EAAI,EAAGA,EAAI4zL,EAAc5zL,IAAK,CAC/B,MAAAc,EAAI4yL,EAAO1zL,CAAC,EAClB,GAAI09B,GAAS,aAAc,CAEnB,MAAAysC,EAAezsC,GAAS,cAAgB,IACzC58B,EAAE,YAEF4yL,EAAA,OAAQj3K,GAAOA,EAAG,KAAO3b,EAAE,EAAE,EAC7B,QAAS2b,GAAO,CACT,MAAA24C,EAASnI,GAAMnsD,EAAE,EAAGA,EAAE,EAAG2b,EAAG,EAAGA,EAAG,CAAC,EACvC3b,EAAA,gBACA,CACE,EAAG2b,EAAG,EAAI,KAAK,IAAI24C,CAAM,EAAI+U,EAC7B,EAAG1tD,EAAG,EAAI,KAAK,IAAI24C,CAAM,EAAI+U,CAC/B,EACAzsC,CAAA,CACF,CACD,CACL,MACSA,GAAS,OAEd19B,EAAI,GACNc,EAAE,gBAAgB4yL,EAAO1zL,EAAI,CAAC,EAAG09B,CAAO,EAG1C58B,EAAE,QAAQ48B,CAAO,EAKnB,GAHIA,GAAS,MACX58B,EAAE,UAAU48B,CAAO,EAGnBA,GAAS,iBACTA,GAAS,6BACTA,GAAS,sBAET,QAASxX,EAAIlmB,EAAI,EAAGkmB,EAAI0tK,EAAc1tK,IAChCwX,GAAS,iBACT58B,EAAA,eAAe4yL,EAAOxtK,CAAC,CAAC,EAExBwX,GAAS,6BACT58B,EAAA,YAAY4yL,EAAOxtK,CAAC,CAAC,EAErBwX,GAAS,uBACXi2J,EAAO,KAAK,CACV7yL,EAAE,EACFA,EAAE,EACF4yL,EAAOxtK,CAAC,EAAE,EACVwtK,EAAOxtK,CAAC,EAAE,EACVplB,EAAE,qBAAqB4yL,EAAOxtK,CAAC,EAAGwX,CAAO,CAAA,CAC1C,CAIT,CACO,OAAAi2J,CACT,CAEA,SAASE,GAAsBH,EAEpB,CACL,GAAAA,EAAO,OAAS,EACZ,MAAA,IAAI,MAAM,iBAAiB,EAE7B,MAAAI,EAAOJ,EAAO,OAAS,EACvBX,EAAK,IAAI,MAAMe,CAAI,EACzB,QAASjrL,EAAI,EAAGA,EAAIirL,EAAMjrL,IAAK,CAC7B,MAAMkrL,EAASL,EAAO7qL,CAAC,EAAE,eAAe,EAClCmrL,EAASN,EAAO7qL,EAAI,CAAC,EAAE,eAAe,EACtCorL,EAAeF,EAAO,qBACtBG,EAAeF,EAAO,qBACtBlD,EACJmD,EAAa,QAAUC,EAAa,OAASD,EAAeC,EAC3DnB,EAAAlqL,CAAC,EAAIo2D,GAAM,gBACZ80H,EAAO,wBAAwBjD,CAAS,EACxCkD,EAAO,wBAAwBlD,CAAS,CAAA,CAE5C,CAEA,MAAMtnH,EAAQ,IAAImB,GAAM,CAAE,MAAO,EAAI,CAAA,EACrC,OAAQljB,GAA0B,CAChC,MAAM7vC,EAAIqqD,GAAa6xH,EAAOrsI,EAAQ,CAAC,EACjC0sI,EAAM,KAAK,IAAI,KAAK,MAAMv8K,CAAC,EAAGk8K,EAAO,CAAC,EACtCl1L,EAAIqjE,GAAarqD,EAAIu8K,EAAK,CAAC,EACjC,OAAA3qH,EAAM,MAAMupH,EAAGoB,CAAG,EAAEv1L,CAAC,CAAC,EACtB4qE,EAAM,QAAQkqH,EAAOS,EAAM,CAAC,EAAE,KAAK,EAiB5B3qH,CAAA,CAEX,CAEA,SAAS4qH,IAA2BC,EAEpB,CACV,GAAAA,EAAY,OAAS,EACjB,MAAA,IAAI,MAAM,sBAAsB,EAEpC,IAAAC,EACJ,MAAMC,EAAuB,CAAA,EACjBF,EAAA,QAAS3rL,GAAM,CACrB8rL,IAAAA,EACA9rL,aAAaiqL,IACf6B,EAAQ9rL,EACR8rL,EAAM,KAAK,IAEXA,EAAQ,IAAI7B,GACZ6B,EAAM,SAAS9rL,CAAC,GAElB6rL,EAAO,KAAKC,CAAK,GACb,CAACF,GAAiBA,EAAc,OAAO,OAASE,EAAM,OAAO,UAC/CA,EAAAA,EAClB,CACD,EACD,MAAMC,EAAqB,CAAA,EACpBF,EAAA,QAAQ,CAAC7rL,EAAG1I,IAAM,CACnB0I,IAAM4rL,GACR5rL,EAAE,SAAS4rL,CAAa,EAE1B5rL,EAAE,OAAO,QAAQ,CAAC5H,EAAGolB,IAAM,CACzBuuK,EAAQvuK,CAAC,EAAIuuK,EAAQvuK,CAAC,GAAK,CAAA,EACnBuuK,EAAAvuK,CAAC,EAAElmB,CAAC,EAAIc,CAAA,CACjB,CAAA,CACF,EACD,MAAMmlK,EAA+C,CAAA,EAC7CwuB,EAAA,QAASf,GAAW,CACZztB,EAAA,KAAK4tB,GAAsBH,CAAM,CAAC,CAAA,CACjD,EACK,MAAAc,EAAQ,IAAI7B,GACJ,OAAA1sB,EAAA,QAASn2D,GAAiB,CAChC0kF,EAAA,SAAS1kF,EAAa,CAAC,CAAC,CAAA,CAC/B,EACOroD,IACQw+G,EAAA,QAASn2D,GAAiB,CACtCA,EAAaroD,CAAM,CAAA,CACpB,EACM+sI,EAEX,CAEO,SAASE,IACdhB,EACAlrH,EAAgB,IAChB9qC,EAGoB,CACpB,MAAMoyE,EACJ4jF,EAAO,UAAW5yL,GAAMA,aAAa6xL,EAAU,GAAK,EAChDyB,IAA2BV,CAAM,EACjCG,GAAsBH,CAAiB,EACvCiB,EAAe7kF,EAAa,CAAC,EAC7BvlC,EAAe7sC,GAAS,SACxB8sC,EAAK,IAAIxC,GAAS,CAAE,cAAAQ,CAAe,CAAA,EACtC,OAAAgC,EAAA,SACD,CAAE,EAAG,CAAE,EACP,CAAE,EAAG,CAAE,EACP,OAAO,OAAO9sC,GAAW,GAAI,CAC3B,SAAU,CAAC+sC,EAAoBrD,IAAoB,CACjDmD,IAAeE,EAAQrD,CAAO,EAC9B0oC,EAAarlC,EAAO,CAAC,EACZ/sC,GAAA,eAAei3J,EAAclqH,EAAO,CAAC,CAChD,CAAA,CACD,CAAA,EAEHD,EAAG,KAAK,EACDmqH,CACT,CClqDO,MAAMC,GAAY,CAChB,UAEA,OAA4B,KAE5B,UAAsC,KACtC,IAA8B,KAE9B,KAAO,CACZ,EAAG,EACH,EAAG,EACH,MAAO,EACP,OAAQ,CAAA,EAEH,MAAQ,IAAI3nJ,GAAgC,IAAI,EAC/C,mBAED,IAAMkzC,GAAiB,EACtB,kBAED,OAAkB,CAAA,EAElB,UAAY,IAAIlzC,GAA8B,IAAI,EACjD,gBAEA,mBAAqB,GAErB,gBAAkB,GAClB,WAAa,UAErB,YACE4nJ,EAAiC,SAAS,gBAC1Cr3J,EAAiB,SACjBo3B,EAAsB,GACtB,CACA,KAAK,UAAYigI,GAEbr3J,GAAQ,OAASA,GAAQ,WAC3BsL,GAAM,KAAK,SAAS,EAGlBtL,GAAQ,QACL,KAAA,OAASo/B,GAAiB,KAAK,EAC7Bic,GAAA,KAAK,UAAW,KAAK,MAAM,GAGhCr7C,GAAQ,WACL,KAAA,UAAY48C,GAAc,QAAQ,EAChCvB,GAAA,KAAK,UAAW,KAAK,SAAS,GAGvC,KAAK,mBAAqBoG,GAAQ,KAAK,SAAS,EAAE,UAC/C94E,GAAe,CACT,KAAA,KAAK,EAAIA,EAAE,EACX,KAAA,KAAK,EAAIA,EAAE,EACX,KAAA,KAAK,MAAQA,EAAE,MACf,KAAA,KAAK,OAASA,EAAE,OACjB,KAAK,QACPu+B,GAAU,KAAK,OAAQ,CACrB,QAAS,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,GACnD,MAAO,GAAG,KAAK,KAAK,KAAK,GACzB,OAAQ,GAAG,KAAK,KAAK,MAAM,EAAA,CAC5B,EAEC,KAAK,YACPA,GAAU,KAAK,UAAW,CACxB,MAAO,GAAG,KAAK,KAAK,KAAK,GACzB,OAAQ,GAAG,KAAK,KAAK,MAAM,EAAA,CAC5B,EACD,KAAK,IAAM,IAAI4kC,GACb,KAAK,UACL,KAAK,KAAK,MACV,KAAK,KAAK,OACV1U,CAAA,GAGC,KAAA,MAAM,KAAKzuD,CAAC,CACnB,CAAA,EAGF,KAAK,kBAAoB2+E,GACvB,KAAK,QAAU,KAAK,WAAa,KAAK,UACtC,CACE,iBAAkB,KAAK,GACzB,CACF,EAAE,UAAU,IAAM,CAAA,CAAE,EAEpB,KAAK,gBAAkBhC,GAAK,KAAK,SAAS,EAAE,UAAWnkF,GAAM,CAChD,UAAA6qE,KAAS,KAAK,OACvB,GAAIA,EAAM,UAAW,CACd,KAAA,UAAU,KAAKA,CAAK,EAQzB,KACF,CACF,CACD,CACH,CAEO,SAAU,CACf,KAAK,mBAAmB,cACxB,KAAK,kBAAkB,cACvB,KAAK,gBAAgB,aACvB,CAEQ,UACNu9F,EAAsD,UACtD,CACIA,GAAU,KAAK,aACZ,KAAA,UAAU,MAAM,OAASA,EAC9B,KAAK,WAAaA,EAEtB,CAGO,QAAQp1J,EAAiB,CAE9B,GAAIA,EAAG,OAAQ,CACb,MAAMmjL,EAAuB,CAAA,EAC1BnjL,EAAA,QAAS7Q,GAAM,CACZA,aAAa6xL,GACHmC,EAAA,KAAK,GAAGh0L,EAAE,MAAM,EAE5Bg0L,EAAY,KAAKh0L,CAAC,CACpB,CACD,EAGG,KAAK,QACP,KAAK,OACF,OACE0oE,GAAUsrH,EAAY,UAAW,GAAM,EAAE,IAAMtrH,EAAM,EAAE,GAAK,EAAA,EAE9D,QAASA,GAAU,CACdA,EAAM,KACRA,EAAM,GAAG,SACT,OAAOA,EAAM,GACf,CACD,EAGMurH,GAAA,KAAK,OAAQD,CAAW,CACrC,CAEI,KAAK,KAEP,KAAK,IAAI,YAGX,KAAK,mBAAqB,GACrB,KAAK,IAAI,QAAQ,SACpB,KAAK,gBAAkB,IAGd,UAAAtrH,KAAS,KAAK,OAAQ,CAE/B,KAAM,CAAE,EAAGnU,EAAS,EAAGC,GAAYkU,EAAM,kBACzC,IAAI6nH,EAAc,EACdC,EAAc,EAEhB,GAAA9nH,EAAM,QAAQ,SACdA,EAAM,QAAQ,UAAY,GAC1BA,EAAM,QAAQ,UAAY,EAC1B,CACM,MAAA+nH,EAAM/nH,EAAM,gBAAgB,EAAI,EACtC6nH,EAAcE,EAAI,EAClBD,EAAcC,EAAI,CACpB,CAOA,GALI/nH,EAAM,mBAERA,EAAM,MAAM,EAGV,KAAK,OAAQ,CAEf,GAAI,CAACA,EAAM,IAAMA,EAAM,wBAAyB,CACxC,MAAAwP,EAAQxP,EAAM,UACfA,EAAM,GAWLwP,IACFxP,EAAM,GAAG,SACTA,EAAM,GAAKwP,EACJH,GAAA,KAAK,OAAQrP,EAAM,EAAE,EAC5B9kC,GAAU8kC,EAAM,GAAI,CAAE,GAAIA,EAAM,GAAI,IAbhCA,EAAA,GAAKwP,GAASlc,KACb+b,GAAA,KAAK,OAAQrP,EAAM,EAAE,EAC5B9kC,GAAU8kC,EAAM,GAAI,CAAE,GAAIA,EAAM,GAAI,GAclCzM,GAAiByM,EAAM,EAAE,GAC3B9kC,GAAU8kC,EAAM,GAAI,CAAE,EAAGA,EAAM,aAAc,EAE/CA,EAAM,wBAA0B,GAChCA,EAAM,wBAA0B,GAChCA,EAAM,wBAA0B,GAChCA,EAAM,oBAAsB,EAC9B,CAcA,GAbIA,EAAM,0BACHu8G,GAAcv8G,EAAM,KAAK,GAClB9kC,GAAA8kC,EAAM,GAAIA,EAAM,KAAK,EAEjCA,EAAM,wBAA0B,IAE9BA,EAAM,0BACHu8G,GAAcv8G,EAAM,KAAK,GACnBlnC,GAAAknC,EAAM,GAAIA,EAAM,KAAK,EAEhCA,EAAM,wBAA0B,IAG9BA,EAAM,qBAAuB,CAACA,EAAM,EAAG,CAEnC,MAAA1gE,EAAI,IAAIo3D,GAEZp3D,EAAA,UACA0gE,EAAM,GAAKA,EAAM,QAAQ,IAAM,GAC/BA,EAAM,GAAKA,EAAM,QAAQ,IAAM,EAAA,EAEjC1gE,EAAE,OAAO0gE,EAAM,OAAQnU,EAASC,CAAO,EACvCxsD,EAAE,MAAM0gE,EAAM,OAAQA,EAAM,OAAQnU,EAASC,CAAO,EAEhDkU,EAAM,QAAQ,SAChB1gE,EAAE,OAAO0gE,EAAM,OAAO,QAAS6nH,EAAaC,CAAW,GAErD9nH,EAAM,QAAQ,UAAY,GAAKA,EAAM,QAAQ,UAAY,IACzD1gE,EAAA,MACA0gE,EAAM,QAAQ,SAAW,EACzBA,EAAM,QAAQ,SAAW,EACzB6nH,EACAC,CAAA,EAGJ5sJ,GAAU8kC,EAAM,GAAI,CAAE,UAAW1gE,EAAE,WAAY,EAE/C0gE,EAAM,EAAI1gE,EACV0gE,EAAM,oBAAsB,EAC9B,CACF,CAwFA,GAvFI,KAAK,MAEP,KAAK,IAAI,OAGT,KAAK,IAAI,UACPA,EAAM,GAAKA,EAAM,QAAQ,IAAM,GAC/BA,EAAM,GAAKA,EAAM,QAAQ,IAAM,EAAA,EAEjC,KAAK,IAAI,OAAOI,GAASJ,EAAM,MAAM,EAAGnU,EAASC,CAAO,EACxD,KAAK,IAAI,MAAMkU,EAAM,OAAQA,EAAM,OAAQnU,EAASC,CAAO,EAEvDkU,EAAM,QAAQ,SAChB,KAAK,IAAI,OACPI,GAASJ,EAAM,OAAO,OAAO,EAC7B6nH,EACAC,CAAA,GAGA9nH,EAAM,QAAQ,UAAY,GAAKA,EAAM,QAAQ,UAAY,IAC3D,KAAK,IAAI,MACPA,EAAM,QAAQ,SAAW,EACzBA,EAAM,QAAQ,SAAW,EACzB6nH,EACAC,CAAA,EAIE9nH,EAAA,EAAI,KAAK,IAAI,cACGtkC,GAAA,KAAK,IAAKskC,EAAM,KAAK,EACrCA,EAAA,gBAAgB,KAAK,GAAG,EAC1B,KAAK,IAAI,yBACX,KAAK,IAAI,SAEP,KAAK,IAAI,uBACX,KAAK,IAAI,QAYTA,EAAM,YAEJ,KAAK,OACPA,EAAM,UACJA,EAAM,cACJ,KAAK,OACL,KAAK,IAAI,QAAQ,EACjB,KAAK,IAAI,QAAQ,IAEnBA,EAAM,gBACJ,KAAK,OACL,KAAK,IAAI,QAAQ,EACjB,KAAK,IAAI,QAAQ,CAAA,EAEZ,KAAK,IACdA,EAAM,UACJA,EAAM,cACJ,KAAK,IACL,KAAK,IAAI,QAAQ,EACjB,KAAK,IAAI,QAAQ,IAEnBA,EAAM,gBACJ,KAAK,IACL,KAAK,IAAI,QAAQ,EACjB,KAAK,IAAI,QAAQ,CAAA,EAGrBA,EAAM,UAAY,GAGpBA,EAAM,UAAY,GAGhBA,EAAM,YACR,KAAK,UAAU,SAAS,EACxB,KAAK,mBAAqBA,EAAM,IAI5BA,EAAA,WAAaA,EAAM,IAAM,KAAK,gBAElC,KAAK,IAAI,QAAQ,SAChBA,EAAM,YACJ,CAAC,KAAK,iBACLA,EAAM,WACNA,EAAM,MACNA,EAAM,KAAK,QACf,CACA,KAAK,UAAU,UAAU,EACzBA,EAAM,WAAa,GACnB,KAAK,gBAAkBA,EAAM,GAC7B,IAAI3c,EAAK,KAAK,IAAI,QAAQ,EAAI,KAAK,IAAI,MAAM,EACzCC,EAAK,KAAK,IAAI,QAAQ,EAAI,KAAK,IAAI,MAAM,EAC7C,GAAID,GAAMC,EAAI,CACZ,GAAI0c,EAAM,MAAQA,EAAM,KAAK,QAAUA,EAAM,KAAK,UAAW,CAC3D,MAAMwrH,EAAexrH,EAAM,KAAK,UAC7B,UAAU,CAAE,EAAGA,EAAM,CAAG,CAAA,EACxB,aAAa,KAAK,IAAI,QAAQ,EAAG,KAAK,IAAI,QAAQ,CAAC,EACjD3c,EAAAmoI,EAAa,MAAM,EAAIxrH,EAAM,EAC7B1c,EAAAkoI,EAAa,MAAM,EAAIxrH,EAAM,CACpC,EACI3c,GAAMC,KACF0c,EAAA,KAAK3c,EAAIC,CAAE,EACjB0c,EAAM,QAAQ,MAAM,OAAO,QAAS1oE,GAAM,CACpCA,EAAE,MAAM,eAAiBA,IAAM0oE,GAC/B1oE,EAAA,KAAK+rD,EAAIC,CAAE,CACf,CACD,EAEL,CACA,KAAK,IAAI,SAAS,KAAK,IAAI,OAAO,CAAA,MACzB0c,EAAM,WAAaA,EAAM,MAAQA,EAAM,KAAK,QACrD,KAAK,UAAU,MAAM,EAGnB,KAAK,KACP,KAAK,IAAI,SAEb,CAEI,CAAC,KAAK,oBAAsB,CAAC,KAAK,iBACpC,KAAK,UAAU,SAAS,CAE5B,CAEO,OAAQ,CACR,KAAA,OAAO,QAASA,GAAU,CACzBA,EAAM,KACRA,EAAM,GAAG,SACT,OAAOA,EAAM,GACf,CACD,EACG,KAAK,KACP,KAAK,IAAI,YAEX,KAAK,OAAS,EAChB,CAEO,kBAAkB9rC,EAGtB,CACK,MAAAu3J,EAAYv3J,GAAS,WAAa,EAClCw3J,EAAax3J,GAAS,YAAc,UAC1C,IAAIy3J,EAAe,GACnB,MAAMr0L,EAAI8jF,GACR,KAAK,QAAU,KAAK,WAAa,KAAK,UACtC,CACE,MAAO,IAAM,CACIuwG,EAAA,GACX,KAAK,MACP,KAAK,IAAI,OACT,KAAK,IAAI,UAAYF,EACrB,KAAK,IAAI,YAAcC,EACvB,KAAK,IAAI,YAEb,EACA,IAAK,IAAM,CACL,KAAK,KAEP,KAAK,IAAI,SAEb,CACF,CAAA,EACA,UAAW1wG,GAAQ,CACf,KAAK,MACF2wG,EAIH,KAAK,IAAI,OAAO3wG,EAAI,QAAQ,EAAGA,EAAI,QAAQ,CAAC,GAH7B2wG,EAAA,GACf,KAAK,IAAI,OAAO3wG,EAAI,QAAQ,EAAGA,EAAI,QAAQ,CAAC,GAI9C,KAAK,IAAI,SACX,CACD,EACD,MAAO,IAAM,CACX1jF,EAAE,YAAY,CAAA,CAElB,CAEO,mBAAmB48B,EAIvB,CACK,MAAAu3J,EAAYv3J,GAAS,WAAa,GAClC03J,EAAe13J,GAAS,cAAgB,GACxCw3J,EAAax3J,GAAS,YAAc,UACpC23J,EAAmB,IAAIC,GAAMJ,CAAU,EACvC/uL,EAAIkvL,EAAiB,EACrBt+K,EAAIs+K,EAAiB,EACrBj2K,EAAIi2K,EAAiB,EACrBv0L,EAAI8jF,GACR,KAAK,QAAU,KAAK,WAAa,KAAK,SAAA,EACtC,UAAWJ,GAAQ,CACnB,GAAI,KAAK,IAAK,CACN,MAAA3mC,EAAY,KAAK,IAAI,aACzB,EACA,EACA,KAAK,IAAI,OAAO,MAChB,KAAK,IAAI,OAAO,MAAA,EAEZ4wE,EAAS5wE,EAAU,KACzB,QAAS79C,EAAI,EAAGA,EAAIo1L,EAAcp1L,IAAK,CACrC,MAAMitD,EAAQ,KAAK,OAAO,EAAI,KAAK,GAAK,EAClCkF,EAAS,KAAK,OAAA,EAAW8iI,EACzBM,EAAQ/wG,EAAI,QAAQ,EAAI,KAAK,IAAIv3B,CAAK,EAAIkF,EAAU,EACpDqjI,EAAQhxG,EAAI,QAAQ,EAAI,KAAK,IAAIv3B,CAAK,EAAIkF,EAAU,EACpD1K,GAAU8tI,EAAOC,EAAO33I,EAAU,OAAS,EAEjD4wE,EAAOhnE,CAAM,EAAIthD,EACVsoH,EAAAhnE,EAAS,CAAC,EAAI1wC,EACd03G,EAAAhnE,EAAS,CAAC,EAAIroC,EACdqvG,EAAAhnE,EAAS,CAAC,EAAI,GACvB,CACK,KAAA,IAAI,aAAa5J,CAAS,CACjC,CAAA,CACD,EACD,MAAO,IAAM,CACX/8C,EAAE,YAAY,CAAA,CAElB,CAEO,YAAc,IAAM,CACrB,KAAK,QACPk8D,GAAuB,KAAK,MAAM,CACpC,CAEJ,CC1eO,MAAMy4H,WAAkB9qH,EAAM,CAC5B,WACA,WACA,SAEP,YAAYjtC,EAA4B,CAEtC,MAAM,CAAE,GAAGA,EAAS,QAAS,EAAG,QAAS,EAAG,EACvC,KAAA,WAAaA,GAAS,YAAc,EACzC,KAAK,WAAaA,GAAS,WAC3B,KAAK,SAAWA,GAAS,SACzB,KAAK,QAAQ,CACX,YAAa,KAAK,QAAQ,aAAa,GAAK,IAC5C,OAAQ,KAAK,YAAc,KAAK,QAAQ,QAAQ,GAAK,SAAA,CACtD,CACH,CAEU,YAAwB,CAOzB,OANO,IAAI+3J,GAAU,CAC1B,GAAG,MAAM,eAAe,EACxB,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,SAAU,KAAK,QAAA,CAChB,CAEH,CAGO,oBAAoBj1H,EAAiC,CACpD,MAAA+Q,EAAS7H,GAASzc,GAAM,KAAK,EAAG,KAAK,EAAGuT,EAAM,EAAGA,EAAM,CAAC,CAAC,EACzDk1H,EAAav0H,GAAS,KAAK,EAAG,KAAK,EAAGX,EAAM,EAAGA,EAAM,CAAC,GACxD+Q,GAAU,KAAK,QAAUmkH,GAAc,KAAK,cAC1CnkH,GAAU,KAAK,QACjB,KAAK,SAASA,CAAM,EAElBmkH,GAAc,KAAK,aACrB,KAAK,WAAaA,GAEpB,KAAK,kBAAoB,GAE7B,CAEO,eAAeC,EAAoBC,EAAkB,CAC1D,KAAK,WAAaD,EAClB,KAAK,SAAWC,EAChB,KAAK,QAAQ,CACX,OAAQ,KAAK,UAAA,CACd,CAEH,CACO,gBAAgBD,EAAoB,CACzC,KAAK,WAAaA,EAClB,KAAK,SAAW,OAChB,KAAK,QAAQ,CACX,OAAQ,KAAK,UAAA,CACd,CACH,CAEO,uBAAwB,CACtB,MAAA,CACL,EAAG,EACH,EAAG,EACH,MAAO,KAAK,WACZ,OAAQ,WAAW,KAAK,QAAQ,aAAa,CAAW,CAAA,CAE5D,CAEO,eAAqC,CACnC,MAAA,CACL,CAAC,IAAK,EAAG,CAAC,EACV,CAAC,IAAK,KAAK,WAAY,CAAC,CAAA,CAE5B,CAEO,gBAAgBxwJ,EAA4B,CAC7C,KAAK,YAAc,KAAK,UAE1B,KAAK,QAAQ,CACX,OAAQA,EAAI,qBAAqB,EAAG,EAAG,KAAK,WAAY,EAAG,CACzD,EAAG,KAAK,WACR,EAAG,KAAK,QAAA,CACT,CAAA,CACF,EAEHA,EAAI,UAAU,EACVA,EAAA,OAAO,EAAG,CAAC,EACXA,EAAA,OAAO,KAAK,WAAY,CAAC,CAC/B,CAGO,aAAauxB,EAAkD,CACpE,MAAM9jD,EAAK,KAAK,eAAe,EAAE,gBAAgB,CAAC,EAC5CkG,EAAK49C,EAAK,eAAe,EAAE,gBAAgB,CAAC,EAC3C,OAAA9jD,EAAG,aAAakG,CAAE,CAC3B,CACF,CClHO,MAAM+8K,WAAmBlrH,EAAM,CAC7B,GACA,GACA,IACA,IACA,cAEP,YAAYjtC,EAA6B,CACvC,MAAMA,CAAO,EACR,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,IAAMA,GAAS,KAAO,EACtB,KAAA,IAAMA,GAAS,KAAO,EAC3B,KAAK,cACH,OAAOA,GAAS,eAAiB,UAC7BA,EAAQ,cACR,GACN,KAAK,QAAQ,CACX,YAAa,KAAK,QAAQ,aAAa,GAAK,IAC5C,OAAQ,KAAK,QAAQ,QAAQ,GAAK,SAAA,CACnC,CACH,CAEU,YAAyB,CAS1B,OARO,IAAIm4J,GAAW,CAC3B,GAAG,MAAM,eAAe,EACxB,GAAI,KAAK,GACT,GAAI,KAAK,GACT,IAAK,KAAK,IACV,IAAK,KAAK,IACV,cAAe,KAAK,aAAA,CACrB,CAEH,CAGO,OAAOn4J,EAAqC,CAC7C,OAAOA,EAAQ,IAAM,WACvB,KAAK,GAAKA,EAAQ,GAClB,KAAK,kBAAoB,IAEvB,OAAOA,EAAQ,IAAM,WACvB,KAAK,GAAKA,EAAQ,GAClB,KAAK,kBAAoB,IAEvB,OAAOA,EAAQ,KAAO,WACxB,KAAK,IAAMA,EAAQ,IACnB,KAAK,kBAAoB,IAEvB,OAAOA,EAAQ,KAAO,WACxB,KAAK,IAAMA,EAAQ,IACnB,KAAK,kBAAoB,IAEvB,OAAOA,EAAQ,eAAiB,YAClC,KAAK,cAAgBA,EAAQ,cAC7B,KAAK,kBAAoB,GAE7B,CAEO,eAAqC,CAC1C,GAAI,KAAK,cAAe,CACtB,MAAM+6B,EAAM,KAAK,GAAK,GAAK,EAAI,KAAK,KAAO,EACrCC,EAAM,KAAK,GAAK,GAAK,EAAI,KAAK,KAAO,EACpC,MAAA,CACL,CAAC,IAAK,EAAG,CAAC,EACV,CAAC,IAAKD,EAAKC,EAAK,KAAK,IAAK,KAAK,GAAG,CAAA,CACpC,KAEO,OAAA,CACL,CAAC,IAAK,EAAG,CAAC,EACV,CAAC,IAAK,KAAK,GAAI,KAAK,GAAI,KAAK,IAAK,KAAK,GAAG,CAAA,CAGhD,CAEO,gBAAgBvzB,EAA4B,CAGjD,GAFAA,EAAI,UAAU,EACVA,EAAA,OAAO,EAAG,CAAC,EACX,KAAK,cAAe,CACtB,MAAMszB,EAAM,KAAK,GAAK,GAAK,EAAI,KAAK,KAAO,EACrCC,EAAM,KAAK,GAAK,GAAK,EAAI,KAAK,KAAO,EAC3CvzB,EAAI,iBAAiBszB,EAAKC,EAAK,KAAK,IAAK,KAAK,GAAG,CAAA,MAE7CvzB,EAAA,iBAAiB,KAAK,GAAI,KAAK,GAAI,KAAK,IAAK,KAAK,GAAG,CAE7D,CACF,CCrFO,MAAM2wJ,WAAoBnrH,EAAM,CAC7B,OACD,WAEP,YAAYjtC,EAA8B,CACxC,MAAMA,CAAO,EACR,KAAA,OAASA,GAAS,QAAU,CAAA,EACjC,KAAK,WACH,OAAOA,GAAS,YAAc,UAAYA,EAAQ,WAAa,GACjE,KAAK,QAAQ,CACX,YAAa,KAAK,QAAQ,aAAa,GAAK,IAC5C,OAAQ,KAAK,QAAQ,QAAQ,GAAK,SAAA,CACnC,CACH,CAEU,YAA0B,CAM3B,OALO,IAAIo4J,GAAY,CAC5B,GAAG,MAAM,eAAe,EACxB,OAAQ,CAAC,GAAG,KAAK,MAAM,EACvB,WAAY,KAAK,UAAA,CAClB,CAEH,CAGO,OAAOp4J,EAAsC,CAC9C,WAAYA,IACd,KAAK,OAAS,CAAC,GAAIA,EAAQ,QAAU,KAAK,MAAO,EACjD,KAAK,kBAAoB,IAEvB,OAAOA,EAAQ,YAAc,YAC/B,KAAK,WAAaA,EAAQ,WAC1B,KAAK,kBAAoB,GAE7B,CAEO,eAAqC,CAC1C,MAAMsC,EAA4B,CAAA,EAC9B,GAAA,KAAK,OAAO,OAAS,EAEhB,OAAAA,EAEH,MAAA4qE,EAAY,KAAK,OAAO,OAC9B,GAAI,KAAK,WAAY,CACnB5qE,EAAK,KAAK,CAAC,IAAK,KAAK,OAAO,CAAC,EAAE,EAAG,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,EACnD,QAAShgC,EAAI,EAAGA,GAAK4qG,EAAY,EAAG5qG,IAClCggC,EAAK,KAAK,CACR,IACA,KAAK,OAAOhgC,CAAC,EAAE,EAAI,KAAK,OAAOA,EAAI,CAAC,EAAE,EACtC,KAAK,OAAOA,CAAC,EAAE,EAAI,KAAK,OAAOA,EAAI,CAAC,EAAE,CAAA,CACvC,EAEEggC,EAAA,KAAK,CAAC,GAAG,CAAC,CAAA,KACV,CAEC,MAAA+1J,GAAe,KAAK,OAAO,CAAC,EAAE,EAAI,KAAK,OAAOnrF,EAAY,CAAC,EAAE,GAAK,EAClEorF,GAAe,KAAK,OAAO,CAAC,EAAE,EAAI,KAAK,OAAOprF,EAAY,CAAC,EAAE,GAAK,EACxE,IAAI1rB,EAAQ62G,EACR52G,EAAQ62G,EACZh2J,EAAK,KAAK,CAAC,IAAKk/C,EAAOC,CAAK,CAAC,EAE7B,QAASn/E,EAAI,EAAGA,EAAI4qG,EAAY,EAAG5qG,IAAK,CAChC,MAAAi2L,GAAc,KAAK,OAAOj2L,CAAC,EAAE,EAAI,KAAK,OAAOA,EAAI,CAAC,EAAE,GAAK,EACzDk2L,GAAc,KAAK,OAAOl2L,CAAC,EAAE,EAAI,KAAK,OAAOA,EAAI,CAAC,EAAE,GAAK,EAC/DggC,EAAK,KAAK,CACR,IACA,KAAK,OAAOhgC,CAAC,EAAE,EAAIk/E,EACnB,KAAK,OAAOl/E,CAAC,EAAE,EAAIm/E,EACnB82G,EAAa/2G,EACbg3G,EAAa/2G,CAAA,CACd,EACOD,EAAA+2G,EACA92G,EAAA+2G,CACV,CAEAl2J,EAAK,KAAK,CACR,IACA,KAAK,OAAO4qE,EAAY,CAAC,EAAE,EAAI1rB,EAC/B,KAAK,OAAO0rB,EAAY,CAAC,EAAE,EAAIzrB,EAC/B42G,EAAc72G,EACd82G,EAAc72G,CAAA,CACf,CACH,CACO,OAAAn/C,CACT,CAEO,gBAAgBmF,EAA4B,CAC7C,GAAA,KAAK,OAAO,OAAS,EAEvB,OAEFA,EAAI,UAAU,EACR,MAAAylE,EAAY,KAAK,OAAO,OAC9B,GAAI,KAAK,WAAY,CACfzlE,EAAA,OAAO,KAAK,OAAO,CAAC,EAAE,EAAG,KAAK,OAAO,CAAC,EAAE,CAAC,EAC7C,QAASnlC,EAAI,EAAGA,GAAK4qG,EAAY,EAAG5qG,IAC9BmlC,EAAA,OAAO,KAAK,OAAOnlC,CAAC,EAAE,EAAG,KAAK,OAAOA,CAAC,EAAE,CAAC,EAE/CmlC,EAAI,UAAU,CAAA,KACT,CAEC,MAAA4wJ,GAAe,KAAK,OAAO,CAAC,EAAE,EAAI,KAAK,OAAOnrF,EAAY,CAAC,EAAE,GAAK,EAClEorF,GAAe,KAAK,OAAO,CAAC,EAAE,EAAI,KAAK,OAAOprF,EAAY,CAAC,EAAE,GAAK,EACpEzlE,EAAA,OAAO4wJ,EAAaC,CAAW,EAEnC,QAAS,EAAI,EAAG,EAAIprF,EAAY,EAAG,IAAK,CAChC,MAAAqrF,GAAc,KAAK,OAAO,CAAC,EAAE,EAAI,KAAK,OAAO,EAAI,CAAC,EAAE,GAAK,EACzDC,GAAc,KAAK,OAAO,CAAC,EAAE,EAAI,KAAK,OAAO,EAAI,CAAC,EAAE,GAAK,EAC3D/wJ,EAAA,iBACF,KAAK,OAAO,CAAC,EAAE,EACf,KAAK,OAAO,CAAC,EAAE,EACf8wJ,EACAC,CAAA,CAEJ,CAEI/wJ,EAAA,iBACF,KAAK,OAAOylE,EAAY,CAAC,EAAE,EAC3B,KAAK,OAAOA,EAAY,CAAC,EAAE,EAC3BmrF,EACAC,CAAA,CAEJ,CACF,CAEO,eAAex1H,EAAiC,CAC/C,MAAAzX,EAAQ,KAAK,OAAO,OAC1B,IAAIotI,EAAW,GACf,MAAMp1H,EAAY,MAET,QAAA,EAAI,EAAG76C,EAAI6iC,EAAQ,EAAG,EAAIA,EAAO7iC,EAAI,EAAG,IAAK,CACpD,MAAM3Q,EAAK,KAAK,OAAO,CAAC,EAAE,EACpBnB,EAAK,KAAK,OAAO,CAAC,EAAE,EACpBoH,EAAK,KAAK,OAAO0K,CAAC,EAAE,EACpBrM,EAAK,KAAK,OAAOqM,CAAC,EAAE,EAS1B,GANG3Q,IAAOirD,EAAM,GAAKpsD,IAAOosD,EAAM,GAC/BhlD,IAAOglD,EAAM,GAAK3mD,IAAO2mD,EAAM,GAK9BA,EAAM,IAAMpsD,GAAMosD,EAAM,IAAM3mD,EACzB,MAAA,GAGJ,GAAA2mD,EAAM,GAAKpsD,GAAMosD,EAAM,EAAI3mD,GAAQ2mD,EAAM,EAAIpsD,GAAMosD,EAAM,GAAK3mD,EAAK,CAChE,MAAAvQ,GAAKkS,EAAKjG,IAAOsE,EAAKzF,GACtBs7D,EAAKn6D,EAAKjM,GAAKk3D,EAAM,EAAIpsD,GAM/B,GAJIs7D,IAAOlP,EAAM,GAIb,KAAK,IAAIkP,EAAKlP,EAAM,CAAC,EAAIO,EACpB,MAAA,GAGL2O,EAAKlP,EAAM,IACb21H,EAAW,CAACA,EAEhB,CACF,CAEO,OAAAA,CACT,CAEA,CAAQ,OAAO,QAAQ,GAAI,CACzB,IAAI1uJ,EAAQ,GACL,MAAA,CACL,KAAM,KAAO,CACX,MACEA,GAAS,KAAK,OAAO,OAAS,EAAI,KAAK,OAAO,EAAEA,CAAK,EAAI,OAC3D,KAAMA,GAAS,KAAK,OAAO,MAAA,EAC7B,CAEJ,CAEA,OAAc,SACZ4tB,EACAC,EACA8gI,EACAC,EACa,CACb,MAAMh3H,EAAqC,CAAA,EAC3C,QAASr/D,EAAI,EAAGA,EAAIq2L,EAAWr2L,IAAK,CAClC,MAAM4sD,EAAS5sD,EAAIq2L,EAAa,EAAI,KAAK,GACnC,CAAE,GAAAxpI,EAAI,GAAAC,CAAA,EAAO6c,GAAM/c,EAAOwpI,CAAY,EACrC/2H,EAAA,KAAK,CAAE,EAAGhK,EAAUxI,EAAI,EAAGyI,EAAUxI,EAAI,CAClD,CACA,OAAO,IAAIgpI,GAAY,CAAE,OAAAz2H,CAAA,CAAQ,CACnC,CACF,CC5MO,MAAMi3H,WAAuB3D,EAAW,CACrC,OAAS,IAEjB,YAAYj1J,EAA6B,CACvC,MAAMA,CAAO,EAEP,MAAA64J,EAAQ,IAAId,GAAU,CAC1B,KAAM,CACJ,cAAe,EACjB,EACA,WAAY,KAAK,MAAA,CAClB,EACD,KAAK,SAASc,CAAK,EAEb,MAAAC,EAAQ,IAAIf,GAAU,CAC1B,KAAM,CACJ,cAAe,EACjB,EACA,WAAY,GAAK,KAAK,OAAW,EAAA,EAAA,CAClC,EACD,KAAK,SAASe,EAAO,CACnB,GAAI,GAAK,KAAK,OAAW,EAAA,GACzB,QAAS,KAAK,OAAA,EAAW,EAAA,CAC1B,EAEK,MAAAC,EAAQ,IAAIhB,GAAU,CAC1B,KAAM,CACJ,cAAe,EACjB,EACA,WAAY,GAAK,KAAK,OAAW,EAAA,EAAA,CAClC,EACD,KAAK,SAASgB,EAAO,CACnB,GAAI,GAAK,KAAK,OAAW,EAAA,GACzB,QAAS,CAAC,KAAK,OAAA,EAAW,EAAA,CAC3B,EAEI,KAAA,YAAY,IAAK,EAAI,CAC5B,CAEU,iBAAkC,CAEnC,OADY,IAAIH,GAAe,MAAM,eAAgB,CAAA,CAE9D,CACF,CCrCO,MAAMI,WAAkB/rH,EAAM,CAC5B,WAEP,YAAYjtC,EAA4B,CACtC,MAAMA,CAAO,EACR,KAAA,WAAaA,GAAS,YAAc,CAC3C,CAEU,YAAwB,CAKzB,OAJO,IAAIg5J,GAAU,CAC1B,GAAG,MAAM,eAAe,EACxB,WAAY,KAAK,UAAA,CAClB,CAEH,CAGO,OAAOh5J,EAAoC,CAC5C,OAAOA,EAAQ,YAAc,WAC/B,KAAK,WAAaA,EAAQ,WAC1B,KAAK,kBAAoB,GAE7B,CAEO,uBAAwB,CACtB,MAAA,CACL,EAAG,CAAC,KAAK,WACT,EAAG,CAAC,KAAK,WACT,MAAO,KAAK,WAAa,EACzB,OAAQ,KAAK,WAAa,CAAA,CAE9B,CAEO,SAAsB,CACrB,MAAAJ,EAAKs/B,GAAiB,QAAQ,EACpC,YAAK,QAAQ,CACX,GAAI,IACJ,GAAI,IACJ,EAAG,OAAO,KAAK,UAAU,CAAA,CAC1B,EACMt/B,CACT,CAEO,eAAqC,CAC1C,OAAI,KAAK,WACA,CACL,CAAC,IAAK,EAAG,CAAC,KAAK,UAAU,EACzB,CACE,IACA,KAAK,WACL,KAAK,WACL,EACA,EACA,EACA,EACA,EAAI,KAAK,UACX,EACA,CACE,IACA,KAAK,WACL,KAAK,WACL,EACA,EACA,EACA,EACA,GAAK,KAAK,UACZ,EACA,CAAC,GAAG,CAAA,EAGC,CAAC,CAAC,IAAK,EAAG,CAAC,CAAC,CAEvB,CAEO,gBAAgB6H,EAAsB,CAC3CA,EAAI,UAAU,EACVA,EAAA,IAAI,EAAG,EAAG,KAAK,WAAY,EAAG,KAAK,GAAK,EAAG,EAAI,EACnDA,EAAI,UAAU,CAChB,CAEO,GAAGwxJ,EAA0B,CAClC,OACE,KAAK,IAAMA,EAAK,GAChB,KAAK,IAAMA,EAAK,GAChB,KAAK,aAAeA,EAAK,YACzB,KAAK,OAASA,EAAK,IAEvB,CAEO,YAAYA,EAAiB,CAC3B,MAAA,CACL,EAAG,KAAK,GAAKA,EAAK,EAAI,KAAK,GAAK,EAChC,EAAG,KAAK,GAAKA,EAAK,EAAI,KAAK,GAAK,CAAA,CAEpC,CAEO,QAAS,CACd,OAAO37J,GAAO,KAAK,EAAG,KAAK,CAAC,CAC9B,CAEO,OAAOmwC,EAAe,CAC3B,YAAK,OAAO,KAAK,EAAIA,EAAO,KAAK,EAAIA,CAAK,EACnC,IACT,CAEO,UAAU3rB,EAAM,EAAc,CAC7B,MAAAmiB,EAAc,KAAK,SACzB,GAAIA,EAAa,CACf,MAAMwJ,EAAQ3rB,EAAMmiB,EACpB,KAAK,OAAOwJ,CAAK,CACnB,CACO,OAAA,IACT,CAEO,MAAM3rB,EAAa,CAClB,MAAAmiB,EAAc,KAAK,SACrB,OAAAA,GAAeA,EAAcniB,GAC1B,KAAA,OAAOA,EAAMmiB,CAAW,EAExB,IACT,CAEO,MAAMljD,EAA8B,CACzC,MAAMuB,EAAI,KAAK,EACThX,EAAI,KAAK,EACR,MAAA,CACL,EAAGA,EAAIyV,EAAG,EAAIuB,EAAIvB,EAAG,EACrB,EAAGuB,EAAIvB,EAAG,EAAIzV,EAAIyV,EAAG,CAAA,CAEzB,CAEO,SAASA,EAA8B,CACrC,MAAA,CACL,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,CAAA,CAEnB,CAEO,IAAIA,EAA8B,CAChC,MAAA,CACL,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,CAAA,CAEnB,CAEO,IAAIA,EAA8B,CAChC,MAAA,CACL,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,CAAA,CAEnB,CAEO,IAAIA,EAA8B,CAChC,MAAA,CACL,EAAG,KAAK,EAAIA,EAAG,EACf,EAAG,KAAK,EAAIA,EAAG,CAAA,CAEnB,CAEO,IAAIA,EAAsC,CAC/C,OAAO,KAAK,EAAIA,EAAG,EAAI,KAAK,EAAIA,EAAG,CACrC,CAEO,QAAQA,EAA8B,CACrC,MAAAgE,EAAK,KAAK,IAAIhE,CAAE,EACf,MAAA,CACL,EAAG,KAAK,EAAI,EAAIgE,EAAKhE,EAAG,EACxB,EAAG,KAAK,EAAI,EAAIgE,EAAKhE,EAAG,CAAA,CAE5B,CACF,CC/KO,MAAMm4K,WAAmBjsH,EAAM,CACpC,YAAYjtC,EAAwB,CAClC,MAAMA,CAAO,CACf,CAEU,YAAyB,CAI1B,OAHO,IAAIk5J,GAAW,CAC3B,GAAG,MAAM,eAAe,CAAA,CACzB,CAEH,CAEO,eAAqC,CACnC,MAAA,CACL,CAAC,IAAK,IAAK,GAAG,EACd,CAAC,IAAK,GAAI,CAAC,EACX,CAAC,IAAK,EAAG,GAAG,EACZ,CAAC,IAAK,GAAI,EAAE,EACZ,CAAC,IAAK,IAAK,EAAE,EACb,CAAC,IAAK,EAAG,GAAG,EACZ,CAAC,IAAK,IAAK,CAAC,EACZ,CAAC,IAAK,EAAG,GAAG,EACZ,CAAC,GAAG,CAAA,CAER,CAEO,gBAAgBzxJ,EAAsB,CAC3CA,EAAI,UAAU,EACVA,EAAA,OAAO,IAAK,GAAG,EACfA,EAAA,OAAO,EAAG,GAAG,EACbA,EAAA,OAAO,EAAG,GAAG,EACbA,EAAA,OAAO,GAAI,CAAC,EACZA,EAAA,OAAO,EAAG,EAAE,EACZA,EAAA,OAAO,EAAG,EAAE,EACZA,EAAA,OAAO,IAAK,EAAE,EACdA,EAAA,OAAO,IAAK,GAAG,EACnBA,EAAI,UAAU,CAChB,CACF,CC/BO,MAAM0xJ,WAAkBlsH,EAAM,CACnC,UACA,WACA,iBAEA,YAAYjtC,EAA2B,CACrC,MAAMA,CAAO,EACR,KAAA,UAAYA,EAAQ,WAAa,EACjC,KAAA,WAAaA,EAAQ,YAAc,EACnC,KAAA,iBAAmBA,EAAQ,kBAAoB,CACtD,CAEU,YAAwB,CAOzB,OANO,IAAIm5J,GAAU,CAC1B,GAAG,MAAM,eAAe,EACxB,UAAW,KAAK,UAChB,WAAY,KAAK,WACjB,iBAAkB,KAAK,gBAAA,CACxB,CAEH,CAGO,OAAOn5J,EAAoC,CAC5C,OAAOA,EAAQ,WAAa,WAC9B,KAAK,UAAYA,EAAQ,UACzB,KAAK,kBAAoB,IAEvB,OAAOA,EAAQ,YAAc,WAC/B,KAAK,WAAaA,EAAQ,WAC1B,KAAK,kBAAoB,IAEvB,OAAOA,EAAQ,kBAAoB,WACrC,KAAK,iBAAmBA,EAAQ,iBAChC,KAAK,kBAAoB,GAE7B,CAEO,uBAAwB,CACtB,MAAA,CACL,EAAG,EACH,EAAG,EACH,MAAO,KAAK,UACZ,OAAQ,KAAK,UAAA,CAEjB,CAEO,SAA6B,CAC5B,MAAAJ,EAAKs/B,GAAiB,MAAM,EAClC,YAAK,QAAQ,CACX,EAAG,IACH,EAAG,IACH,MAAO,OAAO,KAAK,SAAS,EAC5B,OAAQ,OAAO,KAAK,UAAU,EAC9B,GAAI,OAAO,KAAK,gBAAgB,EAChC,GAAI,OAAO,KAAK,gBAAgB,CAAA,CACjC,EACMt/B,CACT,CAEO,eAAqC,CACtC,OAAC,KAAK,iBASD,CACL,CAAC,IAAK,KAAK,iBAAkB,CAAC,EAC9B,CAAC,IAAK,KAAK,UAAY,KAAK,iBAAmB,EAAG,CAAC,EACnD,CACE,IACA,KAAK,iBACL,KAAK,iBACL,EACA,EACA,EACA,KAAK,iBACL,KAAK,gBACP,EACA,CAAC,IAAK,EAAG,KAAK,WAAa,KAAK,iBAAmB,CAAC,EACpD,CACE,IACA,KAAK,iBACL,KAAK,iBACL,EACA,EACA,EACA,CAAC,KAAK,iBACN,KAAK,gBACP,EACA,CAAC,IAAK,KAAK,iBAAmB,EAAI,KAAK,UAAW,CAAC,EACnD,CACE,IACA,KAAK,iBACL,KAAK,iBACL,EACA,EACA,EACA,CAAC,KAAK,iBACN,CAAC,KAAK,gBACR,EACA,CAAC,IAAK,EAAG,KAAK,iBAAmB,EAAI,KAAK,UAAU,EACpD,CACE,IACA,KAAK,iBACL,KAAK,iBACL,EACA,EACA,EACA,KAAK,iBACL,CAAC,KAAK,gBACR,EACA,CAAC,GAAG,CAAA,EAtDC,CACL,CAAC,IAAK,EAAG,CAAC,EACV,CAAC,IAAK,KAAK,UAAW,CAAC,EACvB,CAAC,IAAK,EAAG,KAAK,UAAU,EACxB,CAAC,IAAK,CAAC,KAAK,UAAW,CAAC,EACxB,CAAC,GAAG,CAAA,CAoDV,CAEO,gBAAgB6H,EAAsB,CAC3CA,EAAI,UAAU,EACV,KAAK,kBAAoB,EAC3BA,EAAI,KAAK,EAAG,EAAG,KAAK,UAAW,KAAK,UAAU,GAE1CA,EAAA,OAAO,EAAG,KAAK,gBAAgB,EACnCA,EAAI,OAAO,EAAG,KAAK,WAAa,KAAK,gBAAgB,EACjDA,EAAA,iBACF,EACA,KAAK,WACL,KAAK,iBACL,KAAK,UAAA,EAEPA,EAAI,OAAO,KAAK,UAAY,KAAK,iBAAkB,KAAK,UAAU,EAC9DA,EAAA,iBACF,KAAK,UACL,KAAK,WACL,KAAK,UACL,KAAK,WAAa,KAAK,gBAAA,EAEzBA,EAAI,OAAO,KAAK,UAAW,KAAK,gBAAgB,EAC5CA,EAAA,iBACF,KAAK,UACL,EACA,KAAK,UAAY,KAAK,iBACtB,CAAA,EAEEA,EAAA,OAAO,KAAK,iBAAkB,CAAC,EACnCA,EAAI,iBAAiB,EAAG,EAAG,EAAG,KAAK,gBAAgB,GAErDA,EAAI,UAAU,CAChB,CAEA,OAAc,gBACZ2xJ,EACAC,EACAt+H,EACAC,EACAyH,EACAC,EACA42H,EACAC,EACW,CAWL,MAAAnkI,EAVc,IAAIgG,GAAY,CAClC,EAAGg+H,EACH,EAAGC,EACH,IAAAt+H,EACA,IAAAC,EACA,IAAAyH,EACA,IAAAC,EACA,IAAK42H,EACL,IAAKC,CAAA,CACN,EACwB,wBACzB,OAAO,IAAIJ,GAAU,CACnB,EAAG/jI,EAAK,EACR,EAAGA,EAAK,EACR,UAAWA,EAAK,MAChB,WAAYA,EAAK,MAAA,CAClB,CACH,CAEO,GAAGA,EAA0B,CAClC,OACE,KAAK,IAAMA,EAAK,GAChB,KAAK,IAAMA,EAAK,GAChB,KAAK,YAAcA,EAAK,WACxB,KAAK,aAAeA,EAAK,YACzB,KAAK,mBAAqBA,EAAK,gBAEnC,CAEO,aAAaA,EAA0B,CACrC,MAAA,EACL,KAAK,EAAI,KAAK,UAAYA,EAAK,GAC/BA,EAAK,EAAIA,EAAK,UAAY,KAAK,GAC/B,KAAK,EAAI,KAAK,WAAaA,EAAK,GAChCA,EAAK,EAAIA,EAAK,WAAa,KAAK,EAEpC,CAEO,eAAep7C,EAA6B,CACjD,OACEA,EAAE,GAAK,KAAK,GACZA,EAAE,GAAK,KAAK,EAAI,KAAK,WACrBA,EAAE,GAAK,KAAK,GACZA,EAAE,GAAK,KAAK,EAAI,KAAK,UAEzB,CACF,CCpNO,MAAMw/K,WAAmBvsH,EAAM,CACpC,GACA,GAEA,YAAYjtC,EAA6B,CACvC,MAAMA,CAAO,EACR,KAAA,GAAKA,GAAS,SAAW,GACzB,KAAA,GAAKA,GAAS,SAAW,EAChC,CAEU,YAAyB,CAM1B,OALO,IAAIw5J,GAAW,CAC3B,GAAG,MAAM,eAAe,EACxB,QAAS,KAAK,GACd,QAAS,KAAK,EAAA,CACf,CAEH,CAEO,eAAqC,CACnC,MAAA,CACL,CAAC,IAAK,EAAG,CAAC,EAEV,CAAC,IAAK,KAAK,GAAK,IAAK,CAAC,KAAK,GAAK,IAAI,EAEpC,CAAC,IAAK,KAAK,GAAK,EAAG,KAAK,GAAK,EAAG,EAAG,EAAG,EAAG,CAAC,KAAK,GAAK,IAAK,CAAC,KAAK,GAAK,GAAG,EAEvE,CAAC,IAAK,KAAK,GAAK,EAAG,KAAK,GAAK,EAAG,EAAG,EAAG,EAAG,CAAC,KAAK,GAAK,IAAK,KAAK,GAAK,GAAG,EAEtE,CAAC,IAAK,KAAK,GAAK,IAAK,KAAK,GAAK,IAAI,EACnC,CAAC,GAAG,CAAA,CAER,CACF,CCjCO,MAAMC,WAA0BxsH,EAAM,CAC3C,GACA,GAEA,YAAYjtC,EAAoC,CAC9C,MAAMA,CAAO,EACR,KAAA,GAAKA,GAAS,SAAW,GACzB,KAAA,GAAKA,GAAS,SAAW,EAChC,CAEU,YAAgC,CAMjC,OALO,IAAIy5J,GAAkB,CAClC,GAAG,MAAM,eAAe,EACxB,QAAS,KAAK,GACd,QAAS,KAAK,EAAA,CACf,CAEH,CAEO,eAAqC,CACnC,MAAA,CACL,CAAC,IAAK,EAAG,EAAI,KAAK,GAAK,EAAG,EAE1B,CAAC,IAAK,EAAG,EAAG,EAAI,KAAK,GAAK,EAAG,EAAG,EAAI,KAAK,GAAK,EAAG,EAAI,KAAK,GAAK,EAAG,EAElE,CACE,IACA,EAAI,KAAK,GAAK,EACd,GAAK,KAAK,GAAK,KAAK,GAAK,IAAO,EAChC,EACA,GAAK,KAAK,GAAK,KAAK,GAAK,IAAO,IAChC,EACA,EAAI,KAAK,EACX,EAEA,CACE,IACA,EACA,GAAK,KAAK,GAAK,KAAK,GAAK,IAAO,IAChC,EAAI,KAAK,GAAK,EACd,GAAK,KAAK,GAAK,KAAK,GAAK,IAAO,EAChC,EAAI,KAAK,GAAK,EACd,EAAI,KAAK,GAAK,EAChB,EAEA,CAAC,IAAK,EAAI,KAAK,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAI,KAAK,GAAK,EAAG,EACpD,CAAC,GAAG,CAAA,CAER,CACF,CCjDO,MAAMC,WAAkBzsH,EAAM,CACnC,EAEA,YAAYjtC,EAA4B,CACtC,MAAMA,CAAO,EACR,KAAA,EAAIA,GAAS,OAAS,EAC7B,CAEU,YAAwB,CAKzB,OAJO,IAAI05J,GAAU,CAC1B,GAAG,MAAM,eAAe,EACxB,MAAO,KAAK,CAAA,CACb,CAEH,CAEO,eAAqC,CACpC,MAAAp3J,EAA4B,CAAC,CAAC,IAAK,EAAG,CAAC,KAAK,CAAC,CAAC,EACpD,QAASt3B,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAG,CAEvB,MAAA6oE,EAAS,IAAW7oE,EAAI,IACxBwuD,EAAK,KAAK,EAAI,KAAK,IAAI0S,GAAS2H,CAAM,CAAC,EACvCpa,EAAK,KAAK,EAAI,KAAK,IAAIyS,GAAS2H,CAAM,CAAC,EAC7CvxC,EAAK,KAAK,CAAC,IAAKk3B,EAAIC,CAAE,CAAC,CACzB,CACO,OAAAn3B,CACT,CACF,CChCO,MAAMq3J,WAAiB1sH,EAAM,CAClC,YAAYjtC,EAAwB,CAClC,MAAMA,CAAO,CACf,CAEU,YAAuB,CAIxB,OAHO,IAAI25J,GAAS,CACzB,GAAG,MAAM,eAAe,CAAA,CACzB,CAEH,CAEO,eAAqC,CACnC,MAAA,CACL,CAAC,IAAK,EAAG,EAAE,EACX,CAAC,IAAK,EAAG,EAAE,EACX,CAAC,IAAK,EAAG,EAAE,EACX,CAAC,IAAK,EAAG,GAAG,EACZ,CAAC,IAAK,GAAI,GAAG,EACb,CAAC,IAAK,GAAI,EAAE,EACZ,CAAC,IAAK,GAAI,CAAC,EACX,CAAC,IAAK,GAAI,GAAG,EACb,CAAC,IAAK,GAAI,EAAE,EACZ,CAAC,IAAK,EAAG,EAAE,EACX,CAAC,IAAK,EAAG,CAAC,EACV,CAAC,IAAK,EAAG,CAAC,EACV,CAAC,GAAG,CAAA,CAER,CAEO,gBAAgBlyJ,EAAsB,CAC3CA,EAAI,UAAU,EACVA,EAAA,OAAO,EAAG,EAAE,EACZA,EAAA,OAAO,EAAG,EAAE,EACZA,EAAA,OAAO,GAAI,EAAE,EACbA,EAAA,OAAO,GAAI,CAAC,EACZA,EAAA,OAAO,EAAG,GAAG,EACbA,EAAA,OAAO,EAAG,CAAC,EACXA,EAAA,OAAO,GAAI,CAAC,EACZA,EAAA,OAAO,GAAI,GAAG,EACdA,EAAA,OAAO,IAAK,CAAC,EACbA,EAAA,OAAO,IAAK,EAAE,EACdA,EAAA,OAAO,GAAI,EAAE,EACbA,EAAA,OAAO,GAAI,EAAE,EACjBA,EAAI,UAAU,CAChB,CACF,CC9CO,MAAMmyJ,WAAoB3sH,EAAM,CACrC,YAAYjtC,EAAwB,CAClC,MAAMA,CAAO,CACf,CAEU,YAA0B,CAI3B,OAHO,IAAI45J,GAAY,CAC5B,GAAG,MAAM,eAAe,CAAA,CACzB,CAEH,CAEO,eAAqC,CACnC,MAAA,CACL,CAAC,IAAK,EAAG,CAAC,EACV,CAAC,IAAK,GAAI,EAAG,GAAI,IAAK,EAAG,GAAG,EAC5B,CAAC,IAAK,EAAG,CAAC,EACV,CAAC,IAAK,IAAK,EAAG,IAAK,IAAK,GAAI,GAAG,EAC/B,CAAC,IAAK,EAAG,CAAC,EACV,CAAC,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAI,EAAE,EAChC,CAAC,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAK,EAAE,CAAA,CAErC,CACF,CCvBO,MAAMC,WAAmB5sH,EAAM,CACpC,YAAYjtC,EAAwB,CAC5B,MAAA,CACJ,GAAGA,EACH,MAAO,qSAAA,CACR,CACH,CAEU,YAAyB,CAI1B,OAHO,IAAI65J,GAAW,CAC3B,GAAG,MAAM,eAAe,CAAA,CACzB,CAEH,CACF,CCRO,MAAMC,WAAqB7sH,EAAM,CAC/B,GACA,GAEP,YAAYjtC,EAA8B,CACxC,MAAMA,CAAO,EACR,KAAA,GAAKA,GAAS,IAAM,EACpB,KAAA,GAAKA,GAAS,IAAM,CAC3B,CAEU,YAA2B,CAM5B,OALO,IAAI85J,GAAa,CAC7B,GAAG,MAAM,eAAe,EACxB,GAAI,KAAK,GACT,GAAI,KAAK,EAAA,CACV,CAEH,CAEO,uBAAwB,CACtB,MAAA,CACL,EAAG,KAAK,EAAI,KAAK,GACjB,EAAG,KAAK,EAAI,KAAK,GACjB,MAAO,KAAK,GAAK,EACjB,OAAQ,KAAK,GAAK,CAAA,CAEtB,CAEO,SAAsB,CACrB,MAAAl6J,EAAKs/B,GAAiB,SAAS,EACrC,YAAK,QAAQ,CACX,GAAI,IACJ,GAAI,IACJ,GAAI,OAAO,KAAK,EAAE,EAClB,GAAI,OAAO,KAAK,EAAE,CAAA,CACnB,EACMt/B,CACT,CAEO,eAAqC,CACnC,MAAA,CACL,CAAC,IAAK,EAAG,CAAC,KAAK,EAAE,EACjB,CAAC,IAAK,KAAK,GAAI,KAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAI,KAAK,EAAE,EAC/C,CAAC,IAAK,KAAK,GAAI,KAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAK,KAAK,EAAE,EAChD,CAAC,GAAG,CAAA,CAER,CAEO,gBAAgB6H,EAAsB,CAC3CA,EAAI,UAAU,EAKdA,EAAI,QAAQ,EAAG,EAAG,KAAK,GAAI,KAAK,GAAI,EAAG,EAAG,EAAI,KAAK,GAAI,EAAI,EAC3DA,EAAI,UAAU,CAChB,CACF,CC7DO,MAAMsyJ,WAAuB9E,EAAW,CACnC,UACA,MACA,KAEV,YAAYj1J,EAAiC,CAC3C,MAAMA,CAAO,EAEb,KAAK,UACH,OAAOA,GAAS,WAAa,UAAYA,GAAS,UAAY,GAE3D,KAAA,MAAQ,IAAIitC,GAAM,CACrB,MAAO,CAAC,CAAC,IAAK,IAAK,CAAC,EAAG,CAAC,IAAK,KAAM,EAAE,EAAG,CAAC,IAAK,KAAM,CAAC,EAAG,CAAC,GAAG,CAAC,EAC7D,KAAM,CACJ,cAAe,EACjB,CAAA,CACD,EACG,KAAK,WACF,KAAA,SAAS,KAAK,KAAK,EAGrB,KAAA,KAAO,IAAIA,GAAM,CACpB,MAAO,CACL,CAAC,IAAK,GAAI,CAAC,EACX,CAAC,IAAK,IAAK,EAAE,EACb,CAAC,IAAK,GAAI,CAAC,EACX,CAAC,IAAK,IAAK,GAAG,EACd,CAAC,IAAK,GAAI,CAAC,EACX,CAAC,GAAG,CACN,EACA,KAAM,CACJ,cAAe,EACjB,CAAA,CACD,EACI,KAAA,SAAS,KAAK,IAAI,CACzB,CAEU,iBAAkC,CAKnC,OAJY,IAAI8sH,GAAe,CACpC,GAAG,MAAM,eAAe,EACxB,UAAW,KAAK,SAAA,CACjB,CAEH,CAGO,OAAO/5J,EAAgC,CACxC,OAAOA,GAAS,WAAa,YAC/B,KAAK,OAAS,GACd,KAAK,UAAYA,GAAS,UACtB,KAAK,WACF,KAAA,SAAS,KAAK,KAAK,EAErB,KAAA,SAAS,KAAK,IAAI,EAE3B,CACF,CCnDO,MAAMg6J,WAA0B/E,EAAW,CAChD,MACA,OACA,aAEA,YAAYj1J,EAAmC,CAC7C,MAAMA,CAAO,EAEb,KAAK,MAAQA,EAAQ,aACrB,KAAK,OAASA,EAAQ,cAEjB,KAAA,aACH,OAAOA,EAAQ,qBAAuB,SAClCA,EAAQ,oBACR,KAAK,OAAS,GAGd,MAAAi6J,EAAW,IAAId,GAAU,CAC7B,KAAM,CACJ,cAAe,EACjB,EACA,UAAW,KAAK,MAAQ,KAAK,aAAe,EAC5C,WAAY,KAAK,OACjB,iBAAkB,KAAK,YAAA,CACxB,EACD,KAAK,SAASc,EAAU,CACtB,GAAI,EAAI,KAAK,aACb,GAAI,EAAI,KAAK,OAAS,EAAA,CACvB,EAGK,MAAAC,EAAe,IAAIlB,GAAU,CACjC,KAAM,CACJ,cAAe,EACjB,EACA,WAAY,CAAA,CACb,EACD,KAAK,SAASkB,CAAY,EAGpB,MAAAC,EAAa,IAAInB,GAAU,CAC/B,KAAM,CACJ,cAAe,EACjB,EACA,WAAY,CAAA,CACb,EACD,KAAK,SAASmB,EAAY,CAAE,GAAI,EAAI,KAAK,MAAO,CAClD,CAEU,iBAAqC,CAOtC,OANY,IAAIH,GAAkB,CACvC,GAAG,MAAM,eAAe,EACxB,aAAc,KAAK,MACnB,cAAe,KAAK,OACpB,oBAAqB,KAAK,YAAA,CAC3B,CAEH,CAGO,6BAA8B,CAC5B,MAAA,CACL,EAAG,EACH,EAAG,CAAA,CAEP,CAGA,QAAS,CACD,MAAAE,EAAe,KAAK,OAAO,CAAC,EAC3B,MAAA,CACL,EAAGA,EAAa,EAAI,KAAK,IAAIhuH,GAASguH,EAAa,MAAM,CAAC,EAAI,KAAK,MACnE,EAAGA,EAAa,EAAI,KAAK,IAAIhuH,GAASguH,EAAa,MAAM,CAAC,EAAI,KAAK,KAAA,CAEvE,CACF,CCpEO,MAAME,WAAyBnF,EAAW,CACrC,QACH,OAA0B,IAAIlmJ,GAC9B,aAEP,YAAY/O,EAAmC,CAC7C,MAAMA,CAAO,EACb,KAAK,QAAUA,EAET,MAAA0uB,EAAM1uB,GAAS,WAAa,EAC5BoiB,EAAMpiB,GAAS,WAAa,IAC5BmI,EAAOnI,GAAS,YAAc,EAE9Bq6J,EAAWC,GAAQ5rI,EAAKtM,EAAKja,CAAI,EAEjCtD,EAAQw1J,EACZ,OAAOr6J,GAAS,oBAAsB,SAClCpC,GAAMoC,EAAQ,mBAAoB0uB,EAAKtM,CAAG,EAC1CsM,CAAA,EAED,KAAA,OAAO,KAAK7pB,CAAK,EAEhB,MAAAgkE,EAAUhkE,GAASud,EAAMsM,GAEzB6rI,EAAYv6J,GAAS,aAAe,IACpCw6J,EAAax6J,GAAS,cAAgB,EACtCy6J,EAAmBD,EAAa,GAChCE,EAAaF,EAAa,IAE1BxzI,EAAkBhnB,GAAS,uBAAyB,UACpD26J,EAAkB36J,GAAS,uBAAyB,UAEpD46J,EAAiB,IAAIzB,GAAU,CACnC,UAAAoB,EACA,WAAAC,EACA,iBAAAC,EACA,MAAO,CACL,KAAMzzI,CACR,EACA,KAAM,CACJ,OAAQ,EACV,CAAA,CACD,EACD,KAAK,SAAS4zI,CAAc,EAEtB,MAAAC,EAAa,IAAI1B,GAAU,CAC/B,UAAWoB,EAAY1xF,EACvB,WAAA2xF,EACA,iBAAAC,EACA,MAAO,CACL,KAAME,CACR,EACA,KAAM,CACJ,OAAQ,EACV,CAAA,CACD,EACD,KAAK,SAASE,CAAU,EAElB,MAAAjvJ,EAAS,IAAIotJ,GAAU,CAC3B,EAAGuB,EAAY1xF,EACf,EAAG4xF,EACH,WAAAC,EACA,MAAO,CACL,KAAMC,CACR,EACA,KAAM,CACJ,OAAQ,GACR,UAAW,IAAIp5H,GAAM,CACnB,CAAC,IAAK,EAAG,CAAC,EACV,CAAC,IAAKg5H,EAAW,CAAC,CAAA,CACnB,CACH,CAAA,CACD,EACD,KAAK,SAAS3uJ,CAAM,EAEpB,KAAK,aAAeA,EAAO,WAAW,UAAU,CAAC,CAAE,GAAAkvJ,KAAS,CAC1D,QAAQ,IAAIA,CAAE,EACd,MAAMjyF,GAAWj9D,EAAO,EAAIgvJ,EAAe,GAAKL,EAChDM,EAAW,OAAO,CAChB,UAAWN,EAAY1xF,CAAA,CACxB,EACD,KAAK,OAAO,KAAKwxF,EAASxxF,GAAWzmD,EAAMsM,GAAOA,CAAG,CAAC,CAAA,CACvD,CACH,CAEO,SAAU,CACf,MAAM,QAAQ,EACd,KAAK,aAAa,aACpB,CAEU,iBAAoC,CAKrC,OAJY,IAAI0rI,GAAiB,CACtC,GAAG,MAAM,eAAe,EACxB,GAAG,KAAK,OAAA,CACT,CAEH,CACF,CC/DO,MAAMW,WAAkB9tH,EAAM,CAC5B,KACA,UAEA,OAEA,YACA,UAEA,QAAU,EACV,cAAgB,EAGhB,WACA,SAEP,YAAYjtC,EAA2B,CACrC,MAAMA,CAAO,EAEb,KAAK,KAAO,OAAOA,GAAS,MAAQ,UAAYA,GAAS,KAAO,GAChE,KAAK,UAAYA,EAAQ,UAEnB,MAAAohB,EAAQphB,EAAQ,OAAS,EACzBqhB,EAASrhB,EAAQ,QAAU,EAC3Bg7J,GAAgBh7J,EAAQ,UAAYA,EAAQ,YAAc,KAAO,EAGvE,GAAIA,EAAQ,OACV,KAAK,OAASA,EAAQ,eACb,KAAK,KAAM,CAEpB,MAAM0uB,EAAM,KAAK,IAAItN,EAAQ,EAAGC,CAAM,EAAI,KAAK,UAC1C,KAAA,OAAS,KAAK,IAAI,EAAGqN,EAAMA,EAAM,KAAK,IAAIwd,GAAS8uH,CAAY,CAAC,CAAC,CAAA,MAGtE,KAAK,OAAS,KAAK,IACjB,EACA,KAAK,IAAI55I,EAAQ,EAAGC,EAAS,CAAC,EAAI,KAAK,SAAA,EAKtCrhB,EAAQ,IACX,KAAK,EAAIohB,EAAQ,GAIdphB,EAAQ,IACP,KAAK,KACF,KAAA,EACHqhB,EACA,KAAK,UACL,KAAK,OAAS,KAAK,IAAI6qB,GAAS8uH,CAAY,CAAC,EAE/C,KAAK,EAAI35I,EAAS,GAIlBrhB,EAAQ,iBAEV,KAAK,YAAcA,EAAQ,YAC3B,KAAK,UAAYA,EAAQ,YAGpB,KAAA,YAAc,IAAMA,EAAQ,YAC5B,KAAA,UAAY,IAAMA,EAAQ,WAIjC,KAAK,WAAaA,GAAS,WAC3B,KAAK,SAAWA,GAAS,SACzB,KAAK,QAAQ,CACX,iBAAkB,QAClB,eAAgB,OAAO,KAAK,SAAS,EACrC,OAAQ,KAAK,YAAc,SAAA,CAC5B,EAGI,KAAA,WAAWA,EAAQ,SAAW,CAAC,CACtC,CAEU,YAAwB,CAazB,OAZO,IAAI+6J,GAAU,CAC1B,GAAG,MAAM,eAAe,EACxB,KAAM,KAAK,KACX,UAAW,KAAK,UAChB,OAAQ,KAAK,OACb,gBAAiB,GACjB,YAAa,KAAK,YAClB,UAAW,KAAK,UAChB,WAAY,KAAK,WACjB,SAAU,KAAK,SACf,QAAS,KAAK,OAAA,CACf,CAEH,CAGO,WAAWlyF,EAAiB,CACjC,KAAK,QAAU,KAAK,IAAI,EAAGA,CAAO,EAClC,KAAK,cACH,KAAK,aAAe,KAAK,UAAY,KAAK,aAAeA,CAC7D,CAEO,eAAeovF,EAAoBC,EAAkB,CAC1D,KAAK,WAAaD,EAClB,KAAK,SAAWC,EAChB,KAAK,QAAQ,CACX,OAAQ,KAAK,UAAA,CACd,CAEH,CACO,gBAAgBD,EAAoB,CACzC,KAAK,WAAaA,EAClB,KAAK,SAAW,OAChB,KAAK,QAAQ,CACX,OAAQ,KAAK,UAAA,CACd,CACH,CAEO,eAAqC,CAC1C,KAAM,CAAE,GAAIgD,EAAO,GAAIC,CAAU,EAAAjvH,GAC/BC,GAAS,KAAK,WAAW,EACzB,KAAK,MAAA,EAED,CAAE,GAAIrW,EAAM,GAAIC,CAAS,EAAAmW,GAC7BC,GAAS,KAAK,aAAa,EAC3B,KAAK,MAAA,EAEA,MAAA,CACL,CAAC,IAAK+uH,EAAOC,CAAK,EAClB,CACE,IACA,KAAK,OACL,KAAK,OACL,EACA,KAAK,IAAI,KAAK,cAAgB,KAAK,WAAW,GAAK,IAAM,EAAI,EAC7D,EACArlI,EAAOolI,EACPnlI,EAAOolI,CACT,CAAA,CAEJ,CAEO,gBAAgBzzJ,EAAsB,CACvC,GAAA,KAAK,YAAc,KAAK,SAAU,CAEhC,IAAAwwB,EACJ,GAAI,KAAK,KAAM,CACP,MAAA6iI,EAAK,KAAK,OAAS,KAAK,OAAS,KAAK,IAAI,KAAK,GAAK,KAAK,OAAO,EAChEK,EAAK,KAAK,OAAS,KAAK,IAAI,KAAK,GAAK,KAAK,OAAO,EACxDljI,EAAWxwB,EAAI,qBACb,CAAC,KAAK,OACN,EACA,CAAC,KAAK,OAASqzJ,EACf,CAACK,EACD,CACE,EAAG,KAAK,WACR,EAAG,KAAK,QACV,CAAA,CACF,KACK,CACC,MAAAL,EAAK,KAAK,OAAS,KAAK,IAAI,EAAI,KAAK,GAAK,KAAK,OAAO,EACtDK,EAAK,KAAK,OAAS,KAAK,IAAI,EAAI,KAAK,GAAK,KAAK,OAAO,EACjDljI,EAAAxwB,EAAI,qBAAqB,EAAG,CAAC,KAAK,OAAQqzJ,EAAI,CAACK,EAAI,CAC5D,EAAG,KAAK,WACR,EAAG,KAAK,QAAA,CACT,CACH,CACA,KAAK,QAAQ,CACX,OAAQljI,CAAA,CACT,CACH,CACAxwB,EAAI,UAAU,EACVA,EAAA,IACF,EACA,EACA,KAAK,OACLykC,GAAS,KAAK,WAAW,EACzBA,GAAS,KAAK,aAAa,EAC3B,EAAA,CAEJ,CACF,CC3LO,MAAMkvH,WAAgCnG,EAAW,CAC/C,KACA,UACA,MACA,OAEA,QACA,WACA,SAEA,YACA,UAEA,QAAU,EAEV,OACA,KACA,MAAqB,CAAA,EACrB,mBAEP,YAAYj1J,EAAyC,CAiDnD,GAhDA,MAAMA,CAAO,EAEb,KAAK,KAAO,OAAOA,GAAS,MAAQ,UAAYA,GAAS,KAAO,GAC3D,KAAA,UAAYA,GAAS,WAAa,GACvC,KAAK,MAAQA,EAAQ,MACrB,KAAK,OAASA,EAAQ,OAEtB,KAAK,QAAUA,GAAS,QACxB,KAAK,WAAaA,GAAS,WAC3B,KAAK,SAAWA,GAAS,SAErB,KAAK,MACF,KAAA,YAAcA,GAAS,aAAe,IAAM,GAC5C,KAAA,UAAYA,GAAS,WAAa,GAAK,KAEvC,KAAA,YAAcA,GAAS,aAAe,EACtC,KAAA,UAAYA,GAAS,WAAa,KAGpC,KAAA,QAAUA,GAAS,SAAW,EAE9B,KAAA,OAAS,IAAI+6J,GAAU,CAC1B,KAAM,KAAK,KACX,UAAW,KAAK,UAChB,MAAO/6J,EAAQ,MACf,OAAQA,EAAQ,OAChB,YAAa,KAAK,YAClB,UAAW,KAAK,UAChB,WAAY,KAAK,QACjB,QAAS,CAAA,CACV,EACI,KAAA,SAAS,KAAK,MAAM,EAEpB,KAAA,KAAO,IAAI+6J,GAAU,CACxB,KAAM,KAAK,KACX,UAAW,KAAK,UAChB,MAAO/6J,EAAQ,MACf,OAAQA,EAAQ,OAChB,YAAa,KAAK,YAClB,UAAW,KAAK,UAChB,WAAY,KAAK,WACjB,SAAU,KAAK,SACf,QAAS,CAAA,CACV,EACI,KAAA,SAAS,KAAK,IAAI,EAEvB,KAAK,mBAAqB,GAAK,EAE3B,KAAK,KAAM,CAIb,MAAM1C,EACJ,KAAK,OAAO,OAAS,GAA8B,GACrD,QAASh7B,EAAI,EAAGA,EAAI,KAAK,mBAAoBA,IAAK,CAC1C,MAAA02D,EAAO,IAAI++H,GAAU,CACzB,WAAY,GACZ,WAAY,KAAK,WACjB,SAAU,KAAK,SACf,MAAO,CACL,iBAAkB,QAClB,eAAgB,OAAO,CAAkB,EACzC,OAAQ,KAAK,OACf,CAAA,CACD,EACI,KAAA,MAAM,KAAK/+H,CAAI,EACd,MAAAqiI,EACJ,IACA,KAAK,aACH,KAAK,UAAY,KAAK,cACrB,KAAK,mBAAqB,GAC3B/4L,EACJ,KAAK,SAAS02D,EAAM,CAClB,GAAI,KAAK,OAAO,EAAI,KAAK,IAAIkT,GAASmvH,CAAU,CAAC,EAAI/9J,EACrD,GAAI,KAAK,OAAO,EAAI,KAAK,IAAI4uC,GAASmvH,CAAU,CAAC,EAAI/9J,EACrD,QAAS+9J,CAAA,CACV,CACH,CACF,CAGK,KAAA,WAAWr7J,EAAQ,SAAW,CAAC,CACtC,CAEU,iBAA2C,CAc5C,OAbY,IAAIo7J,GAAwB,CAC7C,GAAG,MAAM,eAAe,EACxB,KAAM,KAAK,KACX,UAAW,KAAK,UAChB,MAAO,KAAK,MACZ,OAAQ,KAAK,OACb,QAAS,KAAK,QACd,WAAY,KAAK,WACjB,SAAU,KAAK,SACf,YAAa,KAAK,YAClB,UAAW,KAAK,UAChB,QAAS,KAAK,OAAA,CACf,CAEH,CAGO,WAAWvyF,EAAiB,CAGjC,GAFA,KAAK,QAAU,KAAK,IAAI,EAAGA,CAAO,EAC7B,KAAA,KAAK,WAAWA,CAAO,EACxB,KAAK,KACP,QAASvmG,EAAI,EAAGA,EAAI,KAAK,mBAAoBA,IACvBA,GAAK,KAAK,mBAAqB,IAAM,KAAK,QAE5D,KAAK,MAAMA,CAAC,EAAE,eAAe,KAAK,WAAY,KAAK,QAAQ,EAE3D,KAAK,MAAMA,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAIlD,CACF,CChLO,MAAMg5L,WAAkBruH,EAAM,CAC5B,KACA,MAAQ,EACR,OAAS,EAEhB,YAAYjtC,EAA2B,CACrC,MAAMA,CAAO,EACb,KAAK,KAAOA,EAAQ,KAEpB,KAAK,QAAQ,CAEX,SAAU,OACV,WAAY,6KAEZ,gBACE,iKACF,KAAM,UACN,OAAQ,OACR,qBAAsB,SACtB,WAAY,QAEZ,GAAG,KAAK,KAAA,CACT,EAED,MAAMu7J,EAAW3F,GAAc,KAAK,QAAQ,UAAU,EAAG,EAAE,EAAE,OACvD4F,EAAa5F,GAAc,KAAK,QAAQ,YAAY,EAAG,GAAG,EAAE,OAC5DnmK,EAAK6rK,GAAU,YAAY,KAAK,KAAMC,EAAUC,CAAU,EAChE,KAAK,MAAQ/rK,EAAG,MAChB,KAAK,OAASA,EAAG,MACnB,CAEU,YAAwB,CAKzB,OAJO,IAAI6rK,GAAU,CAC1B,GAAG,MAAM,eAAe,EACxB,KAAM,KAAK,IAAA,CACZ,CAEH,CAEO,SAAsB,CACrB,MAAA17J,EAAKs/B,GAAiB,MAAM,EAC/Bt/B,EAAA,aAAa,IAAK,GAAG,EACrBA,EAAA,aAAa,IAAK,GAAG,EACxBA,EAAG,MAAM,kBAAoB,SAC7B,MAAM67J,EAAQ,KAAK,KAAK,MAAM;AAAA,CAAI,EAC9B,GAAAA,EAAM,QAAU,EAClB77J,EAAG,UAAY,KAAK,SACf,CACL,MAAM87J,EAAa,KAAK,QAAQ,cAAe,OAAO,EAChDD,EAAA,QAAQ,CAACv6L,EAAG6oC,IAAU,CACtB,GAAA7oC,EAAE,OAAQ,CACN,MAAAy6L,EAAQz8H,GAAiB,OAAO,EAChCy8H,EAAA,aAAa,IAAK,GAAG,EAC3BA,EAAM,aAAa,KAAM5xJ,EAAQ,EAAI2xJ,EAAa,GAAG,EAC/CC,EAAA,UAAYz6L,EAAE,OACpBy6L,EAAM,MAAM,kBAAoB,SAChC/7J,EAAG,OAAO+7J,CAAK,CACjB,CAAA,CACD,CACH,CACO,OAAA/7J,CACT,CAEO,eAAqC,CAC1C,MAAO,EACT,CAEO,gBAAgB6H,EAAsB,CAC3C,MAAMg0J,EAAQ,KAAK,KAAK,MAAM;AAAA,CAAI,EAC9B,GAAAA,EAAM,QAAU,EAClBh0J,EAAI,SAAS,KAAK,KAAM,EAAG,CAAC,MACvB,CACL,MAAMm0J,EAAuBn0J,EAAI,YAAY,KAAK,IAAI,EAGhDi0J,GADJE,EAAQ,wBAA0BA,EAAQ,0BAEjC,WAAW,KAAK,QAAQ,cAAe,OAAO,CAAW,EACpE,IAAItwL,EAAI,EACFmwL,EAAA,QAAQ,CAACv6L,EAAG6oC,IAAU,CACtB7oC,EAAE,SACCoK,GAAAy+B,EAAQ,EAAI2xJ,EAAa,EAC9Bj0J,EAAI,SAASvmC,EAAE,KAAK,EAAG,EAAGoK,CAAC,EAC7B,CACD,CACH,CACF,CAEA,OAAc,YACZ8iD,EACAmtI,EAAW,GACXC,EAAa,IACsB,CAC7B,MAAAK,EAAO,SAAS,cAAc,MAAM,EAC1CA,EAAK,MAAM,WAAa,SACxBA,EAAK,MAAM,OAAS,IACpBA,EAAK,MAAM,QAAU,IACrBA,EAAK,MAAM,MAAQ,IACnBA,EAAK,MAAM,WAAa,SACxBA,EAAK,MAAM,SAAW,UACjBA,EAAA,MAAM,SAAWN,EAAW,KAC5BM,EAAA,MAAM,WAAaL,EAAW,SAAS,EAC5CK,EAAK,UAAYztI,EACR,SAAA,KAAK,YAAYytI,CAAI,EAC9B,MAAMz6I,EAAQy6I,EAAK,YACbx6I,EAASw6I,EAAK,aACX,gBAAA,KAAK,YAAYA,CAAI,EACvB,CAAE,MAAAz6I,EAAO,OAAAC,EAIlB,CAUA,OAAc,kBACZ+M,EACAhN,EACAm6I,EAAW,GACXC,EAAa,IACbM,EAAM,MACN,CACA,IAAIC,EAAa,GACb,GAAA,CAAC3tI,GAAQhN,EAAQm6I,EACZ,OAAAQ,EAEH,MAAAr9J,EAAM0vB,EAAK,MAAM,EAAE,EACrB,IAAA4tI,EAAWF,EACXR,GAAU,YAAYQ,EAAKP,EAAUC,CAAU,EAAE,MACjD,EACJ,QAASl5L,EAAI,EAAG2I,EAAIyzB,EAAI,OAAQp8B,EAAI2I,EAAG3I,IAErC,GADA05L,GAAYV,GAAU,YAAY58J,EAAIp8B,CAAC,EAAGi5L,EAAUC,CAAU,EAAE,MAC5DQ,EAAW56I,EAAO,CAChB06I,IACYC,GAAAD,GAEhB,KAAA,MAEAC,GAAcr9J,EAAIp8B,CAAC,EAGhB,OAAAy5L,CACT,CACF,CCjIO,MAAME,WAA2BhH,EAAW,CACzC,QAER,YAAYj1J,EAAoC,CAC9C,MAAMA,CAAO,EAEb,KAAK,QAAUA,EAET,KAAA,CACJ,aAAAk8J,EACA,MAAA96I,EACA,OAAAC,EACA,EAAA/+B,EACA,EAAAhX,EACA,cAAA6wL,EACA,MAAA5sI,EACA,OAAA+0H,EACA,cAAA8X,EACA,MAAAC,EACA,QAAAhwH,EACA,MAAAiwH,EACA,MAAAC,EACA,OAAAC,EACA,OAAA3tI,EACA,KAAA4tI,GACE,OAAO,OACT,CACE,aAAc,IAAM,IAAItD,GAAU,CAAE,UAAW,GAAI,WAAY,GAAI,EACnE,MAAO,IACP,OAAQ,IACR,EAAG,GACH,EAAG,GACH,cAAe,IACf,MAAO,GACP,OAAQ,GACR,cAAe,GACf,MAAO,GACP,QAAS,EACT,MAAO,EACP,MAAO,IACP,OAAQ,CACN,kBACA,mBACA,kBACA,kBACA,kBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,mBACA,kBACA,kBACA,kBACA,kBACA,gBACF,EACA,OAAQ,EACR,KAAM,EACR,EACAn5J,GAAW,CAAC,CAAA,EAER08J,EAAqB,CAACt5L,EAAUgoE,IAAiB,CAErDhoE,EAAE,EAAIg+C,EAAQ9+B,EACdlf,EAAE,EAAIi+C,EAAS/1C,EACflI,EAAE,OAASyrD,EACXzrD,EAAE,OAASyrD,EACX,MAAM8tI,EAAYH,EAAOpxH,EAAOoxH,EAAO,MAAM,EAC7Cp5L,EAAE,QAAQ,CACR,KAAMu5L,CAAA,CACP,EACDv5L,EAAE,YAAc,GAEdA,EAAA,OAAS,KAAK,OAAA,EAAW,GACzBA,EAAA,YAAc,KAAK,IAAI,IAAM,KAAK,OAAO,EAAI,GAAM,GAAI,EACzDA,EAAE,SAAWg5L,EAAgB,GAAM,KAAK,OAAW,EAAAA,EACnDh5L,EAAE,QAAU,CAACw5L,GAAY,GAAMC,EAAY,KAAK,SAAWA,GAC3Dz5L,EAAE,WAAa,KAAK,UAAY,IAAO,KAAQ,KAAQ,KAAK,GAC5DA,EAAE,KAAO,EACTA,EAAE,WAAam5L,EACfn5L,EAAE,MAAQi5L,EACVj5L,EAAE,MAAQk5L,EACRl5L,EAAA,OAAS,KAAK,OAAA,EAAW,EAC3BA,EAAE,QAAU,EACZA,EAAE,QAAU,EACZA,EAAE,QAAU,EACZA,EAAE,QAAU,EACZA,EAAE,QAAUipE,EAAU,EACtBjpE,EAAE,OAASyrD,EACXzrD,EAAE,KAAOq5L,EACPr5L,EAAA,MAAQ,IAAIw0L,GAAM+E,CAAS,CAAA,EAEzBC,EAAW1wH,GAAS3c,CAAK,EACzBstI,EAAY3wH,GAASo4G,CAAM,EACjC,IAAIl5G,EAAO+wH,EACX,KAAO/wH,GAAM,CACX,MAAMhoE,EAAI84L,IACVQ,EAAmBt5L,EAAGgoE,CAAI,EAExBhoE,EAAA,OAAUgoE,GAAS,IAAM,CACzB,MAAMl5C,EAAKgqK,IACX,OAAAQ,EAAmBxqK,EAAIk5C,CAAI,EACpBl5C,IACNk5C,CAAI,EACP,KAAK,SAAShoE,CAAC,EACfgoE,GACF,CACF,CAEU,iBAAsC,CAEvC,OADY,IAAI6wH,GAAmB,KAAK,OAAO,CAExD,CAGO,QAAS,CACd,YAAK,OAAS,KAAK,OAAO,OAAQa,GAAU,CACpCA,EAAA,GAAK,KAAK,IAAIA,EAAM,OAAO,EAAIA,EAAM,SAAWA,EAAM,MACtDA,EAAA,GAAK,KAAK,IAAIA,EAAM,OAAO,EAAIA,EAAM,SAAWA,EAAM,QAC5DA,EAAM,UAAYA,EAAM,MAEpBA,EAAM,MACRA,EAAM,OAAS,EACfA,EAAM,QAAUA,EAAM,EAAI,GAAKA,EAAM,OACrCA,EAAM,QAAUA,EAAM,EAAI,GAAKA,EAAM,OACrCA,EAAM,QAAU,EAChBA,EAAM,QAAU,EAChBA,EAAM,OAAS,IAEfA,EAAM,QAAUA,EAAM,YAChBA,EAAA,QAAUA,EAAM,EAAI,GAAKA,EAAM,OAAS,KAAK,IAAIA,EAAM,MAAM,EAC7DA,EAAA,QAAUA,EAAM,EAAI,GAAKA,EAAM,OAAS,KAAK,IAAIA,EAAM,MAAM,EACnEA,EAAM,WAAa,GACnBA,EAAM,QAAU,KAAK,IAAIA,EAAM,SAAS,EACxCA,EAAM,QAAU,KAAK,IAAIA,EAAM,SAAS,EAClCA,EAAA,OAAS,KAAK,OAAA,EAAW,GAG3B,MAAAnwH,EAAWmwH,EAAM,OAASA,EAAM,WAChCjlL,EAAKilL,EAAM,EAAIA,EAAM,OAASA,EAAM,QACpCpmL,EAAKomL,EAAM,EAAIA,EAAM,OAASA,EAAM,QACpCh/K,EAAKg/K,EAAM,QAAUA,EAAM,OAASA,EAAM,QAC1C3gL,EAAK2gL,EAAM,QAAUA,EAAM,OAASA,EAAM,QAE1C,OAAAA,EAAA,QAAQ,OAAQA,EAAM,MAAM,SAAS,EAAInwH,CAAQ,EAAE,SAAA,CAAU,EACnEmwH,EAAM,OAAS9wH,GAAU,KAAK,GAAK,GAAM8wH,EAAM,MAAM,EACrDA,EAAM,OAAS,KAAK,IAAIh/K,EAAKjG,CAAE,EAAI,GACnCilL,EAAM,OAAS,KAAK,IAAI3gL,EAAKzF,CAAE,EAAI,GAE5BomL,EAAM,KAAOA,EAAM,UAAA,CAC3B,EAGM,KAAK,OAAO,OAAS,CAC9B,CACF,CC3Le,MAAAC,IAAA,CACb,KAAM,QACN,SAAU,8BAA8B,MAAM,GAAG,EACjD,cAAe,uBAAuB,MAAM,GAAG,EAC/C,YAAa,gBAAgB,MAAM,GAAG,EACtC,OACE,wCAAwC,MACtC,GACF,EACF,YAAa,yCAAyC,MAAM,GAAG,EAC/D,QAAS,CAACv1F,EAAgBw1F,IAAmB,CAC3C,OAAQA,EAAQ,CACd,IAAK,IACH,MAAO,GAAGx1F,CAAM,IAClB,QACE,MAAO,GAAGA,CAAM,GACpB,CACF,EACA,UAAW,EACX,UAAW,EACX,QAAS,CACP,GAAI,QACJ,IAAK,WACL,EAAG,aACH,GAAI,YACJ,IAAK,kBACL,KAAM,sBACN,EAAG,WACH,GAAI,YACJ,IAAK,kBACL,KAAM,qBACR,EACA,aAAc,CACZ,OAAQ,MACR,KAAM,MACN,EAAG,KACH,EAAG,OACH,GAAI,QACJ,EAAG,OACH,GAAI,QACJ,EAAG,MACH,GAAI,OACJ,EAAG,OACH,GAAI,QACJ,EAAG,MACH,GAAI,MACN,EACA,SAAU,CAACy1F,EAAcC,IAAmB,CACpC,MAAA1vK,EAAKyvK,EAAO,IAAMC,EACxB,OAAI1vK,EAAK,IACA,KACEA,EAAK,IACP,KACEA,EAAK,KACP,KACEA,EAAK,KACP,KACEA,EAAK,KACP,KAEF,IACT,CACF,EC/DezlB,IAAA,CACb,KAAM,KACN,SAAU,2DAA2D,MACnE,GACF,EACA,OACE,wFAAwF,MACtF,GACF,EACF,QAAUkI,GAAc,CACtB,MAAM7M,EAAI,CAAC,KAAM,KAAM,KAAM,IAAI,EAC3B6W,EAAIhK,EAAI,IACd,MAAO,IAAIA,CAAC,GAAG7M,GAAG6W,EAAI,IAAM,EAAE,GAAK7W,EAAE6W,CAAC,GAAK7W,EAAE,CAAC,CAAC,GACjD,CACF,ECVa+5L,GAAK,IAAIC,GAGtB,IAAI/pK,GAAI,QAGRgqK,GAAUt1L,GAAE,EACZs1L,GAAUN,GAAE,EAEI,SAAAO,GACdrlC,EACA1+D,EAC2B,CAC3B,GAAI,CAAC0+D,EAEI,OAAAklC,GAAG,IAAI9pK,EAAC,EAEb,IAAApoB,EACA,GAAA,OAAOgtJ,GAAW,SAAU,CACxB,MAAAslC,EAActlC,EAAO,cACvB,GAAAklC,GAAG,IAAII,CAAW,EAEhBtyL,EAAAsyL,UACKhkG,EAEN4jG,GAAA,IAAII,EAAahkG,CAAM,EACtBtuF,EAAAsyL,MAIG,QAAAJ,GAAG,IAAI9pK,EAAC,CACjB,KACK,CAEC,KAAA,CAAE,KAAAgR,CAAS,EAAA4zH,EACdklC,GAAA,IAAI94J,EAAM4zH,CAAM,EACfhtJ,EAAAo5B,CACN,CACA,OAAIp5B,IACEooB,GAAApoB,GAECkyL,GAAG,IAAIlyL,CAAC,GAAKkyL,GAAG,IAAI9pK,EAAC,CAC9B,CCxCO,SAASmqK,IAAK,CACnB,KAAAj1I,EAAO,IACP,MAAAoK,EAAQ,sBACV,EAGG,CACK,MAAAyhC,EAAMD,SAAuB,IAAI,EAEjC,CAAE,EAAA7xE,EAAG,EAAAhX,CAAM,EAAAmyL,GAAoBrpG,CAAG,EAGtC,OAAAs0C,GAAA,IAACg1D,GAAA,CACC,IAAAtpG,EACA,MAAO,CACL,MAAO7rC,EACP,OAAQA,EACR,gBAAiBoK,EACjB,aAAc,MACd,EAAArwC,EACA,EAAAhX,CACF,CAAA,CAAA,CAGN,CCzBO,SAASqyL,IAAK,CACnB,EAAAr7K,EAAI,IACJ,EAAAhX,EAAI,IACJ,EAAA6I,EAAI,IACJ,YAAA2/D,EAAc,IACd,MAAAnhB,EAAQ,uBACR,OAAAthB,CACF,EAaG,CACD,MAAMusJ,EAAQ,KAAK,MAAMt7K,EAAI,CAAC,EACxBu7K,EAAQ,KAAK,MAAMvyL,EAAI,CAAC,EACxBwyL,EAAQ,KAAK,MAAM3pL,EAAI,CAAC,EAExBigF,EAAMD,SAAuB,IAAI,EASjCrgC,EAAY6lG,GAAe,EAAE,EACnCrlE,OAAAA,EAAAA,UAAU,IAAM,CACd,OAAQjjD,EAAQ,CACd,IAAK,aAEHyiB,EAAU,IAAI,eAAe,EAC7B,MACF,IAAK,YAEHA,EAAU,IAAI,kBAAkB,EAChC,MACF,IAAK,YAEHA,EAAU,IAAI,gBAAgB,EAC9B,MACF,IAAK,aAEHA,EAAU,IAAI,iBAAiB,EAC/B,MACF,IAAK,WAEHA,EAAU,IAAI,iBAAiB,EAC/B,MACF,IAAK,cAEHA,EAAU,IAAI,gBAAgB,EAC9B,KACJ,GACC,CAACziB,EAAQusJ,EAAOC,EAAOC,CAAK,CAAC,EAG9Br1D,GAAA,KAAC,MAAA,CACC,UAAU,SACV,MAAO,CAAE,MAAOnmH,EAAG,OAAQhX,EAAG,YAAAwoE,CAAY,EAC1C,SAAA,CAAA20D,GAAA,KAACi1D,GAAA,CACC,IAAAtpG,EACA,UAAU,OACV,MAAO,CACL,MAAO9xE,EACP,OAAQhX,EACR,WAAY,eACZ,UAAAwoD,CACF,EACA,SAAA,CAAA40E,GAAA,IAACg1D,GAAA,CACC,UAAU,gBACV,MAAO,CACL,MAAOp7K,EACP,OAAQhX,EACR,UAAW,4BAA4BwyL,CAAK,MAC5C,gBAAiB,uBACnB,EAAG,SAAA,OAAA,CAEL,EACAp1D,GAAA,IAACg1D,GAAA,CACC,UAAU,eACV,MAAO,CACL,MAAOp7K,EACP,OAAQhX,EACR,UAAW,8BAA8BwyL,CAAK,MAC9C,gBAAiB,0BACnB,EAAG,SAAA,MAAA,CAEL,EACAp1D,GAAA,IAACg1D,GAAA,CACC,UAAU,eACV,MAAO,CACL,MAAOvpL,EACP,OAAQ7I,EACR,KAAMsyL,EAAQE,EACd,UAAW,8BAA8BF,CAAK,MAC9C,gBAAiB,0BACnB,EAAG,SAAA,MAAA,CAEL,EACAl1D,GAAA,IAACg1D,GAAA,CACC,UAAU,gBACV,MAAO,CACL,MAAOvpL,EACP,OAAQ7I,EACR,KAAMsyL,EAAQE,EACd,UAAW,6BAA6BF,CAAK,MAC7C,gBAAiB,0BACnB,EAAG,SAAA,OAAA,CAEL,EACAl1D,GAAA,IAACg1D,GAAA,CACC,UAAU,cACV,MAAO,CACL,MAAOp7K,EACP,OAAQnO,EACR,IAAK0pL,EAAQC,EACb,UAAW,6BAA6BD,CAAK,MAC7C,gBAAiB,yBACnB,EAAG,SAAA,KAAA,CAEL,EACAn1D,GAAA,IAACg1D,GAAA,CACC,UAAU,iBACV,MAAO,CACL,MAAOp7K,EACP,OAAQnO,EACR,IAAK0pL,EAAQC,EACb,UAAW,8BAA8BD,CAAK,MAC9C,gBAAiB,wBACnB,EAAG,SAAA,QAAA,CAEL,CAAA,CAAA,CACF,SACCE,IAAW,EAAA,CAAA,CAAA,CAAA,CAGlB,CAEA,SAASA,KAAa,CACpB,cACG,QAAO,CAAA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAgCN,CAAA,CAEN,CCxLA,MAAMC,IAAS,CACb,KAAM,CAAE,MAAO,CAAE,EACjB,MAAO,CAAE,MAAO,GAAI,EACpB,QAAS,CAAE,MAAO,GAAK,CACzB,EACMC,IAAQ,CACZ,KAAM,CAAE,OAAQ,CAAE,EAClB,MAAO,CAAE,OAAQ,IAAK,WAAY,CAAE,SAAU,GAAM,CACtD,EAEaC,IAAa,CAAC,CACzB,QAAAC,EACA,MAAAxrI,EAAQ,sBACV,IAKI+1E,GAAA,IAACg1D,GAAA,CACC,MAAO,CACL,GAAGU,IACH,OAAQ,cAAczrI,CAAK,EAC7B,EACA,QAAAwrI,EACA,SAAUH,IACV,QAAQ,OACR,WAAW,QACX,SAAS,UACT,SAAAt1D,GAAA,IAAC21D,GAAA,CACC,MAAM,6BACN,MAAM,KACN,OAAO,KACP,QAAQ,YACR,SAAUJ,IACV,SAAAv1D,GAAA,IAAC41D,GAAA,CACC,EAAE,+VACF,KAAK,UACL,SAAS,UACT,MAAO,CAAE,KAAM3rI,CAAM,CAAA,CACvB,CAAA,CACF,CAAA,CAAA,EAKAyrI,IAAW,CACf,QAAS,cACT,eAAgB,SAChB,WAAY,SACZ,OAAQ,UACR,OAAQ,mCACR,QAAS,iDACT,aAAc,yCAChB,ECrDO,SAASG,IAAe,CAC7B,SAAA5xH,EACA,KAAApkB,EACA,YAAAi2I,EAAc,GACd,MAAA7rI,EAAQ,uBACR,QAAA8rI,EAAU,qBACZ,EAMG,CACD,MAAMC,EAA8B,CAClC,YAAAF,EACA,iBAAkB,EAClB,cAAe,QACf,KAAM,MAAA,EAGF/1L,EAAI,KAAK,IAAI,EAAG,KAAK,MAAM,GAAK+1L,EAAc,CAAC,CAAC,EAGpD,OAAA91D,GAAA,IAAC,MAAA,CACC,MAAM,6BACN,QAAQ,cACR,oBAAoB,gBACpB,MAAO,CACL,MAAOngF,GAAQ,OACf,OAAQA,GAAQ,OAChB,SAAU,SACZ,EACA,SAAAkgF,GAAA,KAAC,IAAE,CAAA,UAAU,oBACX,SAAA,CAAAC,GAAA,IAAC,SAAA,CACC,GAAG,KACH,GAAG,KACH,EAAAjgI,EACA,WAAW,IACX,MAAO,CAAE,GAAGi2L,EAAQ,OAAQD,CAAQ,CAAA,CACtC,EACA/1D,GAAA,IAACi2D,GAAA,CACC,GAAG,KACH,GAAG,KACH,EAAAl2L,EACA,WAAW,IACX,MAAO,CAAE,GAAGi2L,EAAQ,OAAQ/rI,EAAO,WAAYga,CAAS,CAAA,CAC1D,CAAA,EACF,CAAA,CAAA,CAGN,CClDO,SAASiyH,IAAa,CAC3B,SAAAjyH,EACA,KAAApkB,EACA,YAAAi2I,EAAc,EACd,MAAA7rI,EAAQ,mBACV,EAKG,CAEC,OAAA+1E,GAAA,IAAC,MAAA,CACC,MAAM,6BACN,QAAQ,YACR,oBAAoB,gBACpB,MAAO,CACL,MAAOngF,GAAQ,OACf,OAAQA,GAAQ,OAChB,SAAU,SACZ,EACA,SAAAmgF,GAAA,IAAC41D,GAAA,CACC,KAAK,OACL,YAAAE,EACA,OAAQ7rI,EACR,EAAE,yBACF,gBAAgB,MAChB,MAAO,CAAE,WAAYga,CAAS,CAAA,CAChC,CAAA,CAAA,CAGN,CC/BO,SAASkyH,IAAc,CAC5B,SAAAlyH,EACA,KAAApkB,EACA,YAAAi2I,EAAc,EACd,MAAA7rI,EAAQ,iBACV,EAKG,CACK,MAAAmsI,EAAqB5kC,GAAavtF,EAAU,CAAC,EAAG,GAAI,EAAG,CAAC,EAAG,CAAC,CAAC,EAC7DoyH,EAAqB7kC,GAAavtF,EAAU,CAAC,GAAK,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,EAGhE,OAAA87D,GAAA,KAAC,MAAA,CACC,MAAM,6BACN,QAAQ,YACR,oBAAoB,gBACpB,MAAO,CACL,MAAOlgF,GAAQ,OACf,OAAQA,GAAQ,OAChB,SAAU,SACZ,EACA,SAAA,CAAAmgF,GAAA,IAAC41D,GAAA,CACC,KAAK,OACL,YAAAE,EACA,OAAQ7rI,EACR,EAAE,gBACF,gBAAgB,MAChB,MAAO,CAAE,WAAYmsI,CAAmB,CAAA,CAC1C,EACAp2D,GAAA,IAAC41D,GAAA,CACC,KAAK,OACL,YAAAE,EACA,OAAQ7rI,EACR,EAAE,gBACF,gBAAgB,MAChB,MAAO,CAAE,WAAYosI,CAAmB,CAAA,CAC1C,CAAA,CAAA,CAAA,CAGN,CCxCO,SAASC,GAAO,CACrB,SAAAhtG,EACA,QAAAhyD,EACA,OAAAi1D,CACF,EAIG,CAeD,KAAM,CAAE,gBAAAgrE,EAAiB,gBAAAg/B,CAAgB,EAAI7lC,GAAUp5H,CAAO,EAExD6E,EAAQ,CACZ,gBAAAo7H,EACA,gBAAAg/B,EACA,KAAMj/J,GAAS,WAAW,QAAU,YAAc,SAClD,UAAWA,GAAS,WAAW,OAAA,EAGjC,OACGyoG,GAAA,KAAAy2D,GAAyB,SAAzB,CAAkC,MAAAr6J,EAChC,SAAA,CAAAowD,GAAUA,EAAOpwD,CAAK,EACtBmtD,CACH,CAAA,CAAA,CAEJ,CAEO,SAASmtG,IAA2B,CACzC,SAAAntG,EACA,OAAAjoC,EAAS,CAAC,YAAa,WAAW,CACpC,EAGG,CACK,MAAAqqC,EAAMD,SAAO,IAAI,EAEvB,OACGu0C,GAAAA,IAAAs2D,GAAA,CAAO,QAAS,CAAE,OAAQ5qG,EAAK,OAAArqC,CAAO,EACrC,SAAC2+E,GAAAA,IAAA,MAAA,CAAI,IAAAt0C,EAAW,SAAApC,CAAA,CAAS,CAC3B,CAAA,CAEJ,CCrDO,SAASotG,IAAiB,CAC/B,SAAAptG,EACA,QAAAhyD,EACA,MAAA2yB,EAAQ,uBACR,OAAAtR,EAAS,EACX,EAKG,CAEC,OAAAonF,QAACu2D,GAAO,CAAA,QAAS,CAAE,GAAIh/J,GAAW,CAAA,EAAK,KAAM,GAC3C,EAAA,SAAA,CAAA0oG,GAAA,IAAC22D,IAAA,CACC,MAAA1sI,EACA,OAAAtR,CAAA,CACF,EACC2wC,CACH,CAAA,CAAA,CAEJ,CAEA,SAASqtG,IAAU,CACjB,MAAA1sI,EAAQ,uBACR,OAAAtR,EAAS,EACX,EAGG,CACD,KAAM,CAAE,gBAAA49I,EAAiB,KAAAn/J,CAAK,EAAIw/J,GAAqB,EAEjD3tH,EAASipF,GAAUqkC,EAAiB,CACxC,UAAW,IACX,QAAS,GACT,UAAW,IAAA,CACZ,EAGC,OAAAv2D,GAAA,IAACg1D,GAAA,CACC,MAAO,CACL,OAAA/rH,EACA,QAAS,EACT,SAAU7xC,IAAS,YAAc,WAAa,QAC9C,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAAuhB,EACA,gBAAiBsR,EACjB,OAAQ,KACV,CAAA,CAAA,CAGN,CCrDgB,SAAA4sI,IAAiB,CAAE,SAAAvtG,GAAqC,CAChE,MAAAoC,EAAMD,SAAO,IAAI,EAGrB,OAAAu0C,GAAA,IAACs2D,GAAA,CACC,QAAS,CACP,UAAW5qG,EACX,OAAQ,CAAC,cAAe,SAAS,EACjC,KAAM,GACR,EACA,OAAQ,CAAC,CAAE,gBAAA6rE,KAAsB,CACzB,MAAAC,EAAYs/B,GAA+Bv/B,CAAe,EAE9D,OAAAx3B,GAAA,KAAC,MAAI,CAAA,UAAU,qBACb,SAAA,CAAAC,GAAA,IAACg1D,GAAA,CACC,IAAAtpG,EACA,UAAU,aACV,MAAO,CAAE,UAAA8rE,CAAU,EAClB,SAAAluE,CAAA,CACH,SACC+rG,IAAW,EAAA,CACd,CAAA,CAAA,CAEJ,CAAA,CAAA,CAEN,CAEA,SAASA,KAAa,CACpB,cACG,QAAO,CAAA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAUN,CAAA,CAEN,CCzCO,SAAS0B,IAAa,CAC3B,MAAAh+H,EAAQi+H,IACR,MAAAC,EAAQC,IACR,KAAAr3I,CACF,EAIG,CACD,KAAM,CAACs3I,EAAWC,CAAY,EAAIjsG,WAAS,CAAC,EACtCu6E,EAAoBzU,GAAekmC,CAAS,EAE5CE,EAAO7lC,GACXkU,EACA3sG,EAAM,IAAI,CAACtgE,EAAG4oC,IAAUA,CAAK,EAC7B41J,CAAA,EAGI3rI,EAAOm6G,GAAWC,EAAmB3sG,CAAK,EAEhD6yB,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMsnB,EAAYnlC,GAChB23F,EACAyxB,EACA,CACE,SAAU,GACV,KAAM,YACN,WAAY,IAAM,CACZA,IAAcp+H,EAAM,OAAS,GAC/B2sG,EAAkB,IAAI,CAAC,EACvB0xB,EAAa,CAAC,GAEdA,EAAaD,EAAY,CAAC,CAE9B,CACF,CAAA,EAEK,MAAA,IAAMjkF,EAAU,MAAK,EAC3B,CACDikF,EACAp+H,EAAM,OACN2sG,CAAA,CACD,EAGC1lC,GAAA,IAAC,MAAA,CACC,MAAM,6BACN,oBAAoB,gBACpB,MAAO,CACL,MAAOngF,GAAQ,OACf,OAAQA,GAAQ,OAChB,SAAU,SACZ,EACA,SAAAmgF,GAAA,IAAC41D,GAAA,CACC,EAAGtqI,EACH,KAAA+rI,CAAA,CACF,CAAA,CAAA,CAGN,CAGA,MAAMC,IACJ,2FACIC,IACJ,iLACIC,IACJ,kUACIC,IACJ,yHACIC,GAAY,2BAIZV,IAAc,CAACU,GAAWF,IAAMC,IAAOF,IAF3C,wFAEwDD,IAAMI,EAAS,EACnER,IAAe,CACnB,UACA,UACA,UACA,UACA,UACA,UACA,SACF,4RCnEgB,SAAAS,GACdj+J,EACAk+J,EACAtgK,EACW,CACJ,OAAA,IAAI,UAAUoC,CAAG,CAC1B,CA2DO,SAASm+J,IAAwBC,EAAiB,CACvD,MAAO,GAAGA,CAAO,YAAYC,GAAmB,CAAC,CAAC,IAAI1uI,GACpD,CACD,CAAA,YACH,CAEO,MAAM2uI,EAAgB,CAC3B,OAAO,WAAa,UAAU,WAC9B,OAAO,KAAO,UAAU,KACxB,OAAO,QAAU,UAAU,QAC3B,OAAO,OAAS,UAAU,OAE1B,IACA,uBACA,qBACA,cAEA,OACA,MAIoCA,GAAgB,WAEpD,aAAsC,CAAA,EAEtC,aACA,YAEA,UACA,kBAAoB,EACpB,qBACA,iBAEA,OACA,QACA,QAEA,UAAY,EACZ,SAAmD,CAAA,EACnD,UAAmE,CAAA,EAKnE,YACEt+J,EAAM,GACNpC,EAWA,CACA,KAAK,IAAMoC,EACX,KAAK,uBAAyBpC,GAAS,uBAClC,KAAA,qBAAuBA,GAAS,sBAAwB,CAAA,EACxD,KAAA,cAAgBA,GAAS,eAAiBqgK,GAC1C,KAAA,aAAergK,GAAS,cAAgB,IAC7C,KAAK,OAASA,GAAS,OACvB,KAAK,QAAUA,GAAS,QACxB,KAAK,QAAUA,GAAS,QACxB,KAAK,UACH,OAAOA,GAAS,WAAa,UAAYA,EAAQ,UAAY,GAC/D,KAAK,qBACH,OAAOA,GAAS,sBAAwB,SACpCA,EAAQ,qBACR,IACN,KAAK,SAAS,CAChB,CAEO,MAAO,CACZ,KAAK,kBAAoB,EACzB,KAAK,SAAS,CAChB,CAEO,OAAQ,CACb,KAAK,MAAQ0gK,GAAgB,QAC7B,KAAK,QAAQ,OACf,CAEQ,UAAW,CAEf,KAAK,QAAQ,aAAeA,GAAgB,YAC5C,KAAK,QAAQ,aAAeA,GAAgB,OAI9C,KAAK,MAAQA,GAAgB,WAC7B,KAAK,OAAS,KAAK,cACjB,KAAK,IACL,KAAK,uBACL,KAAK,oBAAA,EAGF,KAAA,OAAO,OAAS,IAAM,CACpBxkG,GAAA,IAAI,KAAK,GAAG,UAAU,EAC3B,KAAK,MAAQwkG,GAAgB,KAEzB,KAAK,mBACP,aAAa,KAAK,gBAAgB,EAClC,KAAK,iBAAmB,QAGpB,MAAAC,EAAS,KAAK,aAAa,MAAM,EACvC,KAAK,aAAe,GACpBA,EAAO,QAAQ,KAAK,MAAM,KAAK,IAAI,CAAC,EAEpC,KAAK,KAAK,EACL,KAAA,YAAc,YAAY,KAAK,KAAK,KAAK,IAAI,EAAG,KAAK,YAAY,EACtE,KAAK,SAAS,CAAA,EAGX,KAAA,OAAO,QAAW,GAAkB,CACvC,KAAM,CAAE,KAAAzjH,EAAM,OAAAm0F,EAAQ,SAAAuvB,CAAA,EAAa,EACnC1kG,GACE,IAAI,KAAK,GAAG,mBAAmBhf,CAAI,YAAYm0F,CAAM,cAAcuvB,CAAQ,GAAA,EAE7E,KAAK,MAAQF,GAAgB,OAC7B,KAAK,OAAS,OAEV,KAAK,cACP,cAAc,KAAK,WAAW,EAC9B,KAAK,YAAc,QAErB,KAAK,UAAU,CAAC,EAGd,KAAK,WACL,KAAK,kBAAoB,KAAK,uBAE9B,KAAK,iBAAmB,WACtB,KAAK,SAAS,KAAK,IAAI,EACvBG,GAAc,KAAK,mBAAmB,CAAA,EAE1C,EAGG,KAAA,OAAO,QAAW,GAAa,CAClC3kG,GAAK,IAAI,KAAK,GAAG,cAAc,CAAC,EAAE,EAClC,KAAK,UAAU,CAAC,CAAA,EAOb,KAAA,OAAO,UAAa,GAAoB,CAEvC,GADCA,GAAA,IAAI,KAAK,GAAG,wBAAwB,EAAE,IAAI,WAAW,EAAE,IAAI,IAAI,EAChE,OAAO,EAAE,MAAS,SAAU,CAE1B,IAAA4kG,EACJ,MAAMC,EAAa,EAAE,KAAK,UAAU,CAAC,EACjC,GAAA,CACMD,EAAA,KAAK,MAAMC,CAAU,QACtBC,EAAS,CACRF,EAAA,CACN,KAAK,UAAU,CACb,KAAM,MACN,YAAa,sBACb,YAAaE,EAAG,SAAS,EACzB,QAASD,CAAA,CACV,CAAA,CAEL,CACMD,EAAA,QAASt4K,GAAM,CACb,MAAAsiK,EAAO,KAAK,MAAMtiK,CAAC,EAEvB,GAAAsiK,EAAK,MACL,OAAO,UAAU,eAAe,KAAKA,EAAK,KAAM,WAAW,EAC3D,CAEA,MAAMmW,EAAU,KAAK,SAASnW,EAAK,KAAK,SAAS,EAC7CmW,EACMA,EAAA,UAAUnW,EAAK,IAAI,EAE3Bv2C,GACE,IAAI,KAAK,GAAG,6DAAA,CAGP,SAAA,KAAK,UAAUu2C,EAAK,OAAO,EAAG,CAEvC,MAAMoW,EAAY,KAAK,UAAUpW,EAAK,OAAO,EAC7C,QAASxoL,EAAI,EAAGA,EAAI4+L,EAAU,OAAQ5+L,IAChCwoL,EAAK,OAAS,MAChBoW,EAAU5+L,CAAC,EAAE,CACX,YAAawoL,EAAK,YAClB,YAAaA,EAAK,YAClB,QAASA,EAAK,OAAA,CACf,EAEDoW,EAAU5+L,CAAC,EAAE,KAAMwoL,EAAK,IAAI,CAEhC,MAGA,KAAK,YAAYA,CAAI,CACvB,CACD,CAAA,MACQ,EAAE,gBAAgB,YACtBv2C,GAAA,IAAI,KAAK,GAAG,mCAAmC,EAC3C,EAAE,gBAAgB,MACtBA,GAAA,IAAI,KAAK,GAAG,4BAA4B,CAC/C,EAEJ,CAEQ,YAAYu2C,EAA2B,CACzC,GAAA,CACEA,EAAK,OAAS,MAChB,KAAK,UAAUA,CAAI,EACVA,EAAK,MACN,QAAA,KACN,8CACAA,EAAK,MACLA,CAAA,EAGM,QAAA,KAAK,iCAAkCA,CAAI,OAE3C,CAEZ,CACF,CAGQ,MAAMxoJ,EAA2B,CACnC,KAAK,QAAQ,aAAeo+J,GAAgB,KAGzC,KAAA,OAAO,KAAK,KAAK,UAAU,CAAC,KAAK,UAAUp+J,CAAI,CAAC,CAAC,CAAC,GAGlD,KAAA,aAAa,KAAKA,CAAI,EAC3B,KAAK,SAAS,EAElB,CAEO,MAAO,CACZ,KAAK,MAAM,CAAE,KAAM,MAAQ,CAAA,CAC7B,CAGO,SACL6+J,EACA10E,EACAhqF,EAAkC,CAAA,EAClC,CACK,KAAK,UAAU0+J,CAAO,IACpB,KAAA,UAAUA,CAAO,EAAI,GAE1B,KAAK,MAAM,CACT,KAAM,WACN,QAAAA,EACA,QAAS/tG,GACP3wD,EACA,KAAK,qBAAqB,QAC1B,EACF,CAAA,CACD,GAEH,KAAK,UAAU0+J,CAAO,EAAE,KAAK10E,CAAQ,CACvC,CAGO,WACL00E,EACA10E,EACAhqF,EAAkC,CAAA,EAClC,CACM,MAAAy+J,EAAY,KAAK,UAAUC,CAAO,EACxC,GAAID,EAAW,CACP,MAAAntG,EAAMmtG,EAAU,QAAQz0E,CAAQ,EAClC14B,GAAO,KACCmtG,EAAA,OAAOntG,EAAK,CAAC,EACnBmtG,EAAU,SAAW,IAEvB,KAAK,MAAM,CACT,KAAM,aACN,QAAAC,EACA,QAAS/tG,GACP3wD,EACA,KAAK,qBAAqB,QAC1B,EACF,CAAA,CACD,EACM,OAAA,KAAK,UAAU0+J,CAAO,GAGnC,CACF,CAGO,QACLA,EACA74J,EACA7F,EAAkC,CAAA,EAClC,CACA,KAAK,MAAM,CACT,KAAM,UACN,QAAA0+J,EACA,QAAS/tG,GACP3wD,EACA,KAAK,qBAAqB,QAC1B,EACF,EACA,KAAA6F,CAAA,CACD,CACH,CAGA,MAAa,KACX64J,EACA74J,EACA7F,EAAkC,CAAC,EACnCG,EAAU,IACO,CACZ,KAAA,YACL,MAAMq+J,EAAmC,KAAK,SAAS,KAAK,SAAS,EAAI,CACvE,UAAW,KAAK,SAAA,EAEZG,EAAkB,MAAM,IAAI,QAAgB,CAAC3gK,EAASC,IAAW,CACrEugK,EAAQ,QAAUxgK,EAClB,KAAK,MAAM,CACT,KAAM,OACN,QAAA0gK,EACA,QAAS/tG,GACP3wD,EACA,KAAK,qBAAqB,QAC1B,EACF,EACA,KAAM,CACJ,UAAWw+J,EAAQ,UACnB,GAAG34J,CACL,CAAA,CACD,EACD,WAAW,IAAM,CACf5H,EACE,IAAI,KAAK,GAAG,UAAUugK,EAAQ,SAAS,KAAKI,GAAQ/4J,CAAI,CAAC,YAAA,GAE1D1F,CAAO,CAAA,CACX,EACM,cAAA,KAAK,SAASq+J,EAAQ,SAAS,EAC/BG,CACT,CACF,CCtbO,SAASE,IAAOC,EAAc,IAAK,CACxC,MAAMC,EAAQ,SAAS,gBAEjBC,EAAM,OAAO,MAAQ,OAAO,KAAO,OAAO,iBAAmB,EACnED,EAAM,QAAQ,IAAMC,EAiBpB,IAAIhoH,EAAM,IACV,MAAMioH,EAAS,UAAY,CAEzBF,EAAM,MAAM,OAAS,OAAO,YAAc,KAG1C,MAAMt5G,EAAcs5G,EAAM,YAC1BA,EAAM,QAAQ,MAAQt5G,EACtBs5G,EAAM,QAAQ,OAASt5G,EAAcq5G,EAAc,KAAO,SAE1DC,EAAM,QAAQ,IAAM/nH,EAAM,KAAK,IAC7B,IACA,KAAK,MAAM,KAAOyO,EAAcq5G,EAAY,CAClD,EAIIC,EAAM,MAAM,SAAW/nH,EAAM,IACjC,EAEEioH,IAGA,OAAO,OAAS,SAAUznL,EAAG,CAC3B,OAAO,WAAWA,CAAC,EAAIw/D,CAC3B,EACE,OAAO,OAAS,SAAUx/D,EAAG,CAC3B,OAAO,WAAWA,CAAC,EAAIw/D,CAC3B,EAEO,OAAO,kBAGZ,OAAO,iBACL,sBAAuB,OAAS,oBAAsB,SACtDioH,EACA,EACJ,CACA,CCxDO,MAAMC,GAAa,CACxB,eACA,gBACA,oBAAgD,KAChD,qBAAiD,KAEjD,YAAYC,EAAgCC,EAAiC,CACtE,KAAA,eAAiB,IAAItkH,GAASqkH,CAAY,EAC1C,KAAA,gBAAkB,IAAIrkH,GAASskH,CAAa,CACnD,CAEA,OAAQ,CACN,KAAK,oBAAoB,EAAE,KAAMpkH,GAAgB,CAC/C,KAAK,KAAKA,CAAW,CAAA,CACtB,CACH,CAEA,KAAM,CACJ,KAAK,qBAAqB,QAC1B,KAAK,sBAAsB,QAC3B,KAAK,oBAAsB,KAC3B,KAAK,qBAAuB,KAC5B,KAAK,MAAM,cAAc,CAC3B,CAEA,qBAAsB,CACpB,OAAO,IAAI,QAAqB,CAACh9C,EAASC,IAAW,CACnD,UAAU,aACP,aAAa,CACZ,MAAO,GACP,MAAO,EAAA,CACR,EACA,KAAM+8C,GAAgB,CAChB,KAAA,eAAe,aAAaA,CAAW,EAC5Ch9C,EAAQg9C,CAAW,CAAA,CACpB,EACA,MAAO/0C,GAAU,CACX,KAAA,MAAM,iCAAiCA,CAAK,GAAG,EACpDhI,EAAOgI,CAAK,CAAA,CACb,CAAA,CACJ,CACH,CAEA,qBAAqBqW,EAAsB,CACnC,MAAA0+B,EAAc1+B,EAAM,QAAQ,CAAC,EAC9B,KAAA,gBAAgB,aAAa0+B,CAAW,EAC7C,KAAK,MAAM,gDAAgD,CAC7D,CAEA,KAAKqkH,EAA0B,CACvB,MAAAC,EAAcD,EAAY,iBAC1BE,EAAcF,EAAY,iBAC5BC,EAAY,OAAS,GACvB,KAAK,MAAM,uBAAuBA,EAAY,CAAC,EAAE,KAAK,GAAG,EAEvDC,EAAY,OAAS,GACvB,KAAK,MAAM,uBAAuBA,EAAY,CAAC,EAAE,KAAK,GAAG,EAI3D,MAAMC,EAAU,OAGVC,EAAsB,IAAI,kBAAkBD,CAAO,EACzD,KAAK,oBAAsBC,EAC3B,KAAK,MAAM,2DAA2D,EAClDA,EAAA,iBAAiB,eAAgB,KAAK,gBAAgB,EACtDA,EAAA,iBAClB,2BACA,KAAK,sBAAA,EAGD,MAAAC,EAAuB,IAAI,kBAAkBF,CAAO,EAC1D,KAAK,qBAAuBE,EAC5B,KAAK,MAAM,6DAA6D,EACnDA,EAAA,iBACnB,eACA,KAAK,gBAAA,EAEcA,EAAA,iBACnB,2BACA,KAAK,sBAAA,EAEcA,EAAA,iBAAiB,QAAS,KAAK,oBAAoB,EAExE,KAAK,MAAM,+CAA+C,EAC1DD,EAAoB,SAASH,EAAY,CAAC,EAAGD,CAAW,EACxDI,EAAoB,SAASF,EAAY,CAAC,EAAGF,CAAW,EAExD,KAAK,MAAM,wCAAwC,EACnDI,EACG,YAAY,CACX,oBAAqB,EACtB,CAAA,EACA,KAAME,GAAgB,KAAK,aAAaA,CAAW,CAAC,EACpD,MAAOx4J,GAAQ,KAAK,2BAA2BA,CAAG,CAAC,CACxD,CAEA,iBAAiBmV,EAAkC,CACjD,MAAMsjJ,EAAiBtjJ,EAAM,OACvBujJ,EAAevjJ,EAAM,UAE3B,GAAIsjJ,GAAkBC,EAAc,CAC5B,MAAAC,EAAkB,IAAI,gBAAgBD,CAAY,EAClDE,EAAY,KAAK,aAAaH,CAAc,EAE9CG,IACFA,EACG,gBAAgBD,CAAe,EAC/B,KAAK,IAAM,CACV,KAAK,wBAAwBF,CAAc,CAAA,CAC5C,EACA,MAAO35J,GAAe,CAChB,KAAA,wBAAwB25J,EAAgB35J,CAAK,CAAA,CACnD,EACE,KAAA,MACH,GAAG,KAAK,YAAY25J,CAAc,CAAC;AAAA,EAC9BtjJ,EAAM,UAAU,SAAS,GAAA,EAGpC,CACF,CAEA,wBAAwBsjJ,EAAmC,CACzD,KAAK,MAAM,GAAG,KAAK,YAAYA,CAAc,CAAC,2BAA2B,CAC3E,CAEA,wBAAwBA,EAAmC35J,EAAY,CAChE,KAAA,MACH,GAAG,KAAK,YAAY25J,CAAc,CAAC;AAAA,EAC9B35J,EAAM,SAAU,CAAA,GAAA,CAEzB,CAEA,uBAAuBqW,EAAc,CACnC,MAAMsjJ,EAAiBtjJ,EAAM,OACrB,QAAA,IAAI,2BAA4BA,CAAK,EACzCsjJ,GACG,KAAA,MACH,GAAG,KAAK,YAAYA,CAAc,CAAC,eAC9BA,EAAe,kBAAkB,GAAA,CAG5C,CAEA,aAAaD,EAAwC,CACnD,KAAK,MAAM;AAAA,EAAoCA,EAAY,GAAG,EAAE,EAE5D,KAAK,sBACP,KAAK,MAAM,gDAAgD,EAC3D,KAAK,oBACF,oBAAoBA,CAAW,EAC/B,KAAK,IAAM,CACL,KAAA,2BAA2B,KAAK,mBAAoB,CAAA,CAC1D,EACA,MAAOx4J,GAAQ,KAAK,2BAA2BA,CAAG,CAAC,GAGpD,KAAK,uBACP,KAAK,MAAM,kDAAkD,EAC7D,KAAK,qBACF,qBAAqBw4J,CAAW,EAChC,KAAK,IAAM,CACL,KAAA,4BAA4B,KAAK,oBAAqB,CAAA,CAC5D,EACA,MAAOx4J,GAAQ,KAAK,2BAA2BA,CAAG,CAAC,EAEtD,KAAK,MAAM,0CAA0C,EACrD,KAAK,qBACF,aAAa,EACb,KAAMw4J,GAAgB,KAAK,cAAcA,CAAW,CAAC,EACrD,MAAOx4J,GAAQ,KAAK,2BAA2BA,CAAG,CAAC,EAE1D,CAEA,cAAcw4J,EAAwC,CACpD,KAAK,MAAM;AAAA,EAAsCA,EAAY,GAAG,GAAG,EAE/D,KAAK,uBACP,KAAK,MAAM,iDAAiD,EAC5D,KAAK,qBACF,oBAAoBA,CAAW,EAC/B,KAAK,IAAM,CACL,KAAA,2BAA2B,KAAK,oBAAqB,CAAA,CAC3D,EACA,MAAOx4J,GAAQ,KAAK,2BAA2BA,CAAG,CAAC,GAGpD,KAAK,sBACP,KAAK,MAAM,iDAAiD,EAC5D,KAAK,oBACF,qBAAqBw4J,CAAW,EAChC,KAAK,IAAM,CACL,KAAA,4BAA4B,KAAK,mBAAoB,CAAA,CAC3D,EACA,MAAOx4J,GAAQ,KAAK,2BAA2BA,CAAG,CAAC,EAE1D,CAEA,2BAA2BlB,EAAY,CACrC,KAAK,MAAM,yCAAyCA,EAAM,SAAU,CAAA,GAAG,CACzE,CAEA,sBACE25J,EACAI,EACA,CACM,MAAAC,EAAW,KAAK,YAAYL,CAAc,EAChD,KAAK,MAAM,GAAGK,CAAQ,IAAID,CAAY,YAAY,CACpD,CAEA,2BAA2BJ,EAAmC,CACvD,KAAA,sBAAsBA,EAAgB,qBAAqB,CAClE,CAEA,4BAA4BA,EAAmC,CACxD,KAAA,sBAAsBA,EAAgB,sBAAsB,CACnE,CAEA,MAAMj0I,EAAc,CAClBA,EAAOA,EAAK,OACZ,MAAMje,GAAO,OAAO,YAAY,MAAQ,KAAM,QAAQ,CAAC,EAC/C,QAAA,IAAIA,EAAKie,CAAI,EACf,MAAAu0I,EAAM,SAAS,cAAc,KAAK,EACxCA,EAAI,UAAY,QAAQxyJ,CAAG,KAAKie,CAAI,SACpC,SAAS,eAAe,OAAO,GAAG,YAAYu0I,CAAG,CACnD,CAEA,aAAaN,EAAmC,CAC9C,OAAOA,IAAmB,KAAK,oBAC3B,KAAK,qBACL,KAAK,mBACX,CAEA,YAAYA,EAAmC,CACtC,OAAAA,IAAmB,KAAK,oBAC3B,sBACA,sBACN,CACF,CClPO,MAAMO,GAAc,CACzB,OACA,GAEA,YAAY3iJ,EAA2B,CACrC,KAAK,OAASA,EACd,MAAM4iJ,EAAc,CAAE,MAAO,GAAM,mBAAoB,EAAM,EAEzD,GADJ,KAAK,GAAK,KAAK,OAAO,WAAW,QAASA,CAAW,EACjD,CAAC,KAAK,GACF,MAAA,IAAI,MAAM,6BAA6B,CAEjD,CACF,CC6LA,MAAMC,GAAmC,CAAA,EACnCC,GAAgD,CAAA,EAE/C,SAASC,GAA2Bt2J,EAAgB,CACzDo2J,GAAiB,KAAKp2J,CAAE,CAC1B,CAKgB,SAAAu2J,IACdC,EACAC,EAAQ,GACR,CAEA,MAAMC,EAAaC,KACf,GAAAN,GAAqBK,CAAU,EACjC,OAIC,GAAA,MAAOnlI,GAAQ,CAChB,QAAQ,IAAIA,EAAI,QAAU,KAAK,UAAUA,CAAG,CAAC,CAAA,CAC9C,EAID,GAAG,MAAM,IAAM,CACb6kI,GAAiB,QAASp2J,GAAOA,EAAI,CAAA,CAAA,CACtC,EACD,MAAM42J,EAAiB,CACrB,4BACA,0BACA,mBACA,mBACA,cACA,aACA,mBACA,YACA,aACA,YACA,iBACA,cACA,gBACA,cACA,eACA,cACA,gBACA,kBACA,iBACA,iBACA,eACA,cACA,iBACA,iBACA,gBACA,gBACA,yBACA,yBACA,cACA,aACA,0BACA,UACA,aACA,UAAA,EAGIC,EAAmB,CACvB,qBACA,qBACA,oBACA,eAAA,EAGC,GAAA,OACD,OAAO,OAAOL,EAAkB,CAC9B,MAAAC,EACA,UAAWG,EACX,YAAaC,CAAA,CACd,CAAA,EAEHR,GAAqBK,CAAU,EAAI,EACrC,CAGO,SAASI,IAAaC,EAAiB,CAC5C,OAAO,IAAI,QAAiB,CAAChjK,EAASC,IAAW,CAC/C,GAAG,WAAW,CACZ,UAAW,CAAC+iK,CAAO,EACnB,QAAS,SAAUxlI,EAAK,CAClBA,EAAI,YAAYwlI,CAAO,EACzBhjK,EAAQ,EAAI,EAEZC,EAAO,EAAK,CAEhB,EACA,KAAM,UAAY,CAChBA,EAAO,EAAK,CACd,CAAA,CACD,CAAA,CACF,CACH,CAGO,SAASgjK,IAA8BC,EAO3C,CACDX,GAA2B,UAAY,CACrC,GAAG,0BAA0BW,CAAW,CAAA,CACzC,CACH,CAGO,SAASC,IAA4BD,EAMzC,CACDX,GAA2B,UAAY,CACrC,GAAG,wBAAwBW,CAAW,CAAA,CACvC,CACH,CAGO,SAASE,IAAgBC,EAQ7B,CACD,GAAG,YAAYA,CAAS,CAC1B,CAGO,SAASC,IAAiBD,EAG9B,CACD,GAAG,aAAaA,CAAS,CAC3B,CAIO,SAASE,IAAgBF,EAO7B,CACD,GAAG,YAAYA,CAAS,CAC1B,CAGO,SAASG,IAAkBH,EAO/B,CACD,GAAG,cAAcA,CAAS,CAC5B,CAIO,SAASI,IAAoBJ,EAMjC,CACD,GAAG,gBAAgBA,CAAS,CAC9B,CAGO,SAASK,KAAkB,CAChC,GAAG,YAAY,CACjB,CAGO,SAASC,IAAeN,EAG5B,CACD,GAAG,WAAWA,CAAS,CACzB,CAGO,SAASO,IAAqBP,EAGlC,CACD,GAAG,iBAAiBA,CAAS,CAC/B,CAGO,SAASQ,IAAcR,EAE3B,CACD,GAAG,UAAUA,CAAS,CACxB,CAGO,SAASS,IAAeT,EAE5B,CACD,GAAG,WAAWA,CAAS,CACzB,CAGO,SAASU,IAAcV,EAE3B,CACD,GAAG,UAAUA,CAAS,CACxB,CAGO,SAASW,IAAmBX,EAIhC,CACD,GAAG,eAAeA,CAAS,CAC7B,CAIO,SAASY,IAAgBZ,EAO7B,CACD,GAAG,YAAYA,CAAS,CAC1B,CAGO,SAASa,IAAkBb,EAO/B,CACD,GAAG,cAAcA,CAAS,CAC5B,CAGO,SAASc,IAAmBd,EAOhC,CACD,GAAG,eAAeA,CAAS,CAC7B,CAGO,SAASe,IAAmBf,EAKhC,CACD,GAAG,eAAeA,CAAS,CAC7B,CAGO,SAASgB,IAAiBhB,EAO9B,CACD,GAAG,aAAaA,CAAS,CAC3B,CAGO,SAASiB,IAAgBjB,EAS7B,CACD,GAAG,YAAYA,CAAS,CAC1B,CAGO,SAASkB,IAAelB,EAO5B,CACD,GAAG,WAAWA,CAAS,CACzB,CAOgB,SAAAmB,IACd15J,EAQA25J,EACAC,EACA,CACA,SAASC,GAAgB,CACvB,eAAe,OAAO,uBAAwB75J,EAAQ,SAAU0yB,EAAK,CAC/DA,EAAI,SAAW,6BAGPinI,IAEVC,EAAQlnI,EAAI,OAAO,CACrB,CACD,CACH,CACI,OAAO,eAAkB,IACvB,SAAS,iBACF,SAAA,iBAAiB,sBAAuBmnI,EAAe,EAAK,EAC5D,SAAS,cACT,SAAA,YAAY,sBAAuBA,CAAa,EAChD,SAAA,YAAY,wBAAyBA,CAAa,GAG/CA,GAElB,CAoEO,SAASC,IACdC,EACAC,EACArqG,EAA2C,kBAC3C79D,EAAQ,GACR,CACO,MAAA,6DAA6DioK,CAAK,iBAAiB,mBACxFC,CACD,CAAA,6BAA6BrqG,CAAK,UAAU79D,CAAK,kBACpD,CCpgBO,SAASmoK,IAAW/7H,EAAsB,CAErC,OAAQ,eAChBA,GAAYA,EAAS,EAGZ,SAAA,iBAAiB,sBAAuBA,EAAU,EAAK,CAEpE,CAoBA,SAASg8H,GACPxnI,EACAlmB,EACA,CACA,IAAI2tJ,EAAmB,OACvB,OAAQznI,EAAI,MAAO,CACjB,IAAK,GACgBynI,EAAA,QACnB,MACF,IAAK,GACgBA,EAAA,OACnB,MACF,IAAK,GACgBA,EAAA,SACnB,MACF,IAAK,GACgBA,EAAA,QACnB,MACF,IAAK,IACgBA,EAAA,OACnB,MACF,IAAK,IACgBA,EAAA,OACf3tJ,IAAe,gBACE2tJ,EAAA,cAErB,MACF,IAAK,IACgBA,EAAA,cACnB,MACF,IAAK,IACgBA,EAAA,aACnB,MACF,IAAK,IACgBA,EAAA,OACnB,MACF,IAAK,IACgBA,EAAA,OACnB,MACF,IAAK,IACgBA,EAAA,eACnB,KACJ,CACA,MAAO,GAAGznI,EAAI,KAAK,IAAIynI,CAAgB,MAAMznI,EAAI,YAAY,EAC/D,CAGgB,SAAA0nI,IACd3qH,EACAkqH,EACAC,EACA,CACG,GAAA,SACD,OAAO,OAAOnqH,EAAQ,CAAA,CAIrB,EACD,SAAU/c,EAAK,CACb,IAAI2nI,EAAgB,OACpB,OAAQ3nI,EAAI,WAAY,CACtB,IAAK,KACa,OAAA2nI,EAAA,SACTV,IAAYU,CAAa,EAClC,IAAK,KACaA,EAAA,QAChB,MACF,IAAK,KACaA,EAAA,SAChB,MACF,IAAK,MACaA,EAAA,SAChB,MACF,IAAK,MACaA,EAAA,SAChB,MACF,IAAK,IACaA,EAAA,6BAChB,KACJ,CACAT,IAAUS,CAAa,CACzB,CAAA,CAEJ,CAGgB,SAAAC,IACd7qH,EACAkqH,EACAC,EACA,CACG,GAAA,KACD,OAAO,OAAOnqH,EAAQ,CACpB,KAAO/c,GAA0B,CACrBknI,IAAAM,GAA6BxnI,CAAG,CAAC,CAC7C,CAAA,CACD,EACD,SAAUA,EAAK,CACbinI,IAAYjnI,EAAI,IAAI,CACtB,CAAA,CAEJ,CAGgB,SAAA6nI,IACd9qH,EACAkqH,EACAC,EACA,CACG,GAAA,YACD,OAAO,OAAOnqH,EAAQ,CACpB,KAAO/c,GAA0B,CACrBknI,IAAAM,GAA6BxnI,CAAG,CAAC,CAC7C,CAAA,CACD,EACD,SAAUA,EAAK,CACbinI,IAAYjnI,CAAG,CACjB,CAAA,CAEJ,CAGgB,SAAA8nI,IACd/qH,EACAkqH,EACAC,EACA,CACG,GAAA,aACD,OAAO,OAAOnqH,EAAQ,CACpB,KAAO/c,GAA0B,CACrBknI,IAAAM,GAA6BxnI,CAAG,CAAC,CAC7C,CAAA,CACD,EACD,UAAY,CACEinI,KACd,CAAA,CAEJ,CAGgB,SAAAc,IACdhrH,EACAkqH,EACAC,EACA,CACG,GAAA,YACD,OAAO,OAAOnqH,EAAQ,CACpB,KAAO/c,GAA0B,CACrBknI,IAAAM,GAA6BxnI,EAAK,aAAa,CAAC,CAC5D,CAAA,CACD,EACD,SAAUA,EAAK,CACbinI,IAAYjnI,CAAG,CACjB,CAAA,CAEJ,CAGgB,SAAAgoI,IACdjrH,EACAkqH,EACAC,EACA,CACG,GAAA,aACD,OAAO,OAAOnqH,EAAQ,CACpB,KAAO/c,GAA0B,CACrBknI,IAAAM,GAA6BxnI,CAAG,CAAC,CAC7C,CAAA,CACD,EACD,UAAY,CACEinI,KACd,CAAA,CAEJ,CCpTO,MAAMgB,GAAY,CACvB,IAEA,YACE/wG,EACAgxG,EAAe,WACfC,EAAe,UACfC,EAAU,GACV,CACA,KAAK,IAAM,IAAI,EAAE,IAAIlxG,CAAS,EACzB,KAAA,IAAI,cAAc,IAAI,EAAE,OAAOgxG,EAAcC,CAAY,EAAGC,CAAO,CAC1E,CACF,CCNO,MAAMC,GAAW,CACtB,MACA,UAEA,YAAYtmK,EAIT,CACD,KAAK,MAAQA,EAAQ,MACrB,KAAK,UAAYA,EAAQ,UACzB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACpBA,EAAQ,kBACV,KAAK,uBAAuB,CAEhC,CAGO,sBAAuB,CAC5B,OAAO,QAAU,CAAC88C,EAASnvC,EAAQ6wC,EAAQ+nH,EAAO79J,IAAU,CAC1D,MAAM89J,EAAM,CACV,KAAM,mBACN,IAAK1pH,EACL,KAAMnvC,EACN,IAAK6wC,EACL,IAAK+nH,EACL,MAAO79J,GAAO,KAAA,EAEhB,KAAK,OAAO89J,CAAG,CAAA,CAEnB,CAGO,uBAAwB,CACtB,OAAA,iBACL,QACCznJ,GAAU,CACT,MAAM7gB,EAAS6gB,EAAM,OAErB,GACE7gB,aAAkB,mBAClBA,aAAkB,kBAClBA,aAAkB,iBAClB,CACA,MAAMsoK,EAAM,CACV,KAAM,sBACN,SAAWtoK,EAAe,KAAQA,EAAe,KACjD,QAASA,EAAO,OAAA,EAElB,KAAK,OAAOsoK,CAAG,CACjB,CACF,EACA,EAAA,CAEJ,CAGO,oBAAqB,CACnB,OAAA,iBACL,qBACCznJ,GAAiC,CAChC,MAAMynJ,EAAM,CACV,KAAM,gBACN,OAAQznJ,EAAM,MAAA,EAEhB,KAAK,OAAOynJ,CAAG,CACjB,CAAA,CAEJ,CAGO,wBAAyB,CAE9BlvH,GAAgB,IAAM,CACpB,WAAW,IAAM,CACf,MAAM3V,EAAS,CACb,CAAC,OAAO,WAAa,EAAG,OAAO,YAAc,CAAC,EAC9C,CAAC,OAAO,WAAa,EAAG,OAAO,YAAc,EAAG,EAChD,CAAC,OAAO,WAAa,EAAG,OAAO,YAAc,EAAG,EAChD,CAAC,OAAO,WAAa,GAAK,OAAO,YAAc,CAAC,EAChD,CAAC,OAAO,WAAa,GAAK,OAAO,YAAc,CAAC,CAAA,EAIlD,IAAI8kI,EAAkB,EAmBlB,GAjBG9kI,EAAA,QAASmB,GAAU,CAClB,KAAA,CAACxgD,EAAGhX,CAAC,EAAIw3D,EAGT4jI,EADW,SAAS,kBAAkBpkL,EAAGhX,CAAC,EACpB,CAAC,GAK3Bo7L,GAAY,UAAY,QACxBA,GAAY,UAAY,SAExBD,GACF,CACD,EAGGA,GAAmB9kI,EAAO,OAAS,GAAK,CAC1C,MAAM6kI,EAAM,CACV,KAAM,oBACN,OAAQ,QAAA,EAEV,KAAK,OAAOA,CAAG,CACjB,GACC,GAAI,CAAA,CACR,CACH,CAOO,OAAOlkK,EAA2B,CACjC,MAAAi4D,EAAU,KAAK,UAAU,CAC7B,GAAGj4D,EACH,MAAO,KAAK,MACZ,KAAMqkK,GAAkB,CAAA,CACzB,EAED,QAAQ,MAAMpsG,CAAO,EACjB,KAAK,WACG,UAAA,WAAW,KAAK,UAAWA,CAAO,CAEhD,CA8BF,CAGA,SAASqsG,KAAoB,CAC3B,OAAO,SACJ,cAAc,0BAA0B,GACvC,aAAa,SAAS,CAC5B,CAGA,eAAeC,KAA6B,CAK1C,MAAM5nH,GADO,MAHD,MAAM,MAAM,iBAAiB,KAAK,IAAK,CAAA,GAAI,CACrD,MAAO,UAAA,CACR,GACsB,QACJ,MACjB,6DAAA,EAEK,OAAAA,EAAQA,EAAM,CAAC,EAAI,IAC5B,CAGA,eAAsB6nH,KAAe,CAC/B,GAAA,CACF,MAAMv8C,EAAiBq8C,MACjBG,EAAgB,MAAMF,MACxBt8C,GAAkBw8C,GAAiBx8C,IAAmBw8C,GAE7C,OAAO,QAAQ,iBAAiB,GAEzC,OAAO,SAAS,eAGbn9J,EAAK,CACJ,QAAA,MAAM,UAAWA,CAAG,CAC9B,CACF,CChNgB,SAAAo9J,GACdjiK,EACA/E,EACA,CACA,MAAMp0B,EAAI,OAAOm5B,GAAO,SAAWA,EAAMA,EAAI,WAGvC2pD,EAAW,IAAM,CACjB,GAAA,CACF,MAAMC,EAAY,OAAO,aAAa,QAAQ/iF,CAAC,EAC/C,GAAI+iF,EACK,OAAA,KAAK,MAAMA,CAAS,OAEnB,CAEZ,CACO,EAIHC,EAAYC,GAAmC,CAC/C,GAAA,CACE,OAAOA,EAAe,MAAS,IACjC,OAAO,aAAa,QAAQjjF,EAAG,KAAK,UAAUijF,CAAc,CAAC,EAEtD,OAAA,aAAa,WAAWjjF,CAAC,OAExB,CAEZ,CAAA,EAGK,MAAA,CACL,IAAK,IAAMkjF,GAAqBJ,EAAA,EAAY1uD,CAAO,EAAE,MAAM,MAC3D,IAAM/lB,GAAW20E,EAASE,GAAqBJ,EAAS,EAAG1uD,CAAO,EAAE,IAAI/lB,CAAC,CAAC,CAAA,CAE9E,CAEO,SAASgtL,KAAoB,CAClC,OAAO,aAAa,OACtB,CCxCgB,SAAAC,IACd7iK,EACArE,EAOA,CACI,IAAA6E,EAAQ7E,GAAS,OAAS,GAE9B,GAAI,CAAC6E,EAAO,CACV,MAAM75B,EAAI,KAAK,SAAS,MAAM,GAC3B,MAAM,KAAKq5B,CAAI,GAAG,EAClB,IAAI,GACH,MAAM,GAAG,EACV,QACCr5B,IACF65B,EAAQ,mBAAmB75B,CAAC,EAEhC,CAEA,MAAMgwI,EAAM,IAAMn2G,EAEZukF,EAAOnvG,GAAW,CAEtB,GADQ4qB,EAAA5qB,EACJ4qB,EAAO,CACT,MAAMsiK,EAASnnK,GAAS,OAAS,YAAcA,EAAQ,OAAS,GAC1Dg0B,EAAOh0B,GAAS,KAAO,UAAYA,EAAQ,KAAO,GAClDonK,EAAepnK,GAAS,QAAU,GAAO,WAAa,GAC5D,IAAIqnK,EACFhjK,EAAO,IAAM,mBAAmBQ,CAAK,EAAIsiK,EAASnzI,EAAOozI,EAC3D,GAAIpnK,GAAS,KAAM,CACX,MAAAsnK,EACJ,aACA,IAAI,KAAK,KAAK,MAAQtnK,EAAQ,KAAO,KAAK,EAAE,YAAY,EAChDqnK,GAAAC,CACZ,CACA,SAAS,OAASD,CACpB,CAAA,EAGF,OAAAj+E,EAAIvkF,CAAK,EAEF,CACL,IAAAm2G,EACA,IAAA5xB,CAAA,CAEJ,CAEO,SAASm+E,KAAe,CAS7B,MAAMC,EAAU,SAAS,OAAO,MAAM,IAAI,EAC1C,QAASx8L,EAAI,EAAGA,EAAIw8L,EAAQ,OAAQx8L,IAAK,CACvC,MAAMkP,EAAI,OAAO,SAAS,SAAS,MAAM,GAAG,EACrC,KAAAA,EAAE,OAAS,GAAG,CACb,MAAAutL,EACJ,mBAAmBD,EAAQx8L,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,EACzD,oDACAkP,EAAE,KAAK,GAAG,EACV,UACIF,EAAI,SAAS,SAAS,MAAM,GAAG,EAE9B,IADP,SAAS,OAASytL,EAAa,IACxBztL,EAAE,OAAS,GAChB,SAAS,OAASytL,EAAaztL,EAAE,KAAK,GAAG,EACzCA,EAAE,IAAI,EAERE,EAAE,MAAM,CACV,CACF,CACF,CC7EA,SAASwtL,IAAYC,EAAiBC,EAAmB,CACnD,IAAAC,EACJ,OAAKF,EAAG,iBAAiB,SAASC,CAAS,IACzCC,EAAcF,EAAG,kBAAkBC,EAAW,CAAE,QAAS,KAAM,GAE1DC,CACT,CAEO,SAASC,IACdC,EACAC,EAAY,EACZJ,EACA,CACA,OAAO,IAAI,QAAQ,CAACnnK,EAASC,IAAW,CAClC,IAAAinK,EACJ,MAAM1G,EAA4B,OAAO,UAAU,KAAK8G,EAAQC,CAAS,EACzE/G,EAAQ,QAAU,IAAM,CACtBvgK,EAAO,cAAc,CAAA,EAEfugK,EAAA,UAAahgM,GAAM,CACzB0mM,EAAM1mM,EAAE,OAAsB,OAC9BymM,IAAYC,EAAIC,CAAS,EACzBnnK,EAAQknK,CAAE,CAAA,CACZ,CAGD,CACH,CAEgB,SAAAM,IACdN,EACAC,EACA9c,EAAwC,CAAE,GAAI,EAAG,KAAM,OACvD,CACA,OAAO,IAAI,QAAQ,CAACrqJ,EAASC,IAAW,CACtC,MAAMwnK,EAA8BP,EAAG,YACrC,CAACC,CAAS,EACV,WAAA,EAEkCM,EAAY,YAAYN,CAAS,EACzD,IAAI9c,CAAI,EACRod,EAAA,WAAcjnM,GAAM,CAC9Bw/B,EAAQx/B,CAAC,CAAA,EAECinM,EAAA,QAAWjnM,GAAM,CAC3By/B,EAAOz/B,CAAC,CAAA,CACV,CACD,CACH,CCzDa,MAAAknM,IAAe,CAAC,OAAQ,OAAO,EAatC,CAAE,IAAKC,IAA8B,IAAKC,EAA6B,EAC3ErB,GAAmB,cAAc,EAE7BsB,GAAW,IAAIv5J,GACfw5J,IAASD,GAAS,KAAK/sJ,GAAU,MAAS,CAAC,EAEjD,SAASitJ,GAAoBC,EAAqB,CAChD,OAAQA,EAAQ,CACd,IAAK,OACM,SAAA,gBAAgB,UAAU,IAAI,MAAM,EAC1BnhK,GAAA,SAAS,gBAAiB,oBAAqB,MAAM,EACxE,MACF,IAAK,QACL,QACW,SAAA,gBAAgB,UAAU,OAAO,MAAM,EAChDA,GACE,SAAS,gBACT,oBACA,OAAA,EAEF,KACJ,CACF,CAEO,SAASuoJ,IAAe4Y,EAAkC,CAC/D,OAAAJ,GAA6BI,CAAM,EACnCD,GAAoBC,CAAM,EAC1BH,GAAS,KAAKG,CAAM,EACbA,CACT,CAQO,SAASC,KAA2C,CACzD,OAAO9yJ,GAAc,CACnB2yJ,IACA13G,GAAY,8BAA8B,CAC3C,CAAA,EAAE,KACD/7C,GAAI,CAAC,CAAC2zJ,EAAQE,CAAc,IACtBF,IAGJA,EAASL,IAA6B,EACjCK,IAEHA,EAASE,EAAiB,OAAS,QACnCN,GAA6BI,CAAM,GAErCD,GAAoBC,CAAM,EACnBA,EACR,CAAA,CAEL,CAEgB,SAAAG,GAAcvkK,EAAcwN,EAAe,GAAY,CACrE,OACE,iBAAiB,SAAS,eAAe,EAAE,iBAAiBxN,CAAI,GAChEwN,CAEJ,CAEgB,SAAAg3J,IAAcxkK,EAAcQ,EAAqB,CAE/D,SAAS,gBAAgB,MAAM,YAAYR,EAAMQ,CAAK,CACxD,CAEO,SAASikK,IAAehX,EAAc,CACpC,MAAA,CAEL,IAAK8W,GAAc,WAAY,SAAS,EACxC,SAAUA,GAAc,iBAAkB,SAAS,EACnD,eAAgBA,GAAc,wBAAyB,SAAS,EAChE,YAAaA,GAAc,oBAAqB,SAAS,EACzD,MAAOA,GAAc,aAAc,SAAS,EAC5C,OAAQA,GAAc,cAAe,SAAS,EAC9C,UAAWA,GAAc,iBAAkB,SAAS,EACpD,eAAgBA,GAAc,uBAAwB,SAAS,EAE/D,QAASA,GAAc,eAAgB,SAAS,EAChD,MAAOA,GAAc,aAAc,SAAS,EAC5C,KAAMA,GAAc,YAAa,SAAS,EAG1C,WAAYA,GAAc,kBAAmB,SAAS,EACtD,oBAAqBA,GAAc,4BAA6B,SAAS,EACzE,mBAAoBA,GAAc,2BAA4B,SAAS,EACvE,WAAYA,GAAc,kBAAmB,SAAS,EACtD,iBAAkBA,GAAc,yBAA0B,SAAS,EACnE,MAAOA,GAAc,aAAc,SAAS,EAC5C,YAAaA,GAAc,oBAAqB,SAAS,EACzD,IAAKA,GAAc,WAAY,SAAS,EACxC,YAAaA,GAAc,mBAAoB,SAAS,EACxD,KAAMA,GAAc,YAAa,SAAS,EAC1C,cAAeA,GAAc,sBAAuB,SAAS,EAC7D,aAAcA,GAAc,qBAAsB,SAAS,EAG3D,kBAAmBA,GAAc,0BAA2B,SAAS,EACrE,2BAA4BA,GAC1B,oCACA,SACF,EACA,0BAA2BA,GACzB,mCACA,SACF,EACA,kBAAmBA,GAAc,0BAA2B,SAAS,EACrE,wBAAyBA,GACvB,iCACA,SACF,EACA,aAAcA,GAAc,qBAAsB,SAAS,EAC3D,mBAAoBA,GAAc,4BAA6B,SAAS,EACxE,WAAYA,GAAc,mBAAoB,SAAS,EACvD,mBAAoBA,GAAc,2BAA4B,SAAS,EACvE,YAAaA,GAAc,oBAAqB,SAAS,EACzD,qBAAsBA,GACpB,8BACA,SACF,EACA,oBAAqBA,GAAc,6BAA8B,SAAS,EAG1E,aAAcA,GAAc,cAAc9W,CAAK,WAAY,SAAS,EACpE,eAAgB8W,GAAc,cAAc9W,CAAK,aAAc,SAAS,EACxE,cAAe8W,GAAc,cAAc9W,CAAK,YAAa,SAAS,EACtE,gBAAiB8W,GAAc,cAAc9W,CAAK,cAAe,SAAS,EAC1E,sBAAuB8W,GACrB,cAAc9W,CAAK,qBACnB,SACF,EACA,WAAY8W,GAAc,cAAc9W,CAAK,SAAU,SAAS,EAChE,iBAAkB8W,GAChB,cAAc9W,CAAK,gBACnB,SACF,EACA,SAAU8W,GAAc,cAAc9W,CAAK,OAAQ,SAAS,EAC5D,iBAAkB8W,GAChB,cAAc9W,CAAK,eACnB,SACF,EACA,UAAW8W,GAAc,cAAc9W,CAAK,QAAS,SAAS,EAC9D,mBAAoB8W,GAClB,cAAc9W,CAAK,kBACnB,SACF,EACA,kBAAmB8W,GACjB,cAAc9W,CAAK,iBACnB,SACF,CAAA,CAEJ,CC5KA,IAAIiX,IAAkB,oBACtB,SAASC,IAAoBC,EAAYC,EAAM,CAC7C,OAAQA,EAAI,CACV,IAAK,IACH,OAAOD,EACT,IAAK,IACL,IAAK,IACH,OAAO,OAAOA,CAAU,EAC1B,IAAK,IACH,OAAO,KAAK,UAAUA,CAAU,EAClC,IAAK,IAAK,CACR,GAAI,OAAOA,GAAe,SACxB,OAAOA,EAET,MAAMne,EAAO,KAAK,UAAUme,CAAU,EACtC,OAAIne,IAAS,MAAQA,IAAS,MAAQ,mBAAmB,KAAKA,CAAI,EACzDme,EAEFne,CACR,CACF,CACH,CACA,SAASh5H,GAAOgrB,KAAYqsH,EAAa,CACvC,GAAIA,EAAY,SAAW,EACzB,OAAOrsH,EAET,IAAIssH,EAAkB,EAClBC,EAAmBvsH,EAAQ,QAC7BisH,IACA,CAAC9pH,EAAOqqH,EAAWnoM,EAAG+nM,IAAS,CAC7B,MAAMD,EAAaE,EAAYC,CAAe,EACxCvkK,EAAQmkK,IAAoBC,EAAYC,CAAI,EAClD,OAAKI,EAIErqH,GAHLmqH,IACOvkK,EAGV,CACL,EACE,OAAIukK,EAAkBD,EAAY,SAChCE,GAAoB,IAAIF,EAAY,MAAMC,CAAe,EAAE,KAAK,GAAG,CAAC,IAEtEC,EAAmBA,EAAiB,QAAQ,UAAW,GAAG,EACnDA,CACT,CAGA,IAAIE,IAAyB,EAC7B,SAASC,IAAgB9gK,EAAO,CAC9B,GAAI,CAACA,EAAM,MACT,OAEF,MAAM+gK,EAAY/gK,EAAM,MAAM,MAAM;AAAA,CAAI,EACxC+gK,EAAU,OAAO,EAAGF,GAAsB,EAC1C7gK,EAAM,MAAQ+gK,EAAU,KAAK;AAAA,CAAI,CACnC,CACA,IAAIC,IAAiB,cAAc,KAAM,CACvC,YAAY5sH,KAAYqsH,EAAa,CACnC,MAAMrsH,CAAO,EACb,KAAK,QAAUA,EACf,KAAK,KAAO,sBACZ,KAAK,QAAUhrB,GAAOgrB,EAAS,GAAGqsH,CAAW,EAC7CK,IAAgB,IAAI,CACrB,CACH,EACI7nG,GAAY,CAACxoD,EAAW2jC,KAAYqsH,IAAgB,CACtD,GAAI,CAAChwJ,EACH,MAAM,IAAIuwJ,IAAe5sH,EAAS,GAAGqsH,CAAW,CAEpD,EACAxnG,GAAU,GAAK,CAACgoG,EAAkBxwJ,EAAW2jC,KAAYqsH,IAAgB,CACvE,GAAI,CAAChwJ,EAAW,CACd,MAAMywJ,EAAgBT,EAAY,SAAW,EAAIrsH,EAAUhrB,GAAOgrB,EAAS,GAAGqsH,CAAW,EACzF,IAAIzgK,EACJ,GAAI,CACFA,EAAQ,QAAQ,UAAUihK,EAAkB,CAC1CC,CACR,CAAO,CACF,MAAa,CACZlhK,EAAQihK,EAAiBC,CAAa,CACvC,CACD,MAAMlhK,CACP,CACH,ECnFA,MAAMmhK,IAAiB,QACvB,SAASD,GAAc9sH,KAAYqsH,EAAa,CAC9C,MAAMW,EAAsBh4I,GAAOgrB,EAAS,GAAGqsH,CAAW,EAC1D,MAAO,GAAGU,GAAc,IAAIC,CAAmB,EACjD,CACA,SAASv1D,IAAKz3D,KAAYqsH,EAAa,CACrC,QAAQ,KAAKS,GAAc9sH,EAAS,GAAGqsH,CAAW,CAAC,CACrD,CACA,SAASzgK,IAAMo0C,KAAYqsH,EAAa,CACtC,QAAQ,MAAMS,GAAc9sH,EAAS,GAAGqsH,CAAW,CAAC,CACtD,CACA,MAAMY,GAAW,CACf,cAAAH,GACF,KAAEr1D,IACF,MAAE7rG,GACF,EACA,MAAMshK,WAAsB,KAAM,CAChC,YAAYltH,EAAS,CACnB,MAAMA,CAAO,EACb,KAAK,KAAO,eACb,CACH,CCpBA,SAASmtH,KAAe,CACtBtoG,GACE,OAAO,IAAQ,IACfooG,GAAS,cACP,iRACD,CACL,CACA,CCRA,IAAIG,GAAW,KAAM,CACpBC,GACAC,GACA,aAAc,CACb,KAAKD,GAAQ,GACb,KAAKC,GAAwB,IAAI,GACjC,CACD,IAAK,OAAO,QAAQ,GAAI,CACvB,OAAO,KAAKD,GAAM,OAAO,QAAQ,EAAE,KAAK,KAAKA,EAAK,CAClD,CACD,SAAU,CACT,OAAO,KAAKC,GAAM,SAClB,CAID,IAAIrlK,EAAK,CACR,OAAO,KAAKqlK,GAAM,IAAIrlK,CAAG,GAAK,CAAA,CAC9B,CAID,QAAS,CACR,OAAO,KAAKolK,GAAM,IAAI,CAAC,CAAA,CAAGtlK,CAAK,IAAMA,CAAK,CAC1C,CAID,OAAOE,EAAKF,EAAO,CAClB,KAAKslK,GAAM,KAAK,CAACplK,EAAKF,CAAK,CAAC,EAC5B,KAAKwlK,GAAUtlK,EAAM+mB,GAASA,EAAK,KAAKjnB,CAAK,CAAC,CAC9C,CAID,QAAQE,EAAKF,EAAO,CACnB,KAAKslK,GAAM,QAAQ,CAACplK,EAAKF,CAAK,CAAC,EAC/B,KAAKwlK,GAAUtlK,EAAM+mB,GAASA,EAAK,QAAQjnB,CAAK,CAAC,CACjD,CAKD,OAAOE,EAAKF,EAAO,CAClB,GAAI,KAAK,OAAS,EAAG,MAAO,GAC5B,MAAM8Q,EAAS,KAAKy0J,GAAM,IAAIrlK,CAAG,EACjC,GAAI,CAAC4Q,EAAQ,MAAO,GACpB,MAAM5L,EAAQ4L,EAAO,QAAQ9Q,CAAK,EAClC,OAAIkF,IAAU,GAAW,IACzB4L,EAAO,OAAO5L,EAAO,CAAC,EACtB,KAAKogK,GAAM,OAAO,KAAKA,GAAM,UAAWrgK,GAASA,EAAK,CAAC,IAAM/E,GAAO+E,EAAK,CAAC,IAAMjF,CAAK,EAAG,CAAC,EAClF,GACP,CAID,UAAUE,EAAK,CACV,KAAK,OAAS,IAClB,KAAKolK,GAAQ,KAAKA,GAAM,OAAQrgK,GAASA,EAAK,CAAC,IAAM/E,CAAG,EACxD,KAAKqlK,GAAM,OAAOrlK,CAAG,EACrB,CACD,IAAI,MAAO,CACV,OAAO,KAAKolK,GAAM,MAClB,CACD,OAAQ,CACH,KAAK,OAAS,IAClB,KAAKA,GAAM,OAAS,EACpB,KAAKC,GAAM,QACX,CACDC,GAAUtlK,EAAK+3G,EAAQ,CACtBA,EAAO,KAAKstD,GAAM,IAAIrlK,CAAG,GAAK,KAAKqlK,GAAM,IAAIrlK,EAAK,CAAE,CAAA,EAAE,IAAIA,CAAG,CAAC,CAC9D,CACF,ECtEA,MAAMulK,GAAoB,OAAO,mBAAmB,EAC9CC,GAAsB,OAAO,qBAAqB,EAClDC,GAA+B,OAAO,8BAA8B,EAC1E,IAAIC,GAAa,cAAc,YAAa,CAM3CC,GACA,CAACJ,EAAiB,EAClB,CAACC,EAAmB,EACpB,CAACC,EAA4B,EAC7B,eAAe9+J,EAAM,CACpB,MAAMA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EACtB,KAAK4+J,EAAiB,EAAI,EAC1B,CACD,IAAI,kBAAmB,CACtB,OAAO,KAAKA,EAAiB,CAC7B,CACD,gBAAiB,CAChB,MAAM,eAAc,EACpB,KAAKA,EAAiB,EAAI,EAC1B,CACD,0BAA2B,CAK1B,MAAM,yBAAwB,EAC9B,KAAKE,EAA4B,EAAI,EACrC,CACF,EACIG,GAAU,KAAM,CACnBC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACA,MACA,aAAc,CACb,KAAKN,GAAa,IAAIV,GACtB,KAAKW,GAAmC,IAAI,QAC5C,KAAKC,GAAyC,IAAI,QAClD,KAAKC,GAAqC,IAAI,QAC9C,KAAKC,GAAiB,IAAId,GAC1B,KAAKe,GAAuC,IAAI,QAChD,KAAKC,GAA6C,IAAI,QACtD,KAAK,MAAQ,CACZ,GAAI,CAACC,EAAM1hI,EAAUzpC,IAAY,CAKhC,GAAI,CAAAA,GAAS,QAAQ,QACrB,IAAIA,GAAS,KAAM,CAClB,MAAMmxF,EAAW1nD,EACX2hI,EAAW,IAAI1/J,KACpB,KAAK2/J,GAAoBF,EAAMC,CAAO,EAC/Bj6E,EAAS,GAAGzlF,CAAI,GAExB+9B,EAAW2hI,CACX,CAGD,GAFA,KAAKJ,GAAe,OAAOG,EAAM1hI,CAAQ,EACrCzpC,GAAS,KAAKirK,GAAqB,IAAIxhI,EAAUzpC,CAAO,EACxDA,GAAS,OAAQ,CACpB,KAAM,CAAE,OAAAivD,CAAQ,EAAGjvD,EACbsrK,EAAU,IAAM,CACrB,KAAKD,GAAoBF,EAAM1hI,CAAQ,CAC7C,EACKwlB,EAAO,iBAAiB,QAASq8G,EAAS,CAAE,KAAM,EAAI,CAAE,EACxD,KAAKJ,GAA2B,IAAIzhI,EAAU,IAAM,CACnDwlB,EAAO,oBAAoB,QAASq8G,CAAO,CACjD,CAAM,CACD,EACD,EACD,eAAgB,CAACH,EAAM1hI,IAAa,CACnC,KAAK4hI,GAAoBF,EAAM1hI,CAAQ,CACvC,CACJ,CACE,CACD4hI,GAAoBF,EAAM1hI,EAAU,CACnC,KAAKuhI,GAAe,OAAOG,EAAM1hI,CAAQ,EACzC,MAAMkrB,EAAU,KAAKu2G,GAA2B,IAAIzhI,CAAQ,EACxDkrB,IACHA,IACA,KAAKu2G,GAA2B,OAAOzhI,CAAQ,EAEhD,CACD8hI,GAAgBzrK,EAAM2sF,EAAU,CAC/B,MAAM++E,EAAU,KAAKZ,GAAW,OAAO9qK,EAAM2sF,CAAQ,EAC/C93B,EAAU,KAAKm2G,GAAuB,IAAIr+E,CAAQ,EACxD,OAAI93B,IACHA,IACA,KAAKm2G,GAAuB,OAAOr+E,CAAQ,GAErC++E,CACP,CAID,GAAG1rK,EAAM2sF,EAAUzsF,EAAS,CAC3B,YAAKyrK,GAAa3rK,EAAM2sF,EAAUzsF,CAAO,EAClC,IACP,CAID,KAAKF,EAAM2sF,EAAUzsF,EAAS,CAC7B,OAAO,KAAK,GAAGF,EAAM2sF,EAAU,CAC9B,GAAGzsF,GAAW,CAAE,EAChB,KAAM,EACT,CAAG,CACD,CAID,QAAQF,EAAM2sF,EAAUzsF,EAAS,CAChC,YAAKyrK,GAAa3rK,EAAM2sF,EAAUzsF,EAAS,SAAS,EAC7C,IACP,CAID,UAAUF,EAAM2sF,EAAUzsF,EAAS,CAClC,OAAO,KAAK,QAAQF,EAAM2sF,EAAU,CACnC,GAAGzsF,GAAW,CAAE,EAChB,KAAM,EACT,CAAG,CACD,CAMD,KAAK+e,EAAO,CACX,GAAI,KAAK6rJ,GAAW,OAAS,EAAG,MAAO,GAKvC,MAAMc,EAAe,KAAK,cAAc3sJ,EAAM,IAAI,EAAI,EAChD4sJ,EAAe,KAAKC,GAAY7sJ,CAAK,EAC3C,UAAW0tE,KAAY,KAAKo/E,GAAgB9sJ,EAAM,IAAI,EAAG,CACxD,GAAI4sJ,EAAa,MAAMpB,EAAmB,GAAK,MAAQoB,EAAa,MAAMpB,EAAmB,IAAM,KAClG,OAAAoB,EAAa,OAAM,EACZ,GAER,GAAIA,EAAa,MAAMnB,EAA4B,EAAG,MACtD,KAAKsB,GAAcH,EAAa,MAAOl/E,CAAQ,CAC/C,CACD,OAAAk/E,EAAa,OAAM,EACZD,CACP,CAQD,MAAM,cAAc3sJ,EAAO,CAC1B,GAAI,KAAK6rJ,GAAW,OAAS,EAAG,MAAO,CAAA,EACvC,MAAMmB,EAAmB,CAAA,EACnBJ,EAAe,KAAKC,GAAY7sJ,CAAK,EAC3C,UAAW0tE,KAAY,KAAKo/E,GAAgB9sJ,EAAM,IAAI,EAAG,CACxD,GAAI4sJ,EAAa,MAAMpB,EAAmB,GAAK,MAAQoB,EAAa,MAAMpB,EAAmB,IAAM,KAClG,OAAAoB,EAAa,OAAM,EACZ,GAER,GAAIA,EAAa,MAAMnB,EAA4B,EAAG,MACtD,MAAMnvG,EAAc,MAAM,QAAQ,QAAQ,KAAKywG,GAAcH,EAAa,MAAOl/E,CAAQ,CAAC,EACrF,KAAKu/E,GAAoBv/E,CAAQ,GAAGs/E,EAAiB,KAAK1wG,CAAW,CAC1E,CACD,OAAAswG,EAAa,OAAM,EACZ,QAAQ,WAAWI,CAAgB,EAAE,KAAMznI,GAC1CA,EAAQ,IAAKvlC,GAAWA,EAAO,SAAW,YAAcA,EAAO,MAAQA,EAAO,MAAM,CAC3F,CACD,CAMD,CAAC,gBAAgBggB,EAAO,CACvB,GAAI,KAAK6rJ,GAAW,OAAS,EAAG,OAChC,MAAMe,EAAe,KAAKC,GAAY7sJ,CAAK,EAC3C,UAAW0tE,KAAY,KAAKo/E,GAAgB9sJ,EAAM,IAAI,EAAG,CACxD,GAAI4sJ,EAAa,MAAMpB,EAAmB,GAAK,MAAQoB,EAAa,MAAMpB,EAAmB,IAAM,KAAM,CACxGoB,EAAa,OAAM,EACnB,MACA,CACD,GAAIA,EAAa,MAAMnB,EAA4B,EAAG,MACtD,MAAMnvG,EAAc,KAAKywG,GAAcH,EAAa,MAAOl/E,CAAQ,EAC9D,KAAKu/E,GAAoBv/E,CAAQ,IAAG,MAAMpxB,EAC/C,CACDswG,EAAa,OAAM,CACnB,CAID,eAAe7rK,EAAM2sF,EAAU,CAC9B,MAAMzsF,EAAU,KAAK6qK,GAAiB,IAAIp+E,CAAQ,EAClD,GAAK,KAAK8+E,GAAgBzrK,EAAM2sF,CAAQ,EAKxC,UAAW0+E,KAAQ,KAAKH,GAAe,IAAI,gBAAgB,EAAE,MAAK,EAAIG,EAAKrrK,EAAM2sF,EAAUzsF,CAAO,CAClG,CAKD,mBAAmBF,EAAM,CACxB,GAAIA,GAAQ,KAAM,CACjB,SAAW,CAACmsK,EAAcC,CAAW,IAAK,KAAKtB,GAAW,UAAW,KAAOsB,EAAY,OAAS,GAAG,KAAK,eAAeD,EAAcC,EAAY,CAAC,CAAC,EACpJ,SAAW,CAACC,EAAUC,CAAY,GAAK,CAAC,GAAG,KAAKpB,EAAc,EAAQ,KAAKC,GAAqB,IAAImB,CAAY,GAAG,SAAS,KAAKf,GAAoBc,EAAUC,CAAY,EAC3K,MACA,CACD,MAAMlL,EAAY,KAAK,UAAUphK,CAAI,EACrC,KAAOohK,EAAU,OAAS,GAAG,KAAK,eAAephK,EAAMohK,EAAU,CAAC,CAAC,CACnE,CAKD,UAAUphK,EAAM,CACf,OAAIA,GAAQ,KAAa,KAAK8qK,GAAW,OAAM,EACxC,KAAKA,GAAW,IAAI9qK,CAAI,CAC/B,CAKD,cAAcA,EAAM,CACnB,OAAIA,GAAQ,KAAa,KAAK8qK,GAAW,KAClC,KAAK,UAAU9qK,CAAI,EAAE,MAC5B,CACD2rK,GAAa3rK,EAAM2sF,EAAUzsF,EAASqsK,EAAa,SAAU,CAK5D,GAAI,CAAArsK,GAAS,QAAQ,QACrB,WAAWmrK,KAAQ,KAAKH,GAAe,IAAI,aAAa,EAAE,MAAK,EAAIG,EAAKrrK,EAAM2sF,EAAUzsF,CAAO,EAI/F,GAHIF,IAAS,KAAK,KAAKirK,GAAmB,IAAIt+E,CAAQ,EAClD4/E,IAAe,UAAW,KAAKzB,GAAW,QAAQ9qK,EAAM2sF,CAAQ,EAC/D,KAAKm+E,GAAW,OAAO9qK,EAAM2sF,CAAQ,EACtCzsF,IACH,KAAK6qK,GAAiB,IAAIp+E,EAAUzsF,CAAO,EACvCA,EAAQ,QAAQ,CACnB,KAAM,CAAE,OAAAivD,CAAQ,EAAGjvD,EACbsrK,EAAU,IAAM,CACrB,KAAK,eAAexrK,EAAM2sF,CAAQ,CACvC,EACIx9B,EAAO,iBAAiB,QAASq8G,EAAS,CAAE,KAAM,EAAI,CAAE,EACxD,KAAKR,GAAuB,IAAIr+E,EAAU,IAAM,CAC/Cx9B,EAAO,oBAAoB,QAASq8G,CAAO,CAChD,CAAK,CACD,EAEF,CACDM,GAAY7sJ,EAAO,CAClB,KAAM,CAAE,gBAAAT,CAAiB,EAAGS,EAC5B,OAAAA,EAAM,gBAAkB,IAAM,CAC7BA,EAAMwrJ,EAAmB,EAAI,KAC7BjsJ,EAAgB,KAAKS,CAAK,CAC7B,EACS,CACN,MAAAA,EACA,QAAS,CACRA,EAAM,gBAAkBT,CACxB,CACJ,CACE,CACDwtJ,GAAc/sJ,EAAO0tE,EAAU,CAC9B,UAAW0+E,KAAQ,KAAKH,GAAe,IAAI,YAAY,EAAE,MAAK,EAAI,GAAIG,EAAKpsJ,CAAK,IAAM,GAAO,OAC7F,MAAMs8C,EAAcoxB,EAAS,KAAK,KAAM1tE,CAAK,EACvC/e,EAAU,KAAK6qK,GAAiB,IAAIp+E,CAAQ,EAClD,GAAIzsF,GAAS,KAAM,CAClB,MAAMF,EAAO,KAAKksK,GAAoBv/E,CAAQ,EAAI,IAAM1tE,EAAM,KAC9D,GAAI,KAAKwsJ,GAAgBzrK,EAAM2sF,CAAQ,EAAG,UAAW0+E,KAAQ,KAAKH,GAAe,IAAI,gBAAgB,EAAE,MAAO,EAAEG,EAAKrrK,EAAM2sF,EAAUzsF,CAAO,CAC5I,CACD,OAAOq7D,CACP,CASD,CAACwwG,GAAgB/rK,EAAM,CACtB,MAAM+/F,EAAW,CAAA,EACjB,SAAW,CAAC96F,EAAK0nF,CAAQ,IAAK,KAAKm+E,IAAgB7lK,IAAQ,KAAOA,IAAQjF,IAAM+/F,EAAS,KAAKpT,CAAQ,EACtG,MAAOoT,CACP,CACDmsE,GAAoBv/E,EAAU,CAC7B,OAAO,KAAKs+E,GAAmB,IAAIt+E,CAAQ,CAC3C,CACF,ECnTI6/E,GAAsB,CACxB,aAAc,GACd,IAAK,GACL,OAAQ,GACR,MAAO,MACT,EAEA,SAASC,GAAexnK,EAAK,CAC3B,OAAO,OAAOA,GAAQ,UAAYA,IAAO,CAAA,CAC3C,CAEA,SAASynK,IAAgB,CACvB,OAAO,OAAO,OAAO,IAAI,CAC3B,CAEA,SAASC,GAAiBnuK,EAAK,CAC7B,OAAO,OAAOA,GAAQ,UAAY,CAAC,CAACA,EAAI,KAAI,CAC9C,CAEA,SAASouK,GAAYC,EAAgB3sK,EAAS,CAC5C,IAAI83H,EAAQ60C,EAAe,MAAM,GAAG,EAAE,OAAOF,EAAgB,EAEzDG,EAAmB90C,EAAM,QACzBxuD,EAASujG,IAAmBD,CAAgB,EAC5CvoK,EAAOilE,EAAO,KACdzkE,EAAQykE,EAAO,MAMnB,GAJAtpE,EAAUA,EACN,OAAO,OAAO,GAAIssK,GAAqBtsK,CAAO,EAC9CssK,GAEAC,GAAeloK,CAAI,EACrB,OAAO,KAGT,GAAI,CACFQ,EAAQ7E,EAAQ,aAAe,mBAAmB6E,CAAK,EAAIA,CAC5D,OAAQ5jC,EAAG,CACV,QAAQ,MACN,wGACAA,CACN,CACG,CAED,IAAIomM,EAASmF,KACb,OAAAnF,EAAO,KAAOhjK,EACdgjK,EAAO,MAAQxiK,EAEfizH,EAAM,QAAQ,SAAUg1C,EAAM,CAC5B,IAAIC,EAAQD,EAAK,MAAM,GAAG,EACtB/nK,EAAMgoK,EAAM,MAAO,EAAC,KAAI,EAAG,cAC/B,GAAI,CAAAR,GAAexnK,CAAG,EAGtB,KAAIF,EAAQkoK,EAAM,KAAK,GAAG,EAAE,KAAI,EAChC,GAAIhoK,IAAQ,UACVsiK,EAAO,QAAU,IAAI,KAAKxiK,CAAK,UACtBE,IAAQ,UAAW,CAC5B,IAAI90B,EAAI,SAAS40B,EAAO,EAAE,EACrB,OAAO,MAAM50B,CAAC,IAAGo3L,EAAO,OAASp3L,EAC5C,MAAe80B,IAAQ,SACjBsiK,EAAO,OAAS,GACPtiK,IAAQ,WACjBsiK,EAAO,SAAW,GACTtiK,IAAQ,WACjBsiK,EAAO,SAAWxiK,EACTE,IAAQ,cACjBsiK,EAAO,YAAc,GACZtiK,IACTsiK,EAAOtiK,CAAG,EAAIF,GAEpB,CAAG,EAEMwiK,CACT,CAEA,SAASwF,IAAmBD,EAAkB,CAG5C,IAAIvoK,EAAO,GACPQ,EAAQ,GACRmoK,EAAeJ,EAAiB,MAAM,GAAG,EAC7C,OAAII,EAAa,OAAS,GACxB3oK,EAAO2oK,EAAa,QACpBnoK,EAAQmoK,EAAa,KAAK,GAAG,GAE7BnoK,EAAQ+nK,EAGH,CAAE,KAAMvoK,EAAM,MAAOQ,CAAK,CACnC,CAEA,SAASooK,GAAezsK,EAAOR,EAAS,CAKtC,GAJAA,EAAUA,EACN,OAAO,OAAO,GAAIssK,GAAqBtsK,CAAO,EAC9CssK,GAEA,CAAC9rK,EACH,OAAKR,EAAQ,IAGJwsK,GAAa,EAFb,GAMX,GAAIhsK,EAAM,QACR,GAAI,OAAOA,EAAM,QAAQ,cAAiB,WAGxCA,EAAQA,EAAM,QAAQ,uBACbA,EAAM,QAAQ,YAAY,EAEnCA,EAAQA,EAAM,QAAQ,YAAY,MAC7B,CAEL,IAAI0sK,EACF1sK,EAAM,QACJ,OAAO,KAAKA,EAAM,OAAO,EAAE,KAAK,SAAUuE,EAAK,CAC7C,OAAOA,EAAI,YAAa,IAAK,YACzC,CAAW,CACX,EAEU,CAACmoK,GAAO1sK,EAAM,QAAQ,QAAU,CAACR,EAAQ,QAC3C,QAAQ,KACN,kOACV,EAEMQ,EAAQ0sK,CACT,CAGH,IAAIhjG,EAAQlqE,EAAQ,MAChBgV,EAAU,MAAM,QAAQxU,CAAK,EAgBjC,GAdI0pE,IAAU,SACZA,EAAQ,CAACl1D,GAGNA,IACHxU,EAAQ,CAACA,CAAK,GAGhBA,EAAQA,EAAM,OAAOisK,EAAgB,EAEjCviG,IACF1pE,EAAQA,EAAM,IAAI2sK,EAAkB,EAAE,KAAI,GAGvCntK,EAAQ,IAMN,CACL,IAAIwnK,EAAUgF,KACd,OAAOhsK,EAAM,OAAO,SAAUgnK,EAASlpK,EAAK,CAC1C,IAAI+oK,EAASqF,GAAYpuK,EAAK0B,CAAO,EACrC,OAAIqnK,GAAU,CAACkF,GAAelF,EAAO,IAAI,IACvCG,EAAQH,EAAO,IAAI,EAAIA,GAElBG,CACR,EAAEA,CAAO,CACX,KAdC,QAAOhnK,EACJ,IAAI,SAAUlC,EAAK,CAClB,OAAOouK,GAAYpuK,EAAK0B,CAAO,CACvC,CAAO,EACA,OAAO,OAAO,CAWrB,CAaA,SAASmtK,GAAmBC,EAAe,CACzC,GAAI,MAAM,QAAQA,CAAa,EAC7B,OAAOA,EAET,GAAI,OAAOA,GAAkB,SAC3B,MAAO,GAGT,IAAIC,EAAiB,CAAA,EACjBtgJ,EAAM,EACNzrB,EACAluB,EACAk6L,EACAC,EACAC,EAEJ,SAASC,GAAiB,CACxB,KAAO1gJ,EAAMqgJ,EAAc,QAAU,KAAK,KAAKA,EAAc,OAAOrgJ,CAAG,CAAC,GACtEA,GAAO,EAET,OAAOA,EAAMqgJ,EAAc,MAC5B,CAED,SAASM,GAAiB,CACxB,OAAAt6L,EAAKg6L,EAAc,OAAOrgJ,CAAG,EAEtB35C,IAAO,KAAOA,IAAO,KAAOA,IAAO,GAC3C,CAED,KAAO25C,EAAMqgJ,EAAc,QAAQ,CAIjC,IAHA9rK,EAAQyrB,EACRygJ,EAAwB,GAEjBC,EAAc,GAEnB,GADAr6L,EAAKg6L,EAAc,OAAOrgJ,CAAG,EACzB35C,IAAO,IAAK,CAQd,IANAk6L,EAAYvgJ,EACZA,GAAO,EAEP0gJ,IACAF,EAAYxgJ,EAELA,EAAMqgJ,EAAc,QAAUM,EAAc,GACjD3gJ,GAAO,EAILA,EAAMqgJ,EAAc,QAAUA,EAAc,OAAOrgJ,CAAG,IAAM,KAE9DygJ,EAAwB,GAExBzgJ,EAAMwgJ,EACNF,EAAe,KAAKD,EAAc,UAAU9rK,EAAOgsK,CAAS,CAAC,EAC7DhsK,EAAQyrB,GAIRA,EAAMugJ,EAAY,CAE5B,MACQvgJ,GAAO,GAIP,CAACygJ,GAAyBzgJ,GAAOqgJ,EAAc,SACjDC,EAAe,KAAKD,EAAc,UAAU9rK,EAAO8rK,EAAc,MAAM,CAAC,CAE3E,CAED,OAAOC,CACT,CAGAJ,GAAe,eAAiBA,GAEhCA,GAAe,MAAQA,GACvBA,GAAe,YAAcP,GAC7BO,GAAe,mBAAqBE,GC7PpC,MAAMQ,IAA6B,4BACnC,SAASC,GAAoBvpK,EAAM,CAClC,GAAIspK,IAA2B,KAAKtpK,CAAI,GAAKA,EAAK,KAAM,IAAK,GAAI,MAAM,IAAI,UAAU,wCAAwC,EAC7H,OAAOA,EAAK,OAAO,aACpB,CAGA,MAAMwpK,GAAoB,CACzB,OAAO,aAAa,EAAE,EACtB,OAAO,aAAa,EAAE,EACtB,OAAO,aAAa,CAAC,EACrB,OAAO,aAAa,EAAE,CACvB,EACMC,IAA6B,IAAI,OAAO,MAAMD,GAAkB,KAAK,EAAE,CAAC,OAAOA,GAAkB,KAAK,EAAE,CAAC,KAAM,GAAG,EAKxH,SAASE,GAAqBlpK,EAAO,CACpC,OAAOA,EAAM,QAAQipK,IAA4B,EAAE,CACpD,CAOA,SAASE,GAAkBnpK,EAAO,CAEjC,GADI,OAAOA,GAAU,UACjBA,EAAM,SAAW,EAAG,MAAO,GAC/B,QAASviC,EAAI,EAAGA,EAAIuiC,EAAM,OAAQviC,IAAK,CACtC,MAAM2rM,EAAYppK,EAAM,WAAWviC,CAAC,EACpC,GAAI2rM,EAAY,KAAO,CAACC,IAAQD,CAAS,EAAG,MAAO,EACnD,CACD,MAAO,EACR,CACA,SAASC,IAAQrpK,EAAO,CACvB,MAAO,CAAC,CACP,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACF,EAAG,SAASA,CAAK,CACjB,CAOA,SAASspK,GAAmBtpK,EAAO,CAElC,GADI,OAAOA,GAAU,UACjBA,EAAM,KAAI,IAAOA,EAAO,MAAO,GACnC,QAASviC,EAAI,EAAGA,EAAIuiC,EAAM,OAAQviC,IAAK,CACtC,MAAM2rM,EAAYppK,EAAM,WAAWviC,CAAC,EACpC,GAAI2rM,IAAc,GAAKA,IAAc,IAAMA,IAAc,GAAI,MAAO,EACpE,CACD,MAAO,EACR,CAGA,IAAIG,GACJ,MAAMC,GAAqB,OAAO,mBAAmB,EAC/CC,GAAmB,OAAO,gBAAgB,EAC1CC,GAAyB,KAC/B,IAAIC,IAAU,MAAMA,EAAQ,CAC3B,YAAYpgK,EAAM,CACjB,KAAKigK,EAAkB,EAAI,GAC3B,KAAKC,EAAgB,EAAoB,IAAI,IAC7C,KAAKF,EAAmB,EAAI,UAKxB,CAAC,UAAW,iBAAiB,EAAE,SAAShgK,GAAM,aAAa,IAAI,GAAKA,aAAgBogK,IAAW,OAAO,WAAW,QAAY,KAAepgK,aAAgB,WAAW,QAASA,EAAK,QAAQ,CAACvJ,EAAOR,IAAS,CACjN,KAAK,OAAOA,EAAMQ,CAAK,CACvB,EAAE,IAAI,EACE,MAAM,QAAQuJ,CAAI,EAAGA,EAAK,QAAQ,CAAC,CAAC/J,EAAMQ,CAAK,IAAM,CAC7D,KAAK,OAAOR,EAAM,MAAM,QAAQQ,CAAK,EAAIA,EAAM,KAAK0pK,EAAsB,EAAI1pK,CAAK,CACtF,CAAG,EACQuJ,GAAM,OAAO,oBAAoBA,CAAI,EAAE,QAAS/J,GAAS,CACjE,MAAMQ,EAAQuJ,EAAK/J,CAAI,EACvB,KAAK,OAAOA,EAAM,MAAM,QAAQQ,CAAK,EAAIA,EAAM,KAAK0pK,EAAsB,EAAI1pK,CAAK,CACtF,CAAG,CACD,CACD,EAAEupK,GAAsB,OAAO,YAAa,OAAO,SAAQ,GAAK,CAC/D,OAAO,KAAK,SACZ,CACD,CAAC,MAAO,CACP,SAAW,CAAC/pK,CAAI,IAAK,KAAK,QAAO,EAAI,MAAMA,CAC3C,CACD,CAAC,QAAS,CACT,SAAW,CAAG,CAAAQ,CAAK,IAAK,KAAK,QAAO,EAAI,MAAMA,CAC9C,CACD,CAAC,SAAU,CACV,IAAI4pK,EAAa,OAAO,KAAK,KAAKJ,EAAkB,CAAC,EAAE,KAAK,CAACzmM,EAAG8Z,IAAM9Z,EAAE,cAAc8Z,CAAC,CAAC,EACxF,UAAW2iB,KAAQoqK,EAAY,GAAIpqK,IAAS,aAAc,UAAWQ,KAAS,KAAK,aAAc,EAAE,KAAM,CAACR,EAAMQ,CAAK,OAChH,KAAM,CAACR,EAAM,KAAK,IAAIA,CAAI,CAAC,CAChC,CAID,IAAIA,EAAM,CACT,GAAI,CAAC2pK,GAAkB3pK,CAAI,EAAG,MAAM,IAAI,UAAU,wBAAwBA,CAAI,GAAG,EACjF,OAAO,KAAKgqK,EAAkB,EAAE,eAAeT,GAAoBvpK,CAAI,CAAC,CACxE,CAID,IAAIA,EAAM,CACT,GAAI,CAAC2pK,GAAkB3pK,CAAI,EAAG,MAAM,UAAU,wBAAwBA,CAAI,GAAG,EAC7E,OAAO,KAAKgqK,EAAkB,EAAET,GAAoBvpK,CAAI,CAAC,GAAK,IAC9D,CAID,IAAIA,EAAMQ,EAAO,CAChB,GAAI,CAACmpK,GAAkB3pK,CAAI,GAAK,CAAC8pK,GAAmBtpK,CAAK,EAAG,OAC5D,MAAM6pK,EAAiBd,GAAoBvpK,CAAI,EACzCsqK,EAAkBZ,GAAqBlpK,CAAK,EAClD,KAAKwpK,EAAkB,EAAEK,CAAc,EAAIX,GAAqBY,CAAe,EAC/E,KAAKL,EAAgB,EAAE,IAAII,EAAgBrqK,CAAI,CAC/C,CAID,OAAOA,EAAMQ,EAAO,CACnB,GAAI,CAACmpK,GAAkB3pK,CAAI,GAAK,CAAC8pK,GAAmBtpK,CAAK,EAAG,OAC5D,MAAM6pK,EAAiBd,GAAoBvpK,CAAI,EACzCsqK,EAAkBZ,GAAqBlpK,CAAK,EAClD,IAAIovD,EAAgB,KAAK,IAAIy6G,CAAc,EAAI,GAAG,KAAK,IAAIA,CAAc,CAAC,KAAKC,CAAe,GAAKA,EACnG,KAAK,IAAItqK,EAAM4vD,CAAa,CAC5B,CAID,OAAO5vD,EAAM,CAEZ,GADI,CAAC2pK,GAAkB3pK,CAAI,GACvB,CAAC,KAAK,IAAIA,CAAI,EAAG,OACrB,MAAMqqK,EAAiBd,GAAoBvpK,CAAI,EAC/C,OAAO,KAAKgqK,EAAkB,EAAEK,CAAc,EAC9C,KAAKJ,EAAgB,EAAE,OAAOI,CAAc,CAC5C,CAKD,QAAQjlI,EAAU3hC,EAAS,CAC1B,SAAW,CAACzD,EAAMQ,CAAK,IAAK,KAAK,QAAO,EAAI4kC,EAAS,KAAK3hC,EAASjD,EAAOR,EAAM,IAAI,CACpF,CAMD,cAAe,CACd,MAAMuqK,EAAkB,KAAK,IAAI,YAAY,EAC7C,OAAIA,IAAoB,KAAa,GACjCA,IAAoB,GAAW,CAAC,EAAE,EAC/BzB,GAAmByB,CAAe,CACzC,CACF,EClLA,MAAMC,IAAe,4BACfC,IAAc,6EACpB,SAASC,IAAarmK,EAAO,CAC3B,MAAM60F,EAAQ70F,EAAM,MACpB,GAAI,CAAC60F,EACH,OAGF,MAAMyxE,EADSzxE,EAAM,MAAM;AAAA,CAAI,EAAE,MAAM,CAAC,EACR,KAAMt9C,GAC7B,EAAE4uH,IAAa,KAAK5uH,CAAK,GAAK6uH,IAAY,KAAK7uH,CAAK,EAC5D,EACD,OAAK+uH,EAGmBA,EAAiB,QAAQ,0BAA2B,IAAI,EAAE,QAAQ,KAAM,EAAE,EAFhG,MAIJ,CChBA,SAAS38J,IAAW3F,EAAI,CACtB,OAAKA,EAGE,QAAQ,IAAIA,EAAI,OAAO,QAAQ,GAAK,QAAQ,IAAIA,EAAI,OAAO,aAAa,EAFtE,EAGX,CCJA,SAASuiK,IAAgB,CACvB,GAAI,OAAO,UAAc,KAAe,UAAU,UAAY,cAC5D,MAAO,GAET,GAAI,OAAO,QAAY,IAAa,CAClC,MAAMnvK,EAAO,QAAQ,KACrB,OAAIA,IAAS,YAAcA,IAAS,SAC3B,GAEF,CAAC,EAAE,QAAQ,UAAY,QAAQ,SAAS,KAChD,CACD,MAAO,EACT,CCbA,IAAIovK,IAAY,OAAO,eACnBC,IAAW,CAACjxK,EAAQ43C,IAAQ,CAC9B,QAASzxC,KAAQyxC,EACfo5H,IAAUhxK,EAAQmG,EAAM,CAAE,IAAKyxC,EAAIzxC,CAAI,EAAG,WAAY,EAAI,CAAE,CAChE,EAOI+qK,GAAiB,CAAA,EACbC,IAACD,GAAgB,CACvB,KAAM,IAAM5mG,IACZ,KAAM,IAAM8mG,GACZ,MAAO,IAAM/mG,IACb,IAAK,IAAMD,IACX,OAAQ,IAAMinG,GAChB,CAAC,EACD,SAASA,IAAOnhJ,EAAM,CACpB,MAAO,WAAWA,CAAI,SACxB,CACA,SAASo6C,IAAKp6C,EAAM,CAClB,MAAO,WAAWA,CAAI,SACxB,CACA,SAASkhJ,GAAKlhJ,EAAM,CAClB,MAAO,WAAWA,CAAI,SACxB,CACA,SAASk6C,IAAIl6C,EAAM,CACjB,MAAO,WAAWA,CAAI,SACxB,CACA,SAASm6C,IAAMn6C,EAAM,CACnB,MAAO,WAAWA,CAAI,SACxB,CAGA,IAAIohJ,GAAUP,GAAa,EACvBQ,GAAS,KAAM,CACjB,YAAYprK,EAAM,CAChB,KAAK,KAAOA,EACZ,KAAK,OAAS,IAAI,KAAK,IAAI,IAC3B,MAAMqrK,EAAcC,GAAY,OAAO,EACjCC,EAAeD,GAAY,WAAW,EACnBD,IAAgB,KAAOA,IAAgB,QAAU,OAAOA,EAAgB,KAAe,KAAK,KAAK,WAAWA,CAAW,GAE9I,KAAK,MAAQG,GAAsBD,EAAc,OAAO,EAAI9jK,GAAO,KAAK,MACxE,KAAK,KAAO+jK,GAAsBD,EAAc,MAAM,EAAI9jK,GAAO,KAAK,KACtE,KAAK,QAAU+jK,GAAsBD,EAAc,SAAS,EAAI9jK,GAAO,KAAK,QAC5E,KAAK,QAAU+jK,GAAsBD,EAAc,SAAS,EAAI9jK,GAAO,KAAK,QAC5E,KAAK,MAAQ+jK,GAAsBD,EAAc,OAAO,EAAI9jK,GAAO,KAAK,QAExE,KAAK,KAAOA,GACZ,KAAK,QAAUA,GACf,KAAK,QAAUA,GACf,KAAK,MAAQA,GACb,KAAK,KAAOA,GAEf,CACD,OACA,OAAOq7J,EAAQ,CACb,OAAO,IAAIsI,GAAO,GAAG,KAAK,IAAI,IAAItI,CAAM,EAAE,CAC3C,CAMD,MAAMrqH,KAAYqsH,EAAa,CAC7B,KAAK,SAAS,CACZ,MAAO,QACP,QAASmG,GAAKxyH,CAAO,EACrB,YAAAqsH,EACA,OAAQ,KAAK,OACb,OAAQ,CACN,OAAQ,MACT,CACP,CAAK,CACF,CAMD,KAAKrsH,KAAYqsH,EAAa,CAC5B,KAAK,SAAS,CACZ,MAAO,OACP,QAAArsH,EACA,YAAAqsH,EACA,OAAQ,KAAK,OACb,OAAQ,CACN,OAAQ,MACT,CACP,CAAK,EACD,MAAM2G,EAAe,IAAIC,IACzB,MAAO,CAACC,KAAaC,IAAiB,CACpCH,EAAa,QAAO,EACpB,KAAK,SAAS,CACZ,MAAO,OACP,QAAS,GAAGE,CAAQ,IAAIV,GAAK,GAAGQ,EAAa,SAAS,IAAI,CAAC,GAC3D,YAAaG,EACb,OAAQ,KAAK,OACb,OAAQ,CACN,OAAQ,MACT,CACT,CAAO,CACP,CACG,CAMD,QAAQnzH,KAAYqsH,EAAa,CAC/B,KAAK,SAAS,CACZ,MAAO,OACP,QAAArsH,EACA,YAAAqsH,EACA,OAAQ,KAAU,KAAK,MAAM,GAC7B,OAAQ,CACN,UAAW,QACX,OAAQ,OACT,CACP,CAAK,CACF,CAMD,QAAQrsH,KAAYqsH,EAAa,CAC/B,KAAK,SAAS,CACZ,MAAO,UACP,QAAArsH,EACA,YAAAqsH,EACA,OAAQ,KAAU,KAAK,MAAM,GAC7B,OAAQ,CACN,UAAW,SACX,OAAQ,QACT,CACP,CAAK,CACF,CAMD,MAAMrsH,KAAYqsH,EAAa,CAC7B,KAAK,SAAS,CACZ,MAAO,QACP,QAAArsH,EACA,YAAAqsH,EACA,OAAQ,KAAU,KAAK,MAAM,GAC7B,OAAQ,CACN,UAAW,MACX,OAAQ,KACT,CACP,CAAK,CACF,CAUD,KAAK1/H,EAAU,CACbA,GACD,CACD,YAAYymI,EAAOpzH,EAAS,CAC1B,MAAO,CACL,UAA2B,IAAI,KAC/B,MAAAozH,EACA,QAAApzH,CACN,CACG,CACD,SAASpxC,EAAM,CACb,KAAM,CACJ,MAAAwkK,EACA,QAAApzH,EACA,OAAAqzH,EACA,OAAQC,EACR,YAAAjH,EAAc,CAAE,CACjB,EAAGz9J,EACE4iD,EAAQ,KAAK,YAAY4hH,EAAOpzH,CAAO,EACvCuzH,EAAiBD,GAAc,WAAa,OAC5CE,EAAcF,GAAc,QAAU,OACtCG,EAAW,CACf,UAAWnB,GAAeiB,CAAc,EACxC,OAAQjB,GAAekB,CAAW,CACxC,EACkB,KAAK,UAAUJ,CAAK,EAEhC,CAACK,EAAS,UAAU,KAAK,gBAAgBjiH,EAAM,SAAS,CAAC,CAAC,EAAE,OAAO6hH,GAAU,KAAOI,EAAS,OAAOJ,CAAM,EAAI,CAAA,CAAE,EAAE,OAAOK,GAAe1zH,CAAO,CAAC,EAAE,KAAK,GAAG,EAC1J,GAAGqsH,EAAY,IAAIqH,EAAc,CACvC,CACG,CACD,gBAAgB5pG,EAAW,CACzB,MAAO,GAAGA,EAAU,mBAClB,OACD,CAAA,IAAIA,EAAU,gBAAe,CAAE,EACjC,CACD,UAAUspG,EAAO,CACf,OAAQA,EAAK,CACX,IAAK,QACL,IAAK,UACL,IAAK,OACH,OAAO1J,IAET,IAAK,UACH,OAAOjyD,IAET,IAAK,QACH,OAAO7rG,GAEV,CACF,CACH,EACIqnK,IAAmB,KAAM,CAC3B,UACA,QACA,UACA,aAAc,CACZ,KAAK,UAAY,YAAY,KAC9B,CACD,SAAU,CACR,KAAK,QAAU,YAAY,MAC3B,MAAMU,EAAY,KAAK,QAAU,KAAK,UACtC,KAAK,UAAYA,EAAU,QAAQ,CAAC,CACrC,CACH,EACI3kK,GAAO,IAAM,GACjB,SAAS06J,IAAI1pH,KAAYqsH,EAAa,CACpC,GAAIqG,GAAS,CACX,QAAQ,OAAO,MAAM19I,GAAOgrB,EAAS,GAAGqsH,CAAW,EAAI;AAAA,CAAI,EAC3D,MACD,CACD,QAAQ,IAAIrsH,EAAS,GAAGqsH,CAAW,CACrC,CACA,SAAS50D,IAAKz3D,KAAYqsH,EAAa,CACrC,GAAIqG,GAAS,CACX,QAAQ,OAAO,MAAM19I,GAAOgrB,EAAS,GAAGqsH,CAAW,EAAI;AAAA,CAAI,EAC3D,MACD,CACD,QAAQ,KAAKrsH,EAAS,GAAGqsH,CAAW,CACtC,CACA,SAASzgK,IAAMo0C,KAAYqsH,EAAa,CACtC,GAAIqG,GAAS,CACX,QAAQ,OAAO,MAAM19I,GAAOgrB,EAAS,GAAGqsH,CAAW,EAAI;AAAA,CAAI,EAC3D,MACD,CACD,QAAQ,MAAMrsH,EAAS,GAAGqsH,CAAW,CACvC,CACA,SAASwG,GAAYe,EAAc,CACjC,OAAIlB,GACK,CAAA,EAAYkB,CAAY,EAE1B,WAAWA,CAAY,GAAG,UACnC,CACA,SAASb,GAAsBhrK,EAAO8rK,EAAU,CAC9C,OAAO9rK,IAAU,QAAUA,IAAU8rK,CACvC,CACA,SAASH,GAAe1zH,EAAS,CAC/B,OAAI,OAAOA,EAAY,IACd,YAELA,IAAY,KACP,OAEL,OAAOA,GAAY,SACdA,EAEL,OAAOA,GAAY,SACd,KAAK,UAAUA,CAAO,EAExBA,EAAQ,UACjB,CCpRA,IAAI8zH,IAAkB,cAAc,KAAM,CACxC,YAAYC,EAAS/wK,EAAMurB,EAAO,CAChC,MACE,+CAA+CA,CAAK,IAAIvrB,EAAK,SAAU,CAAA,mEAC7E,EACI,KAAK,QAAU+wK,EACf,KAAK,KAAO/wK,EACZ,KAAK,MAAQurB,EACb,KAAK,KAAO,6BACb,CACH,EAGIylJ,GAAW,KAAM,CACnB,OAAO,cAAcD,EAASh5J,EAAW,CACvC,OAAOg5J,EAAQ,cAAch5J,CAAS,CACvC,CACD,aAAc,CACZ,KAAK,OAAyB,IAAI,IAClC,KAAK,aAAei5J,GAAS,oBAC7B,KAAK,kCAAoC,EAC1C,CACD,mBAAmBC,EAAmBl5J,EAAW40E,EAAU,CACzD,KAAK,KACHskF,EACIl5J,EAAW40E,CACrB,CACG,CACD,cAAc50E,EAAW,CACvB,OAAO,MAAM,UAAU,OAAO,MAAM,CAAE,EAAE,KAAK,OAAO,IAAIA,CAAS,CAAC,GAAK,CAAA,CACxE,CACD,gBAAgBqpJ,EAAWz0E,EAAU,CACnC,MAAM1iF,EAAQm3J,EAAU,QAAQz0E,CAAQ,EACxC,OAAI1iF,EAAQ,IACVm3J,EAAU,OAAOn3J,EAAO,CAAC,EAEpB,EACR,CACD,kBAAkB8N,EAAW40E,EAAU,CACrC,MAAMukF,EAAe,IAAI1uK,KACvB,KAAK,eAAeuV,EAAWm5J,CAAY,EACpCvkF,EAAS,MAAM,KAAMnqF,CAAI,GAElC,cAAO,eAAe0uK,EAAc,OAAQ,CAAE,MAAOvkF,EAAS,IAAI,CAAE,EAC7DukF,CACR,CACD,gBAAgBC,EAAc,CAC5B,YAAK,aAAeA,EACb,IACR,CAMD,iBAAkB,CAChB,OAAO,KAAK,YACb,CAKD,YAAa,CACX,OAAO,MAAM,KAAK,KAAK,OAAO,KAAM,CAAA,CACrC,CAUD,KAAKp5J,KAAcvV,EAAM,CACvB,MAAM4+J,EAAY,KAAK,cAAcrpJ,CAAS,EAC9C,OAAAqpJ,EAAU,QAASz0E,GAAa,CAC9BA,EAAS,MAAM,KAAMnqF,CAAI,CAC/B,CAAK,EACM4+J,EAAU,OAAS,CAC3B,CACD,YAAYrpJ,EAAW40E,EAAU,CAC/B,KAAK,mBAAmB,cAAe50E,EAAW40E,CAAQ,EAC1D,MAAMykF,EAAgB,KAAK,cAAcr5J,CAAS,EAAE,OAAO40E,CAAQ,EAEnE,GADA,KAAK,OAAO,IAAI50E,EAAWq5J,CAAa,EACpC,KAAK,aAAe,GAAK,KAAK,cAAcr5J,CAAS,EAAI,KAAK,cAAgB,CAAC,KAAK,kCAAmC,CACzH,KAAK,kCAAoC,GACzC,MAAMs5J,EAAoB,IAAIP,IAC5B,KACA/4J,EACA,KAAK,cAAcA,CAAS,CACpC,EACM,QAAQ,KAAKs5J,CAAiB,CAC/B,CACD,OAAO,IACR,CACD,GAAGt5J,EAAW40E,EAAU,CACtB,OAAO,KAAK,YAAY50E,EAAW40E,CAAQ,CAC5C,CACD,KAAK50E,EAAW40E,EAAU,CACxB,OAAO,KAAK,YACV50E,EACA,KAAK,kBAAkBA,EAAW40E,CAAQ,CAChD,CACG,CACD,gBAAgB50E,EAAW40E,EAAU,CACnC,MAAMy0E,EAAY,KAAK,cAAcrpJ,CAAS,EAC9C,GAAIqpJ,EAAU,OAAS,EAAG,CACxB,MAAMgQ,EAAgB,CAACzkF,CAAQ,EAAE,OAAOy0E,CAAS,EACjD,KAAK,OAAO,IAAIrpJ,EAAWq5J,CAAa,CAC9C,MACM,KAAK,OAAO,IAAIr5J,EAAWqpJ,EAAU,OAAOz0E,CAAQ,CAAC,EAEvD,OAAO,IACR,CACD,oBAAoB50E,EAAW40E,EAAU,CACvC,OAAO,KAAK,gBACV50E,EACA,KAAK,kBAAkBA,EAAW40E,CAAQ,CAChD,CACG,CACD,eAAe50E,EAAW40E,EAAU,CAClC,MAAMy0E,EAAY,KAAK,cAAcrpJ,CAAS,EAC9C,OAAIqpJ,EAAU,OAAS,IACrB,KAAK,gBAAgBA,EAAWz0E,CAAQ,EACxC,KAAK,OAAO,IAAI50E,EAAWqpJ,CAAS,EACpC,KAAK,mBAAmB,iBAAkBrpJ,EAAW40E,CAAQ,GAExD,IACR,CAOD,IAAI50E,EAAW40E,EAAU,CACvB,OAAO,KAAK,eAAe50E,EAAW40E,CAAQ,CAC/C,CACD,mBAAmB50E,EAAW,CAC5B,OAAIA,EACF,KAAK,OAAO,OAAOA,CAAS,EAE5B,KAAK,OAAO,QAEP,IACR,CAID,UAAUA,EAAW,CACnB,OAAO,MAAM,KAAK,KAAK,cAAcA,CAAS,CAAC,CAChD,CAID,cAAcA,EAAW,CACvB,OAAO,KAAK,cAAcA,CAAS,EAAE,MACtC,CACD,aAAaA,EAAW,CACtB,OAAO,KAAK,UAAUA,CAAS,CAChC,CACH,EACI8yJ,GAAUmG,GACPM,GAAC,oBAAsB,GCzJ9B,SAASC,GAAgBC,EAAQ,CAChC,OAAO,WAAWA,CAAM,GAAK,MAC9B,CACA,SAASC,IAAgBD,EAAQzsK,EAAO,CACvC,WAAWysK,CAAM,EAAIzsK,CACtB,CACA,SAAS2sK,IAAmBF,EAAQ,CACnC,OAAO,WAAWA,CAAM,CACzB,CACA,IAAIG,GAAwC,SAASC,EAAyB,CAC7E,OAAAA,EAAwB,SAAc,WACtCA,EAAwB,SAAc,WACtCA,EAAwB,QAAa,UACrCA,EAAwB,UAAe,YACvCA,EAAwB,SAAc,WAC/BA,CACR,EAAE,CAAE,CAAA,EACJ,IAAIC,GAAc,KAAM,CACvB,YAAYL,EAAQ,CACnB,KAAK,OAASA,EACd,KAAK,WAAaG,GAAsB,SACxC,KAAK,QAAU,IAAI9G,GACnB,KAAK,cAAgB,GACrB,KAAK,OAAS,IAAI8E,GAAO6B,EAAO,WAAW,EAC3C,KAAK,QAAQ,gBAAgB,CAAC,EAC9B,KAAK,OAAO,KAAK,iCAAiC,CAClD,CAKD,kBAAmB,CAClB,MAAO,EACP,CAKD,OAAQ,CACP,MAAMM,EAAS,KAAK,OAAO,OAAO,OAAO,EAEzC,GADAA,EAAO,KAAK,6BAA6B,EACrC,KAAK,aAAeH,GAAsB,QAAS,CACtDG,EAAO,KAAK,8BAA8B,EAC1C,MACA,CACD,GAAI,CAAC,KAAK,mBAAoB,CAC7BA,EAAO,KAAK,wDAAwD,EACpE,MACA,CACD,KAAK,WAAaH,GAAsB,SACxC,MAAMI,EAAkB,KAAK,cAC7B,GAAIA,EAAiB,CACpBD,EAAO,KAAK,sCAAsC,EAClD,KAAK,GAAK,CAAC7yJ,EAAO0tE,KACjBmlF,EAAO,KAAK,6BAAgC7yJ,CAAK,EACjD8yJ,EAAgB,QAAQ,YAAY9yJ,EAAO0tE,CAAQ,EACnD,KAAK,cAAc,KAAK,IAAM,CAC7BolF,EAAgB,QAAQ,eAAe9yJ,EAAO0tE,CAAQ,EACtDmlF,EAAO,KAAK,iCAAoC7yJ,CAAK,CAC1D,CAAK,EACM,MAER,KAAK,WAAa0yJ,GAAsB,QACxC,MACA,CACDG,EAAO,KAAK,yDAAyD,EACrE,KAAK,MAAK,EACV,KAAK,YAAW,EAChB,KAAK,WAAaH,GAAsB,OACxC,CAMD,OAAQ,CAAE,CAIV,GAAG1yJ,EAAO0tE,EAAU,CACnB,MAAMmlF,EAAS,KAAK,OAAO,OAAO,IAAI,EACtC,OAAI,KAAK,aAAeH,GAAsB,WAAa,KAAK,aAAeA,GAAsB,UACpGG,EAAO,KAAK,4CAA4C,EACjD,OAERA,EAAO,KAAK,8BAAiC7yJ,EAAO0tE,CAAQ,EAC5D,KAAK,QAAQ,GAAG1tE,EAAO0tE,CAAQ,EACxB,KACP,CACD,KAAK1tE,EAAO0tE,EAAU,CACrB,YAAK,QAAQ,KAAK1tE,EAAO0tE,CAAQ,EAC1B,IACP,CACD,IAAI1tE,EAAO0tE,EAAU,CACpB,YAAK,QAAQ,IAAI1tE,EAAO0tE,CAAQ,EACzB,IACP,CACD,mBAAmB1tE,EAAO,CACzB,YAAK,QAAQ,mBAAmBA,CAAK,EAC9B,IACP,CAID,SAAU,CACT,MAAM6yJ,EAAS,KAAK,OAAO,OAAO,SAAS,EAC3C,GAAI,KAAK,aAAeH,GAAsB,SAAU,CACvDG,EAAO,KAAK,mCAAmC,EAC/C,MACA,CAGD,GAFAA,EAAO,KAAK,8BAA8B,EAC1C,KAAK,WAAaH,GAAsB,UACpC,CAAC,KAAK,cAAe,CACxBG,EAAO,KAAK,8CAA8C,EAC1D,MACA,CAGD,GAFA,KAAK,cAAa,EAClBA,EAAO,KAAK,yBAA0BP,GAAgB,KAAK,MAAM,CAAC,EAC9D,KAAK,cAAc,OAAS,EAAG,CAClCO,EAAO,KAAK,mCAAoC,KAAK,cAAc,MAAM,EACzE,UAAW3yB,KAAW,KAAK,cAAeA,EAAO,EACjD,KAAK,cAAgB,GACrB2yB,EAAO,KAAK,iCAAkC,KAAK,cAAc,MAAM,CACvE,CACD,KAAK,QAAQ,qBACbA,EAAO,KAAK,yBAAyB,EACrC,KAAK,WAAaH,GAAsB,QACxC,CACD,aAAc,CACb,MAAMjoK,EAAW6nK,GAAgB,KAAK,MAAM,EAC5C,YAAK,OAAO,KAAK,6BAA8B7nK,GAAU,aAAa,IAAI,EACnEA,CACP,CACD,aAAc,CACb+nK,IAAgB,KAAK,OAAQ,IAAI,EACjC,KAAK,OAAO,KAAK,uBAAwB,KAAK,OAAO,WAAW,CAChE,CACD,eAAgB,CACfC,IAAmB,KAAK,MAAM,EAC9B,KAAK,OAAO,KAAK,2BAA4B,KAAK,OAAO,WAAW,CACpE,CACF,EAUA,SAASM,IAAkB,CAC1B,OAAO,KAAK,SAAS,SAAS,EAAE,EAAE,MAAM,CAAC,CAC1C,CCpKA,SAASC,KAAyB,CAChC,MAAMC,EAAW,CAACvxK,EAASC,IAAW,CACpCsxK,EAAS,MAAQ,UACjBA,EAAS,QAAW1vK,GAAS,CAC3B,GAAI0vK,EAAS,QAAU,UACrB,OAEFA,EAAS,OAAS1vK,EAClB,MAAM2vK,EAAeptK,IACnBmtK,EAAS,MAAQ,YACVntK,GAET,OAAOpE,EACL6B,aAAgB,QAAUA,EAAO,QAAQ,QAAQA,CAAI,EAAE,KAAK2vK,CAAW,CAC/E,CACA,EACID,EAAS,OAAU3gC,GAAW,CAC5B,GAAI2gC,EAAS,QAAU,UAGvB,sBAAe,IAAM,CACnBA,EAAS,MAAQ,UACzB,CAAO,EACMtxK,EAAOsxK,EAAS,gBAAkB3gC,CAAM,CACrD,CACA,EACE,OAAO2gC,CACT,CAGA,IAAIE,GAAkB,cAAc,OAAQ,CAC1CC,GACA,QACA,OACA,YAAYH,EAAW,KAAM,CAC3B,MAAMI,EAAmBL,MACzB,MAAM,CAACM,EAAiBC,IAAmB,CACzCF,EAAiBC,EAAiBC,CAAc,EAChDN,IAAWI,EAAiB,QAASA,EAAiB,MAAM,CAClE,CAAK,EACD,KAAKD,GAAYC,EACjB,KAAK,QAAU,KAAKD,GAAU,QAC9B,KAAK,OAAS,KAAKA,GAAU,MAC9B,CACD,IAAI,OAAQ,CACV,OAAO,KAAKA,GAAU,KACvB,CACD,IAAI,iBAAkB,CACpB,OAAO,KAAKA,GAAU,eACvB,CACD,KAAKF,EAAaM,EAAY,CAC5B,OAAO,KAAKC,GAAU,MAAM,KAAKP,EAAaM,CAAU,CAAC,CAC1D,CACD,MAAMA,EAAY,CAChB,OAAO,KAAKC,GAAU,MAAM,MAAMD,CAAU,CAAC,CAC9C,CACD,QAAQE,EAAW,CACjB,OAAO,KAAKD,GAAU,MAAM,QAAQC,CAAS,CAAC,CAC/C,CACDD,GAAUp/J,EAAS,CACjB,OAAO,OAAO,iBAAiBA,EAAS,CACtC,QAAS,CAAE,aAAc,GAAM,MAAO,KAAK,OAAS,EACpD,OAAQ,CAAE,aAAc,GAAM,MAAO,KAAK,MAAQ,CACxD,CAAK,CACF,CACH,EC9DIs/J,GAAmB,MAAMA,WAAyB,KAAM,CAC3D,YAAY51H,EAAS,CACpB,MAAMA,CAAO,EACb,KAAK,KAAO,mBACZ,OAAO,eAAe,KAAM41H,GAAiB,SAAS,CACtD,CACF,EAIwBvoK,GAAA,KAAwB,CAa/C,YAAY82J,EAAStzJ,EAAQ,CAM7BglK,GAAA,KAAIC,IALH,KAAK,QAAU3R,EACf,KAAK,OAAStzJ,EACd,KAAK,WAAaxD,GAAkB,QACpC,KAAK,QAAU,IAAI+nK,EACnB,CAOD,MAAM,aAAc,CACnBvwG,GAAU,GAAG+wG,GAAkB,KAAK,aAAevoK,GAAkB,QAAS,kFAAqF,KAAK,QAAQ,OAAQ,KAAK,QAAQ,GAAG,EACxM,KAAK,WAAaA,GAAkB,YACpC,MAAM,KAAK,OAAO,cAClB0oK,GAAA,KAAKD,GAAAE,IAAS,SACd,CASD,YAAYnxK,EAAU,CACrBggE,GAAU,GAAG+wG,GAAkB,KAAK,aAAevoK,GAAkB,QAAS,mGAAwG,KAAK,QAAQ,OAAQ,KAAK,QAAQ,IAAKxI,EAAS,OAAQA,EAAS,YAAc,KAAM,KAAK,UAAU,EAC1R,KAAK,WAAawI,GAAkB,SACpC0oK,GAAA,KAAKD,GAAAE,IAAS,UAOd,KAAK,OAAO,YAAYnxK,CAAQ,CAChC,CASD,UAAU0vI,EAAQ,CACjB1vE,GAAU,GAAG+wG,GAAkB,KAAK,aAAevoK,GAAkB,QAAS,2FAAgG,KAAK,QAAQ,OAAQ,KAAK,QAAQ,IAAKknI,GAAQ,SAAU,EAAE,KAAK,UAAU,EACxP,KAAK,WAAalnI,GAAkB,MACpC,KAAK,OAAO,UAAUknI,CAAM,EAC5BwhC,GAAA,KAAKD,GAAAE,IAAS,SACd,CACF,EA9CKF,GAAA,YAAAE,GAAQ,UAAG,CACd,OAAO,KAAK,OACZ,EAnBA3oK,GAAK,QAAU,EAGfA,GAAK,YAAc,EAGnBA,GAAK,SAAW,EAGhBA,GAAK,MAAQ,EA+Df,SAAS4oK,IAAY3wK,EAAK,CACzB,GAAI,CACH,WAAI,IAAIA,CAAG,EACJ,EACP,MAAgB,CAChB,MAAO,EACP,CACF,CAOA,SAAS4wK,GAAiBC,EAAYtlK,EAAQ,CAC7C,MAAM2jK,EAAS,OAAO,sBAAsB3jK,CAAM,EAAE,KAAMulK,GAClDA,EAAS,cAAgBD,CAChC,EACD,GAAI3B,EAAQ,OAAO,QAAQ,IAAI3jK,EAAQ2jK,CAAM,CAC9C,CAgFA,MAAM6B,GAAU,OAAO,SAAS,EAC1BC,GAAO,OAAO,MAAM,EAC1B,IAAIC,IAAgBhpK,GAAA,cAA4B,QAAS,CAmBxD,OAAO,yBAAyBkrI,EAAQ,CACvC,OAAOA,GAAU,KAAOA,GAAU,GAClC,CACD,OAAO,mBAAmBA,EAAQ,CACjC,OAAOlrI,GAAc,2BAA2B,SAASkrI,CAAM,CAC/D,CAKD,OAAO,mBAAmBA,EAAQ,CACjC,MAAO,CAAClrI,GAAc,0BAA0B,SAASkrI,CAAM,CAC/D,CACD,OAAO,UAAUA,EAAQ5zI,EAAU,CAKlC,MAAM2xK,EAAgBN,GAAiB,QAASrxK,CAAQ,EACpD2xK,EAAeA,EAAc,OAAS/9B,EACrC,OAAO,eAAe5zI,EAAU,SAAU,CAC9C,MAAO4zI,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACb,CAAG,EACD,OAAO,eAAe5zI,EAAUwxK,GAAS,CACxC,MAAO59B,EACP,WAAY,EACf,CAAG,CACD,CACD,OAAO,OAAOnzI,EAAKT,EAAU,CAC5B,GAAI,CAACS,GAAOA,IAAQ,UAAY,CAAC2wK,IAAY3wK,CAAG,EAAG,OACnD,MAAM/E,EAAQ21K,GAAiB,QAASrxK,CAAQ,EAC5CtE,EAAOA,EAAM,QAAQ,KAAK,IAAI,IAAI+E,CAAG,CAAC,EACrC,OAAO,eAAeT,EAAU,MAAO,CAC3C,MAAOS,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACb,CAAG,EACD,OAAO,eAAeT,EAAUyxK,GAAM,CACrC,MAAOhxK,EACP,WAAY,EACf,CAAG,CACD,CAID,OAAO,gBAAgBmxK,EAAY,CAClC,MAAM9wK,EAAU,IAAI,QACpB,QAASu2B,EAAO,EAAGA,EAAOu6I,EAAW,OAAQv6I,GAAQ,EAAGv2B,EAAQ,OAAO8wK,EAAWv6I,CAAI,EAAGu6I,EAAWv6I,EAAO,CAAC,CAAC,EAC7G,OAAOv2B,CACP,CAQD,OAAO,MAAMd,EAAU,CACtB,GAAI,CACH,OAAOA,EAAS,OAChB,OAAQ+G,EAAO,CACf,OAAO,SAAS,KAAKA,aAAiB,MAAQ,CAC7C,KAAMA,EAAM,KACZ,QAASA,EAAM,QACf,MAAOA,EAAM,KACb,EAAG,GAAI,CACP,OAAQ,IACR,WAAY,qBAChB,CAAI,CACD,CACD,CACD,YAAYJ,EAAM8F,EAAO,GAAI,CAC5B,MAAMmnI,EAASnnI,EAAK,QAAU,IACxBolK,EAAanpK,GAAc,yBAAyBkrI,CAAM,EAAIA,EAAS,IACvEk+B,EAAYppK,GAAc,mBAAmBkrI,CAAM,EAAIjtI,EAAO,KACpE,MAAMmrK,EAAW,CAChB,OAAQD,EACR,WAAYplK,EAAK,WACjB,QAASA,EAAK,OACjB,CAAG,EAMGmnI,IAAWi+B,GAAYnpK,GAAc,UAAUkrI,EAAQ,IAAI,EAC/DlrI,GAAc,OAAO+D,EAAK,IAAK,IAAI,CACnC,CACD,OAAQ,CACP,MAAMslK,EAAiB,MAAM,QACvBC,EAAe,QAAQ,IAAI,KAAMR,EAAO,EAC1CQ,GAActpK,GAAc,UAAUspK,EAAcD,CAAc,EACtE,MAAME,EAAY,QAAQ,IAAI,KAAMR,EAAI,EACxC,OAAIQ,GAAWvpK,GAAc,OAAOupK,EAAWF,CAAc,EACtDA,CACP,CACF,EArHErpK,GAAK,0BAA4B,CAChC,IACA,IACA,IACA,IACA,GACH,EAGEA,GAAK,2BAA6B,CACjC,IACA,IACA,IACA,IACA,GACH,EAjBoBA,IC5LJ,IAAI,YCMpB,SAASwpK,GAAoBzxK,EAAK,CACjC,GAAI,OAAOA,GAAQ,SAAU,OAAOyxK,GAAoB,IAAI,IAAIzxK,EAAK,OAAO,SAAa,IAAc,SAAS,KAAO,MAAM,CAAC,EAG9H,GAFIA,EAAI,WAAa,QAASA,EAAI,SAAW,MACpCA,EAAI,WAAa,WAAUA,EAAI,SAAW,QAC/CA,EAAI,WAAa,OAASA,EAAI,WAAa,OAM/C,MAAM,IAAI,YAAY,sGAAsGA,EAAI,QAAQ,mBAAmB,EAC3J,GAAIA,EAAI,OAAS,GAAI,MAAM,IAAI,YAAY,6EAA6EA,EAAI,IAAI,6DAA6D,EAC7L,OAAOA,EAAI,IACZ,CCVA,IAAI0xK,IAAmB,MAAMA,WAAyBnC,EAAY,CACjE,YAAY3xK,EAAS,CACpB8zK,GAAiB,OAAS,OAAO,IAAI9zK,EAAQ,IAAI,EACjD,MAAM8zK,GAAiB,MAAM,EAC7B,KAAK,aAAe9zK,EAAQ,YAC5B,CACD,OAAQ,CACP,MAAM4xK,EAAS,KAAK,OAAO,OAAO,OAAO,EACzCA,EAAO,KAAK,kCAAmC,KAAK,aAAa,MAAM,EACvE,UAAWmC,KAAe,KAAK,aAC9BnC,EAAO,KAAK,+BAAkCmC,EAAY,YAAY,IAAI,EAC1EA,EAAY,MAAK,EACjBnC,EAAO,KAAK,yCAAyC,EACrD,KAAK,cAAc,KAAK,IAAMmC,EAAY,QAAS,CAAA,CAEpD,CACD,GAAGh1J,EAAO0tE,EAAU,CACnB,UAAWsnF,KAAe,KAAK,aAAcA,EAAY,GAAGh1J,EAAO0tE,CAAQ,EAC3E,OAAO,IACP,CACD,KAAK1tE,EAAO0tE,EAAU,CACrB,UAAWsnF,KAAe,KAAK,aAAcA,EAAY,KAAKh1J,EAAO0tE,CAAQ,EAC7E,OAAO,IACP,CACD,IAAI1tE,EAAO0tE,EAAU,CACpB,UAAWsnF,KAAe,KAAK,aAAcA,EAAY,IAAIh1J,EAAO0tE,CAAQ,EAC5E,OAAO,IACP,CACD,mBAAmB1tE,EAAO,CACzB,UAAWi1J,KAAgB,KAAK,aAAcA,EAAa,mBAAmBj1J,CAAK,EACnF,OAAO,IACP,CACF,EAOA,SAASk1J,IAAY7xK,EAAK8xK,EAAa,GAAM,CAC5C,MAAO,CAACA,GAAc9xK,EAAI,OAAQA,EAAI,QAAQ,EAAE,OAAO,OAAO,EAAE,KAAK,EAAE,CACxE,CCnDA,IAAI+xK,IAAW,OAAO,OAClBjF,GAAY,OAAO,eACnBkF,IAAmB,OAAO,yBAC1BC,GAAoB,OAAO,oBAC3BC,IAAe,OAAO,eACtBC,IAAe,OAAO,UAAU,eAChCC,GAAa,CAACxoK,EAAIihB,IAAQ,UAAqB,CACjD,OAAOA,MAAWjhB,EAAGqoK,GAAkBroK,CAAE,EAAE,CAAC,CAAC,IAAIihB,EAAM,CAAE,QAAS,CAAA,IAAM,QAASA,CAAG,EAAGA,EAAI,OAC7F,EACIwnJ,IAAc,CAAC9lL,EAAImP,EAAM42K,EAAQhmD,IAAS,CAC5C,GAAI5wH,GAAQ,OAAOA,GAAS,UAAY,OAAOA,GAAS,WACtD,QAASiH,KAAOsvK,GAAkBv2K,CAAI,EAChC,CAACy2K,IAAa,KAAK5lL,EAAIoW,CAAG,GAAKA,IAAQ2vK,GACzCxF,GAAUvgL,EAAIoW,EAAK,CAAE,IAAK,IAAMjH,EAAKiH,CAAG,EAAG,WAAY,EAAE2pH,EAAO0lD,IAAiBt2K,EAAMiH,CAAG,IAAM2pH,EAAK,UAAU,CAAE,EAEvH,OAAO//H,CACT,EACIgmL,IAAU,CAAC1nJ,EAAK2nJ,EAAY12K,KAAYA,EAAS+uB,GAAO,KAAOknJ,IAASG,IAAarnJ,CAAG,CAAC,EAAI,CAAE,EAAEwnJ,IAKnGG,GAAc,CAAC3nJ,GAAO,CAACA,EAAI,WAAaiiJ,GAAUhxK,EAAQ,UAAW,CAAE,MAAO+uB,EAAK,WAAY,EAAI,CAAE,EAAI/uB,EACzG+uB,CACF,GAGI4nJ,IAAgBL,GAAW,CAC7B,qEAAqEt0G,EAASrjE,EAAQ,CACpFA,EAAO,QAAU,CACf,IAAO,WACP,IAAO,sBACP,IAAO,aACP,IAAO,cACP,IAAO,KACP,IAAO,UACP,IAAO,WACP,IAAO,gCACP,IAAO,aACP,IAAO,gBACP,IAAO,kBACP,IAAO,eACP,IAAO,mBACP,IAAO,UACP,IAAO,mBACP,IAAO,oBACP,IAAO,QACP,IAAO,YACP,IAAO,eACP,IAAO,YACP,IAAO,qBACP,IAAO,qBACP,IAAO,cACP,IAAO,eACP,IAAO,mBACP,IAAO,YACP,IAAO,YACP,IAAO,qBACP,IAAO,iBACP,IAAO,gCACP,IAAO,kBACP,IAAO,WACP,IAAO,OACP,IAAO,kBACP,IAAO,sBACP,IAAO,oBACP,IAAO,eACP,IAAO,yBACP,IAAO,wBACP,IAAO,qBACP,IAAO,eACP,IAAO,sBACP,IAAO,uBACP,IAAO,SACP,IAAO,oBACP,IAAO,YACP,IAAO,mBACP,IAAO,wBACP,IAAO,oBACP,IAAO,kCACP,IAAO,gCACP,IAAO,wBACP,IAAO,kBACP,IAAO,cACP,IAAO,sBACP,IAAO,kBACP,IAAO,6BACP,IAAO,0BACP,IAAO,uBACP,IAAO,gBACP,IAAO,2BACP,IAAO,eACP,IAAO,iCACb,CACG,CACH,CAAC,EAGGi4K,IAAmBN,GAAW,CAChC,mEAAmEt0G,EAASrjE,EAAQ,CAElF,IAAIk4K,EAAQF,MACZh4K,EAAO,QAAU04I,EACjBA,EAAO,QAAUw/B,EACjBx/B,EAAO,KAAOy/B,EAA6BD,CAAK,EAChDx/B,EAAO,MAAQ0/B,EAAqBF,CAAK,EACzCx/B,EAAO,SAAW,CAChB,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,EACX,EACIA,EAAO,MAAQ,CACb,IAAK,GACL,IAAK,GACL,IAAK,EACX,EACIA,EAAO,MAAQ,CACb,IAAK,GACL,IAAK,GACL,IAAK,EACX,EACI,SAASy/B,EAA6BE,EAAQ,CAC5C,IAAIpgK,EAAM,CAAA,EACV,cAAO,KAAKogK,CAAM,EAAE,QAAQ,SAAqBh4H,EAAM,CACrD,IAAI8yH,EAAWkF,EAAOh4H,CAAI,EACtBi4H,EAAU,OAAOj4H,CAAI,EACzBpoC,EAAIk7J,EAAS,YAAa,CAAA,EAAImF,CACtC,CAAO,EACMrgK,CACR,CACD,SAASmgK,EAAqBC,EAAQ,CACpC,OAAO,OAAO,KAAKA,CAAM,EAAE,IAAI,SAAiBh4H,EAAM,CACpD,OAAO,OAAOA,CAAI,CAC1B,CAAO,CACF,CACD,SAASk4H,EAAcpF,EAAU,CAC/B,IAAIlxH,EAAMkxH,EAAS,cACnB,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKz6B,EAAO,KAAMz2F,CAAG,EACxD,MAAM,IAAI,MAAM,4BAA8BkxH,EAAW,GAAG,EAE9D,OAAOz6B,EAAO,KAAKz2F,CAAG,CACvB,CACD,SAASu2H,EAAiBn4H,EAAM,CAC9B,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKq4F,EAAO,QAASr4F,CAAI,EAC5D,MAAM,IAAI,MAAM,wBAA0BA,CAAI,EAEhD,OAAOq4F,EAAO,QAAQr4F,CAAI,CAC3B,CACD,SAASq4F,EAAOr4F,EAAM,CACpB,GAAI,OAAOA,GAAS,SAClB,OAAOm4H,EAAiBn4H,CAAI,EAE9B,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,iCAAiC,EAEvD,IAAIjtE,EAAI,SAASitE,EAAM,EAAE,EACzB,OAAK,MAAMjtE,CAAC,EAGLmlM,EAAcl4H,CAAI,EAFhBm4H,EAAiBplM,CAAC,CAG5B,CACF,CACH,CAAC,EAGGqlM,GAAcX,IAAQG,IAAkB,EAAE,CAAC,EAC3CS,GAAWD,GAAY,SAAWA,GACxBC,GAAS,QACvB,IAAIC,GAAmBD,GAKvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IChLA,KAAM,CAAEz4H,QAAAA,GAAS,EAAGy4H,GACdE,GAA6B,OAAO,YAAY,EACtD,SAASC,GAAsBtnK,EAAO,GAAI,CACxC,MAAMmnI,EAASnnI,GAAM,QAAU,IACzBunK,EAAavnK,GAAM,YAAc0uC,IAAQy4F,CAAM,GAAK,GACpD9yI,EAAU,IAAI,QAAQ2L,GAAM,OAAO,EACzC,MAAO,CACL,GAAGA,EACH,QAAA3L,EACA,OAAA8yI,EACA,WAAAogC,CACJ,CACA,CACA,SAASC,IAAiBj0K,EAAUyM,EAAM,CACpCA,EAAK,MACP,OAAO,eAAezM,EAAU,OAAQ,CACtC,MAAOyM,EAAK,KACZ,WAAY,GACZ,SAAU,EAChB,CAAK,EAEH,MAAMynK,EAAkBznK,EAAK,QAAQ,IAAI,YAAY,EACrD,OAAIynK,GACF,OAAO,eAAel0K,EAAU8zK,GAAY,CAC1C,MAAOI,EACP,WAAY,GACZ,SAAU,EAChB,CAAK,EAEIl0K,CACT,CACA,SAASm0K,GAAgBn0K,EAAU,CACjC,OAAO,QAAQ,IAAIA,EAAU8zK,EAAU,CACzC,CACA,SAASM,IAA0BpoK,EAAQzP,EAAQ,CACjD,UAAWkI,KAAgB,QAAQ,QAAQuH,CAAM,EAAG,CAClD,MAAM42G,EAAa,OAAO,yBAAyB52G,EAAQvH,CAAY,EACjE4vK,EAAqB,OAAO,yBAChC93K,EACAkI,CACN,EACQm+G,GAAcyxD,GAAsB,MACtC,OAAO,eAAe93K,EAAQkI,EAAcm+G,CAAU,CAEzD,CACH,CCzCA,MAAM0xD,IAA2B,OAAO,UAAU,EAC5CC,GAAsC,OAAO,IAAI,qBAAqB,EAC5E,MAAMC,WAAqB9C,EAAc,CACvC,CAAC4C,GAAQ,EAAI,KACb,YAAY3tK,EAAM8F,EAAM,CACtB,MAAMgoK,EAAeV,GAAsBtnK,CAAI,EAC/C,MAAM9F,EAAM8tK,CAAY,EACxBR,IAAiB,KAAMQ,CAAY,CACpC,CACD,OAAO,OAAQ,CACb,OAAO,MAAM,OACd,CAOD,OAAO,KAAK9tK,EAAM8F,EAAM,CACtB,MAAMgoK,EAAeV,GAAsBtnK,CAAI,EACzCioK,EAAyBD,EAAa,QAAQ,IAAI,cAAc,EACjEC,GACHD,EAAa,QAAQ,IAAI,eAAgB,YAAY,EAElDA,EAAa,QAAQ,IAAI,gBAAgB,GAC5CA,EAAa,QAAQ,IACnB,iBACA9tK,EAAO,IAAI,KAAK,CAACA,CAAI,CAAC,EAAE,KAAK,SAAQ,EAAK,GAClD,EAEI,MAAM3G,EAAW,IAAIw0K,GAAa7tK,EAAM8tK,CAAY,EACpD,OAAKC,GACH,OAAO,eAAe10K,EAAUu0K,GAAqB,CACnD,MAAO,GACP,WAAY,EACpB,CAAO,EAEIv0K,CACR,CAOD,OAAO,KAAK2G,EAAM8F,EAAM,CACtB,MAAMgoK,EAAeV,GAAsBtnK,CAAI,EACzCioK,EAAyBD,EAAa,QAAQ,IAAI,cAAc,EACjEC,GACHD,EAAa,QAAQ,IAAI,eAAgB,kBAAkB,EAE7D,MAAME,EAAe,KAAK,UAAUhuK,CAAI,EACnC8tK,EAAa,QAAQ,IAAI,gBAAgB,GAC5CA,EAAa,QAAQ,IACnB,iBACAE,EAAe,IAAI,KAAK,CAACA,CAAY,CAAC,EAAE,KAAK,SAAQ,EAAK,GAClE,EAEI,MAAM30K,EAAW,IAAIw0K,GAAaG,EAAcF,CAAY,EAC5D,OAAKC,GACH,OAAO,eAAe10K,EAAUu0K,GAAqB,CACnD,MAAO,GACP,WAAY,EACpB,CAAO,EAEIv0K,CACR,CAOD,OAAO,IAAI2G,EAAM8F,EAAM,CACrB,MAAMgoK,EAAeV,GAAsBtnK,CAAI,EACzCioK,EAAyBD,EAAa,QAAQ,IAAI,cAAc,EACjEC,GACHD,EAAa,QAAQ,IAAI,eAAgB,UAAU,EAErD,MAAMz0K,EAAW,IAAIw0K,GAAa7tK,EAAM8tK,CAAY,EACpD,OAAKC,GACH,OAAO,eAAe10K,EAAUu0K,GAAqB,CACnD,MAAO,GACP,WAAY,EACpB,CAAO,EAEIv0K,CACR,CAOD,OAAO,KAAK2G,EAAM8F,EAAM,CACtB,MAAMgoK,EAAeV,GAAsBtnK,CAAI,EACzCioK,EAAyBD,EAAa,QAAQ,IAAI,cAAc,EACjEC,GACHD,EAAa,QAAQ,IAAI,eAAgB,WAAW,EAEtD,MAAMz0K,EAAW,IAAIw0K,GAAa7tK,EAAM8tK,CAAY,EACpD,OAAKC,GACH,OAAO,eAAe10K,EAAUu0K,GAAqB,CACnD,MAAO,GACP,WAAY,EACpB,CAAO,EAEIv0K,CACR,CAUD,OAAO,YAAY2G,EAAM8F,EAAM,CAC7B,MAAMgoK,EAAeV,GAAsBtnK,CAAI,EACzCioK,EAAyBD,EAAa,QAAQ,IAAI,cAAc,EACjEC,GACHD,EAAa,QAAQ,IAAI,eAAgB,0BAA0B,EAEjE9tK,GAAQ,CAAC8tK,EAAa,QAAQ,IAAI,gBAAgB,GACpDA,EAAa,QAAQ,IAAI,iBAAkB9tK,EAAK,WAAW,SAAQ,CAAE,EAEvE,MAAM3G,EAAW,IAAIw0K,GAAa7tK,EAAM8tK,CAAY,EACpD,OAAKC,GACH,OAAO,eAAe10K,EAAUu0K,GAAqB,CACnD,MAAO,GACP,WAAY,EACpB,CAAO,EAEIv0K,CACR,CASD,OAAO,SAAS2G,EAAM8F,EAAM,CAC1B,OAAO,IAAI+nK,GAAa7tK,EAAMotK,GAAsBtnK,CAAI,CAAC,CAC1D,CACH,CCvJA,SAAS2jK,KAAyB,CACjC,MAAMC,EAAY,CAACvxK,EAASC,IAAW,CACtCsxK,EAAS,MAAQ,UACjBA,EAAS,QAAW1vK,GAAS,CAC5B,GAAI0vK,EAAS,QAAU,UAAW,OAClCA,EAAS,OAAS1vK,EAClB,MAAM2vK,EAAeptK,IACpBmtK,EAAS,MAAQ,YACVntK,GAER,OAAOpE,EAAQ6B,aAAgB,QAAUA,EAAO,QAAQ,QAAQA,CAAI,EAAE,KAAK2vK,CAAW,CAAC,CAC1F,EACED,EAAS,OAAU3gC,GAAW,CAC7B,GAAI2gC,EAAS,QAAU,UACvB,sBAAe,IAAM,CACpBA,EAAS,MAAQ,UACrB,CAAI,EACMtxK,EAAOsxK,EAAS,gBAAkB3gC,CAAM,CAClD,CACA,EACC,OAAO2gC,CACR,CAGA,IAAIE,IAAkB,cAAc,OAAQ,CAC3CC,GACA,QACA,OACA,YAAYH,EAAW,KAAM,CAC5B,MAAMI,EAAmBL,MACzB,MAAM,CAACM,EAAiBC,IAAmB,CAC1CF,EAAiBC,EAAiBC,CAAc,EAChDN,IAAWI,EAAiB,QAASA,EAAiB,MAAM,CAC/D,CAAG,EACD,KAAKD,GAAYC,EACjB,KAAK,QAAU,KAAKD,GAAU,QAC9B,KAAK,OAAS,KAAKA,GAAU,MAC7B,CACD,IAAI,OAAQ,CACX,OAAO,KAAKA,GAAU,KACtB,CACD,IAAI,iBAAkB,CACrB,OAAO,KAAKA,GAAU,eACtB,CACD,KAAKF,EAAaM,EAAY,CAC7B,OAAO,KAAKC,GAAU,MAAM,KAAKP,EAAaM,CAAU,CAAC,CACzD,CACD,MAAMA,EAAY,CACjB,OAAO,KAAKC,GAAU,MAAM,MAAMD,CAAU,CAAC,CAC7C,CACD,QAAQE,EAAW,CAClB,OAAO,KAAKD,GAAU,MAAM,QAAQC,CAAS,CAAC,CAC9C,CACDD,GAAUp/J,EAAS,CAClB,OAAO,OAAO,iBAAiBA,EAAS,CACvC,QAAS,CACR,aAAc,GACd,MAAO,KAAK,OACZ,EACD,OAAQ,CACP,aAAc,GACd,MAAO,KAAK,MACZ,CACJ,CAAG,CACD,CACF,EC/DA,SAASmjK,IAA0B50K,EAAU,CAC3C,GAAIA,EAAS,MAAQ,MAAQA,EAAS,UAAYA,EAAS,KAAK,OAC9D,OAAO,KAET,MAAM60K,EAAU,IAAItE,IACdnxK,EAASY,EAAS,KAAK,UAAS,EAChC80K,EAAiB,IAAI,eAAe,CACxC,MAAM,KAAKhpH,EAAY,CACrB,GAAI,CACF,MAAMipH,EAAa,MAAM31K,EAAO,OAChC,GAAI21K,EAAW,KAAM,CACnBF,EAAQ,QAAO,EACf/oH,EAAW,MAAK,EAChB,MACD,CACDA,EAAW,QAAQipH,EAAW,KAAK,CACpC,OAAQhuK,EAAO,CACd,MAAA8tK,EAAQ,QAAO,EACT9tK,CACP,CACF,EACD,MAAM,OAAO2oI,EAAQ,CACnBmlC,EAAQ,QAAO,EACf,MAAMz1K,EAAO,OAAOswI,CAAM,CAC3B,CACL,CAAG,EACKslC,EAAmB,IAAItD,GAAcoD,EAAgB,CACzD,OAAQ90K,EAAS,OACjB,WAAYA,EAAS,WACrB,QAASA,EAAS,OACtB,CAAG,EACD,OAAAo0K,IAA0Bp0K,EAAUg1K,CAAgB,EAC7C,CACL,SAAUA,EACV,QAAAH,CACJ,CACA,CC7BA,MAAMI,EAAe,CACnB,OAAO,MAAwB,IAAI,QACnC,KAAO,UACP,SACA,iBACA,uBACA,yBACA,QACA,kBACA,KAKA,OACA,YAAYlrK,EAAM,CAChB,KAAK,SAAWA,EAAK,SACrB,KAAK,QAAUA,EAAK,QACpB,KAAK,kBAAoC,IAAI,IAC7C,MAAMmrK,EAAY9H,IAAa,IAAI,KAAO,EAC1C,KAAK,KAAO,CACV,GAAGrjK,EAAK,KACR,UAAAmrK,CACN,EACI,KAAK,OAAS,EACf,CAOD,OAAQ,CACN,KAAK,kBAAkB,QACvB,MAAMzkK,EAAW,KAAK,iBACtB,KAAK,iBAAmB,OACxB,KAAK,uBAAyB,OAC9B,KAAK,yBAA2B,OAC5B,OAAOA,GAAU,QAAW,YACzB,QAAQ,QAAQA,EAAS,OAAQ,CAAA,CAEzC,CAMD,SAAU,CACJ,KAAK,SAAS,OAChB,KAAK,MAAK,EACV,KAAK,OAAS,GAEjB,CAKD,MAAM,MAAM0kK,EAAO,CACjB,MAAO,EACR,CAQD,MAAM,KAAKprK,EAAM,CACf,MAAMqrK,EAAe,MAAM,KAAK,MAAM,CACpC,QAASrrK,EAAK,QACd,kBAAmBA,EAAK,iBAC9B,CAAK,EACD,OAAO,KAAK,UAAU,CACpB,QAASA,EAAK,QACd,aAAAqrK,EACA,kBAAmBrrK,EAAK,iBAC9B,CAAK,CACF,CACD,mBAAmBorK,EAAO,CACxB,MAAO,EACR,CAID,2BAA2B7V,EAAS,CAClC,MAAM+V,EAAgBJ,GAAe,MAAM,IAAI3V,CAAO,EACtD,GAAI,OAAO+V,EAAkB,IAC3B,OAAOA,EAET,MAAMC,EAAgBhW,EAAQ,QAC9B,OAAA2V,GAAe,MAAM,IAAI3V,EAASgW,CAAa,EACxCA,CACR,CAKD,MAAM,IAAIvrK,EAAM,CACd,GAAI,KAAK,QAAU,KAAK,SAAS,KAC/B,OAAO,KAET,MAAMwrK,EAAe,KAAK,2BAA2BxrK,EAAK,OAAO,EAC3DqrK,EAAe,MAAM,KAAK,MAAM,CACpC,QAASrrK,EAAK,QACd,kBAAmBA,EAAK,iBAC9B,CAAK,EASD,GAHI,CAL2B,MAAM,KAAK,UAAU,CAClD,QAASA,EAAK,QACd,aAAAqrK,EACA,kBAAmBrrK,EAAK,iBAC9B,CAAK,GAIG,KAAK,QAAU,KAAK,SAAS,KAC/B,OAAO,KAET,KAAK,OAAS,GACd,MAAMyrK,EAAkB,KAAK,aAAa,KAAK,QAAQ,EACjDC,EAAiB,KAAK,mBAAmB,CAC7C,QAAS1rK,EAAK,QACd,aAAAqrK,CACN,CAAK,EACKM,EAAqB,IAAI,gBAC/B,IAAIC,EACJ,MAAMC,EAAc,KACdD,GAAoB,OACjB5rK,EAAK,QAAQ,OAAO,SACvBA,EAAK,QAAQ,OAAO,iBAClB,QACA,IAAM,KAAK,qBAAqBA,EAAK,SAAS,EAC9C,CACE,KAAM,GACN,OAAQ2rK,EAAmB,MAC5B,CACb,EAEQC,EAAoB7tI,GAAa,CAC/B,KAAK,gBAAgB/9B,EAAK,UAAW+9B,CAAQ,EACzC/9B,EAAK,QAAQ,OAAO,SACjB,KAAK,qBAAqBA,EAAK,SAAS,CAEzD,GAEa4rK,GAiBHE,EAAiB,MAfOL,EAAgB,CAC5C,GAAGC,EACH,IAAI,UAAW,CACb,OAAOG,EAAW,CACnB,EACD,UAAW7rK,EAAK,UAChB,QAASA,EAAK,OACpB,CAAK,EAAE,MAAO+rK,GAAoB,CAC5B,GAAIA,aAA2B,SAC7B,OAAOA,EAET,MAAMA,CACZ,CAAK,EAAE,QAAQ,IAAM,CACfJ,EAAmB,MAAK,CAC9B,CAAK,EAED,OAAIG,GACFE,IAAuBF,CAAc,EAEf,KAAK,sBAAsB,CAGjD,QAASN,EACT,UAAWxrK,EAAK,UAChB,SAAU8rK,EACV,aAAAT,CACN,CAAK,CAEF,CACD,aAAax/F,EAAU,CACrB,MAAO,OAAOrb,GAAS,CACrB,GAAI,CAAC,KAAK,iBAAkB,CAC1B,IAAIn9D,EACJ,GAAI,CACFA,EAAS,MAAMw4E,EAASrb,CAAI,CAC7B,OAAQxzD,EAAO,CACd,YAAM,KAAK,qBAAqBwzD,EAAK,SAAS,EACxCxzD,CACP,CACD,GAAI,CAAC2J,IAAWtT,CAAM,EACpB,OAAO,KAAK,SAAS,CACnB,QAASm9D,EAAK,QACd,UAAWA,EAAK,UAChB,SAAUn9D,CACtB,CAAW,EAEH,MAAM44K,EAAmB,KAAK,kBAAkB,IAAIz7G,EAAK,SAAS,EAC9Dy7G,GAAoB,MAAQA,EAAiB,OAAS,IACxD,KAAK,yBAA2BA,EAChC,KAAK,kBAAkB,OAAOz7G,EAAK,SAAS,GAE9C,KAAK,iBAAmB,OAAO,YAAYn9D,EAASA,EAAO,OAAO,QAAQ,EAAC,EAAKA,EAAO,OAAO,aAAa,EAAC,CAC7G,CACD,KAAK,OAAS,GACd,KAAM,CAAE,KAAA0T,EAAM,MAAA5N,CAAO,EAAG,MAAM,KAAK,iBAAiB,OAC9C+yK,EAAe,MAAM/yK,EAI3B,OAHI+yK,IACF,KAAK,uBAAyBA,EAAa,SAEzCnlK,GACF,KAAK,OAAS,GACP,KAAK,SAAS,CACnB,QAASypD,EAAK,QACd,UAAWA,EAAK,UAChB,SAAU,KAAK,wBAAwB,MAAO,CACxD,CAAS,GAEI07G,CACb,CACG,CACD,sBAAsBlsK,EAAM,CAC1B,MAAO,CACL,QAAS,KACT,QAASA,EAAK,QACd,UAAWA,EAAK,UAChB,SAAUA,EAAK,SACf,aAAcA,EAAK,YACzB,CACG,CACD,gBAAgBmsK,EAAWpuI,EAAU,CACnC,GAAI,KAAK,iBAAkB,EAExB,KAAK,2BAA6B,CAAE,GAAE,QAAQA,CAAQ,EACvD,MACD,CACD,MAAMg0E,EAAW,KAAK,kBAAkB,IAAIo6D,CAAS,GAAK,GAC1Dp6D,EAAS,QAAQh0E,CAAQ,EACzB,KAAK,kBAAkB,IAAIouI,EAAWp6D,CAAQ,CAC/C,CACD,MAAM,gBAAgBA,EAAU,CAC9B,MAAM9zG,EAAS,CAAA,EACf,UAAWgrD,KAAW8oD,EACpB,GAAI,CACF,MAAM9oD,EAAO,CACd,OAAQjsD,EAAO,CACVA,aAAiB,OACnBiB,EAAO,KAAKjB,CAAK,CAEpB,CAECiB,EAAO,OAAS,GAClBogK,GAAS,MACP,qDACA,KAAK,KAAK,OACV,IAAI,eACFpgK,EACA,kDAAkD,KAAK,KAAK,MAAM,GACnE,CACT,CAEG,CAKD,sBAAsBkuK,EAAW,CAC/B,GAAI,KAAK,kBAAoB,KAAK,0BAA4B,MAAQ,KAAK,yBAAyB,OAAS,EAAG,CAC9G,MAAMC,EAAY,KAAK,yBACvB,YAAK,yBAA2B,OACzBA,CACR,CACD,MAAMr6D,EAAW,KAAK,kBAAkB,IAAIo6D,CAAS,EACrD,GAAI,GAACp6D,GAAYA,EAAS,SAAW,GAGrC,YAAK,kBAAkB,OAAOo6D,CAAS,EAChCp6D,CACR,CACD,MAAM,qBAAqBo6D,EAAW,CACpC,MAAMp6D,EAAW,KAAK,sBAAsBo6D,CAAS,EACjDp6D,GACF,MAAM,KAAK,gBAAgBA,CAAQ,CAEtC,CASD,MAAM,SAAS/xG,EAAM,CACnB,MAAM+xG,EAAW,KAAK,sBAAsB/xG,EAAK,SAAS,EAC1D,GAAI,CAAC+xG,EACH,OAAO/xG,EAAK,SAEd,MAAMirK,EAAmBjrK,EAAK,SAAW6qK,IAA0B7qK,EAAK,QAAQ,EAAI,KACpF,GAAI,CAACirK,EACH,aAAM,KAAK,gBAAgBl5D,CAAQ,EAC5B/xG,EAAK,SAEd,MAAM2rK,EAAqB,IAAI,gBACzBU,EAAkB,IAAM,CACxBV,EAAmB,OAAO,UAG9BA,EAAmB,MAAK,EACnB,KAAK,gBAAgB55D,CAAQ,EACxC,EACI,OAAKk5D,EAAiB,QAAQ,KAAKoB,CAAe,EAC9CrsK,EAAK,QAAQ,OAAO,QACtBqsK,IAEArsK,EAAK,QAAQ,OAAO,iBAAiB,QAASqsK,EAAiB,CAC7D,KAAM,GACN,OAAQV,EAAmB,MACnC,CAAO,EAEIV,EAAiB,QACzB,CACH,CACA,SAASe,IAAuB/1K,EAAU,CACxC,GAAI,OAAO,SAAa,IACtB,OAEF,MAAMk0K,EAAkBC,GAAgBn0K,CAAQ,EAChD,GAAI,CAACk0K,EACH,OAEF,MAAMmC,EAAqBC,IAAgB,UAAU,aAAa,KAChE,IAAI,QAAQ,CAAC,CAAC,aAAcpC,CAAe,CAAC,CAAC,CACjD,EACE,UAAWqC,KAAgBF,EACzB,SAAS,OAASE,CAEtB,CCnVA,SAASC,IAAM75K,EAAK,CAGhB,QAFI85K,EAAS,CAAA,EACT91M,EAAI,EACDA,EAAIg8B,EAAI,QAAQ,CACnB,IAAI4qJ,EAAO5qJ,EAAIh8B,CAAC,EAChB,GAAI4mL,IAAS,KAAOA,IAAS,KAAOA,IAAS,IAAK,CAC9CkvB,EAAO,KAAK,CAAE,KAAM,WAAY,MAAO91M,EAAG,MAAOg8B,EAAIh8B,GAAG,CAAG,CAAA,EAC3D,QACH,CACD,GAAI4mL,IAAS,KAAM,CACfkvB,EAAO,KAAK,CAAE,KAAM,eAAgB,MAAO91M,IAAK,MAAOg8B,EAAIh8B,GAAG,CAAG,CAAA,EACjE,QACH,CACD,GAAI4mL,IAAS,IAAK,CACdkvB,EAAO,KAAK,CAAE,KAAM,OAAQ,MAAO91M,EAAG,MAAOg8B,EAAIh8B,GAAG,CAAG,CAAA,EACvD,QACH,CACD,GAAI4mL,IAAS,IAAK,CACdkvB,EAAO,KAAK,CAAE,KAAM,QAAS,MAAO91M,EAAG,MAAOg8B,EAAIh8B,GAAG,CAAG,CAAA,EACxD,QACH,CACD,GAAI4mL,IAAS,IAAK,CAGd,QAFI7kJ,EAAO,GACP7b,EAAIlmB,EAAI,EACLkmB,EAAI8V,EAAI,QAAQ,CACnB,IAAI4+C,EAAO5+C,EAAI,WAAW9V,CAAC,EAC3B,GAEC00D,GAAQ,IAAMA,GAAQ,IAElBA,GAAQ,IAAMA,GAAQ,IAEtBA,GAAQ,IAAMA,GAAQ,KAEvBA,IAAS,GAAI,CACb74C,GAAQ/F,EAAI9V,GAAG,EACf,QACH,CACD,KACH,CACD,GAAI,CAAC6b,EACD,MAAM,IAAI,UAAU,6BAA6B,OAAO/hC,CAAC,CAAC,EAC9D81M,EAAO,KAAK,CAAE,KAAM,OAAQ,MAAO91M,EAAG,MAAO+hC,CAAI,CAAE,EACnD/hC,EAAIkmB,EACJ,QACH,CACD,GAAI0gK,IAAS,IAAK,CACd,IAAI79H,EAAQ,EACRoB,EAAU,GACVjkC,EAAIlmB,EAAI,EACZ,GAAIg8B,EAAI9V,CAAC,IAAM,IACX,MAAM,IAAI,UAAU,oCAAsC,OAAOA,CAAC,CAAC,EAEvE,KAAOA,EAAI8V,EAAI,QAAQ,CACnB,GAAIA,EAAI9V,CAAC,IAAM,KAAM,CACjBikC,GAAWnuB,EAAI9V,GAAG,EAAI8V,EAAI9V,GAAG,EAC7B,QACH,CACD,GAAI8V,EAAI9V,CAAC,IAAM,KAEX,GADA6iC,IACIA,IAAU,EAAG,CACb7iC,IACA,KACH,UAEI8V,EAAI9V,CAAC,IAAM,MAChB6iC,IACI/sB,EAAI9V,EAAI,CAAC,IAAM,KACf,MAAM,IAAI,UAAU,uCAAuC,OAAOA,CAAC,CAAC,EAG5EikC,GAAWnuB,EAAI9V,GAAG,CACrB,CACD,GAAI6iC,EACA,MAAM,IAAI,UAAU,yBAAyB,OAAO/oD,CAAC,CAAC,EAC1D,GAAI,CAACmqD,EACD,MAAM,IAAI,UAAU,sBAAsB,OAAOnqD,CAAC,CAAC,EACvD81M,EAAO,KAAK,CAAE,KAAM,UAAW,MAAO91M,EAAG,MAAOmqD,CAAO,CAAE,EACzDnqD,EAAIkmB,EACJ,QACH,CACD4vL,EAAO,KAAK,CAAE,KAAM,OAAQ,MAAO91M,EAAG,MAAOg8B,EAAIh8B,GAAG,CAAG,CAAA,CAC1D,CACD,OAAA81M,EAAO,KAAK,CAAE,KAAM,MAAO,MAAO91M,EAAG,MAAO,EAAE,CAAE,EACzC81M,CACX,CAIO,SAAStwC,IAAMxpI,EAAK0B,EAAS,CAC5BA,IAAY,SAAUA,EAAU,CAAE,GA4CtC,QA3CIo4K,EAASD,IAAM75K,CAAG,EAClB6L,EAAKnK,EAAQ,SAAUq4K,EAAWluK,IAAO,OAAS,KAAOA,EAAIE,EAAKrK,EAAQ,UAAWs4K,EAAYjuK,IAAO,OAAS,MAAQA,EACzHtL,EAAS,CAAA,EACTgG,EAAM,EACNziC,EAAI,EACJ0xD,EAAO,GACPukJ,EAAa,SAAUz4K,EAAM,CAC7B,GAAIx9B,EAAI81M,EAAO,QAAUA,EAAO91M,CAAC,EAAE,OAASw9B,EACxC,OAAOs4K,EAAO91M,GAAG,EAAE,KAC/B,EACQk2M,EAAc,SAAU14K,EAAM,CAC9B,IAAI+E,EAAQ0zK,EAAWz4K,CAAI,EAC3B,GAAI+E,IAAU,OACV,OAAOA,EACX,IAAIsF,EAAKiuK,EAAO91M,CAAC,EAAGm2M,EAAWtuK,EAAG,KAAMJ,EAAQI,EAAG,MACnD,MAAM,IAAI,UAAU,cAAc,OAAOsuK,EAAU,MAAM,EAAE,OAAO1uK,EAAO,aAAa,EAAE,OAAOjK,CAAI,CAAC,CAC5G,EACQ44K,EAAc,UAAY,CAG1B,QAFI35K,EAAS,GACT8F,EACIA,EAAQ0zK,EAAW,MAAM,GAAKA,EAAW,cAAc,GAC3Dx5K,GAAU8F,EAEd,OAAO9F,CACf,EACQ45K,EAAS,SAAU9zK,EAAO,CAC1B,QAASlpB,EAAK,EAAGi9L,EAAcN,EAAW38L,EAAKi9L,EAAY,OAAQj9L,IAAM,CACrE,IAAIutK,EAAO0vB,EAAYj9L,CAAE,EACzB,GAAIkpB,EAAM,QAAQqkJ,CAAI,EAAI,GACtB,MAAO,EACd,CACD,MAAO,EACf,EACQ2vB,EAAc,SAAU1I,EAAQ,CAChC,IAAI9iK,EAAOtO,EAAOA,EAAO,OAAS,CAAC,EAC/B+5K,EAAW3I,IAAW9iK,GAAQ,OAAOA,GAAS,SAAWA,EAAO,IACpE,GAAIA,GAAQ,CAACyrK,EACT,MAAM,IAAI,UAAU,8DAA+D,OAAOzrK,EAAK,KAAM,GAAI,CAAC,EAE9G,MAAI,CAACyrK,GAAYH,EAAOG,CAAQ,EACrB,KAAK,OAAOC,GAAaT,CAAS,EAAG,KAAK,EAC9C,SAAS,OAAOS,GAAaD,CAAQ,EAAG,KAAK,EAAE,OAAOC,GAAaT,CAAS,EAAG,MAAM,CACpG,EACWh2M,EAAI81M,EAAO,QAAQ,CACtB,IAAIlvB,EAAOqvB,EAAW,MAAM,EACxBl0K,EAAOk0K,EAAW,MAAM,EACxB9rJ,EAAU8rJ,EAAW,SAAS,EAClC,GAAIl0K,GAAQooB,EAAS,CACjB,IAAI0jJ,EAASjnB,GAAQ,GACjBmvB,EAAS,QAAQlI,CAAM,IAAM,KAC7Bn8I,GAAQm8I,EACRA,EAAS,IAETn8I,IACAj1B,EAAO,KAAKi1B,CAAI,EAChBA,EAAO,IAEXj1B,EAAO,KAAK,CACR,KAAMsF,GAAQU,IACd,OAAQorK,EACR,OAAQ,GACR,QAAS1jJ,GAAWosJ,EAAY1I,CAAM,EACtC,SAAUoI,EAAW,UAAU,GAAK,EACpD,CAAa,EACD,QACH,CACD,IAAI1zK,EAAQqkJ,GAAQqvB,EAAW,cAAc,EAC7C,GAAI1zK,EAAO,CACPmvB,GAAQnvB,EACR,QACH,CACGmvB,IACAj1B,EAAO,KAAKi1B,CAAI,EAChBA,EAAO,IAEX,IAAIgrB,EAAOu5H,EAAW,MAAM,EAC5B,GAAIv5H,EAAM,CACN,IAAImxH,EAASuI,IACTM,EAAST,EAAW,MAAM,GAAK,GAC/BU,EAAYV,EAAW,SAAS,GAAK,GACrCW,EAASR,IACbF,EAAY,OAAO,EACnBz5K,EAAO,KAAK,CACR,KAAMi6K,IAAWC,EAAYl0K,IAAQ,IACrC,QAASi0K,GAAU,CAACC,EAAYJ,EAAY1I,CAAM,EAAI8I,EACtD,OAAQ9I,EACR,OAAQ+I,EACR,SAAUX,EAAW,UAAU,GAAK,EACpD,CAAa,EACD,QACH,CACDC,EAAY,KAAK,CACpB,CACD,OAAOz5K,CACX,CAoEO,SAASkgD,IAAM3gD,EAAK0B,EAAS,CAChC,IAAIyV,EAAO,CAAA,EACP6pC,EAAK65H,GAAa76K,EAAKmX,EAAMzV,CAAO,EACxC,OAAOo5K,IAAiB95H,EAAI7pC,EAAMzV,CAAO,CAC7C,CAIO,SAASo5K,IAAiB95H,EAAI7pC,EAAMzV,EAAS,CAC5CA,IAAY,SAAUA,EAAU,CAAE,GACtC,IAAImK,EAAKnK,EAAQ,OAAQq5K,EAASlvK,IAAO,OAAS,SAAU7nB,EAAG,CAAE,OAAOA,CAAE,EAAK6nB,EAC/E,OAAO,SAAUmvK,EAAU,CACvB,IAAIluM,EAAIk0E,EAAG,KAAKg6H,CAAQ,EACxB,GAAI,CAACluM,EACD,MAAO,GAgBX,QAfI4oD,EAAO5oD,EAAE,CAAC,EAAG2+B,EAAQ3+B,EAAE,MACvB62J,EAAS,OAAO,OAAO,IAAI,EAC3B7rH,EAAU,SAAU9zC,EAAG,CACvB,GAAI8I,EAAE9I,CAAC,IAAM,OACT,MAAO,WACX,IAAIyiC,EAAM0Q,EAAKnzC,EAAI,CAAC,EAChByiC,EAAI,WAAa,KAAOA,EAAI,WAAa,IACzCk9H,EAAOl9H,EAAI,IAAI,EAAI35B,EAAE9I,CAAC,EAAE,MAAMyiC,EAAI,OAASA,EAAI,MAAM,EAAE,IAAI,SAAUF,EAAO,CACxE,OAAOw0K,EAAOx0K,EAAOE,CAAG,CAC5C,CAAiB,EAGDk9H,EAAOl9H,EAAI,IAAI,EAAIs0K,EAAOjuM,EAAE9I,CAAC,EAAGyiC,CAAG,CAEnD,EACiBziC,EAAI,EAAGA,EAAI8I,EAAE,OAAQ9I,IAC1B8zC,EAAQ9zC,CAAC,EAEb,MAAO,CAAE,KAAM0xD,EAAM,MAAOjqB,EAAO,OAAQk4H,EACnD,CACA,CAIA,SAAS82C,GAAaz6K,EAAK,CACvB,OAAOA,EAAI,QAAQ,4BAA6B,MAAM,CAC1D,CAIA,SAASurJ,GAAM7pJ,EAAS,CACpB,OAAOA,GAAWA,EAAQ,UAAY,GAAK,GAC/C,CAIA,SAASu5K,IAAevlJ,EAAMve,EAAM,CAChC,GAAI,CAACA,EACD,OAAOue,EAIX,QAHIwlJ,EAAc,0BACdzvK,EAAQ,EACR0vK,EAAaD,EAAY,KAAKxlJ,EAAK,MAAM,EACtCylJ,GACHhkK,EAAK,KAAK,CAEN,KAAMgkK,EAAW,CAAC,GAAK1vK,IACvB,OAAQ,GACR,OAAQ,GACR,SAAU,GACV,QAAS,EACrB,CAAS,EACD0vK,EAAaD,EAAY,KAAKxlJ,EAAK,MAAM,EAE7C,OAAOA,CACX,CAIA,SAAS0lJ,IAAcj4I,EAAOhsB,EAAMzV,EAAS,CACzC,IAAI83H,EAAQr2F,EAAM,IAAI,SAAUzN,EAAM,CAAE,OAAOmlJ,GAAanlJ,EAAMve,EAAMzV,CAAO,EAAE,MAAS,CAAA,EAC1F,OAAO,IAAI,OAAO,MAAM,OAAO83H,EAAM,KAAK,GAAG,EAAG,GAAG,EAAG+xB,GAAM7pJ,CAAO,CAAC,CACxE,CAIA,SAAS25K,IAAe3lJ,EAAMve,EAAMzV,EAAS,CACzC,OAAO45K,IAAe9xC,IAAM9zG,EAAMh0B,CAAO,EAAGyV,EAAMzV,CAAO,CAC7D,CAIO,SAAS45K,IAAexB,EAAQ3iK,EAAMzV,EAAS,CAC9CA,IAAY,SAAUA,EAAU,CAAE,GAMtC,QALImK,EAAKnK,EAAQ,OAAQkuH,EAAS/jH,IAAO,OAAS,GAAQA,EAAIE,EAAKrK,EAAQ,MAAOsB,EAAQ+I,IAAO,OAAS,GAAOA,EAAI/Q,EAAK0G,EAAQ,IAAKhC,EAAM1E,IAAO,OAAS,GAAOA,EAAI8gB,EAAKpa,EAAQ,OAAQmoB,EAAS/N,IAAO,OAAS,SAAU93B,EAAG,CAAE,OAAOA,CAAE,EAAK83B,EAAIxsC,EAAKoyB,EAAQ,UAAWs4K,EAAY1qM,IAAO,OAAS,MAAQA,EAAIisM,EAAK75K,EAAQ,SAAU85K,EAAWD,IAAO,OAAS,GAAKA,EAC1WE,EAAa,IAAI,OAAOhB,GAAae,CAAQ,EAAG,KAAK,EACrDE,EAAc,IAAI,OAAOjB,GAAaT,CAAS,EAAG,GAAG,EACrDjoH,EAAQ/uD,EAAQ,IAAM,GAEjB3lB,EAAK,EAAGs+L,EAAW7B,EAAQz8L,EAAKs+L,EAAS,OAAQt+L,IAAM,CAC5D,IAAIurF,EAAQ+yG,EAASt+L,CAAE,EACvB,GAAI,OAAOurF,GAAU,SACjB7W,GAAS0oH,GAAa5wJ,EAAO++C,CAAK,CAAC,MAElC,CACD,IAAIipG,EAAS4I,GAAa5wJ,EAAO++C,EAAM,MAAM,CAAC,EAC1CgyG,EAASH,GAAa5wJ,EAAO++C,EAAM,MAAM,CAAC,EAC9C,GAAIA,EAAM,QAGN,GAFIzxD,GACAA,EAAK,KAAKyxD,CAAK,EACfipG,GAAU+I,EACV,GAAIhyG,EAAM,WAAa,KAAOA,EAAM,WAAa,IAAK,CAClD,IAAIj6C,EAAMi6C,EAAM,WAAa,IAAM,IAAM,GACzC7W,GAAS,MAAM,OAAO8/G,EAAQ,MAAM,EAAE,OAAOjpG,EAAM,QAAS,MAAM,EAAE,OAAOgyG,CAAM,EAAE,OAAO/I,EAAQ,KAAK,EAAE,OAAOjpG,EAAM,QAAS,MAAM,EAAE,OAAOgyG,EAAQ,GAAG,EAAE,OAAOjsJ,CAAG,CACxK,MAEGojC,GAAS,MAAM,OAAO8/G,EAAQ,GAAG,EAAE,OAAOjpG,EAAM,QAAS,GAAG,EAAE,OAAOgyG,EAAQ,GAAG,EAAE,OAAOhyG,EAAM,QAAQ,MAG1G,CACD,GAAIA,EAAM,WAAa,KAAOA,EAAM,WAAa,IAC7C,MAAM,IAAI,UAAU,mBAAoB,OAAOA,EAAM,KAAM,+BAAgC,CAAC,EAEhG7W,GAAS,IAAI,OAAO6W,EAAM,QAAS,GAAG,EAAE,OAAOA,EAAM,QAAQ,CAChE,MAGD7W,GAAS,MAAM,OAAO8/G,CAAM,EAAE,OAAO+I,EAAQ,GAAG,EAAE,OAAOhyG,EAAM,QAAQ,CAE9E,CACJ,CACD,GAAIlpE,EACKkwH,IACD79D,GAAS,GAAG,OAAO2pH,EAAa,GAAG,GACvC3pH,GAAUrwD,EAAQ,SAAiB,MAAM,OAAO+5K,EAAY,GAAG,EAAlC,QAE5B,CACD,IAAIG,EAAW9B,EAAOA,EAAO,OAAS,CAAC,EACnC+B,EAAiB,OAAOD,GAAa,SACnCF,EAAY,QAAQE,EAASA,EAAS,OAAS,CAAC,CAAC,EAAI,GACrDA,IAAa,OACdhsD,IACD79D,GAAS,MAAM,OAAO2pH,EAAa,KAAK,EAAE,OAAOD,EAAY,KAAK,GAEjEI,IACD9pH,GAAS,MAAM,OAAO2pH,EAAa,GAAG,EAAE,OAAOD,EAAY,GAAG,EAErE,CACD,OAAO,IAAI,OAAO1pH,EAAOw5F,GAAM7pJ,CAAO,CAAC,CAC3C,CAQO,SAASm5K,GAAanlJ,EAAMve,EAAMzV,EAAS,CAC9C,OAAIg0B,aAAgB,OACTulJ,IAAevlJ,EAAMve,CAAI,EAChC,MAAM,QAAQue,CAAI,EACX0lJ,IAAc1lJ,EAAMve,EAAMzV,CAAO,EACrC25K,IAAe3lJ,EAAMve,EAAMzV,CAAO,CAC7C,CC7ZA,MAAMo6K,IAA2B,YACjC,SAASC,GAASrmJ,EAAM,CACtB,OAAIA,EAAK,SAAS,GAAG,EACZA,EAEFA,EAAK,QAAQomJ,IAA0B,EAAE,CAClD,CCNA,SAASE,IAAcl4K,EAAK,CAC1B,MAAO,8BAA8B,KAAKA,CAAG,CAC/C,CCDA,SAASm4K,IAAevmJ,EAAMwsI,EAAS,CAIrC,GAHI8Z,IAActmJ,CAAI,GAGlBA,EAAK,WAAW,GAAG,EACrB,OAAOA,EAET,MAAMy8B,EAAS+vG,GAAW,OAAO,SAAa,KAAe,SAAS,KACtE,OAAO/vG,EAEL,UAAU,IAAI,IAAI,UAAUz8B,CAAI,EAAGy8B,CAAM,EAAE,IAAI,EAC7Cz8B,CACN,CCXA,SAASwmJ,IAAcxmJ,EAAMwsI,EAAS,CACpC,GAAIxsI,aAAgB,OAClB,OAAOA,EAET,MAAMymJ,EAAmBF,IAAevmJ,EAAMwsI,CAAO,EACrD,OAAO6Z,GAASI,CAAgB,CAClC,CCLA,SAASC,IAAW1mJ,EAAM,CACxB,OAAOA,EAAK,QACV,4BACA,CAAC7yD,EAAGw5M,EAAeC,IAAa,CAC9B,MAAMC,EAAa,OACnB,OAAKF,EAGEA,EAAc,WAAW,GAAG,EAAI,GAAGA,CAAa,GAAGC,CAAQ,GAAK,GAAGD,CAAa,GAAGE,CAAU,GAF3FA,CAGV,CACL,EAAI,QAAQ,wCAAyC,QAAQ,EAAE,QAAQ,sBAAuB,QAAQ,CACtG,CACA,SAASC,IAAgB14K,EAAK4xB,EAAMwsI,EAAS,CAC3C,MAAMua,EAAiBP,IAAcxmJ,EAAMwsI,CAAO,EAC5Cwa,EAAY,OAAOD,GAAmB,SAAWL,IAAWK,CAAc,EAAIA,EAC9EV,EAAWpG,IAAY7xK,CAAG,EAC1BrD,EAASkgD,IAAM+7H,EAAW,CAAE,OAAQ,kBAAoB,CAAA,EAAEX,CAAQ,EAClEp4C,EAASljI,GAAUA,EAAO,QAAU,CAAA,EAC1C,MAAO,CACL,QAASA,IAAW,GACpB,OAAAkjI,CACJ,CACA,CCzBA,SAASg5C,IAAaj7K,EAAS,CAC7B,MAAMmQ,EAAsB,IAAI,KAC1By2D,EAAY,GAAGz2D,EAAI,SAAU,EAAC,SAAQ,EAAG,SAAS,EAAG,GAAG,CAAC,IAAIA,EAAI,WAAY,EAAC,SAAU,EAAC,SAAS,EAAG,GAAG,CAAC,IAAIA,EAAI,aAAa,SAAU,EAAC,SAAS,EAAG,GAAG,CAAC,GAC/J,OAAInQ,GAAS,aACJ,GAAG4mE,CAAS,IAAIz2D,EAAI,gBAAe,EAAG,SAAQ,EAAG,SAAS,EAAG,GAAG,CAAC,GAEnEy2D,CACT,CCPA,SAASs0G,GAAY94K,EAAK,CACxB,MAAM+4K,EAAc/4K,aAAe,IAAMA,EAAM,IAAI,IAAIA,CAAG,EAC1D,OAAI,OAAO,SAAa,KAAe+4K,EAAY,SAAW,SAAS,OAC9DA,EAAY,SAEdA,EAAY,OAASA,EAAY,QAC1C,CCNA,SAASr5G,GAASj9D,EAAO,CACvB,OAAOA,GAAS,MAAQ,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAK,CAC3E,CCOA,MAAMu2K,IAA2B,OAAO,UAAU,EAC5CC,IAA+B,OAAO,cAAc,ECTpDC,IAAmC,OAAO,kBAAkB,EAelE,SAASC,IAAmBz9G,EAAO,CACjC,OAAO,QAAQ,IAAIA,EAAOw9G,GAAgB,GAAK,CAAA,CACjD,CCbA,SAASE,GAAoBtxE,EAAU,CACrC,MAAMuxE,EAAS,CAAA,EACTC,EAAa,CAACC,EAAMlwK,IAAY,CACpC,MAAMmwK,EAASH,EAAOE,CAAI,IAAM,CAAA,EAC3BC,EAAO,SAASnwK,CAAO,GAC1BmwK,EAAO,KAAKnwK,CAAO,CAEzB,EACE,UAAWA,KAAWy+F,EAAU,CAC9BwxE,EAAWjwK,EAAQ,KAAMA,CAAO,EAChC,UAAWowK,KAAWN,IAAmB9vK,CAAO,EAC9CiwK,EAAWG,EAAQ,KAAMA,CAAO,CAEnC,CACD,OAAOJ,CACT,CACA,MAAMK,EAAmB,CACvB,gBAAgBC,EAAiB,CAC/Bp6G,GACE,KAAKq6G,GAAkBD,CAAe,EACtChS,GAAS,cACP,6GACD,CACP,EACI,MAAMkS,EAA4BT,GAAoBO,CAAe,EACrE,MAAO,CACL,gBAAiBE,EACjB,SAAU,CAAE,GAAGA,CAA2B,CAChD,CACG,CACD,iBAAkB,CAChB,OAAO,OAAO,OAAO,KAAK,SAAU,EAAC,QAAQ,EAAE,KAAI,EAAG,OAAQxwK,GAAYA,GAAW,IAAI,CAC1F,CACD,kBAAkBkwK,EAAM,CACtB,OAAO,KAAK,SAAU,EAAC,SAASA,CAAI,GAAK,CAAA,CAC1C,CACD,IAAIO,EAAc,CAOhB,GANAv6G,GACE,KAAKq6G,GAAkBE,CAAY,EACnCnS,GAAS,cACP,sIACD,CACP,EACQmS,EAAa,SAAW,EAC1B,OAEF,KAAM,CAAE,SAAAhyE,CAAQ,EAAK,KAAK,SAAQ,EAC5BiyE,EAAYX,GAAoBU,CAAY,EAClD,UAAWP,KAAQQ,EAAW,CAC5B,MAAMC,EAAmBD,EAAUR,CAAI,EACjCU,EAAkBnyE,EAASyxE,CAAI,EACrCzxE,EAASyxE,CAAI,EAAIU,EAAkB,CAAC,GAAGD,EAAkB,GAAGC,CAAe,EAAID,CAChF,CACD,KAAK,SAAS,CAAE,SAAAlyE,CAAQ,CAAE,CAC3B,CACD,MAAMgyE,EAAc,CAClBv6G,GACEu6G,EAAa,OAAS,EAAI,KAAKF,GAAkBE,CAAY,EAAI,GACjEnS,GAAS,cACP,iHACD,CACP,EACI,UAAWt+J,KAAW,KAAK,kBACrB,UAAWA,GACbA,EAAQ,QAGZ,KAAM,CAAE,gBAAAswK,CAAe,EAAK,KAAK,SAAQ,EACzC,GAAIG,EAAa,SAAW,EAAG,CAC7B,KAAK,SAAS,CACZ,SAAU,CAAE,GAAGH,CAAiB,CACxC,CAAO,EACD,MACD,CACD,MAAMO,EAAyBd,GAAoBU,CAAY,EAC/D,KAAK,SAAS,CACZ,gBAAiBI,EACjB,SAAU,CAAE,GAAGA,CAAwB,CAC7C,CAAK,CACF,CACD,SAAU,CACR,UAAW7wK,KAAW,KAAK,kBACrB,YAAaA,GACfA,EAAQ,SAGb,CACDuwK,GAAkB9xE,EAAU,CAC1B,OAAOA,EAAS,MAAOz+F,GAAY,CAAC,MAAM,QAAQA,CAAO,CAAC,CAC3D,CACH,CACA,MAAM8wK,YAAmCT,EAAmB,CAC1DU,GACAC,GACA,YAAYV,EAAiB,CAC3B,QACA,MAAMvgH,EAAe,KAAK,gBAAgBugH,CAAe,EACzD,KAAKU,GAAmBjhH,EAAa,gBACrC,KAAKghH,GAAYhhH,EAAa,QAC/B,CACD,UAAW,CACT,MAAO,CACL,gBAAiB,KAAKihH,GACtB,SAAU,KAAKD,EACrB,CACG,CACD,SAASE,EAAW,CACdA,EAAU,kBACZ,KAAKD,GAAmBC,EAAU,iBAEhCA,EAAU,WACZ,KAAKF,GAAYE,EAAU,SAE9B,CACH,CCtHA,MAAMC,GAAW,CACf,cAAgB,CAAA,EAChB,SAAU,CACR,IAAIltK,EACJ,MAAM9F,EAAS,CAAA,EACf,KAAO8F,EAAe,KAAK,cAAc,MAAK,GAC5C,GAAI,CACFA,GACD,OAAQ/G,EAAO,CACVA,aAAiB,OACnBiB,EAAO,KAAKjB,CAAK,CAEpB,CAECiB,EAAO,OAAS,GAClB,QAAQ,MACN,IAAI,eACFA,EACAogK,GAAS,cACP,2IACD,CACF,CACT,CAEG,CACH,CC1BA,SAAS6S,IAAgBjvK,EAAQ,CAC/B,MAAMkvK,EAAQ,CAAC,GAAGlvK,CAAM,EACxB,cAAO,OAAOkvK,CAAK,EACZA,CACT,CCHA,MAAMC,IAAkB,MAAO,CAC7B,QAAA7b,EACA,UAAA4W,EACA,SAAA3tE,EACA,kBAAA6yE,CACF,IAAM,CACJ,IAAIC,EAAkB,KAClBj+K,EAAS,KACb,UAAW0M,KAAWy+F,EAKpB,GAJAnrG,EAAS,MAAM0M,EAAQ,IAAI,CAAE,QAAAw1J,EAAS,UAAA4W,EAAW,kBAAAkF,CAAiB,CAAE,EAChEh+K,IAAW,OACbi+K,EAAkBvxK,GAEhB1M,GAAQ,SACV,MAGJ,OAAIi+K,EACK,CACL,QAASA,EACT,aAAcj+K,GAAQ,aACtB,SAAUA,GAAQ,QACxB,EAES,IACT,EC1BA,SAASk+K,IAAcC,EAAQvM,EAAU,CACvC,OAAOuM,EAAO,YAAW,IAAOvM,EAAS,YAAW,CACtD,CCIA,SAASwM,IAAmB5nC,EAAQ,CAClC,OAAIA,EAAS,IACJ,UAELA,EAAS,IACJ,UAEF,SACT,CCdA,eAAe6nC,IAAiBnc,EAAS,CAEvC,MAAMoc,EAAc,MADCpc,EAAQ,QACU,OACvC,MAAO,CACL,IAAK,IAAI,IAAIA,EAAQ,GAAG,EACxB,OAAQA,EAAQ,OAChB,QAAS,OAAO,YAAYA,EAAQ,QAAQ,QAAO,CAAE,EACrD,KAAMoc,CACV,CACA,CCRA,KAAM,CAAE,QAAAvgI,GAAS,EAAGy4H,GACpB,eAAe+H,IAAkB37K,EAAU,CACzC,MAAM47K,EAAgB57K,EAAS,QACzB20K,EAAe,MAAMiH,EAAc,OACnCC,EAAiBD,EAAc,QAAU,IACzCE,EAAqBF,EAAc,YAAczgI,IAAQ0gI,CAAc,GAAK,KAClF,MAAO,CACL,OAAQA,EACR,WAAYC,EACZ,QAAS,OAAO,YAAYF,EAAc,QAAQ,QAAO,CAAE,EAC3D,KAAMjH,CACV,CACA,CCbA,IAAInC,IAAW,OAAO,OAClBjF,GAAY,OAAO,eACnBkF,IAAmB,OAAO,yBAC1BC,GAAoB,OAAO,oBAC3BC,IAAe,OAAO,eACtBC,IAAe,OAAO,UAAU,eAChCC,IAAa,CAACxoK,EAAIihB,IAAQ,UAAqB,CACjD,OAAOA,MAAWjhB,EAAGqoK,GAAkBroK,CAAE,EAAE,CAAC,CAAC,IAAIihB,EAAM,CAAE,QAAS,CAAA,IAAM,QAASA,CAAG,EAAGA,EAAI,OAC7F,EACIwnJ,IAAc,CAAC9lL,EAAImP,EAAM42K,EAAQhmD,IAAS,CAC5C,GAAI5wH,GAAQ,OAAOA,GAAS,UAAY,OAAOA,GAAS,WACtD,QAASiH,KAAOsvK,GAAkBv2K,CAAI,EAChC,CAACy2K,IAAa,KAAK5lL,EAAIoW,CAAG,GAAKA,IAAQ2vK,GACzCxF,GAAUvgL,EAAIoW,EAAK,CAAE,IAAK,IAAMjH,EAAKiH,CAAG,EAAG,WAAY,EAAE2pH,EAAO0lD,IAAiBt2K,EAAMiH,CAAG,IAAM2pH,EAAK,UAAU,CAAE,EAEvH,OAAO//H,CACT,EACIgmL,IAAU,CAAC1nJ,EAAK2nJ,EAAY12K,KAAYA,EAAS+uB,GAAO,KAAOknJ,IAASG,IAAarnJ,CAAG,CAAC,EAAI,CAAE,EAAEwnJ,IAKnGG,GAAc,CAAC3nJ,GAAO,CAACA,EAAI,WAAaiiJ,GAAUhxK,EAAQ,UAAW,CAAE,MAAO+uB,EAAK,WAAY,EAAI,CAAE,EAAI/uB,EACzG+uB,CACF,GAGIywJ,IAAelJ,IAAW,CAC5B,oEAAoEt0G,EAAS,CAE3E,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAQ,YAAcy9G,EACtBz9G,EAAQ,MAAQy9G,EAChBz9G,EAAQ,gBAAkB09G,EAC1B19G,EAAQ,mBAAqB29G,EAC7B39G,EAAQ,UAAY29G,EACpB39G,EAAQ,eAAiB+sG,EACzB/sG,EAAQ,mBAAqB29G,EAC7B39G,EAAQ,UAAY29G,EACpB,IAAIC,EAAmB,wCACnBC,EAAoB,kCACpBC,EAAoB,sFACpBC,EAAkB,kCAClBC,EAAe,UACfC,EAAa,OAAO,UAAU,SAC9BC,GAA8B,IAAM,CACtC,MAAM9kM,EAAI,UAAW,CAC3B,EACM,OAAAA,EAAE,UAA4B,OAAO,OAAO,IAAI,EACzCA,CACb,KACI,SAASqkM,EAAYr/K,EAAK0B,EAAS,CACjC,MAAMmH,EAAM,IAAIi3K,EACVt8J,EAAMxjB,EAAI,OAChB,GAAIwjB,EAAM,EACR,OAAO3a,EACT,MAAMk3K,EAAMr+K,GAAS,QAAUq5K,EAC/B,IAAItvK,EAAQ,EACZ,EAAG,CACD,MAAMu0K,EAAQC,EAAQjgL,EAAKyL,EAAO+X,CAAG,EACrC,GAAIw8J,IAAU,GACZ,MACF,MAAME,EAASC,EAASngL,EAAKyL,EAAO+X,CAAG,EACvC,GAAIw8J,EAAQE,EAAQ,CAClBz0K,EAAQzL,EAAI,YAAY,IAAKggL,EAAQ,CAAC,EAAI,EAC1C,QACD,CACD,MAAMv5K,EAAM25K,EAAWpgL,EAAKyL,EAAOu0K,CAAK,EACpCn3K,EAAIpC,CAAG,IAAM,SACfoC,EAAIpC,CAAG,EAAIs5K,EAAIK,EAAWpgL,EAAKggL,EAAQ,EAAGE,CAAM,CAAC,GAEnDz0K,EAAQy0K,EAAS,CACzB,OAAez0K,EAAQ+X,GACjB,OAAO3a,CACR,CACD,SAASy2K,EAAgBe,EAAS3+K,EAAS,CACzC,MAAM4+K,EAAM5+K,GAAS,QAAU,mBACzB6+K,EAAgB,CAAA,EACtB,UAAWx6K,KAAQ,OAAO,KAAKs6K,CAAO,EAAG,CACvC,MAAM9gL,EAAM8gL,EAAQt6K,CAAI,EACxB,GAAIxG,IAAQ,OACV,SACF,GAAI,CAACigL,EAAiB,KAAKz5K,CAAI,EAC7B,MAAM,IAAI,UAAU,2BAA2BA,CAAI,EAAE,EAEvD,MAAMQ,EAAQ+5K,EAAI/gL,CAAG,EACrB,GAAI,CAACkgL,EAAkB,KAAKl5K,CAAK,EAC/B,MAAM,IAAI,UAAU,0BAA0BhH,CAAG,EAAE,EAErDghL,EAAc,KAAK,GAAGx6K,CAAI,IAAIQ,CAAK,EAAE,CACtC,CACD,OAAOg6K,EAAc,KAAK,IAAI,CAC/B,CACD,SAAShB,EAAmBiB,EAAOC,EAAMC,EAAO,CAC9C,MAAML,EAAU,OAAOG,GAAU,SAAWA,EAAQ,CAAE,GAAGE,EAAO,KAAMF,EAAO,MAAO,OAAOC,CAAI,CAAC,EAE1FH,GADU,OAAOG,GAAS,SAAWA,EAAOC,IAC7B,QAAU,mBAC/B,GAAI,CAAClB,EAAiB,KAAKa,EAAQ,IAAI,EACrC,MAAM,IAAI,UAAU,6BAA6BA,EAAQ,IAAI,EAAE,EAEjE,MAAM95K,EAAQ85K,EAAQ,MAAQC,EAAID,EAAQ,KAAK,EAAI,GACnD,GAAI,CAACZ,EAAkB,KAAKl5K,CAAK,EAC/B,MAAM,IAAI,UAAU,4BAA4B85K,EAAQ,KAAK,EAAE,EAEjE,IAAIrgL,EAAMqgL,EAAQ,KAAO,IAAM95K,EAC/B,GAAI85K,EAAQ,SAAW,OAAQ,CAC7B,GAAI,CAAC,OAAO,UAAUA,EAAQ,MAAM,EAClC,MAAM,IAAI,UAAU,6BAA6BA,EAAQ,MAAM,EAAE,EAEnErgL,GAAO,aAAeqgL,EAAQ,MAC/B,CACD,GAAIA,EAAQ,OAAQ,CAClB,GAAI,CAACX,EAAkB,KAAKW,EAAQ,MAAM,EACxC,MAAM,IAAI,UAAU,6BAA6BA,EAAQ,MAAM,EAAE,EAEnErgL,GAAO,YAAcqgL,EAAQ,MAC9B,CACD,GAAIA,EAAQ,KAAM,CAChB,GAAI,CAACV,EAAgB,KAAKU,EAAQ,IAAI,EACpC,MAAM,IAAI,UAAU,2BAA2BA,EAAQ,IAAI,EAAE,EAE/DrgL,GAAO,UAAYqgL,EAAQ,IAC5B,CACD,GAAIA,EAAQ,QAAS,CACnB,GAAI,CAACp2B,EAAOo2B,EAAQ,OAAO,GAAK,CAAC,OAAO,SAASA,EAAQ,QAAQ,QAAS,CAAA,EACxE,MAAM,IAAI,UAAU,8BAA8BA,EAAQ,OAAO,EAAE,EAErErgL,GAAO,aAAeqgL,EAAQ,QAAQ,YAAW,CAClD,CAUD,GATIA,EAAQ,WACVrgL,GAAO,cAELqgL,EAAQ,SACVrgL,GAAO,YAELqgL,EAAQ,cACVrgL,GAAO,iBAELqgL,EAAQ,SAEV,OADiB,OAAOA,EAAQ,UAAa,SAAWA,EAAQ,SAAS,cAAgB,OACzE,CACd,IAAK,MACHrgL,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,IAAK,OACHA,GAAO,kBACP,MACF,QACE,MAAM,IAAI,UAAU,+BAA+BqgL,EAAQ,QAAQ,EAAE,CACxE,CAEH,GAAIA,EAAQ,SAEV,OADiB,OAAOA,EAAQ,UAAa,SAAWA,EAAQ,SAAS,YAAW,EAAKA,EAAQ,SACjF,CACd,IAAK,GACL,IAAK,SACHrgL,GAAO,oBACP,MACF,IAAK,MACHA,GAAO,iBACP,MACF,IAAK,OACHA,GAAO,kBACP,MACF,QACE,MAAM,IAAI,UAAU,+BAA+BqgL,EAAQ,QAAQ,EAAE,CACxE,CAEH,OAAOrgL,CACR,CACD,SAAS2uK,EAAe3uK,EAAK0B,EAAS,CACpC,MAAMq+K,EAAMr+K,GAAS,QAAUq5K,EACzBv3J,EAAMxjB,EAAI,OACVkgL,EAASC,EAASngL,EAAK,EAAGwjB,CAAG,EAC7Bw8J,EAAQC,EAAQjgL,EAAK,EAAGkgL,CAAM,EAC9BS,EAAYX,IAAU,GAAK,CAAE,KAAM,GAAI,MAAOD,EAAIK,EAAWpgL,EAAK,EAAGkgL,CAAM,CAAC,CAAC,EAAK,CACtF,KAAME,EAAWpgL,EAAK,EAAGggL,CAAK,EAC9B,MAAOD,EAAIK,EAAWpgL,EAAKggL,EAAQ,EAAGE,CAAM,CAAC,CACrD,EACM,IAAIz0K,EAAQy0K,EAAS,EACrB,KAAOz0K,EAAQ+X,GAAK,CAClB,MAAMo9J,EAAUT,EAASngL,EAAKyL,EAAO+X,CAAG,EAClCq9J,EAASZ,EAAQjgL,EAAKyL,EAAOm1K,CAAO,EACpC73K,EAAO83K,IAAW,GAAKT,EAAWpgL,EAAKyL,EAAOm1K,CAAO,EAAIR,EAAWpgL,EAAKyL,EAAOo1K,CAAM,EACtFthL,EAAMshL,IAAW,GAAK,OAAST,EAAWpgL,EAAK6gL,EAAS,EAAGD,CAAO,EACxE,OAAQ73K,EAAK,YAAa,EAAA,CACxB,IAAK,WACH43K,EAAU,SAAW,GACrB,MACF,IAAK,SACHA,EAAU,OAAS,GACnB,MACF,IAAK,cACHA,EAAU,YAAc,GACxB,MACF,IAAK,SACHA,EAAU,OAASphL,EACnB,MACF,IAAK,OACHohL,EAAU,KAAOphL,EACjB,MACF,IAAK,UACCA,GAAOqgL,EAAa,KAAKrgL,CAAG,IAC9BohL,EAAU,OAAS,OAAOphL,CAAG,GAC/B,MACF,IAAK,UACH,GAAI,CAACA,EACH,MACF,MAAMuhL,EAAO,IAAI,KAAKvhL,CAAG,EACrB,OAAO,SAASuhL,EAAK,QAAO,CAAE,IAChCH,EAAU,QAAUG,GACtB,MACF,IAAK,WACH,GAAI,CAACvhL,EACH,MACF,MAAMwhL,GAAWxhL,EAAI,eACjBwhL,KAAa,OAASA,KAAa,UAAYA,KAAa,UAC9DJ,EAAU,SAAWI,IAEvB,MACF,IAAK,WACH,GAAI,CAACxhL,EACH,MACF,MAAMyhL,GAAWzhL,EAAI,eACjByhL,KAAa,OAASA,KAAa,UAAYA,KAAa,UAC9DL,EAAU,SAAWK,IAEvB,KACH,CACDv1K,EAAQm1K,EAAU,CACnB,CACD,OAAOD,CACR,CACD,SAASR,EAASngL,EAAKowB,EAAK5M,EAAK,CAC/B,MAAM/X,EAAQzL,EAAI,QAAQ,IAAKowB,CAAG,EAClC,OAAO3kB,IAAU,GAAK+X,EAAM/X,CAC7B,CACD,SAASw0K,EAAQjgL,EAAKowB,EAAKtM,EAAK,CAC9B,MAAMrY,EAAQzL,EAAI,QAAQ,IAAKowB,CAAG,EAClC,OAAO3kB,EAAQqY,EAAMrY,EAAQ,EAC9B,CACD,SAAS20K,EAAWpgL,EAAKowB,EAAKtM,EAAK,CACjC,IAAI9gB,EAAQotB,EACR1wB,EAAMokB,EACV,EAAG,CACD,MAAM86B,EAAO5+C,EAAI,WAAWgD,CAAK,EACjC,GAAI47C,IAAS,IAAMA,IAAS,EAC1B,KACV,OAAe,EAAE57C,EAAQtD,GACnB,KAAOA,EAAMsD,GAAO,CAClB,MAAM47C,EAAO5+C,EAAI,WAAWN,EAAM,CAAC,EACnC,GAAIk/C,IAAS,IAAMA,IAAS,EAC1B,MACFl/C,GACD,CACD,OAAOM,EAAI,MAAMgD,EAAOtD,CAAG,CAC5B,CACD,SAASq7K,EAAO/6K,EAAK,CACnB,GAAIA,EAAI,QAAQ,GAAG,IAAM,GACvB,OAAOA,EACT,GAAI,CACF,OAAO,mBAAmBA,CAAG,CAC9B,MAAW,CACV,OAAOA,CACR,CACF,CACD,SAASiqJ,EAAO1qJ,EAAK,CACnB,OAAOsgL,EAAW,KAAKtgL,CAAG,IAAM,eACjC,CACF,CACH,CAAC,EAGG0hL,GAAY5K,IAAQ+I,IAAc,EAAE,CAAC,EACrCrW,GAASkY,GAAU,SAAWA,GAC9Bz3C,IAAQu/B,GAAO,MACfjZ,IAAYiZ,GAAO,UC5QvB,SAASmY,IAAsBC,EAAUC,EAAO,CAC5C,OAAID,EAAS,SAASC,CAAK,EACfD,EAAS,SAAWC,EAAM,QAC9BD,EAASA,EAAS,OAASC,EAAM,OAAS,CAAC,IAAM,IAElD,EACX,CAIA,SAASC,IAAwBF,EAAUG,EAAc,CAerD,MAAMC,EAAoBJ,EAAS,OAASG,EAAa,OAAS,EAC5DE,EAA2BL,EAAS,YAAY,IAAKI,CAAiB,EAE5E,OAAIC,IAA6B,GACtBL,EAGJA,EAAS,MAAMK,EAA2B,CAAC,CACtD,CAIe,SAASC,IAAU7G,EAAQuG,EAAUz/K,EAAS,CAEzD,GAAIA,EAAQ,aAAe,KAAM,CAC7B,MAAMggL,EAAahgL,EAAQ,WAC3B,UAAW0/K,KAASM,EAChB,GAAoBR,IAAsBC,EAAUC,CAAK,EACrD,OAAOA,CAGlB,CACD,IAAIO,EAAsB,EAC1B,GAAIR,EAAS,WAAW,GAAG,EACvB,KAAOQ,EAAsBR,EAAS,QAClCA,EAASQ,CAAmB,IAAM,KAClCA,GAAuB,EAO/B,OAAI/G,EAAO,SAAWuG,EAAS,OAASQ,EAC7B,KAOYN,IAAwBF,EAAUvG,CAAM,CACnE,CCzEe,SAASgH,IAAuB/Y,EAAQ+R,EAAQ,CAI3D,OAAO/R,EAAO,MAAM,EAAG,CAAC+R,EAAO,OAAS,CAAC,CAC7C,CCLA,MAAMiH,GAAgB,YAUf,IAAIC,GAA6B,GAUxC,SAASC,GAAoBnjI,EAAM,CAC/B,OAASA,GAAQ,IAAMA,GAAQ,KAC1BA,GAAQ,IAAMA,GAAQ,IACvBA,EAAO,KACNA,GAAQ,IAAMA,GAAQ,IACvBA,IAAS,IACTA,IAAS,EAEjB,CAUA,SAASojI,GAAiBl+K,EAAKm+K,EAAaC,EAAY,CACpD,MAAMljL,EAASkjL,EAAaD,EACtBE,EAAKr+K,EAAI,WAAWm+K,CAAW,EAAI,GACzC,GAAIjjL,IAAW,EACX,OAAOmjL,IAAO,MAAQr+K,EAAI,WAAWm+K,EAAc,CAAC,EAAI,MAAQ,IAAM,EAAI,EAEzE,GAAIjjL,IAAW,EAAG,CACnB,MAAMohC,EAAKt8B,EAAI,WAAWm+K,EAAc,CAAC,EAAI,GACvCplM,EAAKinB,EAAI,WAAWm+K,EAAc,CAAC,EAAI,GAG7C,OAFIE,IAAO,KAAO/hJ,IAAO,KAAOvjD,IAAO,KAEnCslM,IAAO,KAAO/hJ,IAAO,KAAOvjD,IAAO,IAC5B,EACJ,CACV,SACQmiB,IAAW,EAAG,CACnB,MAAMohC,EAAKt8B,EAAI,WAAWm+K,EAAc,CAAC,EAAI,GACvCplM,EAAKinB,EAAI,WAAWm+K,EAAc,CAAC,EAAI,GACvC13L,EAAKuZ,EAAI,WAAWm+K,EAAc,CAAC,EAAI,GAC7C,OAAIE,IAAO,KAAO/hJ,IAAO,KAAOvjD,IAAO,KAAO0N,IAAO,IAC1C,EACP43L,IAAO,KAAO/hJ,IAAO,KAAOvjD,IAAO,KAAO0N,IAAO,IAC1C,EACJ,CACV,SACQyU,IAAW,EAChB,OAAOmjL,IAAO,MACTr+K,EAAI,WAAWm+K,EAAc,CAAC,EAAI,MAAQ,MAC1Cn+K,EAAI,WAAWm+K,EAAc,CAAC,EAAI,MAAQ,MAC1Cn+K,EAAI,WAAWm+K,EAAc,CAAC,EAAI,MAAQ,MAC1Cn+K,EAAI,WAAWm+K,EAAc,CAAC,EAAI,MAAQ,IACzC,EACA,EAEV,MAAO,EACX,CAgBe,SAASG,GAAgBt+K,EAAKu+K,EAAoBC,EAAW,GAAO,CAC/E,IAAIt/K,EAAQ,EACRtD,EAAMoE,EAAI,OACVy+K,EAAW,GACXC,EAAY,GAEhB,GADAV,GAA6B,GACzB,CAACO,EAAoB,CAErB,GAAIv+K,EAAI,WAAW,OAAO,EACtB,OAAO,KAIX,KAAOd,EAAQc,EAAI,QAAUA,EAAI,WAAWd,CAAK,GAAK,IAClDA,GAAS,EAEb,KAAOtD,EAAMsD,EAAQ,GAAKc,EAAI,WAAWpE,EAAM,CAAC,GAAK,IACjDA,GAAO,EAEX,GAAIoE,EAAI,WAAWd,CAAK,IAAM,IAC1Bc,EAAI,WAAWd,EAAQ,CAAC,IAAM,GAE9BA,GAAS,MAER,CACD,MAAMy/K,EAAkB3+K,EAAI,QAAQ,KAAMd,CAAK,EAC/C,GAAIy/K,IAAoB,GAAI,CAExB,MAAMC,EAAUV,GAAiBl+K,EAAKd,EAAOy/K,CAAe,EAC5D,GAAIC,IAAY,EAKZ,IAFAF,EAAY,GACZx/K,EAAQy/K,EAAkB,EACnB3+K,EAAI,WAAWd,CAAK,IAAM,IAC7Bc,EAAI,WAAWd,CAAK,IAAM,IAC1BA,GAAS,UAGR0/K,IAAY,EAAG,CAGpBF,EAAY,GACZx/K,EAAQy/K,EAAkB,EAC1B,IAAIE,EAAU,EACd,MAAQ7+K,EAAI,WAAWd,CAAK,IAAM,IAAMc,EAAI,WAAWd,CAAK,IAAM,KAC9D2/K,EAAU,GACV3/K,GAAS,EACT2/K,GAAW,EAEf,GAAIA,EAAU,EACV,OAAO,IAEd,KACI,CAGD,QAAS3+M,EAAIg/B,EAAOh/B,EAAIy+M,EAAiBz+M,GAAK,EAAG,CAC7C,MAAM46E,EAAO96C,EAAI,WAAW9/B,CAAC,EAAI,GACjC,GAAI,EAAI46E,GAAQ,IAAMA,GAAQ,KACzBA,GAAQ,IAAMA,GAAQ,IACvBA,IAAS,IACTA,IAAS,IACTA,IAAS,IACV,CACC,MAAM99C,EAAMgD,EAAI,WAAW9/B,CAAC,EAC5B,OAAI88B,IAAQ,GAAKA,IAAQ,IAAMA,IAAQ,GAC5BshL,GAAgBt+K,EAAI,QAAQ+9K,GAAe,EAAE,EAAGQ,EAAoBC,CAAQ,EAEhF,IACV,CACJ,CAGD,GAAIx+K,EAAI,WAAW2+K,EAAkB,CAAC,IAAM,GACxCz/K,EAAQy/K,EAAkB,MAG1B,QAAO,IAEd,CACJ,SACQ3+K,EAAI,WAAWd,CAAK,IAAM,GAAc,CAM7C,IAAI4/K,EAAe,GACnB,QAAS5+M,EAAIg/B,EAAOh/B,EAAI07B,EAAK17B,GAAK,EAAG,CACjC,MAAM46E,EAAO96C,EAAI,WAAW9/B,CAAC,EAC7B,GAAI46E,IAAS,GAAKA,IAAS,IAAMA,IAAS,GACtC,OAAOwjI,GAAgBt+K,EAAI,QAAQ+9K,GAAe,EAAE,EAAGQ,EAAoBC,CAAQ,EAEvF,GAAI1jI,IAAS,GAAc,CACvBgkI,EAAe5+M,EACf,KACH,CACD,GAAI46E,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GACtD,KAEP,CACD,GAAIgkI,IAAiB,GAAI,CAGrB,IAAIC,EAAgB,GACpB,QAAS7+M,EAAI4+M,EAAe,EAAG5+M,EAAI07B,EAAK17B,GAAK,EAAG,CAC5C,MAAM46E,EAAO96C,EAAI,WAAW9/B,CAAC,EAC7B,GAAI46E,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GACtD,MAEJ,GAAIA,IAAS,GAAc,CACvBikI,EAAgB,GAChB,KACH,CACJ,CACD,GAAI,CAACA,EAAe,CAGhB,IAAIC,EAAY,GACZ9+M,EAAI4+M,EAAe,EACvB,KAAO5+M,EAAI07B,EAAK17B,GAAK,EAAG,CACpB,MAAM46E,EAAO96C,EAAI,WAAW9/B,CAAC,EAC7B,GAAI46E,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GACtD,MAEJ,GAAIA,EAAO,IAAgBA,EAAO,GAAc,CAC5CkkI,EAAY,GACZ,KACH,CACJ,CAID,GAHI9+M,IAAM4+M,EAAe,IACrBE,EAAY,IAEZ,CAACA,EAAW,CACZ,MAAMJ,EAAUV,GAAiBl+K,EAAKd,EAAO4/K,CAAY,EACzD,GAAIF,IAAY,EAAG,CAMf,IAAIK,EAAa,GACjB,QAAS74L,EAAI04L,EAAe,EAAG14L,EAAIwV,EAAKxV,GAAK,EAAG,CAC5C,MAAM00D,EAAO96C,EAAI,WAAW5Z,CAAC,EAC7B,GAAI00D,IAAS,IACTA,IAAS,IACTA,IAAS,IACTA,IAAS,GACT,MAEJ,GAAIA,IAAS,GAAc,CACvBmkI,EAAa,GACb,KACH,CACJ,CACD,GAAI,CAACA,EACD,OAAO,IAEd,SAEGP,EAAY,GACZx/K,EAAQ4/K,EAAe,EACnBF,IAAY,EAAG,CAEf,IAAIC,EAAU,EACd,MAAQ7+K,EAAI,WAAWd,CAAK,IAAM,IAC9Bc,EAAI,WAAWd,CAAK,IAAM,KAC1B2/K,EAAU,GACV3/K,GAAS,EACT2/K,GAAW,EAEf,GAAIA,EAAU,EACV,OAAO,IAEd,KAEG,MAAO7+K,EAAI,WAAWd,CAAK,IAAM,IAC7Bc,EAAI,WAAWd,CAAK,IAAM,IAC1BA,GAAS,CAIxB,CACJ,CACJ,CACJ,CACJ,CAaD,IAAIggL,EAAoB,GACpBC,EAAwB,GACxBC,EAAc,GACdC,EAAoB,GACpBC,EAAa,GACbC,EAASf,EACTgB,EAAWtgL,EAAQ,EACnBugL,EAAY,GAChB,GAAIjB,GAAYt/K,EAAQtD,EAAK,CAEzB,MAAMyiL,EAAKr+K,EAAI,WAAWd,CAAK,GAC3B,EACa++K,GAAoBI,CAAE,GACnCA,IAAO,IACPA,IAAO,KACPA,IAAO,MACPkB,EAAS,GAEhB,CACD,QAASr/M,EAAIg/B,EAAOh/B,EAAI07B,EAAK17B,GAAK,EAAG,CACjC,MAAM46E,EAAO96C,EAAI,WAAW9/B,CAAC,EAC7B,GAAI46E,EAAO,GACP,GAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GAAI,CAC3Cl/C,EAAM17B,EACN,KACH,MACQ46E,IAAS,IACVukI,IAAsB,KACtBA,EAAoBn/M,GAExBk/M,EAAcl/M,GAET46E,IAAS,GAAKA,IAAS,IAAMA,IAAS,GAC3CwkI,EAAa,GAERd,IACD1jI,IAAS,KACL56E,EAAIs/M,EAAW,IAAMC,IAAc,IAAMA,IAAc,MACvDF,EAAS,IAEbC,EAAWt/M,IAEN46E,EAAO,IAAMA,EAAO,MAMrBA,IAAS,IAAM2kI,IAAc,MAC7BF,EAAS,aAKhBb,GAAa5jI,IAAS,GAAc,CACzCl/C,EAAM17B,EACN,KACH,MACQ46E,IAAS,IACdokI,EAAoBh/M,EACpBm/M,EAAoB,IAEfvkI,IAAS,GACdqkI,EAAwBj/M,EAEnB46E,GAAQ,IAAMA,GAAQ,GAC3B2jI,EAAW,GAEND,GAAY,CAAkBP,GAAoBnjI,CAAI,IAE3DykI,EAAS,IAETf,IACAiB,EAAY3kI,EAEnB,CAED,GAAIwkI,EACA,OAAOhB,GAAgBt+K,EAAI,QAAQ+9K,GAAe,EAAE,EAAGQ,EAAoBC,CAAQ,EAQvF,GALIU,IAAsB,IACtBA,GAAqBhgL,GACrBggL,EAAoBtjL,IACpBsD,EAAQggL,EAAoB,GAE5Bl/K,EAAI,WAAWd,CAAK,IAAM,GAE1B,OAAIigL,IAA0B,GACnBn/K,EAAI,MAAMd,EAAQ,EAAGigL,CAAqB,EAAE,cAEhD,KAaX,GAXSC,IAAgB,IACrBA,EAAclgL,GACdkgL,EAAcxjL,GAIdyjL,IAAsBD,IACtBxjL,EAAMwjL,GAINlgL,GAAStD,EACT,OAAO,KAaP4iL,GACAe,GACAL,IAAsB,IACtBE,IAAgB,IAChBD,IAA0B,IAC1Bn/K,EAAI,WAAWpE,EAAM,CAAC,IAAM,IAC5BA,EAAMsD,GAAS,KACftD,EAAM4jL,EAAW,GAAK,IACtBC,IAAc,KACdzB,GAA6B,GAEpC,CAED,KAAOpiL,EAAMsD,EAAQ,GAAKc,EAAI,WAAWpE,EAAM,CAAC,IAAM,IAClDA,GAAO,EAEX,MAAMyhL,EAAWn+K,IAAU,GAAKtD,IAAQoE,EAAI,OAASA,EAAI,MAAMd,EAAOtD,CAAG,EAAIoE,EAC7E,OAAIy+K,EACOpB,EAAS,cAEbA,CACX,CC7aA,SAASqC,IAAerC,EAAU,CAM9B,GAJIA,EAAS,OAAS,GAIlBA,EAAS,OAAS,GAClB,MAAO,GAEX,IAAIsC,EAAe,EACnB,QAASz/M,EAAI,EAAGA,EAAIm9M,EAAS,OAAQn9M,GAAK,EAAG,CACzC,MAAM46E,EAAOuiI,EAAS,WAAWn9M,CAAC,EAClC,GAAI46E,IAAS,GACT6kI,GAAgB,UAEX7kI,EAAO,IAAgBA,EAAO,GACnC,MAAO,EAEd,CACD,OAAQ6kI,IAAiB,GACrBtC,EAAS,WAAW,CAAC,IAAM,IAC3BA,EAAS,WAAWA,EAAS,OAAS,CAAC,IAAM,EACrD,CAIA,SAASuC,IAAevC,EAAU,CAC9B,GAAIA,EAAS,OAAS,EAClB,MAAO,GAEX,IAAIn+K,EAAQm+K,EAAS,WAAW,GAAG,EAAI,EAAI,EACvCzhL,EAAMyhL,EAAS,OAOnB,GANIA,EAASzhL,EAAM,CAAC,IAAM,MACtBA,GAAO,GAKPA,EAAMsD,EAAQ,GACd,MAAO,GAEX,IAAI2gL,EAAW,GACf,KAAO3gL,EAAQtD,EAAKsD,GAAS,EAAG,CAC5B,MAAM47C,EAAOuiI,EAAS,WAAWn+K,CAAK,EACtC,GAAI47C,IAAS,GACT+kI,EAAW,WAEN,EAAI/kI,GAAQ,IAAMA,GAAQ,IAC9BA,GAAQ,IAAMA,GAAQ,KACtBA,GAAQ,IAAMA,GAAQ,IAEvB,MAAO,EAEd,CACD,OAAO+kI,CACX,CAMe,SAASC,IAAKzC,EAAU,CACnC,OAAOuC,IAAevC,CAAQ,GAAKqC,IAAerC,CAAQ,CAC9D,CCzCA,MAAM0C,IAAsB,CACxB,OACA,YACA,UACA,UACA,cACA,cACA,cACA,QACA,QACA,MACA,YACA,gBACA,gBACA,eACA,cACA,UACJ,EAKe,SAASC,IAAa3C,EAAU,CAC3C,UAAWp7K,KAAQ89K,IAIf,GAAI1C,EAAS,SAASp7K,CAAI,IACrBo7K,EAAS,SAAWp7K,EAAK,QACtBo7K,EAAS,WAAWA,EAAS,OAASp7K,EAAK,OAAS,CAAC,IAAM,IAC/D,MAAO,GAGf,MAAO,EACX,CC/CA,SAASg+K,GAAanlI,EAAM,CACxB,OAASA,GAAQ,IAAMA,GAAQ,KAASA,GAAQ,IAAMA,GAAQ,IAAOA,EAAO,GAChF,CAOe,SAAQolI,GAAE7C,EAAU,CAO/B,GANIA,EAAS,OAAS,KAGlBA,EAAS,SAAW,GAIR,CAAC4C,GAAa5C,EAAS,WAAW,CAAC,CAAC,GAChDA,EAAS,WAAW,CAAC,IAAM,IAC3BA,EAAS,WAAW,CAAC,IAAM,GAE3B,MAAO,GAGX,IAAI8C,EAAe,GACfC,EAAe,GACnB,MAAM1gK,EAAM29J,EAAS,OACrB,QAASn9M,EAAI,EAAGA,EAAIw/C,EAAKx/C,GAAK,EAAG,CAC7B,MAAM46E,EAAOuiI,EAAS,WAAWn9M,CAAC,EAClC,GAAI46E,IAAS,GAAc,CACvB,GAEA56E,EAAIigN,EAAe,IAEfC,IAAiB,IAIjBA,IAAiB,GACjB,MAAO,GAEXD,EAAejgN,CAClB,SAGD,EAAmB+/M,GAAanlI,CAAI,GAAKA,IAAS,IAAMA,IAAS,KAK5DA,IAAS,IAAMslI,IAAiB,GACjC,MAAO,GAEXA,EAAetlI,CAClB,CACD,OAEAp7B,EAAMygK,EAAe,GAAK,IAItBC,IAAiB,EACzB,CC3EA,SAASC,GAAgB,CAAE,kBAAAC,EAAoB,GAAM,oBAAAC,EAAsB,GAAO,SAAAC,EAAW,GAAM,iBAAAC,EAAmB,GAAO,gBAAAnC,EAAkB,GAAM,YAAAoC,EAAc,GAAM,WAAA9C,EAAa,KAAM,iBAAA+C,EAAmB,IAAS,CACpN,MAAO,CACH,kBAAAL,EACA,oBAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,gBAAAnC,EACA,YAAAoC,EACA,WAAA9C,EACA,iBAAA+C,CACR,CACA,CACA,MAAMC,IAAkCP,GAAgB,CAAA,CAAE,EACnD,SAASQ,IAAYjjL,EAAS,CACjC,OAAIA,IAAY,OACLgjL,IAEYP,GAAgBziL,CAAO,CAClD,CCfe,SAASkjL,IAAazD,EAAUtY,EAAQ,CAEnD,OAAIA,EAAO,SAAWsY,EAAS,OACpB,GAEJA,EAAS,MAAM,EAAG,CAACtY,EAAO,OAAS,CAAC,CAC/C,CCIO,SAASgc,KAAiB,CAC7B,MAAO,CACH,OAAQ,KACR,oBAAqB,KACrB,SAAU,KACV,QAAS,KACT,KAAM,KACN,UAAW,KACX,aAAc,KACd,aAAc,KACd,UAAW,IACnB,CACA,CACO,SAASC,IAAYrkL,EAAQ,CAChCA,EAAO,OAAS,KAChBA,EAAO,oBAAsB,KAC7BA,EAAO,SAAW,KAClBA,EAAO,QAAU,KACjBA,EAAO,KAAO,KACdA,EAAO,UAAY,KACnBA,EAAO,aAAe,KACtBA,EAAO,aAAe,KACtBA,EAAO,UAAY,IACvB,CACO,SAASskL,IAAUjhL,EAAK+F,EAAMm7K,EAAcC,EAAgBxkL,EAAQ,CACvE,MAAMiB,EAA0BijL,IAAYM,CAAc,EAI1D,GAAI,OAAOnhL,GAAQ,SACf,OAAOrD,EAeX,IAAIykL,EAAa,GAYjB,OAXKxjL,EAAQ,gBAGJA,EAAQ,aACbwjL,EAAalB,GAAgBlgL,CAAG,EAChCrD,EAAO,SAAW2hL,GAAgBt+K,EAAKohL,EAAYxjL,EAAQ,gBAAgB,GAG3EjB,EAAO,SAAW2hL,GAAgBt+K,EAAK,GAAOpC,EAAQ,gBAAgB,EAPtEjB,EAAO,SAAWqD,EAUlBpC,EAAQ,UAAYjB,EAAO,WAAa,OACxCA,EAAO,KAAOmjL,IAAKnjL,EAAO,QAAQ,EAC9BA,EAAO,MACAA,EAOXiB,EAAQ,kBACRA,EAAQ,iBACRjB,EAAO,WAAa,MAGpB,EAAEykL,GAAczkL,EAAO,WAAaqD,IAGpC,CAACg+K,IACD,CAACkC,GAAgBvjL,EAAO,QAAQ,GAChCA,EAAO,SAAW,KACXA,IAEPoJ,IAAS,GAAyBpJ,EAAO,WAAa,OAOtDoJ,IAAS,GAAoBnI,EAAQ,mBACrCjB,EAAO,aAAeqjL,IAAarjL,EAAO,QAAQ,GAGtDukL,EAAavkL,EAAO,SAAUiB,EAASjB,CAAM,EACzCoJ,IAAS,GAA8BpJ,EAAO,eAAiB,QAInEA,EAAO,OAASghL,IAAUhhL,EAAO,aAAcA,EAAO,SAAUiB,CAAO,EACnEmI,IAAS,GAAuBpJ,EAAO,SAAW,QAItDA,EAAO,UAAYmkL,IAAankL,EAAO,SAAUA,EAAO,MAAM,EAC1DoJ,IAAS,KAIbpJ,EAAO,oBAAsBmhL,IAAuBnhL,EAAO,OAAQA,EAAO,YAAY,GAC/EA,EACX,CCzHe,SAAA0kL,IAAUhE,EAAUz/K,EAAS4oB,EAAK,CAG7C,GAAI,CAAC5oB,EAAQ,qBAAuBy/K,EAAS,OAAS,EAAG,CACrD,MAAMrvK,EAAOqvK,EAAS,OAAS,EACzB52L,EAAK42L,EAAS,WAAWrvK,CAAI,EAC7Bj1B,EAAKskM,EAAS,WAAWrvK,EAAO,CAAC,EACjCsuB,EAAK+gJ,EAAS,WAAWrvK,EAAO,CAAC,EACjCqwK,EAAKhB,EAAS,WAAWrvK,EAAO,CAAC,EACvC,GAAIvnB,IAAO,KACP1N,IAAO,KACPujD,IAAO,IACP+hJ,IAAO,GACP,OAAA73J,EAAI,QAAU,GACdA,EAAI,UAAY,GAChBA,EAAI,aAAe,MACZ,GAEN,GAAI//B,IAAO,KACZ1N,IAAO,KACPujD,IAAO,KACP+hJ,IAAO,GACP,OAAA73J,EAAI,QAAU,GACdA,EAAI,UAAY,GAChBA,EAAI,aAAe,MACZ,GAEN,GAAI//B,IAAO,KACZ1N,IAAO,KACPujD,IAAO,KACP+hJ,IAAO,GACP,OAAA73J,EAAI,QAAU,GACdA,EAAI,UAAY,GAChBA,EAAI,aAAe,MACZ,GAEN,GAAI//B,IAAO,KACZ1N,IAAO,KACPujD,IAAO,KACP+hJ,IAAO,GACP,OAAA73J,EAAI,QAAU,GACdA,EAAI,UAAY,GAChBA,EAAI,aAAe,MACZ,GAEN,GAAI//B,IAAO,KACZ1N,IAAO,KACPujD,IAAO,KACP+hJ,IAAO,GACP,OAAA73J,EAAI,QAAU,GACdA,EAAI,UAAY,GAChBA,EAAI,aAAe,MACZ,GAEN,GAAI//B,IAAO,KACZ1N,IAAO,KACPujD,IAAO,GACP,OAAA9V,EAAI,QAAU,GACdA,EAAI,UAAY,GAChBA,EAAI,aAAe,KACZ,EAEd,CACD,MAAO,EACX,CC/DO,MAAM86J,GAA0B,IAAI,WAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAC/3DC,GAA0B,IAAI,YAAY,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,KAAK,CAAC,EACxlHC,GAA2B,IAAI,WAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,CAAC,CAAC,EAC9z/BC,GAA0B,IAAI,YAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,GAAI,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,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AAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,GAAS,IACT,GAAS,IACT,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,KACR,EAAQ,KACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,GAAS,IACT,GAAS,IACT,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,GAAS,IACT,GAAS,IACT,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,GAAS,IACT,GAAS,IACT,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,KACR,EAAQ,KACR,GAAS,IACT,GAAS,IACT,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,GAAS,IACT,GAAS,IACT,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,GAAS,IACT,GAAS,IACT,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,GAAS,IACT,GAAS,IACT,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,GAAS,IACT,GAAS,IACT,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,GAAS,IACT,GAAS,IACT,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,KACR,EAAQ,KACR,EAAQ,IACR,EAAQ,IACR,EAAQ,KACR,EAAQ,KACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,EAAQ,IACR,GAAS,IACT,GAAS,IACT,E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","x_google_ignoreList":[1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,419,420,421,422,423,424,427,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,662,663,664]}