commit 6e1b5407b74a80441ccbdff301d8e9a7af065a40 Author: Bruno Charest Date: Sat Sep 27 18:13:02 2025 -0400 first commit diff --git a/.angular/cache/20.3.2/app/.tsbuildinfo b/.angular/cache/20.3.2/app/.tsbuildinfo new file mode 100644 index 0000000..767026b --- /dev/null +++ b/.angular/cache/20.3.2/app/.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../index.ngtypecheck.ts","../../../../node_modules/@angular/core/graph.d.d.ts","../../../../node_modules/@angular/core/event_dispatcher.d.d.ts","../../../../node_modules/@angular/core/chrome_dev_tools_performance.d.d.ts","../../../../node_modules/rxjs/dist/types/internal/subscription.d.ts","../../../../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../../../../node_modules/rxjs/dist/types/internal/operator.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../../node_modules/rxjs/dist/types/internal/subject.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/notification.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../../../../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../../node_modules/rxjs/dist/types/index.d.ts","../../../../node_modules/@angular/core/effect.d.d.ts","../../../../node_modules/@angular/core/primitives/di/index.d.ts","../../../../node_modules/@angular/core/discovery.d.d.ts","../../../../node_modules/@angular/core/api.d.d.ts","../../../../node_modules/@angular/core/weak_ref.d.d.ts","../../../../node_modules/@angular/core/index.d.ts","../../../../node_modules/@angular/common/platform_location.d.d.ts","../../../../node_modules/@angular/common/common_module.d.d.ts","../../../../node_modules/@angular/common/xhr.d.d.ts","../../../../node_modules/@angular/common/index.d.ts","../../../../node_modules/@angular/platform-browser/browser.d.d.ts","../../../../node_modules/@angular/common/module.d.d.ts","../../../../node_modules/@angular/common/http/index.d.ts","../../../../node_modules/@angular/platform-browser/index.d.ts","../../../../node_modules/@angular/common/locales/fr.d.ts","../../../../src/app.component.ngtypecheck.ts","../../../../node_modules/@angular/forms/index.d.ts","../../../../src/services/vault.service.ngtypecheck.ts","../../../../src/types.ngtypecheck.ts","../../../../src/types/file-metadata.model.ngtypecheck.ts","../../../../src/types/file-metadata.model.ts","../../../../src/types.ts","../../../../src/services/vault.service.ts","../../../../src/services/markdown.service.ngtypecheck.ts","../../../../node_modules/highlight.js/types/index.d.ts","../../../../src/services/markdown.service.ts","../../../../src/components/file-explorer/file-explorer.component.ngtypecheck.ts","../../../../src/components/file-explorer/file-explorer.component.ts","../../../../src/components/note-viewer/note-viewer.component.ngtypecheck.ts","../../../../node_modules/@iconify/types/types.d.ts","../../../../node_modules/@iconify/utils/lib/colors/types.d.ts","../../../../node_modules/@iconify/utils/lib/colors/index.d.ts","../../../../node_modules/@iconify/utils/lib/colors/keywords.d.ts","../../../../node_modules/@iconify/utils/lib/css/types.d.ts","../../../../node_modules/@iconify/utils/lib/css/icon.d.ts","../../../../node_modules/@iconify/utils/lib/css/icons.d.ts","../../../../node_modules/@iconify/utils/lib/customisations/bool.d.ts","../../../../node_modules/@iconify/utils/lib/customisations/defaults.d.ts","../../../../node_modules/@iconify/utils/lib/customisations/flip.d.ts","../../../../node_modules/@iconify/utils/lib/customisations/merge.d.ts","../../../../node_modules/@iconify/utils/lib/customisations/rotate.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/cleanup.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/convert.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/format.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/parse.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/regex/create.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/replace/find.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/replace/replace.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/test/parse.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/data.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/test/components.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/test/name.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/test/similar.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/test/tree.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/test/missing.d.ts","../../../../node_modules/@iconify/utils/lib/emoji/test/variations.d.ts","../../../../node_modules/@iconify/utils/lib/icon-set/convert-info.d.ts","../../../../node_modules/@iconify/utils/lib/icon-set/expand.d.ts","../../../../node_modules/@iconify/utils/lib/icon-set/get-icon.d.ts","../../../../node_modules/@iconify/utils/lib/icon-set/get-icons.d.ts","../../../../node_modules/@iconify/utils/lib/icon-set/minify.d.ts","../../../../node_modules/@iconify/utils/lib/icon-set/parse.d.ts","../../../../node_modules/@iconify/utils/lib/icon-set/tree.d.ts","../../../../node_modules/@iconify/utils/lib/icon-set/validate-basic.d.ts","../../../../node_modules/@iconify/utils/lib/icon-set/validate.d.ts","../../../../node_modules/@iconify/utils/lib/icon/defaults.d.ts","../../../../node_modules/@iconify/utils/lib/icon/merge.d.ts","../../../../node_modules/@iconify/utils/lib/icon/name.d.ts","../../../../node_modules/@iconify/utils/lib/svg/viewbox.d.ts","../../../../node_modules/@iconify/utils/lib/icon/square.d.ts","../../../../node_modules/@iconify/utils/lib/icon/transformations.d.ts","../../../../node_modules/@iconify/utils/lib/svg/build.d.ts","../../../../node_modules/@iconify/utils/lib/svg/defs.d.ts","../../../../node_modules/@iconify/utils/lib/svg/id.d.ts","../../../../node_modules/@iconify/utils/lib/svg/size.d.ts","../../../../node_modules/@iconify/utils/lib/svg/encode-svg-for-css.d.ts","../../../../node_modules/@iconify/utils/lib/svg/trim.d.ts","../../../../node_modules/@iconify/utils/lib/svg/pretty.d.ts","../../../../node_modules/@iconify/utils/lib/svg/html.d.ts","../../../../node_modules/@iconify/utils/lib/svg/url.d.ts","../../../../node_modules/@iconify/utils/lib/svg/inner-html.d.ts","../../../../node_modules/@iconify/utils/lib/svg/parse.d.ts","../../../../node_modules/@antfu/utils/dist/index.d.mts","../../../../node_modules/@iconify/utils/lib/loader/types.d.ts","../../../../node_modules/@iconify/utils/lib/loader/utils.d.ts","../../../../node_modules/@iconify/utils/lib/loader/custom.d.ts","../../../../node_modules/@iconify/utils/lib/loader/modern.d.ts","../../../../node_modules/@iconify/utils/lib/loader/loader.d.ts","../../../../node_modules/@iconify/utils/lib/misc/strings.d.ts","../../../../node_modules/@iconify/utils/lib/misc/objects.d.ts","../../../../node_modules/@iconify/utils/lib/misc/title.d.ts","../../../../node_modules/@iconify/utils/lib/index.d.ts","../../../../node_modules/mermaid/dist/rendering-util/icons.d.ts","../../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../../node_modules/dompurify/dist/purify.es.d.mts","../../../../node_modules/mermaid/dist/config.type.d.ts","../../../../node_modules/@types/d3-array/index.d.ts","../../../../node_modules/@types/d3-selection/index.d.ts","../../../../node_modules/@types/d3-axis/index.d.ts","../../../../node_modules/@types/d3-brush/index.d.ts","../../../../node_modules/@types/d3-chord/index.d.ts","../../../../node_modules/@types/d3-color/index.d.ts","../../../../node_modules/@types/geojson/index.d.ts","../../../../node_modules/@types/d3-contour/index.d.ts","../../../../node_modules/@types/d3-delaunay/index.d.ts","../../../../node_modules/@types/d3-dispatch/index.d.ts","../../../../node_modules/@types/d3-drag/index.d.ts","../../../../node_modules/@types/d3-dsv/index.d.ts","../../../../node_modules/@types/d3-ease/index.d.ts","../../../../node_modules/@types/d3-fetch/index.d.ts","../../../../node_modules/@types/d3-force/index.d.ts","../../../../node_modules/@types/d3-format/index.d.ts","../../../../node_modules/@types/d3-geo/index.d.ts","../../../../node_modules/@types/d3-hierarchy/index.d.ts","../../../../node_modules/@types/d3-interpolate/index.d.ts","../../../../node_modules/@types/d3-path/index.d.ts","../../../../node_modules/@types/d3-polygon/index.d.ts","../../../../node_modules/@types/d3-quadtree/index.d.ts","../../../../node_modules/@types/d3-random/index.d.ts","../../../../node_modules/@types/d3-time/index.d.ts","../../../../node_modules/@types/d3-scale/index.d.ts","../../../../node_modules/@types/d3-scale-chromatic/index.d.ts","../../../../node_modules/@types/d3-shape/index.d.ts","../../../../node_modules/@types/d3-time-format/index.d.ts","../../../../node_modules/@types/d3-timer/index.d.ts","../../../../node_modules/@types/d3-transition/index.d.ts","../../../../node_modules/@types/d3-zoom/index.d.ts","../../../../node_modules/@types/d3/index.d.ts","../../../../node_modules/type-fest/source/primitive.d.ts","../../../../node_modules/type-fest/source/typed-array.d.ts","../../../../node_modules/type-fest/source/basic.d.ts","../../../../node_modules/type-fest/source/json-value.d.ts","../../../../node_modules/type-fest/source/characters.d.ts","../../../../node_modules/type-fest/source/union-to-intersection.d.ts","../../../../node_modules/type-fest/source/keys-of-union.d.ts","../../../../node_modules/type-fest/source/distributed-omit.d.ts","../../../../node_modules/type-fest/source/distributed-pick.d.ts","../../../../node_modules/type-fest/source/empty-object.d.ts","../../../../node_modules/type-fest/source/if-empty-object.d.ts","../../../../node_modules/type-fest/source/is-any.d.ts","../../../../node_modules/type-fest/source/is-optional-key-of.d.ts","../../../../node_modules/type-fest/source/optional-keys-of.d.ts","../../../../node_modules/type-fest/source/required-keys-of.d.ts","../../../../node_modules/type-fest/source/has-required-keys.d.ts","../../../../node_modules/type-fest/source/is-never.d.ts","../../../../node_modules/type-fest/source/if.d.ts","../../../../node_modules/type-fest/source/unknown-array.d.ts","../../../../node_modules/type-fest/source/internal/type.d.ts","../../../../node_modules/type-fest/source/internal/array.d.ts","../../../../node_modules/type-fest/source/internal/characters.d.ts","../../../../node_modules/type-fest/source/is-float.d.ts","../../../../node_modules/type-fest/source/is-integer.d.ts","../../../../node_modules/type-fest/source/numeric.d.ts","../../../../node_modules/tagged-tag/index.d.ts","../../../../node_modules/type-fest/source/tagged.d.ts","../../../../node_modules/type-fest/source/is-literal.d.ts","../../../../node_modules/type-fest/source/is-null.d.ts","../../../../node_modules/type-fest/source/is-unknown.d.ts","../../../../node_modules/type-fest/source/trim.d.ts","../../../../node_modules/type-fest/source/is-equal.d.ts","../../../../node_modules/type-fest/source/simplify.d.ts","../../../../node_modules/type-fest/source/omit-index-signature.d.ts","../../../../node_modules/type-fest/source/pick-index-signature.d.ts","../../../../node_modules/type-fest/source/merge.d.ts","../../../../node_modules/type-fest/source/internal/object.d.ts","../../../../node_modules/type-fest/source/or.d.ts","../../../../node_modules/type-fest/source/all-extend.d.ts","../../../../node_modules/type-fest/source/and.d.ts","../../../../node_modules/type-fest/source/greater-than.d.ts","../../../../node_modules/type-fest/source/greater-than-or-equal.d.ts","../../../../node_modules/type-fest/source/less-than.d.ts","../../../../node_modules/type-fest/source/internal/tuple.d.ts","../../../../node_modules/type-fest/source/internal/string.d.ts","../../../../node_modules/type-fest/source/internal/keys.d.ts","../../../../node_modules/type-fest/source/internal/numeric.d.ts","../../../../node_modules/type-fest/source/internal/index.d.ts","../../../../node_modules/type-fest/source/except.d.ts","../../../../node_modules/type-fest/source/require-at-least-one.d.ts","../../../../node_modules/type-fest/source/non-empty-object.d.ts","../../../../node_modules/type-fest/source/non-empty-string.d.ts","../../../../node_modules/type-fest/source/unknown-record.d.ts","../../../../node_modules/type-fest/source/unknown-set.d.ts","../../../../node_modules/type-fest/source/unknown-map.d.ts","../../../../node_modules/type-fest/source/tagged-union.d.ts","../../../../node_modules/type-fest/source/writable.d.ts","../../../../node_modules/type-fest/source/writable-deep.d.ts","../../../../node_modules/type-fest/source/conditional-simplify-deep.d.ts","../../../../node_modules/type-fest/source/non-empty-tuple.d.ts","../../../../node_modules/type-fest/source/array-tail.d.ts","../../../../node_modules/type-fest/source/enforce-optional.d.ts","../../../../node_modules/type-fest/source/simplify-deep.d.ts","../../../../node_modules/type-fest/source/merge-deep.d.ts","../../../../node_modules/type-fest/source/merge-exclusive.d.ts","../../../../node_modules/type-fest/source/require-exactly-one.d.ts","../../../../node_modules/type-fest/source/require-all-or-none.d.ts","../../../../node_modules/type-fest/source/require-one-or-none.d.ts","../../../../node_modules/type-fest/source/is-union.d.ts","../../../../node_modules/type-fest/source/single-key-object.d.ts","../../../../node_modules/type-fest/source/partial-deep.d.ts","../../../../node_modules/type-fest/source/required-deep.d.ts","../../../../node_modules/type-fest/source/subtract.d.ts","../../../../node_modules/type-fest/source/paths.d.ts","../../../../node_modules/type-fest/source/pick-deep.d.ts","../../../../node_modules/type-fest/source/array-splice.d.ts","../../../../node_modules/type-fest/source/literal-union.d.ts","../../../../node_modules/type-fest/source/union-to-tuple.d.ts","../../../../node_modules/type-fest/source/omit-deep.d.ts","../../../../node_modules/type-fest/source/partial-on-undefined-deep.d.ts","../../../../node_modules/type-fest/source/undefined-on-partial-deep.d.ts","../../../../node_modules/type-fest/source/readonly-deep.d.ts","../../../../node_modules/type-fest/source/promisable.d.ts","../../../../node_modules/type-fest/source/arrayable.d.ts","../../../../node_modules/type-fest/source/invariant-of.d.ts","../../../../node_modules/type-fest/source/set-optional.d.ts","../../../../node_modules/type-fest/source/set-readonly.d.ts","../../../../node_modules/type-fest/source/set-required.d.ts","../../../../node_modules/type-fest/source/set-required-deep.d.ts","../../../../node_modules/type-fest/source/set-non-nullable.d.ts","../../../../node_modules/type-fest/source/set-non-nullable-deep.d.ts","../../../../node_modules/type-fest/source/value-of.d.ts","../../../../node_modules/type-fest/source/async-return-type.d.ts","../../../../node_modules/type-fest/source/extends-strict.d.ts","../../../../node_modules/type-fest/source/is-tuple.d.ts","../../../../node_modules/type-fest/source/tuple-to-object.d.ts","../../../../node_modules/type-fest/source/conditional-keys.d.ts","../../../../node_modules/type-fest/source/conditional-except.d.ts","../../../../node_modules/type-fest/source/conditional-pick.d.ts","../../../../node_modules/type-fest/source/conditional-pick-deep.d.ts","../../../../node_modules/type-fest/source/stringified.d.ts","../../../../node_modules/type-fest/source/join.d.ts","../../../../node_modules/type-fest/source/sum.d.ts","../../../../node_modules/type-fest/source/less-than-or-equal.d.ts","../../../../node_modules/type-fest/source/array-slice.d.ts","../../../../node_modules/type-fest/source/string-slice.d.ts","../../../../node_modules/type-fest/source/fixed-length-array.d.ts","../../../../node_modules/type-fest/source/multidimensional-array.d.ts","../../../../node_modules/type-fest/source/multidimensional-readonly-array.d.ts","../../../../node_modules/type-fest/source/iterable-element.d.ts","../../../../node_modules/type-fest/source/entry.d.ts","../../../../node_modules/type-fest/source/entries.d.ts","../../../../node_modules/type-fest/source/set-return-type.d.ts","../../../../node_modules/type-fest/source/set-parameter-type.d.ts","../../../../node_modules/type-fest/source/asyncify.d.ts","../../../../node_modules/type-fest/source/jsonify.d.ts","../../../../node_modules/type-fest/source/jsonifiable.d.ts","../../../../node_modules/type-fest/source/find-global-type.d.ts","../../../../node_modules/type-fest/source/structured-cloneable.d.ts","../../../../node_modules/type-fest/source/schema.d.ts","../../../../node_modules/type-fest/source/literal-to-primitive.d.ts","../../../../node_modules/type-fest/source/literal-to-primitive-deep.d.ts","../../../../node_modules/type-fest/source/key-as-string.d.ts","../../../../node_modules/type-fest/source/exact.d.ts","../../../../node_modules/type-fest/source/readonly-tuple.d.ts","../../../../node_modules/type-fest/source/override-properties.d.ts","../../../../node_modules/type-fest/source/has-optional-keys.d.ts","../../../../node_modules/type-fest/source/is-required-key-of.d.ts","../../../../node_modules/type-fest/source/is-readonly-key-of.d.ts","../../../../node_modules/type-fest/source/readonly-keys-of.d.ts","../../../../node_modules/type-fest/source/has-readonly-keys.d.ts","../../../../node_modules/type-fest/source/writable-keys-of.d.ts","../../../../node_modules/type-fest/source/is-writable-key-of.d.ts","../../../../node_modules/type-fest/source/has-writable-keys.d.ts","../../../../node_modules/type-fest/source/spread.d.ts","../../../../node_modules/type-fest/source/tuple-to-union.d.ts","../../../../node_modules/type-fest/source/int-range.d.ts","../../../../node_modules/type-fest/source/int-closed-range.d.ts","../../../../node_modules/type-fest/source/if-any.d.ts","../../../../node_modules/type-fest/source/if-never.d.ts","../../../../node_modules/type-fest/source/if-unknown.d.ts","../../../../node_modules/type-fest/source/array-indices.d.ts","../../../../node_modules/type-fest/source/array-values.d.ts","../../../../node_modules/type-fest/source/set-field-type.d.ts","../../../../node_modules/type-fest/source/shared-union-fields.d.ts","../../../../node_modules/type-fest/source/all-union-fields.d.ts","../../../../node_modules/type-fest/source/shared-union-fields-deep.d.ts","../../../../node_modules/type-fest/source/if-null.d.ts","../../../../node_modules/type-fest/source/is-undefined.d.ts","../../../../node_modules/type-fest/source/is-lowercase.d.ts","../../../../node_modules/type-fest/source/is-uppercase.d.ts","../../../../node_modules/type-fest/source/is-optional.d.ts","../../../../node_modules/type-fest/source/is-nullable.d.ts","../../../../node_modules/type-fest/source/words.d.ts","../../../../node_modules/type-fest/source/camel-case.d.ts","../../../../node_modules/type-fest/source/camel-cased-properties.d.ts","../../../../node_modules/type-fest/source/camel-cased-properties-deep.d.ts","../../../../node_modules/type-fest/source/remove-prefix.d.ts","../../../../node_modules/type-fest/source/delimiter-case.d.ts","../../../../node_modules/type-fest/source/kebab-case.d.ts","../../../../node_modules/type-fest/source/delimiter-cased-properties.d.ts","../../../../node_modules/type-fest/source/kebab-cased-properties.d.ts","../../../../node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts","../../../../node_modules/type-fest/source/kebab-cased-properties-deep.d.ts","../../../../node_modules/type-fest/source/pascal-case.d.ts","../../../../node_modules/type-fest/source/pascal-cased-properties.d.ts","../../../../node_modules/type-fest/source/pascal-cased-properties-deep.d.ts","../../../../node_modules/type-fest/source/snake-case.d.ts","../../../../node_modules/type-fest/source/snake-cased-properties.d.ts","../../../../node_modules/type-fest/source/snake-cased-properties-deep.d.ts","../../../../node_modules/type-fest/source/screaming-snake-case.d.ts","../../../../node_modules/type-fest/source/split.d.ts","../../../../node_modules/type-fest/source/replace.d.ts","../../../../node_modules/type-fest/source/string-repeat.d.ts","../../../../node_modules/type-fest/source/includes.d.ts","../../../../node_modules/type-fest/source/get.d.ts","../../../../node_modules/type-fest/source/last-array-element.d.ts","../../../../node_modules/type-fest/source/conditional-simplify.d.ts","../../../../node_modules/type-fest/source/global-this.d.ts","../../../../node_modules/type-fest/source/package-json.d.ts","../../../../node_modules/type-fest/source/tsconfig-json.d.ts","../../../../node_modules/type-fest/source/extract-strict.d.ts","../../../../node_modules/type-fest/source/exclude-strict.d.ts","../../../../node_modules/type-fest/index.d.ts","../../../../node_modules/mermaid/dist/types.d.ts","../../../../node_modules/mermaid/dist/utils.d.ts","../../../../node_modules/mermaid/dist/diagram.d.ts","../../../../node_modules/mermaid/dist/diagrams/git/gitgraphtypes.d.ts","../../../../node_modules/mermaid/dist/diagram-api/types.d.ts","../../../../node_modules/mermaid/dist/diagram-api/detecttype.d.ts","../../../../node_modules/mermaid/dist/errors.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/clusters.d.ts","../../../../node_modules/mermaid/dist/rendering-util/types.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/anchor.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/bowtierect.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/card.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/choice.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/circle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/crossedcircle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/curlybraceleft.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/curlybraceright.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/curlybraces.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/curvedtrapezoid.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/cylinder.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/dividedrect.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/doublecircle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/filledcircle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/flippedtriangle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/forkjoin.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/halfroundedrectangle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/hexagon.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/hourglass.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/icon.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/iconcircle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/iconrounded.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/iconsquare.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/imagesquare.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/invertedtrapezoid.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/labelrect.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/leanleft.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/leanright.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/lightningbolt.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/linedcylinder.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/linedwaveedgedrect.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/multirect.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/multiwaveedgedrectangle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/note.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/question.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/rectleftinvarrow.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/rectwithtitle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/roundedrect.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/shadedprocess.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/slopedrect.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/squarerect.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/stadium.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/state.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/stateend.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/statestart.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/subroutine.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/taggedrect.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/taggedwaveedgedrectangle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/text.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/tiltedcylinder.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/trapezoid.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/trapezoidalpentagon.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/triangle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/waveedgedrectangle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/waverectangle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/windowpane.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/erbox.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/classbox.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/requirementbox.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/kanbanitem.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/bang.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/cloud.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/defaultmindmapnode.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/mindmapcircle.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/shapes.d.ts","../../../../node_modules/dagre-d3-es/src/graphlib/graph.d.ts","../../../../node_modules/dagre-d3-es/src/graphlib/index.d.ts","../../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-node.d.ts","../../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-circle.d.ts","../../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.d.ts","../../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.d.ts","../../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.d.ts","../../../../node_modules/dagre-d3-es/src/dagre-js/intersect/index.d.ts","../../../../node_modules/dagre-d3-es/src/dagre-js/render.d.ts","../../../../node_modules/dagre-d3-es/src/index.d.ts","../../../../node_modules/mermaid/dist/rendering-util/rendering-elements/nodes.d.ts","../../../../node_modules/mermaid/dist/logger.d.ts","../../../../node_modules/mermaid/dist/internals.d.ts","../../../../node_modules/mermaid/dist/mermaidapi.d.ts","../../../../node_modules/mermaid/dist/rendering-util/render.d.ts","../../../../node_modules/mermaid/dist/mermaid.d.ts","../../../../src/components/note-viewer/note-viewer.component.ts","../../../../src/components/graph-view/graph-view.component.ngtypecheck.ts","../../../../src/components/graph-view/graph-view.component.ts","../../../../src/components/tags-view/tags-view.component.ngtypecheck.ts","../../../../src/components/tags-view/tags-view.component.ts","../../../../src/components/markdown-calendar/markdown-calendar.component.ngtypecheck.ts","../../../../node_modules/calendar-utils/date-adapters/date-adapter/index.d.ts","../../../../node_modules/calendar-utils/calendar-utils.d.ts","../../../../node_modules/positioning/dist/positioning.d.ts","../../../../node_modules/positioning/dist/entry.d.ts","../../../../node_modules/angular-draggable-droppable/index.d.ts","../../../../node_modules/angular-resizable-element/index.d.ts","../../../../node_modules/angular-calendar/index.d.ts","../../../../node_modules/angular-calendar/date-adapters/date-adapter.d.ts","../../../../node_modules/angular-calendar/date-adapters/date-fns/index.d.ts","../../../../src/services/markdown-calendar.service.ngtypecheck.ts","../../../../src/services/markdown-calendar.service.ts","../../../../node_modules/@angular/core/rxjs-interop/index.d.ts","../../../../src/components/markdown-calendar/markdown-calendar.component.ts","../../../../src/app.component.ts","../../../../index.tsx","../../../../src/types/mermaid.d.ts","../../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/@types/node/compatibility/index.d.ts","../../../../node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../../node_modules/@types/node/web-globals/events.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../node_modules/undici-types/retry-handler.d.ts","../../../../node_modules/undici-types/retry-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/util.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/eventsource.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../../node_modules/@types/node/web-globals/storage.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.generated.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/sea.d.ts","../../../../node_modules/@types/node/sqlite.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[682,730],[60,258,262,265,266,267,674,682,730],[252,258,259,682,730],[252,258,261,264,682,730],[252,258,259,260,261,682,730],[258,682,730],[63,682,730],[61,62,682,730],[61,62,63,252,253,254,682,730],[61,682,730],[61,62,63,252,253,254,255,256,257,682,730],[61,62,63,252,256,682,730],[252,258,682,730],[258,262,682,730],[258,262,263,265,682,730],[283,682,730],[282,286,682,730],[282,682,730],[290,682,730],[299,682,730],[301,302,682,730],[306,682,730],[303,682,730],[301,303,304,682,730],[302,305,682,730],[318,682,730],[282,321,682,730],[284,285,287,288,289,290,291,292,293,294,295,296,297,298,300,301,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,336,337,338,339,340,341,342,343,682,730],[336,682,730],[282,336,682,730],[282,290,335,682,730],[335,336,682,730],[290,318,321,682,730],[282,324,682,730],[350,378,682,730],[349,355,682,730],[360,682,730],[355,682,730],[354,682,730],[372,682,730],[368,682,730],[350,367,378,682,730],[349,350,351,352,353,354,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,682,730],[682,727,730],[682,729,730],[730],[682,730,735,764],[682,730,731,736,741,749,761,772],[682,730,731,732,741,749],[677,678,679,682,730],[682,730,733,773],[682,730,734,735,742,750],[682,730,735,761,769],[682,730,736,738,741,749],[682,729,730,737],[682,730,738,739],[682,730,740,741],[682,729,730,741],[682,730,741,742,743,761,772],[682,730,741,742,743,756,761,764],[682,723,730,738,741,744,749,761,772],[682,730,741,742,744,745,749,761,769,772],[682,730,744,746,761,769,772],[680,681,682,683,684,685,686,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778],[682,730,741,747],[682,730,748,772],[682,730,738,741,749,761],[682,730,750],[682,730,751],[682,729,730,752],[682,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778],[682,730,754],[682,730,755],[682,730,741,756,757],[682,730,756,758,773,775],[682,730,741,761,762,764],[682,730,763,764],[682,730,761,762],[682,730,764],[682,730,765],[682,727,730,761,766],[682,730,741,767,768],[682,730,767,768],[682,730,735,749,761,769],[682,730,770],[682,730,749,771],[682,730,744,755,772],[682,730,735,773],[682,730,761,774],[682,730,748,775],[682,730,776],[682,723,730],[682,723,730,741,743,752,761,764,772,774,775,777],[682,730,761,778],[661,682,730],[668,682,730],[252,258,661,662,664,665,666,682,730],[641,642,643,644,645,682,730],[639,682,730],[640,646,647,682,730],[346,682,730],[277,682,730],[347,682,730],[348,569,682,730],[348,380,564,567,568,682,730],[566,569,682,730],[348,350,378,565,566,573,649,650,682,730],[345,348,565,566,567,569,570,571,573,651,652,653,682,730],[348,565,567,569,682,730],[282,344,682,730],[569,573,651,682,730],[573,682,730],[350,378,565,573,638,648,654,682,730],[565,573,574,575,576,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,682,730],[350,378,565,573,682,730],[348,565,572,638,682,730],[348,682,730],[348,350,378,380,565,682,730],[663,682,730],[64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,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,183,184,185,187,196,198,199,200,201,202,203,205,206,208,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,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,682,730],[109,682,730],[65,68,682,730],[67,682,730],[67,68,682,730],[64,65,66,68,682,730],[65,67,68,225,682,730],[68,682,730],[64,67,109,682,730],[67,68,225,682,730],[67,233,682,730],[65,67,68,682,730],[77,682,730],[100,682,730],[121,682,730],[67,68,109,682,730],[68,116,682,730],[67,68,109,127,682,730],[67,68,127,682,730],[68,168,682,730],[68,109,682,730],[64,68,186,682,730],[64,68,187,682,730],[209,682,730],[193,195,682,730],[204,682,730],[193,682,730],[64,68,186,193,194,682,730],[186,187,195,682,730],[207,682,730],[64,68,193,194,195,682,730],[66,67,68,682,730],[64,68,682,730],[65,67,187,188,189,190,682,730],[109,187,188,189,190,682,730],[187,189,682,730],[67,188,189,191,192,196,682,730],[64,67,682,730],[68,211,682,730],[69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,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,682,730],[197,682,730],[381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,403,404,405,407,408,409,410,411,412,413,414,415,416,418,419,420,421,422,423,429,430,431,432,433,434,435,436,437,438,439,440,441,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,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,495,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,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,682,730],[392,397,398,399,400,401,417,418,682,730],[387,399,413,428,525,682,730],[419,682,730],[405,412,420,421,422,428,456,483,484,682,730],[399,422,428,453,682,730],[398,399,428,682,730],[493,682,730],[428,534,682,730],[399,428,535,682,730],[428,535,682,730],[429,477,682,730],[399,400,474,476,682,730],[390,412,428,433,439,478,682,730],[477,682,730],[408,416,428,534,538,682,730],[399,428,534,539,682,730],[428,534,539,682,730],[387,682,730],[413,682,730],[491,682,730],[381,387,410,412,428,682,730],[412,428,682,730],[392,397,682,730],[385,428,454,457,503,552,682,730],[421,682,730],[405,412,418,420,428,682,730],[394,682,730],[510,682,730],[395,682,730],[512,682,730],[392,682,730],[390,682,730],[397,682,730],[409,682,730],[410,682,730],[412,682,730],[483,517,682,730],[428,453,682,730],[394,397,398,399,400,682,730],[400,401,402,417,424,425,426,427,682,730],[392,408,410,425,682,730],[397,399,400,405,425,682,730],[387,392,394,395,397,398,399,400,412,413,416,425,426,682,730],[402,405,411,424,682,730],[399,405,421,423,682,730],[381,392,397,398,682,730],[403,405,428,682,730],[381,397,405,407,428,682,730],[392,412,682,730],[392,393,400,682,730],[392,397,398,399,428,682,730],[392,400,509,682,730],[384,682,730],[382,384,390,392,397,399,405,410,428,682,730],[428,534,539,543,682,730],[428,534,539,541,682,730],[386,682,730],[422,682,730],[414,501,682,730],[381,682,730],[399,414,415,416,428,433,439,440,441,442,443,682,730],[413,414,415,682,730],[412,453,682,730],[396,430,682,730],[403,404,682,730],[397,399,412,428,443,454,456,457,458,682,730],[393,682,730],[397,398,682,730],[416,682,730],[384,457,682,730],[397,428,682,730],[398,410,416,428,682,730],[428,535,545,682,730],[392,397,399,421,428,453,682,730],[386,397,399,413,428,454,682,730],[428,682,730],[509,682,730],[400,408,417,418,682,730],[392,397,398,428,682,730],[392,397,398,428,429,682,730],[392,397,398,428,446,682,730],[394,399,400,413,417,682,730],[428,534,539,548,682,730],[413,428,682,730],[399,413,428,454,458,470,682,730],[413,428,429,682,730],[399,410,428,682,730],[392,399,428,443,452,454,458,468,682,730],[394,398,399,413,428,429,682,730],[397,399,428,682,730],[397,399,413,428,449,682,730],[428,439,682,730],[390,398,449,682,730],[408,418,420,428,682,730],[395,413,682,730],[405,408,682,730],[428,482,485,682,730],[382,498,682,730],[405,423,428,682,730],[405,428,453,682,730],[406,682,730],[392,398,399,475,682,730],[386,397,682,730],[428,530,531,682,730],[413,429,682,730],[682,695,699,730,772],[682,695,730,761,772],[682,690,730],[682,692,695,730,769,772],[682,730,749,769],[682,730,779],[682,690,730,779],[682,692,695,730,749,772],[682,687,688,691,694,730,741,761,772],[682,695,702,730],[682,687,693,730],[682,695,716,717,730],[682,691,695,730,764,772,779],[682,716,730,779],[682,689,690,730,779],[682,695,730],[682,689,690,691,692,693,694,695,696,697,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,717,718,719,720,721,722,730],[682,695,710,730],[682,695,702,703,730],[682,693,695,703,704,730],[682,694,730],[682,687,690,695,730],[682,695,699,703,704,730],[682,699,730],[682,693,695,698,730,772],[682,687,692,695,702,730],[682,730,761],[682,690,695,716,730,777,779],[258,262,268,269,274,275,278,280,655,657,659,673,682,730],[258,262,274,275,279,682,730],[258,262,274,656,682,730],[252,258,262,274,660,667,669,671,672,682,730],[258,262,266,274,281,676,682,730],[258,262,274,658,682,730],[252,258,265,274,670,682,730],[258,274,276,277,682,730],[258,265,270,274,682,730],[271,273,682,730],[272,682,730]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93",{"version":"ff0638695ad85fd52741a6f5d979cfe020be6bbdaa1b9514552840fa8b33f0f2","impliedFormat":99},{"version":"0bae4ec1a9aa316e33e779da740a21554abb7e32d832d76b33e67c6764e5376f","affectsGlobalScope":true,"impliedFormat":99},{"version":"38b9a90b4318c32b9f6dbfe0609bbb6df10a066e52c5fc66182a290593ce7e4a","affectsGlobalScope":true,"impliedFormat":99},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"1bcfaf656f69599d0a4608e82f1ef42102466a058cc56eacfe53ed4fb3829840","impliedFormat":99},{"version":"4cf665d1241bdbce5901ea898b25b9d5ba51b04446b9e0dc1a42295fcec75307","impliedFormat":99},{"version":"4702d4f21cf3cc7ebcb329bc1be7f1c54947fcacd28a58e646758efffa23fe5a","impliedFormat":99},{"version":"588d58918029591b1cf052ba927c6088de8b492b9f76006f34f2cbd04438a72c","impliedFormat":99},{"version":"746402bdda757b64ad769f2f1c3334808cab2a2bfb652e5c51f2335796fab30b","impliedFormat":99},{"version":"bc415c758decffbc16679e0f8b4a9028ba48a069f7dd4b973c6f4ba88b67ee6c","impliedFormat":99},{"version":"ada298406a7a52adefe4a01a2bc214670eb4a24fb4a4aa79ab80341f8ca7303c","impliedFormat":99},{"version":"f6c759f9c9448a5888e5c04b75479041113b28f9d693b315dfe797b23992fec0","impliedFormat":99},{"version":"5868d1620d2d07add62a0507aeff9ff5be9fe0eb65ef46b4b76d01c1ba089634","impliedFormat":99},{"version":"72e7b744629138d3b91f95585df46b0534170cfafbbe7e27d49934a403e73c33","impliedFormat":99},{"version":"a5cf234b9310623dc144749d876fb273db20883385f97dd2d2f0eb1a868775aa","impliedFormat":99},{"version":"64b7ffb6bcd721e9965b6c354d3b7f144b0062985a414cc679e21709604fa670","impliedFormat":99},{"version":"56b49fd99dc1473e5943dbd292f644823d9012b83a342296547f0178d769f2f2","impliedFormat":99},{"version":"56c28ca2e4467ebfc58276d706ad48f9a58dbcfe1afb3963eb73f1133ab57029","impliedFormat":99},{"version":"c1a2490845cba61742cc5143243976fb60ccf02a13c803d221340cb1bc3a4905","impliedFormat":99},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"61ada39dae36302691ed964dd4cff5f1fc1cc21074c22105d3708c7480c6901d","impliedFormat":99},"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"2815871b6010b428a5ef286d08a89918265b6546f95277a2443021b8c7cd38f4","signature":"d54a98959c936ad62f4cc64ea5ae0ccfa8ea120a1bdecdc9005b4c4a7eef6b7e"},{"version":"c4ca98ba8f75edf765752dfb578e7fb09f2f54245866c1eb2ad48c77fee48e81","signature":"dc0c745b3c74f0a0a7ddd71078c3333586015dd5097ff1d68958303bc3cdd302"},{"version":"76d9f7d1c1a751b1ec6112458cb6b28f1b0b435571358cb7e5e453f8941a1546","signature":"5240b346d996a00b6d88abce5078b48787c3233c7f5d39e1ed2a2766d3ca7e41"},"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93",{"version":"6bd987ccf12886137d96b81e48f65a7a6fa940085753c4e212c91f51555f13e5","impliedFormat":1},"f938cf4363515798aff0a692cef0d8454aa8aa5a5c96a589c25d02c9ba1d69b1",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},"ad5ad256f0db537acbd6677fc89ab0f45d6727cc48b5f9aa96d2e478fc7c427e",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"12baec7a4e2c3acddd09ab665e0ae262395044396e41ecde616fefdd33dc75ff","impliedFormat":99},{"version":"a5b88a3dd2d88189df04e242aa103b7d380d6f3226cb709e6231b1714ab32367","impliedFormat":99},{"version":"e0ae30ef821c679555662ef3b2fe7876550bb882351e7763658e574af8b46c70","impliedFormat":99},{"version":"7078c77d332326a372c1a2bf1a82aa5d1a75f2ef0aee6ace01c0caf509d682e6","impliedFormat":99},{"version":"3c655c148cc91a10ac5cd7e037a043225da3df41be908f5ff4970c27f5019e41","impliedFormat":99},{"version":"1c2895fbfa6cd25406f29fcdd75c2e2105e8c8df1a4944fbba9ccace6211c893","impliedFormat":99},{"version":"81e8f8a08f31dd6766ef203bfe8d9e1f2fdd42e22ddebba6607c569ee750f611","impliedFormat":99},{"version":"8cab328fafd8141b097260fa1bb4478477ccb4215b83fe710bb863d639eeaad7","impliedFormat":99},{"version":"b71c133a200ec0f58e2fed163ffd7195727fa60ad82e2f04b23f3d0358d11c69","impliedFormat":99},{"version":"2a6056297dcd95be218af4da343508fb6f669b1847a0bd0a61ab565555e9bff4","impliedFormat":99},{"version":"4f8d052e63e35abab5461f3d2243ffbfcbd5746c82d915f2eec6a56a92f2de2f","impliedFormat":99},{"version":"ea80607028bdbddc6cedd31518df127b1c1d8d36e61602c1ab087a143f6cf35e","impliedFormat":99},{"version":"190526c884bd366f0286e83f341623be7a7ff3c4d8693d565aaf5d830c5da81c","impliedFormat":99},{"version":"10514d44b1341ca2eed6ce145b5be548cd22b64a00ec35c25e52088cecc3c71e","impliedFormat":99},{"version":"b71d05a8d89c62d2e9110b16a413ccbf72a6c6c745a46b1c98684a3f5a11d9af","impliedFormat":99},{"version":"084f53ba42c54c0a929a9bbe3d0a8083214b629bce53e0eb1ddbe952e17e0943","impliedFormat":99},{"version":"dcea451fd572ddd0ed46c322042eaa0bfcf9ec27eb3c6253d60903a58463c78c","impliedFormat":99},{"version":"d2bc6aceb7e558385033d069e9b6263df719a54d17f2a9672c9c675e106c4ff2","impliedFormat":99},{"version":"3e9f400911379b8eba9a2a1346fa1cce3cc21ee2587cedb14c0636d2956ec3a5","impliedFormat":99},{"version":"2cab545dabda94fe5419bd6bdfae4d9aabd6f40b46bb0040c417ef570b32b13f","impliedFormat":99},{"version":"d0b92629d56e8bf11a5b5391daf8cb09488e4840bd17b0847760321e314748c4","impliedFormat":99},{"version":"d6b3c97a7d31d1ea76c8680ff11b0b07185e1f6222d3e6f29d7a13b6911127ab","impliedFormat":99},{"version":"0ddd9ab937cef821a908be8581c73874105b34a61b6debaaa89c5c5cf25594a1","impliedFormat":99},{"version":"f8f112dfc0427d63a94413a12bca3cc858b4359e70e1e30d3f3709bef76f1c52","impliedFormat":99},{"version":"26c42de693907fa56842e6ebf39007334e1c6dbae30388a71d715179a527edb2","impliedFormat":99},{"version":"cceba3e6626d0d5a6b743b5f7f150f92323173a42d25269e731080a3ff36d31a","impliedFormat":99},{"version":"698f3f181d2eb5a09ba7cbd78e9ffd6bd21b48873972f64764ff774c86e411c1","impliedFormat":99},{"version":"81d272285c96d6be6287c6217a6f7fd9daaa86bdb9b0592f3831bbcf149ec6c2","impliedFormat":99},{"version":"3fbed1bc84290ae6bad246a668e41aa6308cb9f54c499b29297ff639a9833b7e","impliedFormat":99},{"version":"67c4642b72f0769f2900ed67a9b004165a0821359f79dab12c9f686df9c4319c","impliedFormat":99},{"version":"02933889d4b0d3b26342b240f71c10f0ffb75fa66742b7e4c3884e6e3e134908","impliedFormat":99},{"version":"55555ba42cc8a2104c5bfe9fa1f86d2db480f7db20648eaca3d24aed203af504","impliedFormat":99},{"version":"a6b1ed3b5c123319781d5ea0e22ff29ccb13620226b6ca95c3358eeef802f57d","impliedFormat":99},{"version":"b71b43f6718d950985da7c703896d50e387bfca17da86ad5d285ffa260ac452c","impliedFormat":99},{"version":"7aeb46eb0a4c9cdcdec142780cb9adf1726f9a321ae7e648b6b164a9438beaf5","impliedFormat":99},{"version":"c53e4574eb73e3f8ba12ee417601cafa27b7f0326d80caa101e1396bc6f57a66","impliedFormat":99},{"version":"327f4c840a0bf72609a9b9f367c443adf6dcfd193e8ec97ea50ca3e91ab57dec","impliedFormat":99},{"version":"40efa8b89da5f84d101a2e11d3bde07ceba84d2151a46362d51af9fcac38a300","impliedFormat":99},{"version":"7584bebefa39b6befd2f53b682a7f78837c2bb156cdfdf45967e8849e0d55dd8","impliedFormat":99},{"version":"86f06b955ff10b08571f46f3ced5cbb8b13c1ad049d5532f7ee2956ac3f2beb1","impliedFormat":99},{"version":"85b303f253aa1ace057cb95c4877ab0284733266b2659721776c8bce3123ee52","impliedFormat":99},{"version":"d986ec1523a115dee85f6b0887b6f2fd9c442963f80bbb4ee0fc4283668c370f","impliedFormat":99},{"version":"94599e64d23ffdf775213a6d58dc5c168fdccc183b99a25638fad6cac404aed9","impliedFormat":99},{"version":"51fe1fa188fcd12d95d6bb8585f562e402ecf1cfe20468bf26b16705f601a5d3","impliedFormat":99},{"version":"dd00452f03f26720d7bae5313580be4b0ce2c61d9adb99c62a00a8ed01aff94c","impliedFormat":99},{"version":"623cfc15d5f796ad146ff31ab9f2c6b0f9a87546df41ad899ca250a49602cb73","impliedFormat":99},{"version":"153638de5f15083b920bc363ce6466625d28507e2c6ca321404d10ad394a8c68","impliedFormat":99},{"version":"aa8e3b222985e2dff4f056802cb68ef6e798f60761758a0ce2aa9be8ba964a08","impliedFormat":99},{"version":"f2f1da2c3c170f8f88b158926c9c36f3cdb9e178dfb82c76ccfcc4ce49607f7d","impliedFormat":99},{"version":"79926764aeff0993b4c5572388a26a0c8840b7019e95d0c413f8bfa28faa9a11","impliedFormat":99},{"version":"f0e4415f13da8dbcb3ca10e18aa243d97bf3448a75f14fe2ade07a3462684539","impliedFormat":99},{"version":"407894b66b2b266e4ac9f85f9d561132461b22e912a9391f86a0f5e49929d468","impliedFormat":99},{"version":"5c26337066b61988acd1cde0a41da915efa0cbd4059ca78098e356b52a61451f","impliedFormat":99},{"version":"9c993d2a22e92a8982e79502262d13f0971e5b55cafe0c16e3b2dc689632b1c5","impliedFormat":99},{"version":"a1432e2f9f50696576c7642f8d28eed730b0ea09208e015d64385ed8eab679ab","impliedFormat":99},{"version":"2e1807e5fb1e4722f02eebb012b1f0dfb9ffc3c3103dc730e25c379168178010","impliedFormat":99},{"version":"a853fefc5b7f2491746cf1c612a1eaaa00d459c3196e7ab19c851785264e8795","impliedFormat":99},{"version":"48a465f5c5355b19f0c392918c93f8b7e49aaaedb95b3834d9b4c81e0d1cd344","impliedFormat":99},{"version":"ae02342d343890e389173008232602886260a423bf0ce4050dc4f069a865387d","impliedFormat":99},{"version":"3a9add1125746158416c8fe8b07798bfe63dcf27c9fb81b07e110a80357a2f3b","impliedFormat":99},{"version":"4dc4c65d064c762de00721f3e475c72875d010a12eb00991adca4951003cae1f","impliedFormat":99},{"version":"cca32394edecf4a3e67183b41246fbfddbc5697d71acf3e838cc89deb69fea1d","impliedFormat":99},{"version":"900d74897b9f1bb17578172e82429afd0ab189a2dafaafed2c76b288573a1c8c","impliedFormat":99},{"version":"b689b467912ca0ff089a178fc46d28080324dbef440da3994d5b58c79207fa0e","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"abeda0609e70e1530639b7731a18831e628b00bbb469c042d4994ef334a5894b","impliedFormat":99},{"version":"9d8d29eb1604f8f81839170f35609b3c8deaf84a1261e1f5c293bdb574f36297","impliedFormat":99},{"version":"b1538a92b9bae8d230267210c5db38c2eb6bdb352128a3ce3aa8c6acf9fc9622","impliedFormat":1},{"version":"469532350a366536390c6eb3bde6839ec5c81fe1227a6b7b6a70202954d70c40","impliedFormat":1},{"version":"17c9f569be89b4c3c17dc17a9fb7909b6bab34f73da5a9a02d160f502624e2e8","impliedFormat":1},{"version":"003df7b9a77eaeb7a524b795caeeb0576e624e78dea5e362b053cb96ae89132a","impliedFormat":1},{"version":"7ba17571f91993b87c12b5e4ecafe66b1a1e2467ac26fcb5b8cee900f6cf8ff4","impliedFormat":1},{"version":"6fc1a4f64372593767a9b7b774e9b3b92bf04e8785c3f9ea98973aa9f4bbe490","impliedFormat":1},{"version":"d30e67059f5c545c5f8f0cc328a36d2e03b8c4a091b4301bc1d6afb2b1491a3a","impliedFormat":1},{"version":"8b219399c6a743b7c526d4267800bd7c84cf8e27f51884c86ad032d662218a9d","impliedFormat":1},{"version":"bad6d83a581dbd97677b96ee3270a5e7d91b692d220b87aab53d63649e47b9ad","impliedFormat":1},{"version":"324726a1827e34c0c45c43c32ecf73d235b01e76ef6d0f44c2c0270628df746a","impliedFormat":1},{"version":"54e79224429e911b5d6aeb3cf9097ec9fd0f140d5a1461bbdece3066b17c232c","impliedFormat":1},{"version":"e1b666b145865bc8d0d843134b21cf589c13beba05d333c7568e7c30309d933a","impliedFormat":1},{"version":"ff09b6fbdcf74d8af4e131b8866925c5e18d225540b9b19ce9485ca93e574d84","impliedFormat":1},{"version":"c836b5d8d84d990419548574fc037c923284df05803b098fe5ddaa49f88b898a","impliedFormat":1},{"version":"3a2b8ed9d6b687ab3e1eac3350c40b1624632f9e837afe8a4b5da295acf491cb","impliedFormat":1},{"version":"189266dd5f90a981910c70d7dfa05e2bca901a4f8a2680d7030c3abbfb5b1e23","impliedFormat":1},{"version":"5ec8dcf94c99d8f1ed7bb042cdfa4ef6a9810ca2f61d959be33bcaf3f309debe","impliedFormat":1},{"version":"a80e02af710bdac31f2d8308890ac4de4b6a221aafcbce808123bfc2903c5dc2","impliedFormat":1},{"version":"d5895252efa27a50f134a9b580aa61f7def5ab73d0a8071f9b5bf9a317c01c2d","impliedFormat":1},{"version":"2c378d9368abcd2eba8c29b294d40909845f68557bc0b38117e4f04fc56e5f9c","impliedFormat":1},{"version":"0f345151cece7be8d10df068b58983ea8bcbfead1b216f0734037a6c63d8af87","impliedFormat":1},{"version":"37fd7bde9c88aa142756d15aeba872498f45ad149e0d1e56f3bccc1af405c520","impliedFormat":1},{"version":"2a920fd01157f819cf0213edfb801c3fb970549228c316ce0a4b1885020bad35","impliedFormat":1},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"0c94c2e497e1b9bcfda66aea239d5d36cd980d12a6d9d59e66f4be1fa3da5d5a","impliedFormat":1},{"version":"a67774ceb500c681e1129b50a631fa210872bd4438fae55e5e8698bac7036b19","impliedFormat":1},{"version":"bb220eaac1677e2ad82ac4e7fd3e609a0c7b6f2d6d9c673a35068c97f9fcd5cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"dd8936160e41420264a9d5fade0ff95cc92cab56032a84c74a46b4c38e43121e","impliedFormat":1},{"version":"1f366bde16e0513fa7b64f87f86689c4d36efd85afce7eb24753e9c99b91c319","impliedFormat":1},{"version":"421c3f008f6ef4a5db2194d58a7b960ef6f33e94b033415649cd557be09ef619","impliedFormat":1},{"version":"57568ff84b8ba1a4f8c817141644b49252cc39ec7b899e4bfba0ec0557c910a0","impliedFormat":1},{"version":"e6f10f9a770dedf552ca0946eef3a3386b9bfb41509233a30fc8ca47c49db71c","impliedFormat":1},{"version":"cd51ceafea7762ad639afb3ca5b68e1e4ffeaacaa402d7ef2cae17016e29e098","impliedFormat":99},{"version":"1b8357b3fef5be61b5de6d6a4805a534d68fe3e040c11f1944e27d4aec85936a","impliedFormat":99},{"version":"9bfe335059abdd8ee6b5d020eb8b31996fb9e46a559bb3e56dc33daf668a4938","impliedFormat":99},{"version":"3f71cb3d6bc7ca88035bd91d251405222c26d701a4ec64c02f76b8912855d88c","impliedFormat":99},{"version":"73d55616414a262b0514be28663732546600ce718fb5ee76631553831b2e005c","impliedFormat":99},{"version":"928f96b9948742cbaec33e1c34c406c127c2dad5906edb7df08e92b963500a41","impliedFormat":99},{"version":"5ad4e36816a7f2e69d3a23922d52a741e1a5e17061bb011d6f46e9c419988bb6","impliedFormat":99},{"version":"a085b1bae599820f7cdb1cfa4f18c7caf4002ba68824969977ae946eed7665fb","impliedFormat":99},{"version":"45e2a69a085b3ddfad84bc2ea62d4134b1ddeab886a3c13d3161c8d31aac1edf","impliedFormat":99},{"version":"86b484bcf6344a27a9ee19dd5cef1a5afbbd96aeb07708cc6d8b43d7dfa8466c","impliedFormat":99},{"version":"d02f82a00023e430371b3125954e6f7075ca7018289259358a2fcb97fdda3875","impliedFormat":99},{"version":"6ea2b54c8a3a44fc40facfc7d539911519a082549d9741f21df5d2016a9cb1ae","impliedFormat":99},{"version":"fd3c309a1cbc2468abcb518b321d52b91d5d46cd2670d7fc78e22d02e8d0af7a","impliedFormat":99},{"version":"b4083c6602ebee2c960bd07c29b7984fe7df08d6f614b584d72039030baed13c","impliedFormat":99},{"version":"6d63ddef89c73cd1493941e55bd3c5229b6265cd92e1f00fb3861d7f43b687a7","impliedFormat":99},{"version":"57ec00a8b4656cd36eaeec2279708530d9e490d37664b6ba4cbb64df81999f56","impliedFormat":99},{"version":"4e251317bb109337e4918e5d7bcda7ef2d88f106cac531dcea03f7eee1dd2240","impliedFormat":99},{"version":"cf35c1b8170b6103be66a3c90b7a87ba52b6de8da976125440c2cc4f8e291080","impliedFormat":99},{"version":"1a67ba5891772a62706335b59a50720d89905196c90719dad7cec9c81c2990e6","impliedFormat":99},{"version":"a6f2aa46ae07572e230088a84716dbf65bb0300d8495e6229ec41ae1f7fc862b","impliedFormat":99},{"version":"65f05148b8811fbffd2141719523731cad7b1130ad068174c47439f11d9d6723","impliedFormat":99},{"version":"8c94de87153ab722fab8b214bc15f33e64f1d3a98b93c465c5d34530a2dd0826","impliedFormat":99},{"version":"350ca6fc8aa030bd52c0608a4804b20b16a6c5fcf5c7a3f82368062b532dd27c","impliedFormat":99},{"version":"4de7f7ab3967f80644ab9ce8c03b5f55a64e55ba8ba157cd837f1789ff2e3dd3","impliedFormat":99},{"version":"0bd80d861af00b2462f8ce1bce1063d421699686818df9de3d1b66ca31444077","impliedFormat":99},{"version":"4af74a8e255575812dfeb09390e0cebc8a6aefaec59a7985478106f8e4a3fb1d","impliedFormat":99},{"version":"62d8e5542c212d735283d4b76e49c78bdf8b50857e85c075610748840f923b3d","impliedFormat":99},{"version":"c20844130c581429d0efcfbc8ba28f8278a6d4c70b306dbf66662153f0dd9997","impliedFormat":99},{"version":"dd9694eecd70a405490ad23940ccd8979a628f1d26928090a4b05a943ac61714","impliedFormat":99},{"version":"f2b2d651e19a6b633a609a5b7cd35f8c783170365d437bdc6961821bb15cedc2","impliedFormat":99},{"version":"5583ba15afdfe7de6d67a68ef9af8d8b809c470a794f7db796e1ff0a4d473e91","impliedFormat":99},{"version":"892abbe1081799073183bab5dc771db813938e888cf49eb166f0e0102c0c1473","impliedFormat":99},{"version":"a8289d1d525cf4a3a2d5a8db6b8e14e19f43d122cc47f8fb6b894b0aa2e2bde6","impliedFormat":99},{"version":"e6804515ba7c8f647e145ecc126138dd9d27d3e6283291d0f50050700066a0ea","impliedFormat":99},{"version":"9420a04edbe321959de3d1aab9fa88b45951a14c22d8a817f75eb4c0a80dba02","impliedFormat":99},{"version":"c2206881769e310ed6ee0e75169ee723041521c331d8a65e305970a5cbf0248f","impliedFormat":99},{"version":"b35c9597a1e8d54116f1376e3e49c0bb530edac7e822dbb3d46ed880d741da3a","impliedFormat":99},{"version":"0e6ff336de666474a63548fda7ed359c68137714184a2131bdf9fdd726d94a08","impliedFormat":99},{"version":"0bdee1b9448bc7f2bf440f66602f69553c22847b6b1333f438ce5ce39a05bbea","impliedFormat":99},{"version":"8471fc44113f5c8b80c3e6182242de8b1fc17a9c0e868f0ec1a7ba5de7f742cd","impliedFormat":99},{"version":"2825636a894458e5d7115283949a327e533ba46c788db09a441d77ac530d0833","impliedFormat":99},{"version":"94da2911acb065a3d5496423d4aa804890aed735f98de3f62125ea4dc48839f5","impliedFormat":99},{"version":"a7c956fa890533715f3b6195e65b45a212e78b8cb4bf559fa0a659825a5e69b0","impliedFormat":99},{"version":"13f1c3aaa368a71e6bd9a7150207194970ab92b43070b4c7d060510198449631","impliedFormat":99},{"version":"347a2f317e8414f1759000d1553bd5e086029c3b68da465005bb9f963374fc84","impliedFormat":99},{"version":"a6152cbae5b1b175101bfd3c6d1061db855775871f9cb9f668e0a2812263d316","impliedFormat":99},{"version":"ec80dcccae5635f965470f9514d2a99453b2621c8030ab9ea25674d11b4b1b65","impliedFormat":99},{"version":"8084d83010b476ab6a26c3ea5d8f4944373a5b886837d3c77ea1b63e629b7625","impliedFormat":99},{"version":"3d49a25964b39d9627d56f68aa273bd104dcdbb72848bc655921b76245d3b576","impliedFormat":99},{"version":"884a9e1e8673451330ffc5ee984f45d67521ddbe1bd242a6efff761a6775b916","impliedFormat":99},{"version":"ae0d910a0f66a5a26c36ecf3c946f96aefa7c8127f39f4350a300286a1bca11a","impliedFormat":99},{"version":"e53a8b6e43f20fa792479f8069c41b1a788a15ffdfd56be1ab8ef46ea01bd43e","impliedFormat":99},{"version":"ada60ff3698e7fd0c7ed0e4d93286ee28aed87f648f6748e668a57308fde5a67","impliedFormat":99},{"version":"f65e0341f11f30b47686efab11e1877b1a42cf9b1a232a61077da2bdeee6d83e","impliedFormat":99},{"version":"e6918b864e3c2f3a7d323f1bb31580412f12ab323f6c3a55fb5dc532c827e26d","impliedFormat":99},{"version":"a77730d8d0fd366716d61d0ebad60556c814ae8ada840b3904f641f91de7f898","impliedFormat":99},{"version":"2ab456ffebd3fbab2b1c666b1254c4b0360aa9db0bd913eeca3f672168aaa41b","impliedFormat":99},{"version":"0d326cdcb63183edea6ef1474ba26b91e0a79672acabc6f646ad72749d9baf8e","impliedFormat":99},{"version":"e28f118aa019c8b7b821cc79db844f4b087b5048f7729e9a0e6244c6ef313b34","impliedFormat":99},{"version":"77ff2aeb024d9e1679c00705067159c1b98ccac8310987a0bdaf0e38a6ca7333","impliedFormat":99},{"version":"b53e3dd856e87be29ecd7908781cc13efa21f11d22c9177675c2d61f6ce6c397","impliedFormat":99},{"version":"c31a7bdae416090c583cf9e8712b303b1cb160421b8c796571dade824a1d6bc5","impliedFormat":99},{"version":"1e5f1c97a1841ae35d248a79c51535432898025ef25981e56d5a414e6d82a1f9","impliedFormat":99},{"version":"d96a8ddd47af90e9bcafb0cd6dbd5d7cf64f985d057d044e0ffda12c8e87bce5","impliedFormat":99},{"version":"f981ffdbd651f67db134479a5352dac96648ca195f981284e79dc0a1dbc53fd5","impliedFormat":99},{"version":"0325f783af69bf51958af9a1b99fbeabdcf981553da0aa9c6ae828d814e4b4f0","impliedFormat":99},{"version":"bed2fd42724c6bba5312c9d7a1dbb0483c5704971f09d1a1e9c94bec45783208","impliedFormat":99},{"version":"537f78abe6221683b16003153740ab211f5d728a8b789cba7ed002dd8557d84b","impliedFormat":99},{"version":"4880b66a85ad652fbf2a8e64cd8bfc4b6c3a1a5fa826e32fb607bf91f3f7db96","impliedFormat":99},{"version":"3fc21f30a4737d077affcdfa522bfa6dd92faa3b1ad30fcdacb68ccb14c552d2","impliedFormat":99},{"version":"b2bfebfa051743b00bef1261f2afc0ac1ff43eca30f1d11de7cfc9cb2e80f06a","impliedFormat":99},{"version":"5d3e3d871a9d42e6d6f742fe8fd826ba124eeb7afe5b9f7b54fb271c199288cc","impliedFormat":99},{"version":"7bc399e39e93a7e31899ba8ab4ed277bacd0be84dae4ae204b256cc1be3a0529","impliedFormat":99},{"version":"4b8354907986a84ab7259b3dcaa14e71167a7ed3369362b80a7cae26f70db519","impliedFormat":99},{"version":"ff625ae33e645c92f0000813a68b729b5c22d873c292dfe94171a4580ab179a7","impliedFormat":99},{"version":"cc64f47453ab4f2d9b550dfbc709c20b19a7438fb9663c1bc5d20d33a68f61d8","impliedFormat":99},{"version":"a157730659ed403db3f2fac26062796f5197e2ae0c13077123aa335bee0cad11","impliedFormat":99},{"version":"29c4260365fe338e0e5b5c832c70bb8214c19c0468614a862a1983c16d72a740","impliedFormat":99},{"version":"f18e1383a1fccf98b77732e8c2928ecc8ba7ac79e4a90b25eefbdd2a37e7e6bc","impliedFormat":99},{"version":"92576d2f63fb97e3b20650ebffc9ec95d3f2de5d561b8c7028dd0efed68c6bb4","impliedFormat":99},{"version":"0e09e6199947604e316a992fdf558197471c52132f7a9ff1430a6481966a9337","impliedFormat":99},{"version":"08860cec3ae0cc20563e43fb1815e75717d7cd5d420f68f3fd2dcd4d5648427c","impliedFormat":99},{"version":"03ed68319c97cd4ce8f1c4ded110d9b40b8a283c3242b9fe934ccfa834e45572","impliedFormat":99},{"version":"f398e3d16a48be9f563d76f3c40401edbc4de5602ba98965686daa8f1ec23da0","impliedFormat":99},{"version":"c69ecf92a8a9fb3e4019e6c520260e4074dc6cb0044a71909807b8e7cc05bb65","impliedFormat":99},{"version":"188adead34dfcfbc5117b6191b8cfed55bfc81c41fb8bad2f8c416b24cfbd9bb","impliedFormat":99},{"version":"1d54f2ace0d19eee1f6d94f9e2aae51b1acb25dab78abf4070dceac695164534","impliedFormat":99},{"version":"890a03111402e49fb9fdd6d4bfe49b81a6a2ec2c8d616bb64577d72a3785e689","impliedFormat":99},{"version":"fcc8e405d8d264f67565915df87eee70bc38405d4f88069a6d4a64b45e2ddf14","impliedFormat":99},{"version":"1f0ee5ddb64540632c6f9a5b63e242b06e49dd6472f3f5bd7dfeb96d12543e15","impliedFormat":99},{"version":"f62a858f7a871557ccab4ce3a4d46876933f4a6ed3615ada505a3015a5fc74a9","impliedFormat":99},{"version":"c3ee10cd9e7c623d10541162b3c2b40f3f0a313402b6b8a98a3fccf05195a1f7","impliedFormat":99},{"version":"68434152ef6e484df25a9bd0f4c9abdfb0d743f5a39bff2b2dc2a0f94ed5f391","impliedFormat":99},{"version":"aa26815cb02465239f83d3f7442d670864fdceb5e347fd64b98d876b75a7f6fd","impliedFormat":99},{"version":"88094b658abd5ca62b06d340d5f65b3082655bbcf169326afe4ebf18d82ae20b","impliedFormat":99},{"version":"f9e10c6cd469de7ccad5b10e56eb9c07ccebeac62a8cea5f24bfa6ee37cd7761","impliedFormat":99},{"version":"e07141d5382152031e5909bd837e9b39634449d999e32af0e4fe4b734ff3249f","impliedFormat":99},{"version":"ee80e60d2976a80ee8cf05e04b9510ca6de6a371a2953833b2dec4eb7e6a7524","impliedFormat":99},{"version":"d49d31440da6cf71e0d2e8a3c7c27e3dd3b3df46ae9fa09ccbb2e067feff9503","impliedFormat":99},{"version":"280c0c63f1f34b1fa24efcbbb8bc8e0bf3d207b161ac0e1d9cfd3d7b3744e5d3","impliedFormat":99},{"version":"1848ebe5252ccb5ca1ca4ff52114516bdbbc7512589d6d0839beeea768bfb400","impliedFormat":99},{"version":"d2e3a1de4fde9291f9fb3b43672a8975a83e79896466f1af0f50066f78dbf39e","impliedFormat":99},{"version":"1845d748ca677f7208e4e54d5b4589b208a0def7c7e1ab310733ace618b49177","impliedFormat":99},{"version":"c3fe453362d2811f629701a3a64a3e4b155b755c053979319831dd34b9fef36b","impliedFormat":99},{"version":"88ae713e38e8c0847696adede4732f78842542dfec69482898d9415d714b253f","impliedFormat":99},{"version":"fcc1102012adf4de7111f3561b99f2145a2489bbeb7cfeb6ea7faec146b7ab28","impliedFormat":99},{"version":"98bd8ca263234b5e10ed08e748ddf85d145c38e663d036abd7a7fea1e65cdb8a","impliedFormat":99},{"version":"98ced63517178a7454a3d316e7cc8c88bf0013efa1f3ac0da9ab85b491943a7b","impliedFormat":99},{"version":"26b5b9b6f2d6d8efdd491a4c6230a7438f569d430b8cd8e4dcc353d0390b32a1","impliedFormat":99},{"version":"6addbb18f70100a2de900bace1c800b8d760421cdd33c1d69ee290b71e28003d","impliedFormat":99},{"version":"37569cc8f21262ca62ec9d3aa8eb5740f96e1f325fad3d6aa00a19403bd27b96","impliedFormat":99},{"version":"a3a02af6bf055a1c70671eb327990588bdd005ee05d8a68ae38ce74b9370c9c8","impliedFormat":99},{"version":"5519711f89da62881065b3b045316f75ca04d713667d7507102e9a8a55d0ab69","impliedFormat":99},{"version":"8749361478f75470618edde2955ceb9503bd6b587804a22c39ff03a345772f96","impliedFormat":99},{"version":"3cf67fb81b084ade8c59e682a0ff4215af6f339e7d16e2ac559344fb39c6c1df","impliedFormat":99},{"version":"ba2af5a33443da91f980e9f7fc75ebf4febc8f1023426f4babd898cac69ab02e","impliedFormat":99},{"version":"3753bc72141cc5d39b902b71c020dbd3e93ab43e0e215fd9715d81c0eca377c6","impliedFormat":99},{"version":"178c9db1a10e3166f78925a7598da5aff848d39b03c6c0f10f83c352c3bbbf1c","impliedFormat":99},{"version":"87f5e8d7fd03cb91bf0edb73fc3c4680b7154ac6c55e0c86c918262790d93928","impliedFormat":99},{"version":"4a87226ed9827b9a716c5378b6792039fc6452c1728ea8b1a0a87f355f0652cd","impliedFormat":99},{"version":"e79e530a8216ee171b4aca8fc7b99bd37f5e84555cba57dc3de4cd57580ff21a","impliedFormat":99},{"version":"b2b60017c317b8899e7ffdefea0b26a65bf158c3252f003bd67c470ce0af05a2","impliedFormat":99},{"version":"149aafa8a2667e7852a6d3650a73f870ee6a59d31758831d61847ae65944d500","impliedFormat":99},{"version":"c93fab83dcf272ef437af0d69e912d8de3ac2edc4c61fd01084b7f2bcfb9f5bd","impliedFormat":99},{"version":"4ce53edb8fb1d2f8b2f6814084b773cdf5846f49bf5a426fbe4029327bda95bf","impliedFormat":99},{"version":"d2262802e354ac9561763b2ba271d3a8659bc625dd96ae66fb7793f650556541","impliedFormat":99},{"version":"3f3cf725b6433be4973f5c416bd5c0f4806d80143ef2ad7f1e5989d4ad1e079f","impliedFormat":99},{"version":"a4ae532127cb8bc37e70b25c791d540045aa8cc8efd6cead4f4a2581fdf555df","impliedFormat":99},{"version":"b0d52634f58f2f492190224b83b8c33154f4a109f288b83955e46f2bcff94206","impliedFormat":99},{"version":"5e88ee54e944f85569d8b2f60126bf1eb7e9ae3615b5b664bbf232ffa09d5b25","impliedFormat":99},{"version":"c8530af67f5c25dec3a19fc9e58daca10898c4b984feb58865aa2fb09895697a","impliedFormat":99},{"version":"505a24dccd8bfd250a9715caaa4ce191bc32f006ac9cffd5165e69d55a8b77a0","impliedFormat":99},{"version":"5ecbda647e10013c76485f88f667448219705cbe94cbeab65dd2be9d401ba3f1","impliedFormat":99},{"version":"8e6b58e09d587899fd6496494e4ac181f15e352567a9ea7a7bddcea7a7339a07","impliedFormat":99},{"version":"c4324eadfa94e3c745dbade89ad0329d9f8729a70a6bd8c82d816f70d397d0ff","impliedFormat":99},{"version":"1502a23e43fd7e9976a83195dc4eaf54acaff044687e0988a3bd4f19fc26b02b","impliedFormat":99},{"version":"f4068c36e43e33efb9fc2c58ed9e133fc3cf11584b26bef613df2e091ae4386a","impliedFormat":99},{"version":"54563e5c2fd984e23bdcd70783572d936b837e43f35632d3dd0decd1d0504c82","impliedFormat":99},{"version":"f26a747621a82d625547b6ffd977472ad2fdedb25c2fafbba8dbfd99be46add9","impliedFormat":99},{"version":"cd8536cfa229f8c86d44109f3a7127d3fe0364527319d09547da4cbe0ee1b73a","impliedFormat":99},{"version":"cbde0ed7818e1d6822b288a390057d2daf8b75d12b9a20a5c50b3521610e2217","impliedFormat":99},{"version":"380b4fe5dac74984ac6a58a116f7726bede1bdca7cec5362034c0b12971ac9c1","impliedFormat":99},{"version":"00de72aa7abede86b016f0b3bfbf767a08b5cff060991b0722d78b594a4c2105","impliedFormat":99},{"version":"e883b13fb3c8b71182e2028119de184e5cbdd9206ac19d852d58e3313eeca7f4","impliedFormat":99},{"version":"addbb1c7e385c98621870d24c7ef46dc3b9a66c63dba5d85a5439c4fc19e661b","impliedFormat":99},{"version":"03b7d82eb96f279b9fd2bfacf8318744dae6e8009a1af8489daf2dc6535bd9d0","impliedFormat":99},{"version":"966632b5a5bb1cd9f00d5d10a62c92e6d9150a27f4d9df3556f85b5c37884123","impliedFormat":99},{"version":"c396fa831e0dba3dbe29301b6166d79c885ee132f4562e90f6e938cb6f5645ce","impliedFormat":99},{"version":"3c1403ee559e4cd41af82947707321ede245d7cd4485777a53bf5785835adf1c","impliedFormat":99},{"version":"b55d62d770c71e52b44d0a4ed1eaa494681dbe26f30abef7145b3d9daabe2946","impliedFormat":99},{"version":"8ccffc5e457e8c41c0fb532335739f568a87c56dc59f01b1f7e61a127e0b58cd","impliedFormat":99},{"version":"955d32f45e1efe8484a88301ff6b12fefb0f3a43e8757177c8cb02ae481ddc6f","impliedFormat":99},{"version":"2b947a180301540d535664a520c96575a33d9e0cc3e912ad023f446f861fef9f","impliedFormat":99},{"version":"19097531864528184d387945ecdb8f7e12e0b253e0a3dbf00db8f972b00c2a6c","impliedFormat":99},{"version":"43199cd23948363fb37a45d3a158341384217a981562619f7705d39be03d31e9","impliedFormat":99},{"version":"ee6c401ea86c4cbaa2c7342a0b1723ae616048e966c7612b0d7066ec3f950fe7","impliedFormat":99},{"version":"6f7601119c447358e8ff8fd3d1af36a62b8a0296ed6c29538e5481648b937185","impliedFormat":99},{"version":"0947351f22dadf13a700c06cfdac9a586c2d4d7904248de56888391fcaf5ba19","impliedFormat":99},{"version":"a7449a56f6179bfd3326e7802ef53769d792dd8e09571a8e30101888d5adafef","impliedFormat":99},{"version":"97cbd360b12ac778c4ea6d76d1cc19d7356a7463656b423f073b11df97591a63","impliedFormat":99},{"version":"f1ef390de3fafbaa9d6d01b5d0f88294552166fe965fcaa1abeb9b42252eff51","impliedFormat":99},{"version":"9c608fb8849a9c271935bbcf702a59242a0463dd4d71f6d371f083c4ea81fc1a","impliedFormat":99},{"version":"e68d8c5a46d3a67665b76a656cfb5682f0000f095c29a2e877689d8f886feac4","impliedFormat":99},{"version":"fae9363df0838d353a7582bc44cf538ec52753d493e656efaf608721d8e09386","impliedFormat":99},{"version":"aea0e96f318cd8af050e71eb274fb4ea504583192533831f024bdc15acad9c0f","impliedFormat":99},{"version":"acbf13be7611c8edf93fbd3ce586e0956e3ebf79a91b120ffd15bfd241b48c89","impliedFormat":99},{"version":"1931281c732253669af6b31cf53cc949696ebed1fae249375f8897984ffbcbc8","impliedFormat":99},{"version":"3fa5555ec7cd38935bcba24974b0f4def8822222c2cb39fa51be8eafc30a665a","impliedFormat":99},{"version":"68cc9b9173b77641a3b0b560a805c3d2d88042765b9c0c5452d43f657307316b","impliedFormat":99},{"version":"2ea70047cd289b2c353849d7364b1b2427f23ab0cc73ca87155b6ac014fc85b7","impliedFormat":99},{"version":"13414acb2579ecc5d8d16e59693c540510a23af58840046b564862c893cdf54d","impliedFormat":99},{"version":"d3aba181129dc79d950f45616f6ff2c11b80057b226cfe328d36e1e2a6bca0d8","impliedFormat":99},{"version":"224ae4c94ea223b9712dd0e68561ca8b7b8a2d21413c6becc141f26d9cc47ab8","impliedFormat":99},{"version":"8446a1603e6c88aae28e5c16baea45c4acd0d6a4c1a38a3543dcbcf8aab2befd","impliedFormat":99},{"version":"f7e96ea986e74dec1ac7b33a1a9ee0860c1c09a872d7f44678f00afae8ff5b3d","impliedFormat":99},{"version":"9afdbff962338531162a4c1e4d4ab00e5f39c8fa5ff2105dd5bccc974238dff8","impliedFormat":99},{"version":"db08c1807e3ae065930d88a3449d926273816d019e6c2a534e82da14e796686d","impliedFormat":99},{"version":"c9e7eb59820f8c22a0a6da72367772cac71386493998d564f3f2c6e76fb6280f","impliedFormat":99},{"version":"9e5c7463fc0259a38938c9afbdeda92e802cff87560277fd3e385ad24663f214","impliedFormat":99},{"version":"fe1884d16a134c0dad72c88070d1f875ed50e4bbd37b14977e2255bcdbeabf7b","impliedFormat":99},{"version":"4e5e139fba4da00bcb86c1142527fa1602dffcfb938c61857a63cad04d4872d2","impliedFormat":99},{"version":"3f4a5512615a10bc1ced95b726be40375f84801eec2736e8642e0f377fe3e0a4","impliedFormat":99},{"version":"e2bbf393de54a618ee6d06ea390a9277f8aa6c1360782302a8020a6017d1ad80","impliedFormat":99},{"version":"373835afdc3d6443f05e2636ed274bdfe4351045bf6afc2ddbcd4a9c41db39ab","impliedFormat":99},{"version":"4ba724e66bdfc294cc8e87499b42f63cdc3b354122705d8d2c7e1371fecc3e93","impliedFormat":99},{"version":"b79e98f1f013fe611b0076d6628e0766c3fd7ceff79fff061b100563486b2feb","impliedFormat":99},{"version":"5aa8b50a334af93ff1bb3da686178871a7e27e03791d07fd6107980076ddb90e","impliedFormat":99},{"version":"62423031f8a01e15a8a7141b5786fd450d57b6a921032366c09c81d11e167306","impliedFormat":99},{"version":"7879aa1a06fd399f58482958af0b7c4eb6410131d20d07d3699258013d8ff45e","impliedFormat":99},{"version":"25c1448dafc60e4ee55022d86c9deb322b669b93743a01f415c7f3974e5eb265","impliedFormat":99},{"version":"43ac78f8e0c5defecc2e501f77d1e61d078c79975af401702c16b9828ab12ca8","impliedFormat":99},{"version":"ce7fb4fdf24dcaebb1fdcf2f36cf954da3b53d8f06fca67b89ef50898eeca489","impliedFormat":99},{"version":"fb83d38e7427dd1c7b1e63e2445d99af8f4544bc2d933ba2ecd6ddc87960e3a0","impliedFormat":99},{"version":"dcab5635cd67fbabb85fff25d7cebbe7f5ab4aaecba0d076376a467a628a892d","impliedFormat":99},{"version":"c8698ce13a61d68036ac8eb97141c168b619d80f3c1a5c6c435fe5b7700a7ece","impliedFormat":99},{"version":"7b90746131607190763112f9edb5f3319b6b2a695c2fa7a8d0227d9486e934c7","impliedFormat":99},{"version":"269b06e0b7605316080b5e34602dee2f228400076950bd58c56ffad1300a1ff1","impliedFormat":99},{"version":"2000d0ab5e4203f1909f85426212757fbcd94a0e91cfb4a47d44c297a8545379","impliedFormat":99},{"version":"73e7fad963b6273a64a9db125286890871f8cf11c8e8a0c6ace94f2fa476c260","impliedFormat":99},{"version":"8496476b1f719d9f197069fe18932133870a73e3aacf7e234c460e886e33a04d","impliedFormat":99},{"version":"3cb5ccb27576538fb71adba1fa647da73fae5d80c6cf6a76e1a229a0a8580ede","impliedFormat":99},{"version":"e66490a581bea6aeaa5779a10f3b59e2d021a46c1920713ae063baaba89e9a57","impliedFormat":99},{"version":"aea830b89cbed15feb1a4f82e944a18e4de8cecc8e1fbfaf480946265714e94e","impliedFormat":99},{"version":"1600536cd61f84efed3bb5e803df52c3fc13b3e1727d3230738476bcb179f176","impliedFormat":99},{"version":"b350b567766483689603b5df1b91ccaab40bb0b1089835265c21e1c290370e7e","impliedFormat":99},{"version":"d5a3e982d9d5610f7711be40d0c5da0f06bbb6bd50c154012ac1e6ce534561da","impliedFormat":99},{"version":"ddbe1301fdf5670f0319b7fb1d2567dc08da0343cb16bf95dc63108922c781dc","impliedFormat":99},{"version":"ff5321e692b2310e1eb714e2bc787d30c45f7b47b96665549953ccfd5b0b6d55","impliedFormat":99},{"version":"8a0e4db16deae4e4d8c91ee6e5027b85899b6431ace9f2d5cec7d590170d83cd","impliedFormat":99},{"version":"c6d6182d16bf45a4875bf8e64a755eb3997faeb1dfc7ef6c5ead3096f4922cb6","impliedFormat":99},{"version":"d5585e9bae6909f69918ea370d6003887ea379663001afccca14c0f1f9e3243f","impliedFormat":99},{"version":"2103118e29cf7d25535bde1bae30667a27891aae1e6898df5f42fd84775ae852","impliedFormat":99},{"version":"58c28d9cb640cac0b9a3e46449e134b137ec132c315f8cb8041a1132202c6ff1","impliedFormat":99},{"version":"d7efb2609ff11f5b746238d42a621afcfb489a9f26ac31da9dff1ab3c55fc8f3","impliedFormat":99},{"version":"556b4615c5bf4e83a73cbf5b8670cb9b8fd46ee2439e2da75e869f29e79c4145","impliedFormat":99},{"version":"51fc38fbb3e2793ec77ef8ffa886530b1fed9118df02943679f1c4a7479f565d","impliedFormat":99},{"version":"03a4f9132fe1ffa58f1889e3a2f8ae047dcb6d0a1a52aa2454de84edc705e918","impliedFormat":99},{"version":"437dd98ff7257140b495b4ff5911da0363a26f2d59df1042d6849ecb42c1ee84","impliedFormat":99},{"version":"8345eadc4cceddc707e9e386c4ad19df40ed6a1e47f07e3f44d8ecf4fe06d37f","impliedFormat":99},{"version":"2df69f11080a8916d3d570f75ddf5c51e701fc408fd1f07629c2f9a20f37f1ea","impliedFormat":99},{"version":"2c19fb4e886b618b989d1f28d4ee4bee16296f0521d800b93fd20e7c013344fe","impliedFormat":99},{"version":"61085fe7d6889b5fc65c30c49506a240f5fbb1d51024f4b79eef12254e374e76","impliedFormat":99},{"version":"aad42bbf26fe21915c6a0f90ef5c8f1e9972771a22f0ea0e0f3658e696d01717","impliedFormat":99},{"version":"7a504df16e0b4b65f4c1f20f584df45bc75301e8e35c8a800bcdec83fc59e340","impliedFormat":99},{"version":"37077b8bf4928dcc3effd21898b9b54fa7b4b55ff40d2e0df844c11aed58197b","impliedFormat":99},{"version":"a508144cd34322c6ad98f75b909ba18fa764db86c32e7098f6a786a5dcca7e03","impliedFormat":99},{"version":"021bf96e46520559d2d9cc3d6d12fb03ca82598e910876fdb7ee2f708add4ce9","impliedFormat":99},{"version":"44cbc604b6e5c96d23704a6b3228bd7ca970b8b982f7b240b1c6d975b2753e4c","impliedFormat":99},{"version":"7bfb0450c4de8f1d62b11e05bbfdc3b25ccb9d0c39ae730233b6c93d1d47aea2","impliedFormat":99},{"version":"51696f7c8c3794dcf5f0250f43eda013d588f0db74b102def76d3055e039afff","impliedFormat":99},{"version":"1101402feff3c606f37fe36028b998e0da1b00eef9d039275d01390f462d1d69","impliedFormat":99},{"version":"39d8d14a745c2a567b8c25d24bb06d76dbffc5409ab1f348fde5bc1290abd690","impliedFormat":99},{"version":"6d9aeea6853ed156d226f2411d82cb1951c8bb81c7a882eeb92083f974f15197","impliedFormat":99},{"version":"1fed41ee4ba0fb55df2fbf9c26ec1b560179ea6227709742ec83f415cebef33e","impliedFormat":99},{"version":"d5982015553b9672974a08f12fc21dcee67d812eeb626fcaf19930bc25c2a709","impliedFormat":99},{"version":"6ad9d297c0feca586c7b55e52dbd5015f0e92001a80105059b092a1d3ecfc105","impliedFormat":99},{"version":"13fa4f4ee721c2740a26fe7058501c9ba10c34398cdf47ad73431b3951eea4e2","impliedFormat":99},{"version":"3a9b807bd0e0b0cd0e4b6028bec2301838a8d172bcc7f18f2205b9974c5d1ecc","impliedFormat":99},{"version":"8c5b994a640ef2a5f6c551d1b53b00fbbd893a1743cbae010e922ac32e207737","impliedFormat":99},{"version":"688424fbbef17ee891e1066c3fb04d61d0d0f68be31a70123415f824b633720a","impliedFormat":99},{"version":"25eafa9f24b7d938a895ab15ed5d295bc000187d4a6aa5bfd310f32ba2d4eea5","impliedFormat":99},{"version":"d9df062c57b3795e2cae045c72a881fb24c4137cea283557669d3e393aa10031","impliedFormat":99},{"version":"72f4b1dc4c34418935d4d87a90486b86d5450286139e4c25eeee8b905d2886b2","impliedFormat":99},{"version":"92efd5d38691eece63952e89297adcc9cb4c9b8878d635c76d5473c20489fd4d","impliedFormat":99},{"version":"a4b4d0ac8882e2d857f76f75ca33694d315715cdc19d275ac37e9ef2a8d8693b","impliedFormat":99},{"version":"e185a44b6e46dc9621704f471ed0a39b56ce5b5027dbc81949b67cbcb59da7d0","impliedFormat":99},{"version":"5102e449a65c1f816d6ac1199b683f9ddf21b107f4eec5ce8316e957350d1b8d","impliedFormat":99},{"version":"73397fcaa8afa955ae1ac27c8ff5473418195ecacc90b275abbac0b8099b7e91","impliedFormat":99},{"version":"3a8b3e4e8ee1784e46e8151b4b0717b8a22e045b20257ad4491815f7cdb3ab22","impliedFormat":99},{"version":"823a190056fa78cfe888a24a0679624cfc36cab0ce9cfc875b1856e8a535bc9f","impliedFormat":99},{"version":"28b5d252374af23b8db3d80154078d76ab4af7635d6f20ec892cf86651bb5f52","impliedFormat":99},{"version":"d6d72de42c0a81f3d22b71fca1ff348f4bc3a50deb9382ebdfd71214794ec58e","impliedFormat":99},{"version":"1a4fae85bd066e1f57250ecd3be398f45c0ee35fd639d1a91f2b816ad37cf4db","impliedFormat":99},{"version":"e8065cc0b1c821d3dcd8b045a03412ab03e6002bbbfd5b379e0a8e3624c1a2f7","impliedFormat":99},{"version":"8fd5a1b91763e73f5d30ecdfe66da4400b6b6c18af619e7f7230d72e49959935","impliedFormat":99},{"version":"be02a1d8cdd4905919e1a26ce668a51e726f381ed12e8f4236f000b9f8ec126b","impliedFormat":99},{"version":"8dd4181760665479df5a7b45c09142c96296fe9dee0f7df9013408b909c508bf","impliedFormat":99},{"version":"3ea52decded1435d9b57b183b74618922bfc8ef0ac6717280e5657e2a134cd50","impliedFormat":99},{"version":"3828353b7c352649166506cefb1bc4de2d98591796e4b7afda4650eadefb3c2b","impliedFormat":99},{"version":"c6fb620f7d3160662e9bae07262b192fd257259220c46b090c84b7e7f02e2da3","impliedFormat":99},{"version":"2a7bd12de58b9b8cb10dabf6c1eb933b4d4efe1d1b57dcc541f43061d0e0f70b","impliedFormat":99},{"version":"0e8e5b2568b6b1bebacc2b4a10d84badf973554f069ded173c88c59d74ce7524","impliedFormat":99},{"version":"f3159181773938d1ecd732e44ce25abe7e5c08dd1d90770e2fd9f8b92fab6c22","impliedFormat":99},{"version":"a574154c958cdaaee26294e338024932d9cc403bae2d85ff1de76363aad04bbe","impliedFormat":99},{"version":"5fa60c104a981a5430b937b09b5b9a06ceb392f6bb724d4a2f527c60f6f768b8","impliedFormat":99},{"version":"006dabdcdcc1f1fa70b71da50791f380603dd2fe2ef3da9dec4f70c8c7a72fd9","impliedFormat":99},{"version":"8fa1dc3b4a2f43c688f6f4cf1721e1d26d641ef322c14adac867ecfa41aa2109","impliedFormat":99},{"version":"e351fc610efbbdbe1d92a7df4b75e0bc4b7678ee3585f416df1e0cc8894d2b20","impliedFormat":99},{"version":"33c06a102df241666a34e69fe5f9a6808e575d684fcfcf95886d470517a456cd","impliedFormat":99},{"version":"404818f4f7cfc01054eeb0a3568da67a02b67b9ed375e745fdc20c2c22ad9f9b","impliedFormat":99},{"version":"40d820544765762c7770eba3b12c326f01d787fc3584b53cb20ce5dd813d9946","impliedFormat":99},{"version":"586f4a88fffdfa6f4d2e2fae23d55c946d4aad8c81573aa851b18884b185b67e","impliedFormat":99},{"version":"ad4b3aa66c7d3c3e7a5fb2126ca0aedafcded91b2d175fca89f50fcb6d3a1258","impliedFormat":99},{"version":"8e012265839f6acdd4a3321d7fe476c258f49a85ffe15645c5352434b68b6dac","impliedFormat":99},"354411ca4c735992a8213674377a83834048f19c5f048b0c46ae0997da82dfce",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},"97c42b5f1485483263bbaf224e76aef9851435f594113af66a1f0eb5bcebf4b1",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},"f68d00b274c50241259ad07710d910084bd93fa91186a4caf38f40bc5ddabf9c",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"1c8516eee2f6d7c7cfe4c0f6ff27fec3a71f4f879b3fd8bab5a369795cbb8116","impliedFormat":1},{"version":"950aa6403b976269ebb3e0dd4c7162e4c7652e07993de0a7b1414511a71257cb","impliedFormat":1},{"version":"c8b43ee8063949a59d37aeffd48fcaa756cf271c313bfec11dfdde15bf58fe85","impliedFormat":1},{"version":"243aeeb39ef9a78a548318798e4d72acec54b5ded559fc731b83f8fcc829f921","impliedFormat":1},{"version":"5f9a45c42848fe4e9b95219e8933acbb6699d1b8563dc4516a458fedc0f4f632","impliedFormat":1},{"version":"bac6a388d308d38e6c2471d5f788049e30fe769bd41bae9a6ef09e03df1363da","impliedFormat":1},{"version":"4d930f93b3e8b89db9e31ad41999073eedc639efe8ef13e6c7a3d461ab614eb3","impliedFormat":1},{"version":"875b4251f606756bc96140763ac3b23d25644fda2ac08390f15c666fa4f15cab","impliedFormat":1},{"version":"0430fdb63d75ab2ba5c9d40a74aed94c1e16d78eb37ec2e8fc5fc2a92c086bfd","impliedFormat":1},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"b60bf55f68909af65363e77b67960fa30be6a372f0fa472cc0b2e8ef3da86db8","signature":"6668ae4b3ec8f0a1a80949ea64b76f1dc1d3c7ed09ab3522a043897a919fdbec"},{"version":"13bd111aecd45e699c9061ccee8cb87c8502da65a669a4b40260a86df67d9e57","impliedFormat":99},"0d368286a22559d63699ddbb9b98fee5caa522833e81715616462dae83ee5aba","b217ee73ffd0be0c96515da789c7dd091a07faf0944bfb94e59030f6b36eeb26","af987692901a73c952fa29a7cc9b64f84d6e48298651d1a5eccb88a4b07e72d1","4980a543ae6227079c803b59c8ad62af89e6f51d5778db5c73a6f18eb25f709f",{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bb4105d0ea2ab2bfcb4f77ff8585691d5569c90ae15f4fa8d5ff9fb42b910b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"456fa0c0ab68731564917642b977c71c3b7682240685b118652fb9253c9a6429","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"7b988bc259155186e6b09dd8b32856d9e45c8d261e63c19abaf590bb6550f922","affectsGlobalScope":true,"impliedFormat":1},{"version":"fe7b52f993f9336b595190f3c1fcc259bb2cf6dcb4ac8fdb1e0454cc5df7301e","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"81711af669f63d43ccb4c08e15beda796656dd46673d0def001c7055db53852d","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"bdba81959361810be44bcfdd283f4d601e406ab5ad1d2bdff0ed480cf983c9d7","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"b326f4813b90d230ec3950f66bd5b5ce3971aac5fac67cfafc54aa07b39fd07f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c8420c7c2b778b334587a4c0311833b5212ff2f684ea37b2f0e2b117f1d7210d","impliedFormat":1},{"version":"b6b08215821c9833b0e8e30ea1ed178009f2f3ff5d7fae3865ee42f97cc87784","impliedFormat":1},{"version":"3f735210f444dc3fd2d4d2f020d195fe827dad5e30a6d743807c5d1de3a2be73","impliedFormat":1},{"version":"73cf6cc19f16c0191e4e9d497ab0c11c7b38f1ca3f01ad0f09a3a5a971aac4b8","impliedFormat":1},{"version":"3e81d8b837057db6f9c82263e0ef7e5b9a55437342e7028eb8003199ccc69604","impliedFormat":1},{"version":"ed58b9974bb3114f39806c9c2c6258c4ffa6a255921976a7c53dfa94bf178f42","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9727a118ce60808e62457c89762fe5a4e2be8e9fd0112d12432d1bafdba942f","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"3a90b9beac4c2bfdf6517faae0940a042b81652badf747df0a7c7593456f6ebe","impliedFormat":1},{"version":"8302157cd431b3943eed09ad439b4441826c673d9f870dcb0e1f48e891a4211e","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"a5890565ed564c7b29eb1b1038d4e10c03a3f5231b0a8d48fea4b41ab19f4f46","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"cee74f5970ffc01041e5bffc3f324c20450534af4054d2c043cb49dbbd4ec8f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a654e0d950353614ba4637a8de4f9d367903a0692b748e11fccf8c880c99735","affectsGlobalScope":true,"impliedFormat":1},{"version":"42da246c46ca3fd421b6fd88bb4466cda7137cf33e87ba5ceeded30219c428bd","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"163c03007bbc630ef15404b1ed9ca327d46236be8d7239c0565f2a3e133de0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"db3d77167a7da6c5ba0c51c5b654820e3464093f21724ccd774c0b9bc3f81bc0","impliedFormat":1},{"version":"bdf1feb266c87edbee61f12ceaaef60ab0e2e5dba70ca19360b6448911c53d52","impliedFormat":1}],"root":[60,268,[270,276],[278,281],[655,660],670,671,[673,676]],"options":{"allowJs":true,"composite":false,"declaration":false,"declarationMap":false,"experimentalDecorators":true,"inlineSourceMap":false,"inlineSources":false,"jsx":4,"module":99,"noEmitOnError":false,"outDir":"../../../..","removeComments":false,"skipLibCheck":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":false},"referencedMap":[[60,1],[675,2],[260,3],[265,4],[262,5],[267,1],[264,6],[259,6],[261,1],[256,7],[63,8],[255,9],[253,10],[62,1],[61,1],[258,11],[254,1],[672,12],[257,1],[269,13],[263,14],[266,15],[335,1],[282,1],[284,16],[285,16],[283,1],[287,17],[288,17],[286,1],[289,1],[290,18],[291,19],[292,19],[293,1],[294,1],[295,1],[302,1],[296,1],[297,18],[298,1],[299,1],[300,20],[303,21],[307,22],[304,23],[301,1],[305,24],[306,25],[308,1],[309,18],[310,18],[311,18],[312,18],[313,18],[314,18],[315,18],[316,18],[317,18],[318,18],[319,26],[320,1],[322,27],[323,18],[344,28],[338,29],[340,29],[339,30],[336,31],[337,32],[342,1],[341,1],[343,1],[324,33],[325,1],[328,1],[331,1],[326,1],[333,1],[334,34],[330,1],[327,1],[329,1],[332,1],[321,1],[349,1],[351,35],[352,35],[353,1],[354,1],[356,36],[357,1],[358,1],[359,35],[360,1],[361,1],[362,37],[363,1],[364,1],[365,38],[366,1],[367,39],[368,1],[369,1],[370,1],[371,1],[374,1],[373,40],[350,1],[375,41],[376,1],[372,1],[377,1],[378,35],[379,42],[380,43],[355,1],[727,44],[728,44],[729,45],[682,46],[730,47],[731,48],[732,49],[677,1],[680,50],[678,1],[679,1],[733,51],[734,52],[735,53],[736,54],[737,55],[738,56],[739,56],[740,57],[741,58],[742,59],[743,60],[683,1],[681,1],[744,61],[745,62],[746,63],[779,64],[747,65],[748,66],[749,67],[750,68],[751,69],[752,70],[753,71],[754,72],[755,73],[756,74],[757,74],[758,75],[759,1],[760,1],[761,76],[763,77],[762,78],[764,79],[765,80],[766,81],[767,82],[768,83],[769,84],[770,85],[771,86],[772,87],[773,88],[774,89],[775,90],[776,91],[684,1],[685,1],[686,1],[724,92],[725,1],[726,1],[777,93],[778,94],[346,1],[668,95],[669,96],[667,97],[665,13],[666,13],[662,95],[661,1],[646,98],[642,1],[643,1],[641,1],[644,1],[645,1],[647,1],[639,1],[640,99],[648,100],[347,101],[277,102],[348,103],[570,104],[569,105],[567,106],[568,104],[571,1],[651,107],[650,1],[654,108],[652,109],[345,110],[653,111],[572,112],[649,113],[638,114],[574,115],[634,115],[575,115],[576,115],[577,115],[578,115],[631,115],[635,115],[579,115],[580,115],[581,115],[582,115],[583,115],[584,115],[636,115],[585,115],[586,115],[630,115],[587,115],[588,115],[589,115],[590,115],[591,115],[592,115],[593,115],[594,115],[595,115],[596,115],[597,115],[598,115],[633,115],[599,115],[600,115],[601,115],[602,115],[603,115],[604,115],[637,115],[605,115],[606,115],[607,115],[608,115],[609,115],[610,115],[632,115],[611,115],[612,115],[613,115],[614,115],[615,115],[616,115],[617,115],[618,115],[619,115],[620,115],[621,115],[622,115],[623,115],[624,115],[625,115],[626,115],[627,115],[628,115],[629,115],[573,116],[565,117],[566,118],[664,119],[663,1],[252,120],[225,1],[203,121],[201,121],[251,122],[216,123],[215,123],[116,124],[67,125],[223,124],[224,124],[226,126],[227,124],[228,127],[127,128],[229,124],[200,124],[230,124],[231,129],[232,124],[233,123],[234,130],[235,124],[236,124],[237,124],[238,124],[239,123],[240,124],[241,124],[242,124],[243,124],[244,131],[245,124],[246,124],[247,124],[248,124],[249,124],[66,122],[69,127],[70,127],[71,127],[72,127],[73,127],[74,127],[75,127],[76,124],[78,132],[79,127],[77,127],[80,127],[81,127],[82,127],[83,127],[84,127],[85,127],[86,124],[87,127],[88,127],[89,127],[90,127],[91,127],[92,124],[93,127],[94,127],[95,127],[96,127],[97,127],[98,127],[99,124],[101,133],[100,127],[102,127],[103,127],[104,127],[105,127],[106,131],[107,124],[108,124],[122,134],[110,135],[111,127],[112,127],[113,124],[114,127],[115,127],[117,136],[118,127],[119,127],[120,127],[121,127],[123,127],[124,127],[125,127],[126,127],[128,137],[129,127],[130,127],[131,127],[132,124],[133,127],[134,138],[135,138],[136,138],[137,124],[138,127],[139,127],[140,127],[145,127],[141,127],[142,124],[143,127],[144,124],[146,127],[147,127],[148,127],[149,127],[150,127],[151,127],[152,124],[153,127],[154,127],[155,127],[156,127],[157,127],[158,127],[159,127],[160,127],[161,127],[162,127],[163,127],[164,127],[165,127],[166,127],[167,127],[168,127],[169,139],[170,127],[171,127],[172,127],[173,127],[174,127],[175,127],[176,124],[177,124],[178,124],[179,124],[180,124],[181,127],[182,127],[183,127],[184,127],[202,140],[250,124],[187,141],[186,142],[210,143],[209,144],[205,145],[204,144],[206,146],[195,147],[193,148],[208,149],[207,146],[194,1],[196,150],[109,151],[65,152],[64,127],[199,1],[191,153],[192,154],[189,1],[190,155],[188,127],[197,156],[68,157],[217,1],[218,1],[211,1],[214,123],[213,1],[219,1],[220,1],[212,158],[221,1],[222,1],[185,159],[198,160],[406,1],[564,161],[419,162],[526,163],[420,164],[522,1],[485,165],[456,166],[441,167],[523,1],[464,1],[473,1],[495,168],[383,1],[535,169],[537,170],[536,171],[385,1],[478,172],[477,173],[480,174],[479,175],[439,1],[558,1],[539,176],[543,177],[541,178],[388,179],[389,179],[390,1],[442,180],[492,181],[491,1],[504,182],[429,183],[563,1],[474,184],[562,1],[498,1],[487,1],[556,185],[559,1],[422,186],[421,187],[507,188],[511,189],[396,190],[514,191],[519,192],[391,193],[520,194],[528,195],[521,196],[398,194],[555,197],[518,198],[517,199],[401,200],[402,1],[428,201],[426,202],[427,203],[417,204],[425,205],[424,206],[400,207],[465,1],[392,1],[412,1],[403,1],[404,208],[408,209],[530,164],[397,1],[409,1],[533,192],[393,192],[532,192],[509,210],[508,211],[475,212],[529,1],[449,194],[410,195],[531,164],[513,213],[490,1],[482,1],[384,1],[497,214],[496,215],[540,178],[544,216],[542,217],[503,1],[387,218],[557,1],[484,186],[423,219],[502,220],[501,1],[457,221],[444,222],[445,1],[416,223],[488,224],[489,224],[431,225],[432,1],[440,1],[405,226],[459,227],[414,1],[394,228],[418,229],[506,230],[560,231],[451,232],[460,233],[545,171],[547,234],[546,234],[454,235],[455,236],[415,1],[381,1],[463,1],[462,237],[510,238],[505,1],[538,239],[553,237],[447,240],[430,241],[446,240],[448,242],[452,237],[395,188],[500,243],[551,244],[524,245],[471,246],[470,1],[466,247],[494,248],[467,247],[469,249],[468,250],[493,196],[527,251],[525,252],[443,253],[413,1],[450,254],[548,178],[550,216],[549,217],[552,255],[515,256],[554,257],[486,258],[481,1],[499,259],[453,260],[483,261],[436,1],[407,262],[411,237],[561,1],[476,263],[516,1],[382,1],[461,237],[386,1],[458,264],[399,1],[435,1],[433,1],[434,1],[472,1],[534,265],[438,237],[512,189],[437,266],[58,1],[59,1],[10,1],[11,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[22,1],[23,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[57,1],[56,1],[1,1],[702,267],[712,268],[701,267],[722,269],[693,270],[692,271],[721,272],[715,273],[720,274],[695,275],[709,276],[694,277],[718,278],[690,279],[689,272],[719,280],[691,281],[696,282],[697,1],[700,282],[687,1],[723,283],[713,284],[704,285],[705,286],[707,287],[703,288],[706,289],[716,272],[698,290],[699,291],[708,292],[688,293],[711,284],[710,282],[714,1],[717,294],[268,1],[674,295],[279,1],[280,296],[656,1],[657,297],[660,1],[673,298],[281,1],[655,299],[658,1],[659,300],[670,1],[671,301],[276,1],[278,302],[270,1],[275,303],[271,1],[274,304],[272,1],[273,305],[676,1]],"semanticDiagnosticsPerFile":[60,268,270,271,272,276,279,280,281,655,656,657,658,659,660,670,673,674,675],"affectedFilesPendingEmit":[60,675,268,674,279,280,656,657,660,673,281,655,658,659,670,671,276,278,270,275,271,274,272,273],"version":"5.8.3"} \ No newline at end of file diff --git a/.angular/cache/20.3.2/app/angular-compiler.db b/.angular/cache/20.3.2/app/angular-compiler.db new file mode 100644 index 0000000..26910f2 Binary files /dev/null and b/.angular/cache/20.3.2/app/angular-compiler.db differ diff --git a/.angular/cache/20.3.2/app/angular-compiler.db-lock b/.angular/cache/20.3.2/app/angular-compiler.db-lock new file mode 100644 index 0000000..8ec8aa7 Binary files /dev/null and b/.angular/cache/20.3.2/app/angular-compiler.db-lock differ diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_common.js b/.angular/cache/20.3.2/app/vite/deps/@angular_common.js new file mode 100644 index 0000000..d3478b4 --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_common.js @@ -0,0 +1,205 @@ +import { + APP_BASE_HREF, + AsyncPipe, + BrowserPlatformLocation, + CommonModule, + CurrencyPipe, + DATE_PIPE_DEFAULT_OPTIONS, + DATE_PIPE_DEFAULT_TIMEZONE, + DatePipe, + DecimalPipe, + DomAdapter, + FormStyle, + FormatWidth, + HashLocationStrategy, + I18nPluralPipe, + I18nSelectPipe, + IMAGE_LOADER, + JsonPipe, + KeyValuePipe, + LOCATION_INITIALIZED, + Location, + LocationStrategy, + LowerCasePipe, + NgClass, + NgComponentOutlet, + NgForOf, + NgForOfContext, + NgIf, + NgIfContext, + NgLocaleLocalization, + NgLocalization, + NgOptimizedImage, + NgPlural, + NgPluralCase, + NgStyle, + NgSwitch, + NgSwitchCase, + NgSwitchDefault, + NgTemplateOutlet, + NullViewportScroller, + NumberFormatStyle, + NumberSymbol, + PLATFORM_BROWSER_ID, + PLATFORM_SERVER_ID, + PRECONNECT_CHECK_BLOCKLIST, + PathLocationStrategy, + PercentPipe, + PlatformLocation, + PlatformNavigation, + Plural, + SlicePipe, + TitleCasePipe, + TranslationWidth, + UpperCasePipe, + VERSION, + ViewportScroller, + WeekDay, + formatCurrency, + formatDate, + formatNumber, + formatPercent, + getCurrencySymbol, + getDOM, + getLocaleCurrencyCode, + getLocaleCurrencyName, + getLocaleCurrencySymbol, + getLocaleDateFormat, + getLocaleDateTimeFormat, + getLocaleDayNames, + getLocaleDayPeriods, + getLocaleDirection, + getLocaleEraNames, + getLocaleExtraDayPeriodRules, + getLocaleExtraDayPeriods, + getLocaleFirstDayOfWeek, + getLocaleId, + getLocaleMonthNames, + getLocaleNumberFormat, + getLocaleNumberSymbol, + getLocalePluralCase, + getLocaleTimeFormat, + getLocaleWeekEndRange, + getNumberOfCurrencyDigits, + isPlatformBrowser, + isPlatformServer, + normalizeQueryParams, + provideCloudflareLoader, + provideCloudinaryLoader, + provideImageKitLoader, + provideImgixLoader, + provideNetlifyLoader, + registerLocaleData, + setRootDomAdapter +} from "./chunk-NNL7YDF7.js"; +import { + XhrFactory, + parseCookieValue +} from "./chunk-ZJ25XCV3.js"; +import { + IMAGE_CONFIG +} from "./chunk-A3W7CVOL.js"; +import { + DOCUMENT +} from "./chunk-M4YA2FTX.js"; +import "./chunk-RSS3ODKE.js"; +import "./chunk-TKSB4YUA.js"; +export { + APP_BASE_HREF, + AsyncPipe, + BrowserPlatformLocation, + CommonModule, + CurrencyPipe, + DATE_PIPE_DEFAULT_OPTIONS, + DATE_PIPE_DEFAULT_TIMEZONE, + DOCUMENT, + DatePipe, + DecimalPipe, + FormStyle, + FormatWidth, + HashLocationStrategy, + I18nPluralPipe, + I18nSelectPipe, + IMAGE_CONFIG, + IMAGE_LOADER, + JsonPipe, + KeyValuePipe, + LOCATION_INITIALIZED, + Location, + LocationStrategy, + LowerCasePipe, + NgClass, + NgComponentOutlet, + NgForOf as NgFor, + NgForOf, + NgForOfContext, + NgIf, + NgIfContext, + NgLocaleLocalization, + NgLocalization, + NgOptimizedImage, + NgPlural, + NgPluralCase, + NgStyle, + NgSwitch, + NgSwitchCase, + NgSwitchDefault, + NgTemplateOutlet, + NumberFormatStyle, + NumberSymbol, + PRECONNECT_CHECK_BLOCKLIST, + PathLocationStrategy, + PercentPipe, + PlatformLocation, + Plural, + SlicePipe, + TitleCasePipe, + TranslationWidth, + UpperCasePipe, + VERSION, + ViewportScroller, + WeekDay, + XhrFactory, + formatCurrency, + formatDate, + formatNumber, + formatPercent, + getCurrencySymbol, + getLocaleCurrencyCode, + getLocaleCurrencyName, + getLocaleCurrencySymbol, + getLocaleDateFormat, + getLocaleDateTimeFormat, + getLocaleDayNames, + getLocaleDayPeriods, + getLocaleDirection, + getLocaleEraNames, + getLocaleExtraDayPeriodRules, + getLocaleExtraDayPeriods, + getLocaleFirstDayOfWeek, + getLocaleId, + getLocaleMonthNames, + getLocaleNumberFormat, + getLocaleNumberSymbol, + getLocalePluralCase, + getLocaleTimeFormat, + getLocaleWeekEndRange, + getNumberOfCurrencyDigits, + isPlatformBrowser, + isPlatformServer, + provideCloudflareLoader, + provideCloudinaryLoader, + provideImageKitLoader, + provideImgixLoader, + provideNetlifyLoader, + registerLocaleData, + DomAdapter as ɵDomAdapter, + NullViewportScroller as ɵNullViewportScroller, + PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, + PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, + PlatformNavigation as ɵPlatformNavigation, + getDOM as ɵgetDOM, + normalizeQueryParams as ɵnormalizeQueryParams, + parseCookieValue as ɵparseCookieValue, + setRootDomAdapter as ɵsetRootDomAdapter +}; diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_common.js.map b/.angular/cache/20.3.2/app/vite/deps/@angular_common.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_common.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_common_http.js b/.angular/cache/20.3.2/app/vite/deps/@angular_common_http.js new file mode 100644 index 0000000..d1894aa --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_common_http.js @@ -0,0 +1,88 @@ +import { + FetchBackend, + HTTP_INTERCEPTORS, + HTTP_ROOT_INTERCEPTOR_FNS, + HTTP_TRANSFER_CACHE_ORIGIN_MAP, + HttpBackend, + HttpClient, + HttpClientJsonpModule, + HttpClientModule, + HttpClientXsrfModule, + HttpContext, + HttpContextToken, + HttpErrorResponse, + HttpEventType, + HttpFeatureKind, + HttpHandler, + HttpHeaderResponse, + HttpHeaders, + HttpInterceptorHandler, + HttpParams, + HttpRequest, + HttpResponse, + HttpResponseBase, + HttpStatusCode, + HttpUrlEncodingCodec, + HttpXhrBackend, + HttpXsrfTokenExtractor, + JsonpClientBackend, + JsonpInterceptor, + REQUESTS_CONTRIBUTE_TO_STABILITY, + httpResource, + provideHttpClient, + withFetch, + withHttpTransferCache, + withInterceptors, + withInterceptorsFromDi, + withJsonpSupport, + withNoXsrfProtection, + withRequestsMadeViaParent, + withXsrfConfiguration +} from "./chunk-QEGKXTBA.js"; +import "./chunk-ZJ25XCV3.js"; +import "./chunk-A3W7CVOL.js"; +import "./chunk-M4YA2FTX.js"; +import "./chunk-RSS3ODKE.js"; +import "./chunk-TKSB4YUA.js"; +export { + FetchBackend, + HTTP_INTERCEPTORS, + HTTP_TRANSFER_CACHE_ORIGIN_MAP, + HttpBackend, + HttpClient, + HttpClientJsonpModule, + HttpClientModule, + HttpClientXsrfModule, + HttpContext, + HttpContextToken, + HttpErrorResponse, + HttpEventType, + HttpFeatureKind, + HttpHandler, + HttpHeaderResponse, + HttpHeaders, + HttpParams, + HttpRequest, + HttpResponse, + HttpResponseBase, + HttpStatusCode, + HttpUrlEncodingCodec, + HttpXhrBackend, + HttpXsrfTokenExtractor, + JsonpClientBackend, + JsonpInterceptor, + httpResource, + provideHttpClient, + withFetch, + withInterceptors, + withInterceptorsFromDi, + withJsonpSupport, + withNoXsrfProtection, + withRequestsMadeViaParent, + withXsrfConfiguration, + HTTP_ROOT_INTERCEPTOR_FNS as ɵHTTP_ROOT_INTERCEPTOR_FNS, + HttpInterceptorHandler as ɵHttpInterceptingHandler, + HttpInterceptorHandler as ɵHttpInterceptorHandler, + REQUESTS_CONTRIBUTE_TO_STABILITY as ɵREQUESTS_CONTRIBUTE_TO_STABILITY, + withHttpTransferCache as ɵwithHttpTransferCache +}; diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_common_http.js.map b/.angular/cache/20.3.2/app/vite/deps/@angular_common_http.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_common_http.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_common_locales_fr.js b/.angular/cache/20.3.2/app/vite/deps/@angular_common_locales_fr.js new file mode 100644 index 0000000..0e92fad --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_common_locales_fr.js @@ -0,0 +1,28 @@ +import "./chunk-TKSB4YUA.js"; + +// node_modules/@angular/common/locales/fr.js +var u = void 0; +function plural(val) { + const n = val, i = Math.floor(Math.abs(val)), v = val.toString().replace(/^[^.]*\.?/, "").length, e = parseInt(val.toString().replace(/^[^e]*(e([-+]?\d+))?/, "$2")) || 0; + if (i === 0 || i === 1) + return 1; + if (e === 0 && (!(i === 0) && (i % 1e6 === 0 && v === 0)) || !(e >= 0 && e <= 5)) + return 4; + return 5; +} +var fr_default = ["fr", [["AM", "PM"]], u, [["D", "L", "M", "M", "J", "V", "S"], ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], ["di", "lu", "ma", "me", "je", "ve", "sa"]], u, [["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], ["janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."], ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"]], u, [["av. J.-C.", "ap. J.-C."], u, ["avant Jésus-Christ", "après Jésus-Christ"]], 1, [6, 0], ["dd/MM/y", "d MMM y", "d MMMM y", "EEEE d MMMM y"], ["HH:mm", "HH:mm:ss", "HH:mm:ss z", "HH:mm:ss zzzz"], ["{1} {0}", "{1}, {0}", "{1} 'à' {0}", u], [",", " ", ";", "%", "+", "-", "E", "×", "‰", "∞", "NaN", ":"], ["#,##0.###", "#,##0 %", "#,##0.00 ¤", "#E0"], "EUR", "€", "euro", { "ARS": ["$AR", "$"], "AUD": ["$AU", "$"], "BEF": ["FB"], "BMD": ["$BM", "$"], "BND": ["$BN", "$"], "BYN": [u, "р."], "BZD": ["$BZ", "$"], "CAD": ["$CA", "$"], "CLP": ["$CL", "$"], "CNY": [u, "¥"], "COP": ["$CO", "$"], "CYP": ["£CY"], "EGP": [u, "£E"], "FJD": ["$FJ", "$"], "FKP": ["£FK", "£"], "FRF": ["F"], "GBP": ["£GB", "£"], "GIP": ["£GI", "£"], "HKD": [u, "$"], "IEP": ["£IE"], "ILP": ["£IL"], "ITL": ["₤IT"], "JPY": [u, "¥"], "KMF": [u, "FC"], "LBP": ["£LB", "£L"], "MTP": ["£MT"], "MXN": ["$MX", "$"], "NAD": ["$NA", "$"], "NIO": [u, "$C"], "NZD": ["$NZ", "$"], "PHP": [u, "₱"], "RHD": ["$RH"], "RON": [u, "L"], "RWF": [u, "FR"], "SBD": ["$SB", "$"], "SGD": ["$SG", "$"], "SRD": ["$SR", "$"], "TOP": [u, "$T"], "TTD": ["$TT", "$"], "TWD": [u, "NT$"], "USD": ["$US", "$"], "UYU": ["$UY", "$"], "WST": ["$WS"], "XCD": [u, "$"], "XPF": ["FCFP"], "ZMW": [u, "Kw"] }, "ltr", plural]; +export { + fr_default as default +}; +/*! Bundled license information: + +@angular/common/locales/fr.js: + (** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + *) +*/ +//# sourceMappingURL=@angular_common_locales_fr.js.map diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_common_locales_fr.js.map b/.angular/cache/20.3.2/app/vite/deps/@angular_common_locales_fr.js.map new file mode 100644 index 0000000..77dfc47 --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_common_locales_fr.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../../node_modules/@angular/common/locales/fr.js"], + "sourcesContent": ["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n// THIS CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val, i = Math.floor(Math.abs(val)), v = val.toString().replace(/^[^.]*\\.?/, '').length, e = parseInt(val.toString().replace(/^[^e]*(e([-+]?\\d+))?/, '$2')) || 0;\n if (i === 0 || i === 1)\n return 1;\n if (e === 0 && (!(i === 0) && (i % 1000000 === 0 && v === 0)) || !(e >= 0 && e <= 5))\n return 4;\n return 5;\n}\nexport default [\"fr\", [[\"AM\", \"PM\"]], u, [[\"D\", \"L\", \"M\", \"M\", \"J\", \"V\", \"S\"], [\"dim.\", \"lun.\", \"mar.\", \"mer.\", \"jeu.\", \"ven.\", \"sam.\"], [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"], [\"di\", \"lu\", \"ma\", \"me\", \"je\", \"ve\", \"sa\"]], u, [[\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"janv.\", \"févr.\", \"mars\", \"avr.\", \"mai\", \"juin\", \"juil.\", \"août\", \"sept.\", \"oct.\", \"nov.\", \"déc.\"], [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"]], u, [[\"av. J.-C.\", \"ap. J.-C.\"], u, [\"avant Jésus-Christ\", \"après Jésus-Christ\"]], 1, [6, 0], [\"dd/MM/y\", \"d MMM y\", \"d MMMM y\", \"EEEE d MMMM y\"], [\"HH:mm\", \"HH:mm:ss\", \"HH:mm:ss z\", \"HH:mm:ss zzzz\"], [\"{1} {0}\", \"{1}, {0}\", \"{1} 'à' {0}\", u], [\",\", \" \", \";\", \"%\", \"+\", \"-\", \"E\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0 %\", \"#,##0.00 ¤\", \"#E0\"], \"EUR\", \"€\", \"euro\", { \"ARS\": [\"$AR\", \"$\"], \"AUD\": [\"$AU\", \"$\"], \"BEF\": [\"FB\"], \"BMD\": [\"$BM\", \"$\"], \"BND\": [\"$BN\", \"$\"], \"BYN\": [u, \"р.\"], \"BZD\": [\"$BZ\", \"$\"], \"CAD\": [\"$CA\", \"$\"], \"CLP\": [\"$CL\", \"$\"], \"CNY\": [u, \"¥\"], \"COP\": [\"$CO\", \"$\"], \"CYP\": [\"£CY\"], \"EGP\": [u, \"£E\"], \"FJD\": [\"$FJ\", \"$\"], \"FKP\": [\"£FK\", \"£\"], \"FRF\": [\"F\"], \"GBP\": [\"£GB\", \"£\"], \"GIP\": [\"£GI\", \"£\"], \"HKD\": [u, \"$\"], \"IEP\": [\"£IE\"], \"ILP\": [\"£IL\"], \"ITL\": [\"₤IT\"], \"JPY\": [u, \"¥\"], \"KMF\": [u, \"FC\"], \"LBP\": [\"£LB\", \"£L\"], \"MTP\": [\"£MT\"], \"MXN\": [\"$MX\", \"$\"], \"NAD\": [\"$NA\", \"$\"], \"NIO\": [u, \"$C\"], \"NZD\": [\"$NZ\", \"$\"], \"PHP\": [u, \"₱\"], \"RHD\": [\"$RH\"], \"RON\": [u, \"L\"], \"RWF\": [u, \"FR\"], \"SBD\": [\"$SB\", \"$\"], \"SGD\": [\"$SG\", \"$\"], \"SRD\": [\"$SR\", \"$\"], \"TOP\": [u, \"$T\"], \"TTD\": [\"$TT\", \"$\"], \"TWD\": [u, \"NT$\"], \"USD\": [\"$US\", \"$\"], \"UYU\": [\"$UY\", \"$\"], \"WST\": [\"$WS\"], \"XCD\": [u, \"$\"], \"XPF\": [\"FCFP\"], \"ZMW\": [u, \"Kw\"] }, \"ltr\", plural];\n"], + "mappings": ";;;AAQA,IAAM,IAAI;AACV,SAAS,OAAO,KAAK;AACjB,QAAM,IAAI,KAAK,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,SAAS,EAAE,QAAQ,aAAa,EAAE,EAAE,QAAQ,IAAI,SAAS,IAAI,SAAS,EAAE,QAAQ,wBAAwB,IAAI,CAAC,KAAK;AACxK,MAAI,MAAM,KAAK,MAAM;AACjB,WAAO;AACX,MAAI,MAAM,MAAM,EAAE,MAAM,OAAO,IAAI,QAAY,KAAK,MAAM,OAAO,EAAE,KAAK,KAAK,KAAK;AAC9E,WAAO;AACX,SAAO;AACX;AACA,IAAO,aAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,GAAG,CAAC,YAAY,SAAS,SAAS,YAAY,SAAS,YAAY,QAAQ,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC,SAAS,SAAS,QAAQ,QAAQ,OAAO,QAAQ,SAAS,QAAQ,SAAS,QAAQ,QAAQ,MAAM,GAAG,CAAC,WAAW,WAAW,QAAQ,SAAS,OAAO,QAAQ,WAAW,QAAQ,aAAa,WAAW,YAAY,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,aAAa,WAAW,GAAG,GAAG,CAAC,sBAAsB,oBAAoB,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,WAAW,YAAY,eAAe,GAAG,CAAC,SAAS,YAAY,cAAc,eAAe,GAAG,CAAC,WAAW,YAAY,eAAe,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,GAAG,GAAG,CAAC,aAAa,WAAW,cAAc,KAAK,GAAG,OAAO,KAAK,QAAQ,EAAE,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,OAAO,MAAM;", + "names": [] +} diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_core.js b/.angular/cache/20.3.2/app/vite/deps/@angular_core.js new file mode 100644 index 0000000..efc93c1 --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_core.js @@ -0,0 +1,1000 @@ +import { + ANIMATIONS_DISABLED, + ANIMATION_MODULE_TYPE, + APP_BOOTSTRAP_LISTENER, + APP_ID, + APP_INITIALIZER, + AcxChangeDetectionStrategy, + AcxViewEncapsulation, + AfterRenderManager, + ApplicationInitStatus, + ApplicationModule, + ApplicationRef, + Attribute, + CLIENT_RENDER_MODE_FLAG, + COMPILER_OPTIONS, + CSP_NONCE, + CUSTOM_ELEMENTS_SCHEMA, + ChangeDetectionSchedulerImpl, + ChangeDetectionStrategy, + ChangeDetectorRef, + Compiler, + CompilerFactory, + Component, + ComponentFactory, + ComponentFactory$1, + ComponentFactoryResolver$1, + ComponentRef, + ComponentRef$1, + Console, + ContentChild, + ContentChildren, + DEFAULT_CURRENCY_CODE, + DEFAULT_LOCALE_ID, + DEFER_BLOCK_CONFIG, + DEFER_BLOCK_DEPENDENCY_INTERCEPTOR, + DEHYDRATED_BLOCK_REGISTRY, + DebugElement, + DebugEventListener, + DebugNode, + DefaultIterableDiffer, + DeferBlockBehavior, + DeferBlockState, + Directive, + ENABLE_ROOT_COMPONENT_BOOTSTRAP, + ElementRef, + EmbeddedViewRef, + EventEmitter, + FactoryTarget, + Framework, + HOST_TAG_NAME, + Host, + HostAttributeToken, + HostBinding, + HostListener, + HydrationStatus, + IMAGE_CONFIG, + IMAGE_CONFIG_DEFAULTS, + IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, + IS_HYDRATION_DOM_REUSE_ENABLED, + IS_INCREMENTAL_HYDRATION_ENABLED, + Inject, + Injectable, + Input, + IterableDiffers, + JSACTION_BLOCK_ELEMENT_MAP, + JSACTION_EVENT_CONTRACT, + KeyValueDiffers, + LContext, + LOCALE_ID, + LocaleDataIndex, + MAX_ANIMATION_TIMEOUT, + MissingTranslationStrategy, + ModuleWithComponentFactories, + NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, + NO_CHANGE, + NO_ERRORS_SCHEMA, + NgModule, + NgModuleFactory, + NgModuleFactory$1, + NgModuleRef, + NgModuleRef$1, + NgProbeToken, + NgZone, + NoopNgZone, + Optional, + Output, + PACKAGE_ROOT_URL, + PERFORMANCE_MARK_PREFIX, + PLATFORM_ID, + PLATFORM_INITIALIZER, + PROVIDED_NG_ZONE, + Pipe, + PlatformRef, + Query, + QueryList, + REQUEST, + REQUEST_CONTEXT, + RESPONSE_INIT, + ReflectionCapabilities, + Renderer2, + RendererFactory2, + RendererStyleFlags2, + SSR_CONTENT_INTEGRITY_MARKER, + Sanitizer, + SecurityContext, + Self, + SimpleChange, + SkipSelf, + TESTABILITY, + TESTABILITY_GETTER, + TRANSLATIONS, + TRANSLATIONS_FORMAT, + TemplateRef, + Testability, + TestabilityRegistry, + TimerScheduler, + TracingAction, + TracingService, + TransferState, + Type, + ViewChild, + ViewChildren, + ViewContainerRef, + ViewEncapsulation, + ViewRef, + ViewRef2, + _sanitizeHtml, + _sanitizeUrl, + afterEveryRender, + afterNextRender, + afterRenderEffect, + allLeavingAnimations, + allowSanitizationBypassAndThrow, + annotateForHydration, + asNativeElements, + assertPlatform, + booleanAttribute, + bypassSanitizationTrustHtml, + bypassSanitizationTrustResourceUrl, + bypassSanitizationTrustScript, + bypassSanitizationTrustStyle, + bypassSanitizationTrustUrl, + clearResolutionOfComponentResourcesQueue, + compileComponent, + compileDirective, + compileNgModule, + compileNgModuleDefs, + compileNgModuleFactory, + compilePipe, + contentChild, + contentChildren, + createComponent, + createEnvironmentInjector, + createNgModule, + createNgModuleRef, + createOrReusePlatformInjector, + createPlatform, + createPlatformFactory, + defaultIterableDiffers, + defaultKeyValueDiffers, + depsTracker, + destroyPlatform, + devModeEqual, + disableProfiling, + enableProdMode, + enableProfiling, + enableProfiling2, + findLocaleData, + flushModuleScopingQueueAsMuchAsPossible, + generateStandaloneInDeclarationsError, + getAsyncClassMetadataFn, + getClosestComponentName, + getDebugNode, + getDeferBlocks$1, + getDirectives, + getDocument, + getHostElement, + getLContext, + getLocaleCurrencyCode, + getLocalePluralCase, + getModuleFactory, + getNgModuleById, + getPlatform, + getSanitizationBypassType, + getTransferState, + inferTagNameFromDefinition, + injectChangeDetectorRef, + input, + inputBinding, + internalCreateApplication, + internalProvideZoneChangeDetection, + isBoundToModule, + isComponentDefPendingResolution, + isDevMode, + isNgModule, + isPromise, + isSubscribable, + isViewDirty, + makeStateKey, + markForRefresh, + mergeApplicationConfig, + model, + noSideEffects, + numberAttribute, + output, + outputBinding, + patchComponentDefWithScope, + performanceMarkFeature, + platformCore, + provideAppInitializer, + provideCheckNoChangesConfig, + provideNgReflectAttributes, + providePlatformInitializer, + provideZoneChangeDetection, + provideZonelessChangeDetection, + publishExternalGlobalUtil, + readHydrationInfo, + reflectComponentType, + registerLocaleData, + registerNgModuleType, + renderDeferBlockState, + resetCompiledComponents, + resetJitOptions, + resolveComponentResources, + restoreComponentResolutionQueue, + setAllowDuplicateNgModuleIdsForTest, + setClassMetadata, + setClassMetadataAsync, + setDocument, + setLocaleId, + setTestabilityGetter, + startMeasuring, + stopMeasuring, + transitiveScopesFor, + triggerResourceLoading, + twoWayBinding, + unregisterAllLocaleData, + unwrapSafeValue, + viewChild, + viewChildren, + withDomHydration, + withEventReplay, + withI18nSupport, + withIncrementalHydration, + ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, + ɵassertType, + ɵgetUnknownElementStrictMode, + ɵgetUnknownPropertyStrictMode, + ɵsetClassDebugInfo, + ɵsetUnknownElementStrictMode, + ɵsetUnknownPropertyStrictMode, + ɵɵCopyDefinitionFeature, + ɵɵExternalStylesFeature, + ɵɵHostDirectivesFeature, + ɵɵInheritDefinitionFeature, + ɵɵNgOnChangesFeature, + ɵɵProvidersFeature, + ɵɵadvance, + ɵɵanimateEnter, + ɵɵanimateEnterListener, + ɵɵanimateLeave, + ɵɵanimateLeaveListener, + ɵɵariaProperty, + ɵɵattachSourceLocations, + ɵɵattribute, + ɵɵclassMap, + ɵɵclassProp, + ɵɵcomponentInstance, + ɵɵconditional, + ɵɵconditionalBranchCreate, + ɵɵconditionalCreate, + ɵɵcontentQuery, + ɵɵcontentQuerySignal, + ɵɵdeclareLet, + ɵɵdefer, + ɵɵdeferEnableTimerScheduling, + ɵɵdeferHydrateNever, + ɵɵdeferHydrateOnHover, + ɵɵdeferHydrateOnIdle, + ɵɵdeferHydrateOnImmediate, + ɵɵdeferHydrateOnInteraction, + ɵɵdeferHydrateOnTimer, + ɵɵdeferHydrateOnViewport, + ɵɵdeferHydrateWhen, + ɵɵdeferOnHover, + ɵɵdeferOnIdle, + ɵɵdeferOnImmediate, + ɵɵdeferOnInteraction, + ɵɵdeferOnTimer, + ɵɵdeferOnViewport, + ɵɵdeferPrefetchOnHover, + ɵɵdeferPrefetchOnIdle, + ɵɵdeferPrefetchOnImmediate, + ɵɵdeferPrefetchOnInteraction, + ɵɵdeferPrefetchOnTimer, + ɵɵdeferPrefetchOnViewport, + ɵɵdeferPrefetchWhen, + ɵɵdeferWhen, + ɵɵdefineComponent, + ɵɵdefineDirective, + ɵɵdefineNgModule, + ɵɵdefinePipe, + ɵɵdirectiveInject, + ɵɵdomElement, + ɵɵdomElementContainer, + ɵɵdomElementContainerEnd, + ɵɵdomElementContainerStart, + ɵɵdomElementEnd, + ɵɵdomElementStart, + ɵɵdomListener, + ɵɵdomProperty, + ɵɵdomTemplate, + ɵɵelement, + ɵɵelementContainer, + ɵɵelementContainerEnd, + ɵɵelementContainerStart, + ɵɵelementEnd, + ɵɵelementStart, + ɵɵgetComponentDepsFactory, + ɵɵgetCurrentView, + ɵɵgetInheritedFactory, + ɵɵgetReplaceMetadataURL, + ɵɵi18n, + ɵɵi18nApply, + ɵɵi18nAttributes, + ɵɵi18nEnd, + ɵɵi18nExp, + ɵɵi18nPostprocess, + ɵɵi18nStart, + ɵɵinjectAttribute, + ɵɵinterpolate, + ɵɵinterpolate1, + ɵɵinterpolate2, + ɵɵinterpolate3, + ɵɵinterpolate4, + ɵɵinterpolate5, + ɵɵinterpolate6, + ɵɵinterpolate7, + ɵɵinterpolate8, + ɵɵinterpolateV, + ɵɵinvalidFactory, + ɵɵlistener, + ɵɵloadQuery, + ɵɵnextContext, + ɵɵngDeclareClassMetadata, + ɵɵngDeclareClassMetadataAsync, + ɵɵngDeclareComponent, + ɵɵngDeclareDirective, + ɵɵngDeclareFactory, + ɵɵngDeclareInjectable, + ɵɵngDeclareInjector, + ɵɵngDeclareNgModule, + ɵɵngDeclarePipe, + ɵɵpipe, + ɵɵpipeBind1, + ɵɵpipeBind2, + ɵɵpipeBind3, + ɵɵpipeBind4, + ɵɵpipeBindV, + ɵɵprojection, + ɵɵprojectionDef, + ɵɵproperty, + ɵɵpureFunction0, + ɵɵpureFunction1, + ɵɵpureFunction2, + ɵɵpureFunction3, + ɵɵpureFunction4, + ɵɵpureFunction5, + ɵɵpureFunction6, + ɵɵpureFunction7, + ɵɵpureFunction8, + ɵɵpureFunctionV, + ɵɵqueryAdvance, + ɵɵqueryRefresh, + ɵɵreadContextLet, + ɵɵreference, + ɵɵrepeater, + ɵɵrepeaterCreate, + ɵɵrepeaterTrackByIdentity, + ɵɵrepeaterTrackByIndex, + ɵɵreplaceMetadata, + ɵɵresolveBody, + ɵɵresolveDocument, + ɵɵresolveWindow, + ɵɵsanitizeHtml, + ɵɵsanitizeResourceUrl, + ɵɵsanitizeScript, + ɵɵsanitizeStyle, + ɵɵsanitizeUrl, + ɵɵsanitizeUrlOrResourceUrl, + ɵɵsetComponentScope, + ɵɵsetNgModuleScope, + ɵɵstoreLet, + ɵɵstyleMap, + ɵɵstyleProp, + ɵɵsyntheticHostListener, + ɵɵsyntheticHostProperty, + ɵɵtemplate, + ɵɵtemplateRefExtractor, + ɵɵtext, + ɵɵtextInterpolate, + ɵɵtextInterpolate1, + ɵɵtextInterpolate2, + ɵɵtextInterpolate3, + ɵɵtextInterpolate4, + ɵɵtextInterpolate5, + ɵɵtextInterpolate6, + ɵɵtextInterpolate7, + ɵɵtextInterpolate8, + ɵɵtextInterpolateV, + ɵɵtrustConstantHtml, + ɵɵtrustConstantResourceUrl, + ɵɵtwoWayBindingSet, + ɵɵtwoWayListener, + ɵɵtwoWayProperty, + ɵɵvalidateIframeAttribute, + ɵɵviewQuery, + ɵɵviewQuerySignal +} from "./chunk-A3W7CVOL.js"; +import { + CONTAINER_HEADER_OFFSET, + ChangeDetectionScheduler, + DOCUMENT, + DestroyRef, + ENVIRONMENT_INITIALIZER, + EffectScheduler, + EnvironmentInjector, + ErrorHandler, + INJECTOR$1, + INJECTOR_SCOPE, + INTERNAL_APPLICATION_ERROR_HANDLER, + InjectionToken, + Injector, + NG_COMP_DEF, + NG_DIR_DEF, + NG_ELEMENT_ID, + NG_INJ_DEF, + NG_MOD_DEF, + NG_PIPE_DEF, + NG_PROV_DEF, + OutputEmitterRef, + PendingTasks, + PendingTasksInternal, + R3Injector, + ResourceImpl, + RuntimeError, + SIGNAL, + VERSION, + Version, + XSS_SECURITY_URL, + ZONELESS_ENABLED, + _global, + assertInInjectionContext, + assertNotInReactiveContext, + computed, + convertToBitFlags, + createInjector, + defineInjectable, + effect, + encapsulateResourceError, + formatRuntimeError, + forwardRef, + getComponentDef, + getInjectableDef, + getOutputDestroyRef, + importProvidersFrom, + inject, + isEnvironmentProviders, + isInjectable, + isSignal, + isStandalone, + linkedSignal, + makeEnvironmentProviders, + provideBrowserGlobalErrorListeners, + provideEnvironmentInitializer, + resolveForwardRef, + resource, + runInInjectionContext, + setAlternateWeakRefImpl, + setCurrentInjector, + setInjectorProfilerContext, + signal, + store, + stringify, + truncateMiddle, + untracked, + ɵunwrapWritableSignal, + ɵɵdefineInjectable, + ɵɵdefineInjector, + ɵɵdisableBindings, + ɵɵenableBindings, + ɵɵinject, + ɵɵinvalidFactoryDep, + ɵɵnamespaceHTML, + ɵɵnamespaceMathML, + ɵɵnamespaceSVG, + ɵɵresetView, + ɵɵrestoreView +} from "./chunk-M4YA2FTX.js"; +import "./chunk-RSS3ODKE.js"; +import "./chunk-TKSB4YUA.js"; +export { + ANIMATION_MODULE_TYPE, + APP_BOOTSTRAP_LISTENER, + APP_ID, + APP_INITIALIZER, + ApplicationInitStatus, + ApplicationModule, + ApplicationRef, + Attribute, + COMPILER_OPTIONS, + CSP_NONCE, + CUSTOM_ELEMENTS_SCHEMA, + ChangeDetectionStrategy, + ChangeDetectorRef, + Compiler, + CompilerFactory, + Component, + ComponentFactory$1 as ComponentFactory, + ComponentFactoryResolver$1 as ComponentFactoryResolver, + ComponentRef$1 as ComponentRef, + ContentChild, + ContentChildren, + DEFAULT_CURRENCY_CODE, + DOCUMENT, + DebugElement, + DebugEventListener, + DebugNode, + DefaultIterableDiffer, + DestroyRef, + Directive, + ENVIRONMENT_INITIALIZER, + ElementRef, + EmbeddedViewRef, + EnvironmentInjector, + ErrorHandler, + EventEmitter, + HOST_TAG_NAME, + Host, + HostAttributeToken, + HostBinding, + HostListener, + INJECTOR$1 as INJECTOR, + Inject, + Injectable, + InjectionToken, + Injector, + Input, + IterableDiffers, + KeyValueDiffers, + LOCALE_ID, + MAX_ANIMATION_TIMEOUT, + MissingTranslationStrategy, + ModuleWithComponentFactories, + NO_ERRORS_SCHEMA, + NgModule, + NgModuleFactory$1 as NgModuleFactory, + NgModuleRef$1 as NgModuleRef, + NgProbeToken, + NgZone, + Optional, + Output, + OutputEmitterRef, + PACKAGE_ROOT_URL, + PLATFORM_ID, + PLATFORM_INITIALIZER, + PendingTasks, + Pipe, + PlatformRef, + Query, + QueryList, + REQUEST, + REQUEST_CONTEXT, + RESPONSE_INIT, + Renderer2, + RendererFactory2, + RendererStyleFlags2, + Sanitizer, + SecurityContext, + Self, + SimpleChange, + SkipSelf, + TRANSLATIONS, + TRANSLATIONS_FORMAT, + TemplateRef, + Testability, + TestabilityRegistry, + TransferState, + Type, + VERSION, + Version, + ViewChild, + ViewChildren, + ViewContainerRef, + ViewEncapsulation, + ViewRef2 as ViewRef, + afterEveryRender, + afterNextRender, + afterRenderEffect, + asNativeElements, + assertInInjectionContext, + assertNotInReactiveContext, + assertPlatform, + booleanAttribute, + computed, + contentChild, + contentChildren, + createComponent, + createEnvironmentInjector, + createNgModule, + createNgModuleRef, + createPlatform, + createPlatformFactory, + defineInjectable, + destroyPlatform, + effect, + enableProdMode, + enableProfiling, + forwardRef, + getDebugNode, + getModuleFactory, + getNgModuleById, + getPlatform, + importProvidersFrom, + inject, + input, + inputBinding, + isDevMode, + isSignal, + isStandalone, + linkedSignal, + makeEnvironmentProviders, + makeStateKey, + mergeApplicationConfig, + model, + numberAttribute, + output, + outputBinding, + platformCore, + provideAppInitializer, + provideBrowserGlobalErrorListeners, + provideCheckNoChangesConfig, + provideEnvironmentInitializer, + provideNgReflectAttributes, + providePlatformInitializer, + provideZoneChangeDetection, + provideZonelessChangeDetection, + reflectComponentType, + resolveForwardRef, + resource, + runInInjectionContext, + setTestabilityGetter, + signal, + twoWayBinding, + untracked, + viewChild, + viewChildren, + ANIMATIONS_DISABLED as ɵANIMATIONS_DISABLED, + AcxChangeDetectionStrategy as ɵAcxChangeDetectionStrategy, + AcxViewEncapsulation as ɵAcxViewEncapsulation, + AfterRenderManager as ɵAfterRenderManager, + CLIENT_RENDER_MODE_FLAG as ɵCLIENT_RENDER_MODE_FLAG, + CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, + ChangeDetectionScheduler as ɵChangeDetectionScheduler, + ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, + ComponentFactory$1 as ɵComponentFactory, + Console as ɵConsole, + DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, + DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, + DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, + DEHYDRATED_BLOCK_REGISTRY as ɵDEHYDRATED_BLOCK_REGISTRY, + DeferBlockBehavior as ɵDeferBlockBehavior, + DeferBlockState as ɵDeferBlockState, + ENABLE_ROOT_COMPONENT_BOOTSTRAP as ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, + EffectScheduler as ɵEffectScheduler, + Framework as ɵFramework, + HydrationStatus as ɵHydrationStatus, + IMAGE_CONFIG as ɵIMAGE_CONFIG, + IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, + INJECTOR_SCOPE as ɵINJECTOR_SCOPE, + ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, + INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, + IS_ENABLED_BLOCKING_INITIAL_NAVIGATION as ɵIS_ENABLED_BLOCKING_INITIAL_NAVIGATION, + IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, + IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, + JSACTION_BLOCK_ELEMENT_MAP as ɵJSACTION_BLOCK_ELEMENT_MAP, + JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, + LContext as ɵLContext, + LocaleDataIndex as ɵLocaleDataIndex, + NG_COMP_DEF as ɵNG_COMP_DEF, + NG_DIR_DEF as ɵNG_DIR_DEF, + NG_ELEMENT_ID as ɵNG_ELEMENT_ID, + NG_INJ_DEF as ɵNG_INJ_DEF, + NG_MOD_DEF as ɵNG_MOD_DEF, + NG_PIPE_DEF as ɵNG_PIPE_DEF, + NG_PROV_DEF as ɵNG_PROV_DEF, + NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, + NO_CHANGE as ɵNO_CHANGE, + NgModuleFactory as ɵNgModuleFactory, + NoopNgZone as ɵNoopNgZone, + PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, + PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, + PendingTasksInternal as ɵPendingTasksInternal, + R3Injector as ɵR3Injector, + ReflectionCapabilities as ɵReflectionCapabilities, + ComponentFactory as ɵRender3ComponentFactory, + ComponentRef as ɵRender3ComponentRef, + NgModuleRef as ɵRender3NgModuleRef, + ResourceImpl as ɵResourceImpl, + RuntimeError as ɵRuntimeError, + SIGNAL as ɵSIGNAL, + SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, + TESTABILITY as ɵTESTABILITY, + TESTABILITY_GETTER as ɵTESTABILITY_GETTER, + TimerScheduler as ɵTimerScheduler, + TracingAction as ɵTracingAction, + TracingService as ɵTracingService, + ViewRef as ɵViewRef, + XSS_SECURITY_URL as ɵXSS_SECURITY_URL, + ZONELESS_ENABLED as ɵZONELESS_ENABLED, + _sanitizeHtml as ɵ_sanitizeHtml, + _sanitizeUrl as ɵ_sanitizeUrl, + allLeavingAnimations as ɵallLeavingAnimations, + allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, + annotateForHydration as ɵannotateForHydration, + ɵassertType, + bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, + bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, + bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, + bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, + bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, + clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, + compileComponent as ɵcompileComponent, + compileDirective as ɵcompileDirective, + compileNgModule as ɵcompileNgModule, + compileNgModuleDefs as ɵcompileNgModuleDefs, + compileNgModuleFactory as ɵcompileNgModuleFactory, + compilePipe as ɵcompilePipe, + convertToBitFlags as ɵconvertToBitFlags, + createInjector as ɵcreateInjector, + createOrReusePlatformInjector as ɵcreateOrReusePlatformInjector, + defaultIterableDiffers as ɵdefaultIterableDiffers, + defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, + depsTracker as ɵdepsTracker, + devModeEqual as ɵdevModeEqual, + disableProfiling as ɵdisableProfiling, + enableProfiling2 as ɵenableProfiling, + encapsulateResourceError as ɵencapsulateResourceError, + findLocaleData as ɵfindLocaleData, + flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, + formatRuntimeError as ɵformatRuntimeError, + generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, + getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, + getClosestComponentName as ɵgetClosestComponentName, + getComponentDef as ɵgetComponentDef, + getDebugNode as ɵgetDebugNode, + getDeferBlocks$1 as ɵgetDeferBlocks, + getDirectives as ɵgetDirectives, + getDocument as ɵgetDocument, + getHostElement as ɵgetHostElement, + getInjectableDef as ɵgetInjectableDef, + getLContext as ɵgetLContext, + getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, + getLocalePluralCase as ɵgetLocalePluralCase, + getOutputDestroyRef as ɵgetOutputDestroyRef, + getSanitizationBypassType as ɵgetSanitizationBypassType, + getTransferState as ɵgetTransferState, + ɵgetUnknownElementStrictMode, + ɵgetUnknownPropertyStrictMode, + _global as ɵglobal, + inferTagNameFromDefinition as ɵinferTagNameFromDefinition, + injectChangeDetectorRef as ɵinjectChangeDetectorRef, + internalCreateApplication as ɵinternalCreateApplication, + internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, + isBoundToModule as ɵisBoundToModule, + isComponentDefPendingResolution as ɵisComponentDefPendingResolution, + isEnvironmentProviders as ɵisEnvironmentProviders, + isInjectable as ɵisInjectable, + isNgModule as ɵisNgModule, + isPromise as ɵisPromise, + isSubscribable as ɵisSubscribable, + isViewDirty as ɵisViewDirty, + markForRefresh as ɵmarkForRefresh, + noSideEffects as ɵnoSideEffects, + patchComponentDefWithScope as ɵpatchComponentDefWithScope, + performanceMarkFeature as ɵperformanceMarkFeature, + publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, + readHydrationInfo as ɵreadHydrationInfo, + registerLocaleData as ɵregisterLocaleData, + renderDeferBlockState as ɵrenderDeferBlockState, + resetCompiledComponents as ɵresetCompiledComponents, + resetJitOptions as ɵresetJitOptions, + resolveComponentResources as ɵresolveComponentResources, + restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, + setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, + setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, + ɵsetClassDebugInfo, + setClassMetadata as ɵsetClassMetadata, + setClassMetadataAsync as ɵsetClassMetadataAsync, + setCurrentInjector as ɵsetCurrentInjector, + setDocument as ɵsetDocument, + setInjectorProfilerContext as ɵsetInjectorProfilerContext, + setLocaleId as ɵsetLocaleId, + ɵsetUnknownElementStrictMode, + ɵsetUnknownPropertyStrictMode, + startMeasuring as ɵstartMeasuring, + stopMeasuring as ɵstopMeasuring, + store as ɵstore, + stringify as ɵstringify, + transitiveScopesFor as ɵtransitiveScopesFor, + triggerResourceLoading as ɵtriggerResourceLoading, + truncateMiddle as ɵtruncateMiddle, + unregisterAllLocaleData as ɵunregisterLocaleData, + unwrapSafeValue as ɵunwrapSafeValue, + ɵunwrapWritableSignal, + withDomHydration as ɵwithDomHydration, + withEventReplay as ɵwithEventReplay, + withI18nSupport as ɵwithI18nSupport, + withIncrementalHydration as ɵwithIncrementalHydration, + ɵɵCopyDefinitionFeature, + ɵɵExternalStylesFeature, + FactoryTarget as ɵɵFactoryTarget, + ɵɵHostDirectivesFeature, + ɵɵInheritDefinitionFeature, + ɵɵNgOnChangesFeature, + ɵɵProvidersFeature, + ɵɵadvance, + ɵɵanimateEnter, + ɵɵanimateEnterListener, + ɵɵanimateLeave, + ɵɵanimateLeaveListener, + ɵɵariaProperty, + ɵɵattachSourceLocations, + ɵɵattribute, + ɵɵclassMap, + ɵɵclassProp, + ɵɵcomponentInstance, + ɵɵconditional, + ɵɵconditionalBranchCreate, + ɵɵconditionalCreate, + ɵɵcontentQuery, + ɵɵcontentQuerySignal, + ɵɵdeclareLet, + ɵɵdefer, + ɵɵdeferEnableTimerScheduling, + ɵɵdeferHydrateNever, + ɵɵdeferHydrateOnHover, + ɵɵdeferHydrateOnIdle, + ɵɵdeferHydrateOnImmediate, + ɵɵdeferHydrateOnInteraction, + ɵɵdeferHydrateOnTimer, + ɵɵdeferHydrateOnViewport, + ɵɵdeferHydrateWhen, + ɵɵdeferOnHover, + ɵɵdeferOnIdle, + ɵɵdeferOnImmediate, + ɵɵdeferOnInteraction, + ɵɵdeferOnTimer, + ɵɵdeferOnViewport, + ɵɵdeferPrefetchOnHover, + ɵɵdeferPrefetchOnIdle, + ɵɵdeferPrefetchOnImmediate, + ɵɵdeferPrefetchOnInteraction, + ɵɵdeferPrefetchOnTimer, + ɵɵdeferPrefetchOnViewport, + ɵɵdeferPrefetchWhen, + ɵɵdeferWhen, + ɵɵdefineComponent, + ɵɵdefineDirective, + ɵɵdefineInjectable, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵdefinePipe, + ɵɵdirectiveInject, + ɵɵdisableBindings, + ɵɵdomElement, + ɵɵdomElementContainer, + ɵɵdomElementContainerEnd, + ɵɵdomElementContainerStart, + ɵɵdomElementEnd, + ɵɵdomElementStart, + ɵɵdomListener, + ɵɵdomProperty, + ɵɵdomTemplate, + ɵɵelement, + ɵɵelementContainer, + ɵɵelementContainerEnd, + ɵɵelementContainerStart, + ɵɵelementEnd, + ɵɵelementStart, + ɵɵenableBindings, + ɵɵgetComponentDepsFactory, + ɵɵgetCurrentView, + ɵɵgetInheritedFactory, + ɵɵgetReplaceMetadataURL, + ɵɵi18n, + ɵɵi18nApply, + ɵɵi18nAttributes, + ɵɵi18nEnd, + ɵɵi18nExp, + ɵɵi18nPostprocess, + ɵɵi18nStart, + ɵɵinject, + ɵɵinjectAttribute, + ɵɵinterpolate, + ɵɵinterpolate1, + ɵɵinterpolate2, + ɵɵinterpolate3, + ɵɵinterpolate4, + ɵɵinterpolate5, + ɵɵinterpolate6, + ɵɵinterpolate7, + ɵɵinterpolate8, + ɵɵinterpolateV, + ɵɵinvalidFactory, + ɵɵinvalidFactoryDep, + ɵɵlistener, + ɵɵloadQuery, + ɵɵnamespaceHTML, + ɵɵnamespaceMathML, + ɵɵnamespaceSVG, + ɵɵnextContext, + ɵɵngDeclareClassMetadata, + ɵɵngDeclareClassMetadataAsync, + ɵɵngDeclareComponent, + ɵɵngDeclareDirective, + ɵɵngDeclareFactory, + ɵɵngDeclareInjectable, + ɵɵngDeclareInjector, + ɵɵngDeclareNgModule, + ɵɵngDeclarePipe, + ɵɵpipe, + ɵɵpipeBind1, + ɵɵpipeBind2, + ɵɵpipeBind3, + ɵɵpipeBind4, + ɵɵpipeBindV, + ɵɵprojection, + ɵɵprojectionDef, + ɵɵproperty, + ɵɵpureFunction0, + ɵɵpureFunction1, + ɵɵpureFunction2, + ɵɵpureFunction3, + ɵɵpureFunction4, + ɵɵpureFunction5, + ɵɵpureFunction6, + ɵɵpureFunction7, + ɵɵpureFunction8, + ɵɵpureFunctionV, + ɵɵqueryAdvance, + ɵɵqueryRefresh, + ɵɵreadContextLet, + ɵɵreference, + registerNgModuleType as ɵɵregisterNgModuleType, + ɵɵrepeater, + ɵɵrepeaterCreate, + ɵɵrepeaterTrackByIdentity, + ɵɵrepeaterTrackByIndex, + ɵɵreplaceMetadata, + ɵɵresetView, + ɵɵresolveBody, + ɵɵresolveDocument, + ɵɵresolveWindow, + ɵɵrestoreView, + ɵɵsanitizeHtml, + ɵɵsanitizeResourceUrl, + ɵɵsanitizeScript, + ɵɵsanitizeStyle, + ɵɵsanitizeUrl, + ɵɵsanitizeUrlOrResourceUrl, + ɵɵsetComponentScope, + ɵɵsetNgModuleScope, + ɵɵstoreLet, + ɵɵstyleMap, + ɵɵstyleProp, + ɵɵsyntheticHostListener, + ɵɵsyntheticHostProperty, + ɵɵtemplate, + ɵɵtemplateRefExtractor, + ɵɵtext, + ɵɵtextInterpolate, + ɵɵtextInterpolate1, + ɵɵtextInterpolate2, + ɵɵtextInterpolate3, + ɵɵtextInterpolate4, + ɵɵtextInterpolate5, + ɵɵtextInterpolate6, + ɵɵtextInterpolate7, + ɵɵtextInterpolate8, + ɵɵtextInterpolateV, + ɵɵtrustConstantHtml, + ɵɵtrustConstantResourceUrl, + ɵɵtwoWayBindingSet, + ɵɵtwoWayListener, + ɵɵtwoWayProperty, + ɵɵvalidateIframeAttribute, + ɵɵviewQuery, + ɵɵviewQuerySignal +}; diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_core.js.map b/.angular/cache/20.3.2/app/vite/deps/@angular_core.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_core.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_core_rxjs-interop.js b/.angular/cache/20.3.2/app/vite/deps/@angular_core_rxjs-interop.js new file mode 100644 index 0000000..ebfd099 --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_core_rxjs-interop.js @@ -0,0 +1,251 @@ +import { + DestroyRef, + Injector, + PendingTasks, + RuntimeError, + assertInInjectionContext, + assertNotInReactiveContext, + computed, + effect, + encapsulateResourceError, + getOutputDestroyRef, + inject, + resource, + signal, + untracked +} from "./chunk-M4YA2FTX.js"; +import { + Observable, + ReplaySubject, + takeUntil +} from "./chunk-RSS3ODKE.js"; +import { + __spreadProps, + __spreadValues +} from "./chunk-TKSB4YUA.js"; + +// node_modules/@angular/core/fesm2022/rxjs-interop.mjs +function takeUntilDestroyed(destroyRef) { + if (!destroyRef) { + ngDevMode && assertInInjectionContext(takeUntilDestroyed); + destroyRef = inject(DestroyRef); + } + const destroyed$ = new Observable((subscriber) => { + if (destroyRef.destroyed) { + subscriber.next(); + return; + } + const unregisterFn = destroyRef.onDestroy(subscriber.next.bind(subscriber)); + return unregisterFn; + }); + return (source) => { + return source.pipe(takeUntil(destroyed$)); + }; +} +var OutputFromObservableRef = class { + source; + destroyed = false; + destroyRef = inject(DestroyRef); + constructor(source) { + this.source = source; + this.destroyRef.onDestroy(() => { + this.destroyed = true; + }); + } + subscribe(callbackFn) { + if (this.destroyed) { + throw new RuntimeError(953, ngDevMode && "Unexpected subscription to destroyed `OutputRef`. The owning directive/component is destroyed."); + } + const subscription = this.source.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({ + next: (value) => callbackFn(value) + }); + return { + unsubscribe: () => subscription.unsubscribe() + }; + } +}; +function outputFromObservable(observable, opts) { + ngDevMode && assertInInjectionContext(outputFromObservable); + return new OutputFromObservableRef(observable); +} +function outputToObservable(ref) { + const destroyRef = getOutputDestroyRef(ref); + return new Observable((observer) => { + const unregisterOnDestroy = destroyRef?.onDestroy(() => observer.complete()); + const subscription = ref.subscribe((v) => observer.next(v)); + return () => { + subscription.unsubscribe(); + unregisterOnDestroy?.(); + }; + }); +} +function toObservable(source, options) { + if (ngDevMode && !options?.injector) { + assertInInjectionContext(toObservable); + } + const injector = options?.injector ?? inject(Injector); + const subject = new ReplaySubject(1); + const watcher = effect(() => { + let value; + try { + value = source(); + } catch (err) { + untracked(() => subject.error(err)); + return; + } + untracked(() => subject.next(value)); + }, { injector, manualCleanup: true }); + injector.get(DestroyRef).onDestroy(() => { + watcher.destroy(); + subject.complete(); + }); + return subject.asObservable(); +} +function toSignal(source, options) { + typeof ngDevMode !== "undefined" && ngDevMode && assertNotInReactiveContext(toSignal, "Invoking `toSignal` causes new subscriptions every time. Consider moving `toSignal` outside of the reactive context and read the signal value where needed."); + const requiresCleanup = !options?.manualCleanup; + if (ngDevMode && requiresCleanup && !options?.injector) { + assertInInjectionContext(toSignal); + } + const cleanupRef = requiresCleanup ? options?.injector?.get(DestroyRef) ?? inject(DestroyRef) : null; + const equal = makeToSignalEqual(options?.equal); + let state; + if (options?.requireSync) { + state = signal({ + kind: 0 + /* StateKind.NoValue */ + }, { equal }); + } else { + state = signal({ kind: 1, value: options?.initialValue }, { equal }); + } + let destroyUnregisterFn; + const sub = source.subscribe({ + next: (value) => state.set({ kind: 1, value }), + error: (error) => { + state.set({ kind: 2, error }); + destroyUnregisterFn?.(); + }, + complete: () => { + destroyUnregisterFn?.(); + } + // Completion of the Observable is meaningless to the signal. Signals don't have a concept of + // "complete". + }); + if (options?.requireSync && state().kind === 0) { + throw new RuntimeError(601, (typeof ngDevMode === "undefined" || ngDevMode) && "`toSignal()` called with `requireSync` but `Observable` did not emit synchronously."); + } + destroyUnregisterFn = cleanupRef?.onDestroy(sub.unsubscribe.bind(sub)); + return computed(() => { + const current = state(); + switch (current.kind) { + case 1: + return current.value; + case 2: + throw current.error; + case 0: + throw new RuntimeError(601, (typeof ngDevMode === "undefined" || ngDevMode) && "`toSignal()` called with `requireSync` but `Observable` did not emit synchronously."); + } + }, { equal: options?.equal }); +} +function makeToSignalEqual(userEquality = Object.is) { + return (a, b) => a.kind === 1 && b.kind === 1 && userEquality(a.value, b.value); +} +function pendingUntilEvent(injector) { + if (injector === void 0) { + ngDevMode && assertInInjectionContext(pendingUntilEvent); + injector = inject(Injector); + } + const taskService = injector.get(PendingTasks); + return (sourceObservable) => { + return new Observable((originalSubscriber) => { + const removeTask = taskService.add(); + let cleanedUp = false; + function cleanupTask() { + if (cleanedUp) { + return; + } + removeTask(); + cleanedUp = true; + } + const innerSubscription = sourceObservable.subscribe({ + next: (v) => { + originalSubscriber.next(v); + cleanupTask(); + }, + complete: () => { + originalSubscriber.complete(); + cleanupTask(); + }, + error: (e) => { + originalSubscriber.error(e); + cleanupTask(); + } + }); + innerSubscription.add(() => { + originalSubscriber.unsubscribe(); + cleanupTask(); + }); + return innerSubscription; + }); + }; +} +function rxResource(opts) { + if (ngDevMode && !opts?.injector) { + assertInInjectionContext(rxResource); + } + return resource(__spreadProps(__spreadValues({}, opts), { + loader: void 0, + stream: (params) => { + let sub; + const onAbort = () => sub?.unsubscribe(); + params.abortSignal.addEventListener("abort", onAbort); + const stream = signal({ value: void 0 }); + let resolve; + const promise = new Promise((r) => resolve = r); + function send(value) { + stream.set(value); + resolve?.(stream); + resolve = void 0; + } + const streamFn = opts.stream ?? opts.loader; + if (streamFn === void 0) { + throw new RuntimeError(990, ngDevMode && `Must provide \`stream\` option.`); + } + sub = streamFn(params).subscribe({ + next: (value) => send({ value }), + error: (error) => { + send({ error: encapsulateResourceError(error) }); + params.abortSignal.removeEventListener("abort", onAbort); + }, + complete: () => { + if (resolve) { + send({ + error: new RuntimeError(991, ngDevMode && "Resource completed before producing a value") + }); + } + params.abortSignal.removeEventListener("abort", onAbort); + } + }); + return promise; + } + })); +} +export { + outputFromObservable, + outputToObservable, + pendingUntilEvent, + rxResource, + takeUntilDestroyed, + toObservable, + toSignal +}; +/*! Bundled license information: + +@angular/core/fesm2022/rxjs-interop.mjs: + (** + * @license Angular v20.3.1 + * (c) 2010-2025 Google LLC. https://angular.io/ + * License: MIT + *) +*/ +//# sourceMappingURL=@angular_core_rxjs-interop.js.map diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_core_rxjs-interop.js.map b/.angular/cache/20.3.2/app/vite/deps/@angular_core_rxjs-interop.js.map new file mode 100644 index 0000000..a59b83a --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_core_rxjs-interop.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../../node_modules/@angular/core/fesm2022/rxjs-interop.mjs"], + "sourcesContent": ["/**\n * @license Angular v20.3.1\n * (c) 2010-2025 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { assertInInjectionContext, inject, DestroyRef, RuntimeError, Injector, assertNotInReactiveContext, signal, PendingTasks } from './root_effect_scheduler.mjs';\nimport { getOutputDestroyRef, effect, untracked, computed, resource, encapsulateResourceError } from './resource.mjs';\nimport './not_found.mjs';\nimport './signal.mjs';\nimport '@angular/core/primitives/signals';\nimport '@angular/core/primitives/di';\nimport './effect.mjs';\n\n/**\n * Operator which completes the Observable when the calling context (component, directive, service,\n * etc) is destroyed.\n *\n * @param destroyRef optionally, the `DestroyRef` representing the current context. This can be\n * passed explicitly to use `takeUntilDestroyed` outside of an [injection\n * context](guide/di/dependency-injection-context). Otherwise, the current `DestroyRef` is injected.\n *\n * @publicApi 19.0\n */\nfunction takeUntilDestroyed(destroyRef) {\n if (!destroyRef) {\n ngDevMode && assertInInjectionContext(takeUntilDestroyed);\n destroyRef = inject(DestroyRef);\n }\n const destroyed$ = new Observable((subscriber) => {\n if (destroyRef.destroyed) {\n subscriber.next();\n return;\n }\n const unregisterFn = destroyRef.onDestroy(subscriber.next.bind(subscriber));\n return unregisterFn;\n });\n return (source) => {\n return source.pipe(takeUntil(destroyed$));\n };\n}\n\n/**\n * Implementation of `OutputRef` that emits values from\n * an RxJS observable source.\n *\n * @internal\n */\nclass OutputFromObservableRef {\n source;\n destroyed = false;\n destroyRef = inject(DestroyRef);\n constructor(source) {\n this.source = source;\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n });\n }\n subscribe(callbackFn) {\n if (this.destroyed) {\n throw new RuntimeError(953 /* ɵRuntimeErrorCode.OUTPUT_REF_DESTROYED */, ngDevMode &&\n 'Unexpected subscription to destroyed `OutputRef`. ' +\n 'The owning directive/component is destroyed.');\n }\n // Stop yielding more values when the directive/component is already destroyed.\n const subscription = this.source.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: (value) => callbackFn(value),\n });\n return {\n unsubscribe: () => subscription.unsubscribe(),\n };\n }\n}\n/**\n * Declares an Angular output that is using an RxJS observable as a source\n * for events dispatched to parent subscribers.\n *\n * The behavior for an observable as source is defined as followed:\n * 1. New values are forwarded to the Angular output (next notifications).\n * 2. Errors notifications are not handled by Angular. You need to handle these manually.\n * For example by using `catchError`.\n * 3. Completion notifications stop the output from emitting new values.\n *\n * @usageNotes\n * Initialize an output in your directive by declaring a\n * class field and initializing it with the `outputFromObservable()` function.\n *\n * ```ts\n * @Directive({..})\n * export class MyDir {\n * nameChange$ = ;\n * nameChange = outputFromObservable(this.nameChange$);\n * }\n * ```\n *\n * @publicApi 19.0\n */\nfunction outputFromObservable(observable, opts) {\n ngDevMode && assertInInjectionContext(outputFromObservable);\n return new OutputFromObservableRef(observable);\n}\n\n/**\n * Converts an Angular output declared via `output()` or `outputFromObservable()`\n * to an observable.\n * It creates an observable that represents the stream of \"events firing\" in an output.\n *\n * You can subscribe to the output via `Observable.subscribe` then.\n *\n * @publicApi 19.0\n */\nfunction outputToObservable(ref) {\n const destroyRef = getOutputDestroyRef(ref);\n return new Observable((observer) => {\n // Complete the observable upon directive/component destroy.\n // Note: May be `undefined` if an `EventEmitter` is declared outside\n // of an injection context.\n const unregisterOnDestroy = destroyRef?.onDestroy(() => observer.complete());\n const subscription = ref.subscribe((v) => observer.next(v));\n return () => {\n subscription.unsubscribe();\n unregisterOnDestroy?.();\n };\n });\n}\n\n/**\n * Exposes the value of an Angular `Signal` as an RxJS `Observable`.\n * As it reflects a state, the observable will always emit the latest value upon subscription.\n *\n * The signal's value will be propagated into the `Observable`'s subscribers using an `effect`.\n *\n * `toObservable` must be called in an injection context unless an injector is provided via options.\n *\n * @publicApi 20.0\n */\nfunction toObservable(source, options) {\n if (ngDevMode && !options?.injector) {\n assertInInjectionContext(toObservable);\n }\n const injector = options?.injector ?? inject(Injector);\n const subject = new ReplaySubject(1);\n const watcher = effect(() => {\n let value;\n try {\n value = source();\n }\n catch (err) {\n untracked(() => subject.error(err));\n return;\n }\n untracked(() => subject.next(value));\n }, { injector, manualCleanup: true });\n injector.get(DestroyRef).onDestroy(() => {\n watcher.destroy();\n subject.complete();\n });\n return subject.asObservable();\n}\n\n/**\n * Get the current value of an `Observable` as a reactive `Signal`.\n *\n * `toSignal` returns a `Signal` which provides synchronous reactive access to values produced\n * by the given `Observable`, by subscribing to that `Observable`. The returned `Signal` will always\n * have the most recent value emitted by the subscription, and will throw an error if the\n * `Observable` errors.\n *\n * With `requireSync` set to `true`, `toSignal` will assert that the `Observable` produces a value\n * immediately upon subscription. No `initialValue` is needed in this case, and the returned signal\n * does not include an `undefined` type.\n *\n * By default, the subscription will be automatically cleaned up when the current [injection\n * context](guide/di/dependency-injection-context) is destroyed. For example, when `toSignal` is\n * called during the construction of a component, the subscription will be cleaned up when the\n * component is destroyed. If an injection context is not available, an explicit `Injector` can be\n * passed instead.\n *\n * If the subscription should persist until the `Observable` itself completes, the `manualCleanup`\n * option can be specified instead, which disables the automatic subscription teardown. No injection\n * context is needed in this configuration as well.\n */\nfunction toSignal(source, options) {\n typeof ngDevMode !== 'undefined' &&\n ngDevMode &&\n assertNotInReactiveContext(toSignal, 'Invoking `toSignal` causes new subscriptions every time. ' +\n 'Consider moving `toSignal` outside of the reactive context and read the signal value where needed.');\n const requiresCleanup = !options?.manualCleanup;\n if (ngDevMode && requiresCleanup && !options?.injector) {\n assertInInjectionContext(toSignal);\n }\n const cleanupRef = requiresCleanup\n ? (options?.injector?.get(DestroyRef) ?? inject(DestroyRef))\n : null;\n const equal = makeToSignalEqual(options?.equal);\n // Note: T is the Observable value type, and U is the initial value type. They don't have to be\n // the same - the returned signal gives values of type `T`.\n let state;\n if (options?.requireSync) {\n // Initially the signal is in a `NoValue` state.\n state = signal({ kind: 0 /* StateKind.NoValue */ }, { equal });\n }\n else {\n // If an initial value was passed, use it. Otherwise, use `undefined` as the initial value.\n state = signal({ kind: 1 /* StateKind.Value */, value: options?.initialValue }, { equal });\n }\n let destroyUnregisterFn;\n // Note: This code cannot run inside a reactive context (see assertion above). If we'd support\n // this, we would subscribe to the observable outside of the current reactive context, avoiding\n // that side-effect signal reads/writes are attribute to the current consumer. The current\n // consumer only needs to be notified when the `state` signal changes through the observable\n // subscription. Additional context (related to async pipe):\n // https://github.com/angular/angular/pull/50522.\n const sub = source.subscribe({\n next: (value) => state.set({ kind: 1 /* StateKind.Value */, value }),\n error: (error) => {\n state.set({ kind: 2 /* StateKind.Error */, error });\n destroyUnregisterFn?.();\n },\n complete: () => {\n destroyUnregisterFn?.();\n },\n // Completion of the Observable is meaningless to the signal. Signals don't have a concept of\n // \"complete\".\n });\n if (options?.requireSync && state().kind === 0 /* StateKind.NoValue */) {\n throw new RuntimeError(601 /* ɵRuntimeErrorCode.REQUIRE_SYNC_WITHOUT_SYNC_EMIT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n '`toSignal()` called with `requireSync` but `Observable` did not emit synchronously.');\n }\n // Unsubscribe when the current context is destroyed, if requested.\n destroyUnregisterFn = cleanupRef?.onDestroy(sub.unsubscribe.bind(sub));\n // The actual returned signal is a `computed` of the `State` signal, which maps the various states\n // to either values or errors.\n return computed(() => {\n const current = state();\n switch (current.kind) {\n case 1 /* StateKind.Value */:\n return current.value;\n case 2 /* StateKind.Error */:\n throw current.error;\n case 0 /* StateKind.NoValue */:\n // This shouldn't really happen because the error is thrown on creation.\n throw new RuntimeError(601 /* ɵRuntimeErrorCode.REQUIRE_SYNC_WITHOUT_SYNC_EMIT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n '`toSignal()` called with `requireSync` but `Observable` did not emit synchronously.');\n }\n }, { equal: options?.equal });\n}\nfunction makeToSignalEqual(userEquality = Object.is) {\n return (a, b) => a.kind === 1 /* StateKind.Value */ && b.kind === 1 /* StateKind.Value */ && userEquality(a.value, b.value);\n}\n\n/**\n * Operator which makes the application unstable until the observable emits, completes, errors, or is unsubscribed.\n *\n * Use this operator in observables whose subscriptions are important for rendering and should be included in SSR serialization.\n *\n * @param injector The `Injector` to use during creation. If this is not provided, the current injection context will be used instead (via `inject`).\n *\n * @developerPreview 20.0\n */\nfunction pendingUntilEvent(injector) {\n if (injector === undefined) {\n ngDevMode && assertInInjectionContext(pendingUntilEvent);\n injector = inject(Injector);\n }\n const taskService = injector.get(PendingTasks);\n return (sourceObservable) => {\n return new Observable((originalSubscriber) => {\n // create a new task on subscription\n const removeTask = taskService.add();\n let cleanedUp = false;\n function cleanupTask() {\n if (cleanedUp) {\n return;\n }\n removeTask();\n cleanedUp = true;\n }\n const innerSubscription = sourceObservable.subscribe({\n next: (v) => {\n originalSubscriber.next(v);\n cleanupTask();\n },\n complete: () => {\n originalSubscriber.complete();\n cleanupTask();\n },\n error: (e) => {\n originalSubscriber.error(e);\n cleanupTask();\n },\n });\n innerSubscription.add(() => {\n originalSubscriber.unsubscribe();\n cleanupTask();\n });\n return innerSubscription;\n });\n };\n}\n\nfunction rxResource(opts) {\n if (ngDevMode && !opts?.injector) {\n assertInInjectionContext(rxResource);\n }\n return resource({\n ...opts,\n loader: undefined,\n stream: (params) => {\n let sub;\n // Track the abort listener so it can be removed if the Observable completes (as a memory\n // optimization).\n const onAbort = () => sub?.unsubscribe();\n params.abortSignal.addEventListener('abort', onAbort);\n // Start off stream as undefined.\n const stream = signal({ value: undefined });\n let resolve;\n const promise = new Promise((r) => (resolve = r));\n function send(value) {\n stream.set(value);\n resolve?.(stream);\n resolve = undefined;\n }\n // TODO(alxhub): remove after g3 updated to rename loader -> stream\n const streamFn = opts.stream ?? opts.loader;\n if (streamFn === undefined) {\n throw new RuntimeError(990 /* ɵRuntimeErrorCode.MUST_PROVIDE_STREAM_OPTION */, ngDevMode && `Must provide \\`stream\\` option.`);\n }\n sub = streamFn(params).subscribe({\n next: (value) => send({ value }),\n error: (error) => {\n send({ error: encapsulateResourceError(error) });\n params.abortSignal.removeEventListener('abort', onAbort);\n },\n complete: () => {\n if (resolve) {\n send({\n error: new RuntimeError(991 /* ɵRuntimeErrorCode.RESOURCE_COMPLETED_BEFORE_PRODUCING_VALUE */, ngDevMode && 'Resource completed before producing a value'),\n });\n }\n params.abortSignal.removeEventListener('abort', onAbort);\n },\n });\n return promise;\n },\n });\n}\n\nexport { outputFromObservable, outputToObservable, pendingUntilEvent, rxResource, takeUntilDestroyed, toObservable, toSignal };\n\n"], + "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,SAAS,mBAAmB,YAAY;AACpC,MAAI,CAAC,YAAY;AACb,iBAAa,yBAAyB,kBAAkB;AACxD,iBAAa,OAAO,UAAU;AAAA,EAClC;AACA,QAAM,aAAa,IAAI,WAAW,CAAC,eAAe;AAC9C,QAAI,WAAW,WAAW;AACtB,iBAAW,KAAK;AAChB;AAAA,IACJ;AACA,UAAM,eAAe,WAAW,UAAU,WAAW,KAAK,KAAK,UAAU,CAAC;AAC1E,WAAO;AAAA,EACX,CAAC;AACD,SAAO,CAAC,WAAW;AACf,WAAO,OAAO,KAAK,UAAU,UAAU,CAAC;AAAA,EAC5C;AACJ;AAQA,IAAM,0BAAN,MAA8B;AAAA,EAC1B;AAAA,EACA,YAAY;AAAA,EACZ,aAAa,OAAO,UAAU;AAAA,EAC9B,YAAY,QAAQ;AAChB,SAAK,SAAS;AACd,SAAK,WAAW,UAAU,MAAM;AAC5B,WAAK,YAAY;AAAA,IACrB,CAAC;AAAA,EACL;AAAA,EACA,UAAU,YAAY;AAClB,QAAI,KAAK,WAAW;AAChB,YAAM,IAAI,aAAa,KAAkD,aACrE,gGACkD;AAAA,IAC1D;AAEA,UAAM,eAAe,KAAK,OAAO,KAAK,mBAAmB,KAAK,UAAU,CAAC,EAAE,UAAU;AAAA,MACjF,MAAM,CAAC,UAAU,WAAW,KAAK;AAAA,IACrC,CAAC;AACD,WAAO;AAAA,MACH,aAAa,MAAM,aAAa,YAAY;AAAA,IAChD;AAAA,EACJ;AACJ;AAyBA,SAAS,qBAAqB,YAAY,MAAM;AAC5C,eAAa,yBAAyB,oBAAoB;AAC1D,SAAO,IAAI,wBAAwB,UAAU;AACjD;AAWA,SAAS,mBAAmB,KAAK;AAC7B,QAAM,aAAa,oBAAoB,GAAG;AAC1C,SAAO,IAAI,WAAW,CAAC,aAAa;AAIhC,UAAM,sBAAsB,YAAY,UAAU,MAAM,SAAS,SAAS,CAAC;AAC3E,UAAM,eAAe,IAAI,UAAU,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC;AAC1D,WAAO,MAAM;AACT,mBAAa,YAAY;AACzB,4BAAsB;AAAA,IAC1B;AAAA,EACJ,CAAC;AACL;AAYA,SAAS,aAAa,QAAQ,SAAS;AACnC,MAAI,aAAa,CAAC,SAAS,UAAU;AACjC,6BAAyB,YAAY;AAAA,EACzC;AACA,QAAM,WAAW,SAAS,YAAY,OAAO,QAAQ;AACrD,QAAM,UAAU,IAAI,cAAc,CAAC;AACnC,QAAM,UAAU,OAAO,MAAM;AACzB,QAAI;AACJ,QAAI;AACA,cAAQ,OAAO;AAAA,IACnB,SACO,KAAK;AACR,gBAAU,MAAM,QAAQ,MAAM,GAAG,CAAC;AAClC;AAAA,IACJ;AACA,cAAU,MAAM,QAAQ,KAAK,KAAK,CAAC;AAAA,EACvC,GAAG,EAAE,UAAU,eAAe,KAAK,CAAC;AACpC,WAAS,IAAI,UAAU,EAAE,UAAU,MAAM;AACrC,YAAQ,QAAQ;AAChB,YAAQ,SAAS;AAAA,EACrB,CAAC;AACD,SAAO,QAAQ,aAAa;AAChC;AAwBA,SAAS,SAAS,QAAQ,SAAS;AAC/B,SAAO,cAAc,eACjB,aACA,2BAA2B,UAAU,6JACmE;AAC5G,QAAM,kBAAkB,CAAC,SAAS;AAClC,MAAI,aAAa,mBAAmB,CAAC,SAAS,UAAU;AACpD,6BAAyB,QAAQ;AAAA,EACrC;AACA,QAAM,aAAa,kBACZ,SAAS,UAAU,IAAI,UAAU,KAAK,OAAO,UAAU,IACxD;AACN,QAAM,QAAQ,kBAAkB,SAAS,KAAK;AAG9C,MAAI;AACJ,MAAI,SAAS,aAAa;AAEtB,YAAQ,OAAO;AAAA,MAAE,MAAM;AAAA;AAAA,IAA0B,GAAG,EAAE,MAAM,CAAC;AAAA,EACjE,OACK;AAED,YAAQ,OAAO,EAAE,MAAM,GAAyB,OAAO,SAAS,aAAa,GAAG,EAAE,MAAM,CAAC;AAAA,EAC7F;AACA,MAAI;AAOJ,QAAM,MAAM,OAAO,UAAU;AAAA,IACzB,MAAM,CAAC,UAAU,MAAM,IAAI,EAAE,MAAM,GAAyB,MAAM,CAAC;AAAA,IACnE,OAAO,CAAC,UAAU;AACd,YAAM,IAAI,EAAE,MAAM,GAAyB,MAAM,CAAC;AAClD,4BAAsB;AAAA,IAC1B;AAAA,IACA,UAAU,MAAM;AACZ,4BAAsB;AAAA,IAC1B;AAAA;AAAA;AAAA,EAGJ,CAAC;AACD,MAAI,SAAS,eAAe,MAAM,EAAE,SAAS,GAA2B;AACpE,UAAM,IAAI,aAAa,MAA6D,OAAO,cAAc,eAAe,cACpH,qFAAqF;AAAA,EAC7F;AAEA,wBAAsB,YAAY,UAAU,IAAI,YAAY,KAAK,GAAG,CAAC;AAGrE,SAAO,SAAS,MAAM;AAClB,UAAM,UAAU,MAAM;AACtB,YAAQ,QAAQ,MAAM;AAAA,MAClB,KAAK;AACD,eAAO,QAAQ;AAAA,MACnB,KAAK;AACD,cAAM,QAAQ;AAAA,MAClB,KAAK;AAED,cAAM,IAAI,aAAa,MAA6D,OAAO,cAAc,eAAe,cACpH,qFAAqF;AAAA,IACjG;AAAA,EACJ,GAAG,EAAE,OAAO,SAAS,MAAM,CAAC;AAChC;AACA,SAAS,kBAAkB,eAAe,OAAO,IAAI;AACjD,SAAO,CAAC,GAAG,MAAM,EAAE,SAAS,KAA2B,EAAE,SAAS,KAA2B,aAAa,EAAE,OAAO,EAAE,KAAK;AAC9H;AAWA,SAAS,kBAAkB,UAAU;AACjC,MAAI,aAAa,QAAW;AACxB,iBAAa,yBAAyB,iBAAiB;AACvD,eAAW,OAAO,QAAQ;AAAA,EAC9B;AACA,QAAM,cAAc,SAAS,IAAI,YAAY;AAC7C,SAAO,CAAC,qBAAqB;AACzB,WAAO,IAAI,WAAW,CAAC,uBAAuB;AAE1C,YAAM,aAAa,YAAY,IAAI;AACnC,UAAI,YAAY;AAChB,eAAS,cAAc;AACnB,YAAI,WAAW;AACX;AAAA,QACJ;AACA,mBAAW;AACX,oBAAY;AAAA,MAChB;AACA,YAAM,oBAAoB,iBAAiB,UAAU;AAAA,QACjD,MAAM,CAAC,MAAM;AACT,6BAAmB,KAAK,CAAC;AACzB,sBAAY;AAAA,QAChB;AAAA,QACA,UAAU,MAAM;AACZ,6BAAmB,SAAS;AAC5B,sBAAY;AAAA,QAChB;AAAA,QACA,OAAO,CAAC,MAAM;AACV,6BAAmB,MAAM,CAAC;AAC1B,sBAAY;AAAA,QAChB;AAAA,MACJ,CAAC;AACD,wBAAkB,IAAI,MAAM;AACxB,2BAAmB,YAAY;AAC/B,oBAAY;AAAA,MAChB,CAAC;AACD,aAAO;AAAA,IACX,CAAC;AAAA,EACL;AACJ;AAEA,SAAS,WAAW,MAAM;AACtB,MAAI,aAAa,CAAC,MAAM,UAAU;AAC9B,6BAAyB,UAAU;AAAA,EACvC;AACA,SAAO,SAAS,iCACT,OADS;AAAA,IAEZ,QAAQ;AAAA,IACR,QAAQ,CAAC,WAAW;AAChB,UAAI;AAGJ,YAAM,UAAU,MAAM,KAAK,YAAY;AACvC,aAAO,YAAY,iBAAiB,SAAS,OAAO;AAEpD,YAAM,SAAS,OAAO,EAAE,OAAO,OAAU,CAAC;AAC1C,UAAI;AACJ,YAAM,UAAU,IAAI,QAAQ,CAAC,MAAO,UAAU,CAAE;AAChD,eAAS,KAAK,OAAO;AACjB,eAAO,IAAI,KAAK;AAChB,kBAAU,MAAM;AAChB,kBAAU;AAAA,MACd;AAEA,YAAM,WAAW,KAAK,UAAU,KAAK;AACrC,UAAI,aAAa,QAAW;AACxB,cAAM,IAAI,aAAa,KAAwD,aAAa,iCAAiC;AAAA,MACjI;AACA,YAAM,SAAS,MAAM,EAAE,UAAU;AAAA,QAC7B,MAAM,CAAC,UAAU,KAAK,EAAE,MAAM,CAAC;AAAA,QAC/B,OAAO,CAAC,UAAU;AACd,eAAK,EAAE,OAAO,yBAAyB,KAAK,EAAE,CAAC;AAC/C,iBAAO,YAAY,oBAAoB,SAAS,OAAO;AAAA,QAC3D;AAAA,QACA,UAAU,MAAM;AACZ,cAAI,SAAS;AACT,iBAAK;AAAA,cACD,OAAO,IAAI,aAAa,KAAuE,aAAa,6CAA6C;AAAA,YAC7J,CAAC;AAAA,UACL;AACA,iBAAO,YAAY,oBAAoB,SAAS,OAAO;AAAA,QAC3D;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AAAA,EACJ,EAAC;AACL;", + "names": [] +} diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_forms.js b/.angular/cache/20.3.2/app/vite/deps/@angular_forms.js new file mode 100644 index 0000000..a7368f3 --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_forms.js @@ -0,0 +1,6965 @@ +import { + getDOM +} from "./chunk-NNL7YDF7.js"; +import "./chunk-ZJ25XCV3.js"; +import { + ApplicationRef, + ChangeDetectorRef, + Directive, + ElementRef, + EventEmitter, + Host, + Inject, + Injectable, + Input, + NgModule, + Optional, + Output, + Renderer2, + Self, + SkipSelf, + afterNextRender, + booleanAttribute, + isPromise, + isSubscribable, + setClassMetadata, + ɵɵInheritDefinitionFeature, + ɵɵNgOnChangesFeature, + ɵɵProvidersFeature, + ɵɵattribute, + ɵɵclassProp, + ɵɵdefineDirective, + ɵɵdefineNgModule, + ɵɵdirectiveInject, + ɵɵgetInheritedFactory, + ɵɵlistener +} from "./chunk-A3W7CVOL.js"; +import { + DestroyRef, + InjectionToken, + Injector, + RuntimeError, + Version, + computed, + forwardRef, + inject, + signal, + untracked, + ɵɵdefineInjectable, + ɵɵdefineInjector +} from "./chunk-M4YA2FTX.js"; +import { + Subject, + forkJoin, + from, + map +} from "./chunk-RSS3ODKE.js"; +import { + __spreadProps, + __spreadValues +} from "./chunk-TKSB4YUA.js"; + +// node_modules/@angular/forms/fesm2022/forms.mjs +var BaseControlValueAccessor = class _BaseControlValueAccessor { + _renderer; + _elementRef; + /** + * The registered callback function called when a change or input event occurs on the input + * element. + * @docs-private + */ + onChange = (_) => { + }; + /** + * The registered callback function called when a blur event occurs on the input element. + * @docs-private + */ + onTouched = () => { + }; + constructor(_renderer, _elementRef) { + this._renderer = _renderer; + this._elementRef = _elementRef; + } + /** + * Helper method that sets a property on a target element using the current Renderer + * implementation. + * @docs-private + */ + setProperty(key, value) { + this._renderer.setProperty(this._elementRef.nativeElement, key, value); + } + /** + * Registers a function called when the control is touched. + * @docs-private + */ + registerOnTouched(fn) { + this.onTouched = fn; + } + /** + * Registers a function called when the control value changes. + * @docs-private + */ + registerOnChange(fn) { + this.onChange = fn; + } + /** + * Sets the "disabled" property on the range input element. + * @docs-private + */ + setDisabledState(isDisabled) { + this.setProperty("disabled", isDisabled); + } + static ɵfac = function BaseControlValueAccessor_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _BaseControlValueAccessor)(ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ElementRef)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _BaseControlValueAccessor + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(BaseControlValueAccessor, [{ + type: Directive + }], () => [{ + type: Renderer2 + }, { + type: ElementRef + }], null); +})(); +var BuiltInControlValueAccessor = class _BuiltInControlValueAccessor extends BaseControlValueAccessor { + static ɵfac = /* @__PURE__ */ (() => { + let ɵBuiltInControlValueAccessor_BaseFactory; + return function BuiltInControlValueAccessor_Factory(__ngFactoryType__) { + return (ɵBuiltInControlValueAccessor_BaseFactory || (ɵBuiltInControlValueAccessor_BaseFactory = ɵɵgetInheritedFactory(_BuiltInControlValueAccessor)))(__ngFactoryType__ || _BuiltInControlValueAccessor); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _BuiltInControlValueAccessor, + features: [ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(BuiltInControlValueAccessor, [{ + type: Directive + }], null, null); +})(); +var NG_VALUE_ACCESSOR = new InjectionToken(ngDevMode ? "NgValueAccessor" : ""); +var CHECKBOX_VALUE_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => CheckboxControlValueAccessor), + multi: true +}; +var CheckboxControlValueAccessor = class _CheckboxControlValueAccessor extends BuiltInControlValueAccessor { + /** + * Sets the "checked" property on the input element. + * @docs-private + */ + writeValue(value) { + this.setProperty("checked", value); + } + static ɵfac = /* @__PURE__ */ (() => { + let ɵCheckboxControlValueAccessor_BaseFactory; + return function CheckboxControlValueAccessor_Factory(__ngFactoryType__) { + return (ɵCheckboxControlValueAccessor_BaseFactory || (ɵCheckboxControlValueAccessor_BaseFactory = ɵɵgetInheritedFactory(_CheckboxControlValueAccessor)))(__ngFactoryType__ || _CheckboxControlValueAccessor); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _CheckboxControlValueAccessor, + selectors: [["input", "type", "checkbox", "formControlName", ""], ["input", "type", "checkbox", "formControl", ""], ["input", "type", "checkbox", "ngModel", ""]], + hostBindings: function CheckboxControlValueAccessor_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("change", function CheckboxControlValueAccessor_change_HostBindingHandler($event) { + return ctx.onChange($event.target.checked); + })("blur", function CheckboxControlValueAccessor_blur_HostBindingHandler() { + return ctx.onTouched(); + }); + } + }, + standalone: false, + features: [ɵɵProvidersFeature([CHECKBOX_VALUE_ACCESSOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CheckboxControlValueAccessor, [{ + type: Directive, + args: [{ + selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]", + host: { + "(change)": "onChange($any($event.target).checked)", + "(blur)": "onTouched()" + }, + providers: [CHECKBOX_VALUE_ACCESSOR], + standalone: false + }] + }], null, null); +})(); +var DEFAULT_VALUE_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => DefaultValueAccessor), + multi: true +}; +function _isAndroid() { + const userAgent = getDOM() ? getDOM().getUserAgent() : ""; + return /android (\d+)/.test(userAgent.toLowerCase()); +} +var COMPOSITION_BUFFER_MODE = new InjectionToken(ngDevMode ? "CompositionEventMode" : ""); +var DefaultValueAccessor = class _DefaultValueAccessor extends BaseControlValueAccessor { + _compositionMode; + /** Whether the user is creating a composition string (IME events). */ + _composing = false; + constructor(renderer, elementRef, _compositionMode) { + super(renderer, elementRef); + this._compositionMode = _compositionMode; + if (this._compositionMode == null) { + this._compositionMode = !_isAndroid(); + } + } + /** + * Sets the "value" property on the input element. + * @docs-private + */ + writeValue(value) { + const normalizedValue = value == null ? "" : value; + this.setProperty("value", normalizedValue); + } + /** @internal */ + _handleInput(value) { + if (!this._compositionMode || this._compositionMode && !this._composing) { + this.onChange(value); + } + } + /** @internal */ + _compositionStart() { + this._composing = true; + } + /** @internal */ + _compositionEnd(value) { + this._composing = false; + this._compositionMode && this.onChange(value); + } + static ɵfac = function DefaultValueAccessor_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _DefaultValueAccessor)(ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(COMPOSITION_BUFFER_MODE, 8)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _DefaultValueAccessor, + selectors: [["input", "formControlName", "", 3, "type", "checkbox"], ["textarea", "formControlName", ""], ["input", "formControl", "", 3, "type", "checkbox"], ["textarea", "formControl", ""], ["input", "ngModel", "", 3, "type", "checkbox"], ["textarea", "ngModel", ""], ["", "ngDefaultControl", ""]], + hostBindings: function DefaultValueAccessor_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("input", function DefaultValueAccessor_input_HostBindingHandler($event) { + return ctx._handleInput($event.target.value); + })("blur", function DefaultValueAccessor_blur_HostBindingHandler() { + return ctx.onTouched(); + })("compositionstart", function DefaultValueAccessor_compositionstart_HostBindingHandler() { + return ctx._compositionStart(); + })("compositionend", function DefaultValueAccessor_compositionend_HostBindingHandler($event) { + return ctx._compositionEnd($event.target.value); + }); + } + }, + standalone: false, + features: [ɵɵProvidersFeature([DEFAULT_VALUE_ACCESSOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DefaultValueAccessor, [{ + type: Directive, + args: [{ + selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]", + // TODO: vsavkin replace the above selector with the one below it once + // https://github.com/angular/angular/issues/3011 is implemented + // selector: '[ngModel],[formControl],[formControlName]', + host: { + "(input)": "_handleInput($any($event.target).value)", + "(blur)": "onTouched()", + "(compositionstart)": "_compositionStart()", + "(compositionend)": "_compositionEnd($any($event.target).value)" + }, + providers: [DEFAULT_VALUE_ACCESSOR], + standalone: false + }] + }], () => [{ + type: Renderer2 + }, { + type: ElementRef + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [COMPOSITION_BUFFER_MODE] + }] + }], null); +})(); +function isEmptyInputValue(value) { + return value == null || lengthOrSize(value) === 0; +} +function lengthOrSize(value) { + if (value == null) { + return null; + } else if (Array.isArray(value) || typeof value === "string") { + return value.length; + } else if (value instanceof Set) { + return value.size; + } + return null; +} +var NG_VALIDATORS = new InjectionToken(ngDevMode ? "NgValidators" : ""); +var NG_ASYNC_VALIDATORS = new InjectionToken(ngDevMode ? "NgAsyncValidators" : ""); +var EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +var Validators = class { + /** + * @description + * Validator that requires the control's value to be greater than or equal to the provided number. + * + * @usageNotes + * + * ### Validate against a minimum of 3 + * + * ```ts + * const control = new FormControl(2, Validators.min(3)); + * + * console.log(control.errors); // {min: {min: 3, actual: 2}} + * ``` + * + * @returns A validator function that returns an error map with the + * `min` property if the validation check fails, otherwise `null`. + * + * @see {@link /api/forms/AbstractControl#updateValueAndValidity updateValueAndValidity} + * + */ + static min(min) { + return minValidator(min); + } + /** + * @description + * Validator that requires the control's value to be less than or equal to the provided number. + * + * @usageNotes + * + * ### Validate against a maximum of 15 + * + * ```ts + * const control = new FormControl(16, Validators.max(15)); + * + * console.log(control.errors); // {max: {max: 15, actual: 16}} + * ``` + * + * @returns A validator function that returns an error map with the + * `max` property if the validation check fails, otherwise `null`. + * + * @see {@link /api/forms/AbstractControl#updateValueAndValidity updateValueAndValidity} + * + */ + static max(max) { + return maxValidator(max); + } + /** + * @description + * Validator that requires the control have a non-empty value. + * + * @usageNotes + * + * ### Validate that the field is non-empty + * + * ```ts + * const control = new FormControl('', Validators.required); + * + * console.log(control.errors); // {required: true} + * ``` + * + * @returns An error map with the `required` property + * if the validation check fails, otherwise `null`. + * + * @see {@link /api/forms/AbstractControl#updateValueAndValidity updateValueAndValidity} + * + */ + static required(control) { + return requiredValidator(control); + } + /** + * @description + * Validator that requires the control's value be true. This validator is commonly + * used for required checkboxes. + * + * @usageNotes + * + * ### Validate that the field value is true + * + * ```ts + * const control = new FormControl('some value', Validators.requiredTrue); + * + * console.log(control.errors); // {required: true} + * ``` + * + * @returns An error map that contains the `required` property + * set to `true` if the validation check fails, otherwise `null`. + * + * @see {@link /api/forms/AbstractControl#updateValueAndValidity updateValueAndValidity} + * + */ + static requiredTrue(control) { + return requiredTrueValidator(control); + } + /** + * @description + * Validator that requires the control's value pass an email validation test. + * + * Tests the value using a [regular + * expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) + * pattern suitable for common use cases. The pattern is based on the definition of a valid email + * address in the [WHATWG HTML + * specification](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with + * some enhancements to incorporate more RFC rules (such as rules related to domain names and the + * lengths of different parts of the address). + * + * The differences from the WHATWG version include: + * - Disallow `local-part` (the part before the `@` symbol) to begin or end with a period (`.`). + * - Disallow `local-part` to be longer than 64 characters. + * - Disallow the whole address to be longer than 254 characters. + * + * If this pattern does not satisfy your business needs, you can use `Validators.pattern()` to + * validate the value against a different pattern. + * + * @usageNotes + * + * ### Validate that the field matches a valid email pattern + * + * ```ts + * const control = new FormControl('bad@', Validators.email); + * + * console.log(control.errors); // {email: true} + * ``` + * + * @returns An error map with the `email` property + * if the validation check fails, otherwise `null`. + * + * @see {@link /api/forms/AbstractControl#updateValueAndValidity updateValueAndValidity} + * + */ + static email(control) { + return emailValidator(control); + } + /** + * @description + * Validator that requires the number of items in the control's value to be greater than or equal + * to the provided minimum length. This validator is also provided by default if you use + * the HTML5 `minlength` attribute. Note that the `minLength` validator is intended to be used + * only for types that have a numeric `length` or `size` property, such as strings, arrays or + * sets. The `minLength` validator logic is also not invoked for values when their `length` or + * `size` property is 0 (for example in case of an empty string or an empty array), to support + * optional controls. You can use the standard `required` validator if empty values should not be + * considered valid. + * + * @usageNotes + * + * ### Validate that the field has a minimum of 3 characters + * + * ```ts + * const control = new FormControl('ng', Validators.minLength(3)); + * + * console.log(control.errors); // {minlength: {requiredLength: 3, actualLength: 2}} + * ``` + * + * ```html + * + * ``` + * + * @returns A validator function that returns an error map with the + * `minlength` property if the validation check fails, otherwise `null`. + * + * @see {@link /api/forms/AbstractControl#updateValueAndValidity updateValueAndValidity} + * + */ + static minLength(minLength) { + return minLengthValidator(minLength); + } + /** + * @description + * Validator that requires the number of items in the control's value to be less than or equal + * to the provided maximum length. This validator is also provided by default if you use + * the HTML5 `maxlength` attribute. Note that the `maxLength` validator is intended to be used + * only for types that have a numeric `length` or `size` property, such as strings, arrays or + * sets. + * + * @usageNotes + * + * ### Validate that the field has maximum of 5 characters + * + * ```ts + * const control = new FormControl('Angular', Validators.maxLength(5)); + * + * console.log(control.errors); // {maxlength: {requiredLength: 5, actualLength: 7}} + * ``` + * + * ```html + * + * ``` + * + * @returns A validator function that returns an error map with the + * `maxlength` property if the validation check fails, otherwise `null`. + * + * @see {@link /api/forms/AbstractControl#updateValueAndValidity updateValueAndValidity} + * + */ + static maxLength(maxLength) { + return maxLengthValidator(maxLength); + } + /** + * @description + * Validator that requires the control's value to match a regex pattern. This validator is also + * provided by default if you use the HTML5 `pattern` attribute. + * + * @usageNotes + * + * ### Validate that the field only contains letters or spaces + * + * ```ts + * const control = new FormControl('1', Validators.pattern('[a-zA-Z ]*')); + * + * console.log(control.errors); // {pattern: {requiredPattern: '^[a-zA-Z ]*$', actualValue: '1'}} + * ``` + * + * ```html + * + * ``` + * + * ### Pattern matching with the global or sticky flag + * + * `RegExp` objects created with the `g` or `y` flags that are passed into `Validators.pattern` + * can produce different results on the same input when validations are run consecutively. This is + * due to how the behavior of `RegExp.prototype.test` is + * specified in [ECMA-262](https://tc39.es/ecma262/#sec-regexpbuiltinexec) + * (`RegExp` preserves the index of the last match when the global or sticky flag is used). + * Due to this behavior, it is recommended that when using + * `Validators.pattern` you **do not** pass in a `RegExp` object with either the global or sticky + * flag enabled. + * + * ```ts + * // Not recommended (since the `g` flag is used) + * const controlOne = new FormControl('1', Validators.pattern(/foo/g)); + * + * // Good + * const controlTwo = new FormControl('1', Validators.pattern(/foo/)); + * ``` + * + * @param pattern A regular expression to be used as is to test the values, or a string. + * If a string is passed, the `^` character is prepended and the `$` character is + * appended to the provided string (if not already present), and the resulting regular + * expression is used to test the values. + * + * @returns A validator function that returns an error map with the + * `pattern` property if the validation check fails, otherwise `null`. + * + * @see {@link /api/forms/AbstractControl#updateValueAndValidity updateValueAndValidity} + * + */ + static pattern(pattern) { + return patternValidator(pattern); + } + /** + * @description + * Validator that performs no operation. + * + * @see {@link /api/forms/AbstractControl#updateValueAndValidity updateValueAndValidity} + * + */ + static nullValidator(control) { + return nullValidator(); + } + static compose(validators) { + return compose(validators); + } + /** + * @description + * Compose multiple async validators into a single function that returns the union + * of the individual error objects for the provided control. + * + * @returns A validator function that returns an error map with the + * merged error objects of the async validators if the validation check fails, otherwise `null`. + * + * @see {@link /api/forms/AbstractControl#updateValueAndValidity updateValueAndValidity} + * + */ + static composeAsync(validators) { + return composeAsync(validators); + } +}; +function minValidator(min) { + return (control) => { + if (control.value == null || min == null) { + return null; + } + const value = parseFloat(control.value); + return !isNaN(value) && value < min ? { + "min": { + "min": min, + "actual": control.value + } + } : null; + }; +} +function maxValidator(max) { + return (control) => { + if (control.value == null || max == null) { + return null; + } + const value = parseFloat(control.value); + return !isNaN(value) && value > max ? { + "max": { + "max": max, + "actual": control.value + } + } : null; + }; +} +function requiredValidator(control) { + return isEmptyInputValue(control.value) ? { + "required": true + } : null; +} +function requiredTrueValidator(control) { + return control.value === true ? null : { + "required": true + }; +} +function emailValidator(control) { + if (isEmptyInputValue(control.value)) { + return null; + } + return EMAIL_REGEXP.test(control.value) ? null : { + "email": true + }; +} +function minLengthValidator(minLength) { + return (control) => { + const length = control.value?.length ?? lengthOrSize(control.value); + if (length === null || length === 0) { + return null; + } + return length < minLength ? { + "minlength": { + "requiredLength": minLength, + "actualLength": length + } + } : null; + }; +} +function maxLengthValidator(maxLength) { + return (control) => { + const length = control.value?.length ?? lengthOrSize(control.value); + if (length !== null && length > maxLength) { + return { + "maxlength": { + "requiredLength": maxLength, + "actualLength": length + } + }; + } + return null; + }; +} +function patternValidator(pattern) { + if (!pattern) return nullValidator; + let regex; + let regexStr; + if (typeof pattern === "string") { + regexStr = ""; + if (pattern.charAt(0) !== "^") regexStr += "^"; + regexStr += pattern; + if (pattern.charAt(pattern.length - 1) !== "$") regexStr += "$"; + regex = new RegExp(regexStr); + } else { + regexStr = pattern.toString(); + regex = pattern; + } + return (control) => { + if (isEmptyInputValue(control.value)) { + return null; + } + const value = control.value; + return regex.test(value) ? null : { + "pattern": { + "requiredPattern": regexStr, + "actualValue": value + } + }; + }; +} +function nullValidator(control) { + return null; +} +function isPresent(o) { + return o != null; +} +function toObservable(value) { + const obs = isPromise(value) ? from(value) : value; + if ((typeof ngDevMode === "undefined" || ngDevMode) && !isSubscribable(obs)) { + let errorMessage = `Expected async validator to return Promise or Observable.`; + if (typeof value === "object") { + errorMessage += " Are you using a synchronous validator where an async validator is expected?"; + } + throw new RuntimeError(-1101, errorMessage); + } + return obs; +} +function mergeErrors(arrayOfErrors) { + let res = {}; + arrayOfErrors.forEach((errors) => { + res = errors != null ? __spreadValues(__spreadValues({}, res), errors) : res; + }); + return Object.keys(res).length === 0 ? null : res; +} +function executeValidators(control, validators) { + return validators.map((validator) => validator(control)); +} +function isValidatorFn(validator) { + return !validator.validate; +} +function normalizeValidators(validators) { + return validators.map((validator) => { + return isValidatorFn(validator) ? validator : (c) => validator.validate(c); + }); +} +function compose(validators) { + if (!validators) return null; + const presentValidators = validators.filter(isPresent); + if (presentValidators.length == 0) return null; + return function(control) { + return mergeErrors(executeValidators(control, presentValidators)); + }; +} +function composeValidators(validators) { + return validators != null ? compose(normalizeValidators(validators)) : null; +} +function composeAsync(validators) { + if (!validators) return null; + const presentValidators = validators.filter(isPresent); + if (presentValidators.length == 0) return null; + return function(control) { + const observables = executeValidators(control, presentValidators).map(toObservable); + return forkJoin(observables).pipe(map(mergeErrors)); + }; +} +function composeAsyncValidators(validators) { + return validators != null ? composeAsync(normalizeValidators(validators)) : null; +} +function mergeValidators(controlValidators, dirValidator) { + if (controlValidators === null) return [dirValidator]; + return Array.isArray(controlValidators) ? [...controlValidators, dirValidator] : [controlValidators, dirValidator]; +} +function getControlValidators(control) { + return control._rawValidators; +} +function getControlAsyncValidators(control) { + return control._rawAsyncValidators; +} +function makeValidatorsArray(validators) { + if (!validators) return []; + return Array.isArray(validators) ? validators : [validators]; +} +function hasValidator(validators, validator) { + return Array.isArray(validators) ? validators.includes(validator) : validators === validator; +} +function addValidators(validators, currentValidators) { + const current = makeValidatorsArray(currentValidators); + const validatorsToAdd = makeValidatorsArray(validators); + validatorsToAdd.forEach((v) => { + if (!hasValidator(current, v)) { + current.push(v); + } + }); + return current; +} +function removeValidators(validators, currentValidators) { + return makeValidatorsArray(currentValidators).filter((v) => !hasValidator(validators, v)); +} +var AbstractControlDirective = class { + /** + * @description + * Reports the value of the control if it is present, otherwise null. + */ + get value() { + return this.control ? this.control.value : null; + } + /** + * @description + * Reports whether the control is valid. A control is considered valid if no + * validation errors exist with the current value. + * If the control is not present, null is returned. + */ + get valid() { + return this.control ? this.control.valid : null; + } + /** + * @description + * Reports whether the control is invalid, meaning that an error exists in the input value. + * If the control is not present, null is returned. + */ + get invalid() { + return this.control ? this.control.invalid : null; + } + /** + * @description + * Reports whether a control is pending, meaning that async validation is occurring and + * errors are not yet available for the input value. If the control is not present, null is + * returned. + */ + get pending() { + return this.control ? this.control.pending : null; + } + /** + * @description + * Reports whether the control is disabled, meaning that the control is disabled + * in the UI and is exempt from validation checks and excluded from aggregate + * values of ancestor controls. If the control is not present, null is returned. + */ + get disabled() { + return this.control ? this.control.disabled : null; + } + /** + * @description + * Reports whether the control is enabled, meaning that the control is included in ancestor + * calculations of validity or value. If the control is not present, null is returned. + */ + get enabled() { + return this.control ? this.control.enabled : null; + } + /** + * @description + * Reports the control's validation errors. If the control is not present, null is returned. + */ + get errors() { + return this.control ? this.control.errors : null; + } + /** + * @description + * Reports whether the control is pristine, meaning that the user has not yet changed + * the value in the UI. If the control is not present, null is returned. + */ + get pristine() { + return this.control ? this.control.pristine : null; + } + /** + * @description + * Reports whether the control is dirty, meaning that the user has changed + * the value in the UI. If the control is not present, null is returned. + */ + get dirty() { + return this.control ? this.control.dirty : null; + } + /** + * @description + * Reports whether the control is touched, meaning that the user has triggered + * a `blur` event on it. If the control is not present, null is returned. + */ + get touched() { + return this.control ? this.control.touched : null; + } + /** + * @description + * Reports the validation status of the control. Possible values include: + * 'VALID', 'INVALID', 'DISABLED', and 'PENDING'. + * If the control is not present, null is returned. + */ + get status() { + return this.control ? this.control.status : null; + } + /** + * @description + * Reports whether the control is untouched, meaning that the user has not yet triggered + * a `blur` event on it. If the control is not present, null is returned. + */ + get untouched() { + return this.control ? this.control.untouched : null; + } + /** + * @description + * Returns a multicasting observable that emits a validation status whenever it is + * calculated for the control. If the control is not present, null is returned. + */ + get statusChanges() { + return this.control ? this.control.statusChanges : null; + } + /** + * @description + * Returns a multicasting observable of value changes for the control that emits every time the + * value of the control changes in the UI or programmatically. + * If the control is not present, null is returned. + */ + get valueChanges() { + return this.control ? this.control.valueChanges : null; + } + /** + * @description + * Returns an array that represents the path from the top-level form to this control. + * Each index is the string name of the control on that level. + */ + get path() { + return null; + } + /** + * Contains the result of merging synchronous validators into a single validator function + * (combined using `Validators.compose`). + */ + _composedValidatorFn; + /** + * Contains the result of merging asynchronous validators into a single validator function + * (combined using `Validators.composeAsync`). + */ + _composedAsyncValidatorFn; + /** + * Set of synchronous validators as they were provided while calling `setValidators` function. + * @internal + */ + _rawValidators = []; + /** + * Set of asynchronous validators as they were provided while calling `setAsyncValidators` + * function. + * @internal + */ + _rawAsyncValidators = []; + /** + * Sets synchronous validators for this directive. + * @internal + */ + _setValidators(validators) { + this._rawValidators = validators || []; + this._composedValidatorFn = composeValidators(this._rawValidators); + } + /** + * Sets asynchronous validators for this directive. + * @internal + */ + _setAsyncValidators(validators) { + this._rawAsyncValidators = validators || []; + this._composedAsyncValidatorFn = composeAsyncValidators(this._rawAsyncValidators); + } + /** + * @description + * Synchronous validator function composed of all the synchronous validators registered with this + * directive. + */ + get validator() { + return this._composedValidatorFn || null; + } + /** + * @description + * Asynchronous validator function composed of all the asynchronous validators registered with + * this directive. + */ + get asyncValidator() { + return this._composedAsyncValidatorFn || null; + } + /* + * The set of callbacks to be invoked when directive instance is being destroyed. + */ + _onDestroyCallbacks = []; + /** + * Internal function to register callbacks that should be invoked + * when directive instance is being destroyed. + * @internal + */ + _registerOnDestroy(fn) { + this._onDestroyCallbacks.push(fn); + } + /** + * Internal function to invoke all registered "on destroy" callbacks. + * Note: calling this function also clears the list of callbacks. + * @internal + */ + _invokeOnDestroyCallbacks() { + this._onDestroyCallbacks.forEach((fn) => fn()); + this._onDestroyCallbacks = []; + } + /** + * @description + * Resets the control with the provided value if the control is present. + */ + reset(value = void 0) { + if (this.control) this.control.reset(value); + } + /** + * @description + * Reports whether the control with the given path has the error specified. + * + * @param errorCode The code of the error to check + * @param path A list of control names that designates how to move from the current control + * to the control that should be queried for errors. + * + * @usageNotes + * For example, for the following `FormGroup`: + * + * ```ts + * form = new FormGroup({ + * address: new FormGroup({ street: new FormControl() }) + * }); + * ``` + * + * The path to the 'street' control from the root form would be 'address' -> 'street'. + * + * It can be provided to this method in one of two formats: + * + * 1. An array of string control names, e.g. `['address', 'street']` + * 1. A period-delimited list of control names in one string, e.g. `'address.street'` + * + * If no path is given, this method checks for the error on the current control. + * + * @returns whether the given error is present in the control at the given path. + * + * If the control is not present, false is returned. + */ + hasError(errorCode, path) { + return this.control ? this.control.hasError(errorCode, path) : false; + } + /** + * @description + * Reports error data for the control with the given path. + * + * @param errorCode The code of the error to check + * @param path A list of control names that designates how to move from the current control + * to the control that should be queried for errors. + * + * @usageNotes + * For example, for the following `FormGroup`: + * + * ```ts + * form = new FormGroup({ + * address: new FormGroup({ street: new FormControl() }) + * }); + * ``` + * + * The path to the 'street' control from the root form would be 'address' -> 'street'. + * + * It can be provided to this method in one of two formats: + * + * 1. An array of string control names, e.g. `['address', 'street']` + * 1. A period-delimited list of control names in one string, e.g. `'address.street'` + * + * @returns error data for that particular error. If the control or error is not present, + * null is returned. + */ + getError(errorCode, path) { + return this.control ? this.control.getError(errorCode, path) : null; + } +}; +var ControlContainer = class extends AbstractControlDirective { + /** + * @description + * The name for the control + */ + name; + /** + * @description + * The top-level form directive for the control. + */ + get formDirective() { + return null; + } + /** + * @description + * The path to this group. + */ + get path() { + return null; + } +}; +var NgControl = class extends AbstractControlDirective { + /** + * @description + * The parent form for the control. + * + * @internal + */ + _parent = null; + /** + * @description + * The name for the control + */ + name = null; + /** + * @description + * The value accessor for the control + */ + valueAccessor = null; +}; +var AbstractControlStatus = class { + _cd; + constructor(cd) { + this._cd = cd; + } + get isTouched() { + this._cd?.control?._touched?.(); + return !!this._cd?.control?.touched; + } + get isUntouched() { + return !!this._cd?.control?.untouched; + } + get isPristine() { + this._cd?.control?._pristine?.(); + return !!this._cd?.control?.pristine; + } + get isDirty() { + return !!this._cd?.control?.dirty; + } + get isValid() { + this._cd?.control?._status?.(); + return !!this._cd?.control?.valid; + } + get isInvalid() { + return !!this._cd?.control?.invalid; + } + get isPending() { + return !!this._cd?.control?.pending; + } + get isSubmitted() { + this._cd?._submitted?.(); + return !!this._cd?.submitted; + } +}; +var ngControlStatusHost = { + "[class.ng-untouched]": "isUntouched", + "[class.ng-touched]": "isTouched", + "[class.ng-pristine]": "isPristine", + "[class.ng-dirty]": "isDirty", + "[class.ng-valid]": "isValid", + "[class.ng-invalid]": "isInvalid", + "[class.ng-pending]": "isPending" +}; +var ngGroupStatusHost = __spreadProps(__spreadValues({}, ngControlStatusHost), { + "[class.ng-submitted]": "isSubmitted" +}); +var NgControlStatus = class _NgControlStatus extends AbstractControlStatus { + constructor(cd) { + super(cd); + } + static ɵfac = function NgControlStatus_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _NgControlStatus)(ɵɵdirectiveInject(NgControl, 2)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _NgControlStatus, + selectors: [["", "formControlName", ""], ["", "ngModel", ""], ["", "formControl", ""]], + hostVars: 14, + hostBindings: function NgControlStatus_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵclassProp("ng-untouched", ctx.isUntouched)("ng-touched", ctx.isTouched)("ng-pristine", ctx.isPristine)("ng-dirty", ctx.isDirty)("ng-valid", ctx.isValid)("ng-invalid", ctx.isInvalid)("ng-pending", ctx.isPending); + } + }, + standalone: false, + features: [ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgControlStatus, [{ + type: Directive, + args: [{ + selector: "[formControlName],[ngModel],[formControl]", + host: ngControlStatusHost, + standalone: false + }] + }], () => [{ + type: NgControl, + decorators: [{ + type: Self + }] + }], null); +})(); +var NgControlStatusGroup = class _NgControlStatusGroup extends AbstractControlStatus { + constructor(cd) { + super(cd); + } + static ɵfac = function NgControlStatusGroup_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _NgControlStatusGroup)(ɵɵdirectiveInject(ControlContainer, 10)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _NgControlStatusGroup, + selectors: [["", "formGroupName", ""], ["", "formArrayName", ""], ["", "ngModelGroup", ""], ["", "formGroup", ""], ["form", 3, "ngNoForm", ""], ["", "ngForm", ""]], + hostVars: 16, + hostBindings: function NgControlStatusGroup_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵclassProp("ng-untouched", ctx.isUntouched)("ng-touched", ctx.isTouched)("ng-pristine", ctx.isPristine)("ng-dirty", ctx.isDirty)("ng-valid", ctx.isValid)("ng-invalid", ctx.isInvalid)("ng-pending", ctx.isPending)("ng-submitted", ctx.isSubmitted); + } + }, + standalone: false, + features: [ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgControlStatusGroup, [{ + type: Directive, + args: [{ + selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]", + host: ngGroupStatusHost, + standalone: false + }] + }], () => [{ + type: ControlContainer, + decorators: [{ + type: Optional + }, { + type: Self + }] + }], null); +})(); +var formControlNameExample = ` +
+ +
+ + In your class: + + this.myGroup = new FormGroup({ + firstName: new FormControl() + });`; +var formGroupNameExample = ` +
+
+ +
+
+ + In your class: + + this.myGroup = new FormGroup({ + person: new FormGroup({ firstName: new FormControl() }) + });`; +var formArrayNameExample = ` +
+
+
+ +
+
+
+ + In your class: + + this.cityArray = new FormArray([new FormControl('SF')]); + this.myGroup = new FormGroup({ + cities: this.cityArray + });`; +var ngModelGroupExample = ` +
+
+ +
+
`; +var ngModelWithFormGroupExample = ` +
+ + +
+`; +function controlParentException(nameOrIndex) { + return new RuntimeError(1050, `formControlName must be used with a parent formGroup directive. You'll want to add a formGroup + directive and pass it an existing FormGroup instance (you can create one in your class). + + ${describeFormControl(nameOrIndex)} + + Example: + + ${formControlNameExample}`); +} +function describeFormControl(nameOrIndex) { + if (nameOrIndex == null || nameOrIndex === "") { + return ""; + } + const valueType = typeof nameOrIndex === "string" ? "name" : "index"; + return `Affected Form Control ${valueType}: "${nameOrIndex}"`; +} +function ngModelGroupException() { + return new RuntimeError(1051, `formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents + that also have a "form" prefix: formGroupName, formArrayName, or formGroup. + + Option 1: Update the parent to be formGroupName (reactive form strategy) + + ${formGroupNameExample} + + Option 2: Use ngModel instead of formControlName (template-driven strategy) + + ${ngModelGroupExample}`); +} +function missingFormException() { + return new RuntimeError(1052, `formGroup expects a FormGroup instance. Please pass one in. + + Example: + + ${formControlNameExample}`); +} +function groupParentException() { + return new RuntimeError(1053, `formGroupName must be used with a parent formGroup directive. You'll want to add a formGroup + directive and pass it an existing FormGroup instance (you can create one in your class). + + Example: + + ${formGroupNameExample}`); +} +function arrayParentException() { + return new RuntimeError(1054, `formArrayName must be used with a parent formGroup directive. You'll want to add a formGroup + directive and pass it an existing FormGroup instance (you can create one in your class). + + Example: + + ${formArrayNameExample}`); +} +var disabledAttrWarning = ` + It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true + when you set up this control in your component class, the disabled attribute will actually be set in the DOM for + you. We recommend using this approach to avoid 'changed after checked' errors. + + Example: + // Specify the \`disabled\` property at control creation time: + form = new FormGroup({ + first: new FormControl({value: 'Nancy', disabled: true}, Validators.required), + last: new FormControl('Drew', Validators.required) + }); + + // Controls can also be enabled/disabled after creation: + form.get('first')?.enable(); + form.get('last')?.disable(); +`; +var asyncValidatorsDroppedWithOptsWarning = ` + It looks like you're constructing using a FormControl with both an options argument and an + async validators argument. Mixing these arguments will cause your async validators to be dropped. + You should either put all your validators in the options object, or in separate validators + arguments. For example: + + // Using validators arguments + fc = new FormControl(42, Validators.required, myAsyncValidator); + + // Using AbstractControlOptions + fc = new FormControl(42, {validators: Validators.required, asyncValidators: myAV}); + + // Do NOT mix them: async validators will be dropped! + fc = new FormControl(42, {validators: Validators.required}, /* Oops! */ myAsyncValidator); +`; +function ngModelWarning(directiveName) { + return ` + It looks like you're using ngModel on the same form field as ${directiveName}. + Support for using the ngModel input property and ngModelChange event with + reactive form directives has been deprecated in Angular v6 and will be removed + in a future version of Angular. + + For more information on this, see our API docs here: + https://angular.io/api/forms/${directiveName === "formControl" ? "FormControlDirective" : "FormControlName"}#use-with-ngmodel + `; +} +function describeKey(isFormGroup2, key) { + return isFormGroup2 ? `with name: '${key}'` : `at index: ${key}`; +} +function noControlsError(isFormGroup2) { + return ` + There are no form controls registered with this ${isFormGroup2 ? "group" : "array"} yet. If you're using ngModel, + you may want to check next tick (e.g. use setTimeout). + `; +} +function missingControlError(isFormGroup2, key) { + return `Cannot find form control ${describeKey(isFormGroup2, key)}`; +} +function missingControlValueError(isFormGroup2, key) { + return `Must supply a value for form control ${describeKey(isFormGroup2, key)}`; +} +var VALID = "VALID"; +var INVALID = "INVALID"; +var PENDING = "PENDING"; +var DISABLED = "DISABLED"; +var ControlEvent = class { +}; +var ValueChangeEvent = class extends ControlEvent { + value; + source; + constructor(value, source) { + super(); + this.value = value; + this.source = source; + } +}; +var PristineChangeEvent = class extends ControlEvent { + pristine; + source; + constructor(pristine, source) { + super(); + this.pristine = pristine; + this.source = source; + } +}; +var TouchedChangeEvent = class extends ControlEvent { + touched; + source; + constructor(touched, source) { + super(); + this.touched = touched; + this.source = source; + } +}; +var StatusChangeEvent = class extends ControlEvent { + status; + source; + constructor(status, source) { + super(); + this.status = status; + this.source = source; + } +}; +var FormSubmittedEvent = class extends ControlEvent { + source; + constructor(source) { + super(); + this.source = source; + } +}; +var FormResetEvent = class extends ControlEvent { + source; + constructor(source) { + super(); + this.source = source; + } +}; +function pickValidators(validatorOrOpts) { + return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.validators : validatorOrOpts) || null; +} +function coerceToValidator(validator) { + return Array.isArray(validator) ? composeValidators(validator) : validator || null; +} +function pickAsyncValidators(asyncValidator, validatorOrOpts) { + if (typeof ngDevMode === "undefined" || ngDevMode) { + if (isOptionsObj(validatorOrOpts) && asyncValidator) { + console.warn(asyncValidatorsDroppedWithOptsWarning); + } + } + return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.asyncValidators : asyncValidator) || null; +} +function coerceToAsyncValidator(asyncValidator) { + return Array.isArray(asyncValidator) ? composeAsyncValidators(asyncValidator) : asyncValidator || null; +} +function isOptionsObj(validatorOrOpts) { + return validatorOrOpts != null && !Array.isArray(validatorOrOpts) && typeof validatorOrOpts === "object"; +} +function assertControlPresent(parent, isGroup, key) { + const controls = parent.controls; + const collection = isGroup ? Object.keys(controls) : controls; + if (!collection.length) { + throw new RuntimeError(1e3, typeof ngDevMode === "undefined" || ngDevMode ? noControlsError(isGroup) : ""); + } + if (!controls[key]) { + throw new RuntimeError(1001, typeof ngDevMode === "undefined" || ngDevMode ? missingControlError(isGroup, key) : ""); + } +} +function assertAllValuesPresent(control, isGroup, value) { + control._forEachChild((_, key) => { + if (value[key] === void 0) { + throw new RuntimeError(1002, typeof ngDevMode === "undefined" || ngDevMode ? missingControlValueError(isGroup, key) : ""); + } + }); +} +var AbstractControl = class { + /** @internal */ + _pendingDirty = false; + /** + * Indicates that a control has its own pending asynchronous validation in progress. + * It also stores if the control should emit events when the validation status changes. + * + * @internal + */ + _hasOwnPendingAsyncValidator = null; + /** @internal */ + _pendingTouched = false; + /** @internal */ + _onCollectionChange = () => { + }; + /** @internal */ + _updateOn; + _parent = null; + _asyncValidationSubscription; + /** + * Contains the result of merging synchronous validators into a single validator function + * (combined using `Validators.compose`). + * + * @internal + */ + _composedValidatorFn; + /** + * Contains the result of merging asynchronous validators into a single validator function + * (combined using `Validators.composeAsync`). + * + * @internal + */ + _composedAsyncValidatorFn; + /** + * Synchronous validators as they were provided: + * - in `AbstractControl` constructor + * - as an argument while calling `setValidators` function + * - while calling the setter on the `validator` field (e.g. `control.validator = validatorFn`) + * + * @internal + */ + _rawValidators; + /** + * Asynchronous validators as they were provided: + * - in `AbstractControl` constructor + * - as an argument while calling `setAsyncValidators` function + * - while calling the setter on the `asyncValidator` field (e.g. `control.asyncValidator = + * asyncValidatorFn`) + * + * @internal + */ + _rawAsyncValidators; + /** + * The current value of the control. + * + * * For a `FormControl`, the current value. + * * For an enabled `FormGroup`, the values of enabled controls as an object + * with a key-value pair for each member of the group. + * * For a disabled `FormGroup`, the values of all controls as an object + * with a key-value pair for each member of the group. + * * For a `FormArray`, the values of enabled controls as an array. + * + */ + value; + /** + * Initialize the AbstractControl instance. + * + * @param validators The function or array of functions that is used to determine the validity of + * this control synchronously. + * @param asyncValidators The function or array of functions that is used to determine validity of + * this control asynchronously. + */ + constructor(validators, asyncValidators) { + this._assignValidators(validators); + this._assignAsyncValidators(asyncValidators); + } + /** + * Returns the function that is used to determine the validity of this control synchronously. + * If multiple validators have been added, this will be a single composed function. + * See `Validators.compose()` for additional information. + */ + get validator() { + return this._composedValidatorFn; + } + set validator(validatorFn) { + this._rawValidators = this._composedValidatorFn = validatorFn; + } + /** + * Returns the function that is used to determine the validity of this control asynchronously. + * If multiple validators have been added, this will be a single composed function. + * See `Validators.compose()` for additional information. + */ + get asyncValidator() { + return this._composedAsyncValidatorFn; + } + set asyncValidator(asyncValidatorFn) { + this._rawAsyncValidators = this._composedAsyncValidatorFn = asyncValidatorFn; + } + /** + * The parent control. + */ + get parent() { + return this._parent; + } + /** + * The validation status of the control. + * + * @see {@link FormControlStatus} + * + * These status values are mutually exclusive, so a control cannot be + * both valid AND invalid or invalid AND disabled. + */ + get status() { + return untracked(this.statusReactive); + } + set status(v) { + untracked(() => this.statusReactive.set(v)); + } + /** @internal */ + _status = computed(() => this.statusReactive(), ...ngDevMode ? [{ + debugName: "_status" + }] : []); + statusReactive = signal(void 0, ...ngDevMode ? [{ + debugName: "statusReactive" + }] : []); + /** + * A control is `valid` when its `status` is `VALID`. + * + * @see {@link AbstractControl.status} + * + * @returns True if the control has passed all of its validation tests, + * false otherwise. + */ + get valid() { + return this.status === VALID; + } + /** + * A control is `invalid` when its `status` is `INVALID`. + * + * @see {@link AbstractControl.status} + * + * @returns True if this control has failed one or more of its validation checks, + * false otherwise. + */ + get invalid() { + return this.status === INVALID; + } + /** + * A control is `pending` when its `status` is `PENDING`. + * + * @see {@link AbstractControl.status} + * + * @returns True if this control is in the process of conducting a validation check, + * false otherwise. + */ + get pending() { + return this.status == PENDING; + } + /** + * A control is `disabled` when its `status` is `DISABLED`. + * + * Disabled controls are exempt from validation checks and + * are not included in the aggregate value of their ancestor + * controls. + * + * @see {@link AbstractControl.status} + * + * @returns True if the control is disabled, false otherwise. + */ + get disabled() { + return this.status === DISABLED; + } + /** + * A control is `enabled` as long as its `status` is not `DISABLED`. + * + * @returns True if the control has any status other than 'DISABLED', + * false if the status is 'DISABLED'. + * + * @see {@link AbstractControl.status} + * + */ + get enabled() { + return this.status !== DISABLED; + } + /** + * An object containing any errors generated by failing validation, + * or null if there are no errors. + */ + errors; + /** + * A control is `pristine` if the user has not yet changed + * the value in the UI. + * + * @returns True if the user has not yet changed the value in the UI; compare `dirty`. + * Programmatic changes to a control's value do not mark it dirty. + */ + get pristine() { + return untracked(this.pristineReactive); + } + set pristine(v) { + untracked(() => this.pristineReactive.set(v)); + } + /** @internal */ + _pristine = computed(() => this.pristineReactive(), ...ngDevMode ? [{ + debugName: "_pristine" + }] : []); + pristineReactive = signal(true, ...ngDevMode ? [{ + debugName: "pristineReactive" + }] : []); + /** + * A control is `dirty` if the user has changed the value + * in the UI. + * + * @returns True if the user has changed the value of this control in the UI; compare `pristine`. + * Programmatic changes to a control's value do not mark it dirty. + */ + get dirty() { + return !this.pristine; + } + /** + * True if the control is marked as `touched`. + * + * A control is marked `touched` once the user has triggered + * a `blur` event on it. + */ + get touched() { + return untracked(this.touchedReactive); + } + set touched(v) { + untracked(() => this.touchedReactive.set(v)); + } + /** @internal */ + _touched = computed(() => this.touchedReactive(), ...ngDevMode ? [{ + debugName: "_touched" + }] : []); + touchedReactive = signal(false, ...ngDevMode ? [{ + debugName: "touchedReactive" + }] : []); + /** + * True if the control has not been marked as touched + * + * A control is `untouched` if the user has not yet triggered + * a `blur` event on it. + */ + get untouched() { + return !this.touched; + } + /** + * Exposed as observable, see below. + * + * @internal + */ + _events = new Subject(); + /** + * A multicasting observable that emits an event every time the state of the control changes. + * It emits for value, status, pristine or touched changes. + * + * **Note**: On value change, the emit happens right after a value of this control is updated. The + * value of a parent control (for example if this FormControl is a part of a FormGroup) is updated + * later, so accessing a value of a parent control (using the `value` property) from the callback + * of this event might result in getting a value that has not been updated yet. Subscribe to the + * `events` of the parent control instead. + * For other event types, the events are emitted after the parent control has been updated. + * + */ + events = this._events.asObservable(); + /** + * A multicasting observable that emits an event every time the value of the control changes, in + * the UI or programmatically. It also emits an event each time you call enable() or disable() + * without passing along {emitEvent: false} as a function argument. + * + * **Note**: the emit happens right after a value of this control is updated. The value of a + * parent control (for example if this FormControl is a part of a FormGroup) is updated later, so + * accessing a value of a parent control (using the `value` property) from the callback of this + * event might result in getting a value that has not been updated yet. Subscribe to the + * `valueChanges` event of the parent control instead. + */ + valueChanges; + /** + * A multicasting observable that emits an event every time the validation `status` of the control + * recalculates. + * + * @see {@link FormControlStatus} + * @see {@link AbstractControl.status} + */ + statusChanges; + /** + * Reports the update strategy of the `AbstractControl` (meaning + * the event on which the control updates itself). + * Possible values: `'change'` | `'blur'` | `'submit'` + * Default value: `'change'` + */ + get updateOn() { + return this._updateOn ? this._updateOn : this.parent ? this.parent.updateOn : "change"; + } + /** + * Sets the synchronous validators that are active on this control. Calling + * this overwrites any existing synchronous validators. + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + * If you want to add a new validator without affecting existing ones, consider + * using `addValidators()` method instead. + */ + setValidators(validators) { + this._assignValidators(validators); + } + /** + * Sets the asynchronous validators that are active on this control. Calling this + * overwrites any existing asynchronous validators. + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + * If you want to add a new validator without affecting existing ones, consider + * using `addAsyncValidators()` method instead. + */ + setAsyncValidators(validators) { + this._assignAsyncValidators(validators); + } + /** + * Add a synchronous validator or validators to this control, without affecting other validators. + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + * Adding a validator that already exists will have no effect. If duplicate validator functions + * are present in the `validators` array, only the first instance would be added to a form + * control. + * + * @param validators The new validator function or functions to add to this control. + */ + addValidators(validators) { + this.setValidators(addValidators(validators, this._rawValidators)); + } + /** + * Add an asynchronous validator or validators to this control, without affecting other + * validators. + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + * Adding a validator that already exists will have no effect. + * + * @param validators The new asynchronous validator function or functions to add to this control. + */ + addAsyncValidators(validators) { + this.setAsyncValidators(addValidators(validators, this._rawAsyncValidators)); + } + /** + * Remove a synchronous validator from this control, without affecting other validators. + * Validators are compared by function reference; you must pass a reference to the exact same + * validator function as the one that was originally set. If a provided validator is not found, + * it is ignored. + * + * @usageNotes + * + * ### Reference to a ValidatorFn + * + * ``` + * // Reference to the RequiredValidator + * const ctrl = new FormControl('', Validators.required); + * ctrl.removeValidators(Validators.required); + * + * // Reference to anonymous function inside MinValidator + * const minValidator = Validators.min(3); + * const ctrl = new FormControl('', minValidator); + * expect(ctrl.hasValidator(minValidator)).toEqual(true) + * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false) + * + * ctrl.removeValidators(minValidator); + * ``` + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + * @param validators The validator or validators to remove. + */ + removeValidators(validators) { + this.setValidators(removeValidators(validators, this._rawValidators)); + } + /** + * Remove an asynchronous validator from this control, without affecting other validators. + * Validators are compared by function reference; you must pass a reference to the exact same + * validator function as the one that was originally set. If a provided validator is not found, it + * is ignored. + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + * @param validators The asynchronous validator or validators to remove. + */ + removeAsyncValidators(validators) { + this.setAsyncValidators(removeValidators(validators, this._rawAsyncValidators)); + } + /** + * Check whether a synchronous validator function is present on this control. The provided + * validator must be a reference to the exact same function that was provided. + * + * @usageNotes + * + * ### Reference to a ValidatorFn + * + * ``` + * // Reference to the RequiredValidator + * const ctrl = new FormControl(0, Validators.required); + * expect(ctrl.hasValidator(Validators.required)).toEqual(true) + * + * // Reference to anonymous function inside MinValidator + * const minValidator = Validators.min(3); + * const ctrl = new FormControl(0, minValidator); + * expect(ctrl.hasValidator(minValidator)).toEqual(true) + * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false) + * ``` + * + * @param validator The validator to check for presence. Compared by function reference. + * @returns Whether the provided validator was found on this control. + */ + hasValidator(validator) { + return hasValidator(this._rawValidators, validator); + } + /** + * Check whether an asynchronous validator function is present on this control. The provided + * validator must be a reference to the exact same function that was provided. + * + * @param validator The asynchronous validator to check for presence. Compared by function + * reference. + * @returns Whether the provided asynchronous validator was found on this control. + */ + hasAsyncValidator(validator) { + return hasValidator(this._rawAsyncValidators, validator); + } + /** + * Empties out the synchronous validator list. + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + */ + clearValidators() { + this.validator = null; + } + /** + * Empties out the async validator list. + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + */ + clearAsyncValidators() { + this.asyncValidator = null; + } + markAsTouched(opts = {}) { + const changed = this.touched === false; + this.touched = true; + const sourceControl = opts.sourceControl ?? this; + if (this._parent && !opts.onlySelf) { + this._parent.markAsTouched(__spreadProps(__spreadValues({}, opts), { + sourceControl + })); + } + if (changed && opts.emitEvent !== false) { + this._events.next(new TouchedChangeEvent(true, sourceControl)); + } + } + /** + * Marks the control and all its descendant controls as `dirty`. + * @see {@link markAsDirty()} + * + * @param opts Configuration options that determine how the control propagates changes + * and emits events after marking is applied. + * * `emitEvent`: When true or not supplied (the default), the `events` + * observable emits a `PristineChangeEvent` with the `pristine` property being `false`. + * When false, no events are emitted. + */ + markAllAsDirty(opts = {}) { + this.markAsDirty({ + onlySelf: true, + emitEvent: opts.emitEvent, + sourceControl: this + }); + this._forEachChild((control) => control.markAllAsDirty(opts)); + } + /** + * Marks the control and all its descendant controls as `touched`. + * @see {@link markAsTouched()} + * + * @param opts Configuration options that determine how the control propagates changes + * and emits events after marking is applied. + * * `emitEvent`: When true or not supplied (the default), the `events` + * observable emits a `TouchedChangeEvent` with the `touched` property being `true`. + * When false, no events are emitted. + */ + markAllAsTouched(opts = {}) { + this.markAsTouched({ + onlySelf: true, + emitEvent: opts.emitEvent, + sourceControl: this + }); + this._forEachChild((control) => control.markAllAsTouched(opts)); + } + markAsUntouched(opts = {}) { + const changed = this.touched === true; + this.touched = false; + this._pendingTouched = false; + const sourceControl = opts.sourceControl ?? this; + this._forEachChild((control) => { + control.markAsUntouched({ + onlySelf: true, + emitEvent: opts.emitEvent, + sourceControl + }); + }); + if (this._parent && !opts.onlySelf) { + this._parent._updateTouched(opts, sourceControl); + } + if (changed && opts.emitEvent !== false) { + this._events.next(new TouchedChangeEvent(false, sourceControl)); + } + } + markAsDirty(opts = {}) { + const changed = this.pristine === true; + this.pristine = false; + const sourceControl = opts.sourceControl ?? this; + if (this._parent && !opts.onlySelf) { + this._parent.markAsDirty(__spreadProps(__spreadValues({}, opts), { + sourceControl + })); + } + if (changed && opts.emitEvent !== false) { + this._events.next(new PristineChangeEvent(false, sourceControl)); + } + } + markAsPristine(opts = {}) { + const changed = this.pristine === false; + this.pristine = true; + this._pendingDirty = false; + const sourceControl = opts.sourceControl ?? this; + this._forEachChild((control) => { + control.markAsPristine({ + onlySelf: true, + emitEvent: opts.emitEvent + }); + }); + if (this._parent && !opts.onlySelf) { + this._parent._updatePristine(opts, sourceControl); + } + if (changed && opts.emitEvent !== false) { + this._events.next(new PristineChangeEvent(true, sourceControl)); + } + } + markAsPending(opts = {}) { + this.status = PENDING; + const sourceControl = opts.sourceControl ?? this; + if (opts.emitEvent !== false) { + this._events.next(new StatusChangeEvent(this.status, sourceControl)); + this.statusChanges.emit(this.status); + } + if (this._parent && !opts.onlySelf) { + this._parent.markAsPending(__spreadProps(__spreadValues({}, opts), { + sourceControl + })); + } + } + disable(opts = {}) { + const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf); + this.status = DISABLED; + this.errors = null; + this._forEachChild((control) => { + control.disable(__spreadProps(__spreadValues({}, opts), { + onlySelf: true + })); + }); + this._updateValue(); + const sourceControl = opts.sourceControl ?? this; + if (opts.emitEvent !== false) { + this._events.next(new ValueChangeEvent(this.value, sourceControl)); + this._events.next(new StatusChangeEvent(this.status, sourceControl)); + this.valueChanges.emit(this.value); + this.statusChanges.emit(this.status); + } + this._updateAncestors(__spreadProps(__spreadValues({}, opts), { + skipPristineCheck + }), this); + this._onDisabledChange.forEach((changeFn) => changeFn(true)); + } + /** + * Enables the control. This means the control is included in validation checks and + * the aggregate value of its parent. Its status recalculates based on its value and + * its validators. + * + * By default, if the control has children, all children are enabled. + * + * @see {@link AbstractControl.status} + * + * @param opts Configure options that control how the control propagates changes and + * emits events when marked as untouched + * * `onlySelf`: When true, mark only this control. When false or not supplied, + * marks all direct ancestors. Default is false. + * * `emitEvent`: When true or not supplied (the default), the `statusChanges`, + * `valueChanges` and `events` + * observables emit events with the latest status and value when the control is enabled. + * When false, no events are emitted. + */ + enable(opts = {}) { + const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf); + this.status = VALID; + this._forEachChild((control) => { + control.enable(__spreadProps(__spreadValues({}, opts), { + onlySelf: true + })); + }); + this.updateValueAndValidity({ + onlySelf: true, + emitEvent: opts.emitEvent + }); + this._updateAncestors(__spreadProps(__spreadValues({}, opts), { + skipPristineCheck + }), this); + this._onDisabledChange.forEach((changeFn) => changeFn(false)); + } + _updateAncestors(opts, sourceControl) { + if (this._parent && !opts.onlySelf) { + this._parent.updateValueAndValidity(opts); + if (!opts.skipPristineCheck) { + this._parent._updatePristine({}, sourceControl); + } + this._parent._updateTouched({}, sourceControl); + } + } + /** + * Sets the parent of the control + * + * @param parent The new parent. + */ + setParent(parent) { + this._parent = parent; + } + /** + * The raw value of this control. For most control implementations, the raw value will include + * disabled children. + */ + getRawValue() { + return this.value; + } + updateValueAndValidity(opts = {}) { + this._setInitialStatus(); + this._updateValue(); + if (this.enabled) { + const shouldHaveEmitted = this._cancelExistingSubscription(); + this.errors = this._runValidator(); + this.status = this._calculateStatus(); + if (this.status === VALID || this.status === PENDING) { + this._runAsyncValidator(shouldHaveEmitted, opts.emitEvent); + } + } + const sourceControl = opts.sourceControl ?? this; + if (opts.emitEvent !== false) { + this._events.next(new ValueChangeEvent(this.value, sourceControl)); + this._events.next(new StatusChangeEvent(this.status, sourceControl)); + this.valueChanges.emit(this.value); + this.statusChanges.emit(this.status); + } + if (this._parent && !opts.onlySelf) { + this._parent.updateValueAndValidity(__spreadProps(__spreadValues({}, opts), { + sourceControl + })); + } + } + /** @internal */ + _updateTreeValidity(opts = { + emitEvent: true + }) { + this._forEachChild((ctrl) => ctrl._updateTreeValidity(opts)); + this.updateValueAndValidity({ + onlySelf: true, + emitEvent: opts.emitEvent + }); + } + _setInitialStatus() { + this.status = this._allControlsDisabled() ? DISABLED : VALID; + } + _runValidator() { + return this.validator ? this.validator(this) : null; + } + _runAsyncValidator(shouldHaveEmitted, emitEvent) { + if (this.asyncValidator) { + this.status = PENDING; + this._hasOwnPendingAsyncValidator = { + emitEvent: emitEvent !== false, + shouldHaveEmitted: shouldHaveEmitted !== false + }; + const obs = toObservable(this.asyncValidator(this)); + this._asyncValidationSubscription = obs.subscribe((errors) => { + this._hasOwnPendingAsyncValidator = null; + this.setErrors(errors, { + emitEvent, + shouldHaveEmitted + }); + }); + } + } + _cancelExistingSubscription() { + if (this._asyncValidationSubscription) { + this._asyncValidationSubscription.unsubscribe(); + const shouldHaveEmitted = (this._hasOwnPendingAsyncValidator?.emitEvent || this._hasOwnPendingAsyncValidator?.shouldHaveEmitted) ?? false; + this._hasOwnPendingAsyncValidator = null; + return shouldHaveEmitted; + } + return false; + } + setErrors(errors, opts = {}) { + this.errors = errors; + this._updateControlsErrors(opts.emitEvent !== false, this, opts.shouldHaveEmitted); + } + /** + * Retrieves a child control given the control's name or path. + * + * @param path A dot-delimited string or array of string/number values that define the path to the + * control. If a string is provided, passing it as a string literal will result in improved type + * information. Likewise, if an array is provided, passing it `as const` will cause improved type + * information to be available. + * + * @usageNotes + * ### Retrieve a nested control + * + * For example, to get a `name` control nested within a `person` sub-group: + * + * * `this.form.get('person.name');` + * + * -OR- + * + * * `this.form.get(['person', 'name'] as const);` // `as const` gives improved typings + * + * ### Retrieve a control in a FormArray + * + * When accessing an element inside a FormArray, you can use an element index. + * For example, to get a `price` control from the first element in an `items` array you can use: + * + * * `this.form.get('items.0.price');` + * + * -OR- + * + * * `this.form.get(['items', 0, 'price']);` + */ + get(path) { + let currPath = path; + if (currPath == null) return null; + if (!Array.isArray(currPath)) currPath = currPath.split("."); + if (currPath.length === 0) return null; + return currPath.reduce((control, name) => control && control._find(name), this); + } + /** + * @description + * Reports error data for the control with the given path. + * + * @param errorCode The code of the error to check + * @param path A list of control names that designates how to move from the current control + * to the control that should be queried for errors. + * + * @usageNotes + * For example, for the following `FormGroup`: + * + * ```ts + * form = new FormGroup({ + * address: new FormGroup({ street: new FormControl() }) + * }); + * ``` + * + * The path to the 'street' control from the root form would be 'address' -> 'street'. + * + * It can be provided to this method in one of two formats: + * + * 1. An array of string control names, e.g. `['address', 'street']` + * 1. A period-delimited list of control names in one string, e.g. `'address.street'` + * + * @returns error data for that particular error. If the control or error is not present, + * null is returned. + */ + getError(errorCode, path) { + const control = path ? this.get(path) : this; + return control && control.errors ? control.errors[errorCode] : null; + } + /** + * @description + * Reports whether the control with the given path has the error specified. + * + * @param errorCode The code of the error to check + * @param path A list of control names that designates how to move from the current control + * to the control that should be queried for errors. + * + * @usageNotes + * For example, for the following `FormGroup`: + * + * ```ts + * form = new FormGroup({ + * address: new FormGroup({ street: new FormControl() }) + * }); + * ``` + * + * The path to the 'street' control from the root form would be 'address' -> 'street'. + * + * It can be provided to this method in one of two formats: + * + * 1. An array of string control names, e.g. `['address', 'street']` + * 1. A period-delimited list of control names in one string, e.g. `'address.street'` + * + * If no path is given, this method checks for the error on the current control. + * + * @returns whether the given error is present in the control at the given path. + * + * If the control is not present, false is returned. + */ + hasError(errorCode, path) { + return !!this.getError(errorCode, path); + } + /** + * Retrieves the top-level ancestor of this control. + */ + get root() { + let x = this; + while (x._parent) { + x = x._parent; + } + return x; + } + /** @internal */ + _updateControlsErrors(emitEvent, changedControl, shouldHaveEmitted) { + this.status = this._calculateStatus(); + if (emitEvent) { + this.statusChanges.emit(this.status); + } + if (emitEvent || shouldHaveEmitted) { + this._events.next(new StatusChangeEvent(this.status, changedControl)); + } + if (this._parent) { + this._parent._updateControlsErrors(emitEvent, changedControl, shouldHaveEmitted); + } + } + /** @internal */ + _initObservables() { + this.valueChanges = new EventEmitter(); + this.statusChanges = new EventEmitter(); + } + _calculateStatus() { + if (this._allControlsDisabled()) return DISABLED; + if (this.errors) return INVALID; + if (this._hasOwnPendingAsyncValidator || this._anyControlsHaveStatus(PENDING)) return PENDING; + if (this._anyControlsHaveStatus(INVALID)) return INVALID; + return VALID; + } + /** @internal */ + _anyControlsHaveStatus(status) { + return this._anyControls((control) => control.status === status); + } + /** @internal */ + _anyControlsDirty() { + return this._anyControls((control) => control.dirty); + } + /** @internal */ + _anyControlsTouched() { + return this._anyControls((control) => control.touched); + } + /** @internal */ + _updatePristine(opts, changedControl) { + const newPristine = !this._anyControlsDirty(); + const changed = this.pristine !== newPristine; + this.pristine = newPristine; + if (this._parent && !opts.onlySelf) { + this._parent._updatePristine(opts, changedControl); + } + if (changed) { + this._events.next(new PristineChangeEvent(this.pristine, changedControl)); + } + } + /** @internal */ + _updateTouched(opts = {}, changedControl) { + this.touched = this._anyControlsTouched(); + this._events.next(new TouchedChangeEvent(this.touched, changedControl)); + if (this._parent && !opts.onlySelf) { + this._parent._updateTouched(opts, changedControl); + } + } + /** @internal */ + _onDisabledChange = []; + /** @internal */ + _registerOnCollectionChange(fn) { + this._onCollectionChange = fn; + } + /** @internal */ + _setUpdateStrategy(opts) { + if (isOptionsObj(opts) && opts.updateOn != null) { + this._updateOn = opts.updateOn; + } + } + /** + * Check to see if parent has been marked artificially dirty. + * + * @internal + */ + _parentMarkedDirty(onlySelf) { + const parentDirty = this._parent && this._parent.dirty; + return !onlySelf && !!parentDirty && !this._parent._anyControlsDirty(); + } + /** @internal */ + _find(name) { + return null; + } + /** + * Internal implementation of the `setValidators` method. Needs to be separated out into a + * different method, because it is called in the constructor and it can break cases where + * a control is extended. + */ + _assignValidators(validators) { + this._rawValidators = Array.isArray(validators) ? validators.slice() : validators; + this._composedValidatorFn = coerceToValidator(this._rawValidators); + } + /** + * Internal implementation of the `setAsyncValidators` method. Needs to be separated out into a + * different method, because it is called in the constructor and it can break cases where + * a control is extended. + */ + _assignAsyncValidators(validators) { + this._rawAsyncValidators = Array.isArray(validators) ? validators.slice() : validators; + this._composedAsyncValidatorFn = coerceToAsyncValidator(this._rawAsyncValidators); + } +}; +var FormGroup = class extends AbstractControl { + /** + * Creates a new `FormGroup` instance. + * + * @param controls A collection of child controls. The key for each child is the name + * under which it is registered. + * + * @param validatorOrOpts A synchronous validator function, or an array of + * such functions, or an `AbstractControlOptions` object that contains validation functions + * and a validation trigger. + * + * @param asyncValidator A single async validator or array of async validator functions + * + */ + constructor(controls, validatorOrOpts, asyncValidator) { + super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts)); + (typeof ngDevMode === "undefined" || ngDevMode) && validateFormGroupControls(controls); + this.controls = controls; + this._initObservables(); + this._setUpdateStrategy(validatorOrOpts); + this._setUpControls(); + this.updateValueAndValidity({ + onlySelf: true, + // If `asyncValidator` is present, it will trigger control status change from `PENDING` to + // `VALID` or `INVALID`. The status should be broadcasted via the `statusChanges` observable, + // so we set `emitEvent` to `true` to allow that during the control creation process. + emitEvent: !!this.asyncValidator + }); + } + controls; + registerControl(name, control) { + if (this.controls[name]) return this.controls[name]; + this.controls[name] = control; + control.setParent(this); + control._registerOnCollectionChange(this._onCollectionChange); + return control; + } + addControl(name, control, options = {}) { + this.registerControl(name, control); + this.updateValueAndValidity({ + emitEvent: options.emitEvent + }); + this._onCollectionChange(); + } + /** + * Remove a control from this group. In a strongly-typed group, required controls cannot be + * removed. + * + * This method also updates the value and validity of the control. + * + * @param name The control name to remove from the collection + * @param options Specifies whether this FormGroup instance should emit events after a + * control is removed. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` observables emit events with the latest status and value when the control is + * removed. When false, no events are emitted. + */ + removeControl(name, options = {}) { + if (this.controls[name]) this.controls[name]._registerOnCollectionChange(() => { + }); + delete this.controls[name]; + this.updateValueAndValidity({ + emitEvent: options.emitEvent + }); + this._onCollectionChange(); + } + setControl(name, control, options = {}) { + if (this.controls[name]) this.controls[name]._registerOnCollectionChange(() => { + }); + delete this.controls[name]; + if (control) this.registerControl(name, control); + this.updateValueAndValidity({ + emitEvent: options.emitEvent + }); + this._onCollectionChange(); + } + contains(controlName) { + return this.controls.hasOwnProperty(controlName) && this.controls[controlName].enabled; + } + /** + * Sets the value of the `FormGroup`. It accepts an object that matches + * the structure of the group, with control names as keys. + * + * @usageNotes + * ### Set the complete value for the form group + * + * ```ts + * const form = new FormGroup({ + * first: new FormControl(), + * last: new FormControl() + * }); + * + * console.log(form.value); // {first: null, last: null} + * + * form.setValue({first: 'Nancy', last: 'Drew'}); + * console.log(form.value); // {first: 'Nancy', last: 'Drew'} + * ``` + * + * @throws When strict checks fail, such as setting the value of a control + * that doesn't exist or if you exclude a value of a control that does exist. + * + * @param value The new value for the control that matches the structure of the group. + * @param options Configuration options that determine how the control propagates changes + * and emits events after the value changes. + * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity + * updateValueAndValidity} method. + * + * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is + * false. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` + * observables emit events with the latest status and value when the control value is updated. + * When false, no events are emitted. + */ + setValue(value, options = {}) { + assertAllValuesPresent(this, true, value); + Object.keys(value).forEach((name) => { + assertControlPresent(this, true, name); + this.controls[name].setValue(value[name], { + onlySelf: true, + emitEvent: options.emitEvent + }); + }); + this.updateValueAndValidity(options); + } + /** + * Patches the value of the `FormGroup`. It accepts an object with control + * names as keys, and does its best to match the values to the correct controls + * in the group. + * + * It accepts both super-sets and sub-sets of the group without throwing an error. + * + * @usageNotes + * ### Patch the value for a form group + * + * ```ts + * const form = new FormGroup({ + * first: new FormControl(), + * last: new FormControl() + * }); + * console.log(form.value); // {first: null, last: null} + * + * form.patchValue({first: 'Nancy'}); + * console.log(form.value); // {first: 'Nancy', last: null} + * ``` + * + * @param value The object that matches the structure of the group. + * @param options Configuration options that determine how the control propagates changes and + * emits events after the value is patched. + * * `onlySelf`: When true, each change only affects this control and not its parent. Default is + * true. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` observables emit events with the latest status and value when the control value + * is updated. When false, no events are emitted. The configuration options are passed to + * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method. + */ + patchValue(value, options = {}) { + if (value == null) return; + Object.keys(value).forEach((name) => { + const control = this.controls[name]; + if (control) { + control.patchValue( + /* Guaranteed to be present, due to the outer forEach. */ + value[name], + { + onlySelf: true, + emitEvent: options.emitEvent + } + ); + } + }); + this.updateValueAndValidity(options); + } + /** + * Resets the `FormGroup`, marks all descendants `pristine` and `untouched` and sets + * the value of all descendants to their default values, or null if no defaults were provided. + * + * You reset to a specific form state by passing in a map of states + * that matches the structure of your form, with control names as keys. The state + * is a standalone value or a form state object with both a value and a disabled + * status. + * + * @param value Resets the control with an initial value, + * or an object that defines the initial value and disabled state. + * + * @param options Configuration options that determine how the control propagates changes + * and emits events when the group is reset. + * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is + * false. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` + * observables emit events with the latest status and value when the control is reset. + * When false, no events are emitted. + * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity + * updateValueAndValidity} method. + * + * @usageNotes + * + * ### Reset the form group values + * + * ```ts + * const form = new FormGroup({ + * first: new FormControl('first name'), + * last: new FormControl('last name') + * }); + * + * console.log(form.value); // {first: 'first name', last: 'last name'} + * + * form.reset({ first: 'name', last: 'last name' }); + * + * console.log(form.value); // {first: 'name', last: 'last name'} + * ``` + * + * ### Reset the form group values and disabled status + * + * ```ts + * const form = new FormGroup({ + * first: new FormControl('first name'), + * last: new FormControl('last name') + * }); + * + * form.reset({ + * first: {value: 'name', disabled: true}, + * last: 'last' + * }); + * + * console.log(form.value); // {last: 'last'} + * console.log(form.get('first').status); // 'DISABLED' + * ``` + */ + reset(value = {}, options = {}) { + this._forEachChild((control, name) => { + control.reset(value ? value[name] : null, { + onlySelf: true, + emitEvent: options.emitEvent + }); + }); + this._updatePristine(options, this); + this._updateTouched(options, this); + this.updateValueAndValidity(options); + } + /** + * The aggregate value of the `FormGroup`, including any disabled controls. + * + * Retrieves all values regardless of disabled status. + */ + getRawValue() { + return this._reduceChildren({}, (acc, control, name) => { + acc[name] = control.getRawValue(); + return acc; + }); + } + /** @internal */ + _syncPendingControls() { + let subtreeUpdated = this._reduceChildren(false, (updated, child) => { + return child._syncPendingControls() ? true : updated; + }); + if (subtreeUpdated) this.updateValueAndValidity({ + onlySelf: true + }); + return subtreeUpdated; + } + /** @internal */ + _forEachChild(cb) { + Object.keys(this.controls).forEach((key) => { + const control = this.controls[key]; + control && cb(control, key); + }); + } + /** @internal */ + _setUpControls() { + this._forEachChild((control) => { + control.setParent(this); + control._registerOnCollectionChange(this._onCollectionChange); + }); + } + /** @internal */ + _updateValue() { + this.value = this._reduceValue(); + } + /** @internal */ + _anyControls(condition) { + for (const [controlName, control] of Object.entries(this.controls)) { + if (this.contains(controlName) && condition(control)) { + return true; + } + } + return false; + } + /** @internal */ + _reduceValue() { + let acc = {}; + return this._reduceChildren(acc, (acc2, control, name) => { + if (control.enabled || this.disabled) { + acc2[name] = control.value; + } + return acc2; + }); + } + /** @internal */ + _reduceChildren(initValue, fn) { + let res = initValue; + this._forEachChild((control, name) => { + res = fn(res, control, name); + }); + return res; + } + /** @internal */ + _allControlsDisabled() { + for (const controlName of Object.keys(this.controls)) { + if (this.controls[controlName].enabled) { + return false; + } + } + return Object.keys(this.controls).length > 0 || this.disabled; + } + /** @internal */ + _find(name) { + return this.controls.hasOwnProperty(name) ? this.controls[name] : null; + } +}; +function validateFormGroupControls(controls) { + const invalidKeys = Object.keys(controls).filter((key) => key.includes(".")); + if (invalidKeys.length > 0) { + console.warn(`FormGroup keys cannot include \`.\`, please replace the keys for: ${invalidKeys.join(",")}.`); + } +} +var UntypedFormGroup = FormGroup; +var isFormGroup = (control) => control instanceof FormGroup; +var FormRecord = class extends FormGroup { +}; +var isFormRecord = (control) => control instanceof FormRecord; +var CALL_SET_DISABLED_STATE = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "CallSetDisabledState" : "", { + providedIn: "root", + factory: () => setDisabledStateDefault +}); +var setDisabledStateDefault = "always"; +function controlPath(name, parent) { + return [...parent.path, name]; +} +function setUpControl(control, dir, callSetDisabledState = setDisabledStateDefault) { + if (typeof ngDevMode === "undefined" || ngDevMode) { + if (!control) _throwError(dir, "Cannot find control with"); + if (!dir.valueAccessor) _throwMissingValueAccessorError(dir); + } + setUpValidators(control, dir); + dir.valueAccessor.writeValue(control.value); + if (control.disabled || callSetDisabledState === "always") { + dir.valueAccessor.setDisabledState?.(control.disabled); + } + setUpViewChangePipeline(control, dir); + setUpModelChangePipeline(control, dir); + setUpBlurPipeline(control, dir); + setUpDisabledChangeHandler(control, dir); +} +function cleanUpControl(control, dir, validateControlPresenceOnChange = true) { + const noop = () => { + if (validateControlPresenceOnChange && (typeof ngDevMode === "undefined" || ngDevMode)) { + _noControlError(dir); + } + }; + if (dir.valueAccessor) { + dir.valueAccessor.registerOnChange(noop); + dir.valueAccessor.registerOnTouched(noop); + } + cleanUpValidators(control, dir); + if (control) { + dir._invokeOnDestroyCallbacks(); + control._registerOnCollectionChange(() => { + }); + } +} +function registerOnValidatorChange(validators, onChange) { + validators.forEach((validator) => { + if (validator.registerOnValidatorChange) validator.registerOnValidatorChange(onChange); + }); +} +function setUpDisabledChangeHandler(control, dir) { + if (dir.valueAccessor.setDisabledState) { + const onDisabledChange = (isDisabled) => { + dir.valueAccessor.setDisabledState(isDisabled); + }; + control.registerOnDisabledChange(onDisabledChange); + dir._registerOnDestroy(() => { + control._unregisterOnDisabledChange(onDisabledChange); + }); + } +} +function setUpValidators(control, dir) { + const validators = getControlValidators(control); + if (dir.validator !== null) { + control.setValidators(mergeValidators(validators, dir.validator)); + } else if (typeof validators === "function") { + control.setValidators([validators]); + } + const asyncValidators = getControlAsyncValidators(control); + if (dir.asyncValidator !== null) { + control.setAsyncValidators(mergeValidators(asyncValidators, dir.asyncValidator)); + } else if (typeof asyncValidators === "function") { + control.setAsyncValidators([asyncValidators]); + } + const onValidatorChange = () => control.updateValueAndValidity(); + registerOnValidatorChange(dir._rawValidators, onValidatorChange); + registerOnValidatorChange(dir._rawAsyncValidators, onValidatorChange); +} +function cleanUpValidators(control, dir) { + let isControlUpdated = false; + if (control !== null) { + if (dir.validator !== null) { + const validators = getControlValidators(control); + if (Array.isArray(validators) && validators.length > 0) { + const updatedValidators = validators.filter((validator) => validator !== dir.validator); + if (updatedValidators.length !== validators.length) { + isControlUpdated = true; + control.setValidators(updatedValidators); + } + } + } + if (dir.asyncValidator !== null) { + const asyncValidators = getControlAsyncValidators(control); + if (Array.isArray(asyncValidators) && asyncValidators.length > 0) { + const updatedAsyncValidators = asyncValidators.filter((asyncValidator) => asyncValidator !== dir.asyncValidator); + if (updatedAsyncValidators.length !== asyncValidators.length) { + isControlUpdated = true; + control.setAsyncValidators(updatedAsyncValidators); + } + } + } + } + const noop = () => { + }; + registerOnValidatorChange(dir._rawValidators, noop); + registerOnValidatorChange(dir._rawAsyncValidators, noop); + return isControlUpdated; +} +function setUpViewChangePipeline(control, dir) { + dir.valueAccessor.registerOnChange((newValue) => { + control._pendingValue = newValue; + control._pendingChange = true; + control._pendingDirty = true; + if (control.updateOn === "change") updateControl(control, dir); + }); +} +function setUpBlurPipeline(control, dir) { + dir.valueAccessor.registerOnTouched(() => { + control._pendingTouched = true; + if (control.updateOn === "blur" && control._pendingChange) updateControl(control, dir); + if (control.updateOn !== "submit") control.markAsTouched(); + }); +} +function updateControl(control, dir) { + if (control._pendingDirty) control.markAsDirty(); + control.setValue(control._pendingValue, { + emitModelToViewChange: false + }); + dir.viewToModelUpdate(control._pendingValue); + control._pendingChange = false; +} +function setUpModelChangePipeline(control, dir) { + const onChange = (newValue, emitModelEvent) => { + dir.valueAccessor.writeValue(newValue); + if (emitModelEvent) dir.viewToModelUpdate(newValue); + }; + control.registerOnChange(onChange); + dir._registerOnDestroy(() => { + control._unregisterOnChange(onChange); + }); +} +function setUpFormContainer(control, dir) { + if (control == null && (typeof ngDevMode === "undefined" || ngDevMode)) _throwError(dir, "Cannot find control with"); + setUpValidators(control, dir); +} +function cleanUpFormContainer(control, dir) { + return cleanUpValidators(control, dir); +} +function _noControlError(dir) { + return _throwError(dir, "There is no FormControl instance attached to form control element with"); +} +function _throwError(dir, message) { + const messageEnd = _describeControlLocation(dir); + throw new Error(`${message} ${messageEnd}`); +} +function _describeControlLocation(dir) { + const path = dir.path; + if (path && path.length > 1) return `path: '${path.join(" -> ")}'`; + if (path?.[0]) return `name: '${path}'`; + return "unspecified name attribute"; +} +function _throwMissingValueAccessorError(dir) { + const loc = _describeControlLocation(dir); + throw new RuntimeError(-1203, `No value accessor for form control ${loc}.`); +} +function _throwInvalidValueAccessorError(dir) { + const loc = _describeControlLocation(dir); + throw new RuntimeError(1200, `Value accessor was not provided as an array for form control with ${loc}. Check that the \`NG_VALUE_ACCESSOR\` token is configured as a \`multi: true\` provider.`); +} +function isPropertyUpdated(changes, viewModel) { + if (!changes.hasOwnProperty("model")) return false; + const change = changes["model"]; + if (change.isFirstChange()) return true; + return !Object.is(viewModel, change.currentValue); +} +function isBuiltInAccessor(valueAccessor) { + return Object.getPrototypeOf(valueAccessor.constructor) === BuiltInControlValueAccessor; +} +function syncPendingControls(form, directives) { + form._syncPendingControls(); + directives.forEach((dir) => { + const control = dir.control; + if (control.updateOn === "submit" && control._pendingChange) { + dir.viewToModelUpdate(control._pendingValue); + control._pendingChange = false; + } + }); +} +function selectValueAccessor(dir, valueAccessors) { + if (!valueAccessors) return null; + if (!Array.isArray(valueAccessors) && (typeof ngDevMode === "undefined" || ngDevMode)) _throwInvalidValueAccessorError(dir); + let defaultAccessor = void 0; + let builtinAccessor = void 0; + let customAccessor = void 0; + valueAccessors.forEach((v) => { + if (v.constructor === DefaultValueAccessor) { + defaultAccessor = v; + } else if (isBuiltInAccessor(v)) { + if (builtinAccessor && (typeof ngDevMode === "undefined" || ngDevMode)) _throwError(dir, "More than one built-in value accessor matches form control with"); + builtinAccessor = v; + } else { + if (customAccessor && (typeof ngDevMode === "undefined" || ngDevMode)) _throwError(dir, "More than one custom value accessor matches form control with"); + customAccessor = v; + } + }); + if (customAccessor) return customAccessor; + if (builtinAccessor) return builtinAccessor; + if (defaultAccessor) return defaultAccessor; + if (typeof ngDevMode === "undefined" || ngDevMode) { + _throwError(dir, "No valid value accessor for form control with"); + } + return null; +} +function removeListItem$1(list, el) { + const index = list.indexOf(el); + if (index > -1) list.splice(index, 1); +} +function _ngModelWarning(name, type, instance, warningConfig) { + if (warningConfig === "never") return; + if ((warningConfig === null || warningConfig === "once") && !type._ngModelWarningSentOnce || warningConfig === "always" && !instance._ngModelWarningSent) { + console.warn(ngModelWarning(name)); + type._ngModelWarningSentOnce = true; + instance._ngModelWarningSent = true; + } +} +var formDirectiveProvider$1 = { + provide: ControlContainer, + useExisting: forwardRef(() => NgForm) +}; +var resolvedPromise$1 = (() => Promise.resolve())(); +var NgForm = class _NgForm extends ControlContainer { + callSetDisabledState; + /** + * @description + * Returns whether the form submission has been triggered. + */ + get submitted() { + return untracked(this.submittedReactive); + } + /** @internal */ + _submitted = computed(() => this.submittedReactive(), ...ngDevMode ? [{ + debugName: "_submitted" + }] : []); + submittedReactive = signal(false, ...ngDevMode ? [{ + debugName: "submittedReactive" + }] : []); + _directives = /* @__PURE__ */ new Set(); + /** + * @description + * The `FormGroup` instance created for this form. + */ + form; + /** + * @description + * Event emitter for the "ngSubmit" event + */ + ngSubmit = new EventEmitter(); + /** + * @description + * Tracks options for the `NgForm` instance. + * + * **updateOn**: Sets the default `updateOn` value for all child `NgModels` below it + * unless explicitly set by a child `NgModel` using `ngModelOptions`). Defaults to 'change'. + * Possible values: `'change'` | `'blur'` | `'submit'`. + * + */ + options; + constructor(validators, asyncValidators, callSetDisabledState) { + super(); + this.callSetDisabledState = callSetDisabledState; + this.form = new FormGroup({}, composeValidators(validators), composeAsyncValidators(asyncValidators)); + } + /** @docs-private */ + ngAfterViewInit() { + this._setUpdateStrategy(); + } + /** + * @description + * The directive instance. + */ + get formDirective() { + return this; + } + /** + * @description + * The internal `FormGroup` instance. + */ + get control() { + return this.form; + } + /** + * @description + * Returns an array representing the path to this group. Because this directive + * always lives at the top level of a form, it is always an empty array. + */ + get path() { + return []; + } + /** + * @description + * Returns a map of the controls in this group. + */ + get controls() { + return this.form.controls; + } + /** + * @description + * Method that sets up the control directive in this group, re-calculates its value + * and validity, and adds the instance to the internal list of directives. + * + * @param dir The `NgModel` directive instance. + */ + addControl(dir) { + resolvedPromise$1.then(() => { + const container = this._findContainer(dir.path); + dir.control = container.registerControl(dir.name, dir.control); + setUpControl(dir.control, dir, this.callSetDisabledState); + dir.control.updateValueAndValidity({ + emitEvent: false + }); + this._directives.add(dir); + }); + } + /** + * @description + * Retrieves the `FormControl` instance from the provided `NgModel` directive. + * + * @param dir The `NgModel` directive instance. + */ + getControl(dir) { + return this.form.get(dir.path); + } + /** + * @description + * Removes the `NgModel` instance from the internal list of directives + * + * @param dir The `NgModel` directive instance. + */ + removeControl(dir) { + resolvedPromise$1.then(() => { + const container = this._findContainer(dir.path); + if (container) { + container.removeControl(dir.name); + } + this._directives.delete(dir); + }); + } + /** + * @description + * Adds a new `NgModelGroup` directive instance to the form. + * + * @param dir The `NgModelGroup` directive instance. + */ + addFormGroup(dir) { + resolvedPromise$1.then(() => { + const container = this._findContainer(dir.path); + const group = new FormGroup({}); + setUpFormContainer(group, dir); + container.registerControl(dir.name, group); + group.updateValueAndValidity({ + emitEvent: false + }); + }); + } + /** + * @description + * Removes the `NgModelGroup` directive instance from the form. + * + * @param dir The `NgModelGroup` directive instance. + */ + removeFormGroup(dir) { + resolvedPromise$1.then(() => { + const container = this._findContainer(dir.path); + if (container) { + container.removeControl(dir.name); + } + }); + } + /** + * @description + * Retrieves the `FormGroup` for a provided `NgModelGroup` directive instance + * + * @param dir The `NgModelGroup` directive instance. + */ + getFormGroup(dir) { + return this.form.get(dir.path); + } + /** + * Sets the new value for the provided `NgControl` directive. + * + * @param dir The `NgControl` directive instance. + * @param value The new value for the directive's control. + */ + updateModel(dir, value) { + resolvedPromise$1.then(() => { + const ctrl = this.form.get(dir.path); + ctrl.setValue(value); + }); + } + /** + * @description + * Sets the value for this `FormGroup`. + * + * @param value The new value + */ + setValue(value) { + this.control.setValue(value); + } + /** + * @description + * Method called when the "submit" event is triggered on the form. + * Triggers the `ngSubmit` emitter to emit the "submit" event as its payload. + * + * @param $event The "submit" event object + */ + onSubmit($event) { + this.submittedReactive.set(true); + syncPendingControls(this.form, this._directives); + this.ngSubmit.emit($event); + this.form._events.next(new FormSubmittedEvent(this.control)); + return $event?.target?.method === "dialog"; + } + /** + * @description + * Method called when the "reset" event is triggered on the form. + */ + onReset() { + this.resetForm(); + } + /** + * @description + * Resets the form to an initial value and resets its submitted status. + * + * @param value The new value for the form. + */ + resetForm(value = void 0) { + this.form.reset(value); + this.submittedReactive.set(false); + this.form._events.next(new FormResetEvent(this.form)); + } + _setUpdateStrategy() { + if (this.options && this.options.updateOn != null) { + this.form._updateOn = this.options.updateOn; + } + } + _findContainer(path) { + path.pop(); + return path.length ? this.form.get(path) : this.form; + } + static ɵfac = function NgForm_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _NgForm)(ɵɵdirectiveInject(NG_VALIDATORS, 10), ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10), ɵɵdirectiveInject(CALL_SET_DISABLED_STATE, 8)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _NgForm, + selectors: [["form", 3, "ngNoForm", "", 3, "formGroup", ""], ["ng-form"], ["", "ngForm", ""]], + hostBindings: function NgForm_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("submit", function NgForm_submit_HostBindingHandler($event) { + return ctx.onSubmit($event); + })("reset", function NgForm_reset_HostBindingHandler() { + return ctx.onReset(); + }); + } + }, + inputs: { + options: [0, "ngFormOptions", "options"] + }, + outputs: { + ngSubmit: "ngSubmit" + }, + exportAs: ["ngForm"], + standalone: false, + features: [ɵɵProvidersFeature([formDirectiveProvider$1]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgForm, [{ + type: Directive, + args: [{ + selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", + providers: [formDirectiveProvider$1], + host: { + "(submit)": "onSubmit($event)", + "(reset)": "onReset()" + }, + outputs: ["ngSubmit"], + exportAs: "ngForm", + standalone: false + }] + }], () => [{ + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_ASYNC_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [CALL_SET_DISABLED_STATE] + }] + }], { + options: [{ + type: Input, + args: ["ngFormOptions"] + }] + }); +})(); +function removeListItem(list, el) { + const index = list.indexOf(el); + if (index > -1) list.splice(index, 1); +} +function isFormControlState(formState) { + return typeof formState === "object" && formState !== null && Object.keys(formState).length === 2 && "value" in formState && "disabled" in formState; +} +var FormControl = class FormControl2 extends AbstractControl { + /** @publicApi */ + defaultValue = null; + /** @internal */ + _onChange = []; + /** @internal */ + _pendingValue; + /** @internal */ + _pendingChange = false; + constructor(formState = null, validatorOrOpts, asyncValidator) { + super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts)); + this._applyFormState(formState); + this._setUpdateStrategy(validatorOrOpts); + this._initObservables(); + this.updateValueAndValidity({ + onlySelf: true, + // If `asyncValidator` is present, it will trigger control status change from `PENDING` to + // `VALID` or `INVALID`. + // The status should be broadcasted via the `statusChanges` observable, so we set + // `emitEvent` to `true` to allow that during the control creation process. + emitEvent: !!this.asyncValidator + }); + if (isOptionsObj(validatorOrOpts) && (validatorOrOpts.nonNullable || validatorOrOpts.initialValueIsDefault)) { + if (isFormControlState(formState)) { + this.defaultValue = formState.value; + } else { + this.defaultValue = formState; + } + } + } + setValue(value, options = {}) { + this.value = this._pendingValue = value; + if (this._onChange.length && options.emitModelToViewChange !== false) { + this._onChange.forEach((changeFn) => changeFn(this.value, options.emitViewToModelChange !== false)); + } + this.updateValueAndValidity(options); + } + patchValue(value, options = {}) { + this.setValue(value, options); + } + reset(formState = this.defaultValue, options = {}) { + this._applyFormState(formState); + this.markAsPristine(options); + this.markAsUntouched(options); + this.setValue(this.value, options); + this._pendingChange = false; + } + /** @internal */ + _updateValue() { + } + /** @internal */ + _anyControls(condition) { + return false; + } + /** @internal */ + _allControlsDisabled() { + return this.disabled; + } + registerOnChange(fn) { + this._onChange.push(fn); + } + /** @internal */ + _unregisterOnChange(fn) { + removeListItem(this._onChange, fn); + } + registerOnDisabledChange(fn) { + this._onDisabledChange.push(fn); + } + /** @internal */ + _unregisterOnDisabledChange(fn) { + removeListItem(this._onDisabledChange, fn); + } + /** @internal */ + _forEachChild(cb) { + } + /** @internal */ + _syncPendingControls() { + if (this.updateOn === "submit") { + if (this._pendingDirty) this.markAsDirty(); + if (this._pendingTouched) this.markAsTouched(); + if (this._pendingChange) { + this.setValue(this._pendingValue, { + onlySelf: true, + emitModelToViewChange: false + }); + return true; + } + } + return false; + } + _applyFormState(formState) { + if (isFormControlState(formState)) { + this.value = this._pendingValue = formState.value; + formState.disabled ? this.disable({ + onlySelf: true, + emitEvent: false + }) : this.enable({ + onlySelf: true, + emitEvent: false + }); + } else { + this.value = this._pendingValue = formState; + } + } +}; +var UntypedFormControl = FormControl; +var isFormControl = (control) => control instanceof FormControl; +var AbstractFormGroupDirective = class _AbstractFormGroupDirective extends ControlContainer { + /** + * @description + * The parent control for the group + * + * @internal + */ + _parent; + /** @docs-private */ + ngOnInit() { + this._checkParentType(); + this.formDirective.addFormGroup(this); + } + /** @docs-private */ + ngOnDestroy() { + if (this.formDirective) { + this.formDirective.removeFormGroup(this); + } + } + /** + * @description + * The `FormGroup` bound to this directive. + */ + get control() { + return this.formDirective.getFormGroup(this); + } + /** + * @description + * The path to this group from the top-level directive. + */ + get path() { + return controlPath(this.name == null ? this.name : this.name.toString(), this._parent); + } + /** + * @description + * The top-level directive for this group if present, otherwise null. + */ + get formDirective() { + return this._parent ? this._parent.formDirective : null; + } + /** @internal */ + _checkParentType() { + } + static ɵfac = /* @__PURE__ */ (() => { + let ɵAbstractFormGroupDirective_BaseFactory; + return function AbstractFormGroupDirective_Factory(__ngFactoryType__) { + return (ɵAbstractFormGroupDirective_BaseFactory || (ɵAbstractFormGroupDirective_BaseFactory = ɵɵgetInheritedFactory(_AbstractFormGroupDirective)))(__ngFactoryType__ || _AbstractFormGroupDirective); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _AbstractFormGroupDirective, + standalone: false, + features: [ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(AbstractFormGroupDirective, [{ + type: Directive, + args: [{ + standalone: false + }] + }], null, null); +})(); +function modelParentException() { + return new RuntimeError(1350, ` + ngModel cannot be used to register form controls with a parent formGroup directive. Try using + formGroup's partner directive "formControlName" instead. Example: + + ${formControlNameExample} + + Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions: + + Example: + + ${ngModelWithFormGroupExample}`); +} +function formGroupNameException() { + return new RuntimeError(1351, ` + ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive. + + Option 1: Use formControlName instead of ngModel (reactive strategy): + + ${formGroupNameExample} + + Option 2: Update ngModel's parent be ngModelGroup (template-driven strategy): + + ${ngModelGroupExample}`); +} +function missingNameException() { + return new RuntimeError(1352, `If ngModel is used within a form tag, either the name attribute must be set or the form + control must be defined as 'standalone' in ngModelOptions. + + Example 1: + Example 2: `); +} +function modelGroupParentException() { + return new RuntimeError(1353, ` + ngModelGroup cannot be used with a parent formGroup directive. + + Option 1: Use formGroupName instead of ngModelGroup (reactive strategy): + + ${formGroupNameExample} + + Option 2: Use a regular form tag instead of the formGroup directive (template-driven strategy): + + ${ngModelGroupExample}`); +} +var modelGroupProvider = { + provide: ControlContainer, + useExisting: forwardRef(() => NgModelGroup) +}; +var NgModelGroup = class _NgModelGroup extends AbstractFormGroupDirective { + /** + * @description + * Tracks the name of the `NgModelGroup` bound to the directive. The name corresponds + * to a key in the parent `NgForm`. + */ + name = ""; + constructor(parent, validators, asyncValidators) { + super(); + this._parent = parent; + this._setValidators(validators); + this._setAsyncValidators(asyncValidators); + } + /** @internal */ + _checkParentType() { + if (!(this._parent instanceof _NgModelGroup) && !(this._parent instanceof NgForm) && (typeof ngDevMode === "undefined" || ngDevMode)) { + throw modelGroupParentException(); + } + } + static ɵfac = function NgModelGroup_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _NgModelGroup)(ɵɵdirectiveInject(ControlContainer, 5), ɵɵdirectiveInject(NG_VALIDATORS, 10), ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _NgModelGroup, + selectors: [["", "ngModelGroup", ""]], + inputs: { + name: [0, "ngModelGroup", "name"] + }, + exportAs: ["ngModelGroup"], + standalone: false, + features: [ɵɵProvidersFeature([modelGroupProvider]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgModelGroup, [{ + type: Directive, + args: [{ + selector: "[ngModelGroup]", + providers: [modelGroupProvider], + exportAs: "ngModelGroup", + standalone: false + }] + }], () => [{ + type: ControlContainer, + decorators: [{ + type: Host + }, { + type: SkipSelf + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_ASYNC_VALIDATORS] + }] + }], { + name: [{ + type: Input, + args: ["ngModelGroup"] + }] + }); +})(); +var formControlBinding$1 = { + provide: NgControl, + useExisting: forwardRef(() => NgModel) +}; +var resolvedPromise = (() => Promise.resolve())(); +var NgModel = class _NgModel extends NgControl { + _changeDetectorRef; + callSetDisabledState; + control = new FormControl(); + // At runtime we coerce arbitrary values assigned to the "disabled" input to a "boolean". + // This is not reflected in the type of the property because outside of templates, consumers + // should only deal with booleans. In templates, a string is allowed for convenience and to + // match the native "disabled attribute" semantics which can be observed on input elements. + // This static member tells the compiler that values of type "string" can also be assigned + // to the input in a template. + /** @docs-private */ + static ngAcceptInputType_isDisabled; + /** @internal */ + _registered = false; + /** + * Internal reference to the view model value. + * @docs-private + */ + viewModel; + /** + * @description + * Tracks the name bound to the directive. If a parent form exists, it + * uses this name as a key to retrieve this control's value. + */ + name = ""; + /** + * @description + * Tracks whether the control is disabled. + */ + isDisabled; + /** + * @description + * Tracks the value bound to this directive. + */ + model; + /** + * @description + * Tracks the configuration options for this `ngModel` instance. + * + * **name**: An alternative to setting the name attribute on the form control element. See + * the [example](api/forms/NgModel#using-ngmodel-on-a-standalone-control) for using `NgModel` + * as a standalone control. + * + * **standalone**: When set to true, the `ngModel` will not register itself with its parent form, + * and acts as if it's not in the form. Defaults to false. If no parent form exists, this option + * has no effect. + * + * **updateOn**: Defines the event upon which the form control value and validity update. + * Defaults to 'change'. Possible values: `'change'` | `'blur'` | `'submit'`. + * + */ + options; + /** + * @description + * Event emitter for producing the `ngModelChange` event after + * the view model updates. + */ + update = new EventEmitter(); + constructor(parent, validators, asyncValidators, valueAccessors, _changeDetectorRef, callSetDisabledState) { + super(); + this._changeDetectorRef = _changeDetectorRef; + this.callSetDisabledState = callSetDisabledState; + this._parent = parent; + this._setValidators(validators); + this._setAsyncValidators(asyncValidators); + this.valueAccessor = selectValueAccessor(this, valueAccessors); + } + /** @docs-private */ + ngOnChanges(changes) { + this._checkForErrors(); + if (!this._registered || "name" in changes) { + if (this._registered) { + this._checkName(); + if (this.formDirective) { + const oldName = changes["name"].previousValue; + this.formDirective.removeControl({ + name: oldName, + path: this._getPath(oldName) + }); + } + } + this._setUpControl(); + } + if ("isDisabled" in changes) { + this._updateDisabled(changes); + } + if (isPropertyUpdated(changes, this.viewModel)) { + this._updateValue(this.model); + this.viewModel = this.model; + } + } + /** @docs-private */ + ngOnDestroy() { + this.formDirective && this.formDirective.removeControl(this); + } + /** + * @description + * Returns an array that represents the path from the top-level form to this control. + * Each index is the string name of the control on that level. + */ + get path() { + return this._getPath(this.name); + } + /** + * @description + * The top-level directive for this control if present, otherwise null. + */ + get formDirective() { + return this._parent ? this._parent.formDirective : null; + } + /** + * @description + * Sets the new value for the view model and emits an `ngModelChange` event. + * + * @param newValue The new value emitted by `ngModelChange`. + */ + viewToModelUpdate(newValue) { + this.viewModel = newValue; + this.update.emit(newValue); + } + _setUpControl() { + this._setUpdateStrategy(); + this._isStandalone() ? this._setUpStandalone() : this.formDirective.addControl(this); + this._registered = true; + } + _setUpdateStrategy() { + if (this.options && this.options.updateOn != null) { + this.control._updateOn = this.options.updateOn; + } + } + _isStandalone() { + return !this._parent || !!(this.options && this.options.standalone); + } + _setUpStandalone() { + setUpControl(this.control, this, this.callSetDisabledState); + this.control.updateValueAndValidity({ + emitEvent: false + }); + } + _checkForErrors() { + if ((typeof ngDevMode === "undefined" || ngDevMode) && !this._isStandalone()) { + checkParentType$1(this._parent); + } + this._checkName(); + } + _checkName() { + if (this.options && this.options.name) this.name = this.options.name; + if (!this._isStandalone() && !this.name && (typeof ngDevMode === "undefined" || ngDevMode)) { + throw missingNameException(); + } + } + _updateValue(value) { + resolvedPromise.then(() => { + this.control.setValue(value, { + emitViewToModelChange: false + }); + this._changeDetectorRef?.markForCheck(); + }); + } + _updateDisabled(changes) { + const disabledValue = changes["isDisabled"].currentValue; + const isDisabled = disabledValue !== 0 && booleanAttribute(disabledValue); + resolvedPromise.then(() => { + if (isDisabled && !this.control.disabled) { + this.control.disable(); + } else if (!isDisabled && this.control.disabled) { + this.control.enable(); + } + this._changeDetectorRef?.markForCheck(); + }); + } + _getPath(controlName) { + return this._parent ? controlPath(controlName, this._parent) : [controlName]; + } + static ɵfac = function NgModel_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _NgModel)(ɵɵdirectiveInject(ControlContainer, 9), ɵɵdirectiveInject(NG_VALIDATORS, 10), ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10), ɵɵdirectiveInject(NG_VALUE_ACCESSOR, 10), ɵɵdirectiveInject(ChangeDetectorRef, 8), ɵɵdirectiveInject(CALL_SET_DISABLED_STATE, 8)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _NgModel, + selectors: [["", "ngModel", "", 3, "formControlName", "", 3, "formControl", ""]], + inputs: { + name: "name", + isDisabled: [0, "disabled", "isDisabled"], + model: [0, "ngModel", "model"], + options: [0, "ngModelOptions", "options"] + }, + outputs: { + update: "ngModelChange" + }, + exportAs: ["ngModel"], + standalone: false, + features: [ɵɵProvidersFeature([formControlBinding$1]), ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgModel, [{ + type: Directive, + args: [{ + selector: "[ngModel]:not([formControlName]):not([formControl])", + providers: [formControlBinding$1], + exportAs: "ngModel", + standalone: false + }] + }], () => [{ + type: ControlContainer, + decorators: [{ + type: Optional + }, { + type: Host + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_ASYNC_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_VALUE_ACCESSOR] + }] + }, { + type: ChangeDetectorRef, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [ChangeDetectorRef] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [CALL_SET_DISABLED_STATE] + }] + }], { + name: [{ + type: Input + }], + isDisabled: [{ + type: Input, + args: ["disabled"] + }], + model: [{ + type: Input, + args: ["ngModel"] + }], + options: [{ + type: Input, + args: ["ngModelOptions"] + }], + update: [{ + type: Output, + args: ["ngModelChange"] + }] + }); +})(); +function checkParentType$1(parent) { + if (!(parent instanceof NgModelGroup) && parent instanceof AbstractFormGroupDirective) { + throw formGroupNameException(); + } else if (!(parent instanceof NgModelGroup) && !(parent instanceof NgForm)) { + throw modelParentException(); + } +} +var ɵNgNoValidate = class _ɵNgNoValidate { + static ɵfac = function ɵNgNoValidate_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _ɵNgNoValidate)(); + }; + static ɵdir = ɵɵdefineDirective({ + type: _ɵNgNoValidate, + selectors: [["form", 3, "ngNoForm", "", 3, "ngNativeValidate", ""]], + hostAttrs: ["novalidate", ""], + standalone: false + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ɵNgNoValidate, [{ + type: Directive, + args: [{ + selector: "form:not([ngNoForm]):not([ngNativeValidate])", + host: { + "novalidate": "" + }, + standalone: false + }] + }], null, null); +})(); +var NUMBER_VALUE_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => NumberValueAccessor), + multi: true +}; +var NumberValueAccessor = class _NumberValueAccessor extends BuiltInControlValueAccessor { + /** + * Sets the "value" property on the input element. + * @docs-private + */ + writeValue(value) { + const normalizedValue = value == null ? "" : value; + this.setProperty("value", normalizedValue); + } + /** + * Registers a function called when the control value changes. + * @docs-private + */ + registerOnChange(fn) { + this.onChange = (value) => { + fn(value == "" ? null : parseFloat(value)); + }; + } + static ɵfac = /* @__PURE__ */ (() => { + let ɵNumberValueAccessor_BaseFactory; + return function NumberValueAccessor_Factory(__ngFactoryType__) { + return (ɵNumberValueAccessor_BaseFactory || (ɵNumberValueAccessor_BaseFactory = ɵɵgetInheritedFactory(_NumberValueAccessor)))(__ngFactoryType__ || _NumberValueAccessor); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _NumberValueAccessor, + selectors: [["input", "type", "number", "formControlName", ""], ["input", "type", "number", "formControl", ""], ["input", "type", "number", "ngModel", ""]], + hostBindings: function NumberValueAccessor_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("input", function NumberValueAccessor_input_HostBindingHandler($event) { + return ctx.onChange($event.target.value); + })("blur", function NumberValueAccessor_blur_HostBindingHandler() { + return ctx.onTouched(); + }); + } + }, + standalone: false, + features: [ɵɵProvidersFeature([NUMBER_VALUE_ACCESSOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NumberValueAccessor, [{ + type: Directive, + args: [{ + selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]", + host: { + "(input)": "onChange($any($event.target).value)", + "(blur)": "onTouched()" + }, + providers: [NUMBER_VALUE_ACCESSOR], + standalone: false + }] + }], null, null); +})(); +var RADIO_VALUE_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => RadioControlValueAccessor), + multi: true +}; +function throwNameError() { + throw new RuntimeError(1202, ` + If you define both a name and a formControlName attribute on your radio button, their values + must match. Ex: + `); +} +var RadioControlRegistry = class _RadioControlRegistry { + _accessors = []; + /** + * @description + * Adds a control to the internal registry. For internal use only. + */ + add(control, accessor) { + this._accessors.push([control, accessor]); + } + /** + * @description + * Removes a control from the internal registry. For internal use only. + */ + remove(accessor) { + for (let i = this._accessors.length - 1; i >= 0; --i) { + if (this._accessors[i][1] === accessor) { + this._accessors.splice(i, 1); + return; + } + } + } + /** + * @description + * Selects a radio button. For internal use only. + */ + select(accessor) { + this._accessors.forEach((c) => { + if (this._isSameGroup(c, accessor) && c[1] !== accessor) { + c[1].fireUncheck(accessor.value); + } + }); + } + _isSameGroup(controlPair, accessor) { + if (!controlPair[0].control) return false; + return controlPair[0]._parent === accessor._control._parent && controlPair[1].name === accessor.name; + } + static ɵfac = function RadioControlRegistry_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _RadioControlRegistry)(); + }; + static ɵprov = ɵɵdefineInjectable({ + token: _RadioControlRegistry, + factory: _RadioControlRegistry.ɵfac, + providedIn: "root" + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RadioControlRegistry, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], null, null); +})(); +var RadioControlValueAccessor = class _RadioControlValueAccessor extends BuiltInControlValueAccessor { + _registry; + _injector; + /** @internal */ + _state; + /** @internal */ + _control; + /** @internal */ + _fn; + setDisabledStateFired = false; + /** + * The registered callback function called when a change event occurs on the input element. + * Note: we declare `onChange` here (also used as host listener) as a function with no arguments + * to override the `onChange` function (which expects 1 argument) in the parent + * `BaseControlValueAccessor` class. + * @docs-private + */ + onChange = () => { + }; + /** + * @description + * Tracks the name of the radio input element. + */ + name; + /** + * @description + * Tracks the name of the `FormControl` bound to the directive. The name corresponds + * to a key in the parent `FormGroup` or `FormArray`. + */ + formControlName; + /** + * @description + * Tracks the value of the radio input element + */ + value; + callSetDisabledState = inject(CALL_SET_DISABLED_STATE, { + optional: true + }) ?? setDisabledStateDefault; + constructor(renderer, elementRef, _registry, _injector) { + super(renderer, elementRef); + this._registry = _registry; + this._injector = _injector; + } + /** @docs-private */ + ngOnInit() { + this._control = this._injector.get(NgControl); + this._checkName(); + this._registry.add(this._control, this); + } + /** @docs-private */ + ngOnDestroy() { + this._registry.remove(this); + } + /** + * Sets the "checked" property value on the radio input element. + * @docs-private + */ + writeValue(value) { + this._state = value === this.value; + this.setProperty("checked", this._state); + } + /** + * Registers a function called when the control value changes. + * @docs-private + */ + registerOnChange(fn) { + this._fn = fn; + this.onChange = () => { + fn(this.value); + this._registry.select(this); + }; + } + /** @docs-private */ + setDisabledState(isDisabled) { + if (this.setDisabledStateFired || isDisabled || this.callSetDisabledState === "whenDisabledForLegacyCode") { + this.setProperty("disabled", isDisabled); + } + this.setDisabledStateFired = true; + } + /** + * Sets the "value" on the radio input element and unchecks it. + * + * @param value + */ + fireUncheck(value) { + this.writeValue(value); + } + _checkName() { + if (this.name && this.formControlName && this.name !== this.formControlName && (typeof ngDevMode === "undefined" || ngDevMode)) { + throwNameError(); + } + if (!this.name && this.formControlName) this.name = this.formControlName; + } + static ɵfac = function RadioControlValueAccessor_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _RadioControlValueAccessor)(ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(RadioControlRegistry), ɵɵdirectiveInject(Injector)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _RadioControlValueAccessor, + selectors: [["input", "type", "radio", "formControlName", ""], ["input", "type", "radio", "formControl", ""], ["input", "type", "radio", "ngModel", ""]], + hostBindings: function RadioControlValueAccessor_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("change", function RadioControlValueAccessor_change_HostBindingHandler() { + return ctx.onChange(); + })("blur", function RadioControlValueAccessor_blur_HostBindingHandler() { + return ctx.onTouched(); + }); + } + }, + inputs: { + name: "name", + formControlName: "formControlName", + value: "value" + }, + standalone: false, + features: [ɵɵProvidersFeature([RADIO_VALUE_ACCESSOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RadioControlValueAccessor, [{ + type: Directive, + args: [{ + selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", + host: { + "(change)": "onChange()", + "(blur)": "onTouched()" + }, + providers: [RADIO_VALUE_ACCESSOR], + standalone: false + }] + }], () => [{ + type: Renderer2 + }, { + type: ElementRef + }, { + type: RadioControlRegistry + }, { + type: Injector + }], { + name: [{ + type: Input + }], + formControlName: [{ + type: Input + }], + value: [{ + type: Input + }] + }); +})(); +var RANGE_VALUE_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => RangeValueAccessor), + multi: true +}; +var RangeValueAccessor = class _RangeValueAccessor extends BuiltInControlValueAccessor { + /** + * Sets the "value" property on the input element. + * @docs-private + */ + writeValue(value) { + this.setProperty("value", parseFloat(value)); + } + /** + * Registers a function called when the control value changes. + * @docs-private + */ + registerOnChange(fn) { + this.onChange = (value) => { + fn(value == "" ? null : parseFloat(value)); + }; + } + static ɵfac = /* @__PURE__ */ (() => { + let ɵRangeValueAccessor_BaseFactory; + return function RangeValueAccessor_Factory(__ngFactoryType__) { + return (ɵRangeValueAccessor_BaseFactory || (ɵRangeValueAccessor_BaseFactory = ɵɵgetInheritedFactory(_RangeValueAccessor)))(__ngFactoryType__ || _RangeValueAccessor); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _RangeValueAccessor, + selectors: [["input", "type", "range", "formControlName", ""], ["input", "type", "range", "formControl", ""], ["input", "type", "range", "ngModel", ""]], + hostBindings: function RangeValueAccessor_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("change", function RangeValueAccessor_change_HostBindingHandler($event) { + return ctx.onChange($event.target.value); + })("input", function RangeValueAccessor_input_HostBindingHandler($event) { + return ctx.onChange($event.target.value); + })("blur", function RangeValueAccessor_blur_HostBindingHandler() { + return ctx.onTouched(); + }); + } + }, + standalone: false, + features: [ɵɵProvidersFeature([RANGE_VALUE_ACCESSOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RangeValueAccessor, [{ + type: Directive, + args: [{ + selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]", + host: { + "(change)": "onChange($any($event.target).value)", + "(input)": "onChange($any($event.target).value)", + "(blur)": "onTouched()" + }, + providers: [RANGE_VALUE_ACCESSOR], + standalone: false + }] + }], null, null); +})(); +var NG_MODEL_WITH_FORM_CONTROL_WARNING = new InjectionToken(ngDevMode ? "NgModelWithFormControlWarning" : ""); +var formControlBinding = { + provide: NgControl, + useExisting: forwardRef(() => FormControlDirective) +}; +var FormControlDirective = class _FormControlDirective extends NgControl { + _ngModelWarningConfig; + callSetDisabledState; + /** + * Internal reference to the view model value. + * @docs-private + */ + viewModel; + /** + * @description + * Tracks the `FormControl` instance bound to the directive. + */ + form; + /** + * @description + * Triggers a warning in dev mode that this input should not be used with reactive forms. + */ + set isDisabled(isDisabled) { + if (typeof ngDevMode === "undefined" || ngDevMode) { + console.warn(disabledAttrWarning); + } + } + // TODO(kara): remove next 4 properties once deprecation period is over + /** @deprecated as of v6 */ + model; + /** @deprecated as of v6 */ + update = new EventEmitter(); + /** + * @description + * Static property used to track whether any ngModel warnings have been sent across + * all instances of FormControlDirective. Used to support warning config of "once". + * + * @internal + */ + static _ngModelWarningSentOnce = false; + /** + * @description + * Instance property used to track whether an ngModel warning has been sent out for this + * particular `FormControlDirective` instance. Used to support warning config of "always". + * + * @internal + */ + _ngModelWarningSent = false; + constructor(validators, asyncValidators, valueAccessors, _ngModelWarningConfig, callSetDisabledState) { + super(); + this._ngModelWarningConfig = _ngModelWarningConfig; + this.callSetDisabledState = callSetDisabledState; + this._setValidators(validators); + this._setAsyncValidators(asyncValidators); + this.valueAccessor = selectValueAccessor(this, valueAccessors); + } + /** @docs-private */ + ngOnChanges(changes) { + if (this._isControlChanged(changes)) { + const previousForm = changes["form"].previousValue; + if (previousForm) { + cleanUpControl( + previousForm, + this, + /* validateControlPresenceOnChange */ + false + ); + } + setUpControl(this.form, this, this.callSetDisabledState); + this.form.updateValueAndValidity({ + emitEvent: false + }); + } + if (isPropertyUpdated(changes, this.viewModel)) { + if (typeof ngDevMode === "undefined" || ngDevMode) { + _ngModelWarning("formControl", _FormControlDirective, this, this._ngModelWarningConfig); + } + this.form.setValue(this.model); + this.viewModel = this.model; + } + } + /** @docs-private */ + ngOnDestroy() { + if (this.form) { + cleanUpControl( + this.form, + this, + /* validateControlPresenceOnChange */ + false + ); + } + } + /** + * @description + * Returns an array that represents the path from the top-level form to this control. + * Each index is the string name of the control on that level. + */ + get path() { + return []; + } + /** + * @description + * The `FormControl` bound to this directive. + */ + get control() { + return this.form; + } + /** + * @description + * Sets the new value for the view model and emits an `ngModelChange` event. + * + * @param newValue The new value for the view model. + */ + viewToModelUpdate(newValue) { + this.viewModel = newValue; + this.update.emit(newValue); + } + _isControlChanged(changes) { + return changes.hasOwnProperty("form"); + } + static ɵfac = function FormControlDirective_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _FormControlDirective)(ɵɵdirectiveInject(NG_VALIDATORS, 10), ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10), ɵɵdirectiveInject(NG_VALUE_ACCESSOR, 10), ɵɵdirectiveInject(NG_MODEL_WITH_FORM_CONTROL_WARNING, 8), ɵɵdirectiveInject(CALL_SET_DISABLED_STATE, 8)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _FormControlDirective, + selectors: [["", "formControl", ""]], + inputs: { + form: [0, "formControl", "form"], + isDisabled: [0, "disabled", "isDisabled"], + model: [0, "ngModel", "model"] + }, + outputs: { + update: "ngModelChange" + }, + exportAs: ["ngForm"], + standalone: false, + features: [ɵɵProvidersFeature([formControlBinding]), ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(FormControlDirective, [{ + type: Directive, + args: [{ + selector: "[formControl]", + providers: [formControlBinding], + exportAs: "ngForm", + standalone: false + }] + }], () => [{ + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_ASYNC_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_VALUE_ACCESSOR] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [NG_MODEL_WITH_FORM_CONTROL_WARNING] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [CALL_SET_DISABLED_STATE] + }] + }], { + form: [{ + type: Input, + args: ["formControl"] + }], + isDisabled: [{ + type: Input, + args: ["disabled"] + }], + model: [{ + type: Input, + args: ["ngModel"] + }], + update: [{ + type: Output, + args: ["ngModelChange"] + }] + }); +})(); +var formDirectiveProvider = { + provide: ControlContainer, + useExisting: forwardRef(() => FormGroupDirective) +}; +var FormGroupDirective = class _FormGroupDirective extends ControlContainer { + callSetDisabledState; + /** + * @description + * Reports whether the form submission has been triggered. + */ + get submitted() { + return untracked(this._submittedReactive); + } + // TODO(atscott): Remove once invalid API usage is cleaned up internally + set submitted(value) { + this._submittedReactive.set(value); + } + /** @internal */ + _submitted = computed(() => this._submittedReactive(), ...ngDevMode ? [{ + debugName: "_submitted" + }] : []); + _submittedReactive = signal(false, ...ngDevMode ? [{ + debugName: "_submittedReactive" + }] : []); + /** + * Reference to an old form group input value, which is needed to cleanup + * old instance in case it was replaced with a new one. + */ + _oldForm; + /** + * Callback that should be invoked when controls in FormGroup or FormArray collection change + * (added or removed). This callback triggers corresponding DOM updates. + */ + _onCollectionChange = () => this._updateDomValue(); + /** + * @description + * Tracks the list of added `FormControlName` instances + */ + directives = []; + /** + * @description + * Tracks the `FormGroup` bound to this directive. + */ + form = null; + /** + * @description + * Emits an event when the form submission has been triggered. + */ + ngSubmit = new EventEmitter(); + constructor(validators, asyncValidators, callSetDisabledState) { + super(); + this.callSetDisabledState = callSetDisabledState; + this._setValidators(validators); + this._setAsyncValidators(asyncValidators); + } + /** @docs-private */ + ngOnChanges(changes) { + if ((typeof ngDevMode === "undefined" || ngDevMode) && !this.form) { + throw missingFormException(); + } + if (changes.hasOwnProperty("form")) { + this._updateValidators(); + this._updateDomValue(); + this._updateRegistrations(); + this._oldForm = this.form; + } + } + /** @docs-private */ + ngOnDestroy() { + if (this.form) { + cleanUpValidators(this.form, this); + if (this.form._onCollectionChange === this._onCollectionChange) { + this.form._registerOnCollectionChange(() => { + }); + } + } + } + /** + * @description + * Returns this directive's instance. + */ + get formDirective() { + return this; + } + /** + * @description + * Returns the `FormGroup` bound to this directive. + */ + get control() { + return this.form; + } + /** + * @description + * Returns an array representing the path to this group. Because this directive + * always lives at the top level of a form, it always an empty array. + */ + get path() { + return []; + } + /** + * @description + * Method that sets up the control directive in this group, re-calculates its value + * and validity, and adds the instance to the internal list of directives. + * + * @param dir The `FormControlName` directive instance. + */ + addControl(dir) { + const ctrl = this.form.get(dir.path); + setUpControl(ctrl, dir, this.callSetDisabledState); + ctrl.updateValueAndValidity({ + emitEvent: false + }); + this.directives.push(dir); + return ctrl; + } + /** + * @description + * Retrieves the `FormControl` instance from the provided `FormControlName` directive + * + * @param dir The `FormControlName` directive instance. + */ + getControl(dir) { + return this.form.get(dir.path); + } + /** + * @description + * Removes the `FormControlName` instance from the internal list of directives + * + * @param dir The `FormControlName` directive instance. + */ + removeControl(dir) { + cleanUpControl( + dir.control || null, + dir, + /* validateControlPresenceOnChange */ + false + ); + removeListItem$1(this.directives, dir); + } + /** + * Adds a new `FormGroupName` directive instance to the form. + * + * @param dir The `FormGroupName` directive instance. + */ + addFormGroup(dir) { + this._setUpFormContainer(dir); + } + /** + * Performs the necessary cleanup when a `FormGroupName` directive instance is removed from the + * view. + * + * @param dir The `FormGroupName` directive instance. + */ + removeFormGroup(dir) { + this._cleanUpFormContainer(dir); + } + /** + * @description + * Retrieves the `FormGroup` for a provided `FormGroupName` directive instance + * + * @param dir The `FormGroupName` directive instance. + */ + getFormGroup(dir) { + return this.form.get(dir.path); + } + /** + * Performs the necessary setup when a `FormArrayName` directive instance is added to the view. + * + * @param dir The `FormArrayName` directive instance. + */ + addFormArray(dir) { + this._setUpFormContainer(dir); + } + /** + * Performs the necessary cleanup when a `FormArrayName` directive instance is removed from the + * view. + * + * @param dir The `FormArrayName` directive instance. + */ + removeFormArray(dir) { + this._cleanUpFormContainer(dir); + } + /** + * @description + * Retrieves the `FormArray` for a provided `FormArrayName` directive instance. + * + * @param dir The `FormArrayName` directive instance. + */ + getFormArray(dir) { + return this.form.get(dir.path); + } + /** + * Sets the new value for the provided `FormControlName` directive. + * + * @param dir The `FormControlName` directive instance. + * @param value The new value for the directive's control. + */ + updateModel(dir, value) { + const ctrl = this.form.get(dir.path); + ctrl.setValue(value); + } + /** + * @description + * Method called with the "submit" event is triggered on the form. + * Triggers the `ngSubmit` emitter to emit the "submit" event as its payload. + * + * @param $event The "submit" event object + */ + onSubmit($event) { + this._submittedReactive.set(true); + syncPendingControls(this.form, this.directives); + this.ngSubmit.emit($event); + this.form._events.next(new FormSubmittedEvent(this.control)); + return $event?.target?.method === "dialog"; + } + /** + * @description + * Method called when the "reset" event is triggered on the form. + */ + onReset() { + this.resetForm(); + } + /** + * @description + * Resets the form to an initial value and resets its submitted status. + * + * @param value The new value for the form, `undefined` by default + */ + resetForm(value = void 0, options = {}) { + this.form.reset(value, options); + this._submittedReactive.set(false); + if (options?.emitEvent !== false) { + this.form._events.next(new FormResetEvent(this.form)); + } + } + /** @internal */ + _updateDomValue() { + this.directives.forEach((dir) => { + const oldCtrl = dir.control; + const newCtrl = this.form.get(dir.path); + if (oldCtrl !== newCtrl) { + cleanUpControl(oldCtrl || null, dir); + if (isFormControl(newCtrl)) { + setUpControl(newCtrl, dir, this.callSetDisabledState); + dir.control = newCtrl; + } + } + }); + this.form._updateTreeValidity({ + emitEvent: false + }); + } + _setUpFormContainer(dir) { + const ctrl = this.form.get(dir.path); + setUpFormContainer(ctrl, dir); + ctrl.updateValueAndValidity({ + emitEvent: false + }); + } + _cleanUpFormContainer(dir) { + if (this.form) { + const ctrl = this.form.get(dir.path); + if (ctrl) { + const isControlUpdated = cleanUpFormContainer(ctrl, dir); + if (isControlUpdated) { + ctrl.updateValueAndValidity({ + emitEvent: false + }); + } + } + } + } + _updateRegistrations() { + this.form._registerOnCollectionChange(this._onCollectionChange); + if (this._oldForm) { + this._oldForm._registerOnCollectionChange(() => { + }); + } + } + _updateValidators() { + setUpValidators(this.form, this); + if (this._oldForm) { + cleanUpValidators(this._oldForm, this); + } + } + static ɵfac = function FormGroupDirective_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _FormGroupDirective)(ɵɵdirectiveInject(NG_VALIDATORS, 10), ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10), ɵɵdirectiveInject(CALL_SET_DISABLED_STATE, 8)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _FormGroupDirective, + selectors: [["", "formGroup", ""]], + hostBindings: function FormGroupDirective_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("submit", function FormGroupDirective_submit_HostBindingHandler($event) { + return ctx.onSubmit($event); + })("reset", function FormGroupDirective_reset_HostBindingHandler() { + return ctx.onReset(); + }); + } + }, + inputs: { + form: [0, "formGroup", "form"] + }, + outputs: { + ngSubmit: "ngSubmit" + }, + exportAs: ["ngForm"], + standalone: false, + features: [ɵɵProvidersFeature([formDirectiveProvider]), ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(FormGroupDirective, [{ + type: Directive, + args: [{ + selector: "[formGroup]", + providers: [formDirectiveProvider], + host: { + "(submit)": "onSubmit($event)", + "(reset)": "onReset()" + }, + exportAs: "ngForm", + standalone: false + }] + }], () => [{ + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_ASYNC_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [CALL_SET_DISABLED_STATE] + }] + }], { + form: [{ + type: Input, + args: ["formGroup"] + }], + ngSubmit: [{ + type: Output + }] + }); +})(); +var formGroupNameProvider = { + provide: ControlContainer, + useExisting: forwardRef(() => FormGroupName) +}; +var FormGroupName = class _FormGroupName extends AbstractFormGroupDirective { + /** + * @description + * Tracks the name of the `FormGroup` bound to the directive. The name corresponds + * to a key in the parent `FormGroup` or `FormArray`. + * Accepts a name as a string or a number. + * The name in the form of a string is useful for individual forms, + * while the numerical form allows for form groups to be bound + * to indices when iterating over groups in a `FormArray`. + */ + name = null; + constructor(parent, validators, asyncValidators) { + super(); + this._parent = parent; + this._setValidators(validators); + this._setAsyncValidators(asyncValidators); + } + /** @internal */ + _checkParentType() { + if (hasInvalidParent(this._parent) && (typeof ngDevMode === "undefined" || ngDevMode)) { + throw groupParentException(); + } + } + static ɵfac = function FormGroupName_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _FormGroupName)(ɵɵdirectiveInject(ControlContainer, 13), ɵɵdirectiveInject(NG_VALIDATORS, 10), ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _FormGroupName, + selectors: [["", "formGroupName", ""]], + inputs: { + name: [0, "formGroupName", "name"] + }, + standalone: false, + features: [ɵɵProvidersFeature([formGroupNameProvider]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(FormGroupName, [{ + type: Directive, + args: [{ + selector: "[formGroupName]", + providers: [formGroupNameProvider], + standalone: false + }] + }], () => [{ + type: ControlContainer, + decorators: [{ + type: Optional + }, { + type: Host + }, { + type: SkipSelf + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_ASYNC_VALIDATORS] + }] + }], { + name: [{ + type: Input, + args: ["formGroupName"] + }] + }); +})(); +var formArrayNameProvider = { + provide: ControlContainer, + useExisting: forwardRef(() => FormArrayName) +}; +var FormArrayName = class _FormArrayName extends ControlContainer { + /** @internal */ + _parent; + /** + * @description + * Tracks the name of the `FormArray` bound to the directive. The name corresponds + * to a key in the parent `FormGroup` or `FormArray`. + * Accepts a name as a string or a number. + * The name in the form of a string is useful for individual forms, + * while the numerical form allows for form arrays to be bound + * to indices when iterating over arrays in a `FormArray`. + */ + name = null; + constructor(parent, validators, asyncValidators) { + super(); + this._parent = parent; + this._setValidators(validators); + this._setAsyncValidators(asyncValidators); + } + /** + * A lifecycle method called when the directive's inputs are initialized. For internal use only. + * @throws If the directive does not have a valid parent. + * @docs-private + */ + ngOnInit() { + if (hasInvalidParent(this._parent) && (typeof ngDevMode === "undefined" || ngDevMode)) { + throw arrayParentException(); + } + this.formDirective.addFormArray(this); + } + /** + * A lifecycle method called before the directive's instance is destroyed. For internal use only. + * @docs-private + */ + ngOnDestroy() { + this.formDirective?.removeFormArray(this); + } + /** + * @description + * The `FormArray` bound to this directive. + */ + get control() { + return this.formDirective.getFormArray(this); + } + /** + * @description + * The top-level directive for this group if present, otherwise null. + */ + get formDirective() { + return this._parent ? this._parent.formDirective : null; + } + /** + * @description + * Returns an array that represents the path from the top-level form to this control. + * Each index is the string name of the control on that level. + */ + get path() { + return controlPath(this.name == null ? this.name : this.name.toString(), this._parent); + } + static ɵfac = function FormArrayName_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _FormArrayName)(ɵɵdirectiveInject(ControlContainer, 13), ɵɵdirectiveInject(NG_VALIDATORS, 10), ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _FormArrayName, + selectors: [["", "formArrayName", ""]], + inputs: { + name: [0, "formArrayName", "name"] + }, + standalone: false, + features: [ɵɵProvidersFeature([formArrayNameProvider]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(FormArrayName, [{ + type: Directive, + args: [{ + selector: "[formArrayName]", + providers: [formArrayNameProvider], + standalone: false + }] + }], () => [{ + type: ControlContainer, + decorators: [{ + type: Optional + }, { + type: Host + }, { + type: SkipSelf + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_ASYNC_VALIDATORS] + }] + }], { + name: [{ + type: Input, + args: ["formArrayName"] + }] + }); +})(); +function hasInvalidParent(parent) { + return !(parent instanceof FormGroupName) && !(parent instanceof FormGroupDirective) && !(parent instanceof FormArrayName); +} +var controlNameBinding = { + provide: NgControl, + useExisting: forwardRef(() => FormControlName) +}; +var FormControlName = class _FormControlName extends NgControl { + _ngModelWarningConfig; + _added = false; + /** + * Internal reference to the view model value. + * @internal + */ + viewModel; + /** + * @description + * Tracks the `FormControl` instance bound to the directive. + */ + control; + /** + * @description + * Tracks the name of the `FormControl` bound to the directive. The name corresponds + * to a key in the parent `FormGroup` or `FormArray`. + * Accepts a name as a string or a number. + * The name in the form of a string is useful for individual forms, + * while the numerical form allows for form controls to be bound + * to indices when iterating over controls in a `FormArray`. + */ + name = null; + /** + * @description + * Triggers a warning in dev mode that this input should not be used with reactive forms. + */ + set isDisabled(isDisabled) { + if (typeof ngDevMode === "undefined" || ngDevMode) { + console.warn(disabledAttrWarning); + } + } + // TODO(kara): remove next 4 properties once deprecation period is over + /** @deprecated as of v6 */ + model; + /** @deprecated as of v6 */ + update = new EventEmitter(); + /** + * @description + * Static property used to track whether any ngModel warnings have been sent across + * all instances of FormControlName. Used to support warning config of "once". + * + * @internal + */ + static _ngModelWarningSentOnce = false; + /** + * @description + * Instance property used to track whether an ngModel warning has been sent out for this + * particular FormControlName instance. Used to support warning config of "always". + * + * @internal + */ + _ngModelWarningSent = false; + constructor(parent, validators, asyncValidators, valueAccessors, _ngModelWarningConfig) { + super(); + this._ngModelWarningConfig = _ngModelWarningConfig; + this._parent = parent; + this._setValidators(validators); + this._setAsyncValidators(asyncValidators); + this.valueAccessor = selectValueAccessor(this, valueAccessors); + } + /** @docs-private */ + ngOnChanges(changes) { + if (!this._added) this._setUpControl(); + if (isPropertyUpdated(changes, this.viewModel)) { + if (typeof ngDevMode === "undefined" || ngDevMode) { + _ngModelWarning("formControlName", _FormControlName, this, this._ngModelWarningConfig); + } + this.viewModel = this.model; + this.formDirective.updateModel(this, this.model); + } + } + /** @docs-private */ + ngOnDestroy() { + if (this.formDirective) { + this.formDirective.removeControl(this); + } + } + /** + * @description + * Sets the new value for the view model and emits an `ngModelChange` event. + * + * @param newValue The new value for the view model. + */ + viewToModelUpdate(newValue) { + this.viewModel = newValue; + this.update.emit(newValue); + } + /** + * @description + * Returns an array that represents the path from the top-level form to this control. + * Each index is the string name of the control on that level. + */ + get path() { + return controlPath(this.name == null ? this.name : this.name.toString(), this._parent); + } + /** + * @description + * The top-level directive for this group if present, otherwise null. + */ + get formDirective() { + return this._parent ? this._parent.formDirective : null; + } + _setUpControl() { + if (typeof ngDevMode === "undefined" || ngDevMode) { + checkParentType(this._parent, this.name); + } + this.control = this.formDirective.addControl(this); + this._added = true; + } + static ɵfac = function FormControlName_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _FormControlName)(ɵɵdirectiveInject(ControlContainer, 13), ɵɵdirectiveInject(NG_VALIDATORS, 10), ɵɵdirectiveInject(NG_ASYNC_VALIDATORS, 10), ɵɵdirectiveInject(NG_VALUE_ACCESSOR, 10), ɵɵdirectiveInject(NG_MODEL_WITH_FORM_CONTROL_WARNING, 8)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _FormControlName, + selectors: [["", "formControlName", ""]], + inputs: { + name: [0, "formControlName", "name"], + isDisabled: [0, "disabled", "isDisabled"], + model: [0, "ngModel", "model"] + }, + outputs: { + update: "ngModelChange" + }, + standalone: false, + features: [ɵɵProvidersFeature([controlNameBinding]), ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(FormControlName, [{ + type: Directive, + args: [{ + selector: "[formControlName]", + providers: [controlNameBinding], + standalone: false + }] + }], () => [{ + type: ControlContainer, + decorators: [{ + type: Optional + }, { + type: Host + }, { + type: SkipSelf + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_ASYNC_VALIDATORS] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Self + }, { + type: Inject, + args: [NG_VALUE_ACCESSOR] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [NG_MODEL_WITH_FORM_CONTROL_WARNING] + }] + }], { + name: [{ + type: Input, + args: ["formControlName"] + }], + isDisabled: [{ + type: Input, + args: ["disabled"] + }], + model: [{ + type: Input, + args: ["ngModel"] + }], + update: [{ + type: Output, + args: ["ngModelChange"] + }] + }); +})(); +function checkParentType(parent, name) { + if (!(parent instanceof FormGroupName) && parent instanceof AbstractFormGroupDirective) { + throw ngModelGroupException(); + } else if (!(parent instanceof FormGroupName) && !(parent instanceof FormGroupDirective) && !(parent instanceof FormArrayName)) { + throw controlParentException(name); + } +} +var SELECT_VALUE_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => SelectControlValueAccessor), + multi: true +}; +function _buildValueString$1(id, value) { + if (id == null) return `${value}`; + if (value && typeof value === "object") value = "Object"; + return `${id}: ${value}`.slice(0, 50); +} +function _extractId$1(valueString) { + return valueString.split(":")[0]; +} +var SelectControlValueAccessor = class _SelectControlValueAccessor extends BuiltInControlValueAccessor { + /** @docs-private */ + value; + /** @internal */ + _optionMap = /* @__PURE__ */ new Map(); + /** @internal */ + _idCounter = 0; + /** + * @description + * Tracks the option comparison algorithm for tracking identities when + * checking for changes. + */ + set compareWith(fn) { + if (typeof fn !== "function" && (typeof ngDevMode === "undefined" || ngDevMode)) { + throw new RuntimeError(1201, `compareWith must be a function, but received ${JSON.stringify(fn)}`); + } + this._compareWith = fn; + } + _compareWith = Object.is; + // We need this because we might be in the process of destroying the root + // injector, which is marked as destroyed before running destroy hooks. + // Attempting to use afterNextRender with the node injector would evntually + // run into that already destroyed injector. + appRefInjector = inject(ApplicationRef).injector; + destroyRef = inject(DestroyRef); + cdr = inject(ChangeDetectorRef); + _queuedWrite = false; + /** + * This is needed to efficiently set the select value when adding/removing options. If + * writeValue is instead called for every added/removed option, this results in exponentially + * more _compareValue calls than the number of option elements (issue #41330). + * + * Secondly, calling writeValue when rendering individual option elements instead of after they + * are all rendered caused an issue in Safari and IE 11 where the first option element failed + * to be deselected when no option matched the select ngModel. This was because Angular would + * set the select element's value property before appending the option's child text node to the + * DOM (issue #14505). + * + * Finally, this approach is necessary to avoid an issue with delayed element removal when + * using the animations module (in all browsers). Otherwise when a selected option is removed + * (so no option matches the ngModel anymore), Angular would change the select element value + * before actually removing the option from the DOM. Then when the option is finally removed + * from the DOM, the browser would change the select value to that of the first option, even + * though it doesn't match the ngModel (issue #18430). + * + * @internal + */ + _writeValueAfterRender() { + if (this._queuedWrite || this.appRefInjector.destroyed) { + return; + } + this._queuedWrite = true; + afterNextRender({ + write: () => { + if (this.destroyRef.destroyed) { + return; + } + this._queuedWrite = false; + this.writeValue(this.value); + } + }, { + injector: this.appRefInjector + }); + } + /** + * Sets the "value" property on the select element. + * @docs-private + */ + writeValue(value) { + this.cdr.markForCheck(); + this.value = value; + const id = this._getOptionId(value); + const valueString = _buildValueString$1(id, value); + this.setProperty("value", valueString); + } + /** + * Registers a function called when the control value changes. + * @docs-private + */ + registerOnChange(fn) { + this.onChange = (valueString) => { + this.value = this._getOptionValue(valueString); + fn(this.value); + }; + } + /** @internal */ + _registerOption() { + return (this._idCounter++).toString(); + } + /** @internal */ + _getOptionId(value) { + for (const id of this._optionMap.keys()) { + if (this._compareWith(this._optionMap.get(id), value)) return id; + } + return null; + } + /** @internal */ + _getOptionValue(valueString) { + const id = _extractId$1(valueString); + return this._optionMap.has(id) ? this._optionMap.get(id) : valueString; + } + static ɵfac = /* @__PURE__ */ (() => { + let ɵSelectControlValueAccessor_BaseFactory; + return function SelectControlValueAccessor_Factory(__ngFactoryType__) { + return (ɵSelectControlValueAccessor_BaseFactory || (ɵSelectControlValueAccessor_BaseFactory = ɵɵgetInheritedFactory(_SelectControlValueAccessor)))(__ngFactoryType__ || _SelectControlValueAccessor); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _SelectControlValueAccessor, + selectors: [["select", "formControlName", "", 3, "multiple", ""], ["select", "formControl", "", 3, "multiple", ""], ["select", "ngModel", "", 3, "multiple", ""]], + hostBindings: function SelectControlValueAccessor_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("change", function SelectControlValueAccessor_change_HostBindingHandler($event) { + return ctx.onChange($event.target.value); + })("blur", function SelectControlValueAccessor_blur_HostBindingHandler() { + return ctx.onTouched(); + }); + } + }, + inputs: { + compareWith: "compareWith" + }, + standalone: false, + features: [ɵɵProvidersFeature([SELECT_VALUE_ACCESSOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(SelectControlValueAccessor, [{ + type: Directive, + args: [{ + selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", + host: { + "(change)": "onChange($any($event.target).value)", + "(blur)": "onTouched()" + }, + providers: [SELECT_VALUE_ACCESSOR], + standalone: false + }] + }], null, { + compareWith: [{ + type: Input + }] + }); +})(); +var NgSelectOption = class _NgSelectOption { + _element; + _renderer; + _select; + /** + * @description + * ID of the option element + */ + id; + constructor(_element, _renderer, _select) { + this._element = _element; + this._renderer = _renderer; + this._select = _select; + if (this._select) this.id = this._select._registerOption(); + } + /** + * @description + * Tracks the value bound to the option element. Unlike the value binding, + * ngValue supports binding to objects. + */ + set ngValue(value) { + if (this._select == null) return; + this._select._optionMap.set(this.id, value); + this._setElementValue(_buildValueString$1(this.id, value)); + this._select._writeValueAfterRender(); + } + /** + * @description + * Tracks simple string values bound to the option element. + * For objects, use the `ngValue` input binding. + */ + set value(value) { + this._setElementValue(value); + if (this._select) this._select._writeValueAfterRender(); + } + /** @internal */ + _setElementValue(value) { + this._renderer.setProperty(this._element.nativeElement, "value", value); + } + /** @docs-private */ + ngOnDestroy() { + if (this._select) { + this._select._optionMap.delete(this.id); + this._select._writeValueAfterRender(); + } + } + static ɵfac = function NgSelectOption_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _NgSelectOption)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(SelectControlValueAccessor, 9)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _NgSelectOption, + selectors: [["option"]], + inputs: { + ngValue: "ngValue", + value: "value" + }, + standalone: false + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgSelectOption, [{ + type: Directive, + args: [{ + selector: "option", + standalone: false + }] + }], () => [{ + type: ElementRef + }, { + type: Renderer2 + }, { + type: SelectControlValueAccessor, + decorators: [{ + type: Optional + }, { + type: Host + }] + }], { + ngValue: [{ + type: Input, + args: ["ngValue"] + }], + value: [{ + type: Input, + args: ["value"] + }] + }); +})(); +var SELECT_MULTIPLE_VALUE_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => SelectMultipleControlValueAccessor), + multi: true +}; +function _buildValueString(id, value) { + if (id == null) return `${value}`; + if (typeof value === "string") value = `'${value}'`; + if (value && typeof value === "object") value = "Object"; + return `${id}: ${value}`.slice(0, 50); +} +function _extractId(valueString) { + return valueString.split(":")[0]; +} +var SelectMultipleControlValueAccessor = class _SelectMultipleControlValueAccessor extends BuiltInControlValueAccessor { + /** + * The current value. + * @docs-private + */ + value; + /** @internal */ + _optionMap = /* @__PURE__ */ new Map(); + /** @internal */ + _idCounter = 0; + /** + * @description + * Tracks the option comparison algorithm for tracking identities when + * checking for changes. + */ + set compareWith(fn) { + if (typeof fn !== "function" && (typeof ngDevMode === "undefined" || ngDevMode)) { + throw new RuntimeError(1201, `compareWith must be a function, but received ${JSON.stringify(fn)}`); + } + this._compareWith = fn; + } + _compareWith = Object.is; + /** + * Sets the "value" property on one or of more of the select's options. + * @docs-private + */ + writeValue(value) { + this.value = value; + let optionSelectedStateSetter; + if (Array.isArray(value)) { + const ids = value.map((v) => this._getOptionId(v)); + optionSelectedStateSetter = (opt, o) => { + opt._setSelected(ids.indexOf(o.toString()) > -1); + }; + } else { + optionSelectedStateSetter = (opt, o) => { + opt._setSelected(false); + }; + } + this._optionMap.forEach(optionSelectedStateSetter); + } + /** + * Registers a function called when the control value changes + * and writes an array of the selected options. + * @docs-private + */ + registerOnChange(fn) { + this.onChange = (element) => { + const selected = []; + const selectedOptions = element.selectedOptions; + if (selectedOptions !== void 0) { + const options = selectedOptions; + for (let i = 0; i < options.length; i++) { + const opt = options[i]; + const val = this._getOptionValue(opt.value); + selected.push(val); + } + } else { + const options = element.options; + for (let i = 0; i < options.length; i++) { + const opt = options[i]; + if (opt.selected) { + const val = this._getOptionValue(opt.value); + selected.push(val); + } + } + } + this.value = selected; + fn(selected); + }; + } + /** @internal */ + _registerOption(value) { + const id = (this._idCounter++).toString(); + this._optionMap.set(id, value); + return id; + } + /** @internal */ + _getOptionId(value) { + for (const id of this._optionMap.keys()) { + if (this._compareWith(this._optionMap.get(id)._value, value)) return id; + } + return null; + } + /** @internal */ + _getOptionValue(valueString) { + const id = _extractId(valueString); + return this._optionMap.has(id) ? this._optionMap.get(id)._value : valueString; + } + static ɵfac = /* @__PURE__ */ (() => { + let ɵSelectMultipleControlValueAccessor_BaseFactory; + return function SelectMultipleControlValueAccessor_Factory(__ngFactoryType__) { + return (ɵSelectMultipleControlValueAccessor_BaseFactory || (ɵSelectMultipleControlValueAccessor_BaseFactory = ɵɵgetInheritedFactory(_SelectMultipleControlValueAccessor)))(__ngFactoryType__ || _SelectMultipleControlValueAccessor); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _SelectMultipleControlValueAccessor, + selectors: [["select", "multiple", "", "formControlName", ""], ["select", "multiple", "", "formControl", ""], ["select", "multiple", "", "ngModel", ""]], + hostBindings: function SelectMultipleControlValueAccessor_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("change", function SelectMultipleControlValueAccessor_change_HostBindingHandler($event) { + return ctx.onChange($event.target); + })("blur", function SelectMultipleControlValueAccessor_blur_HostBindingHandler() { + return ctx.onTouched(); + }); + } + }, + inputs: { + compareWith: "compareWith" + }, + standalone: false, + features: [ɵɵProvidersFeature([SELECT_MULTIPLE_VALUE_ACCESSOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(SelectMultipleControlValueAccessor, [{ + type: Directive, + args: [{ + selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", + host: { + "(change)": "onChange($event.target)", + "(blur)": "onTouched()" + }, + providers: [SELECT_MULTIPLE_VALUE_ACCESSOR], + standalone: false + }] + }], null, { + compareWith: [{ + type: Input + }] + }); +})(); +var ɵNgSelectMultipleOption = class _ɵNgSelectMultipleOption { + _element; + _renderer; + _select; + id; + /** @internal */ + _value; + constructor(_element, _renderer, _select) { + this._element = _element; + this._renderer = _renderer; + this._select = _select; + if (this._select) { + this.id = this._select._registerOption(this); + } + } + /** + * @description + * Tracks the value bound to the option element. Unlike the value binding, + * ngValue supports binding to objects. + */ + set ngValue(value) { + if (this._select == null) return; + this._value = value; + this._setElementValue(_buildValueString(this.id, value)); + this._select.writeValue(this._select.value); + } + /** + * @description + * Tracks simple string values bound to the option element. + * For objects, use the `ngValue` input binding. + */ + set value(value) { + if (this._select) { + this._value = value; + this._setElementValue(_buildValueString(this.id, value)); + this._select.writeValue(this._select.value); + } else { + this._setElementValue(value); + } + } + /** @internal */ + _setElementValue(value) { + this._renderer.setProperty(this._element.nativeElement, "value", value); + } + /** @internal */ + _setSelected(selected) { + this._renderer.setProperty(this._element.nativeElement, "selected", selected); + } + /** @docs-private */ + ngOnDestroy() { + if (this._select) { + this._select._optionMap.delete(this.id); + this._select.writeValue(this._select.value); + } + } + static ɵfac = function ɵNgSelectMultipleOption_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _ɵNgSelectMultipleOption)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(SelectMultipleControlValueAccessor, 9)); + }; + static ɵdir = ɵɵdefineDirective({ + type: _ɵNgSelectMultipleOption, + selectors: [["option"]], + inputs: { + ngValue: "ngValue", + value: "value" + }, + standalone: false + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ɵNgSelectMultipleOption, [{ + type: Directive, + args: [{ + selector: "option", + standalone: false + }] + }], () => [{ + type: ElementRef + }, { + type: Renderer2 + }, { + type: SelectMultipleControlValueAccessor, + decorators: [{ + type: Optional + }, { + type: Host + }] + }], { + ngValue: [{ + type: Input, + args: ["ngValue"] + }], + value: [{ + type: Input, + args: ["value"] + }] + }); +})(); +function toInteger(value) { + return typeof value === "number" ? value : parseInt(value, 10); +} +function toFloat(value) { + return typeof value === "number" ? value : parseFloat(value); +} +var AbstractValidatorDirective = class _AbstractValidatorDirective { + _validator = nullValidator; + _onChange; + /** + * A flag that tracks whether this validator is enabled. + * + * Marking it `internal` (vs `protected`), so that this flag can be used in host bindings of + * directive classes that extend this base class. + * @internal + */ + _enabled; + /** @docs-private */ + ngOnChanges(changes) { + if (this.inputName in changes) { + const input = this.normalizeInput(changes[this.inputName].currentValue); + this._enabled = this.enabled(input); + this._validator = this._enabled ? this.createValidator(input) : nullValidator; + if (this._onChange) { + this._onChange(); + } + } + } + /** @docs-private */ + validate(control) { + return this._validator(control); + } + /** @docs-private */ + registerOnValidatorChange(fn) { + this._onChange = fn; + } + /** + * @description + * Determines whether this validator should be active or not based on an input. + * Base class implementation checks whether an input is defined (if the value is different from + * `null` and `undefined`). Validator classes that extend this base class can override this + * function with the logic specific to a particular validator directive. + */ + enabled(input) { + return input != null; + } + static ɵfac = function AbstractValidatorDirective_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _AbstractValidatorDirective)(); + }; + static ɵdir = ɵɵdefineDirective({ + type: _AbstractValidatorDirective, + features: [ɵɵNgOnChangesFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(AbstractValidatorDirective, [{ + type: Directive + }], null, null); +})(); +var MAX_VALIDATOR = { + provide: NG_VALIDATORS, + useExisting: forwardRef(() => MaxValidator), + multi: true +}; +var MaxValidator = class _MaxValidator extends AbstractValidatorDirective { + /** + * @description + * Tracks changes to the max bound to this directive. + */ + max; + /** @internal */ + inputName = "max"; + /** @internal */ + normalizeInput = (input) => toFloat(input); + /** @internal */ + createValidator = (max) => maxValidator(max); + static ɵfac = /* @__PURE__ */ (() => { + let ɵMaxValidator_BaseFactory; + return function MaxValidator_Factory(__ngFactoryType__) { + return (ɵMaxValidator_BaseFactory || (ɵMaxValidator_BaseFactory = ɵɵgetInheritedFactory(_MaxValidator)))(__ngFactoryType__ || _MaxValidator); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _MaxValidator, + selectors: [["input", "type", "number", "max", "", "formControlName", ""], ["input", "type", "number", "max", "", "formControl", ""], ["input", "type", "number", "max", "", "ngModel", ""]], + hostVars: 1, + hostBindings: function MaxValidator_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵattribute("max", ctx._enabled ? ctx.max : null); + } + }, + inputs: { + max: "max" + }, + standalone: false, + features: [ɵɵProvidersFeature([MAX_VALIDATOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MaxValidator, [{ + type: Directive, + args: [{ + selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", + providers: [MAX_VALIDATOR], + host: { + "[attr.max]": "_enabled ? max : null" + }, + standalone: false + }] + }], null, { + max: [{ + type: Input + }] + }); +})(); +var MIN_VALIDATOR = { + provide: NG_VALIDATORS, + useExisting: forwardRef(() => MinValidator), + multi: true +}; +var MinValidator = class _MinValidator extends AbstractValidatorDirective { + /** + * @description + * Tracks changes to the min bound to this directive. + */ + min; + /** @internal */ + inputName = "min"; + /** @internal */ + normalizeInput = (input) => toFloat(input); + /** @internal */ + createValidator = (min) => minValidator(min); + static ɵfac = /* @__PURE__ */ (() => { + let ɵMinValidator_BaseFactory; + return function MinValidator_Factory(__ngFactoryType__) { + return (ɵMinValidator_BaseFactory || (ɵMinValidator_BaseFactory = ɵɵgetInheritedFactory(_MinValidator)))(__ngFactoryType__ || _MinValidator); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _MinValidator, + selectors: [["input", "type", "number", "min", "", "formControlName", ""], ["input", "type", "number", "min", "", "formControl", ""], ["input", "type", "number", "min", "", "ngModel", ""]], + hostVars: 1, + hostBindings: function MinValidator_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵattribute("min", ctx._enabled ? ctx.min : null); + } + }, + inputs: { + min: "min" + }, + standalone: false, + features: [ɵɵProvidersFeature([MIN_VALIDATOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MinValidator, [{ + type: Directive, + args: [{ + selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", + providers: [MIN_VALIDATOR], + host: { + "[attr.min]": "_enabled ? min : null" + }, + standalone: false + }] + }], null, { + min: [{ + type: Input + }] + }); +})(); +var REQUIRED_VALIDATOR = { + provide: NG_VALIDATORS, + useExisting: forwardRef(() => RequiredValidator), + multi: true +}; +var CHECKBOX_REQUIRED_VALIDATOR = { + provide: NG_VALIDATORS, + useExisting: forwardRef(() => CheckboxRequiredValidator), + multi: true +}; +var RequiredValidator = class _RequiredValidator extends AbstractValidatorDirective { + /** + * @description + * Tracks changes to the required attribute bound to this directive. + */ + required; + /** @internal */ + inputName = "required"; + /** @internal */ + normalizeInput = booleanAttribute; + /** @internal */ + createValidator = (input) => requiredValidator; + /** @docs-private */ + enabled(input) { + return input; + } + static ɵfac = /* @__PURE__ */ (() => { + let ɵRequiredValidator_BaseFactory; + return function RequiredValidator_Factory(__ngFactoryType__) { + return (ɵRequiredValidator_BaseFactory || (ɵRequiredValidator_BaseFactory = ɵɵgetInheritedFactory(_RequiredValidator)))(__ngFactoryType__ || _RequiredValidator); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _RequiredValidator, + selectors: [["", "required", "", "formControlName", "", 3, "type", "checkbox"], ["", "required", "", "formControl", "", 3, "type", "checkbox"], ["", "required", "", "ngModel", "", 3, "type", "checkbox"]], + hostVars: 1, + hostBindings: function RequiredValidator_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵattribute("required", ctx._enabled ? "" : null); + } + }, + inputs: { + required: "required" + }, + standalone: false, + features: [ɵɵProvidersFeature([REQUIRED_VALIDATOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RequiredValidator, [{ + type: Directive, + args: [{ + selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", + providers: [REQUIRED_VALIDATOR], + host: { + "[attr.required]": '_enabled ? "" : null' + }, + standalone: false + }] + }], null, { + required: [{ + type: Input + }] + }); +})(); +var CheckboxRequiredValidator = class _CheckboxRequiredValidator extends RequiredValidator { + /** @internal */ + createValidator = (input) => requiredTrueValidator; + static ɵfac = /* @__PURE__ */ (() => { + let ɵCheckboxRequiredValidator_BaseFactory; + return function CheckboxRequiredValidator_Factory(__ngFactoryType__) { + return (ɵCheckboxRequiredValidator_BaseFactory || (ɵCheckboxRequiredValidator_BaseFactory = ɵɵgetInheritedFactory(_CheckboxRequiredValidator)))(__ngFactoryType__ || _CheckboxRequiredValidator); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _CheckboxRequiredValidator, + selectors: [["input", "type", "checkbox", "required", "", "formControlName", ""], ["input", "type", "checkbox", "required", "", "formControl", ""], ["input", "type", "checkbox", "required", "", "ngModel", ""]], + hostVars: 1, + hostBindings: function CheckboxRequiredValidator_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵattribute("required", ctx._enabled ? "" : null); + } + }, + standalone: false, + features: [ɵɵProvidersFeature([CHECKBOX_REQUIRED_VALIDATOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CheckboxRequiredValidator, [{ + type: Directive, + args: [{ + selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]", + providers: [CHECKBOX_REQUIRED_VALIDATOR], + host: { + "[attr.required]": '_enabled ? "" : null' + }, + standalone: false + }] + }], null, null); +})(); +var EMAIL_VALIDATOR = { + provide: NG_VALIDATORS, + useExisting: forwardRef(() => EmailValidator), + multi: true +}; +var EmailValidator = class _EmailValidator extends AbstractValidatorDirective { + /** + * @description + * Tracks changes to the email attribute bound to this directive. + */ + email; + /** @internal */ + inputName = "email"; + /** @internal */ + normalizeInput = booleanAttribute; + /** @internal */ + createValidator = (input) => emailValidator; + /** @docs-private */ + enabled(input) { + return input; + } + static ɵfac = /* @__PURE__ */ (() => { + let ɵEmailValidator_BaseFactory; + return function EmailValidator_Factory(__ngFactoryType__) { + return (ɵEmailValidator_BaseFactory || (ɵEmailValidator_BaseFactory = ɵɵgetInheritedFactory(_EmailValidator)))(__ngFactoryType__ || _EmailValidator); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _EmailValidator, + selectors: [["", "email", "", "formControlName", ""], ["", "email", "", "formControl", ""], ["", "email", "", "ngModel", ""]], + inputs: { + email: "email" + }, + standalone: false, + features: [ɵɵProvidersFeature([EMAIL_VALIDATOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(EmailValidator, [{ + type: Directive, + args: [{ + selector: "[email][formControlName],[email][formControl],[email][ngModel]", + providers: [EMAIL_VALIDATOR], + standalone: false + }] + }], null, { + email: [{ + type: Input + }] + }); +})(); +var MIN_LENGTH_VALIDATOR = { + provide: NG_VALIDATORS, + useExisting: forwardRef(() => MinLengthValidator), + multi: true +}; +var MinLengthValidator = class _MinLengthValidator extends AbstractValidatorDirective { + /** + * @description + * Tracks changes to the minimum length bound to this directive. + */ + minlength; + /** @internal */ + inputName = "minlength"; + /** @internal */ + normalizeInput = (input) => toInteger(input); + /** @internal */ + createValidator = (minlength) => minLengthValidator(minlength); + static ɵfac = /* @__PURE__ */ (() => { + let ɵMinLengthValidator_BaseFactory; + return function MinLengthValidator_Factory(__ngFactoryType__) { + return (ɵMinLengthValidator_BaseFactory || (ɵMinLengthValidator_BaseFactory = ɵɵgetInheritedFactory(_MinLengthValidator)))(__ngFactoryType__ || _MinLengthValidator); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _MinLengthValidator, + selectors: [["", "minlength", "", "formControlName", ""], ["", "minlength", "", "formControl", ""], ["", "minlength", "", "ngModel", ""]], + hostVars: 1, + hostBindings: function MinLengthValidator_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵattribute("minlength", ctx._enabled ? ctx.minlength : null); + } + }, + inputs: { + minlength: "minlength" + }, + standalone: false, + features: [ɵɵProvidersFeature([MIN_LENGTH_VALIDATOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MinLengthValidator, [{ + type: Directive, + args: [{ + selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", + providers: [MIN_LENGTH_VALIDATOR], + host: { + "[attr.minlength]": "_enabled ? minlength : null" + }, + standalone: false + }] + }], null, { + minlength: [{ + type: Input + }] + }); +})(); +var MAX_LENGTH_VALIDATOR = { + provide: NG_VALIDATORS, + useExisting: forwardRef(() => MaxLengthValidator), + multi: true +}; +var MaxLengthValidator = class _MaxLengthValidator extends AbstractValidatorDirective { + /** + * @description + * Tracks changes to the maximum length bound to this directive. + */ + maxlength; + /** @internal */ + inputName = "maxlength"; + /** @internal */ + normalizeInput = (input) => toInteger(input); + /** @internal */ + createValidator = (maxlength) => maxLengthValidator(maxlength); + static ɵfac = /* @__PURE__ */ (() => { + let ɵMaxLengthValidator_BaseFactory; + return function MaxLengthValidator_Factory(__ngFactoryType__) { + return (ɵMaxLengthValidator_BaseFactory || (ɵMaxLengthValidator_BaseFactory = ɵɵgetInheritedFactory(_MaxLengthValidator)))(__ngFactoryType__ || _MaxLengthValidator); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _MaxLengthValidator, + selectors: [["", "maxlength", "", "formControlName", ""], ["", "maxlength", "", "formControl", ""], ["", "maxlength", "", "ngModel", ""]], + hostVars: 1, + hostBindings: function MaxLengthValidator_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵattribute("maxlength", ctx._enabled ? ctx.maxlength : null); + } + }, + inputs: { + maxlength: "maxlength" + }, + standalone: false, + features: [ɵɵProvidersFeature([MAX_LENGTH_VALIDATOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MaxLengthValidator, [{ + type: Directive, + args: [{ + selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", + providers: [MAX_LENGTH_VALIDATOR], + host: { + "[attr.maxlength]": "_enabled ? maxlength : null" + }, + standalone: false + }] + }], null, { + maxlength: [{ + type: Input + }] + }); +})(); +var PATTERN_VALIDATOR = { + provide: NG_VALIDATORS, + useExisting: forwardRef(() => PatternValidator), + multi: true +}; +var PatternValidator = class _PatternValidator extends AbstractValidatorDirective { + /** + * @description + * Tracks changes to the pattern bound to this directive. + */ + pattern; + // This input is always defined, since the name matches selector. + /** @internal */ + inputName = "pattern"; + /** @internal */ + normalizeInput = (input) => input; + /** @internal */ + createValidator = (input) => patternValidator(input); + static ɵfac = /* @__PURE__ */ (() => { + let ɵPatternValidator_BaseFactory; + return function PatternValidator_Factory(__ngFactoryType__) { + return (ɵPatternValidator_BaseFactory || (ɵPatternValidator_BaseFactory = ɵɵgetInheritedFactory(_PatternValidator)))(__ngFactoryType__ || _PatternValidator); + }; + })(); + static ɵdir = ɵɵdefineDirective({ + type: _PatternValidator, + selectors: [["", "pattern", "", "formControlName", ""], ["", "pattern", "", "formControl", ""], ["", "pattern", "", "ngModel", ""]], + hostVars: 1, + hostBindings: function PatternValidator_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵattribute("pattern", ctx._enabled ? ctx.pattern : null); + } + }, + inputs: { + pattern: "pattern" + }, + standalone: false, + features: [ɵɵProvidersFeature([PATTERN_VALIDATOR]), ɵɵInheritDefinitionFeature] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PatternValidator, [{ + type: Directive, + args: [{ + selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", + providers: [PATTERN_VALIDATOR], + host: { + "[attr.pattern]": "_enabled ? pattern : null" + }, + standalone: false + }] + }], null, { + pattern: [{ + type: Input + }] + }); +})(); +var SHARED_FORM_DIRECTIVES = [ɵNgNoValidate, NgSelectOption, ɵNgSelectMultipleOption, DefaultValueAccessor, NumberValueAccessor, RangeValueAccessor, CheckboxControlValueAccessor, SelectControlValueAccessor, SelectMultipleControlValueAccessor, RadioControlValueAccessor, NgControlStatus, NgControlStatusGroup, RequiredValidator, MinLengthValidator, MaxLengthValidator, PatternValidator, CheckboxRequiredValidator, EmailValidator, MinValidator, MaxValidator]; +var TEMPLATE_DRIVEN_DIRECTIVES = [NgModel, NgModelGroup, NgForm]; +var REACTIVE_DRIVEN_DIRECTIVES = [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName]; +var ɵInternalFormsSharedModule = class _ɵInternalFormsSharedModule { + static ɵfac = function ɵInternalFormsSharedModule_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _ɵInternalFormsSharedModule)(); + }; + static ɵmod = ɵɵdefineNgModule({ + type: _ɵInternalFormsSharedModule, + declarations: [ɵNgNoValidate, NgSelectOption, ɵNgSelectMultipleOption, DefaultValueAccessor, NumberValueAccessor, RangeValueAccessor, CheckboxControlValueAccessor, SelectControlValueAccessor, SelectMultipleControlValueAccessor, RadioControlValueAccessor, NgControlStatus, NgControlStatusGroup, RequiredValidator, MinLengthValidator, MaxLengthValidator, PatternValidator, CheckboxRequiredValidator, EmailValidator, MinValidator, MaxValidator], + exports: [ɵNgNoValidate, NgSelectOption, ɵNgSelectMultipleOption, DefaultValueAccessor, NumberValueAccessor, RangeValueAccessor, CheckboxControlValueAccessor, SelectControlValueAccessor, SelectMultipleControlValueAccessor, RadioControlValueAccessor, NgControlStatus, NgControlStatusGroup, RequiredValidator, MinLengthValidator, MaxLengthValidator, PatternValidator, CheckboxRequiredValidator, EmailValidator, MinValidator, MaxValidator] + }); + static ɵinj = ɵɵdefineInjector({}); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ɵInternalFormsSharedModule, [{ + type: NgModule, + args: [{ + declarations: SHARED_FORM_DIRECTIVES, + exports: SHARED_FORM_DIRECTIVES + }] + }], null, null); +})(); +var FormArray = class extends AbstractControl { + /** + * Creates a new `FormArray` instance. + * + * @param controls An array of child controls. Each child control is given an index + * where it is registered. + * + * @param validatorOrOpts A synchronous validator function, or an array of + * such functions, or an `AbstractControlOptions` object that contains validation functions + * and a validation trigger. + * + * @param asyncValidator A single async validator or array of async validator functions + * + */ + constructor(controls, validatorOrOpts, asyncValidator) { + super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts)); + this.controls = controls; + this._initObservables(); + this._setUpdateStrategy(validatorOrOpts); + this._setUpControls(); + this.updateValueAndValidity({ + onlySelf: true, + // If `asyncValidator` is present, it will trigger control status change from `PENDING` to + // `VALID` or `INVALID`. + // The status should be broadcasted via the `statusChanges` observable, so we set `emitEvent` + // to `true` to allow that during the control creation process. + emitEvent: !!this.asyncValidator + }); + } + controls; + /** + * Get the `AbstractControl` at the given `index` in the array. + * + * @param index Index in the array to retrieve the control. If `index` is negative, it will wrap + * around from the back, and if index is greatly negative (less than `-length`), the result is + * undefined. This behavior is the same as `Array.at(index)`. + */ + at(index) { + return this.controls[this._adjustIndex(index)]; + } + /** + * Insert a new `AbstractControl` at the end of the array. + * + * @param control Form control to be inserted + * @param options Specifies whether this FormArray instance should emit events after a new + * control is added. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` observables emit events with the latest status and value when the control is + * inserted. When false, no events are emitted. + */ + push(control, options = {}) { + if (Array.isArray(control)) { + control.forEach((ctrl) => { + this.controls.push(ctrl); + this._registerControl(ctrl); + }); + } else { + this.controls.push(control); + this._registerControl(control); + } + this.updateValueAndValidity({ + emitEvent: options.emitEvent + }); + this._onCollectionChange(); + } + /** + * Insert a new `AbstractControl` at the given `index` in the array. + * + * @param index Index in the array to insert the control. If `index` is negative, wraps around + * from the back. If `index` is greatly negative (less than `-length`), prepends to the array. + * This behavior is the same as `Array.splice(index, 0, control)`. + * @param control Form control to be inserted + * @param options Specifies whether this FormArray instance should emit events after a new + * control is inserted. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` observables emit events with the latest status and value when the control is + * inserted. When false, no events are emitted. + */ + insert(index, control, options = {}) { + this.controls.splice(index, 0, control); + this._registerControl(control); + this.updateValueAndValidity({ + emitEvent: options.emitEvent + }); + } + /** + * Remove the control at the given `index` in the array. + * + * @param index Index in the array to remove the control. If `index` is negative, wraps around + * from the back. If `index` is greatly negative (less than `-length`), removes the first + * element. This behavior is the same as `Array.splice(index, 1)`. + * @param options Specifies whether this FormArray instance should emit events after a + * control is removed. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` observables emit events with the latest status and value when the control is + * removed. When false, no events are emitted. + */ + removeAt(index, options = {}) { + let adjustedIndex = this._adjustIndex(index); + if (adjustedIndex < 0) adjustedIndex = 0; + if (this.controls[adjustedIndex]) this.controls[adjustedIndex]._registerOnCollectionChange(() => { + }); + this.controls.splice(adjustedIndex, 1); + this.updateValueAndValidity({ + emitEvent: options.emitEvent + }); + } + /** + * Replace an existing control. + * + * @param index Index in the array to replace the control. If `index` is negative, wraps around + * from the back. If `index` is greatly negative (less than `-length`), replaces the first + * element. This behavior is the same as `Array.splice(index, 1, control)`. + * @param control The `AbstractControl` control to replace the existing control + * @param options Specifies whether this FormArray instance should emit events after an + * existing control is replaced with a new one. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` observables emit events with the latest status and value when the control is + * replaced with a new one. When false, no events are emitted. + */ + setControl(index, control, options = {}) { + let adjustedIndex = this._adjustIndex(index); + if (adjustedIndex < 0) adjustedIndex = 0; + if (this.controls[adjustedIndex]) this.controls[adjustedIndex]._registerOnCollectionChange(() => { + }); + this.controls.splice(adjustedIndex, 1); + if (control) { + this.controls.splice(adjustedIndex, 0, control); + this._registerControl(control); + } + this.updateValueAndValidity({ + emitEvent: options.emitEvent + }); + this._onCollectionChange(); + } + /** + * Length of the control array. + */ + get length() { + return this.controls.length; + } + /** + * Sets the value of the `FormArray`. It accepts an array that matches + * the structure of the control. + * + * This method performs strict checks, and throws an error if you try + * to set the value of a control that doesn't exist or if you exclude the + * value of a control. + * + * @usageNotes + * ### Set the values for the controls in the form array + * + * ```ts + * const arr = new FormArray([ + * new FormControl(), + * new FormControl() + * ]); + * console.log(arr.value); // [null, null] + * + * arr.setValue(['Nancy', 'Drew']); + * console.log(arr.value); // ['Nancy', 'Drew'] + * ``` + * + * @param value Array of values for the controls + * @param options Configure options that determine how the control propagates changes and + * emits events after the value changes + * + * * `onlySelf`: When true, each change only affects this control, and not its parent. Default + * is false. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` + * observables emit events with the latest status and value when the control value is updated. + * When false, no events are emitted. + * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity + * updateValueAndValidity} method. + */ + setValue(value, options = {}) { + assertAllValuesPresent(this, false, value); + value.forEach((newValue, index) => { + assertControlPresent(this, false, index); + this.at(index).setValue(newValue, { + onlySelf: true, + emitEvent: options.emitEvent + }); + }); + this.updateValueAndValidity(options); + } + /** + * Patches the value of the `FormArray`. It accepts an array that matches the + * structure of the control, and does its best to match the values to the correct + * controls in the group. + * + * It accepts both super-sets and sub-sets of the array without throwing an error. + * + * @usageNotes + * ### Patch the values for controls in a form array + * + * ```ts + * const arr = new FormArray([ + * new FormControl(), + * new FormControl() + * ]); + * console.log(arr.value); // [null, null] + * + * arr.patchValue(['Nancy']); + * console.log(arr.value); // ['Nancy', null] + * ``` + * + * @param value Array of latest values for the controls + * @param options Configure options that determine how the control propagates changes and + * emits events after the value changes + * + * * `onlySelf`: When true, each change only affects this control, and not its parent. Default + * is false. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` observables emit events with the latest status and value when the control + * value is updated. When false, no events are emitted. The configuration options are passed to + * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method. + */ + patchValue(value, options = {}) { + if (value == null) return; + value.forEach((newValue, index) => { + if (this.at(index)) { + this.at(index).patchValue(newValue, { + onlySelf: true, + emitEvent: options.emitEvent + }); + } + }); + this.updateValueAndValidity(options); + } + /** + * Resets the `FormArray` and all descendants are marked `pristine` and `untouched`, and the + * value of all descendants to null or null maps. + * + * You reset to a specific form state by passing in an array of states + * that matches the structure of the control. The state is a standalone value + * or a form state object with both a value and a disabled status. + * + * @usageNotes + * ### Reset the values in a form array + * + * ```ts + * const arr = new FormArray([ + * new FormControl(), + * new FormControl() + * ]); + * arr.reset(['name', 'last name']); + * + * console.log(arr.value); // ['name', 'last name'] + * ``` + * + * ### Reset the values in a form array and the disabled status for the first control + * + * ```ts + * arr.reset([ + * {value: 'name', disabled: true}, + * 'last' + * ]); + * + * console.log(arr.value); // ['last'] + * console.log(arr.at(0).status); // 'DISABLED' + * ``` + * + * @param value Array of values for the controls + * @param options Configure options that determine how the control propagates changes and + * emits events after the value changes + * + * * `onlySelf`: When true, each change only affects this control, and not its parent. Default + * is false. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` + * observables emit events with the latest status and value when the control is reset. + * When false, no events are emitted. + * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity + * updateValueAndValidity} method. + */ + reset(value = [], options = {}) { + this._forEachChild((control, index) => { + control.reset(value[index], { + onlySelf: true, + emitEvent: options.emitEvent + }); + }); + this._updatePristine(options, this); + this._updateTouched(options, this); + this.updateValueAndValidity(options); + } + /** + * The aggregate value of the array, including any disabled controls. + * + * Reports all values regardless of disabled status. + */ + getRawValue() { + return this.controls.map((control) => control.getRawValue()); + } + /** + * Remove all controls in the `FormArray`. + * + * @param options Specifies whether this FormArray instance should emit events after all + * controls are removed. + * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and + * `valueChanges` observables emit events with the latest status and value when all controls + * in this FormArray instance are removed. When false, no events are emitted. + * + * @usageNotes + * ### Remove all elements from a FormArray + * + * ```ts + * const arr = new FormArray([ + * new FormControl(), + * new FormControl() + * ]); + * console.log(arr.length); // 2 + * + * arr.clear(); + * console.log(arr.length); // 0 + * ``` + * + * It's a simpler and more efficient alternative to removing all elements one by one: + * + * ```ts + * const arr = new FormArray([ + * new FormControl(), + * new FormControl() + * ]); + * + * while (arr.length) { + * arr.removeAt(0); + * } + * ``` + */ + clear(options = {}) { + if (this.controls.length < 1) return; + this._forEachChild((control) => control._registerOnCollectionChange(() => { + })); + this.controls.splice(0); + this.updateValueAndValidity({ + emitEvent: options.emitEvent + }); + } + /** + * Adjusts a negative index by summing it with the length of the array. For very negative + * indices, the result may remain negative. + * @internal + */ + _adjustIndex(index) { + return index < 0 ? index + this.length : index; + } + /** @internal */ + _syncPendingControls() { + let subtreeUpdated = this.controls.reduce((updated, child) => { + return child._syncPendingControls() ? true : updated; + }, false); + if (subtreeUpdated) this.updateValueAndValidity({ + onlySelf: true + }); + return subtreeUpdated; + } + /** @internal */ + _forEachChild(cb) { + this.controls.forEach((control, index) => { + cb(control, index); + }); + } + /** @internal */ + _updateValue() { + this.value = this.controls.filter((control) => control.enabled || this.disabled).map((control) => control.value); + } + /** @internal */ + _anyControls(condition) { + return this.controls.some((control) => control.enabled && condition(control)); + } + /** @internal */ + _setUpControls() { + this._forEachChild((control) => this._registerControl(control)); + } + /** @internal */ + _allControlsDisabled() { + for (const control of this.controls) { + if (control.enabled) return false; + } + return this.controls.length > 0 || this.disabled; + } + _registerControl(control) { + control.setParent(this); + control._registerOnCollectionChange(this._onCollectionChange); + } + /** @internal */ + _find(name) { + return this.at(name) ?? null; + } +}; +var UntypedFormArray = FormArray; +var isFormArray = (control) => control instanceof FormArray; +function isAbstractControlOptions(options) { + return !!options && (options.asyncValidators !== void 0 || options.validators !== void 0 || options.updateOn !== void 0); +} +var FormBuilder = class _FormBuilder { + useNonNullable = false; + /** + * @description + * Returns a FormBuilder in which automatically constructed `FormControl` elements + * have `{nonNullable: true}` and are non-nullable. + * + * **Constructing non-nullable controls** + * + * When constructing a control, it will be non-nullable, and will reset to its initial value. + * + * ```ts + * let nnfb = new FormBuilder().nonNullable; + * let name = nnfb.control('Alex'); // FormControl + * name.reset(); + * console.log(name); // 'Alex' + * ``` + * + * **Constructing non-nullable groups or arrays** + * + * When constructing a group or array, all automatically created inner controls will be + * non-nullable, and will reset to their initial values. + * + * ```ts + * let nnfb = new FormBuilder().nonNullable; + * let name = nnfb.group({who: 'Alex'}); // FormGroup<{who: FormControl}> + * name.reset(); + * console.log(name); // {who: 'Alex'} + * ``` + * **Constructing *nullable* fields on groups or arrays** + * + * It is still possible to have a nullable field. In particular, any `FormControl` which is + * *already* constructed will not be altered. For example: + * + * ```ts + * let nnfb = new FormBuilder().nonNullable; + * // FormGroup<{who: FormControl}> + * let name = nnfb.group({who: new FormControl('Alex')}); + * name.reset(); console.log(name); // {who: null} + * ``` + * + * Because the inner control is constructed explicitly by the caller, the builder has + * no control over how it is created, and cannot exclude the `null`. + */ + get nonNullable() { + const nnfb = new _FormBuilder(); + nnfb.useNonNullable = true; + return nnfb; + } + group(controls, options = null) { + const reducedControls = this._reduceControls(controls); + let newOptions = {}; + if (isAbstractControlOptions(options)) { + newOptions = options; + } else if (options !== null) { + newOptions.validators = options.validator; + newOptions.asyncValidators = options.asyncValidator; + } + return new FormGroup(reducedControls, newOptions); + } + /** + * @description + * Constructs a new `FormRecord` instance. Accepts a single generic argument, which is an object + * containing all the keys and corresponding inner control types. + * + * @param controls A collection of child controls. The key for each child is the name + * under which it is registered. + * + * @param options Configuration options object for the `FormRecord`. The object should have the + * `AbstractControlOptions` type and might contain the following fields: + * * `validators`: A synchronous validator function, or an array of validator functions. + * * `asyncValidators`: A single async validator or array of async validator functions. + * * `updateOn`: The event upon which the control should be updated (options: 'change' | 'blur' + * | submit'). + */ + record(controls, options = null) { + const reducedControls = this._reduceControls(controls); + return new FormRecord(reducedControls, options); + } + /** + * @description + * Constructs a new `FormControl` with the given state, validators and options. Sets + * `{nonNullable: true}` in the options to get a non-nullable control. Otherwise, the + * control will be nullable. Accepts a single generic argument, which is the type of the + * control's value. + * + * @param formState Initializes the control with an initial state value, or + * with an object that contains both a value and a disabled status. + * + * @param validatorOrOpts A synchronous validator function, or an array of + * such functions, or a `FormControlOptions` object that contains + * validation functions and a validation trigger. + * + * @param asyncValidator A single async validator or array of async validator + * functions. + * + * @usageNotes + * + * ### Initialize a control as disabled + * + * The following example returns a control with an initial value in a disabled state. + * + * {@example forms/ts/formBuilder/form_builder_example.ts region='disabled-control'} + */ + control(formState, validatorOrOpts, asyncValidator) { + let newOptions = {}; + if (!this.useNonNullable) { + return new FormControl(formState, validatorOrOpts, asyncValidator); + } + if (isAbstractControlOptions(validatorOrOpts)) { + newOptions = validatorOrOpts; + } else { + newOptions.validators = validatorOrOpts; + newOptions.asyncValidators = asyncValidator; + } + return new FormControl(formState, __spreadProps(__spreadValues({}, newOptions), { + nonNullable: true + })); + } + /** + * Constructs a new `FormArray` from the given array of configurations, + * validators and options. Accepts a single generic argument, which is the type of each control + * inside the array. + * + * @param controls An array of child controls or control configs. Each child control is given an + * index when it is registered. + * + * @param validatorOrOpts A synchronous validator function, or an array of such functions, or an + * `AbstractControlOptions` object that contains + * validation functions and a validation trigger. + * + * @param asyncValidator A single async validator or array of async validator functions. + */ + array(controls, validatorOrOpts, asyncValidator) { + const createdControls = controls.map((c) => this._createControl(c)); + return new FormArray(createdControls, validatorOrOpts, asyncValidator); + } + /** @internal */ + _reduceControls(controls) { + const createdControls = {}; + Object.keys(controls).forEach((controlName) => { + createdControls[controlName] = this._createControl(controls[controlName]); + }); + return createdControls; + } + /** @internal */ + _createControl(controls) { + if (controls instanceof FormControl) { + return controls; + } else if (controls instanceof AbstractControl) { + return controls; + } else if (Array.isArray(controls)) { + const value = controls[0]; + const validator = controls.length > 1 ? controls[1] : null; + const asyncValidator = controls.length > 2 ? controls[2] : null; + return this.control(value, validator, asyncValidator); + } else { + return this.control(controls); + } + } + static ɵfac = function FormBuilder_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _FormBuilder)(); + }; + static ɵprov = ɵɵdefineInjectable({ + token: _FormBuilder, + factory: _FormBuilder.ɵfac, + providedIn: "root" + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(FormBuilder, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], null, null); +})(); +var NonNullableFormBuilder = class _NonNullableFormBuilder { + static ɵfac = function NonNullableFormBuilder_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _NonNullableFormBuilder)(); + }; + static ɵprov = ɵɵdefineInjectable({ + token: _NonNullableFormBuilder, + factory: () => (() => inject(FormBuilder).nonNullable)(), + providedIn: "root" + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NonNullableFormBuilder, [{ + type: Injectable, + args: [{ + providedIn: "root", + useFactory: () => inject(FormBuilder).nonNullable + }] + }], null, null); +})(); +var UntypedFormBuilder = class _UntypedFormBuilder extends FormBuilder { + group(controlsConfig, options = null) { + return super.group(controlsConfig, options); + } + /** + * Like `FormBuilder#control`, except the resulting control is untyped. + */ + control(formState, validatorOrOpts, asyncValidator) { + return super.control(formState, validatorOrOpts, asyncValidator); + } + /** + * Like `FormBuilder#array`, except the resulting array is untyped. + */ + array(controlsConfig, validatorOrOpts, asyncValidator) { + return super.array(controlsConfig, validatorOrOpts, asyncValidator); + } + static ɵfac = /* @__PURE__ */ (() => { + let ɵUntypedFormBuilder_BaseFactory; + return function UntypedFormBuilder_Factory(__ngFactoryType__) { + return (ɵUntypedFormBuilder_BaseFactory || (ɵUntypedFormBuilder_BaseFactory = ɵɵgetInheritedFactory(_UntypedFormBuilder)))(__ngFactoryType__ || _UntypedFormBuilder); + }; + })(); + static ɵprov = ɵɵdefineInjectable({ + token: _UntypedFormBuilder, + factory: _UntypedFormBuilder.ɵfac, + providedIn: "root" + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(UntypedFormBuilder, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], null, null); +})(); +var VERSION = new Version("20.3.1"); +var FormsModule = class _FormsModule { + /** + * @description + * Provides options for configuring the forms module. + * + * @param opts An object of configuration options + * * `callSetDisabledState` Configures whether to `always` call `setDisabledState`, which is more + * correct, or to only call it `whenDisabled`, which is the legacy behavior. + */ + static withConfig(opts) { + return { + ngModule: _FormsModule, + providers: [{ + provide: CALL_SET_DISABLED_STATE, + useValue: opts.callSetDisabledState ?? setDisabledStateDefault + }] + }; + } + static ɵfac = function FormsModule_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _FormsModule)(); + }; + static ɵmod = ɵɵdefineNgModule({ + type: _FormsModule, + declarations: [NgModel, NgModelGroup, NgForm], + exports: [ɵInternalFormsSharedModule, NgModel, NgModelGroup, NgForm] + }); + static ɵinj = ɵɵdefineInjector({ + imports: [ɵInternalFormsSharedModule] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(FormsModule, [{ + type: NgModule, + args: [{ + declarations: TEMPLATE_DRIVEN_DIRECTIVES, + exports: [ɵInternalFormsSharedModule, TEMPLATE_DRIVEN_DIRECTIVES] + }] + }], null, null); +})(); +var ReactiveFormsModule = class _ReactiveFormsModule { + /** + * @description + * Provides options for configuring the reactive forms module. + * + * @param opts An object of configuration options + * * `warnOnNgModelWithFormControl` Configures when to emit a warning when an `ngModel` + * binding is used with reactive form directives. + * * `callSetDisabledState` Configures whether to `always` call `setDisabledState`, which is more + * correct, or to only call it `whenDisabled`, which is the legacy behavior. + */ + static withConfig(opts) { + return { + ngModule: _ReactiveFormsModule, + providers: [{ + provide: NG_MODEL_WITH_FORM_CONTROL_WARNING, + useValue: opts.warnOnNgModelWithFormControl ?? "always" + }, { + provide: CALL_SET_DISABLED_STATE, + useValue: opts.callSetDisabledState ?? setDisabledStateDefault + }] + }; + } + static ɵfac = function ReactiveFormsModule_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || _ReactiveFormsModule)(); + }; + static ɵmod = ɵɵdefineNgModule({ + type: _ReactiveFormsModule, + declarations: [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName], + exports: [ɵInternalFormsSharedModule, FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName] + }); + static ɵinj = ɵɵdefineInjector({ + imports: [ɵInternalFormsSharedModule] + }); +}; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ReactiveFormsModule, [{ + type: NgModule, + args: [{ + declarations: [REACTIVE_DRIVEN_DIRECTIVES], + exports: [ɵInternalFormsSharedModule, REACTIVE_DRIVEN_DIRECTIVES] + }] + }], null, null); +})(); +export { + AbstractControl, + AbstractControlDirective, + AbstractFormGroupDirective, + COMPOSITION_BUFFER_MODE, + CheckboxControlValueAccessor, + CheckboxRequiredValidator, + ControlContainer, + ControlEvent, + DefaultValueAccessor, + EmailValidator, + FormArray, + FormArrayName, + FormBuilder, + FormControl, + FormControlDirective, + FormControlName, + FormGroup, + FormGroupDirective, + FormGroupName, + FormRecord, + FormResetEvent, + FormSubmittedEvent, + FormsModule, + MaxLengthValidator, + MaxValidator, + MinLengthValidator, + MinValidator, + NG_ASYNC_VALIDATORS, + NG_VALIDATORS, + NG_VALUE_ACCESSOR, + NgControl, + NgControlStatus, + NgControlStatusGroup, + NgForm, + NgModel, + NgModelGroup, + NgSelectOption, + NonNullableFormBuilder, + NumberValueAccessor, + PatternValidator, + PristineChangeEvent, + RadioControlValueAccessor, + RangeValueAccessor, + ReactiveFormsModule, + RequiredValidator, + SelectControlValueAccessor, + SelectMultipleControlValueAccessor, + StatusChangeEvent, + TouchedChangeEvent, + UntypedFormArray, + UntypedFormBuilder, + UntypedFormControl, + UntypedFormGroup, + VERSION, + Validators, + ValueChangeEvent, + isFormArray, + isFormControl, + isFormGroup, + isFormRecord, + ɵInternalFormsSharedModule, + ɵNgNoValidate, + ɵNgSelectMultipleOption +}; +/*! Bundled license information: + +@angular/forms/fesm2022/forms.mjs: + (** + * @license Angular v20.3.1 + * (c) 2010-2025 Google LLC. https://angular.io/ + * License: MIT + *) +*/ +//# sourceMappingURL=@angular_forms.js.map diff --git a/.angular/cache/20.3.2/app/vite/deps/@angular_forms.js.map b/.angular/cache/20.3.2/app/vite/deps/@angular_forms.js.map new file mode 100644 index 0000000..846058f --- /dev/null +++ b/.angular/cache/20.3.2/app/vite/deps/@angular_forms.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../../node_modules/@angular/forms/fesm2022/forms.mjs"], + "sourcesContent": ["/**\n * @license Angular v20.3.1\n * (c) 2010-2025 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Directive, InjectionToken, forwardRef, Optional, Inject, ɵisPromise as _isPromise, ɵisSubscribable as _isSubscribable, ɵRuntimeError as _RuntimeError, Self, untracked, computed, signal, EventEmitter, Input, Host, SkipSelf, booleanAttribute, ChangeDetectorRef, Output, Injectable, inject, ApplicationRef, DestroyRef, afterNextRender, NgModule, Version } from '@angular/core';\nimport { ɵgetDOM as _getDOM } from '@angular/common';\nimport { forkJoin, from, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * Base class for all ControlValueAccessor classes defined in Forms package.\n * Contains common logic and utility functions.\n *\n * Note: this is an *internal-only* class and should not be extended or used directly in\n * applications code.\n */\nclass BaseControlValueAccessor {\n _renderer;\n _elementRef;\n /**\n * The registered callback function called when a change or input event occurs on the input\n * element.\n * @docs-private\n */\n onChange = _ => {};\n /**\n * The registered callback function called when a blur event occurs on the input element.\n * @docs-private\n */\n onTouched = () => {};\n constructor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n /**\n * Helper method that sets a property on a target element using the current Renderer\n * implementation.\n * @docs-private\n */\n setProperty(key, value) {\n this._renderer.setProperty(this._elementRef.nativeElement, key, value);\n }\n /**\n * Registers a function called when the control is touched.\n * @docs-private\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Registers a function called when the control value changes.\n * @docs-private\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * Sets the \"disabled\" property on the range input element.\n * @docs-private\n */\n setDisabledState(isDisabled) {\n this.setProperty('disabled', isDisabled);\n }\n static ɵfac = function BaseControlValueAccessor_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BaseControlValueAccessor)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: BaseControlValueAccessor\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BaseControlValueAccessor, [{\n type: Directive\n }], () => [{\n type: i0.Renderer2\n }, {\n type: i0.ElementRef\n }], null);\n})();\n/**\n * Base class for all built-in ControlValueAccessor classes (except DefaultValueAccessor, which is\n * used in case no other CVAs can be found). We use this class to distinguish between default CVA,\n * built-in CVAs and custom CVAs, so that Forms logic can recognize built-in CVAs and treat custom\n * ones with higher priority (when both built-in and custom CVAs are present).\n *\n * Note: this is an *internal-only* class and should not be extended or used directly in\n * applications code.\n */\nclass BuiltInControlValueAccessor extends BaseControlValueAccessor {\n static ɵfac = /* @__PURE__ */(() => {\n let ɵBuiltInControlValueAccessor_BaseFactory;\n return function BuiltInControlValueAccessor_Factory(__ngFactoryType__) {\n return (ɵBuiltInControlValueAccessor_BaseFactory || (ɵBuiltInControlValueAccessor_BaseFactory = i0.ɵɵgetInheritedFactory(BuiltInControlValueAccessor)))(__ngFactoryType__ || BuiltInControlValueAccessor);\n };\n })();\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: BuiltInControlValueAccessor,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BuiltInControlValueAccessor, [{\n type: Directive\n }], null, null);\n})();\n/**\n * Used to provide a `ControlValueAccessor` for form controls.\n *\n * See `DefaultValueAccessor` for how to implement one.\n *\n * @publicApi\n */\nconst NG_VALUE_ACCESSOR = new InjectionToken(ngDevMode ? 'NgValueAccessor' : '');\nconst CHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxControlValueAccessor),\n multi: true\n};\n/**\n * @description\n * A `ControlValueAccessor` for writing a value and listening to changes on a checkbox input\n * element.\n *\n * @usageNotes\n *\n * ### Using a checkbox with a reactive form.\n *\n * The following example shows how to use a checkbox with a reactive form.\n *\n * ```ts\n * const rememberLoginControl = new FormControl();\n * ```\n *\n * ```html\n * \n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass CheckboxControlValueAccessor extends BuiltInControlValueAccessor {\n /**\n * Sets the \"checked\" property on the input element.\n * @docs-private\n */\n writeValue(value) {\n this.setProperty('checked', value);\n }\n static ɵfac = /* @__PURE__ */(() => {\n let ɵCheckboxControlValueAccessor_BaseFactory;\n return function CheckboxControlValueAccessor_Factory(__ngFactoryType__) {\n return (ɵCheckboxControlValueAccessor_BaseFactory || (ɵCheckboxControlValueAccessor_BaseFactory = i0.ɵɵgetInheritedFactory(CheckboxControlValueAccessor)))(__ngFactoryType__ || CheckboxControlValueAccessor);\n };\n })();\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CheckboxControlValueAccessor,\n selectors: [[\"input\", \"type\", \"checkbox\", \"formControlName\", \"\"], [\"input\", \"type\", \"checkbox\", \"formControl\", \"\"], [\"input\", \"type\", \"checkbox\", \"ngModel\", \"\"]],\n hostBindings: function CheckboxControlValueAccessor_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"change\", function CheckboxControlValueAccessor_change_HostBindingHandler($event) {\n return ctx.onChange($event.target.checked);\n })(\"blur\", function CheckboxControlValueAccessor_blur_HostBindingHandler() {\n return ctx.onTouched();\n });\n }\n },\n standalone: false,\n features: [i0.ɵɵProvidersFeature([CHECKBOX_VALUE_ACCESSOR]), i0.ɵɵInheritDefinitionFeature]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CheckboxControlValueAccessor, [{\n type: Directive,\n args: [{\n selector: 'input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]',\n host: {\n '(change)': 'onChange($any($event.target).checked)',\n '(blur)': 'onTouched()'\n },\n providers: [CHECKBOX_VALUE_ACCESSOR],\n standalone: false\n }]\n }], null, null);\n})();\nconst DEFAULT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DefaultValueAccessor),\n multi: true\n};\n/**\n * We must check whether the agent is Android because composition events\n * behave differently between iOS and Android.\n */\nfunction _isAndroid() {\n const userAgent = _getDOM() ? _getDOM().getUserAgent() : '';\n return /android (\\d+)/.test(userAgent.toLowerCase());\n}\n/**\n * @description\n * Provide this token to control if form directives buffer IME input until\n * the \"compositionend\" event occurs.\n * @publicApi\n */\nconst COMPOSITION_BUFFER_MODE = new InjectionToken(ngDevMode ? 'CompositionEventMode' : '');\n/**\n * The default `ControlValueAccessor` for writing a value and listening to changes on input\n * elements. The accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n *\n * @usageNotes\n *\n * ### Using the default value accessor\n *\n * The following example shows how to use an input element that activates the default value accessor\n * (in this case, a text field).\n *\n * ```ts\n * const firstNameControl = new FormControl();\n * ```\n *\n * ```html\n * \n * ```\n *\n * This value accessor is used by default for `` and `